找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1975|回复: 11

按条件数据替换或输入文本

[复制链接]

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-10-24 19:52:25 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:tt ( / pt s1 s2 t1 t2 t3 t4 ts1 ts2 txt1 txt2)
  2.      (setq s1 (car (nentsel "\n请选择条件数据:"))
  3.      txt1 (entget s1)
  4.       ts1 (atof (cdr (assoc 1 txt1)))
  5.      )
  6.      (setq t1  t)
  7.    (if (and
  8.       (<= ts1 500)
  9.       (> ts1 0)
  10.     )
  11.         (while t1
  12.       (while (setq pt (getpoint))
  13.         (entmake (list '(0 . "TEXT") (cons 1 "9999") (cons 10 pt) (cons 40 300) (cons 62 235)))
  14.     )
  15.     (setq t2 t)
  16.     (while t2
  17.       (setq s2 (car (nentsel "\n请选取要修改的对象:"))
  18.       txt2 (entget s2)
  19.       ts2 (atof (cdr (assoc 1 txt2)))
  20.       )
  21.       (command "chprop" s2 "" "c" 235 "")
  22.       (entmod (subst
  23.       (cons 1 "9999")
  24.       (assoc 1 txt2)
  25.       txt2
  26.     )
  27.   )
  28.     )
  29.     )
  30.   )
  31.   (setq t1 nil
  32.       t2 nil
  33.       )
  34.       (setq t3  t)
  35.   (if (and
  36.       (<= ts1 1000)
  37.       (> ts1 500)
  38.     )
  39.    
  40.     (while t3
  41.       (while (setq pt (getpoint))
  42.         (entmake (list '(0 . "TEXT") (cons 1 "5555") (cons 10 pt) (cons 40 300) (cons 62 235)))
  43.     )
  44.     (setq t4 t)
  45.     (while t4
  46.       (setq s2 (car (nentsel "\n请选取要修改的对象:"))
  47.       txt2 (entget s2)
  48.       ts2 (atof (cdr (assoc 1 txt2)))
  49.       )
  50.       (command "chprop" s2 "" "c" 235 "")
  51.       (entmod (subst
  52.       (cons 1 "55555")
  53.       (assoc 1 txt2)
  54.       txt2
  55.     )
  56.   )
  57.     )
  58.     )
  59.   )
  60.   (setq t3 nil
  61.       t4 nil
  62.       )
  63.    )
这个Q群里别人向我求助的问题,我也不知道用在什么地方,只是按他的要求写的(说是高山流水还是什么工具箱里有的功能),新手,代码啰嗦,求简化代码同时简化操作。
000.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-24 20:16:46 | 显示全部楼层
  1. (defun c:tt (/ str p ss e1)
  2.   (if (setq str (getstring "\nInput New String: "))
  3.     (while (setq p (getpoint "\nPoint: "))
  4.       (or
  5. (and
  6.    (setq ss (xdrx_pickset_getAtPoint
  7.        p
  8.        (XD::Doc:GetPickboxHeight)
  9.        9
  10.        '((0 . "TEXT"))
  11.      )
  12.    )
  13.    (= 1 (sslength ss))
  14.    (setq e1 (xdrx_getentdata 9))
  15.    (xdrx_modent 1 str)
  16. )
  17. (xdrx_text_make p str (getvar "textsize") 0.)
  18.       )
  19.     )
  20.   )
  21.   (princ)
  22. )

点评

这怎么一样呢,条件必须是和也提供的一样。。代码已经能满足他的要求,但感觉操作能简化。。。  详情 回复 发表于 2013-10-24 20:27
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-10-24 20:27:06 | 显示全部楼层

这怎么一样呢,条件必须是和也提供的一样。。代码已经能满足他的要求,但感觉操作能简化。。。

点评

是这样吧 xdrx_pickset_getAtPoint 函数写法就是在那个自由矩形里拷贝的  详情 回复 发表于 2013-10-24 20:39
就是把 Getstring 改为选择文字并提取 string ,赋属性可以用 xdrx_entity_setpropertiesfrom  详情 回复 发表于 2013-10-24 20:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-24 20:30:20 | 显示全部楼层
q3_2006 发表于 2013-10-24 20:27
这怎么一样呢,条件必须是和也提供的一样。。代码已经能满足他的要求,但感觉操作能简化。。。

就是把 Getstring 改为选择文字并提取 string ,赋属性可以用 xdrx_entity_setpropertiesfrom

点评

我给求助的人留言了,让他来说想如何简化操作,我说不清楚,现在还没回复我。。。  详情 回复 发表于 2013-10-24 20:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-10-24 20:32:56 | 显示全部楼层
st788796 发表于 2013-10-24 20:30
就是把 Getstring 改为选择文字并提取 string ,赋属性可以用 xdrx_entity_setpropertiesfrom

我给求助的人留言了,让他来说想如何简化操作,我说不清楚,现在还没回复我。。。

点评

还带传声的,你把链接给朋友,让他来看不就行了,不行的让他直接问,免得传话不全。  详情 回复 发表于 2013-10-24 22:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-24 20:39:45 | 显示全部楼层
q3_2006 发表于 2013-10-24 20:27
这怎么一样呢,条件必须是和也提供的一样。。代码已经能满足他的要求,但感觉操作能简化。。。

是这样吧
  1. (defun c:tt (/ str p ss e1 e txt)
  2.   (and (setq e (xdrx_entsel "\nSelect Text: " '((0 . "text"))))
  3.        (setq str (xdrx_getentdxf 1)
  4.       e  (car e)
  5.        )
  6.        (while (setq p (getpoint "\nPoint: "))
  7.   (or
  8.     (and
  9.       (setq ss (xdrx_pickset_getAtPoint
  10.    p
  11.    (XD::Doc:GetPickboxHeight)
  12.    9
  13.    '((0 . "TEXT"))
  14.         )
  15.       )
  16.       (= 1 (sslength ss))
  17.       (setq e1 (xdrx_getentdata 9))
  18.       (xdrx_setpropertyvalue e1 "TextString" str)
  19.       (xdrx_entity_setpropertiesfrom e1 e)
  20.     )
  21.     (and (setq txt (xdrx_text_make p str (getvar "textsize") 0.))
  22.   (xdrx_entity_setpropertiesfrom txt e)
  23.     )
  24.   )
  25.        )
  26.   )
  27.   (princ)
  28. )

xdrx_pickset_getAtPoint 函数写法就是在那个自由矩形里拷贝的

点评

就是这个意思。。呵呵!  详情 回复 发表于 2013-10-25 12:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-10-24 22:02:00 | 显示全部楼层
q3_2006 发表于 2013-10-24 20:32
我给求助的人留言了,让他来说想如何简化操作,我说不清楚,现在还没回复我。。。

还带传声的,你把链接给朋友,让他来看不就行了,不行的让他直接问,免得传话不全。

点评

当然是给的链接。。不知道为什么没露面??  详情 回复 发表于 2013-10-25 06:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-10-25 06:49:59 | 显示全部楼层
Lispboy 发表于 2013-10-24 22:02
还带传声的,你把链接给朋友,让他来看不就行了,不行的让他直接问,免得传话不全。

当然是给的链接。。不知道为什么没露面??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-25 09:38:08 | 显示全部楼层
q3_2006,的代码已经可以用,就是操作起来慢了一点,他是在输出的时候用空格来切换是用替换,还是用直接写入,现在就是能不能简化成输出的时候自己判断是用替换,还是用写入,(在没选中对像时就写入,有选中对象的时候就用替换)

点评

6楼程序就是点在空白处写字, 点到文字替换 点到空白处可以用 xdrx_entity_transformedcopy 替换  详情 回复 发表于 2013-10-25 11:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-25 11:36:55 | 显示全部楼层
hui987 发表于 2013-10-25 09:38
q3_2006,的代码已经可以用,就是操作起来慢了一点,他是在输出的时候用空格来切换是用替换,还是用直接写入 ...

6楼程序就是点在空白处写字, 点到文字替换

点到空白处可以用 xdrx_entity_transformedcopy 替换
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

 楼主| 发表于 2013-10-25 12:31:01 | 显示全部楼层
st788796 发表于 2013-10-24 20:39
是这样吧

xdrx_pickset_getAtPoint 函数写法就是在那个自由矩形里拷贝的

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-25 16:13:45 | 显示全部楼层
Alisp 不带过滤的是 Nentselp 函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 21:32 , Processed in 0.212842 second(s), 53 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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