PDA

View Full Version : Multi-Offset Feature



kryptonite_186
2005-01-12, 11:24 PM
I haven't used Microstation since the summer of '99 so I am pulling this from long term memory. But when you offset an object with Microstation (called "move parallel" in MS) it repeatedly offset the selected object in the direction specified until you stopped clicking on that side. In other words, each time you clicked it would multiply the offset distance by 2x until you terminated the command, selected a different object to offset, or chose the opposite direction to offset. In either case it would restore the default distance back to the original.

Currently with AutoCAD if you were offsetting a line you would specify the distance, select the line, and specify the side to offset. If you wanted to offset that newly created line again in the same direction you would have to select it again and click again in that direction. When I need to do this several times I will often "get punchy" and offset an object on top of the previous by clicking on the wrong side.

To keep the "currently happy users" in their happy state I would like to have a "system variable" that would allow you to execute this multi-offset feature by default.

With this new feature in AutoCAD you would specify the offset distance as usual, select the object to offset, select the side to offset and continue to click on that side as many times as you need objects offset. Each time AutoCAD would increase the offset distance 2x. It would have the same affect if you picked on the opposite side of the object. To select a different object you would right click or press enter/space and select a new object. To terminate the command you would right click twice, press enter/space twice or press the esc key.

BrenBren
2005-01-13, 01:02 PM
Check out the array command. Also, look into the multiple command, which will allow you to run any command more that once without re-entering the command.

If either of these solve your problem, let us know so we can move this from the wishlist forum to the AutoCAD forum.

kryptonite_186
2005-01-13, 04:55 PM
Check out the array command. Also, look into the multiple command, which will allow you to run any command more that once without re-entering the command.

Thanks for the advice. However, a rectangular array would only work if you were to offset repeatedly in the X or Y direction unless you were to rotate your UCS (which is a major pain). Also, I don't need this feature to repeat the command but to repeatedly offset the same object so you do not have to keep re-selecting the object for offset. I take it you have never used Microstation (wow a loyal ACAD user :) ).

Actually what I had in mind would work a lot like the multiple option in the COPY command. After selecting the object to copy you would type "M" for "multiple" (now with 2005 multiple is now automatic) choose a base point for displacement and make as many copies as you want with each selected point of displacement.

With OFFSET you would specify the distance, select the object to offset, and everytime you click to the side of the object AutoCAD would increase the offset distance to that side by 2x and continue to offset the originally selected object to that side with every click.

CADNate
2005-01-13, 06:22 PM
Thanks for the advice. However, a rectangular array would only work if you were to offset repeatedly in the X or Y direction unless you were to rotate your UCS (which is a major pain).
.

You can select the angle of array in the array comand.

rplato
2005-01-13, 07:44 PM
See if this helps - until the Wish List is implemented.



(defun C:MOFF(/)
(if (= nil modist) (setq modist 0))
(setq modi (strcat "\nSpecify offset distance <" (rtos modist) ">: ")
mogt "begin"
modis (getreal modi)
modist modis
moent (entsel "\nSelect object to offset or <exit>: ")
)
(while (/= mogt nil)
(setq mogt (getpoint "\nSpecify point on side to offset: "))
(command "offset" modist moent mogt "")
(setq modist (+ modist modis))
)
(setq modist modis)
)

kryptonite_186
2005-01-13, 08:47 PM
You can select the angle of array in the array comand.

Thanks for the thought. However, that would be a "polar" array and would not mimic the offset command at all. Sorry but the ARRAY command just would not be a good alternative.

kryptonite_186
2005-01-13, 08:57 PM
See if this helps - until the Wish List is implemented.

Splendid!! That emulates Microstation's offset ability pretty closely too. Nice coding also.

This lisp file (courtesy of rplato - hope you don't mind ;) ) is a great start and would give you all a good feel for what I was talking about. Please try it out yourself (appload the file w/ autocad and try offsetting a line repeatedly).

BrenBren
2005-01-13, 09:02 PM
Just for the record (I know it isn't what you are looking for), but you can select the angle in a rectangular array in 2005.

Sorry for the zip file, but I am having problems uploading images. Off to the forum feedback site with that little tidbit :)

kryptonite_186
2005-01-13, 09:17 PM
Just for the record (I know it isn't what you are looking for), but you can select the angle in a rectangular array in 2005.

My bad. Thanks for pointing that out me brenda. And yes you are right, thats not what I am looking for, but I still appreciate you correcting me on that anyway.

ntaylor
2005-01-13, 09:45 PM
Just for the record (I know it isn't what you are looking for), but you can select the angle in a rectangular array in 2005.

Sorry for the zip file, but I am having problems uploading images. Off to the forum feedback site with that little tidbit :)
The difference with the commands is that array produces an exact replica whereas offset changes the geometry accordingly. Array can only duplicate offset in very simple circumstances.
Regards - Nathan

lcamara
2005-01-14, 09:31 PM
Some comments:

use the OFFSETDIST system variable to start the offset distance (and set the variable to the first distance when done

use private variables

the command tries to execute again at the end. To fix, try moving the "(setq mogt " line to the end of the while, and also copy that line just before the while. that way it won't try to execute the "command" function with a nil value.

put a (princ) at the end (for quiet ending)

For our command, I named it "OO" (for Ongoing Offset), that way it is easy to enter at the command line. As for execution, I would select the last created object and offset that (instead of changing the offset distance). Either way, the effects are the same.

jaberwok
2005-01-14, 11:10 PM
The offset wouldn't double for each use. The multiplier would be incremented. 2x, 3x, 4x, etc..

lcamara
2005-01-14, 11:21 PM
The offset wouldn't double for each use. The multiplier would be incremented. 2x, 3x, 4x, etc..
Actually, if you really want to get technical, that multiplier would be aplied to the original value only. It would be more accurate (and simpler) to just say that the offset distance would be incremented by the original offset distance. ;)