Last active
August 29, 2015 14:10
-
-
Save jimfoltz/7a1404861e5848207d82 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=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