Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add rotation type-ins #2779

Open
thesec opened this issue Nov 14, 2017 · 80 comments
Open

Add rotation type-ins #2779

thesec opened this issue Nov 14, 2017 · 80 comments
Labels
Status: Deferred We don't have time to work on this for now but intend to in the future. Status: Triage This ticket requires input from someone of the Cura team Type: New Feature Adding some entirely new functionality.

Comments

@thesec
Copy link

thesec commented Nov 14, 2017

I'd like to edit the rotation angle per axis.

@ChrisTerBeke
Copy link

You mean an input field?

@thesec
Copy link
Author

thesec commented Nov 14, 2017

Yep 👍

@ChrisTerBeke
Copy link

Fair enough. Not sure why those don't exist yet indeed...

@ChrisTerBeke ChrisTerBeke added the Type: Improvement Improvement to existing functionality. label Nov 14, 2017
@awhiemstra
Copy link
Contributor

Because a given rotation can be represented in multiple forms. The most common reasonably user-friendly representation for these kinds of inputs is Euler angles. But several combinations of Euler angles can represent the same rotation when represented as a quaternion or a matrix. This can lead to strange effects where suddenly your inputs flip around or not matching with the values you typed in.

In short, it does not exist yet because it is actually a pretty hard problem.

@thesec
Copy link
Author

thesec commented Nov 15, 2017

... already solved by other slicers and every CAD software you would not want the "world's most advanced 3D printing software" to stand behind ;D

@Ghostkeeper
Copy link
Collaborator

Ghostkeeper commented Nov 25, 2017

Let's do some competitor analysis then.

Other applications:

  • Slic3r has menu items for "Rotate around X", "Rotate around Y", "Rotate around Z". This brings up a pop-up where a user can input one angle, then press OK to apply.
  • Simplify3D has a transformation dialogue where users can apply X, Y and Z rotation at the same time. This applies X first, then Y, then Z, which gives some weird results if you modify Z first and then X, because the X rotation is now in the Y direction. That's the problem that awhiemstra has in mind if I understood the spirit behind his post correctly.
  • Blender has a hotkey R where you can type "R90" to rotate 90 degrees around the axis determined by the current camera position in relation to the model. The "90" is not in any visible text box and there is no button or even a real way to discover this. This is why people think Blender is unintuitive.
  • CloudCompare allows the user to enter an axis to rotate around and an angle. It also has an Apply button. Similar to Slic3r, really.
  • AutoCAD allows the user to enter a number while rotating just like Blender, but they have a text box that appears next to the cursor while you're rotating so that you can actually see what you're typing.

I'd say that my preference goes for a solution similar to AutoCAD where the user can enter a number while the rotation is going on. But since we require the user to hold the mouse button while rotating it could be a bit more difficult to use for Cura users.

@thesec
Copy link
Author

thesec commented Nov 25, 2017

Great overview, thanks @Ghostkeeper .

Blender has the most counterintuitive approach.

Simplest would be three text boxes X, Y and Z for entry in each axis and the angles applied as each box is confirmed explicitly by button or enter-key. Seems pretty WYSIWYG and straightforward as you do have the order only, not a matrix with each step taken.

@Ghostkeeper
Copy link
Collaborator

That's the Simplify3D approach, yes. Like I said though, that also has some disadvantages that awhiemstra and I pointed out.

@DDDirk
Copy link

DDDirk commented Dec 3, 2017

