sketchucation logo sketchucation
    • Login
    1. Home
    2. Pixero
    3. Topics
    🛣️ Road Profile Builder | Generate roads, curbs and pavements easily Download
    Offline
    • Profile
    • Following 0
    • Followers 1
    • Topics 291
    • Posts 2,394
    • Groups 4

    Topics

    • PixeroP

      SU Icons mixed sizes?

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Discussions sketchup
      6
      0 Votes
      6 Posts
      993 Views
      Bob JamesB
      For more on this see: https://sketchucation.com/forums/viewtopic.php?f=15&t=69030&hilit=+icon Except for TBoy suggestion to resize alltoolbar icons, and slbaumgartner about overall monitor scaling, I never got an answer/resolution from any of the, I assume, many 4K users
    • PixeroP

      [Plugin] toComp

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      4
      0 Votes
      4 Posts
      823 Views
      PixeroP
      v1.2 Small update that selects the new component.
    • PixeroP

      Selection to component

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      8
      0 Votes
      8 Posts
      3k Views
      D
      Thanks to both of you for a very useful code snippet. Especially helpful when you're making a component from loose geometry and forgot to check "Replace selection with component", and have to go through the process twice. Always good to save clicks and annoyances.
    • PixeroP

      A blast from the past

      Watching Ignoring Scheduled Pinned Locked Moved Gallery
      9
      0 Votes
      9 Posts
      2k Views
      srxS
      The same here. I found this on my hard. It was an experimental mass study for a project I was working on in 2002. Two point perspective is from the future . Trees are from the past...very realistic blue leaves [image: CjDB_Komuna.jpg]
    • PixeroP

      Double Offset

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      8
      0 Votes
      8 Posts
      1k 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
    • PixeroP

      Simple DC error

      Watching Ignoring Scheduled Pinned Locked Moved Dynamic Components sketchup
      2
      0 Votes
      2 Posts
      6k Views
      PixeroP
      I think I figured it out. Seems to be working now.
    • PixeroP

      Looking for a plugin to make studs

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      14
      0 Votes
      14 Posts
      896 Views
      PixeroP
      Thats quite a lot of suggestions. Will have to try them out but at a glance the 2d boolean looks promising.
    • PixeroP

      Remove Group/component materials and apply to faces

      Watching Ignoring Scheduled Pinned Locked Moved Plugins
      6
      0 Votes
      6 Posts
      2k Views
      pbacotP
      I've tried the same thing and had trouble with Remove_CG_mat. It's not the same as material replacer. Still looking.
    • PixeroP

      Best free video editor ?

      Watching Ignoring Scheduled Pinned Locked Moved Freeware
      8
      0 Votes
      8 Posts
      8k Views
      HornOxxH
      hopefully not Pilou!!! that would be embarrassing but I think that it must be multilingual of course ? https://www.youtube.com/watch?v=ByCkQrkj5Lw
    • PixeroP

      Dumb down component?

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      6
      0 Votes
      6 Posts
      2k Views
      PixeroP
      Thanks for the links. I think these are a bit too advanced for my needs this time. I simply want to clear all attributes on a selected component (and nested components). I kind of thought it was a one liner script.
    • PixeroP

      Apartment house interiors

      Watching Ignoring Scheduled Pinned Locked Moved Gallery
      32
      0 Votes
      32 Posts
      4k Views
      Mike AmosM
      I think the old cliche about photographs rather than renders is redundant but man, those are brilliant I really did think they were too good to be renders.
    • PixeroP

      Revit to SketchUp my best workflow (so far)

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Discussions sketchup
      15
      0 Votes
      15 Posts
      8k Views
      V
      I agree with Pixero on this one. This is the best workflow. I have been doing the same for years on many projects. Also, when your client sends an updated Revit export, you can just use the method above and then use ThomThoms replace material from the old model to the new model. The entire process is very quick. The one caveat with working with Revit imports is that I always find that SketchUp tends to run very weighed down, so try to replace as much Revit garbage as you can such as railings, fixtures, furniture, etc. with SU components that are clean. Jut yesterday I imported a model with terrible columns that had millions a tiny little triangles. They were so heavy and the 10 min it took to swap them out was well worth it.
    • PixeroP

      D.I.Y Vines

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Components, Materials & Styles sketchup
      3
      0 Votes
      3 Posts
      7k Views
      kimi kimiK
      Where were you 3 days ago? Too late [image: 3EUh_hotelsauerlandgarden.jpg]
    • PixeroP

      DIY Hedges

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Components, Materials & Styles sketchup
      14
      0 Votes
      14 Posts
      23k Views
      O
      Hello, I want to purchase this, but did not any tutorial video for extension. Anyone help to me ?
    • PixeroP

      Uninitialized class variable

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      5
      0 Votes
      5 Posts
      936 Views
      PixeroP
      Thanks, that worked.
    • PixeroP

      Rainy Day

      Watching Ignoring Scheduled Pinned Locked Moved Corner Bar
      9
      0 Votes
      9 Posts
      2k Views
      PixeroP
      Hi. It was modeled with sub division surfaces in Maya and animated with bones with inverse kinematics. Facial animation was made with blend shapes which is like you create different mouth shapes that you can morph between with sliders. The rain was just particles and I made it so that when the particles collided with the ground another bunch of particles were emitted upwards to simulate water splatter. Everything was rendered with MentalRay that at the time was at the frontline of rendering.
    • PixeroP

      Axes question

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      8
      0 Votes
      8 Posts
      2k Views
      PixeroP
      Thanks for the info.
    • PixeroP

      Cleaning up memory in script

      Watching Ignoring Scheduled Pinned Locked Moved Developers' Forum
      3
      0 Votes
      3 Posts
      885 Views
      PixeroP
      Thanks.
    • PixeroP

      Autocad height points to SketchUp question

      Watching Ignoring Scheduled Pinned Locked Moved SketchUp Discussions sketchup
      10
      0 Votes
      10 Posts
      1k Views
      filibisF
      Thank you Pixero.
    • PixeroP

      Interview with The Boundary

      Watching Ignoring Scheduled Pinned Locked Moved Corner Bar
      2
      0 Votes
      2 Posts
      2k Views
      srxS
      The guys are obviously marketing Corona. How else would they miss Thea4SU, which had everything they talked about long ago, and much faster. It is sad that now even the best quality doesn't exist if it is not in the commercial. It is also sad that Altair still doesn't do anything about it...yet.
    • 1
    • 2
    • 3
    • 4
    • 5
    • 14
    • 15
    • 3 / 15