DesignCAD User Forum

General DesignCAD Topics => Feature Requests => Topic started by: bdeck on October 18, 2018, 09:12:22 AM

Title: Point Relative Command
Post by: bdeck on October 18, 2018, 09:12:22 AM
Point Relative Command:

Point Relative Command should always, always, ALWAYS default to "Last Point," regardless of the previous setting used.

"Last Point" should be made available for doing point moves in point select mode.

bd
Title: Re: Point Relative Command
Post by: Rob S on October 18, 2018, 09:19:13 AM
Agreed, this should be the default.  Way too easy to make drawing error if cursor position happens to be selected when you don't realize it.


ps.  Except maybe there should be the option to retain last used setting for users who are so inclined.   :)
Title: Re: Point Relative Command
Post by: Dr PR on October 19, 2018, 06:04:23 PM
Personally, I prefer to use the "Reference Point" mode, and I wish the program always defaulted to this.

But I do agree that the default "out of the box" mode should NEVER be "Last Cursor Position" because cursors can wander from where the user left them.

I agree that the program should remember the last mode the user used and default to this at program start up. That way it would default to whatever the user prefers.

Phil
Title: Re: Point Relative Command
Post by: JJG on October 20, 2018, 03:16:23 AM
Agreed with Dr PR :  the program should remember the last mode the user used and default to this at program start up. That way it would default to whatever the user prefers.
Title: Re: Point Relative Command
Post by: adriank on October 20, 2018, 04:18:17 AM
I agree with JJG. - which means 'always do what the Doctor says'!
Currently the command always defaults to 'last point', but I only ever use the command to find the drawing origin, so I want it to default to the origin.

As we are always finding, we all use this program in different ways. Having the program remember the last used (beyond the current session, as it does now) seems like it'd satisfy all of us.

Adrian
Title: Re: Point Relative Command
Post by: Rob S on October 20, 2018, 08:35:41 AM
I can see from the above confusion the devs will have a hell of a time figuring out what we want, and will therefore be inclined to leave well enough alone.

A user configurable default setting might be the only possible improvement.  If last used is included, it should only persist for a short time, and then revert to the preset default.

There, I have my feet firmly down on both (or all) sides of the fence, at great risk to myself...  :)

Title: Re: Point Relative Command
Post by: bdeck on October 21, 2018, 07:25:34 PM
EDIT 12/12/2018
A user configurable default setting might be the only possible improvement.  If last used is included, it should only persist for a short time, and then revert to the preset default.

Hi Rob,

Agreed.

(Longer reply removed here after rereading Rob's suggestion)   


For probably the vast majority of users, the three most common uses for the Point Relative command are
   Set the second point when drawing an entity  (line, box, or circle)    
   Set the destination when moving points in point select mode.
   Set the destination control point when moving an entity

In those cases, the "Last Point" option is needed more often than not, and should be the default, as it is also the option requiring the fewest mouse clicks. But I would be happy with a new setting (in menu/Options/Options?) to allow the user to choose the default.

Just about the only time some of us use the "Reference Point" optlon is when forced to do so by DC (ie when doing point moves in point select mode.)

DC's crime here is that, after briefly changing the option to "Reference Point", the average user needs to reset the option to  "Last Point" on the very next use of the Point Relative command. For those who do not get paid by the hour, this requirement is downright  oppressive.

[rant removed]
 
I agree that the program should remember the last mode the user used and default to this at program start up. That way it would default to whatever the user prefers.

Hi Dr PR,

In fact both Rob S and I have suggested that DC do the exact opposite, UNLESS  a new [check box] is set to that functionality.

Rob's suggestion is the only way to get what every user prefers.

I presume that is what you meant to say.

Currently the command always defaults to 'last point', but I only ever use the command to find the drawing origin, so I want it to default to the origin.

Hi Adrian,

The "Origin" option is in the Point Relative dialog only for convenience. DC has a dedicated command to perform that function if you need it for repeated operations. See the PointXYZ command.

Best Regards,
BD
Title: Re: Point Relative Command
Post by: bdeck on October 22, 2018, 10:19:04 AM
Hi Rob S, Dr PR, JJG. Adrian, etal,

Here's an even better alternative that would work for all users, even if they are totally blind.

And it guarantees the absolutely lowest possible number of mouse and key clicks overall.

1)  Point Relative always defaults  to "Last Point" option, with all numeric input fields cleared.
2)  If the user hits the same keyboard shortcut (eg apostrophe) a second time, the option changes to "Reference Point"
3)  The "O" key changes the option to "Origin"
4) The "C" key changes the option to "Last Cursor Position"
5)  If the user hits [F12], all the numeric fields are restored to their prior values.
6)  In all cases, initial focus is set to the first numeric field, as it is now.

