• Login
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 4 Jun 2017, 10:49

    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
    • D Offline
      Dan Rathbun
      last edited by 11 Jun 2017, 20:38

      @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