Skip to content

Instantly share code, notes, and snippets.

@jimfoltz
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jimfoltz/7a1404861e5848207d82 to your computer and use it in GitHub Desktop.
Save jimfoltz/7a1404861e5848207d82 to your computer and use it in GitHub Desktop.
=begin
This is how you to delete a Layer prior to SketchUp 2015.
SketchUp >= 2015 has a Layer.delete method.
(c) TIG 2009
layer-delete.rb adds a new Method the Sketchup's Layer Class-
"layer.delete()" - it deletes that layer from the model and
entities that used it get the default layer instead...
however, if "layer.delete(true)" then layer's geometry is deleted too.
The default layer cannot be deleted, BUT if 'true' is used anything
on it WILL be deleted - so use it sensibly !
v1.1 simplified defn changing and respond_to? layer testing.
v1.2 operation removed.
v1.3 empty temp groups used for layers without detriment.
v1.4 deletes layer's geometry with (delete_geometry)==true.
=end
require 'sketchup.rb'
module YOU
def delete_layer(delete_geometry = false)
model=Sketchup.active_model
ents=model.entities; defs=model.definitions; layers=model.layers
if delete_geometry
allents=[]
ents.each{|e|allents << e if e.valid? and e.respond_to?(:layer) and e.layer==self}
defs.each{|d|d.entities.each{|e| allents << e if e.valid? and e.respond_to?(:layer)and e.layer == self}}
allents.each{|e|e.erase! if e.valid?}
else # move geom to Layer0 etc
ents.each{|e|e.layer=nil if e.respond_to?(:layer) and e.layer==self}
defs.each{|d|d.entities.each{|e|e.layer = nil if e.respond_to?(:layer) and e.layer == self}}
end #if
group=ents.add_group();gents=group.entities ### temporarily use other layers
temp = gents.add_group()
temp.layer = nil
(layers.to_a-[self]).each{|layer| tc = temp.copy; tc.layer=layer}
model.active_layer = nil if model.active_layer == self # ensure self is not current layer
layers.purge_unused ### purge self from browser
group.erase! ### erase! the temporary layer user, use set as was.
end #def
end # module
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment