明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1829|回复: 9

求教

[复制链接]
发表于 2004-3-25 16:35:00 | 显示全部楼层 |阅读模式
求教:


                 请问如何获得多行文字编辑器编写的内容。我打算直接选取多行文字(用MTEXT编写的数字)。计算加和。但是不知道如何获取里面的数值。请大虾指教。
发表于 2004-3-25 16:41:00 | 显示全部楼层
(cdr (assoc 1 (entget (car (entsel)))));可能会有一些格式
 楼主| 发表于 2004-3-25 17:06:00 | 显示全部楼层
谢谢斑竹。我试试。
 楼主| 发表于 2004-3-25 17:11:00 | 显示全部楼层
顺便问一下,为什么我用MTEXT写入数据(比如10,20,30,中间逗号为回车)。用命令获取的时候只能读第一个数据10?不能计算后面的20,30。
发表于 2004-3-25 18:27:00 | 显示全部楼层
不会啊,

本帖子中包含更多资源

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

x
 楼主| 发表于 2004-3-25 20:15:00 | 显示全部楼层
谢谢斑竹。我的意思是要获取文本里面的数值,比如运行mtext输入10回车20回车30,然后运行我的程序,选择这些文字要求算出和来,但是每次只能算出10来。下面是源程序,希望斑竹抽空瞅瞅,不胜感激。 (defun c:jszl()
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq OS (GETVAR "OSMODE")) ;设置捕捉关闭
(setvar "OSMODE" 0) (princ "\n选取数字") (setq ss (ssget))
(setq i 0)
(setq S 0)
(setq SM 0)
(repeat (sslength ss)
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq sstyp (cdr (assoc 0 ssdata)))
(if (= sstyp "MTEXT") ;文字样式,为MTEXT,假若为TEXT书写改为TEXT
(progn
(setq SM (1+ SM))
(setq txt (cdr (assoc 1 ssdata)))
(setq X (atof txt))
(setq S (+ S X))
)
) ;if结束括号
(setq i (1+ i))
)
(setq chksty (tblsearch "style" "技术要求"))
(if (= chksty nil)
(command "style" "技术要求" "ysr,hztxt" "" 0.75 "" "" "")
)

(setq TZ (GETVAR "TEXTSIZE")) ;获取原文字高度
(setvar "TEXTSIZE" 5) ;确定文字高度
(setq A0 (getpoint"输入的中心点:"))
(command "text" A0 "" 0 (strcat "所选" (rtos SM 2) "个数据的和是=" (rtos S 2 1)))
(setvar "OSMODE" os)
(setvar "TEXTSIZE" TZ) ;恢复原文字高度
)
(prompt"\n命令提示符<<jszl>>")
(prin1)
发表于 2004-3-25 20:36:00 | 显示全部楼层
我前面说了,提取出来的文本会有一些格式,如我的图中提取出来的就是10\\P20\\P30,这里的\\p就是格式,你要去除这些格式,把你需要的内容提出来,这就是一个字符串操作的过程。。。
发表于 2004-3-25 21:33:00 | 显示全部楼层
<BR>;文本计算器



(defun C:tad( / ss1 ssna sum ss2 x)<BR>                                                 (setq ss1 (ssget '((0 . "text"))))                                                                         ;选择对象并过滤文本<BR>                                                 (setq ssna(sslength ss1))       


                                          (princ (strcat "\n 共选择了" (itoa ssna) "个数据文本。"))<BR>                                                 (setq sum 0.0 n 0 tum 0)<BR>                                                 (while (&lt; n ssna) <BR>                                                                                 (setq ss2 (assoc 1 (entget (ssname ss1 n))))                         ;得到第n个文本<BR>                                                                                 (setq x (atof (cdr ss2)))                                                                         ;从点表中取得数据并转化为数字格式<BR>                                                                                 (setq tum (+ tum (* x x)))<BR>                                                                                 (setq sum (+ sum x) n (1+ n))                                         ;累加计算后,赋值给SUM<BR>                                                                 )<BR>                                 (princ (strcat "\n 参加计算:" (rtos n) "个" "         计算结果=" (rtos sum 2 4) "         平均值=" (rtos (/ sum ssna) 2 4) "         平方和=" (rtos tum 2 4)))<BR>                                 (princ)<BR>)<BR>
 楼主| 发表于 2004-3-25 21:49:00 | 显示全部楼层
楼上的谢谢,但是我运行你的程序还是不能对mtext命令的数值进行计算,只能炸开后才能计算。
 楼主| 发表于 2004-3-25 21:53:00 | 显示全部楼层
谢谢斑竹,我明白你的意思了。谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 23:56 , Processed in 0.150548 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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