harrison-matt Posted October 2, 2010 Share Posted October 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
ReMark Posted October 2, 2010 Share Posted October 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 2, 2010 Share Posted October 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted October 2, 2010 Share Posted October 2, 2010 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) ) Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted October 2, 2010 Share Posted October 2, 2010 Or, if you want behaviour like the Line command, substitute David's structure into my loop Quote Link to comment Share on other sites More sharing options...
David Bethel Posted October 2, 2010 Share Posted October 2, 2010 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 Quote Link to comment Share on other sites More sharing options...
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.