明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1412|回复: 6

大家帮忙看一下,这个程序错在哪里?

[复制链接]
发表于 2004-10-27 18:52:00 | 显示全部楼层 |阅读模式
以下是自动连线的程序,就是能过输入点号用PL线连接相应的点,但是执行后只能连第一个点,接下去就出错了 (defun c:PL (/ str)
(VL-LOAD-COM) (setq AcadObject(vlax-get-acad-object) AcadDocument(vla-get-ActiveDocument AcadObject) mSpace(vla-get-ModelSpace AcadDocument) )

(fen)
(if (/= zb nil)
(command "_pline" zb))


)
(defun fen ()
(setq a (getstring "输入点号:"))
(setq sel (ssget "_x" '((0 . "TEXT"))))
(setq n (sslength sel))
(setq i 0)
(while (< i n)
(setq sf (entget (ssname sel i)))
(setq dianhao(cdr (assoc 1 sf)))
(if (= dianhao a)
(progn(setq zuobiao(cdr (assoc 10 sf)))
(setq zbX(-(car zuobiao) 0.5))
(setq zbY(+(car(cdr zuobiao)) 0.75))

(setq zb(list zbX zbY))
)
)
(setq i (+ i 1))
)

)
发表于 2004-10-28 08:30:00 | 显示全部楼层
给个调试图先,或者说说运行这样的程序需要什么条件
 楼主| 发表于 2004-10-28 19:01:00 | 显示全部楼层
也没其它什么条件,就是通过输入点号,然后程序找到它,并用PL线把其按照输入的顺序给连起来

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-10-29 08:27:00 | 显示全部楼层
也不知道你上面的程序是哪儿抄来改的,,,这样可学不好,弄一个程序来至少要把它大致看明白了
  1. (defun c:PL (/ str)
  2.    (VL-LOAD-COM)
  3.    (fen)
  4.    (if zb
  5.        (progn
  6.            (command "_pline")
  7.            (mapcar 'command zb)
  8.            (command "")
  9.        )
  10.    )
  11.    (princ)
  12. )(defun fen ()
  13.    (setq b nil)
  14.    (while (/= (setq a (getstring "输入点号:")) "")
  15.        (setq b (append b (list a)))
  16.    )
  17.    (setq i 0 zb nil)
  18.    (repeat (length b)
  19.        (setq dianhao (nth i b))
  20.        (setq ent (ssname (ssget "x" (list '(0 . "TEXT") (cons 1 dianhao))) 0))
  21.        (setq sf (entget ent))
  22.        (if (member dianhao b)
  23.            (progn(setq zuobiao(cdr (assoc 10 sf)))
  24.                    (setq zbX(-(car zuobiao) 0.5))
  25.                    (setq zbY(+(car(cdr zuobiao)) 0.75))                 
  26.                    (setq zb(append zb (list (list zbX zbY))))
  27.            )
  28.        )
  29.        (setq i (+ i 1))
  30.    )
  31.    zb
  32. )
发表于 2004-10-29 16:38:00 | 显示全部楼层
  1. ;;那些点似乎是多余的(defun C:PL (/ LST A)
  2.    (setvar "osmode" 0)
  3.    (setq LST (FEN))
  4.    (command "_.pline")
  5.    (while (and (setq A (getstring "输入点号: "))
  6.              (assoc A LST)
  7.    )
  8.        (command (cadr (assoc A LST)))
  9.    )
  10.    (command "")
  11.    (princ)
  12. )(defun FEN (/ LST SEL N I SF DIANHAO ZUOBIAO ZBX ZBY ZB)
  13.    (setq SEL (ssget "_x" '((0 . "TEXT"))))
  14.    (setq N (sslength SEL))
  15.    (setq I 0)
  16.    (while (< I N)
  17.        (setq SF (entget (ssname SEL I)))
  18.        (setq DIANHAO (cdr (assoc 1 SF)))
  19.        (setq ZUOBIAO (cdr (assoc 10 SF)))
  20.        (setq ZBX (- (car ZUOBIAO) 0.5))
  21.        (setq ZBY (+ (car (cdr ZUOBIAO)) 0.75))
  22.        (setq ZB (list ZBX ZBY))
  23.        (setq LST (cons (list DIANHAO ZB) LST))
  24.        (setq I (+ I 1))
  25.    )
  26.    LST
  27. )
 楼主| 发表于 2004-10-29 20:07:00 | 显示全部楼层
我并没有改它,是论坛上的一个朋友给我写的
 楼主| 发表于 2004-10-29 20:12:00 | 显示全部楼层
太感谢你们俩了,真的谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-30 08:38 , Processed in 0.196183 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表