wwchlncad 发表于 2021-6-17 08:57:25

怎么中途终止

新手有个问题请教,在command的pause处按esc或右键终止,程序并不会退出,而是往下进行.
(setq pt2 (getpoint pt1))
(command "_dimlinear" pt1 pt2 pause )
::::::::::::::::::想在这里的pause(指定尺寸位置)时按esc或右键终止退出程序,又不想多添加一个别的动作来终止,不知道能不能实现
(setq nam (entlast))
(command "_move" nam "" )

aihuyujian 发表于 2021-6-17 09:19:41

本帖最后由 aihuyujian 于 2021-6-17 09:21 编辑

没明白你在指定尺寸位置时退出要干啥而且用command在指定尺寸位置时退出也不生成标注啊 相当于没执行

如果你想指定pt1 pt2后直接生成标注不自己点击 完全可以再加一个参数啊 (command "_dimlinear" pt1 pt2 pt3)

wwchlncad 发表于 2021-6-17 09:50:56

有时我只想看一下距离,或距离不准,就得先修改距离在给出尺寸,所以要中途退出。

aihuyujian 发表于 2021-6-17 16:26:04

本帖最后由 aihuyujian 于 2021-6-17 16:33 编辑

wwchlncad 发表于 2021-6-17 09:50
有时我只想看一下距离,或距离不准,就得先修改距离在给出尺寸,所以要中途退出。
你的意思是生成标注对象才执行之后的程序,如果ESC或者右键中止就不执行之后的程序是吧?
那你就在之后的程序前面加一个判断呗
(setq pt2 (getpoint pt1))
(command "_dimlinear" pt1 pt2 pause )
(setq nam (entlast))
(if (= (cdr (assoc 0 (entget nam))) "DIMENSION")(progn

                                                                           (command "_move" nam "" )
                                                                           ...
                                                                        ))
这样用得保证你用这个程序之前最后一个对象不是"DIMENSION"标注对象不然还会执行
你可以选择在(command "_dimlinear")之前加一个(COMMAND"LINE" pt1 pt2) 来避免这种情况


wwchlncad 发表于 2021-6-18 08:00:37

这样确实可以,解决了一个想了好久的一个问题,多谢帮助!

669423907 发表于 2021-6-19 18:34:27

这样是否合适:
(defun c:13(/ p1 p2)
(if (and
(setq p1 (getpoint "\n 请指定基点标注第一点:"))
(setq p2 (getpoint p1 "\n 请指定基点标注下一点:"))
)
(vl-cmdf "dimlinear" "non" p1 p2 "\\")
)
(princ))

wwchlncad 发表于 2021-6-21 08:32:49

669423907 发表于 2021-6-19 18:34
这样是否合适:
(defun c:13(/ p1 p2)
(if (and


(if (and
(setq p1 (getpoint "\n 请指定基点标注第一点:"))
(setq p2 (getpoint p1 "\n 请指定基点标注下一点:"))
)
(vl-cmdf "dimlinear" "non" p1 p2 "\\")
)
(setq nam (entlast))
(command "_move" nam "" ))
是无法在指定尺寸位置时取消命令后,后续的entlast不继续,跳出整个程序的。或许我的用法有问题,请指教。
页: [1]
查看完整版本: 怎么中途终止