dwgplt 发表于 2002-10-21 22:22:00

dwgplt 发表于 2002-10-21 22:25:00

龙龙仔 发表于 2002-10-22 08:20:00

程序能把线打断,但因没有阀门图面可供测试!!!!!!!!!

从错误信息看来,是加载程序时出错,你先单独加载程序并执行看看。
因我的错误信息只是:
"fm00.dwg": 搜寻路径内找不到档案:

RUANCT 发表于 2002-10-22 23:40:00

p2,p3的值不对。

p2,p3的值不对,R14中LWPOLYLINE的实体数据与POLYLINE不一样,顶点坐标格式不一样,你打开实体数据看一下就知道了。

dwgplt 发表于 2002-10-24 20:31:00

龙龙仔 发表于 2002-10-25 08:38:00

好了!!

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

        ;;改用CONVERTPOLY把LWPOLYLINE转POLYLINE程序        
        (if (= (cdr (assoc 0 EM)) "LWPOLYLINE")
          (progn
          (command "_.CONVERTPOLY" "H" (car EN) "")
          (setq EM (entget (car EN)))
          )
        )
        ;;----------------------------------------------

        (if (or        (= (cdr (assoc 0 EM)) "POLYLINE") ;if2
                (= (cdr (assoc 0 EM)) "LINE")
          )
          (progn                        ;progn2
          (if        (= (cdr (assoc 0 EM)) "POLYLINE")
              (progn
                (setq P2 (cdr
                           (assoc 10 (entget (setq EN1 (entnext (car EN)))))
                       )
                      P3 (cdr (assoc 10 (entget (entnext EN1))))
                )
              )
              (progn
                (setq P2 (cdr (assoc 10 (entget (car EN))))
                      P3 (cdr (assoc 11 (entget (car EN))))
                )
              )
          )
          (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)
)

wo321123 发表于 2002-10-25 17:07:00

(setq en (entsel "\n选择闸阀插入点:")) 这句有问题.

应用getpoint得到点,entsel是获取一个实体.

dwgplt 发表于 2002-10-25 22:17:00

朽木大师 发表于 2013-4-27 14:10:18

龙龙仔 发表于 2002-10-25 08:38 static/image/common/back.gif
(defun C:ZF (/ !ZF EN EN1 EM XM ANG LK P1 P2 P3 P4 P5); HOLDPT TMP)
(setq        KS (getvar "ltscale")
...

龙大,我试了一下,一直提示找不到图,但我自己试着画了一个图放在那里了,也设置了支持路径
页: 1 [2]
查看完整版本: [求助]请CAD高手帮忙看一下,这个LISP程序为什么在R14下无法用?