使行命令循环
全部的我正在尝试进行以下代码循环。
(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" "" ""))))
其目的是绘制一条线并对其进行图案填充,以象征管道的拆除。
提前感谢,
马特 在一个类似的注释中,我认为今年早些时候有人要求在计划拆除的线(我认为代表墙)上应用一种类似图案填充的线型。那对你有用吗?我相信搜索CT网站就能找到它。
附录:
这是一个线型的链接,看起来有点像这样:///////
http://www.cadtutor.net/forum/showthread.php?40241-复杂线型和高光=拆除 循环[点:
(defun c:mln (/ p1 p2)
(initget 1)
(setq p1 (getpoint "\nPick first point: "))
(while (setq p2 (getpoint p1 "\nNext point: "))
(entmake (list (cons 0 "LINE")
(cons 10 p1)
(cons 11 p2)))
;;;MAKE THE HATCH HERE
(setq p1 p2))
(prin1))
我认为你在hatch编码方面有问题,但那是另一回事-大卫 也许是哈里森先生?
(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)
)
或者,如果你想要像Line命令一样的行为,可以将David的结构替换到我的循环中 我更喜欢匿名街区而不是舱口。
(defun c:mlnh (/ p1 p2 a xp od yp lp bn)
(initget 1)
(setq p1 (getpoint "\nPick first point: "))
(while (setq p2 (getpoint p1 "\nNext point: "))
(entmake (list (cons 0 "LINE")
(cons 10 p1)
(cons 11 p2)))
(setq a (angle p1 p2)
xp 0
od (* (getvar "DIMSCALE") 0.0625)
yp (* (sin (* pi 0.25)) od 0.5))
(entmake (list (cons 0 "BLOCK")(cons 2 "*U")(list 10 0 0 0)(cons 70 1)))
(while (< xp (distance p1 p2))
(setq lp (list xp (- yp) 0))
(entmake (list (cons 0 "LINE")
(cons 10 lp)
(cons 11 (polar lp (* pi 0.25) od))))
(setq xp (+ xp od)))
(setq bn (entmake (list (cons 0 "ENDBLK")(cons 8 "0"))))
(entmake (list (cons 0 "INSERT")(cons 2 bn)(cons 10 p1)(cons 50 a)))
(setq p1 p2))
(prin1))
-大卫
页:
[1]