No Checkbox required!   Ever!
User never has to look at the monitor.

Eh?

bd

Title: Re: Point Relative Command
Post by: Dr PR on October 22, 2018, 12:35:36 PM
I guess I am not the "average" user because I started using only the "Reference Point" option many years ago.

I use the command to set points relative to just about any place in the drawing, and this is certainly not relative to the last drawing operation or the last object selected. That's the beauty of the "Reference Point" operation - the past drawing history is irrelevant.

A big virtue of the "Reference Point" option is that you do not have to select anything or do anything prior to starting the command. Then you can set the reference point anywhere. The suggestion that "Reference Point" should default to "Last Point" essentially eliminates the "Reference Point" option. I never want it to work that way! Having to press the apostrophe key twice increases the work load!

I don't want the values to reset to zero (we currently have this option and I don't use it). First of all, we will never do a point relative operation with XYZ offsets of 0,0,0, so those values will always be the wrong values. Second, I sometimes want to repeat the same XYZ values, so having them remembered is useful. Third, in most cases we will have to enter new values in one or more fields, so it doesn't matter if they are the old values or if they are reset to zero.

I think the "Last Cursor Position" option should be eliminated. Since the cursor can (and will) move without the user noticing it, this is just asking for errors.

I do not recall ever using the "Origin" option.

"Last point" ties us to previous drawing operations. When I change to working on some new part of the drawing it would be a big nuisance if it defaulted to the last point.

I like it to work the way it does - remember the user's last option, not only for the current drawing, but every time the program starts up and a new drawing is opened.

Phil
Title: Re: Point Relative Command
Post by: Dempsey on October 23, 2018, 07:16:12 PM
I agree with Phil, most of the time I use "Reference point".

BTW, due to severe health issues of my wife since March I have only been able to followed the discussions on the forum occasionally, and had no time to really participate. Keep up the good work.
Title: Re: Point Relative Command
Post by: Rob S on October 23, 2018, 07:25:30 PM
We've missed you, very sorry to hear the reason why.

Best wishes to the both of you.

Title: Re: Point Relative Command
Post by: bdeck on October 23, 2018, 10:32:23 PM
I use the command to set points relative to just about any place in the drawing, and this is certainly not relative to the last drawing operation or the last object selected. That's the beauty of the "Reference Point" operation - the past drawing history is irrelevant.

Hi Phil,

"Last Point" has nothing to do with past history. In fact, if there are currently no points in the point buffer, DC will gray out the "Last Point" option and slam you into the dreaded "Last Cursor Position" option. (The one benefit from using "Reference Point" exclusively is that you will never get slammed into "Last Cursor Position".)

Perhaps you are unfamiliar with how the "Last Point" option works. Here's an example:

To draw a circle of radius 4 using "Last Point", you would simply:
   1)  Hit the "O" key       (to start the circle command);
   2)  set the center point of your circle by any means you desire;
   3)  hit [Apostrophe]    (to start the Point Relative command);
   4)  key in the X value of 4; and
   5) hit [ENTER]           ( the Point Relative command ends as it sets the final point for your circle).

Voila. You are done. The center point of the circle (set in step 2) is the "last point" set prior to using the Point Relative command.

If this operation had been performed using the "Reference Point" option, the Point Relative command would not have ended or set a point at step five. Instead the dialog would have disappeared, requiring you ( without any prompting ) to find the center point that you already set in step 2, and then to try to set another point on top of it, without accidentally snapping to another nearby point. Why would anyone choose that as his exclusive mode of operation?
 
