这是R12的程序吧,R14的PLine为LWPOLYLINE,与R12不同,实体组码结构变化很大。
不仅仅是改名的问题,实体结构也不同
不仅仅是改名的问题,实体结构也不同,R12的PL(R14中的3DPL)是实体跟随,所以使用entnext,R14的LWP是单实体。修改起来比较麻烦。很遗憾,我没有R14,无法测试...
增加一段把LWPOLYLINE转POLYLINE程序試試!!!(我也沒有R14)
(defun C:ZF (/ !ZF EN EN1 EM XM ANG LK P1 P2 P3 P4 P5 HOLDPT TMP)(setq KS (getvar "ltscale")
LK (* 2 KS)
)
(setvar "attdia" 0)
(setvar "cmdecho" 0)
(setvar "aperture" 3)
(setvar "pickbox" 3)
(while (/= !ZF t)
(princ "\n ")
(princ "\n ")
(setq EN (entsel "\n选择闸阀插入点:"))
(initget "Y N")
(setq XM (getkword "\n画法兰盘吗<Y/N>?"))
(if (or (= XM "Y") (= XM "y"))
(setq LK (* 2.5 KS))
(setq LK (* 2 KS))
)
(if EN ;if1
(progn
(setq EM (entget (car EN))) ;progn1
;;增加一段把LWPOLYLINE转POLYLINE程序
;;-----------------------------------------------------------------------
(if (= (cdr (assoc 0 EM)) "LWPOLYLINE")
(progn
(setq HOLDPT (getvar "PLINETYPE"))
(setvar "PLINETYPE" 0)
(command "_.EXPLODE" (car EN))
(setq TMP (ssget "P"))
(command "_.PEDIT" (ssname TMP 0) "" "J" TMP "" "")
(setq EN (nentselp (cadr EN)))
(setvar "PLINETYPE" HOLDPT)
)
)
;;-----------------------------------------------------------------------
(if (= (cdr (assoc 0 EM)) "POLYLINE") ;if2
(progn ;progn2
(setq P2 (cdr (assoc 10 (entget (setq EN1 (entnext (car EN))))))
P3 (cdr (assoc 10 (entget (entnext EN1))))
)
(if (>= (distance P2 P3) (* 4 KS)) ;if3
(progn ;progn3
(setq ANG (angle P2 P3)
P1(osnap (cadr EN) "NEAREST")
P4(polar P1 ANG LK)
P5(polar P1 (+ ANG pi) LK)
ANG (* ANG (/ 180 pi))
)
(command "break" P1 "f" P4 P5)
(if (= LK (* 2.5 KS))
(cond
((and (> ANG 22.5) (< ANG 67.5))
(command "insert" "c:/dwg/fm00" P4 KS "" ""
"insert" "c:/dwg/fm00" P5 KS "" ""
)
)
((and (> ANG 202.5) (< ANG 247.5))
(command "insert" "c:/dwg/fm00" P4 KS "" ""
"insert" "c:/dwg/fm00" P5 KS "" ""
)
)
(t
(command "insert" "c:/dwg/fm00" P4 KS "" ANG
"insert" "c:/dwg/fm00" P5 KS "" ANG
)
)
) ;cond end
)
(cond
((and (> ANG 22.5) (< ANG 67.5))
(command "insert" "c:dwg/fm02" P1 KS "" "" "")
)
((and (> ANG 202.5) (< ANG 247.5))
(command "insert" "c:/dwg/fm02" P1 KS "" "" "")
)
(t (command "insert" "c:/dwg/fm01" P1 KS "" ANG ""))
) ;cond end
) ;progn3 end
) ;if3 end
) ;progn2 end
) ;if2 end
) ;progn1 end
(setq !ZF t)
) ;if1 end
(setvar "aperture" 10)
) ;while end
(grtext)
)
(COMMAND "convertpoly" 。。。
“CONVERTPOLY”是R14中的UNDOCUMENT指令,原来ACAD2002还在????
页:
[1]
2