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