In Blender you can see the angle at the bottom left. Or in the Properties Editor you can see the fields for each axis (if you don't see that, the visibility can be toggled with N).
If you just use R, indeed that rotates from the viewpoint, which can rotate the model around all three axes at the same time, as can be seen in the Properties Editor. But you can also specify the axis after the R, eg RX40 (also indicated at the bottom left).
Oh, and you can also first select an axis by choosing a viewpoint along that axis with NumPad 1, 3 or 7 and then just use R. That way you can see the grid behind it for reference (in orthogonal view; Num5).

All this can be done without ever touching the mouse. This is why I love Blender (well, one of the reasons). (An important reason some people hate Blender is propably the steep learning curve that makes them miss elementary stuff like this.)

@thesec
Copy link
Author

thesec commented Dec 3, 2017

This is not about blender, nor about keyboard shortcuts.

@DDDirk
Copy link

DDDirk commented Dec 3, 2017

Inspiration was looked for elsewhere, and the Blender methods work very fast. Having the grid in the background can also be very useful.
The usage of keyboard shortcuts is also very relevant if you have RSI. If you've never had that you will probably not understand the immense gravity of the problem.

@thesec
Copy link
Author

thesec commented Dec 3, 2017

Blender was already mentioned. Keyboard shortcuts remain OT, add them separately.

@DDDirk
Copy link

DDDirk commented Dec 6, 2017

Yeah, but the info about Blender was wrong, so I corrected it.

And it's the most informative presentation, giving both the total angle from the viewpoint and the separate orthogonal angles. (Update: to see the former you might have to press T.)
However, having this info next to the object in a floating box might indeed be handier. But being able to permanently see the cumulative rotation is also handy. For example, in Blender if you first press RX10 and then RX5, at the bottom left you see the current rotation (5°) and in the top right (yes, too far apart) the cumulative rotation (15°).
How many text boxes can one want? :)

By OT do you mean On of Off Topic? :)
I'd say On, unless it's about adopting shortkeys across the board. Without that, with every separate item, the input method should also be addressed. And I am an extremely strong supporter of using as many shortkeys as possible. RSI can really ruin one's life (once you have it it's a constant struggle for the rest of your life).

@thesec
Copy link
Author

thesec commented Dec 6, 2017

So you have RSI for entering coordinates only then? hrhr
Make it another, separate thread.

@herrdeh
Copy link

herrdeh commented Jun 25, 2018

Just my 2cts:
Consistency matters!
Therefore, the "rotate" control should work like the "move" control:

Open the panel when clicking - with 3 boxes for numbers,
Do the action {rotation) after number has been punched and "tab" key has
been hit or the input box is left otherwise.

Thus, the commands will be observed sequentially and no mess will occur. The numerical control will not do anything else than the graphical input does at the moment.

And the user does not have to get familiar with different behaviours in moving and rotating.

@Ghostkeeper
Copy link
Collaborator

Our project manager removed this from our planning. We won't be getting time to implement this any time soon.

@Ghostkeeper Ghostkeeper added the Status: Deferred We don't have time to work on this for now but intend to in the future. label Jul 4, 2018
@ianpaschal
Copy link
Contributor

We just discussed this one as a team. Indeed, as Arjen said, when mucking about with matrices things get complicated fast (we actually have some other issues related to that... halp).

But, so long as the rotations are always relative and applied sequentially, this is no more likely to produce weird behavior than using the rotate tool. This is essentially the Simplify3D method, as seen in Ruben's analysis.

@ianpaschal ianpaschal added Status: In Progress Type: New Feature Adding some entirely new functionality. and removed Status: Deferred We don't have time to work on this for now but intend to in the future. Type: Improvement Improvement to existing functionality. labels Jul 31, 2018
@ianpaschal ianpaschal changed the title Improvement: Edit rotation Add rotation type-ins Jul 31, 2018
@ianpaschal
Copy link
Contributor

Devs, CURA-5609

@fieldOfView
Copy link
Collaborator

Note that the Cura Lulzbot Edition has an implementation of "just three euler angles to represent the current rotation", and it is just about as buggy as one would expect.

