求AutoCAD LISP程序:通过内部TEXT选择对应POLYLINE
通过TEXT选中对应POLYLINE并分配图层的AutoLISP实现
完全可以用AutoLISP实现这个需求,下面直接给你可用的程序和操作步骤,不需要懂编程就能用:
程序代码
将以下代码复制到记事本,保存为SelTextToRect.lsp(注意后缀是.lsp,不要存成.txt):
(defun c:SELRECT (/ txt_ent txt_pt txt_str pl_ent pl_lst) ;; 选择目标TEXT对象 (setq txt_ent (car (entsel "\n请选择内部的TEXT对象: "))) (if txt_ent (progn ;; 获取TEXT的插入点坐标 (setq txt_pt (cdr (assoc 10 (entget txt_ent)))) ;; 获取TEXT的内容(即ID名称) (setq txt_str (cdr (assoc 1 (entget txt_ent)))) ;; 查找包含该点的闭合POLYLINE (setq pl_lst (ssget "_C" txt_pt txt_pt '((0 . "POLYLINE") (70 . 1)))) (if pl_lst (progn (setq pl_ent (ssname pl_lst 0)) ;; 检查目标图层是否存在,不存在则创建 (if (not (tblsearch "LAYER" txt_str)) (command "-LAYER" "M" txt_str "") ) ;; 将POLYLINE移动到目标图层 (command "-CHPROP" pl_ent "" "LA" txt_str "") ;; 选中该POLYLINE方便后续操作 (sssetfirst nil pl_lst) (prompt (strcat "\n已将对应POLYLINE分配到图层: " txt_str)) ) (prompt "\n未找到包含该TEXT的闭合POLYLINE!") ) ) (prompt "\n未选择任何TEXT对象!") ) (princ) )
使用步骤
- 打开你的AutoCAD图纸文件;
- 输入命令
APPLOAD,弹出加载对话框,找到你保存的SelTextToRect.lsp文件,点击「加载」后关闭对话框; - 输入命令
SELRECT(也可以输缩写SEL,AutoCAD会自动匹配); - 按照提示点击需要处理的TEXT对象,程序会自动完成:找到对应的闭合POLYLINE、创建/切换到以TEXT内容命名的图层、将POLYLINE移至该图层,同时选中这个POLYLINE。
注意事项
- 确保你的矩形是闭合的POLYLINE(用AutoCAD自带矩形命令绘制的图形默认就是闭合POLYLINE);
- TEXT必须完全在POLYLINE内部,且不要和其他闭合POLYLINE重叠覆盖,否则可能选中错误图形;
- TEXT的内容要符合AutoCAD图层命名规则,不能包含
< > / \ : ; " ? * | ,这类特殊字符。
内容的提问来源于stack exchange,提问作者Joseph Romero
相关产品推荐
相关产品推荐