We all use the "Reference Point" option,  sometimes because it is the best tool, and mostly because DC forces us to use it during point moves, but few of us would choose to use it exclusively.

Quote
I don't want the values to reset to zero (we currently have this option and I don't use it).
 
Good point.  I wouldn't use it either, if I had no way to restore the cleared values, as I had proposed. But you've persuaded me that it might be better to make the Restore function available to users who select "reset values to zero", and not to zero values default.

Quote
First of all, we will never do a point relative operation with XYZ offsets of  0,0,0, so those values will always be the wrong values. Second, I sometimes want to repeat the same XYZ values, so having them remembered is useful.  Third, in most cases we will have to enter new values in one or more fields, so it doesn't matter if they are the old values or if they are reset to zero.
 
Here's an example of how those of us who work in 2D would benefit from keeping the "Reset values to zero" box always checked, so long as a "Restore" key were available.
 
Imagine that you are following the steps above to draw a circle in 2D. After you hit [ENTER], you discover that the second point is not horizontally disposed from the center point, and the radius is larger than 4 units. The error is because you failed to clear the Y numeric field after entering 4 in the X field, and now you have to redraw or edit the circle. This error could never have occurred if all the fields had been zeroed previously.

Having a "Restore" key available makes it practical to keep "reset values to zero" checked unless you plan to do multiple operations with the same offsets.

Quote
Having to press the apostrophe key twice increases the work load!

OK, How's this?

1 )  Each instance of Point Relative defaults to the "Reference Point" option.
2 )  If the user hits the same shortcut key (eg apostrophe) again in the same instance, the option changes to "Last Point"
3a) If  the "Always reset values to zero" box is checked, all numeric input fields are cleared, as they are now.
3b) If the user hits a Restore key, for example [F12], all the numeric fields are restored to their prior values.
4 )  The "O" key changes the option to "Origin"
5 )  The "C" key changes the option to "Last Cursor Position" ( alternatively, this option could be eliminated from the dialog )
6 )  The "R" key changes the option back to "Reference Point" (using the apostrophe as a toggle would force user to look at screen to avoid errors)
7 )  The "L" key also changes the option to "Last Point" (useful in the event that  the command someday allows user-selected defaults)
8 )  In all cases, initial focus is set to the first numeric field, as it is now.
9 )  Point Relative command should be fixed to allow Last Point option in point moves.
10) At the very least, DC must stop slamming users into "Last Cursor Position" when they have chosen the "Last Point" option for a point move.

Again, this scheme eliminates all mouse operations and hence the need to look at the screen while executing the command.

Although the "Origin" option is dupicative of the PointXYZ command, I'm OK with the redundancy, as it eliminates the need to remember the shortcut for the rarely-used PointXYZ command (semicolon). And it is immediately available if one hits the apostrophe in error while reaching for the semicolon.

Our single point of agreement so far is that "Last Cursor Position" is a terrible option to have on the dialog, and we'd both like to see it gone. But I guess it's possible that someone, somewhere has found a valid use for it, although I cannot imagine what that use might be.  ( Even you used "Last Cursor Position"  exclusively until mid 2012. Since then you have used "Reference Point" exclusively. Yes, you are "not the average user." But statistically speaking, who is? )

So there; we agree on two things already. At least that's a start !

Best Regards,
bd

"So you're telling me there's a chance!" Jim Carrey, 1994


PS: Hi Dempsey, Good to hear from you, even if infrequently. Best Wishes
Title: Re: Point Relative Command
Post by: Dr PR on October 24, 2018, 09:26:57 AM
bd,

Having to press the apostrophe key twice wouldn't be a big problem. However, you have been arguing for a method that minimizes work, and I was just pointing out that having to press the key twice - for those of us who always use the "Reference Point" option - is twice as much work. Likewise, having to press additional keys (C, L, whatever) increases the work load when just remembering the last way the user used the function minimizes it.

What you are really trying to do is make the program default to your work style, to do everything from the keyboard. You want to avoid using the mouse.

