sketchucation logo sketchucation
    • Login
    1. Home
    2. liquid98
    3. Posts
    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!
    ⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 26
    • Posts 124
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Namespace question on noob level

      Cooool! Thanx, I was hoping for this! 👍

      Global methods: just methods without any namespace? -- Refrain from using them, right?

      So every script should be in a double namespace ?? (Liquid and Name).. with or without loading other scripts ??

      What do you mean by:

      'But never include() modules into the TOPLEVEL_BINDING, which is Object. ? '

      EDIT:
      require("liquid/useful.rb") include(Liquid::Useful)
      Should be placed outside the modules!!

      Thnx

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Namespace question on noob level

      Hi Mitch,

      Thanx for your answer!

      posted in Developers' Forum
      liquid98L
      liquid98
    • Namespace question on noob level

      Hello everybody,

      I have a script that contains several methods that are useful in other scripts. I called it shared.rb.

      It's contents:

      
      require 'sketchup.rb'
      
      module AA
      
      	def self.usefull1
      		# code here
      	end
      
      	def self.usefull2
      		# code here
      	end
      
      	def self.usefull3
      		# code here
      	end
      
      end
      

      So I can use the methods in other files like this:

      ` require 'sketchup.rb'
      require 'shared.rb'

      ...
      AA.usefull1`

      My question: is there a possibility to avoid prefixing the Module name?
      Like:
      ` require 'sketchup.rb'
      require 'shared.rb'

      ...
      usefull1`

      Tnx, liquid

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: How to debug?

      [encourage] 👍 [/encourage]

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: [Plugin] Boolean helper update 08122011

      It's always nice to hear that my script helped you out! Apparently it works also on a Mac; never tested it 🎉 🎉

      posted in Plugins
      liquid98L
      liquid98
    • [Plugin] Debug tool: run lastloaded ruby

      Hi!

      This plugin simplifies the debugging process with a few mouse clicks. It works in conjunction with Jim Foltz' rubytoolbar, which can be found here:

      Link Preview Image
      Plugin: Ruby Toolbar

      This Windows-only plugin creates a Toolbar for controlling the Ruby Console It can open and close the Ruby console, clear the console, loa...

      favicon

      (sketchuptips.blogspot.com)

      Once you've loaded the script you want to debug through the rubytoolbar, you can simply reload and execute your script in one step.

      How does it work?

      Lastloaded.rb looks for a line in your code tagged with:

      #loadme
      

      So just put this string after the line in your code that Sketchup has to execute.
      For example:

      <span class="syntaxdefault">new_menu </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Plugins"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">cmd </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> UI</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Command</span><span class="syntaxkeyword">.new(</span><span class="syntaxstring">"text"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault">some command</span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span><span class="syntaxcomment">#loadme<br /></span><span class="syntaxdefault">new_menu</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">cmd</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span>
      

      Lastloaded will now reload your script and automatically runs 'some command' for you. The script has a menu item in the Tools section, so you can assign a shortcut if convenient.

      Have fun! I'm open for questions / suggestions


      lastloaded.rb

      posted in Plugins
      liquid98L
      liquid98
    • RE: Boolean: how do I 'outershell' multiple groups/components?

      good guess! that's the plan indeed.

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Boolean: how do I 'outershell' multiple groups/components?

      Is it smart at all to test for intersecting geometry before attempting a Boolean operation??

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Boolean: how do I 'outershell' multiple groups/components?

      Hi Dan,

      I think the Boundingbox.intersect method is not really suitable for testing whether geometry is intersecting..
      It is true that Boundingbox.intersect returns an empty boundingbox if there is no 'intersection'.
      So we can test for that, but it is not reliable..

      Furthermore the Group.intersect method is just a Boolean method, it is not intended for testing intersection of solids..

      I feel the loop class can clarify things..

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Circular construction lines

      Use plugin xline

      http://rhin.crai.archi.fr/rld/plugin_details.php?id=486

      posted in Newbie Forum
      liquid98L
      liquid98
    • RE: Boolean: how do I 'outershell' multiple groups/components?

      Hi Dan,

      @dan rathbun said:

      Yes they are.. you just do not realize it yet.

      I do realize that. But the script I'm writing is for internal use. So everything
      this script will process meets the criteria already. But you couldn't know that.. 😒
      By the way ' outer_shell' is also available in free version, I think.

      The reason for adding the groups to an array is also clear to me now, otherwise the iteration process is not going well and SU could skip a few items.

      Now for the real problem:

      First I need to add all the candidates for the boolean unite operation to an array. In other words: only group-entities that intersect will be processed.

      I tried BoundingBox.intersect but it gives me false positives in cases of close
      proximity. So I've done some more reading and I ended up in the loops section of the SU API. Can the loop class help me here tot detect if groups really intersect??

      This is the only problem left, the boolean problem I solved by my self. ☀ ☀ This script unifies all intersecting groups to one solid:

      <span class="syntaxdefault">                file </span><span class="syntaxkeyword">=</span><span class="syntaxstring">"D;\\Desktop\\bool.skp"<br /></span><span class="syntaxdefault">            Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">open_file</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">file</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            <br />            model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />            entities </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities <br />            <br />            foo</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> nonfoo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[],</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[]<br /></span><span class="syntaxdefault">            grps </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_all </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">ent</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            <br />            grps</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">a</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> unless a </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> grps</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">last <br />                            a</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'foo'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> foo</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push a<br />                        else<br />                            a</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'nonfoo'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> nonfoo</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push a<br />                        end <br />                        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">            <br />            until foo</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"> nil<br />                foo</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each     </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">ff</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> <br />                                if  </span><span class="syntaxkeyword">((</span><span class="syntaxdefault">ff</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">intersect</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">nonfoo</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">)).empty?</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> false<br />                                    </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">ff</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">outer_shell</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">nonfoo</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">])).</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'nonfoo'<br /></span><span class="syntaxdefault">                                end<br />                                 <br />                        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">                foo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_all </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">ent</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'foo'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}</span><span class="syntaxdefault">    <br />                nonfoo </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">find_all </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">ent</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">'nonfoo'</span><span class="syntaxkeyword">}</span><span class="syntaxdefault">     <br />            end</span>
      

      bool.skp

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Boolean: how do I 'outershell' multiple groups/components?

      Hi Dan,

      Thanx for your input. Used to post my questions in the 'plugins' section, my apologies for that.
      First thanx for pointing me out, the code snippet section was totally new for me, so that's a good one!

      I realize I was to quick posting my code. Indeed, the iteration range was not ok. The tree tests (right class?,
      manifold? and pro) aren't relevant in my situation.

      @dan rathbun said:

      Secondly, you must make an Array copy, of the entities (or any C++ collection,) if you will be making model changes during the iteration.
      This is the part I don't get. You say TIG wrote a lot about this subject..
      I'will look for it then, and come back here if I still don't get it.

      Thank you!

      posted in Developers' Forum
      liquid98L
      liquid98
    • Boolean: how do I 'outershell' multiple groups/components?

      Hello,

      I have a question about the Boolean functions 'outer_shell' and 'union'.
      See attached file.
      If I select all (6 groups ) and use the mouse to 'outershell' I get the 3 single groups plus the new united group.

      How do I mimic this behavior in code??
      All I could imagine is this rather brute force technique:

      <span class="syntaxdefault">entlength </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length <br />            for f in 0</span><span class="syntaxkeyword">...</span><span class="syntaxdefault">entlength<br />                for g in 0</span><span class="syntaxkeyword">...</span><span class="syntaxdefault">entlength<br />                    begin<br />                    entities</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">f</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">outer_shell</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">g</span><span class="syntaxkeyword">])<br /></span><span class="syntaxdefault">                    rescue<br />                    end<br />                end    <br />            end</span>
      

      any ideas are appreciated!

      Thnx , liquid

      question.skp

      posted in Developers' Forum
      liquid98L
      liquid98
    • RE: Component definition --&gt; save insertion_point

      TIG, 👍

      posted in Plugins
      liquid98L
      liquid98
    • RE: Component definition --&gt; save insertion_point

      I figured it out by myself!

      Just create a new comonentinstance like this:

      <span class="syntaxdefault">point </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Point3d</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">def </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> entities</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">definition  </span><span class="syntaxcomment"># assuming entities[0] is a component instance<br /></span><span class="syntaxdefault">def1 </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">definitions</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">tr </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">new point<br />def1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_instance</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">def</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> tr</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> <br /><br />def1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">save_as</span><span class="syntaxstring">"E;\\def1.skp"</span><span class="syntaxdefault"> </span>
      

      Now a new component is created containing a component instance with its transformation.
      Changing the 'point' variable results in a different insertion point
      for the imported component.

      Anybody for improvement on this??

      posted in Plugins
      liquid98L
      liquid98
    • Component definition --&gt; save insertion_point

      Hello my friends,

      Here is a question about saving a componentdefinition.

      <span class="syntaxdefault"><br />point </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Point3d</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">definition</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">insertion_point </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> point<br />entities</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">definition</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">save_as  </span><span class="syntaxstring">"E;\\def.skp"<br /></span><span class="syntaxdefault"> </span>
      

      I set the insert_point of the componentdefinintion an then save the definition.
      The insertion_point is not saved with the definition.
      How can I save the insertion_point within the E:\def.skp ?

      Thnxx

      posted in Plugins
      liquid98L
      liquid98
    • RE: Small question about rescaling components

      @ Chris,

      @chris fullmer said:

      You just want the native "Reset Scale" feature to work with more than one component at a time, right?

      Yep that's right!

      edit
      So is it possible to call the native "Reset Scale" command from a script, and apply it to component_1.. component_i in the model?

      posted in Plugins
      liquid98L
      liquid98
    • RE: Small question about rescaling components

      Sam,

      Yeah that's also a nice solution to my problem.

      But then I have to work with certain scale-factors...

      'scale_reinit.rb' is more hassle free. I updated the image above to make my question more clear. Hope you understand .

      posted in Plugins
      liquid98L
      liquid98
    • RE: Small question about rescaling components

      Yes it works! Thanks, Sam.

      The only thing is that I have to adapt the plugin to work with more components at once!

      posted in Plugins
      liquid98L
      liquid98
    • Small question about rescaling components

      Hello fellow scripters,

      I found this script called: 'scale_reinit.rb'.
      The script reinitializes the scale of scaled components.

      Download: http://forums.sketchucation.com/download/file.php?id=12605

      Discussion: http://forums.sketchucation.com/viewtopic.php?f=323&t=11552&hilit=reset+scale,

      edit : picture updated

      https://lh3.googleusercontent.com/-_YeyOZiymHs/Tt5E8NRoQcI/AAAAAAAABVw/N2NSH3Cyh1Y/s1440/testscalecomp1.jpg

      I'm not sure how the script works, but the components are placed in the wrong manner (see image)..
      I suppose it's a small effort to correct this..

      Any help is appreciated.. 😄

      posted in Plugins
      liquid98L
      liquid98
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 2 / 7