xj6019 发表于 2020-1-8 16:25:01

代码组合代码 命令怎么写,求高手支招

本帖最后由 xj6019 于 2020-1-9 15:48 编辑

问题有点绕,举例说明:D命令是字母加数字的命令,比方说D1~20,D+每个数字是一个命令,我想在A命令运行的时候先执行一下D命令里的其中一个,但是D后面的数字是变化的,不可能每个数字都写一个A命令代码,
所以我想,用什么代码可以在运行A 命令的时候,执行D变化的命令。

命令执行顺序:A--空格---输入数字(10(变化的))----先执行一次D10(变化的)命令----然后才执行A命令的主命令
求大佬们给我一个能完成以上功能的代码吧
谢谢!!!!

start4444 发表于 2020-1-8 16:25:02

本帖最后由 start4444 于 2020-1-9 12:49 编辑

直接加一句改标注样式的码就好啦,要那么折腾啊···
把你那句改为:
(command "-dimstyle" "r" (strcat "D" (itoa Dbiaozhu)))

D是你的标注样式名除掉后面数字的文字

Bao_lai 发表于 2020-1-9 07:38:49

http://www.mjtd.com/forum.php?mod=viewthread&tid=168949&highlight=255&mobile=2

xj6019 发表于 2020-1-9 08:03:49

Bao_lai 发表于 2020-1-9 07:38
http://www.mjtd.com/forum.php?mod=viewthread&tid=168949&highlight=255&mobile=2

纯数字的,已经被其他占用,要带字母前缀拼合的!!

taoyi0727 发表于 2020-1-9 08:56:18

(defun d-n (/ n)
        (setq n 0)
        (repeat 10
                (setq n (1+ n))
                (eval (read (strcat "(defun c:d" (itoa n) " () (alert \"D" (itoa n) "命令" "\"))")))
        )
)
(defun c:a (/ num)
        (d-n)
        (if (setq num (getint "\n请输入1-10的数字:"))
                (progn
                        (eval (read (strcat "(c:d" (itoa num) ")")))
                        (alert "a命令")
                )
        )
)

这个样子?

ll_j 发表于 2020-1-9 09:07:17

不就是关键字么?

xj6019 发表于 2020-1-9 12:00:10

本帖最后由 xj6019 于 2020-1-9 12:01 编辑

taoyi0727 发表于 2020-1-9 08:56
(defun d-n (/ n)
      (setq n 0)
      (repeat 10

老师,研究了半天,套不上我需要的场景呢,我说一下我需要干嘛哦
我是需要用这个函数切换标注比例
A命令是一个多级标注的命令,里面有根据比例确定两层标注之间距离的函数
D+数字 是切换标注比例的
我想运行A命令的时候,执行一次D标注比例函数,来确保比例是一致的
如果是普通命令,放在其他命令里面执行的话,只需要写个
(C:d10)   ----比如是切换到10倍标注比例
有没有一个简单的函数
来执行这个切换命令呢(C:d+MMMM))   执行读取的代码比如是MMMM
这个需要能不能用一句代码可以执行啊
非常感谢!!

taoyi0727 发表于 2020-1-9 12:22:11

(defun c:b1 ()
        (alert "b1")
)
(defun c:b2 ()
        (alert "b2")
)
;;参数:prefix:命令前缀
;;参数:n:命令后续
(defun T-command (prefix n)
        (if (and prefix n)
                (eval (read (strcat "(" prefix n ")")))
        )
)
(T-command "c:b" "1")
(T-command "c:b" "2")

xj6019 发表于 2020-1-9 12:35:23

本帖最后由 xj6019 于 2020-1-9 12:37 编辑

taoyi0727 发表于 2020-1-9 12:22
(defun c:b1 ()
      (alert "b1")
)

这个代码是start4444老师写给我的多级标注的代码的开头

(defun c:dvv (/ angx angxxd dim1 dim2 dimlst npt1 pt2 pt3 ptlst ss)
      (if (not Dbiaozhu) (setq Dbiaozhu (getdist "\n標註比例:")) (setq Dbiaozhu (if (setq D (getdist (strcat "\n標註比例<" (rtos Dbiaozhu 2 2) ">:"))) D Dbiaozhu)))   
(C:d+Dbiaozhu)   ;这里想加个函数,Dbiaozhu要随时变化    
      (setq n 0 dimlst '() ss (ssget '((0 . "DIMENSION"))))
................
................
老师,我是这个意思,您能理解我的需求了吗,用常用的固定命令格式没法满足
这个问题确实有点不太好表达哦
多多体谅!!!

xj6019 发表于 2020-1-9 13:00:04

start4444 发表于 2020-1-9 12:43
直接加一句改标注样式的码就好啦,要那么折腾啊···
把你那句改为:
(command "-dimstyle" "r" (strcat ...
我理解的应该是这个意思吧,为什么执行命令后,会出现让输入标注样式名称的输入框呢,我是想直接执行就好
难道还是我理解的有误呀??老师再帮我看看呗
(defun c:dvv (/ angx angxxd dim1 dim2 dimlst npt1 pt2 pt3 ptlst ss)
      (if (not Dbiaozhu) (setq Dbiaozhu (getdist "\n標註比例:")) (setq Dbiaozhu (if (setq D (getdist (strcat "\n標註比例<" (rtos Dbiaozhu 2 2) ">:"))) D Dbiaozhu)))
               (command "-dimstyle" "r" (strcat "寸法M--" (itoa Dbiaozhu)))
      ......................
页: [1] 2
查看完整版本: 代码组合代码 命令怎么写,求高手支招