_rocky 发表于 2012-5-21 17:42:30

AUTOCAD中如何用AOTOLISP更改块属性的值、文字大小、旋转方向?

AUTOCAD中如何用AOTOLISP更改块属性的值、文字大小、旋转方向?比如块属性标记为A,请给出相应的程序代码.谢谢!

357785513 发表于 2012-5-21 19:30:49

做好了,就不要改它了.要不做一个块替换它

qq229918602 发表于 2012-5-21 19:54:46

本帖最后由 qq229918602 于 2012-5-21 19:56 编辑

使用群码更新。
[*](DEFUN CHATTRIB (OLDATT NEWATT)
[*](IF (AND (PRINC "\nSelect Block with attribute 选择带属性图块 :")
[*]          (SETQ SS (SSGET '((0 . "INSERT") (66 . 1))))) (PROGN
[*](SETQ I -1)
[*](REPEAT (SSLENGTH SS)
[*]   (SETQ ENT (ENTGET (SSNAME SS (SETQ I (1+ I))))
[*]         ENT1 ENT)
[*]   (WHILE (= (CDR (ASSOC 0 (SETQ ENT1 (ENTGET (ENTNEXT (CDR (ASSOC -1 ENT1))))))) "ATTRIB")
[*]    (IF (= (CDR (ASSOC 1 ENT1)) OLDATT) (PROGN
[*](SETQ ENT1 (SUBST (CONS 1 NEWATT) (ASSOC 1 ENT1) ENT1))
[*](ENTMOD ENT1)
[*](ENTMOD ENT)
[*]))
[*]   )
[*])
[*]))
[*](PRINC)
[*])
[*](DEFUN C:A ()
[*](IF (AND (SETQ OATT (GETSTRING "\nOld Attrib 原属性 :"))
[*]       (SETQ NATT (GETSTRING "\nNew Attrib 新属性 :")))
[*](CHATTRIB OATT NATT)
[*])
[*](PRINC)
[*])

hvac_wh 发表于 2012-5-22 16:44:03

可以,我这里有自己编辑的原程序,你可以参考。需要,可与我联系

_rocky 发表于 2012-5-22 17:28:57

hvac_wh 发表于 2012-5-22 16:44 static/image/common/back.gif
可以,我这里有自己编辑的原程序,你可以参考。需要,可与我联系

源程序能发我不?谢谢

hvac_wh 发表于 2012-5-23 05:32:08

(defun blockatte (obname / en flag dat dat1 blk1 blk2 blk3 blk4)
    (setq blkl nil
          blk2 nil
          blk3 nil
          blk4 nil
    )
    (if        (= (type obname) 'ENAME)
      (progn
        (setq en   (entget obname)
              dat1 en
        )
        (cond ((and (= (cdr (assoc 66 en)) 1)
                  (= (cdr (assoc 0 en)) "INSERT")
             )
             (setq flag T)
              )
              (T (setq flag nil))
        )                                ;cond

        (while flag
          (setq dat (entnext (cdr (assoc -1 en))))
          (if (= dat nil)
          (setq flag nil)
          (progn
              (setq en (entget dat))
              (cond
                ((= (cdr (assoc 0 en)) "ATTRIB")
               (setq blkl (cons (cdr (assoc -1 en)) blkl)
                     blk2 (cons (cdr (assoc 2 en)) blk2)
                     blk3 (cons (cdr (assoc 1 en)) blk3)
               )
                                        ;setq
                )
              )                                ;cond
              (if (= (cdr (assoc 0 en)) "SEQEND")
                (setq flag nil)
                (setq flag T)
              )                                ;if
          )                                ;progn
          )                                ;if
        )                                ;end while

      )                                        ;progn
    )                                        ;if
    (if        (= blkl nil)
      nil
      (setq blkl (list (cdr (assoc 10 dat1))
                     (reverse blkl)
                     (reverse blk2)
                     (reverse blk3)
               )
      )
    )                                        ;if
)                       

hvac_wh 发表于 2012-5-23 05:36:12

hvac_wh 发表于 2012-5-23 05:32 static/image/common/back.gif
(defun blockatte (obname / en flag dat dat1 blk1 blk2 blk3 blk4)
    (setq blkl nil
          blk2 nil


输入参数 (blockatte 实体名)输出((块插入点)(块属性实体列表)(块属性标签列表)(块属性显示文字表)),再对属行进行修改
页: [1]
查看完整版本: AUTOCAD中如何用AOTOLISP更改块属性的值、文字大小、旋转方向?