I do not want to have to do everything from the keyboard. I use a good trackball and I like working that way. I use the trackball because it is much less work than using a mouse (move the fingers only, and not the entire arm). While my hand is on the trackball I want to do as much as possible from the screen,and minimize moving back and forth between the trackball and the keyboard (moving the cursor across the screen is much faster than moving my hand to the keyboard). I have created custom toolboxes with the commands I use the most so I don't have to waste time typing in a command name, wading through menus, using shortcut key combinations or function keys.

There is one other thing I do to minimize the workload. DesignCAD has a plethora of commands, but I use only a subset of them. For example, "Intersect 2" will accomplish the same thing as "Intersect 1" and more. I do not ever recall using "Intersect 1." I minimize my effort by just using the one function and not having to remember both. I have used only one "Trim" command - I think it is the "Trim Two Lines" function, but it has been decades since I developed this habit and I am not sure what the actual command name is. I never use any of the ortho functions or any of the little arrows at the bottom of the "main" window. I can set ANY angle with the "Point Relative" function so I don't need any of those other options. I have never used a grid. In fact, I have modified my keyboard file to eliminate many of the keystrokes because they are a nuisance if I accidentally press these keys and it shifts the program into some limited mode (ortho, grid, etc.).

With the "Point Relative" function the "Reference Point" option works for ALL uses of the "Point Relative" command that I want to use.* So just using only this mode eliminates having to think about it - less work. That is why I want the program to always remember how I have used the command. I will never use it in any other fashion.

Phil

* Note:  In all of the 30 years I have used DesignCAD/ProDesign I have never paid any attention to the origin when I am drawing. When I start a drawing I set the first point for the first object and work from there. It has always been obvious to me that EVERYTHING in a drawing is positioned relative to everything else. There is no need for an origin. So I never use the "Origin" option in the "Point Relative" command.

After the drawing is finished I can set the "origin" anywhere if it is needed. And it is needed only if I will use the drawing to control NC milling machines, for 3D printing, etc. Often the origin will not be on any part of the drawing, but must be positioned at some offset relative to drawing entities to meet the needs of the specific milling or printing machine. This is different from machine to machine.

Title: Re: Point Relative Command
Post by: Bob P on October 24, 2018, 03:19:28 PM
bd,

* Note:  In all of the 30 years I have used DesignCAD/ProDesign I have never paid any attention to the origin when I am drawing. When I start a drawing I set the first point for the first object and work from there. It has always been obvious to me that EVERYTHING in a drawing is positioned relative to everything else. There is no need for an origin. So I never use the "Origin" option in the "Point Relative" command.
I frequently digitize paper patterns by taping them down to the corner of a square layout table. Then I measure each point's distance from the left edge and the bottom edge, giving me a nice X-Y plot.

*I looked into the macro documentation for a way to enter the relative values from the command line. No such luck. Weird that DC doesn't include that.
Title: Re: Point Relative Command
Post by: Lar on October 24, 2018, 05:35:53 PM

I haven't read through all this thread so I don't know if this point was already made but, dcad can't always default to 'Last Point' as long as we can start a command by calling up Point Rel before setting the first point (eg, when we comma to an existing point to set the first point a desired distance away). If that were the case then 'Last Point' would have to reference the last point set in the last command, and we don't want that.



Lar
Title: Re: Point Relative Command
Post by: adriank on October 24, 2018, 06:39:27 PM
The great flexibility of this program is that there are so many different ways to perform functions & I, like Phil only use a small subset of the available commands - one reason I use the point-relative command to find origin I guess. Fewer keyboard assignments.

Regarding origin, I find I need it under several circumstances.

When I export to Sketchup, SKP files always use the file's original origin - not any new origin I may have assigned - and when combining Sketchup files it's important to know where the origin is.

When working on masterplanning projects & marine work I frequently assign origin at Mercator Grid origin so survey references can be easily called up.

When a drawing becomes too far from origin it messes up hatch patterns badly, so I often need to shift the whole drawing back to origin to make it display properly.

