[求助]cad里面怎么根据一段闭合的pl线画出相对应的矩形,高度不变,宽度根据以画好
本帖最后由 作者 于 2009-9-12 19:40:16 编辑 <br /><br /> [求助]cad里面怎么根据一段闭合的pl线画出相对应的矩形,高度不变,宽度根据以画好的pl线<p><font face="宋体" size="2">根据已知的pl线的长度,设置特定的高度,自动画出等高的矩形,矩形的宽就是pl线的长度。见图,希望哪位大哥帮忙给个lisp的代码,万分感谢,谢谢。</font></p>;明经 ZZXXQQ 选线画框 2007.10.4 2009.9.12改
(DEFUN C:TT (/ SS W I ENT PT1 PT2 PT3 PT4)
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
(IF (AND (SETQ S1 (ENTSEL "\nSelect Center Line(s) 选择线条 :"))
(SETQ ENT (ENTGET (CAR S1)))
(WCMACTH (SETQ L (CDR(ASSOC 0 ENT))) "*LINE")
(SETQ W (/ (GETDIST "\nEnter Widtch 输入宽度 :") 2))) (PROGN
(COMMAND ".UNDO" "BE")
(SETVAR "OSMODE" 0)
(COND
((= L "LINE")
(SETQ PT1 (CDR (ASSOC 10 ENT))
PT2 (CDR (ASSOC 11 ENT)))
)
((AND (= L "LWPOLYLINE") (= "SPLINE"))
(SETQ PT1 (CDR(ASSOC 10 ENT))
PT2 (CDR(ASSOC 10 (REVERSE ENT))))
)
((= L "POLYLINE")
(SETQ ENT (ENTGET(ENTNEXT(CDR(ASSOC -1 ENT))))
L (CDR(ASSOC 0 ENT))
PT1 (CDR(ASSOC 10 ENT)))
(WHILE (/= L "SEQEND")
(SETQ ENT (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT))))
L (CDR (ASSOC 0 ENT))
PT2 (CDR(ASSOC 10 ENT)))
)
)
)
(SETQ ANG (ANGLE PT1 PT2)
PT3 (POLAR PT1 (+ (/ PI 2) ANG) W)
PT4 (POLAR PT2 (+ (/ PI 2) ANG) W)
PT1 (POLAR PT1 (- ANG (/ PI 2)) W)
PT2 (POLAR PT2 (- ANG (/ PI 2)) W))
(COMMAND "PLINE" PT3 PT1 PT2 PT4 "C")
(SETVAR "OSMODE" OLDOS)
(COMMAND ".UNDO" "E")
))
(SETVAR "CMDECHO" 1)
(PRINC)
)
<p>谢谢您的帮助,但是我运行了提示这个“Select Center Line(s) 选择线条 :; 错误: no function definition: WCMACTH”,帮忙看一下</p> 已经改好了,谢谢您了,只要把wcmatch,改成小写就可以了。 我是做冲模设计的,我想要这个功能啊 (defun C:cv(/ CURVE TLEN SS N SUMLEN p03 pta) ;不是我写的。忘记链接的。
(vl-load-com)
(setq SUMLEN 0)
(setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(setq TLEN (vlax-curve-getdistatparam
CURVE
(vlax-curve-getendparam CURVE)
)
)
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N))
)
(setq pta (getpoint "Lower left corner:"))
(setq p03 (polar pta 0.0 SUMLEN))
(if (= abc nil) (setq abc 100))
(prompt "\n输入墙高度;")
(princ abc)
(setq b(getreal "mm "))
(if (/= b nil) (setq abc b))
(setq aaabc )
(setq ptys (polar p03 ( / pi 2) abc ))
(command"RECTANG"pta ptys "")
(princ)
)
谢谢,帮助,我正在学习中, mark,有关PLine线的帖子不多啊,怎么 支持下吧还是
页:
[1]