How to cut from object
-
It seems that it works. Is it correct way?
Just one question, how can I delete the black lines?, or hide them.def drill(x, y, z, radiuses, depths, directions) model = Sketchup.active_model countOfDrills = x.length.to_i countOfDrills.times do |i| center = [x[i], y[i], z[i]].map(&;to_f) radius = radiuses[i] depth = depths[i] direction = directions[i] case direction when "N" dir = Geom;;Vector3d.new(0,0,1) when "E" dir = Geom;;Vector3d.new(-1,0,0) when "S" dir = Geom;;Vector3d.new(0,0,-1) when "W" dir = Geom;;Vector3d.new(1,0,0) when "F" dir = Geom;;Vector3d.new(0,-1,0) when "B" dir = Geom;;Vector3d.new(0,1,0) else dir = Geom;;Vector3d.new(0,0,1) end groups = [] i = 0 Sketchup.active_model.entities.each{|g| next unless g.is_a?(Sketchup;;Group) g.entities.each{|f| next unless f.is_a?(Sketchup;;Face) if center.on_plane? f.plane then groups.each {|x| next if g == x} groups[i] = g i += 1 end } } groups = groups.uniq countOfGroups = groups.length.to_i countOfGroups.times do |i| group = groups[i] gents = group.entities activeFaces = gents.grep(Sketchup;;Face) circleGroup = gents.add_group; cge = circleGroup.entities edges = cge.add_circle(center, dir, radius) circleGroup.explode circleFace = (gents.grep(Sketchup;;Face) - activeFaces).last next if circleFace == nil normal = circleFace.normal activeFaces = gents.grep(Sketchup;;Face) circleFace.pushpull(-depth) deleteFace = (gents.grep(Sketchup;;Face) - activeFaces)[0] if deleteFace.normal == normal then deleteFace.erase! end end end end -
@ado130 said:
Just one question, how can I delete the black lines?, or hide them.
Try this
groups = groups.uniq countOfGroups = groups.length.to_i countOfGroups.times do |i| group = groups[i] gents = group.entities activeFaces = gents.grep(Sketchup;;Face) circleGroup = gents.add_group; cge = circleGroup.entities edges = cge.add_circle(center, dir, radius) circleGroup.explode; (gents.grep(Sketchup;;Face) - activeFaces).each{|circleFace| next if center.distance(circleFace.bounds.center) > radius circleFace.pushpull(-depth) ] remove = gents.grep(Sketchup;;Edge).find_all{|e|e.faces.length<2} gents.erase_entities(remove.reverse) end

-
It seems that it works too. Thanks!
But black lines are still there.
You have there "]", I think, it should be "}"? -
@ado130 said:
It seems that it works too. Thanks!
But black lines are still there.
You have there "]", I think, it should be "}"?Yes, you are right. Sorry about that.
The black vertical lines in the 'drill hole'?
-
Yeah, you're right, but I meant black lines in rectangular blocks (rather, all lines).
-
@ado130 said:
Yeah, you're right, but I meant black lines in rectangular blocks.
Well, if you didn't want them, why did you create then in the first place.
groups = groups.uniq countOfGroups = groups.length.to_i countOfGroups.times do |i| group = groups[i]; group.make_unique gents = group.entities activeFaces = gents.grep(Sketchup;;Face) activeEdges = gents.grep(Sketchup;;Edge);#<-- save active edges circleGroup = gents.add_group; cge = circleGroup.entities edges = cge.add_circle(center, dir, radius) circleGroup.explode; (gents.grep(Sketchup;;Face) - activeFaces).each{|circleFace| next if center.distance(circleFace.bounds.center) > radius circleFace.pushpull(-depth) } #remove unused circle edges remove = gents.grep(Sketchup;;Edge).find_all{|e|e.faces.length<2} gents.erase_entities(remove.reverse) # hide vertical edges in drill hole soften = (gents.grep(Sketchup;;Edge)-activeEdges).find_all{|e|e.line[1].parallel?(dir) && !e.soft?} soften.each{|e|e.soft=e.smooth=true} # remove co-planar edges remove = gents.grep(Sketchup;;Edge).find_all{|e|(e.faces.length>=2 && e.faces.find_all{|f|f.normal.parallel?(e.line[1].axes[1])}.length==2)} gents.erase_entities(remove.reverse) -
Sorry for the delayed response. It looks fine, thanks again!

Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better π
Register LoginAdvertisement