ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info
  • Select faces with back color

    2
    0 Votes
    2 Posts
    99 Views
    TIGT
    How is such a tool going to establish whether a face is 'inside' or 'outside' a form ? It'd be possible with a 'solid', but with loose faces who is to say what is the right way round ? There are several 'face reversing' tools around - open the 'Plugins Index' page and use your browser's search for 'reverse' or 'flip' etc... Find one that suits you... I think Didier's tool reverses all 'backwards' active faces that are looking at the current camera, which might do what you want best...
  • Should we be autoloading?

    4
    0 Votes
    4 Posts
    212 Views
    thomthomT
    @dan rathbun said: I remember trying this a long time ago.. but did not get it working. Maybe I used it wrong? I do have it working for a large project I'm working on. I set up some of the mixing modules and base classes to autoload. <span class="syntaxdefault"><br />&nbsp;&nbsp;</span><span class="syntaxcomment">#&nbsp;Ensure&nbsp;abstract&nbsp;classes&nbsp;are&nbsp;loaded&nbsp;and&nbsp;found&nbsp;when&nbsp;needed.<br />&nbsp;&nbsp;</span><span class="syntaxdefault">autoload</span><span class="syntaxkeyword">(&nbsp;;</span><span class="syntaxdefault">Observable</span><span class="syntaxkeyword">,&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(&nbsp;</span><span class="syntaxdefault">PATH</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'observable.rb'&nbsp;</span><span class="syntaxkeyword">)&nbsp;)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">autoload</span><span class="syntaxkeyword">(&nbsp;;</span><span class="syntaxdefault">BezierEntity</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(&nbsp;</span><span class="syntaxdefault">PATH</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'bezier_entity.rb'&nbsp;</span><span class="syntaxkeyword">)&nbsp;)<br />&nbsp;&nbsp;</span><span class="syntaxdefault">autoload</span><span class="syntaxkeyword">(&nbsp;;</span><span class="syntaxdefault">BezierPatch</span><span class="syntaxkeyword">,&nbsp;&nbsp;</span><span class="syntaxdefault">File</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">join</span><span class="syntaxkeyword">(&nbsp;</span><span class="syntaxdefault">PATH</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'bezier_patch.rb'&nbsp;</span><span class="syntaxkeyword">)&nbsp;)<br />&nbsp;</span><span class="syntaxdefault"></span>
  • Wish List - WebDialog communication model

    16
    0 Votes
    16 Posts
    2k Views
    chrisglasierC
    @caseychamberlain said: @richmorin said: As an example of quirky behavior, execute_script() imposes a fairly small (and undocumented) limit on the size of the executed code string. So, although the call can be used to transfer data (eg, as JSON), any significant amount of data will require multiple calls. What is the limit? I was relying on this to push (sizeable) model data into a silverlight plugin in the WebDialog. I had assumed I needed to chunk, but it would really help to know what that limit is, so I can chunk to that size. Thanks! This is the overriding problem: https://developers.google.com/sketchup/docs/ourdoc/webdialog#add_action_callback
  • Intersect two Component Instances

    7
    0 Votes
    7 Posts
    190 Views
    C
    Thank you. That solved the last Problem with the intersect. you guys have been very helpful@TIG,sdmitch Thanks a thousand
  • Auto naming and replacing materials?

    2
    0 Votes
    2 Posts
    170 Views
    TIGT
    The method texturepath = material.texture.filename returns the path/name of the material's texture's image-file. Use something like imagename = nil; imagename = File.basename(material.texture.filename) if material.texture... To change a material's texture you use a new path material.texture="C:/.../mytetxure.png". To get a material's name use matname = material.name. To rename a material use material.name="newname" OR material.name=imagename if imagename - note that the renaming method is unavailable in older versions of Sketchup...
  • Question-How to link model components and generate on edges

    5
    0 Votes
    5 Posts
    149 Views
    pingpinkP
    Hi , I tried to adapt from the comment in my code , but it doesn't work yet for clicking lines then load external reference component (0,0,0) from component's file. I'm still finding how to link between the functions that the model can stretch or scales the component to the length as the edges. Here's my attached ruby , not sure what's error in the code as I'm a new to ruby ! Any suggestion , I would be appreciate!. Thanks
  • Nested Attribute Dictionaries

    18
    0 Votes
    18 Posts
    2k Views
    thomthomT
    @dan rathbun said: @thomthom said: But when I have inspected .skp files I saw no duplicate of any attributes blocks - and the attributes data blocks where in UTF-16. I wonder if we could use Zlib to compress data before writing it to dictionaries ?? I'd love to be able to use zipping in my projects. Think I looked at it some time ago and people had tried to find ways to make it work properyl within SketchUp ruby with mixed results..
  • V3DTools

    3
    0 Votes
    3 Posts
    148 Views
    T
    Thanks, Thomthom . I'll follow your advice.
  • I must be dumb

    3
    0 Votes
    3 Posts
    144 Views
    thomthomT
    @thierry_st_malo said: It works for the red and the green axis, but not for the blue one. Ridiculously, I can't see why. What you explain more what "doesn't work"? Exactly what happens, and what did you expect? Any errors?
  • Model Operation blockform methods.

    24
    0 Votes
    24 Posts
    2k Views
    Dan RathbunD
    Putting this on the back burner until I get some feedback.
  • How to count duplicates hash itens in Ruby

    6
    0 Votes
    6 Posts
    2k Views
    Dan RathbunD
    # EXAMPLE - untested module Romuloigor module Product @@product = { ;count => {}, ;list => [ { "product" => 1, "x" => 200, "y" => 100, "z" => 18}, { "product" => 1, "x" => 200, "y" => 100, "z" => 18}, { "product" => 1, "x" => 300, "y" => 100, "z" => 18}, { "product" => 2, "x" => 300, "y" => 100, "z" => 18}, { "product" => 2, "x" => 100, "y" => 100, "z" => 18}, { "product" => 2, "x" => 100, "y" => 100, "z" => 18}, { "product" => 3, "x" => 100, "y" => 100, "z" => 18} ] } class << self def add(product) # @@product[;list] << product # end # add() def recount() # @@product[;count]= @@product[;list].inject(Hash.new(0)) {|h, e| h[e] += 1; h} # end # recount() def count(product) # total = @@product[;count][product] return ( total ? total ; 0 ) # end # count() def list() # list = "" @@product_list[;count].each {|k,v| list << "#{k.inspect} count = #{v}\n" } return list # end # list() end # proxy class end # module Product end # module Romuloigor
  • New tool's "initialize" starts bf prev tool's "deactivate"

    3
    0 Votes
    3 Posts
    153 Views
    S
    @thomthom said: Do you stuff in the Tool's activate callback. That should trigger after deactivate. Initialize triggers when you create the tool instance - not when it's activated. You can reuse a tool instance - where activate is the one that will trigger when your tool activates. (How do you activate the tools btw? model.select_tool or model.tools.push_tool ?) Hi Thomthom. Man, such a stupid error of me. I did use the initialize method instead of the activate method. Btw, I use select_tool ToolName.new Thanks for the answer, funny I didn't saw the error myself
  • Making changes visible

    7
    0 Votes
    7 Posts
    129 Views
    Dan RathbunD
    You have to save the view's camera properties to a new Sketchup::Camera instance, then restore it. view = Sketchup.active_model.active_view vcam = view.camera props = [vcam.eye,vcam.target,vcam.up,vcam.perspective?] cam = Sketchup;;Camera.new(*props) view.zoom_extents view.camera= cam
  • Creating rbz files on Win7

    11
    0 Votes
    11 Posts
    1k Views
    K
    Mistry with win7 zip files solved!!! Some how my folder option to hide known extensions was selected and this created the problem making a ziped file a ziped folder. I know I had nothing to do with that change as it took me a long time to find Folder Options after I started looking for them. Keith
  • Determine if face is covered by shadow

    2
    0 Votes
    2 Posts
    89 Views
    TIGT
    I wrote this last year http://forums.sketchucation.com/viewtopic.php?p=371243#p371243 'ShadowProjector' If calculates shadows cast on faces and % area etc [image: lCSs_ShadowProjector_Example.PNG]
  • [Info] Free Ruby Book: &quot;I Love Ruby&quot;

    4
    0 Votes
    4 Posts
    360 Views
    daleD
    If that's Ruby, then I love Ruby too! Thanks Dan. I perused the book, and as someone who hasn't a clue it looked to me like it is well written, and should be easy for the beginner to get a grasp.
  • [Code] (Iterating) Finding Definitions

    4
    0 Votes
    4 Posts
    615 Views
    Dan RathbunD
    Yes it should, and now is. Updated the code. (I was uniq!'ing in the calling methods, and at the last moment replaced several in those methods, by adding the .uniq! to the return statement. I did think about which uniq to use, for a split-second, and didn't want to create a new array object, so I added ! to the end. That's what happens when ya' rush.) Thanx for the check TIG!
  • Developing a plugin/macro for orbiting based on input

    6
    0 Votes
    6 Posts
    146 Views
    Dan RathbunD
    Did you read the "linetool.rb" file in the "Examples" directory ??
  • Question about order in selection

    20
    0 Votes
    20 Posts
    2k Views
    Dan RathbunD
    Here's a start. Rename the module or cut & paste the proxy class block into one of your modules. module Sort class << self def sort_faces_by_vertex() @sel = Sketchup.active_model.selection.to_a @sel.delete_if {|e| not e.is_a?(Sketchup;;Face) } @sel.sort! {|a,b| ([a.vertices.min{|v1,v2| v1.position.x <=> v2.position.x }.position.x, a.vertices.min{|v1,v2| v1.position.y <=> v2.position.y }.position.y] <=> [b.vertices.min{|v1,v2| v1.position.x <=> v2.position.x }.position.x, b.vertices.min{|v1,v2| v1.position.y <=> v2.position.y }.position.y] ) } end def assign_room_nums_to_faces() sbv = sort_faces_by_vertex() sbv.each_with_index {|face,i| dict = face.attribute_dictionary('Properties',true) dict['name']= "Room #{(i+1).to_s}" } end end # proxy class end # module Sort
  • Creating components from existing objects

    12
    0 Votes
    12 Posts
    292 Views
    A
    @sdmitch said: There is always a way but at what cost. The code would no doubt expand from 3 lines to 3000. I'm on a framerate sensitive medium, so anything I can do to improve frame rate would be useful. It would be great if you have any tips on how to set the LOD for the miniature.

Advertisement