lisp把选集转成表_晓东CAD家园-论坛-LISP/VLISP程序库-[LISP程序]:把text转为属性图块 - Powered by Discuz!...

这是一个LISP程序,由LUCAS编写,用于将选择集中的TEXT对象转换为带有属性的图块。程序首先获取TEXT实体的210和10字段,然后创建ATTDEF,并在完成后将选定的TEXT对象替换为块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

;;把text转为属性图块

;;By LUCAS

(defun C:C_DEF (/ HOLDECHO HOLDBLIP HOLDREQ SS SSS N A AA A1 A73 HH

LST_210        LST_10

)

(defun DXF (A1 A2 /)

(setq ENT (cdr (assoc A1 A2)))

)

(defun GETATT        (E ATTNAME / N ATT E1 EN EN1 RSLT)

(setq EN (entget E)

E1 E

)

(if        (and (= (DXF 0 EN) "INSERT")

(= (DXF 66 EN) 1)

)

(progn

(setq E1  (entnext E1)

ATT (strcase ATTNAME)

)

(while (and E1

(setq EN1 (entget E1))

(= (DXF 0 EN1) "ATTRIB")

)

(setq RSLT (append RSLT (list (DXF -1 EN1))))

(setq E1 (entnext E1))

)

)

)

(setq N 0)

(repeat (length RSLT)

(entmod (subst (nth N LST_210)

(assoc 210 (entget (nth N RSLT)))

(entget (nth N RSLT))

)

)

(entmod (subst (nth N LST_10)

(assoc 10 (entget (nth N RSLT)))

(entget (nth N RSLT))

)

)

(setq N (1+ N))

)

(entupd (entlast))

)

(command "_.undo" "_group")

(setq HOLDECHO (getvar "cmdecho"))

(setq HOLDBLIP (getvar "blipmode"))

(setq HOLDREQ (getvar "attreq"))

(setvar "cmdecho" 0)

(setvar "blipmode" 0)

(while (or (= SSS NIL) (= SS NIL))

(setq SSS (ssget))

(setq SS (ssget "P" '((0 . "TEXT"))))

)

(command "_.UCS" "")

(setq N 0)

(setq HH (ssadd))

(repeat (sslength SS)

(setq A (ssname SS N))

(setq LST_210 (append LST_210 (list (assoc 210 (entget A)))))

(setq LST_10 (append LST_10 (list (assoc 10 (entget A)))))

(setq AA (member '(100 . "AcDbEntity") (entget A)))

(setq A73 (cdr (assoc 73 AA)))

(setq A1 (cdr (assoc 1 AA)))

(entmake (append '((0 . "ATTDEF"))

(reverse (cddr (reverse AA)))

'((100 . "AcDbAttributeDefinition")

(70 . 8)

;;(73 . 0)

)

(list (cons 74 A73)

(cons 3 A1)

(cons 2 A1)

)

)

)

(ssadd (entlast) HH)

(setq N (1+ N))

)

(command "_.erase" SS "")

(setq A (rtos (* (getvar "CDATE") 1E8)))

(command "_.BLOCK" A "0,0" HH SSS "")

(setvar "attreq" 0)

(command "_.INSERT" A "0,0" "" "" "")

(setvar "attreq" HOLDREQ)

(GETATT (entlast) A)                        ;处理text对象不在X-Y平面

(command "_.UCS" "P")

(setvar "blipmode" HOLDBLIP)

(setvar "cmdecho" HOLDECHO)

(command "_.undo" "_end")

(princ)

)

(prompt "\nType C_DEF")

(princ)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值