As an example of the last one, the two attachments are of the same hatch (Wave, in a 1 x 1 box at scale 5) the first being placed at origin, the second being 10,000 offset from origin.
Assigning a new origin in the drawing won't fix the hatch pattern issue either - you have to move it back to the original drawing origin.
This is one reason I avoid ever assigning a new origin in a file - I don't know of a way to revert to the drawing's original origin if I ever need it (for export normally in my case).
Title: Re: Point Relative Command
Post by: bdeck on October 25, 2018, 01:16:35 AM
The great flexibility of this program is that there are so many different ways to perform functions & I, like Phil only use a small subset of the available commands -

one reason I use the point-relative command to find origin I guess. Fewer keyboard assignments.

Hi Adrian,

It seems I've been trying to simplify the process by making it needlessly complex.

As it turns out, if DC were to implement something like the simple suggestion made by Rob S, all users would get what they want, even you and Dr PR.

The solution:

Keep the Point Relative command exactly as it is, except:
   1) Add a control to allow user to convert (or unconvert) a currently selected Point Relative option to a default that subsequently overrides the option retained from a prior instance of Point Relative, while allowing user to select a current option that overrides the default within any single instance.
   2) Make all options available when doing point moves in point select mode.
   3) Never slam anyone into any option, especially "Last Cursor Position".

That's the whole plan. Period.      


...... dcad can't always default to 'Last Point' as long as we can start a command by calling up Point Rel before setting the first point   

Hi Lar, Yes it appears that the "Last Point" option is invalid if there are no points in the point buffer when: 
   a) One has not set a point within a command or in preset point mode.
   b) One is doing a point move in point select mode. (the grab point is apparently not held in the point buffer )

   I'm somewhat annoyed that "Last Point" is often invalid, but I am extremely upset at being slammed.   

   I suspect the best way to avoid slamming itself is to prevent execution of the Point Relative command until the user has selected a valid option. But fixing the command so that it recognizes a point select grab point as the "Last Point" will eliminate the biggest cause of slamming.

Best Regards,

BD
Title: Re: Point Relative Command
Post by: DrollTroll on October 25, 2018, 11:06:22 AM
So, if I understand you correctly, *in the specific case of moving points in Point Select Mode*, you'd like the Last Point option to be available, and use the original position of the point being moved. (I'll assume here that you're gravity-snapping to start the move, not just dragging -- if you just click near the point, the logic could get fuzzy).
That seems reasonable enough. But what if you have drag-selected multiple points? Again, I'll assume you're then gravity-snapping to one of them to start the point move, then hitting Point Relative. So, use the last gravity-snap as "last point" in this case? Perhaps both cases?
Title: Re: Point Relative Command
Post by: bdeck on October 25, 2018, 02:02:32 PM
So, if I understand you correctly, *in the specific case of moving points in Point Select Mode*, you'd like the Last Point option to be available, and use the original position of the point being moved.

Hi DT

Yes, the "Last Point"option should recognize the "grab point" of a point selection set whether that set contains one point or multiple points.

(The "Last Point" option works perfectly now for drawing and moving entites, but not for moving points.)

Quote
(I'll assume here that you're gravity-snapping to start the move, not just dragging -- if you just click near the point, the logic could get fuzzy).
You guys are smart enough to figure it out. :)  (but at least gravity would be a start)

Here's an example:
If in your most recent use of Point Relative you used the "Last Point" option,
   and now you select a group of points in point select mode, and
   use gravity to set a drag point,
   and then hit the apostrophe to display the Point Relative dialog,
   you will find the "Last Point" option grayed out, and
   DC will silently, and without notice slam you into the "Last Cursor Position" option.
   
The user may not discover the resulting error until much later, perhaps when a building collapses.

User is ultimately forced to use the "ReferencePoint" option, which may present other problems.

So there are two issues here:
   1) Fix the Point Relative command to allow the "Last Point" option to recognize the "grab point" in point select mode.
   2) Never slam a user into any option. (If the option must be changed by DC, it should be changed to "Reference Point", preferably with conspicuous notice.)

The second issue will "largely" disappear once the first issue is resolved.

