This is my version of the srcipt for now that seems to work for all non nested component instances
module Bob
# Huge parts of this code were written by TIG this is a sligthly modified version
def self.intersectBob?(e1=nil, e2=nil)
mod = Sketchup.active_model # Open model
ent = mod.entities # All entities in model
instance1 = e1 #sel[0]
instance2 = e2 #sel[1]
ci_def = instance1.definition
tr1 = instance1.transformation
test1 = Sketchup.active_model.entities.add_instance ci_def, tr1
ci_def2 = instance2.definition
tr2 = instance2.transformation
test2 = Sketchup.active_model.entities.add_instance ci_def2, tr2
result = test1.intersect(test2)
cnt = result.entities.count
if cnt > 0
int=true
result.definition.entities.each {|ent|
if ent.is_a? Sketchup;;Face
ent.material = 'red' #Sketchup;;Color.new(255, 0, 0)
end}
else
int=false
end
return int
end
#def self.del() #does not work like this typing Bob.del into the ruby console, meaning result has to be changed from local to global variable but I don't know how yet
#result.erase!
#end
def self.intersectALL()
model=Sketchup.active_model
ss=model.selection
ents=model.active_entities
ss.clear
gps=ents.grep(Sketchup;;Group)
ins=ents.grep(Sketchup;;ComponentInstance)
ens=gps+ins
ens.uniq!
ens.compact!
(ens.length).times{|i|
(ens.length).times{|j|
next if j<=i
if self.intersectBob?(ens[i], ens[j])
ss.add(ens[i])
ss.add(ens[j])
end
}
}
puts "Any intersecting component-instances are highlighted..."
end
end
In this script I still need to fix the deleting function which later will have to be added to an observer class so as soon as another is clicked (or a button is pressed) the resulting intersection is deleted.
The more important function that still has to be added is that it does the check for all the nested components (and possibly groups).
@giro
I only have the 32 bits version so can't say