• Login
sketchucation logo sketchucation
  • Login
ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

Instance transformations not remembered

Scheduled Pinned Locked Moved Developers' Forum
6 Posts 3 Posters 557 Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    adutton
    last edited by 30 May 2013, 09:41

    I am trying to program the insertion of a component instance in a way that I can rotate it using key strokes. I have succeeded in all but one aspect.
    Using MyTools I can load the instance and move it attached to the cursor. I can also capture key strokes to rotate it. However, when I start to move the mouse again the visible instance has reverted to the unrotated instance. It seems to forget the rotation transformation.
    I have even renamed the rotated instance and told the subsequent mouse move to refer to the renamed instance but is still shows the unrotated instance.
    Is this a bug or am I doing something wrong?

    Andrew

    1 Reply Last reply Reply Quote 0
    • T Offline
      thomthom
      last edited by 30 May 2013, 10:10

      It should be possible to do what you describe, do I'm going to hazard a guess that it's a bug in your code. But it's hard to give specific advice without seeing any sample code.

      Thomas Thomassen — SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • D Offline
        Dan Rathbun
        last edited by 30 May 2013, 13:36

        See: Re: Rotation transformation for a component instance

        💭

        I'm not here much anymore.

        1 Reply Last reply Reply Quote 0
        • A Offline
          adutton
          last edited by 30 May 2013, 18:18

          Thank you for helping.
          I have a component called SC11 wich is generated in a seperate Class. I create an instance of that component in the Class called $v_inst and it is positioned at [0,0,0]. This is picked up in the Mouse Move in the Mytools class as follows:

          <span class="syntaxdefault"></span><span class="syntaxkeyword">class&nbsp;</span><span class="syntaxdefault">MyTool<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;activate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;</span><span class="syntaxstring">"Your&nbsp;tool&nbsp;has&nbsp;been&nbsp;activated."<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;onKeyDown</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">key</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">repeat</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">flags</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span class="syntaxdefault">key<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;VK_LEFT&nbsp;then&nbsp;arotate&nbsp;</span><span class="syntaxcomment">#&nbsp;just&nbsp;this&nbsp;one&nbsp;for&nbsp;starters<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;arotate<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">v&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Vector3d</span><span class="syntaxkeyword">.new(</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)&nbsp;</span><span class="syntaxcomment">#&nbsp;about&nbsp;a&nbsp;vertical&nbsp;axis<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">pt&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Point3d</span><span class="syntaxkeyword">.new(@</span><span class="syntaxdefault">curpt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">tr&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">rotation&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">pt</span><span class="syntaxkeyword">,&nbsp;@</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">90.degrees<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$v_inst&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">$v_inst</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">!&nbsp;(&nbsp;@</span><span class="syntaxdefault">tr&nbsp;</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$v_inst</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">"90"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$v_mk&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">true<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;def&nbsp;onMouseMove</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">flags</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">x</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">curpt</span><span class="syntaxkeyword">=</span><span class="syntaxstring">""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">curpt&nbsp;</span><span class="syntaxkeyword">=&nbsp;(</span><span class="syntaxdefault">view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">inputpoint</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">x</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">y</span><span class="syntaxkeyword">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">pt&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Point3d</span><span class="syntaxkeyword">.new(@</span><span class="syntaxdefault">curpt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@</span><span class="syntaxdefault">ttr</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.new&nbsp;@</span><span class="syntaxdefault">pt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">@</span><span class="syntaxdefault">tttr</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Transformation</span><span class="syntaxkeyword">.new&nbsp;@</span><span class="syntaxdefault">pt&nbsp;&nbsp;</span><span class="syntaxcomment">#just&nbsp;in&nbsp;case&nbsp;it&nbsp;makes&nbsp;a&nbsp;difference<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if&nbsp;</span><span class="syntaxdefault">$v_mk&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$v_inst1</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation&nbsp;</span><span class="syntaxkeyword">=&nbsp;@</span><span class="syntaxdefault">tttr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">$v_inst</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation&nbsp;</span><span class="syntaxkeyword">=&nbsp;@</span><span class="syntaxdefault">ttr&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;end<br />&nbsp;&nbsp;end<br />end<br /></span><span class="syntaxcomment">#####################&nbsp;</span><span class="syntaxdefault"></span>
          

          When it runs the instance moves with the cursor and can be rotated time after time with the left arrow. But as soon as the cursor moves again it reverts to the untransformed instance.

          I would be most grateful if you can see where I am going wrong.

          Andrew

          1 Reply Last reply Reply Quote 0
          • T Offline
            thomthom
            last edited by 30 May 2013, 18:22

            Ah! You're replacing the transformation when you use instance.transformation=

            Either you need to make the transformation you replace with include the rotation, or you must calculate the relative offset and use instance.transform!

            Thomas Thomassen — SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • A Offline
              adutton
              last edited by 30 May 2013, 22:16

              Thanks a million. That has cracked it.
              I used the offset method
              Best wishes

              Andrew

              1 Reply Last reply Reply Quote 0
              • 1 / 1
              1 / 1
              • First post
                1/6
                Last post
              Buy SketchPlus
              Buy SUbD
              Buy WrapR
              Buy eBook
              Buy Modelur
              Buy Vertex Tools
              Buy SketchCuisine
              Buy FormFonts

              Advertisement