669423907 发表于 2014-11-8 12:05:56

大师们方便帮看一下这个标注程序错在哪里吗?

方便帮看一下这个错在哪里吗?

(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))
(if (ssget pt1)
(setq pt2 (getpoint pt1"\n请指定标注终点:"))
(if (ssget pt2)
(command"dimlinear" pt1 pt2)
))
(princ))

lsjj 发表于 2014-11-8 12:22:24

(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1
   (progn
   (setq pt2 (getpoint pt1 "\n指定標註終點:"))
   (if pt2
       (command"dimlinear" pt1 pt2 pause)
   )
   )
)
(princ)
)

669423907 发表于 2014-11-8 12:40:16

lsjj 发表于 2014-11-8 12:22 static/image/common/back.gif
(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1


首先非常感谢您的回复。我的目的是为了防止标注点不落在物体上,所以用(if (ssget pt1),,,(if (ssget pt2),,也不知道是否可以这样用

669423907 发表于 2014-11-8 12:51:32

lsjj 发表于 2014-11-8 12:22 static/image/common/back.gif
(defun c:test();
(setq pt1 (getpoint "\n指定標註起點:"))
(if pt1


搞定了,谢谢
(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))
(if (ssget pt1)
(progn
(setq pt2 (getpoint pt1 "\n请指定标注终点:"))
(if (ssget pt2)
(command"dimlinear" pt1 pt2 pause)
)))
(princ))

如果第二点不在物体上就提示继续点第二点,要怎么改呢?

lsjj 发表于 2014-11-8 13:05:12

(while (not (ssget pt2))...

wowan1314 发表于 2014-11-8 13:10:59

(nentselp pt)相当于点选, (ssget pt)范围太小!
试试这样是否可以!
(WHILE (SSGET (setq pt2 (getpoint pt1 "\n请指定标注终点:")))
(command"dimlinear" pt1 pt2 pause)
)

香田里浪人 发表于 2014-11-8 14:19:24

669423907 发表于 2014-11-8 12:51 static/image/common/back.gif
搞定了,谢谢
(defun c:`q();线性
(setq pt1 (getpoint "\n请指定标注起点:"))


cad本身就有线性标注,何必再写?

669423907 发表于 2014-11-8 21:06:32

香田里浪人 发表于 2014-11-8 14:19 static/image/common/back.gif
cad本身就有线性标注,何必再写?

防止空标,就是不能在没有图元的地方标注

669423907 发表于 2014-11-8 21:07:43

wowan1314 发表于 2014-11-8 13:10 static/image/common/back.gif
(nentselp pt)相当于点选, (ssget pt)范围太小!
试试这样是否可以!
(WHILE (SSGET (setq pt2 (get ...

1314大师,那样变成基线标注了

669423907 发表于 2014-11-8 21:13:35

lsjj 发表于 2014-11-8 13:05 static/image/common/back.gif
(while (not (ssget pt2))...

lsjj大师,方便帮添加进去吗?我弄不出来了。谢谢

(defun c:`q();线性
(setq bz? (getpoint "\n左键标两点,右键选线"))
(setq gbwz (grread 3));光标位置
(if (member (car gbwz) '(3 5))
(setq od (cadr gbwz)));鼠标位置
(if bz?
(bz)
(bzz)
)
(princ))

(defun bz()
(if (ssget od)(progn
(setq pt2 (getpoint od "\n请指定标注终点:"))
(if (ssget pt2)
(progn
(command"dimlinear" od pt2 pause)
(while (= 1 (getvar "cmdactive"))(command pause))
(c:`q)))))
(princ))

(defun bzz()
(command"dimlinear""")
(while (= 1 (getvar "cmdactive"))(command pause))
(c:`q)
(princ))

如果第二点不在图元上,就不断重复第二点,直到第二点落在图元上时,才继续运行后面的内容
页: [1] 2
查看完整版本: 大师们方便帮看一下这个标注程序错在哪里吗?