🔌 Smart Spline | Fluid way to handle splines for furniture design and complex structures. Download
  • Plugin request for 3D Laser "Leica Disto S910 "

    10
    0 Votes
    10 Posts
    6k Views
    R
    Good afternoon, I have been working with a Leica Disto D510 Laser Trena for more than 7 years, carrying out bulk measurements. Do I need to know if there is any way to import Trena measurements straight to SketchUp, where I would already design these Angle and Tilt measurements? I currently use the Leica Transfer App to download measurements to an Excel spreadsheet, but I do not know how to import it into SketchUp. I read about the YUZU Plugin that does this work, but I can not find a download link anymore. If they can help thank you from the moment!
  • Sketchup 2018 Load Errors

    2
    0 Votes
    2 Posts
    1k Views
    TIGT
    This is a known issue, caused by an incorrect installation. Do a clean install of SketchUp. Ensure that its folder in the AppData path is deleted [path given in the error messages]. You may wish to temporarily move out personal collections like Materials, Components etc. I'd delete the whole Plugins folder and later on reinstall my Extensions from scratch. The fresh install of SketchUp that we are about to do will recreate missing folders etc with proper permissions set... Here's the only correct way to install a complex application like SketchUp from its installer exe file, very important in the recent versions of Windows... Do the clean uninstall of SketchUp as outlined above... Logged in as your normal user account. Find the SketchUp installer exe file - probably in your Downloads folder ? Select its icon. Right-click > Context-menu > "Run as administrator" Install it... Test it... If necessary move back your personal collections... There is no other good way to install it from its exe file. Do not do it whilst logged in as the separate administrator account. f you have admin rights on your normal user account it is NOT the same thing to double-click the exe icon to Run the installer - it must be done using the "Run as administrator" option, which is subtly different. An incorrect installation can result in many weird and unpredictable issues, from permission problems preventing some random things loading, to shortcuts failing to be remembered across sessions. A proper installation should avoid these problems...
  • [REQ] component reconciliation

    3
    0 Votes
    3 Posts
    1k Views
    G
    @solo said: I have a model imported from vectorworks, it has a gazillion of the same component but they are all individual components so editing one does not edit all, I need to somehow make them all the same component, is there a plugin already that does this? if all components are to be replaced by one unique component, you can use sketchup native tool: introduce the unique component you want to keep in the model, if it is not already select all the components you want to replace open the palette to show all the components in the model (clic on the house) right clic on the one you want to keep clic on "replace selected components by this one..." [image: 23Ul_2018-03-1710_56_41-Sanstitre-SketchUpPro2017.png] all selected components are replaced by the one you chose [image: NQPH_2018-03-1710_57_05-Sanstitre-SketchUpPro2017.png] it is not automatic, but visual check is sufficient and more accurate in some cases
  • Medeek Structural Plugin

    9
    0 Votes
    9 Posts
    2k Views
    medeekM
    It's not much to look at but this is the beginning of the Medeek Structural Plugin: [image: ozJy_Structural-test1.jpg] The red panels on the wall indicate shear wall panels.
  • [Plugin] Grow

    45
    0 Votes
    45 Posts
    68k Views
    TIGT
    Make sure that your axes are reset to the default model-axes [right-click on an axis and choose reset if available]. It'd be sensible to locate the objects you want to 'grow' around the model's origin, then when prompted just snap to the origin [where the axes meet]. The XYZ [RGB] axes are what's used by the tool. Also ensure that unit-snapping is OFF in Model Info > Units.
  • [Plugin] Texture Resizer (1.5.6) — updated 15.05.2013

    104
    0 Votes
    104 Posts
    102k Views
    C
    Extentions Store still has v.1.5.5, which does not work on SU2018 To work on SU2018, install extension from this post You will need imagemagick. During installation, select "Install legacy tools" to obtain convert.exe, which is used by this extension.
  • [Plugin] Add Layer [1.1.0]

    58
    0 Votes
    58 Posts
    14k Views
    S
    Hi all, I too have been on the search for Jim's Add_Layer plugin to no avail. Does anyone have a link or a copy that will work with Make 2017, please? Thanks in advance
  • [Plugin] Latticeizer

    14
    0 Votes
    14 Posts
    25k Views
    TIGT
    It's available in the PluginStore https://sketchucation.com/pluginstore?pln=Latticeizer Get its RBZ and install it, just like any other... Alternatively use the SketchUcation ExtensionStore³ from within SketchUp itself, to Auto-Install it... It works just fine in the newer SketchUps... But note that it's not been signed for full compatibility with newer SketchUp, so your 'Extension Loading Policy' needs to be set to 'Unrestricted' for it to load and appear in the Extensions menu...
  • [Plugin] FredoTools::FaceTriangulator - v1.0a - 24 Feb 18

    4
    0 Votes
    4 Posts
    7k Views
    fredo6F
    @ahmed0007 said: Thanks for Sharing it select all faces by ignoring hidden/smooth edges in su2017 its normal? Yes, this is the default behavior. You can of course pre-select the faces you wish to triangulate before launching Face triangulator. Note that I could enable a button palette to give the choice of selection mode, as I do for JointPushPull. But some users or commentators say that palettes make the GUI cluttered. So the only thing I can do is to make the selection mode "single Face" when Hidden Geometry is on, otherwise by Surface. Fredo
  • Cutting multiple components with a face?

    11
    0 Votes
    11 Posts
    2k Views
    jolranJ
    Ah yes, the repeating pattern problem.. I know what you mean. Been there.. Well it's possible to reposition textures, rotate and resize them to create variations. Also 2dBoolean will pickup multiple textures/materials and you could apply same amount off pushpull to them all. But then again, you might want more flexibility then what premade component-patterns can offer so your current workflow might be more convenient.
  • Installing Wood Grain Long - 2 Extension

    4
    0 Votes
    4 Posts
    1k Views
    V
    Outstanding! I apologize for the delayed response, but I am just now able to return to this project. That did the trick! I am using a Mac, but your educated guess was spot on. Thank you, Tig, for the detailed help.
  • [Plugin] Align tool 3D (bug fix)

    58
    0 Votes
    58 Posts
    146k Views
    R
    There's a huge issue with this tool (I noticed it after dekade of using ) - it distorts objects. Additional operation needed (reset skew, rotation) afterwards. Any chance to to fix it please?
  • Help with installing slicer/slicemodeler

    4
    0 Votes
    4 Posts
    1k Views
    pilouP
    Maybe Install last version 2017 Make (if you have 64 bits)
  • Any plugin to evenly space objects?

    24
    0 Votes
    24 Posts
    12k Views
    Dave RD
    @joshuabrew said: hey! any leads on a plugin for this?? looking for the same... basically the sketchup equivalent of the distribute and align tools common in adobe indesign and illustrator, but for 3D objects in sketchup. thx! j Hey! Did you try the link in the post immediately above yours from 2014?
  • Double Offset

    8
    0 Votes
    8 Posts
    2k Views
    CadFatherC
    hope TIG is ok with it: main 2 routines: @@dist=nil def initialize(dist=nil) @toolname="extrudeEdgesByOffset" if dist==0 puts 'Extrude Edges by Offset' + '; Offset cannot be 0.' return nil end#if model=Sketchup.active_model ss=model.selection edges=[] ss.each{|e|edges << e if e.class==Sketchup;;Edge} if not edges[1] if not dist UI.messagebox('Extrude Edges by Offset') + ('; Must Select >=2 Edges.') else puts 'Extrude Edges by Offset' + '; Must Select >=2 Edges.' end return nil end#if verts=[] edges.each{|e| verts << e.vertices} verts.flatten! verts.uniq! pts=[] verts.each{|v| pts << v.position} cop=true vec=Geom;;Vector3d.new(0,0,0) edges[0..-2].each_with_index{|e,i| vec=e.line[1].cross(edges[i+1].line[1])} vec=Z_AXIS.clone if vec.length==0 ### all in line plane=[pts[0],vec] pts.each{|p| if not p.on_plane?(plane) cop=false break end } if not dist if not cop UI.messagebox('Extrude Edges by Offset') + ('; Edges must be coplanar.') return nil end @@dist=0.to_l if not @@dist Sketchup;;set_status_text(("Extrude Edges by Offset")+"; "+("Distance; "), SB_PROMPT) results=inputbox(["Distance; "],[@@dist],"Extrude Edges by Offset"+"...") return nil if not results if results[0]==0 UI.messagebox('Extrude Edges by Offset'+'; Offset cannot be 0!'+"\n"+"Try again"+"...") results=inputbox(["Distance; "],[@@dist],"Extrude Edges by Offset"+"...") return nil if not results or results[0]==0 end#if @@dist=results[0] else ### dist passed as arg if not cop puts 'Extrude Edge by Offset'+'; Edges must be coplanar.' return nil end @@dist=dist.to_l end#if ### model.start_operation("Extrude Edges by Offset"+' '+@@dist.to_s) dist=@@dist group=model.active_entities.add_group() ents=group.entities ### if edges.length==verts.length ### looped ### tface=ents.add_face(pts) ### fverts=tface.outer_loop.vertices fpts=[] 0.upto(fverts.length-1) do |a| vec1=(fverts[a].position-fverts[a-(fverts.length-1)].position).normalize vec2=(fverts[a].position-fverts[a-1].position).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=180.degrees if vec1.parallel?(vec2) vec3.length=dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) if fpts.length > 0 if not (vec2.parallel?(fpts.last.vector_to(fverts[a].position.transform(t)))) t=Geom;;Transformation.new(vec3.reverse) end end fpts << fverts[a].position.transform(t) end end nface=ents.add_face(fpts) tface.erase! if tface.valid? and dist>0 nface.erase! if nface.valid? and dist<0 face=nil; ents.each{|e|face=e if e.class==Sketchup;;Face} face.reverse! if face.normal.z<0 ol=face.outer_loop verts=ol.vertices if dist<0 il=(face.loops-[ol])[0] verts=il.vertices if dist>0 verts.each_with_index{|vert,a| vec1=(verts[a].position.vector_to(verts[a-(verts.length-1)].position)).normalize vec2=(verts[a].position.vector_to(verts[a-1].position)).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=90.degrees if vec1.parallel?(vec2) vec3.length= -dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) p=verts[a].position pt=p.transform(t) ents.add_line(p,pt) end } ### tr=Geom;;Transformation.new() len=ents.length len.times{ents.intersect_with(true, tr, ents, tr, true, ents.to_a)} ### cedges=[]; ents.each{|e|cedges << e if e.class==Sketchup;;Edge} ### else ### open ended ### edges.each{|e|ents.add_line(e.start.position, e.end.position)} edges=ents.to_a es=[] ee=[] se=[] edges.each{|e| if not e.start.edges[1] es=e.start ee=e.end se=e break elsif not e.end.edges[1] es=e.end ee=e.start se=e break end#if } nedges=[se] verts=[es,ee] (edges.length-1).times{ edges.each{|e| next if nedges.include?(e) if e.start==ee verts << e.vertices ee=e.end nedges << e elsif e.end==ee verts << e.vertices ee=e.start nedges << e end } } verts.flatten! verts.uniq! ### opts=[] verts.each_with_index{|vert,a| if a==0 #special case for start vertex v=verts[a].position.vector_to(verts[a+1].position).normalize f=dist/dist.abs t=Geom;;Transformation.rotation(verts[0].position, vec, 90.degrees*f) vec3=v.transform(t) vec3.length=dist.abs opts << verts[a].position.transform(vec3) elsif a==verts.length-1 #special case for end vertex v=verts[a-1].position.vector_to(verts[a].position).normalize f=dist/dist.abs t=Geom;;Transformation.rotation(verts[a].position, vec, 90.degrees*f) vec3=v.transform(t) vec3.length=dist.abs opts << verts[a].position.transform(vec3) else vec1=(verts[a].position.vector_to(verts[a+1].position)).normalize vec2=(verts[a].position.vector_to(verts[a-1].position)).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=90.degrees if vec1.parallel?(vec2) vec3.length=dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) if not vec2.parallel?(opts[-1].vector_to(verts[a].position.transform(t))) t=Geom;;Transformation.new(vec3.reverse) end opts << verts[a].position.transform(t) end end#if } begin nedges=ents.add_edges(opts) rescue nedges=[] end pts=[] verts.each{|v|pts << v.position} ents.erase_entities(edges) begin edges=ents.add_edges(pts) rescue edges=[] end pts.each_with_index{|p,i|ents.add_line(pts[i],opts[i])} ### tr=Geom;;Transformation.new() len=ents.length len.times{ents.intersect_with(true, tr, ents, tr, true, ents.to_a)} ### cedges=[]; ents.each{|e|cedges << e if e.class==Sketchup;;Edge} cedges.length.times{ ents.to_a.each{|e| next if e.class!=Sketchup;;Edge or not e.valid? e.find_faces } } ents.to_a.each{|e|e.reverse! if e.class==Sketchup;;Face and e.normal.z<0} ### end#if ### model.commit_operation # CREATE REVERSE GROUP model.start_operation("Extrude Edges by Offset - Reverse Side"+' '+@@dist.to_s) dist=@@dist*-1 group=model.active_entities.add_group() ents=group.entities ### if edges.length==verts.length ### looped ### tface=ents.add_face(pts) ### fverts=tface.outer_loop.vertices fpts=[] 0.upto(fverts.length-1) do |a| vec1=(fverts[a].position-fverts[a-(fverts.length-1)].position).normalize vec2=(fverts[a].position-fverts[a-1].position).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=180.degrees if vec1.parallel?(vec2) vec3.length=dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) if fpts.length > 0 if not (vec2.parallel?(fpts.last.vector_to(fverts[a].position.transform(t)))) t=Geom;;Transformation.new(vec3.reverse) end end fpts << fverts[a].position.transform(t) end end nface=ents.add_face(fpts) tface.erase! if tface.valid? and dist>0 nface.erase! if nface.valid? and dist<0 face=nil; ents.each{|e|face=e if e.class==Sketchup;;Face} face.reverse! if face.normal.z<0 ol=face.outer_loop verts=ol.vertices if dist<0 il=(face.loops-[ol])[0] verts=il.vertices if dist>0 verts.each_with_index{|vert,a| vec1=(verts[a].position.vector_to(verts[a-(verts.length-1)].position)).normalize vec2=(verts[a].position.vector_to(verts[a-1].position)).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=90.degrees if vec1.parallel?(vec2) vec3.length= -dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) p=verts[a].position pt=p.transform(t) ents.add_line(p,pt) end } ### tr=Geom;;Transformation.new() len=ents.length len.times{ents.intersect_with(true, tr, ents, tr, true, ents.to_a)} ### cedges=[]; ents.each{|e|cedges << e if e.class==Sketchup;;Edge} ### else ### open ended ### edges.each{|e|ents.add_line(e.start.position, e.end.position)} edges=ents.to_a es=[] ee=[] se=[] edges.each{|e| if not e.start.edges[1] es=e.start ee=e.end se=e break elsif not e.end.edges[1] es=e.end ee=e.start se=e break end#if } nedges=[se] verts=[es,ee] (edges.length-1).times{ edges.each{|e| next if nedges.include?(e) if e.start==ee verts << e.vertices ee=e.end nedges << e elsif e.end==ee verts << e.vertices ee=e.start nedges << e end } } verts.flatten! verts.uniq! ### opts=[] verts.each_with_index{|vert,a| if a==0 #special case for start vertex v=verts[a].position.vector_to(verts[a+1].position).normalize f=dist/dist.abs t=Geom;;Transformation.rotation(verts[0].position, vec, 90.degrees*f) vec3=v.transform(t) vec3.length=dist.abs opts << verts[a].position.transform(vec3) elsif a==verts.length-1 #special case for end vertex v=verts[a-1].position.vector_to(verts[a].position).normalize f=dist/dist.abs t=Geom;;Transformation.rotation(verts[a].position, vec, 90.degrees*f) vec3=v.transform(t) vec3.length=dist.abs opts << verts[a].position.transform(vec3) else vec1=(verts[a].position.vector_to(verts[a+1].position)).normalize vec2=(verts[a].position.vector_to(verts[a-1].position)).normalize vec3=(vec1+vec2).normalize if vec3.valid? ang=vec1.angle_between(vec2)/2 ang=90.degrees if vec1.parallel?(vec2) vec3.length=dist/Math;;sin(ang) t=Geom;;Transformation.new(vec3) if not vec2.parallel?(opts[-1].vector_to(verts[a].position.transform(t))) t=Geom;;Transformation.new(vec3.reverse) end opts << verts[a].position.transform(t) end end#if } begin nedges=ents.add_edges(opts) rescue nedges=[] end pts=[] verts.each{|v|pts << v.position} ents.erase_entities(edges) begin edges=ents.add_edges(pts) rescue edges=[] end pts.each_with_index{|p,i|ents.add_line(pts[i],opts[i])} ### tr=Geom;;Transformation.new() len=ents.length len.times{ents.intersect_with(true, tr, ents, tr, true, ents.to_a)} ### cedges=[]; ents.each{|e|cedges << e if e.class==Sketchup;;Edge} cedges.length.times{ ents.to_a.each{|e| next if e.class!=Sketchup;;Edge or not e.valid? e.find_faces } } ents.to_a.each{|e|e.reverse! if e.class==Sketchup;;Face and e.normal.z<0} ### end#if ### model.commit_operation Sketchup.send_action("selectSelectionTool;") end#def
  • JHS Standard Toolbar Problems / SU 2018

    4
    0 Votes
    4 Posts
    1k Views
    atelierpaarA
    Hi Max, I tried the updated Standard Toolbar "hide rest of the Model" as well as "Isolated/Restore Selected"tool work well excellent work. Thanks a lot for looking into it - I appreciate Uli
  • [Plugin] Animation - SUalive Free

    17
    0 Votes
    17 Posts
    7k Views
    SUaliveS
    Hello, SUalive Free 2.40 just under review (you can download 2.40 from our website)… Replay slider on top window* Online help available from SUalive help menu* website help tab QuickTour shows tuto and a tenth of videos from SUalive Full* No longer use .rbs files* SketchUp 2018pro SUalive Light and Full release today! from http://www.sualive.com at first Website home page has 4 new animation videos Lift-top Table assembly* Scaffolding assembly* Corkscrew* Scissor Lift @jumpjack We are waiting for Twilight contact and will let you know here as soon as they mail us. you said ‘...creating a temporary new scene per each frame...’ You can now render any frame you like. Simply move replay slider then render! you said ‘...Maybe SUalive could save scenes data...’ SUalive full has 2 commands. First ‘Export Scene like’ and ‘Play Scenes’. The last wait for user to click on next button and can easily be automated. User Ruby script or render extension can integrate the following safe script. Both script and next button may be used at the same time. if defined?(YDco657479255;;api_play_next_scene) YDco657479255;;api_play_next_scene() end Have a good day WhyDi
  • CURIC plugin

    5
    0 Votes
    5 Posts
    16k Views
    E
    Seems they launched tasty teasers on FB and don't rush to launch plugins they advertise...
  • Random move components?

    8
    0 Votes
    8 Posts
    3k Views
    E
    Ok, I resolved that by myself. I should have used Ruby Code Editor instead of Ruby Console.
  • Looking for a plugin to make studs

    14
    0 Votes
    14 Posts
    1k Views
    PixeroP
    Thats quite a lot of suggestions. Will have to try them out but at a glance the 2d boolean looks promising.

Advertisement