求一autolisp程序,要求是选择一个文字,那么能够把这个相同的文字全部选择出来

快速选择功能也可以办到,指定的区域,选择文字,内容,输入内容,就可以把相同的文字全部选择了,这个时候我就可以移动或删除了。但是这个操作很重复,希望可以(先选择一个文字,然... 快速选择功能也可以办到,指定的区域,选择文字,内容,输入内容,就可以把相同的文字全部选择了,这个时候我就可以移动或删除了。但是这个操作很重复,希望可以(先选择一个文字,然后选择一个区域,然后把相同内容的文字就全部选择了。然后就可以选择复制或移动或删除), 展开
 我来答
EasyCAD
推荐于2018-05-07 · 超过13用户采纳过TA的回答
知道答主
回答量:15
采纳率:100%
帮助的人:30.3万
展开全部
(defun c:ste ( / #kw #k2 )
(if (null vlax-dump-object) (vl-load-com) )
(initget "T") (setq #kw (entsel "\n选择要快速选取的文字或[输入文字(T)]: <选择文字> "))
(cond
((= (type #kw) 'LIST)
(if (= (vla-get-objectname (setq #kw (vlax-ename->vla-object (car #kw)))) "AcDbText")
(setq #kw (vla-get-textstring #kw))
(progn
(setq #kw nil) (princ "\n错误的对象,请选择单行文字对象!")
)
)
)
((member #kw (list "t" "T"))
(if (= (setq #kw (getstring "\n请输入要选取的文字: ")) "")
(progn
(setq #kw nil) (princ "\n未输入文字,程序退出!")
)
)
)
)
(if #kw (princ (strcat "\n框选包含文字 < " #kw " >的对象")) )
(if (and #kw (setq #kw (ssget (list (cons 0 "TEXT") (cons 1 #kw)))))
(progn
(initget "V C") (setq #k2 (getkword "\n删除选中的文字或[移动(V)/复制(C)]: <删除> "))
(if (null #k2)
(command "_.Erase" #kw "")
(cond
((member #k2 (list "v" "V")) (command "_.Move" #kw "" pause) )
((member #k2 (list "c" "C")) (command "_.Copy" #kw "" pause) )
)
)
)
(princ "\n未定义文字或未选择对象!")
)
(princ)
)
试试上面的程序吧,命令 ste 使用,如果是想让程序自动选择特定的文字内容的话,可以这样修改
(if #kw (princ (strcat "\n框选包含文字 < " #kw " >的对象")) )

(if (and #kw (setq #kw (ssget (list (cons 0 "TEXT") (cons 1 #kw)))))
改为
(if (setq #kw (ssget "X" (list (cons 0 "TEXT") (cons 1 #kw)))))
迪凯特科技(北京)有限公司
2023-07-28 广告
RS232串行通讯的数据格式包括以下组成部分:1. 起始位:一位,用于表示数据的开始。2. 数据位:通常为8位,但也可以是7位或9位。3. 校验位:可以选择奇偶校验或无校验。4. 停止位:一位,用于表示数据的结束,也可以选择使用1.5个或2... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
ZQ永远GOGOGO
2020-04-05
知道答主
回答量:19
采纳率:0%
帮助的人:1.1万
展开全部
;先框选范围,再选择一个想筛选的文字,w为快捷键,可以自己更改
(defun c:w()
(setvar "cmdecho" 0)
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(setq en (entsel "请选择一个文字:"))
(setq en_data (entget (car en)))
(setq text1 (cdr (assoc 1 en_data)))
(setq n 0)
(setq SX (ssadd))
(setq SX (ssadd (car en) SX))
(repeat (sslength ss)
(setq ssn (ssname ss n))
(setq ssn_data (entget ssn))
(setq text2 (cdr (assoc 1 ssn_data)))
(if (= text1 text2) (setq SX (ssadd ssn SX)))
(setq n (1+ n))
)
(sssetfirst ss sx)
(prin1)
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式