⚠️ Important | Please update Libfredo to v15.1a for bugfixes associated to SketchUp 2025 and below Download
  • Question about developing plugin to automate functions

    5
    0 Votes
    5 Posts
    84 Views
    Dan RathbunD
    It sounds more like you want to create a tool. See the UI::Tool class in the API. Then read through and understand the "linetool.rb" script in the "Plugins/Examples" directory. Keep in mind that scripting within a GUI application's process, is event-driven programming, not a linear sequential exercise. You write a class with callback methods, that the application calls, in response to UI input, mouse movements, key presses, etc., from the user.
  • [Js] Getting and verifying a class attribute setting

    10
    0 Votes
    10 Posts
    87 Views
    thomthomT
    @dan rathbun said: Can I use a selector path like in CSS? Exactly! @dan rathbun said: OK so what does it return if nothing found ?? null ? http://api.jquery.com/jQuery/ @unknownuser said: If no elements match the provided selector, the new jQuery object is "empty"; that is, it contains no elements and has .length property of 0. <span class="syntaxdefault"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if&nbsp;(&nbsp;$(</span><span class="syntaxstring">'body#someid'</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">length&nbsp;</span><span class="syntaxkeyword">>&nbsp;</span><span class="syntaxdefault">0&nbsp;</span><span class="syntaxkeyword">)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;</span><span class="syntaxdefault"></span>
  • [Js] How to specify multi-line String literals ??

    5
    0 Votes
    5 Posts
    72 Views
    Dan RathbunD
    I thot maybe a <![CDATA[ block, but the editor lexer does not indicate it will work.
  • Shadow Time Mismatch?

    12
    0 Votes
    12 Posts
    360 Views
    thomthomT
    <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 /><br />modeltime </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">shadow_info</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'ShadowTime'</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">unless modeltime</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">utc</span><span class="syntaxkeyword">?<br /></span><span class="syntaxdefault">  time </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">shadow_info</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'ShadowTime'</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">getutc<br />  tz_offset </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">shadow_info</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'TZOffset'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 60 </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 60&nbsp;</span><span class="syntaxkeyword">/&nbsp;-</span><span class="syntaxdefault">1<br />  modeltime </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Time</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">at</span><span class="syntaxkeyword">(</span><span class="syntaxdefault"> time</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_i </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> tz_offset </span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end<br /></span>
  • SCF Forum Syntax Highlighter (v 1.5)

    21
    0 Votes
    21 Posts
    4k Views
    Dan RathbunD
    @driven said: @Jim, how about changing the topic title to just SFC_Forum_SyntaxHighlighter and include other browser versions in your top post. A one-stop shop ?
  • Plugin installation recomendations

    8
    0 Votes
    8 Posts
    180 Views
    K
    Thanks I will make use of that. Keith
  • Get Name of Image

    2
    0 Votes
    2 Posts
    63 Views
    A
    Have you tried https://developers.google.com/sketchup/docs/ourdoc/image#path ?
  • [Help] Create &quot;Check for Update&quot; event

    2
    0 Votes
    2 Posts
    88 Views
    Dan RathbunD
    Everyone wants this functionality. Some work has been done. ExtendSketchUp has this goal. Fredo6 created a web-based update checking feature. (Do a search.) Others have done it with a UI::WebDialog You will likely need to use the functionality in the SketchupExtension class for installed versioning. Unfortunately.. the community has not yet agreed upon a file manifest format to track installed file locations. (So an uninstaller can remove them.)
  • [Code] !autoload.rb loads &quot;!_autoload&quot; folders - v3.0.0

    7
    0 Votes
    7 Posts
    2k Views
    Dan RathbunD
    @unknownuser said: Is the “.rb” extension really necessary when using for example “require (“sketchup.rb”)? The answer is not very simple. You should read the method dictionary for Kernel.require(), Kernel.load(), Sketchup.require() and Sketchup.load(). These methods act differently: depending on the arguments (absolute or relative paths) depending upon the Ruby version depending whether a file extension is given The require() methods push successful paths into the $LOADED_FEATURES array, but may not add the actual extension of the file that was loaded. (This could cause confusion later.) The overridden methods in the Sketchup module do not act exactly the same as the global Kernel methods. (return values and filenames in Exception messages.) We almost need a complicated decision tree with all the permutations... to decide when to use a extension and when not to. It is recommended NOT to use a file extension with the Sketchup module overrides. (This also helps in development, as the same loader script can load both rb and rbs files, after scrambling.) Also be aware that the SketchupExtension class uses these overides. This is really an issue for it own topic thread (and perhaps there already is one?)
  • Info about add_note method

    18
    0 Votes
    18 Posts
    533 Views
    Dan RathbunD
    The native MoveTool can move the note.
  • Color interpolation across a face

    14
    0 Votes
    14 Posts
    1k Views
    A
    Thanks everyone for the replies. @Dan using the draw in a tool's view method looks like a plausible option. Let me dig into it and get back. Thanks again.
  • Help with Animation

    23
    0 Votes
    23 Posts
    3k Views
    Dan RathbunD
    @dan rathbun said: I'll see if I can cobble up a better example, perhaps I'll post it in a new [ Code ] topic (so it can be indexed with the Code Snippet indexer.) Done! [Code] AnimateSelection Example v1.0.0 .
  • OnSaveModel Observer

    3
    0 Votes
    3 Posts
    72 Views
    A
    Thanks! That should work for most cases. (But it still would be nice to have a second argument with the file path, since the model.path is not necessarily linked with the location where the file (a copy) was saved.)
  • OnKeyDown repeat parameter problem

    21
    0 Votes
    21 Posts
    4k Views
    fredo6F
    To simulate typematics, it is preferable to use the animation API. Tricky, but works fine in the end (I used it in ThruPaint) Fredo
  • Name of component

    4
    0 Votes
    4 Posts
    253 Views
    thomthomT
    Note that there is component instance name and component name. Component instance name is the same as a group's name.
  • Entities Edge color apply

    7
    0 Votes
    7 Posts
    208 Views
    thomthomT
    @tig said: mat=e2.material > if mat > cname=mat.name ### OR .display_name ? > else ### NO MATERIAL > cname="<Default>" > end#if test for the existence of the material and then get it's name if it exists, if the material is ' nil'then there's no ' name' to get. #display_name should only be used to output the name of a material to the UI - not as an id. http://www.thomthom.net/thoughts/2012/03/the-secrets-of-sketchups-materials/#speaking-of-names8230
  • How to make a model follow with movetool

    3
    0 Votes
    3 Posts
    293 Views
    A
    @tig said: Let's assume model=Sketchup.active_model If you simply want to add an external SKP as a component use: defn = model.definitions.load(path_to_skp) where perhaps path_to_skp="C:/users/alecchyi/desktop/MyComponent.skp" This will ensure it's now loaded into the model. Then name=defn.name - just in case it's been given a different name from what you expected ? Then model.place_component(defn, repeat) If repeat=false then you get to add one instance of that component - just like the native tool, with 'move' built-in etc. If repeat=true then you get to place multiple instances... one after the other... If you want to place a component that's already loaded 'by name', then set name="MyComponentsName", then defn=model.definitions[name] before running the 'place_component' code... You can select an instance in code then run the Move tool on it, but that isn't what you asked?? i got it,谢谢
  • Exporting layers to Photoshop

    7
    0 Votes
    7 Posts
    418 Views
    I
    @brett mcallister said: I recommend you go read this PDF to get you started otherwise you will be tearing your hair out and nothing will make sense. http://www.autosketchup.com/ OK, I will. Thanks!
  • Keeping track of a face

    8
    0 Votes
    8 Posts
    225 Views
    TIGT
    When you pushpull a face the number of extra faces made in the model can be found - as discussed. Since the 'new face' [which from a user perspective is the 'original face' relocated along the face's normal] has the same normal as the original [which you can already have remembered in a reference] and none of the other new faces share this normal. It gets messy unless your new geometry is being kept inside a group [even temporarily] because the pushpulled result might coincide with one or more preexisting faces that have the same [or reversed] normal as the original face and thereby several new faceS made could have matching normals but the preexisting ones now subsumed into the pushpulled form will be missed in any before/after ents comparisons. Therefore making the new geometry in a group is highly recommended... you can pushpull, get the new face by matching normals, then intersect the face with the model's entities and re-get all faces inside the group with matching normals. Thus what's in the group mimics what would have happened without any grouping BUT lets you collect all of the newly made faces, should any be split by [potential] merging with existing geometry...
  • Sketchup 7 setting opacity with ruby?

    3
    0 Votes
    3 Posts
    245 Views
    thomthomT
    For materials it's Material.alpha. If you are drawing polygons to the viewport using View.draw then you need Color.alpha. The Secrets of SketchUp’s Materials - There is a section there "Material.alpha vs Color.alpha"

Advertisement