ksperopoulos Posted June 5, 2009 Posted June 5, 2009 I have a drawing in 3d of some piping where all of the objects are above the elevation of 0. When the dimensions, multileaders, and other annotation were placed, they were inserted at different elevations. When we do a hidden shade plot for our viewport in paper space all of the annotation that is under the piping is hidden. Is there a lisp routine anyone knows of that can take a group of selected items and move them to a certain z elevation to raise them (or lower them) so they can be viewed in our hidden viewport? Quote
Lee Mac Posted June 5, 2009 Posted June 5, 2009 Give this a go - first thing that came to mind [i][color=#990099];; Elevation Changer by Lee McDonnell (Lee Mac)[/color][/i] [i][color=#990099];; 05.06.2009 ~ zMov to invoke[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:zMov [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss z[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] z [b][color=RED]([/color][/b][b][color=BLUE]getreal[/color][/b] [b][color=#ff00ff]"\nSpecify Z Elevation: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] x Obj [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] i [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]1e99[/color][/b] [b][color=#009900]-1e99[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] i[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] z[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<< Incorrect Selection >>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
ksperopoulos Posted June 5, 2009 Author Posted June 5, 2009 Thanks Lee Mac, that is exactly what I am looking for. How can I get this lisp routine to allow the input of feet or inches? Quote
ksperopoulos Posted June 5, 2009 Author Posted June 5, 2009 My units are set to architectural with the precisions set to 1/16". When I type in 30' or 30'-0" it says that the command "Requires a numeric value. Specify Z Elevation." Quote
Lee Mac Posted June 5, 2009 Posted June 5, 2009 If you just type 30 it should be correct though? Quote
Lee Mac Posted June 5, 2009 Posted June 5, 2009 Ok, I suppose you could type 360, but I shall see what I can come up with Quote
Lee Mac Posted June 5, 2009 Posted June 5, 2009 Ok, give this a shot: Specify Elevation in the format: 30' or 30" or 30'-30" [i][color=#990099];; Elevation Changer by Lee McDonnell (Lee Mac)[/color][/i] [i][color=#990099];; 05.06.2009 ~ zMov to invoke[/color][/i] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:zMov [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] ss z[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]and[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] z [b][color=RED]([/color][/b]Str->In [b][color=RED]([/color][/b][b][color=BLUE]getstring[/color][/b] [b][color=#ff00ff]"\nSpecify Z Elevation: "[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-ename->vla-object[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-remove-if[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]listp[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]ssnamex[/color][/b] ss[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] x Obj [b][color=RED]([/color][/b][b][color=BLUE]foreach[/color][/b] i [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]1[/color][/b]e99 [b][color=#009900]-1[/color][/b]e99[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] i[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]function[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]lambda[/color][/b] [b][color=RED]([/color][/b]x[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-move[/color][/b] x [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-3D-point[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] [b][color=#009900]0[/color][/b] [b][color=#009900]0[/color][/b] z[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Obj[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b] [b][color=#ff00ff]"\n<< Incorrect Selection >>"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] Str->In [b][color=RED]([/color][/b]str [b][color=BLUE]/[/color][/b] pos lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]while[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]cond[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pos [b][color=RED]([/color][/b][b][color=BLUE]vl-string-position[/color][/b] [b][color=#009900]39[/color][/b] str[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]*[/color][/b] [b][color=#009999]12.[/color][/b][b][color=RED]([/color][/b][b][color=BLUE]distof[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=#009900]1[/color][/b] pos[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] pos [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pos [b][color=RED]([/color][/b][b][color=BLUE]vl-string-position[/color][/b] [b][color=#009900]45[/color][/b] str[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] pos [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pos [b][color=RED]([/color][/b][b][color=BLUE]vl-string-position[/color][/b] [b][color=#009900]34[/color][/b] str[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] lst [b][color=RED]([/color][/b][b][color=BLUE]cons[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]distof[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=#009900]1[/color][/b] pos[b][color=RED])[/color][/b][b][color=RED])[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]substr[/color][/b] str [b][color=RED]([/color][/b][b][color=BLUE]+[/color][/b] pos [b][color=#009900]2[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]t[/color][/b] [b][color=BLUE]nil[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]+[/color][/b] lst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote
David Bethel Posted June 6, 2009 Posted June 6, 2009 Lee, Look into (getdist) in lieu of (getreal) of (getstring). -David Quote
Lee Mac Posted June 6, 2009 Posted June 6, 2009 Lee, Look into (getdist) in lieu of (getreal) of (getstring). -David Thanks David, but would getdist accept input like the one described above? Quote
David Bethel Posted June 6, 2009 Posted June 6, 2009 Lee, (getdist) always accepts decimals. It also accepts inputs in the current units format as well as point inputs ( keyboard or mouse ) ( absolute or relative ). It is the way to go. -David Quote
Lee Mac Posted June 6, 2009 Posted June 6, 2009 OK, based on your suggestions here is another version for the OP to try: ;; Elevation Changer by Lee McDonnell (Lee Mac) ;; 05.06.2009 ~ zMov to invoke (defun c:zMov (/ ss z) (vl-load-com) (if (and (setq ss (ssget)) (setq z (getdist "\nSpecify Z Elevation: "))) (progn (setq Obj (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))) (foreach x Obj (foreach i '(1e99 -1e99) (vla-move x (vlax-3D-point '(0 0 0)) (vlax-3D-point (list 0 0 i))))) (mapcar (function (lambda (x) (vla-move x (vlax-3D-point '(0 0 0)) (vlax-3D-point (list 0 0 z))))) Obj)) (princ "\n<< Incorrect Selection >>")) (princ)) I still had fun making the Str->In convertor Quote
David Bethel Posted June 6, 2009 Posted June 6, 2009 Lee, If you use : (while (not ss) (setq ss (ssget))) and (initget 1) (setq z (getdist "\nSpecify Z Elevation: ")) You will have forced proper inputs and not need the (if) (and) (progn) or the 'incorrect selection' statements. If I had made an elaborate selection set and hit enter for a (getdist) input by mistake, I'd be a bit ticked. Just my $0.2 -David Quote
Lee Mac Posted June 6, 2009 Posted June 6, 2009 I understand your (initget 1) proposal, but I don't like to use the WHILE statement when collecting a selection set, as the user has to force an error to exit the function at this point, so perhaps: (if (and (setq ss (ssget)) (not (initget 1)) (setq z (getdist... Quote
David Bethel Posted June 6, 2009 Posted June 6, 2009 , but I don't like to use the WHILE statement when collecting a selection set, as the user has to force an error to exit the function at this point,: Lost me there. All the user has to do is hit enter after they have made a valid ( not empty ) selection. -David Quote
Lee Mac Posted June 6, 2009 Posted June 6, 2009 Lost me there. All the user has to do is hit enter after they have made a valid ( not empty ) selection. -David But if they start the function and decide not to select anything, they must force an Error by hitting Esc to exit the function. Quote
David Bethel Posted June 6, 2009 Posted June 6, 2009 But if they start the function and decide not to select anything, they must force an Error by hitting Esc to exit the function. I must admit that I've never understood this approach. Autodesk hasn't been all to consistent about it over the years. Try this on PEDIT to name 1. Why would you start a function and decide not to use it? Did they plan for more people making more typos errors than correct inputs? Never quite figured it out. -David Quote
Lee Mac Posted June 6, 2009 Posted June 6, 2009 I must admit that I've never understood this approach. Autodesk hasn't been all to consistent about it over the years. Try this on PEDIT to name 1. Why would you start a function and decide not to use it? Did they plan for more people making more typos errors than correct inputs? Never quite figured it out. -David Even so, I'd rather exit the function than have the user have to hit Esc. Maybe its just me Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.