明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1805|回复: 19

[提问] 代码组合代码 命令怎么写,求高手支招

[复制链接]
发表于 2020-1-8 16:25 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 xj6019 于 2020-1-9 15:48 编辑

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

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

最佳答案

查看完整内容

直接加一句改标注样式的码就好啦,要那么折腾啊··· 把你那句改为: (command "-dimstyle" "r" (strcat "D" (itoa Dbiaozhu))) D是你的标注样式名除掉后面数字的文字
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-1-8 16:25 | 显示全部楼层
本帖最后由 start4444 于 2020-1-9 12:49 编辑

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

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

点评

(defun c:dsd ()(vl-cmdf "-dimstyle" "a" (ssget) "" )(princ)) 这个代码怎么改成选择后直接执行(可框选) “(setq ss (ssget":S" '((0 . "DIMENSION"))) i 0) ”我把你这句的(ssget   发表于 2020-1-9 15:54
全部都是整数,没有小数! 不弄一下,用的时候当前标注样式的比例和代码记忆的比例就不一致了,就得结束命令,改到需要的标注样式,再重新输命令运行,太别扭了,所以才想改改,看看优化一下  发表于 2020-1-9 14:32
我试了 直接是数字可以 换成代码就不好使了 是不是语法上面还有其他说法?  发表于 2020-1-9 14:28
回复

使用道具 举报

发表于 2020-1-9 07:38 来自手机 | 显示全部楼层
http://www.mjtd.com/forum.php?mod=viewthread&tid=168949&highlight=255&mobile=2
回复

使用道具 举报

 楼主| 发表于 2020-1-9 08:03 | 显示全部楼层
Bao_lai 发表于 2020-1-9 07:38
http://www.mjtd.com/forum.php?mod=viewthread&tid=168949&highlight=255&mobile=2

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

使用道具 举报

发表于 2020-1-9 08:56 | 显示全部楼层
(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命令")
                )
        )
)

这个样子?

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2020-1-9 09:07 | 显示全部楼层
不就是关键字么?
回复

使用道具 举报

 楼主| 发表于 2020-1-9 12:00 | 显示全部楼层
本帖最后由 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
这个需要能不能用一句代码可以执行啊
非常感谢!!
回复

使用道具 举报

发表于 2020-1-9 12:22 | 显示全部楼层
(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")

评分

参与人数 1明经币 +1 收起 理由
xj6019 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2020-1-9 12:35 | 显示全部楼层
本帖最后由 xj6019 于 2020-1-9 12:37 编辑
taoyi0727 发表于 2020-1-9 12:22
(defun c:b1 ()
        (alert "b1")
)

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

(defun c:dvv (/ angx angxx  d dim1 dim2 dimlst n  pt1 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"))))
................
................
老师,我是这个意思,您能理解我的需求了吗,用常用的固定命令格式没法满足
这个问题确实有点不太好表达哦
多多体谅!!!
回复

使用道具 举报

 楼主| 发表于 2020-1-9 13:00 | 显示全部楼层
start4444 发表于 2020-1-9 12:43
直接加一句改标注样式的码就好啦,要那么折腾啊···
把你那句改为:
(command "-dimstyle" "r" (strcat ...

我理解的应该是这个意思吧,为什么执行命令后,会出现让输入标注样式名称的输入框呢,我是想直接执行就好
难道还是我理解的有误呀??老师再帮我看看呗
(defun c:dvv (/ angx angxx  d dim1 dim2 dimlst n  pt1 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)))
        ......................

点评

(vl-cmdf "-dimstyle" "a" (ssget":S") "")  发表于 2020-1-9 16:21
改成这样 (command "_dimstyle" "r" (strcat "寸法M--" (itoa (fix Dbiaozhu))))  发表于 2020-1-9 15:06
改成这样 (command "_dimstyle" "r" (strcat "寸法M--" (itoa (fix 20.0))))  发表于 2020-1-9 15:06
(command "_dimstyle" "r" (strcat "寸法M--" (itoa 20))) 你把这句拷贝到cad命令行运行看看,你的比例都是整数吧?  发表于 2020-1-9 14:12
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 19:00 , Processed in 0.253359 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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