hello ruby friends,
i took 2 weeks off to study some programminmg guides etc. for ruby. i could solve some variable-problems, but i cannot find a solution for the following:
i want to define some master-components, which are copied later in the routine as instances.
this works well, when i define one component after each other (linear).
this all happens in one routine like this:
def_programm
define compo 1
define compo 2
define compo 3
some other tasks
copy compo 1 to instance .....
copy compo 2 to instance .....
copy compo 3 to instance .....
end
BUT
when i try to make the component definition within a LOOP and define the compnent'S name as ARRAY,
the components are again created, ok, but the creation of INSTANCES report, that they cannot find a deleted master component.
so it seems, that the components made within a loop are not visible for the rest of the program.
i am not sure, if i could explain my problem. in one other topics i was said, i should post the parts of programm code in some special way: could someone tell me, how to do it?
until then, here is the loop for the component - creation:
# edit 131107
require 'sketchup.rb'
Sketchup.send_action "showRubyPanel:"
#Add a menu item to launch our plugin.
UI.menu("PlugIns").add_item("01-ZF"){
# Call
programm
}
def_programm
some code
#******************************************************
#DEF PFOSTEN MASTER COMPONENTS AT 0,0,0 AS LOOP
model = Sketchup.active_model
entities = model.active_entities
for pfosten in 0..2
pfostenname=[]
pfostenname[0] = "$masterpfostenl"
pfostenname[1] = "$masterpfostenr"
pfostenname[2] = "$mittelpfostenm"
pfm1 = [0, 0, 0+thickness]
pfm2 = [0, 0, 0+thickness+sl-((5/faktor)/100)]
pfm3 = [0, 0, 0+thickness+sl-((5/faktor)/100)]
pfm4 = [0, 0, 0+thickness+sl]
group = entities.add_group
group.name = pfostenname[pfosten]
entities2 = group.entities
unless pradius<0
#puts "tube-pole"
new_line = entities2.add_line pfm1, pfm2
length = new_line.length
centerpoint = pfm1
# Create a circle perpendicular to the normal or Z axis
vector = pfm2
vector = vector.normalize!
edges = entities2.add_circle centerpoint, vector, pradius
kreis = entities2.add_face edges
kreis.pushpull length
new_line2 = entities2.add_line pfm3, pfm4
length2 = new_line2.length
centerpoint2 = pfm4
vector2 = pfm3
vector2 = vector.normalize!
edges2 = entities2.add_circle centerpoint2, vector2, pradius/3
kreis2 = entities2.add_face edges2
kreis2.pushpull -length2
else
#puts "square-pole"
side = pradius.abs
#puts pradius
new_line = entities2.add_line pfm1, pfm2
length = new_line.length
centerpoint = pfm1
vector = pfm2
vector = vector.normalize!
pts = []
pts[0] = [-side/2, -side/2, 0+thickness]
pts[1] = [-side/2, +side/2, 0+thickness]
pts[2] = [+side/2, +side/2, 0+thickness]
pts[3] = [+side/2, -side/2, 0+thickness]
square = entities2.add_face pts
square.pushpull -length
new_line2 = entities2.add_line pfm3, pfm4
length2 = new_line2.length
centerpoint2 = pfm4
vector2 = pfm3
vector2 = vector.normalize!
edges2 = entities2.add_circle centerpoint2, vector2, pradius/3
kreis2 = entities2.add_face edges2
kreis2.pushpull -length2
end
puts "creating component in loop"
puts pfostenname[pfosten]
puts "Gruppenname " , group.name
pfostenname[pfosten] = group.to_component
# BUT THIS COMPONENT IS NOT REACHABLE FOR THE REST OF THE PROGRAMM
end # end of loop
#here the code for copying of components (which works, when the compnents are created oe after each oother within programm
#********************************************************************************************
# PFOSTEN SETZEN
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if $putswitch == 1
puts "positioning posts"
end
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
pf1 = [x1+rol-$lwidthplus*(step+multistep-2), y1-run+ro.abs+multistep*run, z-rise] #links
pf3 = [x2-ror+$rwidthplus*(step+multistep-2), y1-run+ro.abs+multistep*run, z-rise] #rechts
pf5 = [0, y1-run+ro.abs+multistep*run, z-rise] #mitte
pf1p = [x1+rol-$lwidthplus*(step+multistep-1), y1-run+ro.abs+multistep*run+run, z] #links
pf3p = [x2-ror+$rwidthplus*(step+multistep-1), y1-run+ro.abs+multistep*run+run, z] #rechts
pf5p = [0, y1+ro.abs+multistep*run, z] #mitte
if (step) / il == podestnr #posledni horni
stepcount = 0
componentinstance =
entities.add_instance($masterpfostenl.definition, pf1p)
componentinstance =
entities.add_instance($masterpfostenr.definition, pf3p)
componentinstance =
entities.add_instance($mittelpfostenm.definition, pf5p)
elsif pmod == 1 # na kazdy schod
componentinstance =
entities.add_instance($masterpfostenl.definition, pf1)
componentinstance =
entities.add_instance($masterpfostenr.definition, pf3)
componentinstance =
entities.add_instance($mittelpfostenm.definition, pf5)
if (step+1) / il == podestnr
componentinstance =
entities.add_instance($masterpfostenl.definition, pf1p)
componentinstance =
entities.add_instance($masterpfostenr.definition, pf3p)
componentinstance =
entities.add_instance($mittelpfostenm.definition, pf5p)
end
elsif
#pmodoffset = 2*((il / pmod).ceil+1)*pmod-il
(step + (((il / pmod).ceil+1)*pmod-il)*(podestnr-1)) % pmod == 1
# verteiler ab modulo 2
componentinstance =
entities.add_instance($masterpfostenl.definition, pf1)
componentinstance =
entities.add_instance($masterpfostenr.definition, pf3)
componentinstance =
entities.add_instance($mittelpfostenm.definition, pf5)
end
end # end of PROGRAMM
edit 131107, thanx to dan
THANK YOU VERY MUCH FOR HELPING.
stan