ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info
  • DefinitionObserver doesn't trigger

    16
    0 Votes
    16 Posts
    1k Views
    thomthomT
    I looks like it's some wires crossed in the backend. I made a typo when I wanted a DefinitionsObserver, where I instead wrote DefinitionObserver. But the code still worked. So while the DefinitionObserver doesn't trigger the events it's supposed to, it triggers all of DefinitionsObserver's events. Example code: class TestDefinitionsObserver < Sketchup;;DefinitionsObserver def onComponentPropertiesChanged(definitions, definition) puts 'DefinitionsObserver - onComponentPropertiesChanged' end def onComponentRemoved(definitions, definition) puts 'DefinitionsObserver - onComponentRemoved' end def onComponentAdded(definitions, definition) puts 'DefinitionsObserver - onComponentAdded' end end class TestDefinitionObserver < Sketchup;;DefinitionObserver def onComponentPropertiesChanged(definitions, definition) puts 'DefinitionObserver - onComponentPropertiesChanged' end def onComponentRemoved(definitions, definition) puts 'DefinitionObserver - onComponentRemoved' end def onComponentAdded(definitions, definition) puts 'DefinitionObserver - onComponentAdded' end end module TestDefOb def self.test r = Sketchup.active_model.definitions.add_observer(TestDefinitionObserver.new) puts 'Sketchup;;DefinitionObserver - ' + r.to_s r = Sketchup.active_model.definitions.add_observer(TestDefinitionsObserver.new) puts 'Sketchup;;DefinitionsObserver - ' + r.to_s end end Type TestDefOb.test in the console and add/remove some component definitions. Notice how both observers trigger.
  • Drawing line based on fed coordinates

    4
    0 Votes
    4 Posts
    558 Views
    TIGT
    @jderekito said: Thanks TIG, The defaulting to inches explains it. For now I am just trying to draw a single line. If I just drawing a single line does it still need the face and edges. Thanks again for you assistance as I am still learning my way around SU. Derek 'Line' and 'Edge' are interchangeable in this context... A line [edge] is just a line. edge=entities.add_line(pt1,pt2) for one line, edges=add_edges(pt1,pt2,pt3); edge0=edges[0]; edge1=edges[1] for multiple lines [edges] strung between the list of points - if you use .add_edges you get an array of edges - if there's only one you still need to use edges[0] to find it, if you .add_line you get just the one edge [line]. A face needs at least 3 edges with common vertices. More edges also have to be coplanar. face=entities.add_face(xxxxx) takes a 'list/array of points', it then makes new edges with a new face, or a 'list/array of edges', or a 'closed-curve' - it then makes a new face to these existing edges So there are several ways: Make the points and then make the edges and face in one go - probably what you want - face=entities.add_face(pointsList) Make the edges from the points and add the face to them - useful if some edges pre-exist - edges=entities.add_edges(pointsList); face=entities.add_face(edges) Make the edges and then 'find_faces' that they can have - useful if it's a set of 3D edges - edges=entities.add_edges(pointsList); edges[0].find_faces it returns only the number of faces that it's made - if you want to find the face itself then you then need to use face=edges[0].faces[0] additionally...
  • Soap Skin and Bubble

    7
    0 Votes
    7 Posts
    964 Views
    pilouP
    Cool news Here the link [image: Wi5Y_bubble1.jpg]
  • Moving children parallel to parent components

    6
    0 Votes
    6 Posts
    341 Views
    TIGT
    Why not write us one...
  • Fastest way to select component by definition.name

    10
    0 Votes
    10 Posts
    2k Views
    H
    Hello TIG, Again many thanks for the hint. sel_def.instances[0].add_entities(MySubCompArray) does the job for me. Now I can use the imported dummy-block from autocad as the hierarchy-master instead of creating a separate new group. Will keep the outliner structure more readable. I also use now Jim's togglewindows.rb to keep the outliner close during execution.
  • How do you catch &quot;Make Unique&quot;?

    3
    0 Votes
    3 Posts
    183 Views
    thomthomT
    The onContentsModified event is broken...
  • Removing observers

    4
    0 Votes
    4 Posts
    189 Views
    thomthomT
    Ok. Found the problem. I was using model.active_path to cache the last path. When the last path was the model itself it'd return an empty array.
  • Selection Tool that works like the Eraser?

    13
    0 Votes
    13 Posts
    852 Views
    fredo6F
    @aceshigh said: well, I am certainly getting depressed for the lack of the plugin Maybe this could help you to fill 'un-depressed' (and therefore 'pressed') http://www.sketchucation.com/forums/scf/viewtopic.php?f=180&t=18916#p155058 Fredo
  • HELP with COMPONENTS LIST

    9
    0 Votes
    9 Posts
    274 Views
    TIGT
    NO. Use Plugins >> Component Report++++
  • Help with hyperlinks

    10
    0 Votes
    10 Posts
    9k Views
    H
    Adam, Thanks for the script. I wasn't aware of Sketchup.open_file(url). Does it open a new instance or does it replace the open file?
  • Ruby on MAC

    2
    0 Votes
    2 Posts
    162 Views
    jeff hammondJ
    Macintosh HD/Library/Application Support/Google SketchUp 7/SketchUp/plugins
  • Add DC-Attribut to group not show up

    4
    0 Votes
    4 Posts
    205 Views
    TIGT
    Unfortunately, as you say, a group is not a component ! The group.make_unique is 'deprecated' BUT it works till it's fixed by Google... Why don't you make the group into a component, THEN you can probably use it as desired - inst=group.to_component - returns its instance OR defn=group.to_component.definition - returns its definition if you want to add to that... OR instn=defn.instances[0]to return what you just 'componentified' from the group...
  • How to launch applications on Mac with Ruby?

    10
    0 Votes
    10 Posts
    465 Views
    TIGT
    Works fine on my PC with Vista. Opens an app (.exe) or a file with it's assigned app... Puzzling...
  • Group components from array

    13
    0 Votes
    13 Posts
    535 Views
    H
    @unknownuser said: Ruby is kind of cool in that you can increment Strings. Thanks Jim for the tip. In this case I can not use it, since my block-numbering-steps comes from the imported autocad-blocknames. But maybe it gets usefull in the future. @unknownuser said: Do whatever works for you best... Thanks again TIG. Hans-Peter
  • Turn component into non-editable DC

    2
    0 Votes
    2 Posts
    185 Views
    H
    The sample 'Make Sang Red' from here: http://www.sketchucation.com/forums/scf/viewtopic.php?f=180&t=17888&p=145120&hilit=Make+Sang+Red#p145120 might help: # Add a new configurable option to Sang. # (Any attribute that starts with an underscore # is a "meta attribute" that describes behavior.) sang_def.set_attribute 'dynamic_attributes', 'weight', '145' sang_def.set_attribute 'dynamic_attributes', '_weight_label', 'weight' sang_def.set_attribute 'dynamic_attributes', '_weight_formlabel', 'My Weight' sang_def.set_attribute 'dynamic_attributes', '_weight_units', 'STRING' sang_def.set_attribute 'dynamic_attributes', '_weight_access', 'TEXTBOX' Not sure if this would enough to make a normal component into a DC! Will try.
  • ToolTip and help line ?

    16
    0 Votes
    16 Posts
    515 Views
    pilouP
    Oh! Deception So translator must be very brief
  • Call to Mac users for script portability

    101
    0 Votes
    101 Posts
    5k Views
    D
    Fredo, did the pic come?? i'll re-attach. freeScale. bottom box after TopMenu your delightful scripts, when I can download them (a problem with this site), and get them in the right place (my fault) are fantastic to use on the Mac, my comment was more about if any of the earlier ones had been absorbed into FreeScale or Pushpull, or outdated by SU7, etc.. then I will not try to find them now. cheers john [image: oPgQ_monpm2.jpg]
  • A weld or inside fillet ruby?

    9
    0 Votes
    9 Posts
    1k Views
    C
    Too funny....your quick Chris. When I have a minute....which might be awhile, I'll put together a little Photoshop idea of the dialog box. It might help. And I can't believe your not a math whizzzz. I was checking out your Ruby writing tutorial. Can't wait to try it. You've made it look really user friendly. Have a great day! Jeff
  • AUTO-CUT faces / objects - ruby request

    7
    0 Votes
    7 Posts
    501 Views
    R
    pret auto How wonderful feedback!
  • How to draw a limit surface from array ?

    8
    0 Votes
    8 Posts
    509 Views
    TIGT
    I assume the grid is regular ? Parse the array into sub-sets of the same Z value. Starting with the highest Z-set, find the max and min X and Ys in the set. Test each point in an X column comparing to max Y and min Y. Add these to a points array. Test each point in a Y row comparing to max X and min X. Add these to the points array. Check to see that these points could form a face - if not do next lowest Z set... Do next lowest Z set the same way... this time the face2 could also have an inner loop formed from face1 - add this points set into the array IF you want the 'hole'... Do the next lowest Z set etc, face3 could have an inner loop formed by face2 outer loop etc... Now we have a set of points that would form faces [facepts1.facepts2,facepts3,..] each with a perimeter that match the points Z height. Assuming you want to move each face independently then make facegroup for each face - add_face(points) - and move it up in the Z. In the group erase any face with only one outer loop IF it's NOT face1 - this forms the donut for face2/3/4 etc. If you want a face without a hole simply don't add the inner loop's points as above... You can explode the groups if desired once the faces are placed. Co-linear points that won't face, re-entrant loops and multiple holes etc might prove difficult ? If the points are not 'gridded' a similar principle applies but you might want to [re]consider how pairs of max/min points are found...

Advertisement