Many Thanks.
Best Regards,
bd
Title: Re: Point Relative Command
Post by: Lar on October 25, 2018, 03:17:31 PM
I guess "Last Point" means "Last Point Set" (or "last set point") because picking up a point does not set a point. But like DT says, picking up a point by right clicking (or pressing the period key) could register a different xyz than picking up the same point by a left click (or pressing comma).

 In the case of some dimensions you can't right click to pick up one of the measurement points. You have to left click when the cursor is close enough to the point and it changes into the bullseye.


Lar
Title: Re: Point Relative Command
Post by: Rob S on October 25, 2018, 07:15:25 PM
Da Troll has emerged from da cave, I wonder what dat means for da future ...

I wuz beginning to wonder if dere was any future.
Title: Re: Point Relative Command
Post by: bdeck on October 25, 2018, 09:11:03 PM
Here's something that occurred to me while reading the documentation for the SETSELECTEDPOINTS  statement and the GroupPointsMove{} command.

When using the "Last Point" option in the Point Relative command to do a point move in point select mode, it does not matter which point is the "drag handle", or even if there IS a drag handle.

The move is point relative. All selected points will be moved by the same displacement, regardless of where the drag handle is located. The best solution may be to ignore any drag handle the user might have set, and use any point in the selection set as the "Last Point".

Here's a usable macro to move points a fixed distance. After selecting points, user may set or not set a drag handle. The macro will ignore any drag handle and arbitrarily use the first point in the buffer as a drag handle.

PS:
.... I wonder what dat means for da future ...
Hi Rob S,

Unbridled enthusiasm all around. 8)  Well, DT and Dr PR have made me think (normally a dangerous thing)

Best Regards,
BD   

PS: And still a dangerous thing. I'm guessing this method might require that the point relative command recognize that the user is engaged in a point move, and, rather than set a point, just move the points, as in the macro (mostly borrowed from the sdk) The command would still have to distinguish among a point drag handle, a reference point set for entity move command (which can be set on top of a selected point without disturbing the point selection), and a point set within a macro (eg the M macro, the only way I ever move entities). I'd be surprised if it's even possible to figure that out. 10:15 AM 10/26/18

Code: [Select]
'  pmr.d3m   point move relative         bdeck    10/2018

'  Macro to move a set of selected points by a user-input displacement

'  1) select an object
'  2) drag select one or more points on the object
'  3) run the macro 
'  4) enter x y z values of desired displacement

SETSELECTEDPOINTS

If Sys(1) < 1 Then
  Message "No points selected. Ending."
  end
End If

Pointval x y z 1 'get the first selected point

input "Input desired point displacement in X direction ", dx
input "Input desired point displacement in Y direction ", dy
input "Input desired point displacement in Z direction ", dz

>GroupPointsMove
{
  <Pointxyz [x, y, z]    'drag handle
  <PointRel [dx,dy,dz]  'displacement
}
Title: Re: Point Relative Command
Post by: bdeck on October 29, 2018, 03:21:11 PM
The solution:
Keep the Point Relative command exactly as it is, except:
   1) Add a control to allow user to convert (or unconvert) a currently selected Point Relative option to a default that subsequently overrides the option retained from a prior instance of Point Relative, while allowing user to select a current option that overrides the default within any single instance.
   2) Make all options available when doing point moves in point select mode.
   3) Never slam anyone into any option, especially "Last Cursor Position.
That's the whole plan. Period.      "
Ok, maybe this clarification should have been added:
   4) The Default option setting, if there is one, should persist between sessions. (preferably in an INI file) 

Having the most recent (non-default) option persist between sessions, as has been suggested,  is OK with me, but offers no additional benefit that I can see, provided that the default option has been implemented correctly.

And this would be a substantial improvement, from a prior post:
   5) A Restore key (such as [F12] which would not corrupt the numeric text fields or affect keyboard focus)  should be available to restore erased values from the numeric fields.

In that way, one could keep  "Always reset values to zero" checked constantly, and still be able to restore the cleared values, if necessary, to correct an error, or duplicate a prior operation. With "Always reset values to zero" checked, user would never have to zero unused fields when populating only one field.

.....The ["Last Point" option of the Point Relative] command would still have to distinguish among a point drag handle, a reference point set for an entity move command, ..... and a point set within a macro ....I'd be surprised if it's even possible to figure that out.
Wrong again! As it turns out, DC already does those things.

