hhh454 发表于 2009-9-12 14:37:00

[求助]cad里面怎么根据一段闭合的pl线画出相对应的矩形,高度不变,宽度根据以画好

本帖最后由 作者 于 2009-9-12 19:40:16 编辑 <br /><br /> [求助]cad里面怎么根据一段闭合的pl线画出相对应的矩形,高度不变,宽度根据以画好的pl线<p><font face="宋体" size="2">根据已知的pl线的长度,设置特定的高度,自动画出等高的矩形,矩形的宽就是pl线的长度。见图,希望哪位大哥帮忙给个lisp的代码,万分感谢,谢谢。</font></p>

ZZXXQQ 发表于 2009-9-12 20:32:00


;明经 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)
)

hhh454 发表于 2009-9-12 21:07:00

<p>谢谢您的帮助,但是我运行了提示这个“Select Center Line(s) 选择线条 :; 错误: no function definition: WCMACTH”,帮忙看一下</p>

hhh454 发表于 2009-9-12 21:42:00

已经改好了,谢谢您了,只要把wcmatch,改成小写就可以了。

caoyao_1987 发表于 2011-8-28 13:40:48

我是做冲模设计的,我想要这个功能啊

434939575 发表于 2011-9-5 21:43:04

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






hhh454 发表于 2011-9-6 11:36:47

谢谢,帮助,我正在学习中,

zltangent 发表于 2011-9-6 23:10:07

mark,有关PLine线的帖子不多啊,怎么

zltangent 发表于 2011-9-6 23:10:40

支持下吧还是
页: [1]
查看完整版本: [求助]cad里面怎么根据一段闭合的pl线画出相对应的矩形,高度不变,宽度根据以画好