This seems to work with or without using intersect_with model = Sketchup.active_model entities = model.entities entities.clear! #Create a group to collect all entities for base cube basegroup=entities.add_group basegroupentities=basegroup.entities base_trans=basegroup.transformation p1 = Geom;;Point3d.new(0, 0, 0) p2 = Geom;;Point3d.new(9, 0, 0) p3 = Geom;;Point3d.new(9, 4, 0) p4 = Geom;;Point3d.new(0, 4, 0) points = [p1,p2,p3,p4] base = basegroupentities.add_face points base.reverse! if base.normal.z < 0 base.pushpull 1 cutgroup = entities.add_group() cut_trans = cutgroup.transformation cutgroup.entities.add_3d_text('Bob', TextAlignCenter, "Arial", true, false, 3.0, 0.0, 0.0, true, 1) transform = Geom;;Transformation.new(Geom;;Point3d.new(0.5,0.5,0)) cutgroup.transform! transform #intersections = cutgroup.entities.intersect_with true, cut_trans, basegroup.entities, base_trans , true, basegroup basegroup.explode dmp=cutgroup.explode;#erase the top and bottom of the letters dmp.each{|f| f.erase! if f.is_a?(Sketchup;;Face) && f.normal.z.abs>0.5} #add faces to 'holes' in the letters dmp.each{|e| e.find_faces if e.is_a?(Sketchup;;Edge) && e.faces.length==1} model.active_view.zoom_extents