sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Instance transformations not remembered

    Scheduled Pinned Locked Moved Developers' Forum
    6 Posts 3 Posters 557 Views 3 Watching
    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

      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
      • thomthomT Offline
        thomthom
        last edited by

        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
        • Dan RathbunD Offline
          Dan Rathbun
          last edited by

          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

            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
            • thomthomT Offline
              thomthom
              last edited by

              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

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

                Andrew

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

                Advertisement