
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(initget "I H E")
(setq %k (getkword (strcat "\n隔离[隔离对象(I)/隐藏对象(H)/结束对象隔离(E)/退出]:<退出>")))
(if (/= %k nil) (setq %k (strcase %k)) )
(if (or (= %k "I") (= %k "H"))
(progn
(princ "\n请选择要隔离的对象")
(setq ss (ssget))
(if (and (/= ss nil) (= %k "H")) (command "HideObjects" ss "") )
(if (and (/= ss nil) (= %k "I")) (command "IsolateObjects" ss "") )
)
)
(if (= %k "E") (command "_UnIsolateObjects") )
(prin1)
)
上面的隐藏物脊适合镇烂选择所有的对象隐藏御蚂漏。
做了隐藏和显示两个命令.我编写的简单,功能不太全.你看着用吧
复制下列代码,创建acad.lsp.放在在CAD安装目录第一层文件夹下,可自动加载啊:
在命令行输入该命令hidsel,然后选择型袭图元,结果没选的被改到隐藏层
(defun C:hidsel(/ all所有图元
xs非隐藏图元
yc隐藏图元
n nam dat)
(setvar "CMDECHO" 0)关闭命令回显
(command "_layer" "n" "临时隐藏图层" "")(command "_layer" "off" "临时隐藏图层" "")
(setvar "CMDECHO" 1)
(setq all (ssget "x"))选择所有
(setq xs (ssget))选择非隐藏图元
(setq n -1 yc all)运算隐藏图元
(repeat (sslength xs)
(setq n (+ n 1))
(setq nam (ssname xs n))返回第N个图元的名称
(setq yc (ssdel nam yc))
)
(setq N -1)隐藏
(repeat (sslength yc)
(setq N (+ n 1))
(setq nam (ssname yc n))返回第N个图元的名称
(setq dat (entget nam))DAT储存第N个图元数据
(entmod (subst (cons 8 "临时搜租和隐藏图层") (Assoc 8 dat) dat))将yc集合隐藏世盯
)
(setq all nil xs nil yc nil n nil nam nil dat nil)清除数据占用内存
(princ)
)
显示所有图元
(defun c:shoal(/ all n nam dat)
(setq all (ssget "x"))选择所有
(setq N -1)隐藏
(repeat (sslength all)
(setq N (+ n 1))
(setq nam (ssname all n))返回第N个图元的名称
(setq dat (entget nam))DAT储存第N个图元数据
(entmod (subst (cons 8 "0") (Assoc 8 dat) dat))将yc集合隐藏
)
(setvar "CMDECHO" 0)
(COMMAND "PURGE" "LA" "临时隐藏图层" "Y" "Y" "")
(setvar "CMDECHO" 1)
(setq all nil n nil nam nil dat nil)清除数据占用内存
(princ)
)
你好,请您试一试下面的程序:小程序,实现个小功能——比如cad上面有三行文字:
第一行为:小红年龄高启:18
第二行为:小明年龄:9
第三行为:小李年龄:5
(这三行文字宴银里年龄都是变的)
然后调用lisp程序,程序提示选择这三行文字,确定。
然后程序提示指定插入点。然后点插入点。
这时候在插入点出现两行文字:
第一行 小红比小明大:9
第二行 小红比小李大:戚祥如13
(defun c:nl ()
(setq sss (ssget)
nm0 (nm&nl 0)
nl0 (cadr nm0)
nm0 (car nm0)
nm1 (nm&nl 1)
nl1 (cadr nm1)
nm1 (car nm1)
nm2 (nm&nl 2)
nl2 (cadr nm2)
nm2 (car nm2)
nl20 (- nl2 nl0)
nl21 (- nl2 nl1)
)
(print (list nm0 nl0 nm1 nl1 nm2 nl2 nl20 nl21))
(command "text" pause "" "" (strcat nm2 "比" nm1 "大:" (rtos nl21 2 0))
"text" "" (strcat nm2 "比" nm0 "大:" (rtos nl20 2 0))
)
)
(defun nm&nl (i / nm nl)
(setq nm (ssname sss i)
nm (entget nm)
nm (cdr (assoc 1 nm))
nl (substr nm 11)
nm (substr nm 1 4)
nl (read nl)
)
(list nm nl)
)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)