明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: yangist

[已解答] 提取文本数字并计算写入的程序

[复制链接]
 楼主| 发表于 2015-2-6 07:45 | 显示全部楼层
本帖最后由 yangist 于 2015-2-6 07:54 编辑
vectra 发表于 2015-2-5 19:42
“钢板t10-200x100” 和 “钢板δ10-200x100”测试结果均为1.57

第24行

谢谢,小数点没问题了;
δ在cad里是\U+03B401,所以会错,换成t就ok了;
再次谢谢您的解答!
可否加个判断 如果有δ 就除以0.3 410;哇(ˉ﹃ˉ),可惜我不会编...
回复

使用道具 举报

发表于 2015-2-6 23:03 | 显示全部楼层
本帖最后由 springwillow 于 2015-2-7 19:00 编辑

虽然vectra兄的程序也能满足你的要求,但是感觉不够简练,通用性也不是很高。试试我这个吧!其中的xxexp函数可以去一刀屠文的帖子找
  1. (defun c:tt ( / endnum ent firstendnum ss sslen txt txt1)
  2. (vl-load-com)
  3.   (princ"by springwillow")
  4.   (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  5.   (setq firstendnum (getvar 'Lastprompt))
  6.   (princ "\n选择文字: ")
  7.   (if (setq ss (ssget ":S" '((0 . "TEXT"))))
  8.     (repeat (setq sslen (sslength ss))
  9.       (setq ent (entget (ssname ss (setq sslen (1- sslen))))
  10.       txt1 (cdr (assoc 1 ent)))
  11.       (while (vl-string-search "\U+03B401" txt1)
  12.             (setq txt1 (vl-string-subst "" "\U+03B401" txt1)))
  13.       (setq txt (vl-string-left-trim "xx="  (vl-string-left-trim " " txt1))
  14.       txt (apply 'strcat (xxexp"[\\d+-/x\\\+]" txt "")))
  15.       (while (vl-string-search "x" txt)
  16.             (setq txt (vl-string-subst "*" "x" txt)))
  17.       (command "cal" txt)
  18.       (setq endnum (getvar 'Lastprompt))
  19.       (if (/= endnum "表达式语法错误")
  20.       (entmod (subst (cons 1 (strcat txt1 "=" endnum)) (assoc 1 ent) ent)))
  21.       (setq firstendnum endnum)
  22.     )
  23.   )
  24.   (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  25.   (princ)
  26. )
回复

使用道具 举报

 楼主| 发表于 2015-2-7 08:11 | 显示全部楼层
springwillow 发表于 2015-2-6 23:03
虽然vectra兄的程序也能满足你的要求,但是感觉不够简练,通用性也不是很高。试试我这个吧!其中的xxexp函数 ...

谢谢,我的lisp水平有限,vla函数我看不懂呢,
试用了一刀屠文,也出错了
您能帮我优化下vectra兄的帖子吗
对\U+03B401加以判断
暂时不需要复杂的功能
主要是批量文本的处理,少数情况就手动了
期待ing,非常感谢!
回复

使用道具 举报

发表于 2015-2-7 11:19 | 显示全部楼层
yangist 发表于 2015-2-7 08:11
谢谢,我的lisp水平有限,vla函数我看不懂呢,
试用了一刀屠文,也出错了
您能帮我优化下vectra兄的帖子吗
...

出错可能是你还没有调用VL函数,头上加一句(vl-load-com)。想用vectra的程序你也只需要这样改一下
  1. (setq a (cdr (assoc 1 (entget (ssname ss 0)))))
  2. (while (vl-string-search "\U+03B401" a)
  3.             (setq a(vl-string-subst "" "\U+03B401" a)))
  4. (setq b (* (apply '* (mapcar 'read (split-numbers a))) 0.001 0.001 7.85))
就能去掉你的编码符号了。
回复

使用道具 举报

 楼主| 发表于 2015-2-7 13:32 | 显示全部楼层
本帖最后由 yangist 于 2015-2-7 13:36 编辑
springwillow 发表于 2015-2-7 11:19
出错可能是你还没有调用VL函数,头上加一句(vl-load-com)。想用vectra的程序你也只需要这样改一下就能去掉 ...

提示语法错误...也没有效果
如果您有空,能完整的调试下么
如果忙,就不麻烦了,我用find替换下
只是这个命令不完美,一不小心就容易出错,唉
回复

使用道具 举报

发表于 2015-2-7 18:47 来自手机 | 显示全部楼层
本帖最后由 springwillow 于 2015-2-7 19:01 编辑
yangist 发表于 2015-2-7 13:32
提示语法错误...也没有效果
如果您有空,能完整的调试下么
如果忙,就不麻烦了,我用find替换下

发个样图上来吧! 还有你最好别用xx=,因为xx与乘号相同,有时候会误判,最好换成别的。确实发现了一处错误,已修改请再试试
回复

使用道具 举报

发表于 2015-2-7 22:19 | 显示全部楼层
本帖最后由 sutai 于 2015-2-8 20:56 编辑

这个附件怎么删除???

附件作废!

请浏览 http://bbs.mjtd.com/forum.php?mo ... mp;extra=#pid668243

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-2-8 07:49 | 显示全部楼层
springwillow 发表于 2015-2-7 18:47
发个样图上来吧! 还有你最好别用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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-2-8 07:52 | 显示全部楼层
sutai 发表于 2015-2-7 22:19
加入互动

您好! 谢谢你的指点,
您的写法不能适应以下各种情况哦,
而且多了一步操作,不是很理想
钢板 10 200*100
钢板 10 200x100
钢板 t10 200x100
钢板 δ10 200x100
钢板 δ10*200*100
钢板 δ10x200x100
钢板 t10-200*100
钢板δ10-200*100
钢板t10-200x100
钢板δ10-200x100
回复

使用道具 举报

发表于 2015-2-8 09:33 | 显示全部楼层
yangist 发表于 2015-2-8 07:52
您好! 谢谢你的指点,
您的写法不能适应以下各种情况哦,
而且多了一步操作,不是很理想

是多了步操作,但若自己使用格式设为默认的话也就多个回车。
数据里带空格,你把默认模式中的空格改成逗号(我弄成空格是因为方便),就可以输入格式:空格 逗号 星
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 19:27 , Processed in 0.174256 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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