sketchucation logo sketchucation
    • 登入
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🔌 Smart Spline | Fluid way to handle splines for furniture design and complex structures. Download

    Create file with accent in the path

    已排程 已置頂 已鎖定 已移動 Developers' Forum
    23 貼文 3 Posters 1.3k 瀏覽 3 Watching
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • tt_suT 離線
      tt_su
      最後由 編輯

      @iltis said:

      The "è" looks "è" in the messagebox, but the user know how to fix the problem.

      That's odd - if the string is UTF-8 encoded then it should look fine in SketchUp regardless.
      Have you saved your RB files as UTF-8 without BOM?

      @iltis said:

      I try to use it in SketchUp 2014, but I've got an error 😞

      I'm not sure, but I think it could be that space you have between the method name and the parentheses: filepath = UI.savepanel ("Export selected faces",nil,"*.f2xy")

      But the error could be cascading some elsewhere... hard to tell without knowing the source code.

      Btw, it's recommended not to catch all exceptions, but only the ones you expect.
      http://www.skorks.com/2009/09/ruby-exceptions-and-exception-handling/

      1 條回覆 最後回覆 回覆 引用 0
      • IltisI 離線
        Iltis
        最後由 編輯

        Bingo! 2/2. It works fine now. Is "UTF-8 without BOM" the best to use? (Default value?)
        Thank you for the quick answer!
        I will see how to catch only the file exception.

        1 條回覆 最後回覆 回覆 引用 0
        • IltisI 離線
          Iltis
          最後由 編輯

          Mhh, the error is

          Error; #<Errno;;ENOENT; No such file or directory - C;/Users/Tarzan/Documents/aiR-C2/MiniCut2d/Bibliothèque/test.f2xy>
          

          I don't understand how to only catch this type of exception... (not in the "Ruby Exception Hierarchy"). I'll see this later.

          1 條回覆 最後回覆 回覆 引用 0
          • tt_suT 離線
            tt_su
            最後由 編輯

            @iltis said:

            Bingo! 2/2. It works fine now. Is "UTF-8 without BOM" the best to use?

            I recommend that because without the BOM you can load the file in Ruby 1.8. With the BOM Ruby 1.8 will not load it.

            1 條回覆 最後回覆 回覆 引用 0
            • tt_suT 離線
              tt_su
              最後由 編輯

              @iltis said:

              Mhh, the error is

              Error; #<Errno;;ENOENT; No such file or directory - C;/Users/Tarzan/Documents/aiR-C2/MiniCut2d/Bibliothèque/test.f2xy>
              

              I don't understand how to only catch this type of exception... (not in the "Ruby Exception Hierarchy"). I'll see this later.

              You should be able to catch Errno::ENOENT - it's a class inherited form StandardError.

              Errno::ENOENT.ancestors [Errno::ENOENT, SystemCallError, StandardError, Exception, Object, PP::ObjectMixin, JSON::Ext::Generator::GeneratorMethods::Object, Kernel, BasicObject]

              Though, it might be system dependant... Maybe catching SystemCallError is a good one to catch for these types of errors.

              1 條回覆 最後回覆 回覆 引用 0
              • IltisI 離線
                Iltis
                最後由 編輯

                OK, thank you.

                1 條回覆 最後回覆 回覆 引用 0
                • Dan RathbunD 離線
                  Dan Rathbun
                  最後由 編輯

                  Like this:

                    begin
                      File.open(filepath, "w"){ |file|
                        #...
                      }
                      UI.messagebox("The file is here ;" + filepath)
                    rescue SystemCallError => e
                      if e.message =~ /(No such file or directory)/
                        UI.messagebox("Error, the file was not created. Be careful if you are using an older version of SketchUp, the full file path must not contain special or accented characters. The full file path you requested is " + filepath)
                      else
                        fail() #re-raise the last exception
                      end
                    end
                  

                  I'm not here much anymore.

                  1 條回覆 最後回覆 回覆 引用 0
                  • IltisI 離線
                    Iltis
                    最後由 編輯

                    Nice, thank you Dan!

                    1 條回覆 最後回覆 回覆 引用 0
                    • tt_suT 離線
                      tt_su
                      最後由 編輯

                      @dan rathbun said:

                      fail() #re-raise the last exception

                      Never seen that method used before. Is that different from just calling raise?

                      1 條回覆 最後回覆 回覆 引用 0
                      • Dan RathbunD 離線
                        Dan Rathbun
                        最後由 編輯

                        @tt_su said:

                        @dan rathbun said:

                        fail() #re-raise the last exception

                        Never seen that method used before. Is that different from just calling raise?

                        raise() is an alias for fail()
                        See the doc on the Kernel module:
                        http://www.ruby-doc.org/core-1.8.6/Kernel.html#method-i-fail

                        The best practices guides I have read, suggest that fail be used instead of raise, for readability, I suppose. But I really did not understand the logic in the guide. (I think it was something like "raise" has more meanings as a verb than "fail" ?)

                        I'm not here much anymore.

                        1 條回覆 最後回覆 回覆 引用 0
                        • 1
                        • 2
                        • 1 / 2
                        • 第一個貼文
                          最後的貼文
                        Buy SketchPlus
                        Buy SUbD
                        Buy WrapR
                        Buy eBook
                        Buy Modelur
                        Buy Vertex Tools
                        Buy SketchCuisine
                        Buy FormFonts

                        Advertisement