After further testing, the Point Relative command appears to recognize all the conditions listed below.

Using the "Last Point" option, when points have been selected in point select mode:
     1) If a user has set a grab handle for the point selection, Result =  Point Relative command recognizes that a grab handle has been set, and slams user to Last Cursor Position (point selection remains intact)
     2) If a user has set the first point after starting the Move from Reference Point command, Result =  Point Relative command sets a point at input offsets (point selection remains intact) 
     3) If, within the context of a macro, a user has set one or more points requested by a SETPOINT statement, or a Setpoints command, or an incomplete parameter in any command,  Result =  Point Relative command sets a point at relative offsets input by user. (point selection remains intact, depending on macro)
     4) If a user has set one or more points after starting a Drawing command, Result =  Point Relative command sets a point at relative offsets input by user. (point selection remains intact)
     5) If none of conditions (1) - (4) is true,  Result =  Point Relative command does not execute.  (point selection remains intact)

Although the above list may not be exhaustive, it appears that, when the PointRelative command is initiated by a user who has selected one or more points, DC has already gathered enough information to perform the desired operation using the "Last Point" option.

(Edit 1/28/19)  When user has chosen the "Last Point" option, and either condition (1) or (5) is true, the Point Relative command should  simply follow the steps outlined in the pmr macro. This will expedite moving the points without going through the unnecessary step of setting a point, regardless of whether user has set a grab handle or not.

If the resulting operation is one the user did not intend, the undo key will undo the point move. (But the undo will also undo the point selection, just as it does after any point move, even one using the "Reference Point" option. That would be a good "feature" to fix.)

(The term "grab handle" is coined here for the initial point set in a move of selected points.)
Title: Re: Point Relative Command
Post by: Lar on November 07, 2018, 05:57:46 PM

Code: [Select]
Pointval x y z 1   'get the first selected point
input "Input desired point displacement in X direction ", dx
input "Input desired point displacement in Y direction ", dy
input "Input desired point displacement in Z direction ", dz

Rather that forcing the user to input at 3 consecutive times, you can combine everything into one...
Code: [Select]
Pointval x y z 1    'get the first selected point
input "Input desired X, Y & Z point displacements (separate by commas)", dx, dy, dz


The user can then type all 3 values one time, separated by commas (spaces are not necessary but you can type them in after the first 2 commas. For only an X displacement just enter the X value and can leave out the Y and Z. For only a Y displacement you must type a zero for the X, enter the Y and can leave out the Z. For just a Z displacement you must type zeros for the X and Y and enter the Z value).




Title: Re: Point Relative Command
Post by: bdeck on November 12, 2018, 06:33:22 PM
Rather that forcing the user to input at 3 consecutive times, you can combine everything into one...
     input "Input desired X, Y & Z point displacements (separate by commas)", dx, dy, dz

Hi Lar,

Good point. I wrote the macro according to my personal preference for ten-key input. Others will have a different preference.

Benefit of single-line method:
   1) you can review / edit all entries before hitting [Enter].
    
Benefits of 3-line method:
   1) you use the [Enter] key (part of the 10 key pad) as a delimiter for faster, easier, one-hand data entry.
   2) accepts any numeric expression with no commas necessary (single-line method requires commas if formulaic expressions are used)
   3) user never has to enter a value in any zero field. (Just hit [Enter])
 
Downside of both methods is that using Control-Z to undo a previous point move causes any selected points to be deselected. So after an undo, one must reselect all selected points.

This "feature" in DC should be eliminated.

In the meantime, here's a modification to the pmr macro that has a nondisruptive undo feature built in. (also includes single-line input method as an alternative)

Code: [Select]
'  pmr2.d3m  point move relative with undo feature         bdeck    11/2018

'  Macro to move a set of selected points by a user-input displacement
'  Adapted from SETSELECTEDPOINTS demo in SDK Macro Language Reference Manual
'  This version has a built-in verify/undo feature that does not disrupt the point selection

