对数字进行加法/减法运算
你好我是lisp的新手,有一个问题要问所有有经验的lisp程序员。我有一个用于立面的块,它必须具有属性(用于混凝土和饰面立面)。
我想给这个属性添加一个特定的数字。格式是“+7.05”或“-7.00”,我发现了一些LISP,但它们都将格式(如果总和是整数)更改为“7”或“-7”。
是否有人使用脚本添加/子构造特定数字,而不删除coma和加号后的数字?我们不必选择一个特定的属性,我可以复制到一个新文件,并从该文件中的所有att.中添加/减去。
我发现了一个旧的脚本是由阿斯米写的;
http://www.cadtutor.net/forum/showthread.php?21726-Numerical-Global-Block-Attribute&和一个简单的
(defun AddNumAtt (add tag / e ei et txt)
(setq e (entnext)
tag (strcase tag))
(while (setq e (entnext e))
(setq ei (entget e)
et (cdr (assoc 0 ei)))
(and (= "ATTRIB" et)
(wcmatch (cdr (assoc 2 ei)) tag)
(setq txt (cdr (assoc 1 ei)))
(numberp (setq num (read txt)))
(entmod
(subst (cons 1 (rtos (+ add num) 2 2)) (assoc 1 ei) ei)); ) 2 2)change second 2 for precision.
(entupd e)))
(princ))
;(AddNumAtt 10 "*") ;(AddNumatt value to +/-tagname)
谢谢你的帮助。
没有看到冒犯的代码。。。RTOS功能*应该*能够解决这一问题:眨眼: 实际上,我真的不知道在哪里添加RTOS功能 您的个人资料显示您正在使用AutoCAD LT。对吗? 通常我使用LT,但我有一个共享许可证,所以现在我使用Autocad 2011。
别担心,我们会尽力帮忙的。
LISP代码是否在您想要使用的代码之上?如果没有,请张贴所需的代码,以便我们可以看看。 您好,
在一些帮助下,我找到了RTOS的解决方案。
但它在前面加了一个+符号,所以用户必须找到并替换“+-”到“-”。
精度应为0.00。
谢谢。
(defun AddNumAtt(添加标签/e ei et txt)
`
(setq e(entnext)
标记(strcase tag))
(while(setq e(entnext e))
(setq ei(entget e)
et(cdr(assoc 0 ei)))
(和(=“ATTRIB”et)
(wcmatch(cdr(assoc 2 ei))标记)
(setq txt(cdr(assoc 1 ei)))
(numberp(setq num(read txt)))
(entmod)
(subst(cons 1(strcat“+”(rtos(+add num)2)))(assoc 1 ei)ei)
(entupd e)))
(普林斯)
(警告“ğizimdeki tüm attributeler değiştirilecek!!!”)
(setq addreal(getreal“\nEklenecek sayıyıgirizing:”)
(if(=addreal nil)(setq addreal-6))
(AddNumAtt addreal“*”)
;(AddNumAtt 1.00“*”)
(提醒“find penceresi açldığnda”+-“leri arattırın ve”-“ile değiştirtin!!!”)
(命令“find”);
页:
[1]