找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 635|回复: 7

[编程申请]:请将“新文字替换旧文字”之LSP程序改为字符完全匹配方可替换

[复制链接]
发表于 2004-8-9 11:33:32 | 显示全部楼层 |阅读模式

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

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

×
请将“新文字替换旧文字”之LSP程序改为字符完全匹配方可替换。
如“施工图”可替换为“初步设计”,而“施工图123abc”不可替换为“初步设计123abc”    谢谢啦!


(defun C:cht2(/ p l n e os as ns st s nsl osl sl si chf chm olderr);'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
(prompt "新文字替换旧文字--\n")

(setq olderr *error* ; Initialize variables
*error* aaa)
(setq chm 0)
(setq p (ssget)) ; Select objects
(if p (progn ; If any objects selected
(while (= 0 (setq osl (strlen (setq os "施工图" ))))
(princ "Null input invalid")
)
(setq nsl (strlen (setq ns "初步设计" )))
(setq l 0 n (sslength p))
(while (< l n) ; For each selected object...
(if (= "TEXT" ; Look for TEXT entity type (group 0)
(cdr (assoc 0 (setq e (entget (ssname p l))))))
(progn
(setq chf nil si 1)
(setq s (cdr (setq as (assoc 1 e))))
(while (= osl (setq sl (strlen
(setq st (substr s si osl)))))
(if (= st os)
(progn
(setq s (strcat (substr s 1 (1- si)) ns
(substr s (+ si osl))))
(setq chf t) ; Found old string
(setq si (+ si nsl))
)
(setq si (1+ si))
)
)
(if chf (progn ; Substitute new string for old
(setq e (subst (cons 1 s) as e))
(entmod e) ; Modify the TEXT entity
(setq chm (1+ chm))
))
)
)
(setq l (1+ l))
)
))
(princ "Changed ") ; Print total lines changed
(princ chm)
(princ " text lines.")
(terpri)
(setq *error* olderr) ; Restore old *error* handler
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-2-22 22:02:15 | 显示全部楼层
怎么没有高手不帮忙呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-22 22:31:05 | 显示全部楼层
[php]
;;;加载通用函数
;;;下载:http://www.xdcad.net/forum/showthread.php?s=&threadid=325268
(load "xyp_lib")
;;;
(defun c:test ()
  (setq        txt1 (ustr 1 "\n\t旧字符串" txt1 nil)
        txt2 (ustr 1 "\n\t新字符串" txt2 nil)
  )
  (setq        ss (ssget "X" (list (cons 0 "TEXT") (cons 1 txt1)))
        n  -1
  )
  (while (setq s1 (ssname ss (setq n (1+ n))))
    (sub_upd s1 1 txt2)
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-26 12:14:06 | 显示全部楼层
强烈要求将 “施工图”   “初步设计”  特征字符写入程序中,谢谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-26 12:54:38 | 显示全部楼层
改为支持键盘输入或屏幕拾取:
[php]
;;;加载通用函数
;;;下载:http://www.xdcad.net/forum/showthread.php?s=&threadid=325268
(load "xyp_lib")
;;;新文字替换旧文字(字符完全匹配方可替换)
(defun c:test075 ()
  (cmdla0)
  (setq tx1 (ukword 1 "1 2" "\n选择方式:1-键盘输入/2-屏幕拾取" tx1))
  (cond
    ((= tx1 "1")
     (mode1))
     ((= tx1 "2")
     (mode2))
    )
  (setq        txt2 (ustr 1 "\n\t新字符串" txt2 nil)
        ss   (ssget "X" (list (cons 0 "TEXT") (cons 1 txt1)))
        n    -1
  )
  (while (setq s1 (ssname ss (setq n (1+ n))))
    (sub_upd s1 1 txt2)
  )
  (cmdla1)
)
;;键盘输入
(defun mode1 ()
  (setq txt1 (ustr 1 "\n\t旧字符串" txt1 nil))
)
;;屏幕拾取
(defun mode2 (/ mode)
  (while (/= mode "TEXT")
    (setq s1   (entsel)
          mode (dxf 0 (entget (car s1)))
          txt1 (dxf 1 (entget (car s1)))
    )
  )
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2005-2-26 20:54:58 | 显示全部楼层
最初由 lengliqun 发布
[B]强烈要求将 “施工图”   “初步设计”  特征字符写入程序中,谢谢。 [/B]


没有看你的程序。如果只要替换“施工图”为“初步设计”,不必太麻烦,只要选择实体时使用“(ssget '((1 . "施工图")))”进行选择就可以了,然后该知道怎样替换了吧。
其实只要用熟Acad,直接使用“选择过滤器”或“快速选择”选择值为“施工图”的文本,然后使用“Find”命令进行替换就可以了,对这种特定的情况大可不必写程序。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-28 12:38:29 | 显示全部楼层
对,写程序应该有通用性,如果每个特殊情况也写的话,太麻烦不说,有写程序、调试的时间,改都改好了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 02:52 , Processed in 0.182837 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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