树櫴希德 发表于 2015-7-21 16:22:09

制作ATTDEF属性块

(setq blc (getint "\n请输入比例尺1:"))
(setvar 'userr1 blc);设置比例尺
;(setq zg (* 0.002 blc));字高
(setq scale (* 0.001 blc));缩放比例

;16、将选择集做成属性块(选择集中单行文本作为属性)
(defun emkattblk (inspt scale height height2 height3 height4 / ent i pt pzx0)
(entmake (list '(0 . "block") (cons 2 "gc1200") '(70 . 2) (cons 10 inspt)))
   (entmake (list '(0 . "circle") '(8 . "0")(cons 10 inspt) '(40 .1)))
(setq ss (ssadd (entlast)))
(repeat (setq i (sslength ss))
    (setq ent (entget (ssname ss (setq i (1- i)))))
    (if (= (cdr (assoc 0 ent)) "circle")
      ;(entmake (list '(0 . "ATTDEF") (assoc 10 ent) (assoc 40 ent) (assoc 1 ent) (cons 3 (cdr (assoc 1 ent))) (cons 2 (cdr (assoc 1 ent))) '(70 . 0)))
      ;(entmake (cdr ent))
      (progn
;;;插入属性
(entmake (list
             '(0 . "ATTdef")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
            (cons 10 (setq pt (polar inspt 0 (* 1.2 scale))))
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height)
            (cons 7 "HZ")
            (cons 72 2)
            (cons 11 pt)
            '(100 . "AcDbAttributeDefinition")
       (cons 3 "height")
            (cons 2 height)
            (cons 700)
            (cons 74 1)
         )
   )
;;;;;;;;
(entmake (list
             '(0 . "ATTdef")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
      (cons 62 2)
            (cons 10 pt)
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height2)
            (cons 7 "HZ")
            (cons 72 0)
            (cons 11 pt)
            '(100 . "AcDbAttributeDefinition")
            (cons 3 "height2")
       (cons 2 height2)
            (cons 700)
            (cons 74 3)
         ))
;;;;;;;;;;;;
(entmake (list
             '(0 . "ATTdef")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
       (cons 62 3)
            (cons 10 pt)
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height3)
            (cons 7 "HZ")
            (cons 72 0)
      (cons 73 2)
            (cons 11 pt)
            '(100 . "AcDbAttributeDefinition")
            (cons 3 "height3")
       (cons 2 height3)
            (cons 700)
            (cons 74 1)
         ))
;;;;;;
(entmake (list
             '(0 . "ATTdef")
             '(100 . "AcDbEntity")
             '(100 . "AcDbText")
       (cons 62 3)
            (cons 10 (setq pzx0 (polar pt (* 1.5 pi) (* 2 scale))))
            (cons 40 (* 2.0 scale))
            (cons 50 0)
            (cons 41 0.8)
            (cons 51 0)
            (cons 1 height4)
            (cons 7 "HZ")
            (cons 72 0)
      (cons 73 2)
            (cons 11 pzx0)
            '(100 . "AcDbAttributeDefinition")
       (cons 3 "height4")
            (cons 2 height4)
            (cons 700)
            (cons 74 3)
         ))
   ;;;结束标志
)
    )
)
(entmake '((0 . "ENDBLK")))

(entmake (list '(0 . "INSERT") (cons 2 "gc1200") (cons 10 inspt) (cons 41 scale)(cons 42 scale)(cons 43 scale)))
(command "_.erase" ss "")

)

(setq inspt (getpoint ""))
(setq height "12345")
(setq height2 "hhhh")
(setq height3 "ggggfd")
(setq height4 "ghggg")
(emkattblk inspt scale height height2 height3 height4 )

1993063 发表于 2015-7-21 23:48:18

上图

lingfeng82 发表于 2015-7-28 08:34:33

感谢楼主无私奉献,受益匪浅!

gzbccy 发表于 2015-8-9 11:58:25

上个图看看,如何使用和效果
页: [1]
查看完整版本: 制作ATTDEF属性块