Perhaps the trimesh module could be used to get a more reliable transformation tree and matrix decomposition (#2875)

@ianpaschal
Copy link
Contributor

The key here is not to try and represent the current rotation. That's the really hard part. One thing on my to do list today is to look at what libraries we can use to help us not reinvent the wheel (badly) when it comes to matrix decomposition.

But for this issue it should be possible to avoid that entirely by making the inputs relative (always reset to zero and apply as soon as the box loses focus, the latter of which is also the default behavior for other transform tools).

@truegret
Copy link

I am the creator/requestor of #15407, and as a creator/modeler/engineer, the solution is really quite simple and no need to complicate it by the use of Euler calcs (maybe it would be helpful for code development). As I say, the solution would be very simple.

  1. Select the model (in my case I want to align two models and have a a face on each model snap together (as I recall, obsolete Windows Autodesk 123D having this feature)
  2. Select the Rotate tool
  3. Deselect Snap Rotation
  4. Select the desired axis of rotation
  5. Have the "Degree" box be a Dialog Box
  6. Enter the desired Angle
  7. Enter

If another angle is desired for another axis, select a different axis for step 4 above and repeat. Otherwise, allow for two faces (one on model A and one Model B and "Snap" them together.

It is NOT an edge, and is not difficult to implement.

Copy link
Contributor

Hi 👋,
We are cleaning our list of issues to improve our focus.
This feature request seems to be older than a year, which is at least three major Cura releases ago.
It also received the label Deferred indicating that we did not have time to work on it back then and haven't found time to work on it since.

If this is still something that you think can improve how you and others use Cura, can you please leave a comment?
We will have a fresh set of eyes to look at it.

If it has been resolved or don't need it to be improved anymore, you don't have to do anything, and this issue will be automatically closed in 14 days.

@github-actions github-actions bot added the Status: Stale ⌛ This issue is over a year old. It might be obsolete or just needs a fresh set of eyes label May 22, 2024
@FalconFour
Copy link

FalconFour commented May 22, 2024

Oh man, there is no way we're still this far into Cura's maturity but we still don't have the basic ability to rotate by a specific dimension, really?

Definitely don't think this issue is going to die without a fight, this many times requested. I'll admit I haven't used Cura in quite some time, in part because of this tip of the iceberg of UI issues, so I'm simply not sure if some solution has been implemented since then (in, as mentioned, three major releases ago).

@Claghorn
Copy link

I agree with previous comment. This is a vitally useful feature. I'm tired of modifying the model to rotate it precisely because it is almost impossible to rotate in cura.

@github-actions github-actions bot added Status: Triage This ticket requires input from someone of the Cura team and removed Status: Stale ⌛ This issue is over a year old. It might be obsolete or just needs a fresh set of eyes labels May 22, 2024
@leoheck
Copy link
Contributor

leoheck commented May 22, 2024

We are cleaning our list of issues to improve our focus.

Cool. Clean the fucking list by implementing the basic features instead of just throwing requests into the trash bin.

@truegret
Copy link

I am the creator/requestor of #15407, and as a creator/modeler/engineer would still like the ability to enter a specific angle, please.

@nallath
Copy link
Member

nallath commented May 22, 2024

We are cleaning our list of issues to improve our focus.

Cool. Clean the fucking list by implementing the basic features instead of just throwing requests into the trash bin.

You might not mean it like that, but can you calm down a bit? We setup the bot because there are a ton of issues that are no longer a thing, which is what it's supposed to prune. I don't love the solution either, but as you already stated; I'd love to just build things instead of having to deal with things that may or may not be an issue.

@herrdeh
Copy link

herrdeh commented May 22, 2024

I'd like to give a strong vote for this issue as well.
I think it's just a very basic feature, IMHO it's necessity does not really require any debate.

@nallath
Copy link
Member

nallath commented May 22, 2024

I'd like to give a strong vote for this issue as well. I think it's just a very basic feature, IMHO it's necessity does not really require any debate.

At this point I honestly don't even know which of the presented options people want. I know it's frustrating that it's not done yet. But there are quite a few options, and despite people claiming that they are easy, most of them aren't (and the ones that are easy don't seem that useful to me, but I'm not a great judge here, as I've never needed the feature in the first place).

@gaby64
Copy link

gaby64 commented May 22, 2024

My vote is on something similar to the move input interface, the numerical value of each rotation axis is shown and can be edited one by one.

@Anarasha
Copy link

Hi 👋, We are cleaning our list of issues to improve our focus. This feature request seems to be older than a year, which is at least three major Cura releases ago. It also received the label Deferred indicating that we did not have time to work on it back then and haven't found time to work on it since.

If this is still something that you think can improve how you and others use Cura, can you please leave a comment? We will have a fresh set of eyes to look at it.

If it has been resolved or don't need it to be improved anymore, you don't have to do anything, and this issue will be automatically closed in 14 days.

Well you're certainly right that 7 years is more than 1 year :-)
I still think this would be useful for the people using Cura - but I myself switched slicer 2 years ago, so I have no skin in this, so to speak.

@leoheck
Copy link
Contributor

leoheck commented May 22, 2024

We setup the bot because there are a ton of issues...

Oh, was it a bot @nallath ? I should have been more polite then... apologise to the bot that had the feelings hurt.

@eazrael
Copy link

eazrael commented May 22, 2024

Not sure what the others want, but I am satisfied with what FlashForge's Flashprint offers:
image

Anybody else can probably share a similar screenshot from their preferred non-Cura slicer.

@nallath
Copy link
Member

nallath commented May 22, 2024

We setup the bot because there are a ton of issues...

Oh, was it a bot @nallath ? I should have been more polite then... apologise to the bot that had the feelings hurt.

As if your statement wasn't meant at every developer working at Cura? There is really no reason to double down if someone asks you to tone it down a bit.

@nallath
Copy link
Member

nallath commented May 22, 2024

Anybody else can probably share a similar screenshot from their preferred non-Cura slicer.

I'll have a look, but I think it might not actually work given the same arguments as before (eg; rotating something, scaling it, rotating it back)

Basically the options that are there are these: #2779 (comment)

@eazrael
Copy link

eazrael commented May 22, 2024

The implementation in Flashprint is quite simple: As soon as you close the panel or switch the tool, it forgets the rotation angles. The object stays rotated, the fields are reset to zero. You can still undo this via ctrl-z. The input boxes are still very useful even with that limitation.

@gaby64
Copy link

gaby64 commented May 22, 2024

Anybody else can probably share a similar screenshot from their preferred non-Cura slicer.

I'll have a look, but I think it might not actually work given the same arguments as before (eg; rotating something, scaling it, rotating it back)

Basically the options that are there are these: #2779 (comment)

Well then implement what's easiest and let us test it instead of having this stay in purgatory forever, almost everyone else has figured out a way to do it.

@truegret
Copy link

You can have the two faces of bodies/model snap if making the angle textbox is not "editable".

@nallath
Copy link
Member

nallath commented May 22, 2024

Anybody else can probably share a similar screenshot from their preferred non-Cura slicer.

I'll have a look, but I think it might not actually work given the same arguments as before (eg; rotating something, scaling it, rotating it back)
Basically the options that are there are these: #2779 (comment)

Well then implement what's easiest and let us test it instead of having this stay in purgatory forever, almost everyone else has figured out a way to do it.

Or, just look at those options and give your feedback instead of this snark. I understand the frustration, but this isn't helping or constructive. The question isn't how it can be done, there are some ways to kinda do it. But each has it's own disadvantages. I have absolutely no interest in building something at random and have this discussion again, but then with the disavantage of having done the work.

I also don't know what priority this will get, as I'm not the product owner. I was considering spending some of my own time on figuring out a solution, but my desire to do that is rapidly dropping.

@nallath
Copy link
Member

nallath commented May 22, 2024

The implementation in Flashprint is quite simple: As soon as you close the panel or switch the tool, it forgets the rotation angles. The object stays rotated, the fields are reset to zero. You can still undo this via ctrl-z. The input boxes are still very useful even with that limitation.

That is very doable. The main issue is indeed having rotation typeins that stay at a value. If you just want to give a single rotation in world coordinates that snap to zero after it's applied is doable.

@truegret
Copy link

I concur with the proposal made by @eazrael.

My use case was to align the faces of two models, and have the faces snap, as I think I stated in #15407
as they did in the old Windows-based Autodesk 123D tool.

Thanks.

@gaby64
Copy link

gaby64 commented May 25, 2024

Anybody else can probably share a similar screenshot from their preferred non-Cura slicer.

I'll have a look, but I think it might not actually work given the same arguments as before (eg; rotating something, scaling it, rotating it back)
Basically the options that are there are these: #2779 (comment)

Well then implement what's easiest and let us test it instead of having this stay in purgatory forever, almost everyone else has figured out a way to do it.

Or, just look at those options and give your feedback instead of this snark. I understand the frustration, but this isn't helping or constructive. The question isn't how it can be done, there are some ways to kinda do it. But each has it's own disadvantages. I have absolutely no interest in building something at random and have this discussion again, but then with the disavantage of having done the work.

I also don't know what priority this will get, as I'm not the product owner. I was considering spending some of my own time on figuring out a solution, but my desire to do that is rapidly dropping.

A year in or two maybe that would be acceptable, but it's been almost 7 years, someone has got to take initiative and build something, anything...

At least the ball can start rolling and the relevant portions of code can be more evident for others to try their own implementation.

@yakoder
Copy link

yakoder commented Sep 30, 2024

Potential workaround: Import the STL into OpenSCAD and apply rotation there.

There might be issues, but at least it's something that might work today, not in another 7 years.

rotate([x_angle, y_angle, z_angle])
import("path/file.stl");

ETA: To the Cura devs. Users are frustrated, please don't add to that by berating them. It just makes you (dev) look bad.

But I get you, really. Over 3.5k issues is daunting -- and frustrating. GH's "issue tracker" is horrid for user-facing input, as it was designed for developer-to-developer not user-to-developer.

Patience is needed on all sides, but 7 years? It's better than Mozilla where issues are 14+ years in some cases.

@truegret
Copy link

Greetings yakoder -
Perhaps I am missing how you envision this helping me ... I am not understand how I can leverage OpenSCAD.
I can rotate my model within the slicer du jour (Cura, Prusa, Orca, etc), however, I am seeking a solution to have the direction of the pattern in the Infill to be the length.

In this attachment, I want to accomplish this Infill direction, but print on a side to minimize supports. I hope this adds clarity.

13411 FeatureReq_SelectInfillDirection v1

@yakoder
Copy link

yakoder commented Sep 30, 2024

@truegret FWIW, That's a completely different issue than the issue this thread is discussing, that being part rotation. However I've just needed to adjust similar to what you were asking about elsewhere, so here's what you (hopefully) are needing:

Infill line direction is what you're asking about, and that does exist already. Search settings for "direction" and you'll find it.

My issue, and my understanding of the majority of this thread, is that I needed to rotate a part 3.1465 degrees from flat to allow a certain section to be printed flat. (Water runoff channel.) As is, there is no way to "type-in" the rotation amount, and getting exactly 3.1465° of rotation isn't possible using the mouse drag controls.

From this, and several other open issues for Cura, it's become blatantly obvious that the Cura developers 1) will not fix issues; 2) don't care about users; 3) users need to fend for themselves, even if that means using 3rd party tools (e.g., OpenSCAD) to get the job done today, not at some (probably never happening) time in the future.

Ranting aside, hopefully you looking for the "Line Directions" setting will help you out. It shows up for "Lines" and "Grid" infill patterns, but not "Gyroid", which I personally use more. It'll probably take a few attempts at guessing the right angle and re-slicing, but you'll get it. At least with that we can actually "type-in" the angles.

BTW, I did need to use that for a part which was on the plate diagonally (had to be, wouldn't fit the other way), but for the Top Surface line directions. The defaults of "[45,135]" (which IMHO is bad UX to show as "[]") wouldn't put the lines at the desired direction for strength.

2024-09-30_172048

@truegret
Copy link

truegret commented Sep 30, 2024

Correction No.2 - The tip you provided is helpful, however, not quite what I am looking for and am happy to create a new request thread for what I am thinking/wishing/hoping for ....
I print sometimes, with the affordable ZYLTEch Carbon Fiber PLA and want to maximize strength. I want to print the Infill orientation as shown in the pic, but with the model on a side. Such that the grid pattern (or whatever pattern) is going along the X or Y. I think I will try to create that body in Fusion360.

My apologies, yakoder .... I see I responded to the wrong issue. I really am sorry to add to your workload.

I thought I was responding to "Issue 13411-Ability to change orientation of infill orientation".

Please accept my apology.

WRT this issue, #2779 - I was thinking of the old method of "snapping faces of two objects to align", or an easier way to add better precision to rotation.

ARGH! I think the #13411 issue was/is for another slicer ....... ok, I'm embarrassed. Well, I just want to give feedback to all software tools (I am a retired, burnt-out software developer/test engineer and can't help myself). I'll check the tips in my Cura v5.8.0 .... thanks!

Cheers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Deferred We don't have time to work on this for now but intend to in the future. Status: Triage This ticket requires input from someone of the Cura team Type: New Feature Adding some entirely new functionality.
Projects
None yet
Development

No branches or pull requests