🫛 Lightbeans Update | Metallic and Roughness auto-applied in SketchUp 2025+ Download
  • Ruby performance on a Mac... am I just late to the party?

    26
    0 Votes
    26 Posts
    3k Views
    T
    See my first post - I already reported.
  • Newbie: Drawing state diagrams with Ruby - would this work?

    16
    0 Votes
    16 Posts
    3k Views
    Dan RathbunD
    @pout said: Why don't you just send the data through JSON to a htmlpage and use that combined with existing chart creator? Like this one: http://www.anychart.com/products/anychart/overview/ Should be pretty simple. Are you in the correct topic, Pout? AnyChart does not produce diagrams, it produces charts. And yes it's a minimum of 500 dollars "simple". Jim had some success using GraphViz, which actually has two examples of state diagrams: finite state machine* LR(0) state graph
  • Optimize Challenge #1 - Find Curves (connected edges)

    3
    0 Votes
    3 Posts
    248 Views
    thomthomT
    Faster solution, using hashes for quick lookups: ` === Find Curves === Sorting: 0.306s (11%) Filter: 0.05s Method: TT_Find_Curves Found 4253 curves in 2.62s` Revision 2
  • Ruby Code Snippets

    26
    0 Votes
    26 Posts
    1k Views
    L
    Perhaps what makes problem is the word "snippet".
  • Keep WebDialog in front on XP/Vista?

    10
    0 Votes
    10 Posts
    402 Views
    J
    Wowsers, thanks for all the responses. Question answered!
  • Add_group( entity ) weirdness

    9
    0 Votes
    9 Posts
    463 Views
    K
    @unknownuser said: hmm im somewhat confuses here-why did the face appear to have been shifted to the origin of g1 - instead of preserving it's original position? I think that there is a problem somehow with the transformation of the objects. Following my instructions in the other post: http://forums.sketchucation.com/viewtopic.php?f=180&t=31443&p=276973&hilit=kwalkerman#p276860 the end result is that in the outliner, a group is added to Sketchup.active_model.entities. The transformation of the group is equal to the transformation of the original face in it's original group. Then, when you open the original group for editing, the face appears in its original location. So, there are two major problems: when passing entities into entities.add_group, entities MUST equal model.active_entities the entities passed in retain their original transformation, relative to the previous entities collection, with some strange behavior. -- Karen
  • Undocumented class: Sketchup::Console

    3
    0 Votes
    3 Posts
    680 Views
    thomthomT
    It was just a pseudo code of how the puts behave in SU.
  • Detect units using ruby

    3
    0 Votes
    3 Posts
    257 Views
    M
    @thomthom said: Look at model.options http://code.google.com/apis/sketchup/docs/ourdoc/model.html#options OptionsProvider http://code.google.com/apis/sketchup/docs/ourdoc/optionsprovider.html OptionsManager http://code.google.com/apis/sketchup/docs/ourdoc/optionsmanager.html Remember to use the keys to access the options as indexes vary from version to version. To print out all available options for a given version, use this on-liner: <span class="syntaxdefault"><br />Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">options</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">keys</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">key</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> p key</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">options</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">key</span><span class="syntaxkeyword">].</span><span class="syntaxdefault">each </span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">k</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> puts </span><span class="syntaxstring">"> #{k} - #{v}"</span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span> THANK YOU VERY MUCH. it worked
  • Help on scale

    7
    0 Votes
    7 Posts
    367 Views
    TIGT
    @shirazbj said: Instead of writing every 'mm' in code, I thought it's more easy to draw as it is and scale back at the end. That also cleared me from inserting a DWG file, need scale back to get the dimensions show in right number. Thanks. An imported DWG will use whatever units it has set in the import 'options' dialog opened from the main DWG import browser, So you can rely on that to always be correct.
  • Math module? Where is the information in API

    7
    0 Votes
    7 Posts
    1k Views
    GaieusG
    @unknownuser said: Now I get it! thanks- i had no idea sketchup used the old version So it seems this was the only thing that bothered you. Good.
  • Detect face on pushpull

    10
    0 Votes
    10 Posts
    529 Views
    B
    Thanks Didier! These examples are good for learning. Regards, Siegfried
  • Variable problem

    11
    0 Votes
    11 Posts
    347 Views
    chrisglasierC
    @tig said: I'm not clear about how a good or bad entry for 'value >>> v' might actually 'look' in your code... <span class="syntaxdefault">new_value </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[]<br /></span><span class="syntaxdefault">            value</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do</span><span class="syntaxkeyword">|</span><span class="syntaxdefault"> v </span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">                if </span><span class="syntaxkeyword">!</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(Array)<br /></span><span class="syntaxdefault">                    v </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">],</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">                end<br />                v </span><span class="syntaxkeyword"><<</span><span class="syntaxdefault"> time </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> a<br />                a </span><span class="syntaxkeyword">+=</span><span class="syntaxdefault"> 1<br />                new_value </span><span class="syntaxkeyword"><<</span><span class="syntaxdefault"> v<br />            end<br />            keyframes</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">key</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> new_value</span> I did it like this in the end as both types of v have time added. Anyway it works which is good! Thanks again. The empty elements currently are needed to delay certain rotations - like a kick at the end of a run. I have a mechanism to modularise the animation. I want to leave that until later.
  • Export image by layer

    6
    0 Votes
    6 Posts
    344 Views
    Dan RathbunD
    BTW... the script should make a temp hash with layer names as the keys and visibility as the values. This should store the visible state of layers before rendering starts. .. do your thing ... .. then restore the visibilty state for all layers at the end.
  • Loop returns non-planar vertices?

    14
    0 Votes
    14 Posts
    737 Views
    Chris FullmerC
    Hi Scott, the question you have is a bit different than the one being discussed here. You might just start a new topic asking the whole group your question - which seems to be specifically "How do I make a wing surface from a list of 3d points" or something along those lines. Your question is a bit burried here in this topic, and you will probably get more eyes seeing your dilema if you just made your own topic. Do you have any programming experience? Not that it matters, you can always learn, I just thought I'd ask.
  • New Material Methods! (With bugs :( )

    25
    0 Votes
    25 Posts
    4k Views
    Dan RathbunD
    @unknownuser said: I'm thinking I could make a debugging monitoring class that loads first and monitors the base Ruby and SketchUp classes and modules for extensions. I also.. have a couple of methods proto'd out. I was thinking they need to be in a common namespace. How about: SKX::Dev ?? @jim said: tattletale. Yep.. I didn't want to "publish" the method publically, as there can be only one "monitor", or they'd be fighting each other to override it. @unknownuser said: "Monitor" because one couldn't just get the load path for any method. Need to hook into at the beginning before anything else. @jim said: I'm not sure you need to "monitor", but an as-needed check of the files in plugins would be sufficient. Much more efficient to 'hook in at the beginning' that way you can detect when a rbs file does an override. Ruby can tell you the file and line number without having to parse actual files. (Even Kernel.set_trace_function can do it.) One issue however is that "the method" will report ALL methods created once monitoring begins, so definately some filtering will be needed to ignore methods added to custom classes and modules. Otherwise you'll flood $stdout or the logging object (file, hash etc.)
  • Ordering 3dpoints ?

    36
    0 Votes
    36 Posts
    4k Views
    Didier BurD
    Yep, on any plane Here is the rough test code: make a selection of n coplanar guide points on any face, type 'graham' in the console and it draws the convex hull correctly. As you will see, code is yours almost entirely. It's likely there is something wrong in my classes or methods. def graham() pts=[] # Selection of coplanar guide points to array pts Sketchup.active_model.selection.each { |cp| pts.push(cp.position) } # Transform points to horizontal plane t1=Geom;;Transformation.new(pts[0],pts[0].vector_to(pts[1]),pts[0].vector_to(pts[2])) horizPoints = pts.map { |pt| pt.transform(t1.inverse) } # Sort by X and Y points = sort_points_by_x_y(horizPoints) # Graham l_upper = [ points[0], points[1] ] 2.upto(points.length - 1) do |i| l_upper << points[i] while l_upper.length > 2 && !right_turn?(l_upper.last(3)) l_upper.delete_at(-2) end end l_lower = [ points[-1], points[-2] ] (points.length - 3).downto(0) do |i| l_lower << points[i] while l_lower.length > 2 && !right_turn?(l_lower.last(3)) l_lower.delete_at(-2) end end l_lower.delete_at(0) l_lower.delete_at(-1) # Reset convex hull to its original transform hull=(l_upper + l_lower).map! { |pt| pt.transform(t1) } # draw hull Sketchup.active_model.entities.add_line(hull) Sketchup.active_model.entities.add_line(hull.last,hull.first) end def right_turn?(points) p, q, r = points return (determinant_3x3([1,p.x,p.y,1,q.x,q.y,1,r.x,r.y]) < 0.0) end def determinant_3x3(array) a,b,c,d,e,f,g,h,i = array return ((a*e*i) - (a*f*h) + (b*f*g) - (b*d*i) + (c*d*h) - (c*e*g)) end def sort_points_by_x_y(points) return points.sort! { |a,b| a.x==b.x ? a.y <=> b.y ; a.x <=> b.x } end
  • Group from Selected Entities

    7
    0 Votes
    7 Posts
    382 Views
    thomthomT
    cheers
  • Call for attention - context handlers and validation procs

    24
    0 Votes
    24 Posts
    33k Views
    Dan RathbunD
    not really... the context menu is "built on the fly"... The menu needs to know what items and submenus it will need to display. It cannot know what they will be until Sketchup processes all the context_menu_handlers.
  • Complex numbers and other libraries

    5
    0 Votes
    5 Posts
    455 Views
    Dan RathbunD
    It's in the Standard (ie Extended,) Libraries for 1.8.6 (not in the Core.) In Files lib/complex.rb lib/mathn.rb You need a full ruby installation. You need to add paths to the $LOAD_PATH array. I have a topic on this and a utility script called !loadpaths.rb Addenda: -See these posts: for the !loadpaths.rb script: [code] Ruby LOAD PATHs script for (Win32) and for info: same topic near the bottom.. for the complete Ruby libraries (with precompiled .so files,) direct from ftp.ruby-lang.org: to match SU 8.0M0 & M1: ruby 1.8.6-p287* for Ruby 1.8.6-p369 (latest as of this posting.) requires you replace DLL in Sketchup program folder if on Windows.* See instructions: Ruby Interpreter DLLs (Win32) Also see: Ruby Newbie's Guide to Getting Started
  • Online Editing on Google Project Hosting

    6
    0 Votes
    6 Posts
    784 Views
    thomthomT
    That's neat!

Advertisement