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

Geom::Transformation.rotation

Scheduled Pinned Locked Moved Developers' Forum
7 Posts 3 Posters 756 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.
  • C Offline
    confitex architure
    last edited by 2 May 2008, 18:35

    Hello again,
    I'm trying to explore how to insert and rotate an external component. But I can't figure out how geom::Transformation.rotate works...
    I can't manage the rotation point... If I set inspoint at 0,0,0 and destpoint at 0,0,0 it works fine.
    but if I change inspoint and destpoint it doesn't rotate the component around it.
    So I tought I could do it in 3 steps.

    1. I insert component in 0,0,0 (transform)
    2. I rotate it (transform2)
    3. I move to another point (transform3), but then the operation redefine the 2nd step and turn back to its originel orientation.
      Any solution?
    def insertrotate
    	zaxis = Geom;;Vector3d.new(0,0,1)
    	inspoint = Geom;;Point3d.new 0.cm,0.cm,0.cm
    	destpoint = Geom;;Point3d.new 100.cm,100.cm,0.cm
    
    	transform = Geom;;Transformation.new inspoint
    
    	model = Sketchup.active_model
    	entities = model.active_entities
    
    	path = Sketchup.find_support_file "a_file.skp" ,"a_directory_under_sketchup_dir"
    
    	definitions = model.definitions
    	componentdefinition = definitions.load path
    
    	instance = entities.add_instance componentdefinition, transform
    
    	transform2 = Geom;;Transformation.rotation(inspoint,zaxis,90.degrees)
    
    	transform3 = Geom;;Transformation.new destpoint
    	
    	UI.messagebox "Applying a new Transformation (in this case, a rotation)"
    	status = instance.transformation=transform2
    
    	UI.messagebox "Applying a new Transformation (in this case, a move)"
    	status = instance.transformation=transform3
    end
    
    1 Reply Last reply Reply Quote 0
    • T Offline
      todd burch
      last edited by 2 May 2008, 20:18

      I can't look at this now, but if you don't get a solution before I do have time, I'll be happy to work it out for you.

      I'm the rotation transformation king, you know. 🤣

      Todd

      1 Reply Last reply Reply Quote 0
      • C Offline
        confitex architure
        last edited by 3 May 2008, 07:25

        Thanks Todd,
        Glad I found the Geom::Transformation.rotate's key master. ☀
        It seems there's no other... I'll wait for your help 😲

        To all others:
        if I don't get an answer on december 24th, feel free to help me, I'm sure King Todd will not be upset.

        1 Reply Last reply Reply Quote 0
        • C Offline
          confitex architure
          last edited by 3 May 2008, 09:11

          I found it but do not really understand the reason why I must use .transform! instead of .transformation= ... (Todd?)
          So to rotate around the perfect insertion point of the component, type:

             UI.messagebox "Applying a new Transformation (in this case, a rotation)"
              instance.transform!(transform2)
          
          

          instead of:

             UI.messagebox "Applying a new Transformation (in this case, a rotation)"
             status = instance.transformation=transform2
          
          

          Hope this will help others.

          1 Reply Last reply Reply Quote 0
          • T Offline
            todd burch
            last edited by 3 May 2008, 13:08

            Glad you worked it out.

            I'll try to explain the difference between the two.

            instance.transformation= is used to build a new transformation only. The return value is a transformation that can be applied to an object.

            instance.transform! actually applies the transformation you pass; it doesn't just create a new definition of a transformation like the above does.

            An analogy might be English terms. instance.transformation=, is the imperative to get a noun. instance.transform! is the imperative to perform the action - the verb if you will.

            Ok, so maybe that analogy is poor and is completely incorrect in proper terms of English.... 😳

            Todd

            1 Reply Last reply Reply Quote 0
            • J Offline
              Jim
              last edited by 3 May 2008, 17:53

              @unknownuser said:

              Glad you worked it out.

              I'll try to explain the difference between the two.

              instance.transformation= is used to build a new transformation only. The return value is a transformation that can be applied to an object.

              instance.transform! actually applies the transformation you pass; it doesn't just create a new definition of a transformation like the above does.

              An analogy might be English terms. instance.transformation=, is the imperative to get a noun. instance.transform! is the imperative to perform the action - the verb if you will.

              Ok, so maybe that analogy is poor and is completely incorrect in proper terms of English.... 😳

              Todd

              It's a pretty good analogy. I think of them as:

              **transformation=**set the transformation (absolute)
              tranform! apply the transformation (relative)

              Hi

              1 Reply Last reply Reply Quote 0
              • C Offline
                confitex architure
                last edited by 3 May 2008, 19:18

                Not realy clear for me yet.
                If I understand well, that means "transformation" is usefull for add_instance (f.e.) A kind of insert definition

                   transform1 = Geom;;Transformation.new inspoint
                   instance = entities.add_instance componentdefinition, transform1
                
                

                and "transform!" to modify this instance.

                    instance.transform!(transform2)
                
                

                But I'll get use to it. 😄
                Thanks both of you for your help.

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

                Advertisement