harrison-matt 发表于 2022-7-6 10:23:22

使行命令循环

全部的
 
我正在尝试进行以下代码循环。
(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" "" ""))))
   
 
其目的是绘制一条线并对其进行图案填充,以象征管道的拆除。
 
提前感谢,
马特

ReMark 发表于 2022-7-6 10:46:33

在一个类似的注释中,我认为今年早些时候有人要求在计划拆除的线(我认为代表墙)上应用一种类似图案填充的线型。那对你有用吗?我相信搜索CT网站就能找到它。
 
附录:
 
这是一个线型的链接,看起来有点像这样:///////
 
http://www.cadtutor.net/forum/showthread.php?40241-复杂线型和高光=拆除

David Bethel 发表于 2022-7-6 10:56:44

循环[点:
 

(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编码方面有问题,但那是另一回事-大卫

Lee Mac 发表于 2022-7-6 11:06:55

也许是哈里森先生?
 

(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)
)

Lee Mac 发表于 2022-7-6 11:17:52

或者,如果你想要像Line命令一样的行为,可以将David的结构替换到我的循环中

David Bethel 发表于 2022-7-6 11:25:35

我更喜欢匿名街区而不是舱口。
 

(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]
查看完整版本: 使行命令循环