找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 733|回复: 6

[求助] [求助]:如何读入外部文本文件并写入图纸中

[复制链接]
发表于 2003-12-19 21:10:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请教:如何读入外部文本文件并写入图纸中

其中文本文件为多行不连续数据,如下:

12-1 god_on 开启无敌
  
12-2 god_off 关闭无敌
  
12-3 haveallweapon 拥有所有武器
  
12-4 addammo 给已经有的武器加满弹药
  
12-5 ammonolimit 已经有的武器子弹无限

想把如上格式数据写入图纸,要求是象上面的一行数据一行空行的多行文本(MTEXT)格式。

不知大家能否用AutoLISP编写一程序以实现上述功能。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-12-20 08:41:49 | 显示全部楼层
我老人家不爱用mtext。
说说你用mt的原因先。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-20 09:43:39 | 显示全部楼层
在LSP中,用循环读出文本文件,并拼接在一起,换行时加“\P”,然后写入MTEXT。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-20 14:39:47 | 显示全部楼层
最初由 on/off 发布
[B]我老人家不爱用mtext。
说说你用mt的原因先。 [/B]

用text我也会,但程序要求使用mtext。

最初由 lijiao 发布
[B]在LSP中,用循环读出文本文件,并拼接在一起,换行时加“\P”,然后写入MTEXT。 [/B]

lijiao长老,你能给出具体的代码示例吗?我在AutoLISP中的语句是:

(setq fm (open fdname "r"));打开数据文件
(repeat M0;M0数据总行数
(setq SJ0 (read-line fm))
(if (= SJ0 "") (setq WB1 (strcat WB1 SJ0 (chr 13))) (setq WB1 (strcat WB1 SJ0)))
;判断(= SJ0 "")即为空行,加上换行符(chr 13)
);end repeat M0
(close fm)
(command "-mtext" P1 "h" 4.5 P2 WB1 "")

但上述代码产生的多行文本仍是连续的,不是程序所要求的“多行”文本格式。另:“\P”的方法我也试过,不行。(chr 13)即是“\r”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-12-20 19:04:28 | 显示全部楼层

  1. (setq fm (open fdname "r"));打开数据文件
  2. (setq all "")
  3. (setq p1(getpoint"\nStart:") p2 (getcorner p1 "\nNext:") )
  4. (repeat M0;M0数据总行数
  5.   (setq SJ0 (read-line fm))
  6.     (setq all(strcat all sj0 "\\P"))
  7. )
  8. (entmake
  9. (list '(0 . "MTEXT")'(100 . "AcDbEntity")'(100 . "AcDbMText")(cons 10 p1) '(40 . 3.0)  ;起点,高度
  10. (cons 1 ALL) '(11 1.0 0.0 0.0)(cons 42(-(car p2)(car p1)))(cons 43(-(cadr p2)(cadr p1)));文字,宽.高
  11. ))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-12-20 20:08:45 | 显示全部楼层
最初由 aeo 发布
[B][code]
(setq fm (open fdname "r"));打开数据文件
(setq all "")
(setq p1(getpoint"\nStart:") p2 (getcorner p1 "\nNext:") )
(repeat M0;M0数据总行数
  (setq SJ0 (read-line fm))
    (setq all(strcat ... [/B]


这样用entmake作mt似乎有问题,比如256字符限制。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-12-20 20:27:03 | 显示全部楼层
谢谢aeo斑主,刚试过了,能实现“多行”文本格式,但“文字,宽.高”不能实现,查看其属性其宽度为0。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-27 00:09 , Processed in 0.372438 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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