[Plugin][$] JointPushPull Interactive - v4.8a - 30 Mar 24
-
-
Joao,
Thanks a lot for your comments. It is actually not so frequent to get documented and accurate feedback.
JPP 3.0 has a more complex and versatile UI because it tries to address many requests, mainly:
- multiple interactive selection (and thus unselection)
- support of pre-selection
- work across boundaries of Groups / Components
- support of interactive drag in order to set the offet by reference to points picked in the model
It is not easy to comply with the 'standard(s)' of Sketchup UI, because the situation is somehow different when you deal with multiple faces and editable interactive selection (SU Push Pull only consider the one face under the cursor!).
So here is a kind of answer to your comments:
@jql said:
1 - All Sketchup's native tools allow us to define a direction and then reverse it with the "-" operator and a value for the distance. For instance a pushpull of 1m down, might be defined by pushpulling, moving up and then hit "-1" on the VCB. JPP doesn't work like that and always assumes the direction of the side of the face we pick as the positive direction not the direction of the movement we do when dragging, wich for me is not intuitive within the Sketchup environment.
I know that. The problem is that when you have multi-faces not necessarily connected, the concept of Mouse direction is not obvious, except for the face under the mouse. So I use this convention of front-face direction as Positive.
@jql said:
2 - We have to click+drag to define a distance relative to existing geometry. This poses several problems when we have to orbit/pan around the model to find that geometry on the model while keeping the mouse button pressed down. Is there any possibility to make the input for inference be one click for start moving and second click to apply inference?
That's also the price to pay for being able to click on several faces in a row.
The trick for 'free' dragging is simply to click again on the last face selected. Then, with the mouse button released, you can move the offset around.@jql said:
3 - This would probably have to change the way selection is made on the fly... With standard sketchup it is made by using the shift and ctrl modifier keys. Is it possible to also replicate that behaviour?
Many users, among which I am, prefer an additive selection by click over click. With modifiers, you may accidentally not press CTRL or Shift and lose the whole selection.
In addition, in JPP Ctrl is used to toggle between the Grow mode and the Push Pull mode.@jql said:
4 - On Sketchup tools when you preselect something that preselection is not changeable.
I made the possibility to alter the initial selection just for flexibility and convenience.
@jql said:
5 - After the selection is defined you input the value on the VCB and press return/enter and the command assumes the distance. Is this possible to replicate too? Right now JPP accepts the VCB input but doesn't accept return or enter to assume the value.
Normally it should work, but you have to make sure that the cursor is over one of the selected face (again for the question of direction).
Note that there is a problem with the Double-Click (whhich is the alternative without keyboard). I fixed it and will publish in v3.3b.
Here is a small video to illustrate@jql said:
I guess all of these happen because you want to define several input methods and have found this the better way, but maybe the original Sketchup input methods are compatible with all the complexity of your plugin.
When working on plugins I usually try first to design something which is an extension of Sketchup GUI. But I have found that Sketchup is not so uniform, because tools are different in essence.
My guideline when I can is to try to make the workflow mouse-only when possible.Fredo
-
NEW RELEASE: JointPush Pull Interactive v3.3b - 09 Jan 15
JointPushPull Interactive 3.3b fixes a problem with the offset value used by Double-click right after launching JPP. A value typed in the VCB would be ignored.
See main post of this thread for Download of JointPushPull.
Fredo
-
@fredo6 said:
Joao,
Thanks a lot for your comments. It is actually not so frequent to get documented and accurate feedback.
JPP 3.0 has a more complex and versatile UI because it tries to address many requests, mainly:
- multiple interactive selection (and thus unselection)
- support of pre-selection
- work across boundaries of Groups / Components
- support of interactive drag in order to set the offet by reference to points picked in the model
It is not easy to comply with the 'standard(s)' of Sketchup UI, because the situation is somehow different when you deal with multiple faces and editable interactive selection (SU Push Pull only consider the one face under the cursor!).
So here is a kind of answer to your comments:
Fredo,
Thanks for considering it and taking the time to make this extensive answer. I understand the complexity of what you want to achieve here and you have the uttermost respect of this community for all you are trying, actually successfully achieving, to push forward.
Overall, as we have discussed before on another place, I think it's a shame you had to pull off such a convuluted method of achieving your stuff. Sketchup should have the tools/framework developers need to achieve this (and even more) already built in. If I would be able to call the shots inside Trimble I would try convincing you to work with them in further developing your framework, along with some designers and other programmers so to better adapt it to sketchup core/UI and open it to every developer as a base to create extensions that have all the features you're trying to achieve:
- Interactivity;
- Extendability;
- Multiple options;
- Performance;
- Inter context workflow (inside outside groups and components);
- Functionality;
- Accuracy;
- And so on...
In the end it would start by your core functionallity but would be open to even more, with greater stability and speed and a much better integration with the sketchup workflow. Particularly JPP tools should have been made native already.
@jql said:
1 - All Sketchup's native tools allow us to define a direction and then reverse it with the "-" operator and a value for the distance. For instance a pushpull of 1m down, might be defined by pushpulling, moving up and then hit "-1" on the VCB. JPP doesn't work like that and always assumes the direction of the side of the face we pick as the positive direction not the direction of the movement we do when dragging, wich for me is not intuitive within the Sketchup environment.
I know that. The problem is that when you have multi-faces not necessarily connected, the concept of Mouse direction is not obvious, except for the face under the mouse. So I use this convention of front-face direction as Positive.[/quote]
I believe I understand you perfectly but I don't fully agree with you. The way I see it, when you know what's happening, having multi faces selected or not, won't change what you want to happen. You're selecting those faces because you want an effect to happen on them. What should be obvious is what's happening in the UI when you're interacting with the software. Your method works and very well, the only thing that I feel is that it could be the same method as with other sketchup commands.
For instance Move/copy tool can be a multi face operation and you know that when you're moving left everything is also moving left.
In JPP I understand things are harder to visualize as you push pull multiple faces at the same time and this is a multidirectional aproach on geometry.
However that doesn't change if you see a vector in the first face when so much is happening at the same time.
What really makes a difference is the preview JPP generates. That is what people intuitively look at and a visual effect that beautifully relates to what one wants to achieve. It also related how other commands in sketchup works that wuch is the WYSYWYG aproach.
When the preview is being interactively generated intuitively I think: It's moving where I want it to go then I want to move it 1 unit in that direction, then I hit 1+ENTER and it's set. However this might not be true as 1m goes back after all... And then I (the user) might or might not relate to that vector and remember that it was, after all, what defined the positive direction. I believe that in the middle of such a gorgeous and promising interactive effect, the vector becomes secondary.
[quote="fredo6":16zp6hed][quote="JQL":16zp6hed]2 - We have to click+drag to define a distance relative to existing geometry. This poses several problems when we have to orbit/pan around the model to find that geometry on the model while keeping the mouse button pressed down. Is there any possibility to make the input for inference be one click for start moving and second click to apply inference?[/quote:16zp6hed]
That's also the price to pay for being able to click on several faces in a row.
The trick for 'free' dragging is simply to click again on the last face selected. Then, with the mouse button released, you can move the offset around.[/quote:16zp6hed]Thanks for this tip. It's very helpfull. However I still fell free clicking should have priority over the click/drag aproach. Making a selection is sometimes difficult so I often don't remember what was the last faces selected. I also make a lot of selection mistakes and so I have to make corrections. Having to remember that any particular faces should be the last one to select will add to selection difficulty. Also I might think that face should be the one I to be used, but it was the face next to it after all and I can only find that after trying. Again if this was a sketchup native tool, I would hit ESC key and would be able to select another point/edge/face as reference.
[quote="fredo6":16zp6hed][quote="JQL":16zp6hed]3 - This would probably have to change the way selection is made on the fly... With standard sketchup it is made by using the shift and ctrl modifier keys. Is it possible to also replicate that behaviour?[/quote:16zp6hed]
Many users, among which I am, prefer an additive selection by click over click. With modifiers, you may accidentally not press CTRL or Shift and lose the whole selection.
In addition, in JPP Ctrl is used to toggle between the Grow mode and the Push Pull mode.[/quote:16zp6hed]This is also another great tip I had missed. What I used to feel about selection was exactly the same as you described. Now I'm used to the sketchup way and find it better. This is of course personal but the thing is that even if it is true that many users prefer other methods for selection sketchup works like that and if people are using sketchup they might be used to it. Selection method consistency avoids users having to change their frame of mind in the middle of the process.
I'm going to make a very unfair proposition for solving this issue. I know I will really look like a ridiculous spoiled bratt but I'm pretty sure you could pull this off easily and you could make it compatible with your plugins:
What about a plugin that would toggle a way selections are made inside sketchup prior to every command (or even inside commands too)? Would it be possible?
Right now people have to keep CTRL, SHIFT or CTRL+SHIFT pressed down to make selections. If a plugin would make this combos TOGGLED on and off while selecting then everything would be solved. Imagine that you are selecting some faces and press CTRL+SHIFT once. Now the selection arrow is pemanenlty with the plus and minus sign until you toggle it off or change to another toggle.
(Now I know this was just me pushing my luck... I'm sorry.)
[quote="fredo6":16zp6hed][quote="JQL":16zp6hed]4 - On Sketchup tools when you preselect something that preselection is not changeable.[/quote:16zp6hed]
I made the possibility to alter the initial selection just for flexibility and convenience.[/quote:16zp6hed]Yes I appreciate it very much. However, as this changes the way sketchup works natively, it creates an extra layer of information we have to be aware of when your plugin is active. As your plugins are already very information intensive sometimes I get confused on what's happening.
I can tell you, for instance, that the partner I work with, avoids using JPP because of that (Even if I insist it's probably one of the first essential sketchup plugins to have...)
I would suggest that when clicking CTRL, SHIFT or CTRL+SHIFT, and only then, the plugin would allow to modify selection.
[quote="fredo6":16zp6hed][quote="JQL":16zp6hed]5 - After the selection is defined you input the value on the VCB and press return/enter and the command assumes the distance. Is this possible to replicate too? Right now JPP accepts the VCB input but doesn't accept return or enter to assume the value.[/quote:16zp6hed]
Normally it should work, but you have to make sure that the cursor is over one of the selected face (again for the question of direction).
Note that there is a problem with the Double-Click (whhich is the alternative without keyboard). I fixed it and will publish in v3.3b.
Here is a small video to illustrate[/quote:16zp6hed][quote="fredo6":16zp6hed][quote="JQL":16zp6hed]I guess all of these happen because you want to define several input methods and have found this the better way, but maybe the original Sketchup input methods are compatible with all the complexity of your plugin.[/quote:16zp6hed]
When working on plugins I usually try first to design something which is an extension of Sketchup GUI. But I have found that Sketchup is not so uniform, because tools are different in essence.
My guideline when I can is to try to make the workflow mouse-only when possible.Fredo[/quote:16zp6hed][/quote]
Yes I can see how frustrating and limiting this might be for a developer and I can't thank you enough for all you achieved. It's really amazing!
However I still feel some of the sketchup behaviours and UI common practices could be applied in your plugins.
For instance that CTRL for toggling Push Pull and Grow, couldn't it be made with ALT instead, freeing CTRL and SHIFT for selection as usual in sketchup?
I hope you don't feel anyway insulted by any of the comments above. I'm honestly trying to give you a positive feedback, and hoping you find it useful.
I also feel I'm being unfair here as I'm trying to perfect something that is not mine, nor I could ever manage to create and is really already on an outstanding level.
Best regards and thanks again for paying attention to my comments.
JoĆ£o
-
Joao
Thanks for your comment. I'll think about a flag for different style of GUI.
But keep in mind that Sketchup itself is not always so consistent in its GUI.
@jql said:
For instance that CTRL for toggling Push Pull and Grow, couldn't it be made with ALT instead
precisely, CTRL is used by the native Push Pull to toggle between PushPull and Grow! Indeed, since SU Push Pull is single-face, the native tool does not have a problem of multiple selection. So it does not matter for SU in this case.
More generally the CTRL, SHIFT and ALT modifier are used for various purpose depending on the Sketchup tool. It just happens that the Selection Tool uses CTRL for cumulative selection, but CTRL is used for copy mode in the Move Tool, is ignored in the LineTool and is used for toggling between radius / chord anchor when you draw a polygon.
Fredo
-
Yes that is inconsistent some times.
I think the command modifiers in Sketchup should stick with ALT. Alt is seldomly used but it distinguishes itself clearly from CTRL/SHIFT. It's main appearance might be autofold and on the Paint Bucket tool...
I guess CTRL is used everytime a plus sign appears in a tool and that is consistent even with the selection tool. However, your plugins are really selection dependant and if you want to have a way to interactively select as the command is operating (as you do) without the selection process affecting the actual command geometrical effect procedure, I think there should be a moment/event where that triggers selection mode, suspending that procedure while in the selection mode until the selection mode is finished.
Natively this moment for interactive selection is done by interrupting the command with the select tool and I don't see this as a bad option in native commands.
Your commands however are much more complex and you have to define a lot of parameters while in the command. That poses a question that I think is the question you're trying to solve (but I might be wrong):
If the selection isn't correctly made and you understand it in the middle of the command process if you'd cancel the command (like in native commands) you'd loose all the settings defined until then. This of course would imply user frustration... In sketchup commands that frustration isn't evident because all commands are simpler than yours.
The solution for this in your case would be something like:
1 - Simplifying your commands - I don't suppose this could be done without loosing functionality and no one wants that (I know I don't!)
2 - Finding a way to cancel the command without loosing configured options so one can select the right elements and then restart command - This might be stupid as sometimes we want to cancel the command because of misdefined parameters and if canceling is equivalent to assuming currently defined parameters we might be ruining functionality. Maybe this could be solved by a parameters history where FredoTools record not only the last assumed parameters on a successful operation but also a number of parameters defined before. Maybe even a favorites for parameters (complexity going sky high...)
3 - Defining a clearer selection and reselection methodology within the command process wich doesn't interfere with geometry creation procedure (for me this should be the way) - Hit a key or activate a button with the mouse, and you're on selection mode. Activate the command with a preselection and it would assume the preselection unless you toggled selection mode. Activate the command with no selection and selection mode would be on. I insist that, for me, it would be completely logical that this selection mode was not a toggle, but would be activated whenever SHIFT or CTRL would be pressed down and would remain active until release.Now that I think on this deeper and after you presented me your favorite selection method, I actually think toggle by pressing SHIFT/CTRL untoggling by releasing, makes more sense inside your plugins, than on regular sketchup work...
Well I'm sure you'll sort out what's the best option considering all.
Thanks again for your consideration,
JoĆ£o
-
Yes that is inconsistent some times.
I think the command modifiers in Sketchup should stick with ALT. Alt is seldomly used but it distinguishes itself clearly from CTRL/SHIFT. It's main appearance might be autofold and on the Paint Bucket tool...
I guess CTRL is used everytime a plus sign appears in a tool and that is consistent even with the selection tool. However, your plugins are really selection dependant and if you want to have a way to interactively select as the command is operating (as you do) without the selection process affecting the actual command geometrical effect procedure, I think there should be a moment/event where that triggers selection mode, suspending that procedure while in the selection mode until the selection mode is finished.
Natively this moment for interactive selection is done by interrupting the command with the select tool and I don't see this as a bad option in native commands.
Your commands however are much more complex and you have to define a lot of parameters while in the command. That poses a question that I think is the question you're trying to solve (but I might be wrong):
If the selection isn't correctly made and you understand it in the middle of the command process if you'd cancel the command (like in native commands) you'd loose all the settings defined until then. This of course would imply user frustration... In sketchup commands that frustration isn't evident because all commands are simpler than yours.
The solution for this in your case would be something like:
1 - Simplifying your commands - I don't suppose this could be done without loosing functionality and no one wants that (I know I don't!)
2 - Finding a way to cancel the command without loosing configured options so one can select the right elements and then restart command - This might be stupid as sometimes we want to cancel the command because of misdefined parameters and if canceling is equivalent to assuming currently defined parameters we might be ruining functionality. Maybe this could be solved by a parameters history where FredoTools record not only the last assumed parameters on a successful operation but also a number of parameters defined before. Maybe even a favorites for parameters (complexity going sky high...)
3 - Defining a clearer selection and reselection methodology within the command process wich doesn't interfere with geometry creation procedure (for me this should be the way) - Hit a key or activate a button with the mouse, and you're on selection mode. Activate the command with a preselection and it would assume the preselection unless you toggled selection mode. Activate the command with no selection and selection mode would be on. I insist that, for me, it would be completely logical that this selection mode was not a toggle, but would be activated whenever SHIFT or CTRL would be pressed down and would remain active until release.Now that I think on this deeper and after you presented me your favorite selection method, I actually think toggle by pressing SHIFT/CTRL untoggling by releasing, makes more sense inside your plugins, than on regular sketchup work...
Well I'm sure you'll sort out what's the best option considering all.
Thanks again for your consideration,
JoĆ£o
-
On the multiple selection, the problem is the following:
If you click/release on face and if it was to activate the 'free' drag push-pull, then whenever you move the mouse, the initial face would be push-pulled interactively. This would make it impossible to select a second face.
Illustration with the Standard Sketchup Push Pull.
In most cases you don't need to drag faces. Just select them, make sure the cursor is on one of the selected face and type the offset in the VCB (or just Return or Double-click is the offset value is already OK).
It is only when you want to set the face with respect to a reference point in the model that you need to interactively drag the faces.
Fredo
-
@fredo6 said:
It is only when you want to set the face with respect to a reference point in the model that you need to interactively drag the faces.
Fredo
This is probably why I'm the one bringing up the subject. This the process I use 90% of the time with sketchup native tools and JPP. The fact is that the functionallity you offer is flawless. There is nothing to point on that regard, so I actually feel ashamed of myself by seeming that I'm somehow bragging about UI.
The thing is that the way I always worked on Architecture is all about references to other geometry - alignements, porportions, visual axis, middle points, endpoints,... - as that adds geometric rule to space. I almos never think of space as an addition/subtraction of numbers. The thing that made me fall in love with Sketchup is no other than the inference system wich is an almost perfect system for the way I study space. I bet even if inference.
I feel that if there was a way to toggle selection on/off that free movement could break temporarily and then continue freely.
But don't mind about this questions of mine though, The functionality is there and I've been using your tools long enough already to know what to expect. An though they're feeling different from SU they do work! They do facilitate our life tremendously! And that is the purpose after all!
Thanks again,
JoĆ£o
-
Thank you very much Fredo
Happy and good new year to you
and a little German german quick card
Esense 3d -
Quick card German
-
It appears RoundPP refuses to deal with obtuse angle geometry.
-
Hi guys.
Do you have any idea why JPP is not working ?(for a friend)
The other tools from you (Fredo) , are working but this one doesn't .
I have the latest Libfredo, I use Sketchup 2015 64 bit . I have also tested it with no other plugins in the Plugins folder. In vain.The plugin seems installed, all the incons are alright . When I select one of its tools and try to run it on a face it just highlights a polygon or a triangle and then nothing. Somehow it doesn's select the surface as it should !
The Face selection is set to Surface, but it does not select the surface, it is only highlighting a polygon that is under the surface .I ran out of ideas.
EDITED
I have read back and found out about the DC being disabled. I have checked the behavior on my own Sketchup with them turned off and this seems to be it . Lets see if it works for my friend. I am not sure if it is written in the documentation about this, but could you post it at the conflicts ? Thank you !
-
@ely862me said:
I have read back and found out about the DC being disabled. I have checked the behavior on my own Sketchup with them turned off and this seems to be it . Lets see if it works for my friend. I am not sure if it is written in the documentation about this, but could you post it at the conflicts ? Thank you !
What is "DC"? Is it Dynamic components?
I don't know why there would be a conflict.Thanks for feedback
Fredo
-
DC rubies add several additional methods into the base Sketchup and related Classes.
If you have used any of these methods in your code, then IF those DC rubies have not loaded you will get errors.These include:
` Geom::Transformation.rotx
Geom::Transformation.roty
Geom::Transformation.rotz
Geom::Transformation.xscale
Geom::Transformation.yscale
Geom::Transformation.zscaleUI::WebDialog.last_width
UI::WebDialog.last_width=
UI::WebDialog.last_height
UI::WebDialog.last_height=Sketchup::ComponentInstance.copy
Sketchup::ComponentInstance.description
Sketchup::Drawingelement.local_transformation
Sketchup::Drawingelement.scaled_size
Sketchup::Drawingelement.unscaled_size
Sketchup::Drawingelement.set_last_size
Sketchup::Drawingelement.last_scaling_factorsModel.typename
Model.entityID
Model.delete_attribute
Model.layer`There are other "
DC...
" classes too, but I'd expect you won't have used those ! -
TIG,
Thanks for clarification.
I think I may use
model.entityID
. Actually I thought it was a native method (which would make sense).I have to check my code to track these instances.
Fredo
-
Model.entityID
is a weird one it always returns"Model"
, so unsure why it's used...You can trap it with something like:
if defined?(Sketchup.active_model.entityID) mid = Sketchup.active_model.entityID else mid = "Model" end
BUT then
mid = "Model"
is always right - so why not use the simplest fix ! -
@Tig and Fredo
You have the notion you look like aliens with superpowers to the rest of us mortals down here...don't you?
-
@TIG:
Now I know this is not a native method, I will be careful. In fact this method is convenient because you can use entityID on a parent whether Group, ComponentInstance or active model.
Fredo
-
This tool is amazing! However, I encountered some error with the follow push/pull.
When I tried to use follow push/pull, the following error occurred:undefined method `angle_between' for nil:NilClass
Ruby File Line Method
JointPushPullAlgo.rb 1339 vertex_average_factor
JointPushPullAlgo.rb 1089 follow_compute_direction
JointPushPullAlgo.rb 1056 block in block_prepare_vertices_F
JointPushPullAlgo.rb 1056 each
JointPushPullAlgo.rb 1056 block_prepare_vertices_F
JointPushPullAlgo.rb 890 block in block_prepare_vertices_all
JointPushPullAlgo.rb 890 each
JointPushPullAlgo.rb 890 block_prepare_vertices_all
JointPushPullAlgo.rb 500 algo_prepare_calculation_exec
JointPushPullAlgo.rb 477 algo_prepare_calculation
JointPushPullTool.rb 692 dragging_start
JointPushPullTool.rb 1190 onMouseMove
22-Feb-15 14:56:56Does anyone know why?? I followed exactly what the video showed, push/pull the top of a cone shaped object.
Would love some help! Thank you!!
Advertisement