# Create the Command object cmd = UI::Command.new("Mesh") { sel = Sketchup.active_model.selection ent = Sketchup.active_model.active_entities sel.each do |e| if e.typename == "Face" vertices = e.vertices lowerx = vertices[0].position.x lowery = vertices[0].position.y upperx = vertices[0].position.x uppery = vertices[0].position.y lowerz = vertices[0].position.z upperz = vertices[0].position.z for count in 1..3 if lowerx > vertices[count].position.x lowerx = vertices[count].position.x end #if if lowery > vertices[count].position.y lowery = vertices[count].position.y end #if if upperx < vertices[count].position.x upperx = vertices[count].position.x end #if if uppery < vertices[count].position.y uppery = vertices[count].position.y end #if if lowerz > vertices[count].position.z lowerz = vertices[count].position.z end #if if upperz < vertices[count].position.z upperz = vertices[count].position.z end #if end #for ydiff = lowery.to_f - lowery.to_i xdiff = lowerx.to_f - lowerx.to_i zdiff = lowerz.to_f - lowerz.to_i if ydiff > ".50".to_f uppery_limit = uppery.to_i - 1 else uppery_limit = uppery.to_i end #if if xdiff > ".50".to_f upperx_limit = upperx.to_i - 1 else upperx_limit = upperx.to_i end #if if zdiff > ".50".to_f upperz_limit = upperz.to_i - 1 else upperz_limit = upperz.to_i end #if if e.normal == [0,0,-1] || e.normal == [0,0,1] for i in lowery.to_i..uppery_limit point1 = Geom::Point3d.new (lowerx,i+ydiff,lowerz) point2 = Geom::Point3d.new (upperx,i+ydiff,lowerz) constline = ent.add_cline point1, point2 end #for for j in lowerx.to_i..upperx_limit point3 = Geom::Point3d.new (j+xdiff,lowery,lowerz) point4 = Geom::Point3d.new (j+xdiff,uppery,lowerz) constline2 = ent.add_cline point3, point4 end #for end #if if e.normal == [-1,0,0] || e.normal == [1,0,0] for i in lowery.to_i..uppery_limit point1 = Geom::Point3d.new (lowerx,i+ydiff,lowerz) point2 = Geom::Point3d.new (upperx,i+ydiff,upperz) constline = ent.add_cline point1, point2 end #for for j in lowerz.to_i..upperz_limit point3 = Geom::Point3d.new (lowerx,lowery,j+zdiff) point4 = Geom::Point3d.new (upperx,uppery,j+zdiff) constline2 = ent.add_cline point3, point4 end #for end #if if e.normal == [0,-1,0] || e.normal == [0,1,0] for i in lowerx.to_i..upperx_limit point1 = Geom::Point3d.new (i+xdiff,lowery,lowerz) point2 = Geom::Point3d.new (i+xdiff,uppery,upperz) constline = ent.add_cline point1, point2 end #for for j in lowerz.to_i..upperz_limit point3 = Geom::Point3d.new (lowerx,lowery,j+zdiff) point4 = Geom::Point3d.new (upperx,uppery,j+zdiff) constline2 = ent.add_cline point3, point4 end #for end #if end #if typeface end #do } # Validation procedure - check for face cmd.set_validation_proc { sel = Sketchup.active_model.selection ok = sel.find{ |e| e.typename == "Face"} ok ? MF_ENABLED : MF_GRAYED } # Access SketchUp's context menu UI.add_context_menu_handler do |menu| menu.add_separator menu.add_item cmd end