明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3527|回复: 8

求教:如何用lisp在dwg文件中查找一个字符串,然后进行判断操作

[复制链接]
发表于 2011-11-23 12:56:52 | 显示全部楼层 |阅读模式
请各位高手帮帮忙,现在的问题是这样的,我有一批图纸,有些里面有字符串“1:200”,有些是“1:300”,有些是“1:500”,等等,就是比例不一样,因此所画的图框大小也是不一样的,我现在想在里面加个图框,图框我相应的比例我都做成了块了,比例为1:200的要插入的图块名叫2.dwg,1:300的要插入的图块叫3.dwg,1:500的要插入的图块叫5.dwg. 插入点都为原点,我想在想写一个lisp,就是先对某个打开的dwg文件进行判断,如果这个dwg文件中有“1:200”的字符串,那么就插入2.dwg这个块,如果有“1:300”的字符串就插入3.dwg这个块,如果有“1:500”这样的字符串就插入5.dwg。插入点都是原点。请各位大侠帮忙写一个啊,因为刚接触lisp,不知道的东西太多了,劳驾高手们指点一下。不幸感激!
 楼主| 发表于 2011-11-23 12:58:04 | 显示全部楼层
各位高手,那个字符串有可能是单行文本,也有可能是多行文本。
发表于 2011-11-23 13:36:41 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2011-11-23 20:17 编辑

;按字串内容插入图框 明经 ZZXXQQ 2011.11.23
(defun c:tt ()
(setvar "CMDECHO" 0)
(cond
((ssget "X" '((0 . "*TEXT") (1 . "*1:100*")))
   (command "_.INSERT" "1.dwg" '(0 0) "" "" "")
)
((ssget "X" '((0 . "*TEXT") (1 . "*1:200*")))
  (command "_.INSERT" "2.dwg" '(0 0) "" "" "")
)
((ssget "X" '((0 . "*TEXT") (1 . "*1:300*")))
  (command "_.INSERT" "3.dwg" '(0 0) "" "" "")
)
((ssget "X" '((0 . "*TEXT") (1 . "*1:400*")))
  (command "_.INSERT" "4.dwg" '(0 0) "" "" "")
)
((ssget "X" '((0 . "*TEXT") (1 . "*1:500*")))
  (command "_.INSERT" "5.dwg" '(0 0) "" "" "")
)
)
(setvar "CMDECHO" 1)
(princ)
)

 楼主| 发表于 2011-11-23 13:41:28 | 显示全部楼层
ZZXXQQ 发表于 2011-11-23 13:36
;按字串内容插入图框 明经 ZZXXQQ 2011.11.23
(defun c:tt ()
(setvar "CMDECHO" 0)

呵呵,多谢版主帮忙,感激不尽啊
 楼主| 发表于 2011-11-23 13:53:14 | 显示全部楼层
ZZXXQQ 发表于 2011-11-23 13:36
;按字串内容插入图框 明经 ZZXXQQ 2011.11.23
(defun c:tt ()
(setvar "CMDECHO" 0)

版主,经测试,我dwg文件里面只有1:200,没有其他的几个比例的字符串,但奇怪的是运行后,他把其他几个比例相应的图框也全部加进去了,郁闷
 楼主| 发表于 2011-11-23 13:59:55 | 显示全部楼层
ZZXXQQ 发表于 2011-11-23 13:36
;按字串内容插入图框 明经 ZZXXQQ 2011.11.23
(defun c:tt ()
(setvar "CMDECHO" 0)

(if (ssget "X" '((0 . "*TEXT") (1 . "*1:100*"))))
是不是这句最后面的个括号都要去掉啊,多一个括号吧?
发表于 2011-11-23 14:28:23 | 显示全部楼层
shalei021647 发表于 2011-11-23 13:59
(if (ssget "X" '((0 . "*TEXT") (1 . "*1:100*"))))
是不是这句最后面的个括号都要去掉啊,多一个括号吧 ...

是的,但可自行验证呗
发表于 2011-11-23 20:21:31 | 显示全部楼层
是多了右括弧。3楼已改,用cond代替if,保证在多条件时只画一个比例最小的。
 楼主| 发表于 2011-11-23 23:42:39 | 显示全部楼层
ZZXXQQ 发表于 2011-11-23 20:21
是多了右括弧。3楼已改,用cond代替if,保证在多条件时只画一个比例最小的。

呵呵,多谢超级版主,我还不太明白cond的用法,先查点资料看看。多谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 15:28 , Processed in 0.214423 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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