⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
  • Ruby Script for Adding up length of Edges

    5
    0 Votes
    5 Posts
    455 Views
    D
    @tig said: You can only really parse through entities 'collections': model.entities/model.active_entities and group.entities/definition.entities AND model.selection... However, once you have a collected set from that, you can parse that set to find just the things on a certain layer, with a certain material etc... Recently the use of 'grep' has been found to speed up entity parsing significantly, I recommend you try it... So to find all groups in a selection use: gps=model.selection.grep(Sketchup::Group) Now 'gps' is an array of all groups in the current selection. To find every selected group that's assigned layer 'XXX' use xxx=[]; gps.each{|gp| xxx << gp if gp.layer.name=='XXX' } If you want to find absolutely everything in the model using that layer, then: gps=model.entities.grep(Sketchup::Group) and process 'gps'... To get matches within a group use: gps=group.entities.grep(Sketchup::Group) and process 'gps'... To find everything in the model using a certain layer try: xxx=[]; model.entities.each{|e| xxx << e if e.layer.name=='XXX' } There are several alternative methods, like 'collect', but here I just show you make an empty array 'xxx=[]' and then we add to it using 'push' [<<] when we get a match... Hello TIG, This is once again very helpful. I think I understand your examples to experiment a bit and report back what I develop using this information.
  • Set layer color with code possible?

    6
    0 Votes
    6 Posts
    217 Views
    renderizaR
    Hopefully next API update includes this function...Thanks TIG!
  • Detect changes in geometry?

    7
    0 Votes
    7 Posts
    322 Views
    thomthomT
    @maricanis said: However, I've never used start_operation and Undo related features, so this is good opportunity to look them too. Indeed - they are essential for a good UX so the user an go back and forth. Another note on the ToolsObserver - the tool state of the tools vary and are not consistent so you need to dig a little to figure out their behaviour. I described some of the behaviour of Move, Rotate and Scale in the comments of AutoSmooth. You can view the source at GitHub: https://github.com/thomthom/AutoSmooth
  • Using chunkyPng library with Sketchup

    3
    0 Votes
    3 Posts
    744 Views
    massimoM
    Done.
  • Fit_plane_to_points problem

    9
    0 Votes
    9 Posts
    603 Views
    D
    I did not understand point.offset, with this example I understand a little more, thank you very much Thom, very interesting this
  • Query: Edge transparency

    8
    0 Votes
    8 Posts
    339 Views
    thomthomT
    Not is you want to use the native Select tool. But if you want to avoid observers and gain more control over your plugin's environment you could make your own tool.
  • Calculations on its own thread

    9
    0 Votes
    9 Posts
    712 Views
    T
    Everything I have tried in attempting to use Thread in SketchUp has failed miserably. This works for me: timer = UI.start_timer(1.0,true) { start = Time now loop do break if Time.now-start > 0.8 ... long computation involving many loops ... end } ... call stop_timer(timer) when appropriate, perhaps from within the loop My computation is copying a file to a WebDialog; the file is output from another process, and can grow over time to be quite large. This code updates the WebDialog once per second, and permits the "Kill" button (in another WebDialog) to work. Each loop reads 1024 bytes from the file and uses WebDialog#execute_script to append it to a textarea (escape \n and " to keep the JavaScript valid); it handles multiple reads at EOF as the file can grow.
  • Forcing a Screen Update during a Ruby script

    11
    0 Votes
    11 Posts
    1k Views
    thomthomT
    This is the reason the Animation class is there for: http://www.sketchup.com/intl/en/developer/docs/ourdoc/animation.php
  • Virtually Test the Fit of Bolt and Screw Hole

    2
    0 Votes
    2 Posts
    276 Views
    gillesG
    Make the bolt a group or better a component, edit it and use tape tool to scale it to fit. http://support.google.com/sketchup/bin/answer.py?hl=en&answer=116447&topic=2458211&ctx=topic [image: vy36_bolt.jpg]
  • SU 2013 not allowing SU 8 to run plugins!

    10
    0 Votes
    10 Posts
    668 Views
    Chris FullmerC
    Great, thanks for the update!
  • Draw cpoint on face

    5
    0 Votes
    5 Posts
    329 Views
    liquid98L
    TIG, Thanx for your answer, it completely elucidates my question.
  • Non-symmetric camera frustum?

    2
    0 Votes
    2 Posts
    565 Views
    TIGT
    As far as I know the FOV frustrum is always symmetrical. Good luck in you endeavors...
  • Navigation Buttons on Mac

    3
    0 Votes
    3 Posts
    212 Views
    H
    so as a consequence, there is no chance to set a own adress for the home-button? To create it as a part of html isnt possible in my case .. its a portal which references to a lot of differet homepages and i can't change them .. and a test with own buttons and an iframe destroyed the possibility to get information from the website to sketchup...
  • RBZ and Components library

    5
    0 Votes
    5 Posts
    411 Views
    danielbowringD
    @driven said: for a mac you can create a symbolic link the will show the skps in the 'Components Browser' lnk_skps = %x(ln -s "#{Sketchup.find_support_file("Plugins") << "/your_folder/your_skps"}" "#{Sketchup.find_support_file('Components')}" 2>&1) is there not a windows equivalent? john For Vista and higher: mklink /D LinkName TargetPath XP "supports" a similar feature called junction points, but I don't think it's available by default. For XP: links LinkName TargetPath For Vista and higher: mklink \J LinkName TargetPath
  • Newbie question

    3
    0 Votes
    3 Posts
    207 Views
    TIGT
    Because SketchUp's circles are in reality finely faceted polygons the real-intersection of two arcs' circumferences is unlikely to be exactly on those arcs' edges, unless by coincidence it turns out to be at one of the arc's edge's vertices. Conversely the actual-intersection of those arcs' edges is unlikely to fall exactly on the arcs' circumferences, unless by coincidence it's at a vertex of those arcs' edges... My TrueTangent tools contain a number of algorithms to find circles/arcs' true tangents, true intersection points etc... Perhaps these will help you find what you need...
  • Sine Law?

    9
    0 Votes
    9 Posts
    878 Views
    T
    @tig said: So ac=**63.0** and then in the equation ad = Math.asin(db * Math.sin(ac**.degrees**) / dc).radians Now 'ad' is in degrees again, so when you Math equation processes it uses ad.degrees I was not confused between degrees and radians. Its the same way angles are treated in many languages, I'm quite familiar having written AutoLisp routines years ago, which also uses degrees and radians. Its more about me learning how to write the same code in Ruby .........I finally see in your example how .degrees gets added, its really simple once I saw your example.
  • Need a SU Tap &amp; Die plugin

    12
    0 Votes
    12 Posts
    691 Views
    M
    http://sketchup.google.com/3dwarehouse/details?mid=db27537086288b21706627b112998eff This is a small model built with some code to make it usable for sketchy physics (and perhaps 3d printing). Does anyone know how this would print on a makerbot? http://youtu.be/dqyyQF9gZeM or by just modeling with some pretty bizarre music http://youtu.be/MKrWDNDd62c
  • Concatenate a string and an integer?

    4
    0 Votes
    4 Posts
    638 Views
    thomthomT
    @aerilius said: There are many ways to create strings: string concatenation: 90.to_s + " degrees" # slow because it creates a new third string object string appending: 90.to_s << " degrees" # faster because it adds the second string into the first string interpolation: "#{90} degrees" Note that string interpolation is the fastest. (And reads easier IMO)
  • Visibility in Group/Component editing

    7
    0 Votes
    7 Posts
    464 Views
    thomthomT
    Ah, ok now I understand. Yes, then Model.active_path is what you need. And checking if Hide Rest of Model or Hide Similar Components is enabled.
  • Why is 2013 breaking this plugin?

    4
    0 Votes
    4 Posts
    368 Views
    thomthomT
    What is breaking? What is expected behaviour?

Advertisement