Jump to content

Recommended Posts

Posted

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?

  • Replies 24
  • Created
  • Last Reply

Top Posters In This Topic

  • Lee Mac

    12

  • ksperopoulos

    7

  • David Bethel

    6

Posted

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]

Posted

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?

Posted

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."

Posted

That only moves it 30", not 30'.

Posted

Ok, I suppose you could type 360, but I shall see what I can come up with :)

Posted

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]

Posted

Lee,

 

Look into (getdist) in lieu of (getreal) of (getstring). -David

Posted
Lee,

 

Look into (getdist) in lieu of (getreal) of (getstring). -David

 

Thanks David, but would getdist accept input like the one described above?

Posted

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

Posted

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 :P

Posted

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

Posted

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...

Posted
, 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

Posted
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.

Posted
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

Posted
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 o:)

Posted

Thanks guys. It works great!

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...