'  1) select an object
'  2) drag select one or more points on the object
'  3) run the macro 
'  4) enter x y z values of desired displacement
'  5) backspace to undo; or any other key or click to accept

SETSELECTEDPOINTS

If Sys(1) < 1 Then
Message "No points selected. Try again."
  end
end If

'input "Input desired X, Y, Z point displacements (separate by commas or spaces)", dx, dy, dz   'alternative input method

input "Input desired point displacement in X direction ", dx 
input "Input desired point displacement in Y direction ", dy
input "Input desired point displacement in Z direction ", dz

gosub ptmover

Print   " [Backspace] to undo;  any other key or click to accept"
anykey k

if k=8 then  ' if backspace key was pressed
dx=-dx
dy=-dy
dz=-dz
gosub ptmover
endif

end

ptmover:
Pointval x y z 1 'get the first selected point
>GroupPointsMove
{
  <Pointxyz [x, y, z]
  <PointRel [dx,dy,dz]
}
return


The solution:
Keep the Point Relative command exactly as it is, except:
   1) Add a control to allow user to convert (or unconvert) a currently selected Point Relative option to a default that subsequently overrides the option retained from a prior instance of Point Relative, while allowing user to select a current option that overrides the default within any single instance.
   2) Make all options available when doing point moves in point select mode.
   3) Never slam anyone into any option, especially "Last Cursor Position.
That's the whole plan. Period.   
......
OK, maybe [these clarifications] should have been added:
   4) The Default option setting should persist between sessions.  (current selection should never persist)
   5) A Restore key (such as [F12] which would not corrupt the numeric text fields or affect keyboard focus)  should be available to restore [prior] values from the numeric fields.

I cannot think of any reason to explicitly "unconvert" a default option. A single-purpose (non-toggling) "Make Default" button that changes the default to the current option should work fine, and it will eliminate the need for a toggle or a separate "undefault" button. This way, one of the options will always be the default, and changing the default to the currently selected option would require only a single click or keypress.

The Currently Selected option should never persist between instances of the command, or between sessions, unless it is also the Default option.  The Default option should always persist.

Edit:

Radio buttons should be used to indicate the Currently Selected option, just as they do now. When an instance of the Point Relative command is initiated, the Currently Selected radio button should always be set to the Default option, regardless of which option was previously selected. There is no need to otherwise indicate  which option is the default.

Thanks to Dr PR for pointing out that "reset values to zero" is worthless without a "restore values" button.

bd
Title: Re: Point Relative Command
Post by: Dr PR on February 12, 2019, 10:43:53 PM
bd,

I am taking something out of context here, but it is very important that a point be made.

I take STRONG exception to you comment that the "currently selected option should never persist between instances of the command, unless it is the Default option."

Iff we have a way to define the Default, I would agree. But if the ability to set the Default for all future instances of the command is not provided, the last used option should continue to be selected when the command is restarted.

I use only the "Reference Point" option, and it is a nuisance having to select this option the first time I use the function after restarting the program. It would be an extreme nuisance to have to select it every time I start the command.

Phil
Title: Re: Point Relative Command
Post by: bdeck on February 14, 2019, 09:27:44 PM
I take STRONG exception to your comment that the "currently selected option should never persist between instances of the command, unless it is the Default option."   If we have a way to define the Default, I would agree....
Hi DrPR,

Good point. I should have made it clear that I was just fleshing out the details of how DC should act in an ideal embodiment, wherein each user HAS the ability to choose the default option for the Point Relative Command. (as RobS had suggested)

Quote
I use only the "Reference Point" option, and it is a nuisance having to select this option the first time I use the function after restarting the program. It would be an extreme nuisance to have to select it every time I start the command.
Agreed.

I use mostly the Last Point option, but I occasionally use the Reference Point option. After using Reference Point, I also am annoyed when the next time I use the Point Relative Command to set a point, the command is not set to the option that I expect.

So we seem to agree that Rob's suggestion would be an improvement for both of us. But more so for me...  ;D

Many thanks for contributing to this thread, and tolerating my "thinking out loud."

bd

PS: Perhaps "RECALL VALUES" would be a more accurate name than "RESTORE VALUES" in the prior message.