• Login
sketchucation logo sketchucation
  • Login
πŸ€‘ SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Instructor content

Scheduled Pinned Locked Moved Developers' Forum
84 Posts 8 Posters 7.9k Views 8 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    thomthom
    last edited by 7 Mar 2011, 01:15

    This'll be useful for Bezier Surface. πŸ˜„

    Thomas Thomassen β€” SketchUp Monkey & Coding addict
    List of my plugins and link to the CookieWare fund

    1 Reply Last reply Reply Quote 0
    • D Offline
      Dan Rathbun
      last edited by 7 Mar 2011, 02:42

      Another example of how the API docs (and a poorly written example,) have thrown us all off course for months!

      I'm not here much anymore.

      1 Reply Last reply Reply Quote 0
      • T Offline
        thomthom
        last edited by 7 Mar 2011, 08:29

        @dan rathbun said:

        Another example of how the API docs (and a poorly written example,) have thrown us all off course for months!

        It does smell like a bug though. It doesn't sound right that they intended people to add custom Instructor content to the SU Instructor content folder.

        Thomas Thomassen β€” SketchUp Monkey & Coding addict
        List of my plugins and link to the CookieWare fund

        1 Reply Last reply Reply Quote 0
        • B Offline
          bentleykfrog
          last edited by 7 Mar 2011, 11:03

          @thomthom said:

          @dan rathbun said:

          Another example of how the API docs (and a poorly written example,) have thrown us all off course for months!

          It does smell like a bug though. It doesn't sound right that they intended people to add custom Instructor content to the SU Instructor content folder.

          Its unusual that they document absolute paths but only go with relative paths, not that relative paths are bad by any means.

          1 Reply Last reply Reply Quote 0
          • T Offline
            thomthom
            last edited by 7 Mar 2011, 11:08

            @bentleykfrog said:

            @thomthom said:

            @dan rathbun said:

            Another example of how the API docs (and a poorly written example,) have thrown us all off course for months!

            It does smell like a bug though. It doesn't sound right that they intended people to add custom Instructor content to the SU Instructor content folder.

            Its unusual that they document absolute paths but only go with relative paths, not that relative paths are bad by any means.

            It's awkward though. I run my plugins I develop from custom locations because I use Mercurial for revision control. So providing a path to a custom location from the hard coded instructor folder isn't ideal. (does it even work across drive letters?)
            And because some OSX users put their plugins in the user folder instead of the default, one can never rely to plugins to be at a fixed relative path.

            Thomas Thomassen β€” SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • K Offline
              kirill2008
              last edited by 7 Mar 2011, 11:12

              Does anyone know how to find out how many slashes and dots are needed at certain end user comp ("..\..\..\..\"). I mean if someone has installed sketchup in a custom subdirectory it is necessary to add/remove one of "..\" I guess.

              1 Reply Last reply Reply Quote 0
              • T Offline
                TIG Moderator
                last edited by 7 Mar 2011, 15:05

                I have use this successfully to get my FreeRotate Instructor to work

                <span class="syntaxdefault">def&nbsp;getInstructorContentDirectory</span><span class="syntaxkeyword">()<br />&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">expand_path</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">dirname</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">__FILE__</span><span class="syntaxkeyword">),</span><span class="syntaxstring">"FreeRotate"</span><span class="syntaxkeyword">)).</span><span class="syntaxdefault">split</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">0.upto</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length</span><span class="syntaxkeyword">-</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">){|</span><span class="syntaxdefault">i</span><span class="syntaxkeyword">|&nbsp;</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">i</span><span class="syntaxkeyword">]=</span><span class="syntaxstring">'..'&nbsp;</span><span class="syntaxkeyword">}<br />&nbsp;&nbsp;&nbsp;if&nbsp;[</span><span class="syntaxdefault">PLATFORM</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">grep</span><span class="syntaxkeyword">(/</span><span class="syntaxdefault">mswin</span><span class="syntaxkeyword">/)==[</span><span class="syntaxdefault">PLATFORM</span><span class="syntaxkeyword">]&nbsp;</span><span class="syntaxcomment">###&nbsp;PC<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">)+</span><span class="syntaxstring">'/'<br />&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">+</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">)+</span><span class="syntaxstring">'/'<br />&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end</span><span class="syntaxcomment">#if<br /></span><span class="syntaxdefault">end</span>
                

                It should work cross platform?

                TIG

                1 Reply Last reply Reply Quote 0
                • T Offline
                  TIG Moderator
                  last edited by 7 Mar 2011, 15:32

                  My method 2 posts before this uses the absolute path of the calling script to construct a relative path to the important folders ?
                  How do we allow for MAC users with their plugins 'in the wrong place' OR even my uni students who have to install their PC 3rd party scripts in their persona H:/Sketchup_Plugins/ folder, with a script added by their IT guys in the main Plugins to add that path to their $LOAD_PATH array... Would these still work with my idea ??

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • T Offline
                    thomthom
                    last edited by 7 Mar 2011, 15:35

                    Can we get the path of the resource folder?
                    If so, then we could add ../ back references until we're back at the root, then apply the absolute path.
                    Though, how does one deal with different drive letters under Windows?

                    Thomas Thomassen β€” SketchUp Monkey & Coding addict
                    List of my plugins and link to the CookieWare fund

                    1 Reply Last reply Reply Quote 0
                    • T Offline
                      thomthom
                      last edited by 7 Mar 2011, 15:35

                      @thomthom said:

                      Can we get the path of the resource folder?

                      Ah - didn't see bentleykfrog's reply.

                      Thomas Thomassen β€” SketchUp Monkey & Coding addict
                      List of my plugins and link to the CookieWare fund

                      1 Reply Last reply Reply Quote 0
                      • T Offline
                        thomthom
                        last edited by 7 Mar 2011, 15:40

                        @bentleykfrog said:

                        def getInstructorContentDirectory
                        >   plugin_folder = Sketchup.find_support_file test_file.html, "Tools/My Plugin/"
                        >   plugin_folder = plugin_folder.split("test_file.html")
                        >   plugin_folder_array = plugin_folder[0].split("/")
                        >   if(plugin_folder_array[1] == "Library")
                        >     #so the plugin/tool is stored in the main library
                        >     return "../../../../Tools/My Plugin/Instructor/"
                        >   elseif (plugin_folder_array[1] == "Program Files" || plugin_folder_array[1] == "Program Files (x86)")
                        >     #the operating system is PC, so only 1 location for tools/plugins
                        >     #there's probably a better way to do this
                        >     return "../../../../Tools/My Plugin/Instructor/"
                        >   else
                        >     #not sure about this, especially since it could be traversing drives
                        >     return "../../../../../../../../../"+plugin_folder+"Instructor/"
                        >   end
                        > end
                        

                        plugin_folder = Sketchup.find_support_file test_file.html, "Tools/My Plugin/"
                        This is not reliable way to find the location of where your plugin is installed. This is what breaks under OSX when users place them in incorrect locations - and it will also throw errors is people install plugins to custom locations, like TIG and I do.

                        To get the path of your plugin:
                        plugin_path = File.dirname( __FILE__ )

                        To get SU Plugins path:
                        su_plugin_folder = Sketchup.find_support_file( 'Plugins' )

                        We can get the Resource folder by using:
                        plugin_folder = Sketchup.find_support_file( 'Resources' )

                        But then there's a folder named after the current locale...

                        Thomas Thomassen β€” SketchUp Monkey & Coding addict
                        List of my plugins and link to the CookieWare fund

                        1 Reply Last reply Reply Quote 0
                        • B Offline
                          bentleykfrog
                          last edited by 7 Mar 2011, 15:40

                          @kirill2008 said:

                          Does anyone know how to find out how many slashes and dots are needed at certain end user comp ("..\..\..\..\"). I mean if someone has installed sketchup in a custom subdirectory it is necessary to add/remove one of "..\" I guess.

                          I think that because its relative to [sketchup folder]/Resources/[language]/helpcontent/tool/ that it shouldn't matter where sketchup is installed, as this will be constant. The parent directory "..\" folder just goes back through tool -> helpcontent -> [language] -> resources to get you to the base [sketchup folder].

                          @thomthom said:

                          And because some OSX users put their plugins in the user folder instead of the default, one can never rely to plugins to be at a fixed relative path.

                          You're right this is a huge issue. I'm guessing that on OSX this path will be relative to the main library folder (ie. [primary hard drive]/Library/Application Support/[sketchup folder]/Sketchup/Resources/[language]/helpcontent/tool/). So maybe you can do some comparison between Sketchup.find_support_file "[some_file].html", "Tools/[your_plugin]/" and the main library location, like this:

                          def getInstructorContentDirectory
                            plugin_folder = Sketchup.find_support_file test_file.html, "Tools/My Plugin/"
                            plugin_folder = plugin_folder.split("test_file.html")
                            plugin_folder_array = plugin_folder[0].split("/")
                            if(plugin_folder_array[1] == "Library")
                              #so the plugin/tool is stored in the main library
                              return "../../../../Tools/My Plugin/Instructor/"
                            elsif (plugin_folder_array[1] == "Program Files" || plugin_folder_array[1] == "Program Files (x86)")
                              #the operating system is PC, so only 1 location for tools/plugins
                              #there's probably a better way to do this
                              return "../../../../Tools/My Plugin/Instructor/"
                            else
                              #not sure about this, especially since it could be traversing drives
                              return "../../../../../../../../../"+plugin_folder+"Instructor/"
                            end
                          end
                          

                          I'm not sure about the OSX support, but I'll check after I'm finished with my work on the PC.

                          What do you guys think?

                          -niall

                          1 Reply Last reply Reply Quote 0
                          • T Offline
                            thomthom
                            last edited by 7 Mar 2011, 15:41

                            Ah!!!

                            Sketchup.get_resource_path( 'helpcontent' )

                            returns:
                            C:/Program Files (x86)/Google/Google SketchUp 8/Resources/en-US/helpcontent

                            πŸ˜„

                            Thomas Thomassen β€” SketchUp Monkey & Coding addict
                            List of my plugins and link to the CookieWare fund

                            1 Reply Last reply Reply Quote 0
                            • T Offline
                              thomthom
                              last edited by 7 Mar 2011, 15:55

                              File.exist?( 'C:/temp/test.png' )
                              Returns:
                              true

                              <span class="syntaxdefault"><br />path </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_resource_path</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxstring">'helpcontent'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">parts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">split</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">SEPARATOR </span><span class="syntaxkeyword">).</span><span class="syntaxdefault">size<br />root </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"..#{File;;SEPARATOR}"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> parts<br />file </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> path</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> root</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'temp'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'test.png'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">exist</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault"> file </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span>
                              

                              Returns:
                              true

                              (Updated it use File::SEPARATOR)

                              ( file = C:/Program Files (x86)/Google/Google SketchUp 8/Resources/en-US/helpcontent/../../../../../../../temp/test.png )

                              Restricted to the drive SketchUp is installed to. 😞
                              Untested under OSX

                              Thomas Thomassen β€” SketchUp Monkey & Coding addict
                              List of my plugins and link to the CookieWare fund

                              1 Reply Last reply Reply Quote 0
                              • T Offline
                                TIG Moderator
                                last edited by 7 Mar 2011, 16:28

                                File.exist?( 'H:/temp/test.png' )
                                Returns:
                                true

                                <span class="syntaxdefault">    tfile </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'H;/temp/test.png'<br /></span><span class="syntaxdefault">    tdrive </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> tfile</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">split</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">)[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">    path </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_resource_path</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxstring">'helpcontent'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    patha </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">split</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    patha</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> tdrive<br />    parts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> patha</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">size </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> 1<br />    root </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'../'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> parts<br />    file </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> patha</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'/'</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> root</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'temp'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'test.png'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">exist</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault"> file </span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span>
                                

                                Returns:
                                true
                                ( file = H:/Program Files (x86)/Google/Google SketchUp 8/Resources/en-US/helpcontent/../../../../../../../temp/test.png )
                                So you have to know the drive letter of the file you are testing and then cludge that into the tested path...
                                It will then work across drives on a network - unsure of a MAC though ???

                                TIG

                                1 Reply Last reply Reply Quote 0
                                • T Offline
                                  thomthom
                                  last edited by 7 Mar 2011, 16:44

                                  But, does that work for the instructor?

                                  Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                  List of my plugins and link to the CookieWare fund

                                  1 Reply Last reply Reply Quote 0
                                  • T Offline
                                    TIG Moderator
                                    last edited by 7 Mar 2011, 17:08

                                    @thomthom said:

                                    But, does that work for the instructor?

                                    My original idea works as the number of steps down the folder structure equals the number of steps up...
                                    If I add in a drive letter cludge it fails - πŸ˜• bamboozled... πŸ‘Š

                                    TIG

                                    1 Reply Last reply Reply Quote 0
                                    • T Offline
                                      thomthom
                                      last edited by 7 Mar 2011, 17:36

                                      Yea, if we have to specify a path relative to a fixed one we're restrained to the drive the fixed path originates from. 😞
                                      (unless someone can show of a neat trick around that...?)

                                      So far, my wrapper looks like this:

                                      <span class="syntaxdefault"><br />  </span><span class="syntaxcomment"># Get Instructor Path<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># Tool.getInstructorContentDirectory expects a path relative to SketchUp's<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># Resource/<locale>/helpcontent/ folder, despite the documentations use an<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># absolute path.<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># This method is a wrapper that generates a path to the actual help content<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># which SketchUp can use.<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># The given path must be under the same drive as SketchUp's help content.<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># This quick exist in all current SketchUp versions.<br /></span><span class="syntaxdefault">  </span><span class="syntaxcomment"># Current; SketchUp 8 M1<br /></span><span class="syntaxdefault">  def self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_instructor_path</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> path </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    origin </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">get_resource_path</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxstring">'helpcontent'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment"># Check if drive matches<br /></span><span class="syntaxdefault">    origin_drive </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> origin</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">match</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">/^(</span><span class="syntaxdefault">w</span><span class="syntaxkeyword">);/</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    if origin_drive<br />      origin_drive </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> origin_drive</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">downcase<br />    end<br />    path_drive </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">match</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">/^(</span><span class="syntaxdefault">w</span><span class="syntaxkeyword">);/</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    if path_drive<br />      path_drive </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> path_drive</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">downcase<br />      path </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> path</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2.</span><span class="syntaxkeyword">..</span><span class="syntaxdefault">path</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">size</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxcomment"># Trim drive letter<br /></span><span class="syntaxdefault">    end<br />    if path_drive </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> origin_drive<br />      return nil unless origin_drive </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> path_drive<br />    end<br />    </span><span class="syntaxcomment"># Build relative path<br /></span><span class="syntaxdefault">    parts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> origin</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">split</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">SEPARATOR </span><span class="syntaxkeyword">).</span><span class="syntaxdefault">size<br />    path_to_root </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"..#{File;;SEPARATOR}"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> parts<br />    relative_path </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> path_to_root</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> path </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    return relative_path<br />  end<br /></span>
                                      

                                      Not tested under OSX.

                                      Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                      List of my plugins and link to the CookieWare fund

                                      1 Reply Last reply Reply Quote 0
                                      • B Offline
                                        bentleykfrog
                                        last edited by 7 Mar 2011, 18:12

                                        @thomthom said:

                                        Yea, if we have to specify a path relative to a fixed one we're restrained to the drive the fixed path originates from. 😞
                                        (unless someone can show of a neat trick around that...?)

                                        Ohhhh!!!! Just tested, Volume traversal on a mac!

                                        plugin_path = File.dirname (__FILE__)
                                        root_dir_entries = Dir.entries(plugin_path+"/../../../../../../Volumes/")
                                        puts root_dir_entries
                                        

                                        Hmm, if I save a model on my primary hard drive (the hard drive that my user folder is set on and sketchup is installed on) and run model_path = Sketchup.active_model.path in the Ruby console I get the following path: /Users/[my user name]/Desktop/Untitled.skp. But if I save to another drive I get /Volumes/[drive namespace (not the letter)]/Untitled.skp.

                                        Will have to check on pc.

                                        1 Reply Last reply Reply Quote 0
                                        • T Offline
                                          thomthom
                                          last edited by 7 Mar 2011, 18:23

                                          Anyone with a non-English SketchUp?

                                          Sketchup.get_resource_path( 'helpcontent' )
                                          I'm wondering if the names of files and folders in the Resource folder depends on the current locale.

                                          Thomas Thomassen β€” SketchUp Monkey & Coding addict
                                          List of my plugins and link to the CookieWare fund

                                          1 Reply Last reply Reply Quote 0
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 2 / 5
                                          2 / 5
                                          • First post
                                            22/84
                                            Last post
                                          Buy SketchPlus
                                          Buy SUbD
                                          Buy WrapR
                                          Buy eBook
                                          Buy Modelur
                                          Buy Vertex Tools
                                          Buy SketchCuisine
                                          Buy FormFonts

                                          Advertisement