jevnchen0720 发表于 2014-4-26 22:57:32

如何利用LISP合并CAD快捷键

我想将UCS,DOR,DBA三个原始快捷键合并成一个快捷键FF,
我应该怎么编写呀?


电赛加油 发表于 2020-8-22 11:19:55

多谢大神分享,学习一下!

zhangcan0515 发表于 2020-8-30 10:00:45

谢谢分享,已经学习到了

paulpipi 发表于 2020-8-12 14:23:00

好贴,学习了,谢谢

ZZXXQQ 发表于 2014-4-27 07:39:23

(defun c:udd ()
(command "UCS")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(command "DIMORDINATE")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(command "DIMBASELINE")
(while (> (getvar "CMDACTIVE") 0) (command PAUSE))
(princ)
)

jevnchen0720 发表于 2014-4-27 08:49:22

ZZXXQQ 发表于 2014-4-27 07:39 static/image/common/back.gif


版主,你真伟大,这正是我想要的,不过需要鼠标点击一次自定义原点,然后再点一次指定尺寸线起点,第三次点击时确定尺寸文字位置,可否将自定义原点与指定尺寸线起点合并成鼠标点击一次即可?另外能稍微简单得解释一下每行代码的意思吗?我完全是个外人,也想借此机会学习一下lips,方便以后的工作!万分感谢!!

ZZXXQQ 发表于 2014-4-27 09:18:55

(defun c:udd ()
(setq pt (getpoint "\n原点: "));取得原点
(command "UCS" "N" pt);发出UCS命令并给定原点
(command "DIMORDINATE" pt);发出坐标标注命令并给定起点
(while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前一命令完成
(command "DIMBASELINE");发出标注命令
(while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前一命令完成
(princ)
)

xyp1964 发表于 2014-4-27 10:25:02

(defun c:ff()(c:UCS)(c:DOR)(c:DBA))

ll_j 发表于 2014-4-27 10:41:21

xyp1964 发表于 2014-4-27 10:25 static/image/common/back.gif
(defun c:ff()(c:UCS)(c:DOR)(c:DBA))

这是院长本人么?这样可以?命令不是外部函数吧。

jevnchen0720 发表于 2014-4-27 13:07:38

ZZXXQQ 发表于 2014-4-27 09:18 static/image/common/back.gif


第二种方案试过了,但是有出现一个问题,就是第一根尺寸线的起点不是在原点,而是跑到别的地方去了,需要结束命令,然后再次驶入快捷,然后点击原点,这样拉出来的第一根线才是在原点,我尝试着颠倒了一下前两部命令的步骤之类的,还是没调出来,所以还得请版主大人指点迷津啦!!谢谢!

ZZXXQQ 发表于 2014-4-27 14:37:32

(defun c:udd ()
(setq pt (getpoint "\n原点: "));取得原点
(command "UCS" "N" pt);发出UCS命令并给定原点
(command "DIMORDINATE" (list 0 0));发出坐标标注命令并给定起点
(while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前一命令完成
(command "DIMBASELINE");发出标注命令
(while (> (getvar "CMDACTIVE") 0) (command PAUSE));等待前一命令完成
(princ)
)

jevnchen0720 发表于 2014-4-27 14:54:31

ZZXXQQ 发表于 2014-4-27 14:37 static/image/common/back.gif


OK了,版主,原来指定一个坐标0点就好了,谢谢!!!可以通过QQ联系你下吗?还有几个问题想请教一下!

xyp1964 发表于 2014-4-27 15:57:40


(defun c:tt ()
(setq pt (getpoint "\n基点<退出>: "))
(command "ucs" "n" pt)
(setq p0 '(0 0)
        p1 '(0 300)
        p2 '(300 0)
)
(command "dim1" "ord" p0 p1 "")
(setq s1 (entlast))
(command "dim1" "ord" p0 p2 "")
(setq s2 (entlast))
(while (setq p0 (getpoint "\n基点<退出>: "))
    (command "dim1" "bas" "" s1 p0 "")
    (command "dim1" "bas" "" s2 p0 "")
)
(princ)
)
页: [1] 2
查看完整版本: 如何利用LISP合并CAD快捷键