Bonjour Adebeo,
Effectivement, ce n'est pas la meilleur solution que de tout éclater...
En plus, cela créer une perte d'informations (qui est qui), etc.
J'ai vraiment tout cherché mais là, je ne sais plus où chercher de plus...
Voici un bout de xml:
....
<structlayer>
<name>Clotures</name>
<structure id="Cloture 1">
<modelfile>Cloture_image(skp6).skp</modelfile>
<point>
<x>601908.878706722</x>
<y>1815023.22060379</y>
<z>345</z>
</point>
<roll>0</roll>
<angle>1.85133587106625</angle>
</structure>
<structure id="Cloture 2">
<modelfile>Cloture_image(skp6).skp</modelfile>
<point>
<x>601907.217461881</x>
<y>1815028.98604095</y>
<z>345</z>
</point>
<roll>0</roll>
<angle>1.85133587106625</angle>
</structure>
...
Et un bout de code ruby:
...
model = Sketchup.active_model
view = model.active_view
entities = model.entities
layers = model.layers
definitions = model.definitions
....
structlayer.each_element('structure') do |structure|
point=structure.elements["point"]
x,y,z=point.elements.to_a
roll=structure.elements["roll"].text
skpmodel=structure.elements["modelfile"].text
componentdefinition = definitions.load skpmodel
rotation_cloture = structure.elements["angle"]
x = (x.text.to_f).m
y = (y.text.to_f).m
z = (z.text.to_f).m
roll= (-1)*roll.to_f
point = Geom;;Point3d.new(x, y, z)
t = Geom;;Transformation.new
d = entities.add_instance componentdefinition, t
vector=Geom;;Vector3d.new 0,1,0
t = Geom;;Transformation.new d.transformation.origin, vector, roll
d.transform! t
if(rotation_cloture)
vector = Geom;;Vector3d.new 0,0,1
t = Geom;;Transformation.new d.transformation.origin, vector, rotation_cloture.text.to_f
d.transform! t
scaling_cloture = structure.elements["scaling"]
if(scaling_cloture)
t = Geom;;Transformation.scaling d.transformation.origin, scaling_cloture.text.to_f, 1, 1
d.transform! t
end
end
t = Geom;;Transformation.new point
d.transform! t
...
Franchement, je vous remercie infiniment si vous trouvez d'où vient le problème...
Cordialement
Kattig