yangist
发表于 2015-2-6 07:45:08
本帖最后由 yangist 于 2015-2-6 07:54 编辑
vectra 发表于 2015-2-5 19:42 static/image/common/back.gif
“钢板t10-200x100” 和 “钢板δ10-200x100”测试结果均为1.57
第24行
谢谢,小数点没问题了;
δ在cad里是\U+03B401,所以会错,换成t就ok了;
再次谢谢您的解答!
可否加个判断 如果有δ 就除以0.3 410;哇(ˉ﹃ˉ),可惜我不会编...
springwillow
发表于 2015-2-6 23:03:07
本帖最后由 springwillow 于 2015-2-7 19:00 编辑
虽然vectra兄的程序也能满足你的要求,但是感觉不够简练,通用性也不是很高。试试我这个吧!其中的xxexp函数可以去一刀屠文的帖子找(defun c:tt ( / endnum ent firstendnum ss sslen txt txt1)
(vl-load-com)
(princ"by springwillow")
(vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
(setq firstendnum (getvar 'Lastprompt))
(princ "\n选择文字: ")
(if (setq ss (ssget ":S" '((0 . "TEXT"))))
(repeat (setq sslen (sslength ss))
(setq ent (entget (ssname ss (setq sslen (1- sslen))))
txt1 (cdr (assoc 1 ent)))
(while (vl-string-search "\U+03B401" txt1)
(setq txt1 (vl-string-subst "" "\U+03B401" txt1)))
(setq txt (vl-string-left-trim "xx="(vl-string-left-trim " " txt1))
txt (apply 'strcat (xxexp"[\\d+-/x\\\+]" txt "")))
(while (vl-string-search "x" txt)
(setq txt (vl-string-subst "*" "x" txt)))
(command "cal" txt)
(setq endnum (getvar 'Lastprompt))
(if (/= endnum "表达式语法错误")
(entmod (subst (cons 1 (strcat txt1 "=" endnum)) (assoc 1 ent) ent)))
(setq firstendnum endnum)
)
)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(princ)
)
yangist
发表于 2015-2-7 08:11:50
springwillow 发表于 2015-2-6 23:03 static/image/common/back.gif
虽然vectra兄的程序也能满足你的要求,但是感觉不够简练,通用性也不是很高。试试我这个吧!其中的xxexp函数 ...
谢谢,我的lisp水平有限,vla函数我看不懂呢,
试用了一刀屠文,也出错了
您能帮我优化下vectra兄的帖子吗
对\U+03B401加以判断
暂时不需要复杂的功能
主要是批量文本的处理,少数情况就手动了
期待ing,非常感谢!
springwillow
发表于 2015-2-7 11:19:03
yangist 发表于 2015-2-7 08:11 static/image/common/back.gif
谢谢,我的lisp水平有限,vla函数我看不懂呢,
试用了一刀屠文,也出错了
您能帮我优化下vectra兄的帖子吗
...
出错可能是你还没有调用VL函数,头上加一句(vl-load-com)。想用vectra的程序你也只需要这样改一下(setq a (cdr (assoc 1 (entget (ssname ss 0)))))
(while (vl-string-search "\U+03B401" a)
(setq a(vl-string-subst "" "\U+03B401" a)))
(setq b (* (apply '* (mapcar 'read (split-numbers a))) 0.001 0.001 7.85))就能去掉你的编码符号了。
yangist
发表于 2015-2-7 13:32:58
本帖最后由 yangist 于 2015-2-7 13:36 编辑
springwillow 发表于 2015-2-7 11:19 static/image/common/back.gif
出错可能是你还没有调用VL函数,头上加一句(vl-load-com)。想用vectra的程序你也只需要这样改一下就能去掉 ...
提示语法错误...也没有效果
如果您有空,能完整的调试下么
如果忙,就不麻烦了,我用find替换下
只是这个命令不完美,一不小心就容易出错,唉
springwillow
发表于 2015-2-7 18:47:12
本帖最后由 springwillow 于 2015-2-7 19:01 编辑
yangist 发表于 2015-2-7 13:32
提示语法错误...也没有效果
如果您有空,能完整的调试下么
如果忙,就不麻烦了,我用find替换下
发个样图上来吧! 还有你最好别用xx=,因为xx与乘号相同,有时候会误判,最好换成别的。确实发现了一处错误,已修改请再试试
sutai
发表于 2015-2-7 22:19:15
本帖最后由 sutai 于 2015-2-8 20:56 编辑
这个附件怎么删除???
附件作废!
请浏览 http://bbs.mjtd.com/forum.php?mod=viewthread&tid=112994&page=1&extra=#pid668243
yangist
发表于 2015-2-8 07:49:59
springwillow 发表于 2015-2-7 18:47 static/image/common/back.gif
发个样图上来吧! 还有你最好别用xx=,因为xx与乘号相同,有时候会误判,最好换成别的。确实发现了一处错误 ...好的:程序不报错了 可是结果还是不一致
钢板 10 200*100
钢板 10 200x100
钢板 t10 200x100
钢板 δ10 200x100
钢板 δ10*200*100
钢板 δ10x200x100
钢板 t10-200*100
钢板δ10-200*100
钢板t10-200x100
钢板δ10-200x100
yangist
发表于 2015-2-8 07:52:15
sutai 发表于 2015-2-7 22:19 static/image/common/back.gif
加入互动
您好! 谢谢你的指点,
您的写法不能适应以下各种情况哦,
而且多了一步操作,不是很理想
钢板 10 200*100
钢板 10 200x100
钢板 t10 200x100
钢板 δ10 200x100
钢板 δ10*200*100
钢板 δ10x200x100
钢板 t10-200*100
钢板δ10-200*100
钢板t10-200x100
钢板δ10-200x100
sutai
发表于 2015-2-8 09:33:57
yangist 发表于 2015-2-8 07:52 static/image/common/back.gif
您好! 谢谢你的指点,
您的写法不能适应以下各种情况哦,
而且多了一步操作,不是很理想
是多了步操作,但若自己使用格式设为默认的话也就多个回车。
数据里带空格,你把默认模式中的空格改成逗号(我弄成空格是因为方便),就可以输入格式:空格 逗号 星