乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 106|回复: 9

求教

[复制链接]

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2004-3-25 16:35:00 | 显示全部楼层 |阅读模式
求教:
                 请问如何获得多行文字编辑器编写的内容。我打算直接选取多行文字(用MTEXT编写的数字)。计算加和。但是不知道如何获取里面的数值。请大虾指教。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-25 16:41:00 | 显示全部楼层
(cdr (assoc 1 (entget (car (entsel)))));可能会有一些格式
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2004-3-25 17:06:00 | 显示全部楼层
谢谢斑竹。我试试。
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2004-3-25 17:11:00 | 显示全部楼层
顺便问一下,为什么我用MTEXT写入数据(比如10,20,30,中间逗号为回车)。用命令获取的时候只能读第一个数据10?不能计算后面的20,30。
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-25 18:27:00 | 显示全部楼层
不会啊,

21hvqhdq2ox.JPG

21hvqhdq2ox.JPG

回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 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命令提示符>")
(prin1)
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2004-3-25 20:36:00 | 显示全部楼层
我前面说了,提取出来的文本会有一些格式,如我的图中提取出来的就是10\\P20\\P30,这里的\\p就是格式,你要去除这些格式,把你需要的内容提出来,这就是一个字符串操作的过程。。。
回复

使用道具 举报

yxp

122

主题

702

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1188
发表于 2004-3-25 21:33:00 | 显示全部楼层

;文本计算器(defun C:tad( / ss1 ssna sum ss2 x)
                                                 (setq ss1 (ssget '((0 . "text"))))                                                                         ;选择对象并过滤文本
                                                 (setq ssna(sslength ss1))        
                                          (princ (strcat "\n 共选择了" (itoa ssna) "个数据文本。"))
                                                 (setq sum 0.0 n 0 tum 0)
                                                 (while (< n ssna)
                                                                                 (setq ss2 (assoc 1 (entget (ssname ss1 n))))                         ;得到第n个文本
                                                                                 (setq x (atof (cdr ss2)))                                                                         ;从点表中取得数据并转化为数字格式
                                                                                 (setq tum (+ tum (* x x)))
                                                                                 (setq sum (+ sum x) n (1+ n))                                         ;累加计算后,赋值给SUM
                                                                 )
                                 (princ (strcat "\n 参加计算:" (rtos n) "个" "         计算结果=" (rtos sum 2 4) "         平均值=" (rtos (/ sum ssna) 2 4) "         平方和=" (rtos tum 2 4)))
                                 (princ)
)
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2004-3-25 21:49:00 | 显示全部楼层
楼上的谢谢,但是我运行你的程序还是不能对mtext命令的数值进行计算,只能炸开后才能计算。
回复

使用道具 举报

38

主题

123

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2004-3-25 21:53:00 | 显示全部楼层
谢谢斑竹,我明白你的意思了。谢谢!!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-15 15:33 , Processed in 3.131616 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表