tnvsb 发表于 2022-7-5 13:18:35

需要帮助修改L

我无意中修改了这个lisp代码。此lisp代码将值的最终总和乘以固定值“0.9”。但是我需要在这个lisp代码中做一个更改,代码应该从命令提示符中获取用户输入值。这意味着乘法因子是一个可变值。请帮忙。高级谢谢。
 
(定义C:9FS(/cpent elist en ip newtext pt ss sum sumtxt)
(原理“\n\t\t>>选择文本以获取摘要>>>”)
(如果
;;在屏幕上选择文字/多行文字:
(setq ss(ssget’((0。“*TEXT”)))
;; 如果选中,则:
(程序
;; 存储第一个文本实体,以便进一步使用:
(setq cpent(ssname ss 0))
;; 将初始和设置为零:
(setq和0。)
;; 通过选定文本/多文本循环:
(虽然
;; 获取所选内容中的第一个文本:
(setq en(ssname ss 0))
;; 获取它们的实体列表:
(setq elist(entget en))
;; 从实体列表中按键1获取文本字符串:
(setq txt(cdr(assoc 1 elist)))
;; 创建输出字符串:
(setq sumtxt
;; 连接字符串:
(strcat)
;; 将数字转换为字符串:
(实时操作系统
;; 将文字的数字值相加:
(setq sum(+0.9(atof txt))sum)
;; 2表示公制单位(3表示工程):
2.
;; 通过电流设置精度:
(getvar“dimdec”))
)
;; 从选择集中删除实体:
(ssdel en ss)
)
;; 在命令行中显示消息:
(princ(strcat“\nSumm=“sumtxt”)
(setq pt(getpoint“\n指定新文本位置:”)
;; 获取存储实体的插入点:
(setq ip(cdr(assoc 10(entget cpent)))
;; 将文本实体复制到新的目标点:
(命令“\u copy“cpent”“”\u non“ip”\u non“pt)
;; 获取上次创建的实体:
(setq newtxt(entlast))
;; 获取它们的实体列表:
(setq elist(entget newtext))
;; 使用新文本字符串修改实体列表:
(entmod(subst(cons 1 sumtxt)(assoc 1 elist)elist)
;; 更新更改:
(entupd NewText)
)
)
(普林斯)
)
(princ“\n带STX的START命令…”)
(普林斯)

dlanorh 发表于 2022-7-5 13:43:14

 
添加红线和变量(代码顶部)更改代码以匹配绿线(将mf替换为0.9)

tnvsb 发表于 2022-7-5 14:00:51

先生,非常感谢您的及时回复,这将使我感到高兴。
但代码中存在一个小问题,如果它在数字之前有字母,那么它就不能工作。你能帮帮我吗。

dlanorh 发表于 2022-7-5 14:34:26

 
如果这只发生在多行文字上,那么它们很可能是多行文字格式的字符串。除此之外,请以Autocad 2010格式发布带有问题文本/多行文字的图形,或给出您获得的字符串示例。
页: [1]
查看完整版本: 需要帮助修改L