⚠️ Important | Libfredo 15.6b introduces important bugfixes for Fredo's Extensions Update
  • OpenURL and/or ShellExecute on Vista

    8
    0 Votes
    8 Posts
    1k Views
    Al HartA
    I'll have to look at my other Vista machines and see if they have open as a default. Perhaps a Photo program I downloaded changed the settings. (Or I have read that the setting may depend on your default Internet Browser) In Googleing around I see where others are having similar problems with Shell Execute in Vista. I need a solution which will work for lots of users everywhere, with lots of different Windows settings. What I did was to create a function to call UI.openURL, and then if it fails use ShellExecute with the NULL verb. This seems to work. (I'm not sure why I call openURL first - just to be friendly to the SketchUp Ruby API I guess) def launch_file(sfile) trace("Launch; %s", sfile) # Try SketchUp call first if (UI.openURL(sfile)) return end#if # try shell_execute if openURL fails shell_execute(sfile) require 'Win32API' shell = Win32API.new("shell32","ShellExecute", ['L','P','P','P','P','L'], 'L' ) #shell.call(handle, verb, file, params, folder, showCmd) iret = shell.call(0, 0, sfile, 0, 0, 1) if (iret == 42) return true end#if do_error("Cannot Open file; '%s' - return value; %s", sfile, iret) return(false) end#def
  • Ruby equivalent for edit/delete guides?

    3
    0 Votes
    3 Posts
    167 Views
    TIGT
    I've made various - search for 'ConsDeleteContext.rb' as one set for a context-menu right-click that differentiate between points and lines and all or just in active context etc... 'Guides' are often referred to as 'Construction' Lines/Points... their 'old name'... Search for those too...
  • Frustrated with rubies

    47
    0 Votes
    47 Posts
    5k Views
    R
    @baz said: @unknownuser said: Have you looked into Organizer? Thanks Rick, tho it seems a bit complicated for my poor brain. I can see myself getting in lots of trouble trying to organise subfolders, especially considering the apparent dependency of various rubies on each other. baz Two things: Organizer can do a simple test and notify you if you move any required files, letting you know you need to put them back in the Plugins folder. Also, creating a backup of your Plugins folder prior to using Organizer can save you some headaches. I do offer support for all my scripts, so if you have questions, just ask
  • Catching Console errors upon crash

    6
    0 Votes
    6 Posts
    285 Views
    thomthomT
    It's odd that it happens on the second File->New as in the first one, nothing is done. And yes, I do have quite a few observers and references. Though, I thought I was resetting everything onNewModel. I think I'll have to release a developers alpha, see if anyone can spot the culprit in my code. What I'm building is a plugin that allows cutout components to also cut through an opposite faced face. It does taht by creating a new invisible cutout. That's the simple stuff. The complicated stuff is making sure the extra cutout syncs with move,rotate,edits etc. That required allot more work than expected. Especially since I ran into so many bugs in the SU Ruby API requiring workaround upon workaround.
  • DefinitionObserver doesn't trigger

    16
    0 Votes
    16 Posts
    2k 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
    621 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
    1k Views
    pilouP
    Cool news Here the link [image: Wi5Y_bubble1.jpg]
  • Moving children parallel to parent components

    6
    0 Votes
    6 Posts
    397 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
    212 Views
    thomthomT
    The onContentsModified event is broken...
  • Removing observers

    4
    0 Votes
    4 Posts
    224 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
    1k 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
    359 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
    213 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
    236 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
    599 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
    684 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
    218 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
    633 Views
    pilouP
    Oh! Deception So translator must be very brief

Advertisement