Jump to content

Making a line command loop from point to point


harrison-matt

Recommended Posts

All,

 

I am trying to make the following code loop.

(defun c:dp ()
 (while T
   (progn
     (Setq scale (getvar 'dimscale))
     (setq Di 0.0625)
     (setq spacing (* scale 0.0625))
     (Setq pt1 (getpoint "\nPick first point:")
    Pt2 (getpoint pt1 "\nNext point:"))
     (Setq ang (angle pt1 pt2))
     (Setq P1 (polar pt1 (+ ang (/ pi 2))(* scale di)))
     (Setq p2 (polar pt1 (- ang (/ pi 2))(* scale di)))
     (Setq p3 (polar pt2 (+ ang (/ pi 2))(* scale di)))
     (Setq p4 (polar pt2 (- ang (/ pi 2))(* scale di)))
     (Setq hang (atof (angtos (+ ang (/ pi 4)) 0 4)))
     (Command "line" pt1 pt2 "")
     (Command "-hatch" "P" "U" hang spacing "n"
       "w" "n" p1 p2 p4 p3 "c" "" ""))))
   

 

The purpose is to draw a line and hatch it, for symbolizing demolition of piping.

 

Thanks ahead of time,

Matt

Link to comment
Share on other sites

On a similar note there was a request earlier this year I believe for a hatch-like line type that could be applied over lines (representing walls I think) that were scheduled for demolition. Would that be of any use to you? I'm sure a search of the CT website would be able to turn it up.

 

Addendum:

 

Here is a link for a linetype that looks kind of line this: / / / / / / / / / /

 

http://www.cadtutor.net/forum/showthread.php?40241-Complex-Linetype&highlight=demolition

Link to comment
Share on other sites

To loop[ the points:

 

[b][color=BLACK]([/color][/b]defun c:mln [b][color=FUCHSIA]([/color][/b]/ p1 p2[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq p1 [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nPick first point:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq p2 [b][color=MAROON]([/color][/b]getpoint p1 [color=#2f4f4f]"\nNext point:   "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b]
                       [b][color=GREEN]([/color][/b]cons 10 p1[b][color=GREEN])[/color][/b]
                       [b][color=GREEN]([/color][/b]cons 11 p2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

        [color=#8b4513];;;MAKE THE HATCH HERE[/color]

        [b][color=NAVY]([/color][/b]setq p1 p2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

I think you have problems in hatch coding, but that's another deal. -David

Link to comment
Share on other sites

Perhaps something like this Mr Harrison?

 

(defun c:dp ( / *error* vars vals spc p1 p2 ang )

 (defun *error* ( msg )
   (and vals (mapcar 'setvar vars vals))
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ)
 )

 (setq vars '("CMDECHO" "OSMODE")
       vals  (mapcar 'getvar vars)
       spc   (* (cond ( (zerop (getvar 'DIMSCALE)) 1.0 ) ( (getvar 'DIMSCALE) )) 0.0625)
 )

 (while (and (setq p1 (getpoint "\nPick First Point: "))
             (setq p2 (getpoint "\nNext Point: " p1)))

   (mapcar 'setvar vars '(0 0))

   (setq ang (angle p1 p2))

   (command "_.line" p1 p2 "")
   (command "_.-hatch" "_P" "_U" (+ 45. (* 180. (/ ang pi))) spc "_N" "_W" "_N"
     (polar p1 (+ ang (/ pi 2.)) spc)
     (polar p1 (- ang (/ pi 2.)) spc)
     (polar p2 (- ang (/ pi 2.)) spc)
     (polar p2 (+ ang (/ pi 2.)) spc) "_C" "" ""
   )

   (mapcar 'setvar vars vals)
 )

 (princ)
)

Link to comment
Share on other sites

I prefer anonymous block over hatches.

 

[b][color=BLACK]([/color][/b]defun c:mlnh [b][color=FUCHSIA]([/color][/b]/ p1 p2 a xp od yp lp bn[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq p1 [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nPick first point:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq p2 [b][color=MAROON]([/color][/b]getpoint p1 [color=#2f4f4f]"\nNext point:   "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=GREEN])[/color][/b]
                       [b][color=GREEN]([/color][/b]cons 10 p1[b][color=GREEN])[/color][/b]
                       [b][color=GREEN]([/color][/b]cons 11 p2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

        [b][color=NAVY]([/color][/b]setq a [b][color=MAROON]([/color][/b]angle p1 p2[b][color=MAROON])[/color][/b]
             xp 0
             od [b][color=MAROON]([/color][/b]* [b][color=GREEN]([/color][/b]getvar [color=#2f4f4f]"DIMSCALE"[/color][b][color=GREEN])[/color][/b] 0.0625[b][color=MAROON])[/color][/b]
             yp [b][color=MAROON]([/color][/b]* [b][color=GREEN]([/color][/b]sin [b][color=BLUE]([/color][/b]* pi 0.25[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] od 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

        [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"BLOCK"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 2 [color=#2f4f4f]"*U"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]list 10 0 0 0[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 70 1[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]< xp [b][color=GREEN]([/color][/b]distance p1 p2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]setq lp [b][color=GREEN]([/color][/b]list xp [b][color=BLUE]([/color][/b]- yp[b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 10 lp[b][color=BLUE])[/color][/b]
                              [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar lp [b][color=PURPLE]([/color][/b]* pi 0.25[b][color=PURPLE])[/color][/b] od[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
               [b][color=MAROON]([/color][/b]setq xp [b][color=GREEN]([/color][/b]+ xp od[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq bn [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 8 [color=#2f4f4f]"0"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]entmake [b][color=MAROON]([/color][/b]list [b][color=GREEN]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 2 bn[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 10 p1[b][color=GREEN])[/color][/b][b][color=GREEN]([/color][/b]cons 50 a[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

        [b][color=NAVY]([/color][/b]setq p1 p2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

-David

Link to comment
Share on other sites

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