Jump to content

[Plugin] Scaling cube from point down to Z=0


SmithsOfUrth

Recommended Posts

Posted · [Plugin] Scaling cube from point down to Z=0

Hey guys!

 

I'm working on a plugin (for Cura 3.6+) to enable manual supports, and one of the features I want to add is to show some kind of "preview" of what area the support is going to be taking.

Right now, I'm creating a cube and adding it to a X,Y position using this code:
 

active_camera = self._controller.getScene().getActiveCamera()
picking_pass = PickingPass(active_camera.getViewportWidth(), active_camera.getViewportHeight())
picking_pass.render()

picked_position = picking_pass.getPickedPosition(event.x, event.y)

After that, the script creates a cube kinda manually (I'm basing myself on the SupportEraser plugin) with a value entered by the user. Thus, the cube has the same width, height and depth.
What I want to do is to make it as big in the Z axis as necessary so that it touches the build plate , and the user can see what it'd look like once it's processed.

Is there a way to scale it enough?

 

Thanks!

  • Link to post
    Share on other sites

    Posted · [Plugin] Scaling cube from point down to Z=0

    There are two things you can do; You can either create longer squares with the MeshBuilder and move them down a bit (since they are places based on their center) or you can scale the model (check the setScale function of the SceneNode that contains the meshdata)

  • Link to post
    Share on other sites

    Posted · [Plugin] Scaling cube from point down to Z=0

    Thanks for answering, nallath.

    I ended up doing this to create a cube that touches the buildplate:

    s = size / 2
    dtb = distance_to_buildplate
    verts = [ # 6 faces with 4 corners each
      [-s, -dtb,  s], [-s,  s,  s], [ s,  s,  s], [ s, -dtb,  s], # a = x-yz
      [-s,  s, -s], [-s, -dtb, -s], [ s, -dtb, -s], [ s,  s, -s], # b = x+yz
      [ s, -dtb, -s], [-s, -dtb, -s], [-s, -dtb,  s], [ s, -dtb,  s], # c = xy-z
      [-s,  s, -s], [ s,  s, -s], [ s,  s,  s], [-s,  s,  s], # d = xy+z 
      [-s, -dtb,  s], [-s, -dtb, -s], [-s,  s, -s], [-s,  s,  s], # e = +xyz
      [ s, -dtb, -s], [ s, -dtb,  s], [ s,  s,  s], [ s,  s, -s] # f = -xyz
    ]

    where "distance_to_buildplate" is the position in the Y axis of the cube when you click on the model, which is the same thing as the distance from the cube the ground.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • Introducing the UltiMaker Factor 4
        We are happy to announce the next evolution in the UltiMaker 3D printer lineup: the UltiMaker Factor 4 industrial-grade 3D printer, designed to take manufacturing to new levels of efficiency and reliability. Factor 4 is an end-to-end 3D printing solution for light industrial applications
          • Thanks
          • Like
        • 3 replies
      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 26 replies
    ×
    ×
    • Create New...