AutoCAD中用lisp完成隐藏同名块及取消隐藏块的功能

AutoCAD中用lisp完成隐藏同名块及取消隐藏块的功能,第1张

(defun C:YC ( / %k ss)

 (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)

)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8259733.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存