sketchucation logo sketchucation
    • Login
    🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Rotate a component before place it with a key imput

    Scheduled Pinned Locked Moved Developers' Forum
    2 Posts 2 Posters 979 Views 2 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.
    • B Offline
      boom02
      last edited by

      I am trying to generate some geometry and then place it with model.place_component.
      I would like to mimic the function from Revit when you place a family if you press space, the family rotates and you place it rotated.
      Here is the code I am working with:
      ` #create geometry
      def geom(x,y,z,xc=0,yc=0,zc=0)

      group = Sketchup.active_model.entities.add_group
      face = group.entities.add_face [0,0,0],[x,0,0],[x,y,0],[0,y,0]
      face.reverse!
      face.pushpull(z)
      
      group.move! Geom::Transformation.new([xc,yc,zc])
      
      return group
      

      end

      #inputs
      w=500.mm
      d=100.mm
      h=100.mm
      repeat = false

      comp_to_place = geom(w,d,h)

      def_comp = comp_to_place.definition

      #place component
      model = Sketchup.active_model
      model.place_component(def_comp, repeat)
      #if user press space, cancel model place, rotate component, start model place again
      #delete place component that sits in 0,0,0`

      My idea to approach this challenge is to get the user input and when the user press space to cancel the model place, rotate the geometry and start a new model.place_component with the rotated geometry.
      Do you guys think this is the right way? And if yes how can I get the key press from the user? Thank you!

      1 Reply Last reply Reply Quote 0
      • Dan RathbunD Offline
        Dan Rathbun
        last edited by

        @boom02 said:

        Do you guys think this is the right way?

        NO. The spacebar is pre-coded to activate the native SelectionTool. Many users are used to it this way, and do not want to change it. Those that have changed it, have done so for their own choice of command.

        Secondly, you cannot affect how the built-in place_component works as it is a native tool, most especially not when using the repeat mode. (Ie, there really is no way to trap the spacebar and prevent it from bubbling-up to SketchUp's shortcut handler.)

        The way it is designed, when not in repeat mode, is that once placed, the normal MoveTool is active, and it's hover rotate mode can be used. Just hover the MoveTool cursor over a the side of a component's bounding box, and 4 rotate handles will appear. Move to one of the handles and you'll see the cursor change to a protractor.

        I myself, also kinda miss the ACAD spin before place feature.

        @boom02 said:

        ... how can I get the key press from the user?

        The best way is inside a custom tool class written in Ruby.
        http://ruby.sketchup.com/Sketchup/Tool.html

        And you'd need to create a menu item pointing at a method object that rotates the selected object. Then that menu command can be assigned any shortcut, by users according to their own desires.

        I'm not here much anymore.

        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