Mysterious change of group bounding box coords
-
I created a group and saved its' bounding box corner coordinates. I then added a series of faces on the yz plane, in a seperate group, that intersected the first group then a series of faces on the xz plane using the following code.
<span class="syntaxdefault">mod </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />ent </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_entities<br />sel </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mod</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection<br />corg </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">sel</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">first<br />wid </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">corg</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">width<br />hgt </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">corg</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">height<br />dep </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">corg</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">depth<br />cor</span><span class="syntaxkeyword">=[];</span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">=[];</span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">chopx</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">cex</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">chopx</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br />chopy</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">ent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">cey</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">chopy</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities<br /></span><span class="syntaxkeyword">for </span><span class="syntaxdefault">i in 0..7<br /> cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">i</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">corg</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">corner</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">i</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end<br />dx</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">wid</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">10</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">dy</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">hgt</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">10</span><span class="syntaxkeyword">;</span><span class="syntaxdefault">dz</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">dep</span><span class="syntaxkeyword">/</span><span class="syntaxdefault">10<br />vx</span><span class="syntaxkeyword">=[</span><span class="syntaxdefault">dx</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">vy</span><span class="syntaxkeyword">=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">dy</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">vz</span><span class="syntaxkeyword">=[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">dz</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">6</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">4</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">5</span><span class="syntaxkeyword">];</span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">3</span><span class="syntaxkeyword">]=</span><span class="syntaxdefault">cor</span><span class="syntaxkeyword">[</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">]<br /></span><span class="syntaxdefault">tr</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">vx</span><span class="syntaxkeyword">); </span><span class="syntaxdefault">puts </span><span class="syntaxstring">"\nbefore"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">cor<br />1.upto</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">9</span><span class="syntaxkeyword">) do<br /> </span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each</span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">p</span><span class="syntaxkeyword">| </span><span class="syntaxdefault">p</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">! </span><span class="syntaxdefault">tr</span><span class="syntaxkeyword">}<br /> </span><span class="syntaxdefault">cex</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">facx</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end<br />tr</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">vy</span><span class="syntaxkeyword">); </span><span class="syntaxdefault">puts </span><span class="syntaxstring">"\nafter"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">cor<br />1.upto</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">9</span><span class="syntaxkeyword">) do<br /> </span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each</span><span class="syntaxkeyword">{|</span><span class="syntaxdefault">p</span><span class="syntaxkeyword">| </span><span class="syntaxdefault">p</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">! </span><span class="syntaxdefault">tr</span><span class="syntaxkeyword">}<br /> </span><span class="syntaxdefault">cey</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">facy</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end<br /></span>
This is the results
and the bounding box coordinates before and after the first set of faces.
before (18.014671", 3.751921", 0") (52.749799", 3.751921", 0") (18.014671", 64.897048", 0") (52.749799", 64.897048", 0") (18.014671", 3.751921", 1.89") (52.749799", 3.751921", 1.89") (18.014671", 64.897048", 1.89") (52.749799", 64.897048", 1.89") after (49.276286", 3.751921", 0") (52.749799", 3.751921", 0") (49.276286", 64.897048", 0") (52.749799", 64.897048", 0") (49.276286", 3.751921", 1.89") (52.749799", 3.751921", 1.89") (49.276286", 64.897048", 1.89") (52.749799", 64.897048", 1.89")
I've tried adding .clone when saving the bounding box coordinates but it made no difference. Any ideas?
-
It was hard to follow your code with all the multiple statements on one line.
But the reason your co-ords change is because you are transforming them.
facx[0]=cor[0]
This makesfacx[0]
referencecor[0]
- they both point to the same value.You then transform the points in
facx
here:facx.each{|p| p.transform! tr}
If you want to avoid this you must clone the point:
facx[0]=cor[0].clone
-
thomthom, Thanks for the help. The solution was to obvious I guess.
Advertisement