πŸ”Œ Smart Spline | Fluid way to handle splines for furniture design and complex structures. Download
  • Retrieving bounding box corners Point3d

    6
    0 Votes
    6 Posts
    569 Views
    F
    @thomthom said: The BoundingBox object you get when you query the instance will always be oriented to world space. To get the bounding box as drawn in the UI you need to get the bounds of the definition - fetch all the points from its corners and transform them using the current edit_transform and the selected instance transform. That extension I linked to does all that. Ah! Thanks for the explaination ThomThom! I didn't realise that's what happened with instances' bounding boxes...very confusing for a novice! I did take the time to check out your extension and was able to understand what you're doing and apply that to my own code... thanks again sir!
  • Distance between two points / optimization

    14
    0 Votes
    14 Posts
    2k Views
    thomthomT
    @jolran said: As a continuation of Thomthoms advice. Should you ever want to create a C-extension easily for distance between Points the code is already written and available https://bitbucket.org/thomthom/sketchup-ruby-c-extension/src/e2fe0f2e43e43ebae568535b6d7a98e160b4624c/src/Example%20-%20Basics/SXBasics.c?at=default Note: That example is OLD! You can refer to it for how I resolve the distance calculation, but had I done that today I would have done it in C++ using Visual Studio and Xcode: https://github.com/SketchUp/ruby-c-extension-examples
  • SU2015 gives NoMethodError for Length class #abs method

    6
    0 Votes
    6 Posts
    570 Views
    tt_suT
    @archidave said: but in SU 2015; > 2.m.abs gives the NoMethodError This is pretty bad (it has broken my plugin for SU 2015) and means I now need to go hunting through the code for all occurrences of <Length>.abs replacing them with <Length>.to_f.abs and building-in extra validation where the class is not intrinsically known, just in case there could be a Length instead of a Float. The Length class used to be a subclass of Float. However this isn't really possible in Ruby, but from the Ruby C API this was hacked together a way to do so. When we added 64bit support in SU2015 this broke because the data structures where different. So we had to re-implement Length by forwarding the methods to Float. Initially this used the Ruby Standard Library, but due to another bug in Ruby where the StdLib would not always load if there was unicode characters in the user's username the StdLib would fail and the Length class would not properly initialize. There was also a bug in SU at some point where the StdLib would fail to load if the user started SketchUp by double clicking an SKP file. We later corrected the new Length implementation to not use StdLib so it would not fail if the StdLib failed to load. And we also fixed the bug regarding starting SU via SKP files. But those fixes should be in SU2015M2 - so I don't understand why you'd experience such problems. I am not able to reproduce your error. Can you try without any extensions enabled - just so we can eliminate that possibility?
  • Sketchup 8 faster than sketchup 13?

    29
    0 Votes
    29 Posts
    5k Views
    R
    @unknownuser said: There is no "external" ruby pipeline. Phew, I was worried for a moment.
  • Ruby Group Swap

    12
    0 Votes
    12 Posts
    2k Views
    S
    If anyone is interested, I finally solved my imported group's origin problem fairly simply with this... ga = entities.grep(Sketchup::Group) ga.each { |e| n=e.name; e.model.entities.add_group(e); e.parent.instances[0].name=n} Basically it just takes all the groups after import, adds them into a new group and names the new group the same name. This resets the origin, and allows the swap code to work properly.
  • 3d text box through Sketchup.send_action(21023)

    3
    0 Votes
    3 Posts
    404 Views
    G
    @driven said: well, they have always said not to rely on them... but this works on my mac, but isn't in the list... Sketchup.send_action "select3dTextTool;" john it works also in windows 7 it was not documented thank you
  • Escaping out of editing a component

    4
    0 Votes
    4 Posts
    423 Views
    tt_suT
    Note that if only close the currently open instance. If you are deeply nested you need to loop until you are back in the root - (if that's what you desire). And before SU2014 the method was bugged and could mess up geometry if the close was undone. (The method actually creates an undo item)
  • How to judge whether a 3D point is visible or not

    6
    0 Votes
    6 Posts
    498 Views
    lbsswuL
    @sdmitch said: @lbsswu said: Hi everyone, Suppose I have opened the Sketchup software, I want to know whether a 3D point is visible or not in current view. For example, the 3D point may locate on the back of a person, thus we can't see it when the person facing to us. This should be done by Sketchup ruby code.Could anyone help me? I placed a construction point, the little black dot just below the horizon, and "Nancy" in the model. I then used the following code to test if the point was visible. mod = Sketchup.active_model > ent = mod.active_entities > sel = mod.selection > vue = mod.active_view > eye = vue.camera.eye > cp = ent.grep(Sketchup;;ConstructionPoint)[0] > pt = cp.position > vec = pt.vector_to(eye) > hit = mod.raytest([pt,vec]) > if hit > puts "pt is not visible" > else > puts "pt is visible" > end > Hi, sdmitch. Thank you very much. It works!
  • How to get the projected coordinate of a 3D point?

    5
    0 Votes
    5 Posts
    488 Views
    lbsswuL
    @tig said: view.screen_coords returns the point in the Model as X,Y coords - screen value. But you must ensure that the exported image used the same size as the window, otherwise there is no direct relationship between the point and the image's pixels... Got it! Thanks for your help!
  • Component axis problem

    18
    0 Votes
    18 Posts
    2k Views
    PixeroP
    I just thought I'd post this snippet in case it will help someone with a similar problem. def set_origin(compdef, compinst, pt0, pt1, pt3) tr1 = compinst.transformation rotvector = pt1-pt0 originvector = Geom;;Vector3d.new(1,0,0) org = pt3 angle = rotvector.angle_between originvector if angle < 90.degrees angle2 = -angle elsif angle > 90.degrees angle2 = angle end #if if angle == Math;;PI/2 angle2 = -90.degrees end if pt0.y > pt1.y && angle == Math;;PI/2 #Check if it's drawn at 90 degrees but in opposite direction angle2 = 90.degrees end compinst.transform! tr1.inverse tr2 = Geom;;Transformation.rotation(org, Z_AXIS, angle2) tr3 = Geom;;Transformation.new(org) compdef.entities.transform_entities(tr2, compdef.entities.to_a) compdef.entities.transform_entities(tr3.inverse, compdef.entities.to_a) compinst.transformation = compinst.transformation * tr3 compinst.transform! tr1 * tr2.inverse compdef.invalidate_bounds end #def
  • Replace component and set dynamic attributes?

    3
    0 Votes
    3 Posts
    849 Views
    G
    There are a few things that I had to deal with. I found it easier to put the dynamic attributes in a nested group as opposed to the outside group. This way you can rotate the entire door and jamb to fit it into the door opening and you don't have to keep changing the dynamic rotz. These doors can be copied, flipped and or rotated while preserving the desired angles of rotation. 4 doors.skp [image: COJv_4doors.PNG]
  • Key combinations

    5
    0 Votes
    5 Posts
    423 Views
    S
    @cadfather said: Thanks Guys, i'll have a look at Jan's table. can't believe it's so messy working with the keyboard. Yes, messy - but the mess originates in the OS, not SketchUp!
  • Fixing the Undo-stack (and others!)

    13
    0 Votes
    13 Posts
    1k Views
    J
    Got it, thanks Thom. I realised that I could have optimised it to recurse fewer times, but at some point with increasingly complex surfaces it will run into a stack overflow again. I had a little read elsewhere and found that there are workarounds (ulimit and altering the interpreter, sounds like a bit of a dodgy hack to me..), but eventually it's always got an upper limit. I very much like the idea of a Geometry walker traversing geometry, and ended up using a solution very similar to yours. Cheers! -CJ
  • OnKey_Downer!

    7
    0 Votes
    7 Posts
    657 Views
    CadFatherC
    i guess one workaround is to make a webdialog tiny enough not to intrude but able to 'catch' the keystrokes repeating...
  • Plugins Locations

    19
    0 Votes
    19 Posts
    2k Views
    Dan RathbunD
    .. and the nested module definition has no end closure.
  • Odd behavior of Draw

    17
    0 Votes
    17 Posts
    993 Views
    S
    @sdmitch said: Well I have tried all the suggested combinations and nothing seems to solve the "problem". Perhaps it is just my 7 year old laptop!!!!! Since these draw operations go directly to OpenGL, this explanation seems quite possible! There could be a bug in either your laptop's OpenGL drivers or an incompatibility in how SketchUp uses OpenGL.
  • Save thumbnails components

    2
    0 Votes
    2 Posts
    315 Views
    thomthomT
    http://www.sketchup.com/intl/en/developer/docs/ourdoc/componentdefinition#save_thumbnail
  • I have a question, about Model.import of sketchup API

    8
    0 Votes
    8 Posts
    785 Views
    Y
    @thomthom said: Do you get any errors? What format are you trying to import? .skp? I import a dae file to sketchup by api. but i need to click to position. is there a way to position it automatically?
  • SVG file Import (importing)

    20
    0 Votes
    20 Posts
    25k Views
    M
    @catalyst said: Hi danbig, You need to open your SVG file with inkscape. Go into Inskcape's preferences Under "Tools" select "SVG output" Under "Path data" - uncheck "Allow relative coordinates" Right below that - check "Force repeat commands" Be sure to save the new preferences by hitting the little triangle-in-a-box button in the top right corner of the preferences window. Once you do that, you can save Plain SVG files and import them successfully into Sketchup for further manipulation. I HAVE NOT BEEN ABLE TO SUCCESSFULLY IMPORT A PLAIN SVG FILE INTO SKETCHUP MAKE 2014 USING THIS METHOD. IS THERE ANY ADDITIONAL STEPS I NEED? GOAL IS TO INPUT A SVG FILE (THE WORDS "PEACE" "ON" AND 'EARTH" WHICH HAVE BEEN TRACED AND WELDED TOGETHER IN TO THREE INDIVIDUAL SVGS.) OF A WELDED WORD INTO SKETCHUP AND EXTRUDE IT TO MAKE A 3D 'BOX' ABOUT 2" THICK.
  • Change of style in undo stack?

    7
    0 Votes
    7 Posts
    666 Views
    Dan RathbunD
    @xorunison said: This is a smaller but somewhat annoying problem. The situation is this: I have a few Plug-Ins which allow the user to switch between different working modes. To do so each Plug-In with its own button does 2 things: 1: Change the current style (between my predefined styles Construction and Display) 2: Turn on/off certain layers This sounds like a perfect job for scenepages. One for display, one for work. Each has their own styles set, and each has their own set of off layers, and on layers. The button(s) could simply switch between the pages (if you did not want to waste the space for page tabs.) The scenes could be preset into a template model.

Advertisement