修改属性块中的值
本帖最后由 SeanX 于 2019-7-26 15:02 编辑想请教各位大佬,如何把属性块的值能通过一个按键把他改成自己想要的值,如图。
怎么先让属性值进行判断后再选择想要的值进行改变? 小白求学。
(DEFUN C:ZA ()
(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")
(SETQ SXZ (CDR (ASSOC 1 ENT1))
(SETQ GGZ (PANDUAN SXZ))
(SETQ ENT1 (SUBST (CONS 1 GGZ) (ASSOC 1 ENT1) ENT1))
(ENTMOD ENT1)
(ENTMOD ENT)
))
)
)
))
(PRINC)
)
(DEFUN PANDUAN (SXZ)
(IF (= SXZ "SG-2/T") (SETQ NAT "SG-1/T"))
(IF (= SXZ "SG-3/T") (SETQ NAT "SG-1/T"))
(IF (= SXZ "SG-4/T") (SETQ NAT "SG-1/T"))
(IF (= SXZ "SG-5/T") (SETQ NAT "SG-1/T"))
(IF (= SXZ "SG-6/T") (SETQ NAT "SG-1/T"))
(IF (= SXZ "SG-7/T") (SETQ NAT "SG-1/T"))
)
本帖最后由 satan421 于 2019-7-26 23:39 编辑
是不是你想要的
(DEFUN C:ZA ( / ENT FLAG I SS SXZ)
(IF (AND (PRINC "\NSELECT BLOCK WITH ATTRIBUTE 选择带属性图块 :")
(SETQ SS (SSGET '((0 . "INSERT") (66 . 1))))
)
(PROGN
(SETQ I -1)
(REPEAT (SSLENGTH SS)
(SETQ ENT (SSNAME SS (SETQ I (1+ I)))
FLAG T
)
(WHILE (AND FLAG (SETQ ENT (ENTNEXT ENT)))
(SETQ DATA (ENTGET ENT))
(COND
((NOT (= (CDR (ASSOC '0 DATA)) "ATTRIB")) (SETQ FLAG NIL))
((= "SEQEND" (CDR (ASSOC '0 DATA))) (SETQ FLAG NIL))
(T
(SETQ SXZ (CDR(ASSOC '1 DATA)))
(IF (MEMBER SXZ '("SG-2/T" "SG-3/T" "SG-4/T" "SG-5/T" "SG-6/T" "SG-7/T"))
(PROGN
(SETQ DATA (SUBST (CONS 1 "SG-1/T") (ASSOC '1 DATA) DATA))
(ENTMOD DATA)
(ENTUPD (SSNAME SS I))
)
)
)
)
)
)
)
)
(PRINC)
)
;替换图块属性 ZZXXQQ 2007.10.28
(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:Acz ()
(CHATTRIB "ABC" "DFG")
(PRINC)
)
论坛已经有了 本帖最后由 satan421 于 2019-7-26 11:42 编辑
;;功能:属性块中属性文字的修改
;;作者 zml84
;;参数:
;; EN -----包含属性的块的图元名称
;; AttName -----属性名称
;; int -----修改的组码编号
;; Value -----修改为的值
;;用法示例:
;;(ZL-INSERT-SETATT entname "TEST1" 1 "WG-4/TL"),即修改图元名为entname的TEST1属性值为"WG-4/TL"
;;int为2时可以修改属性名(即标记)的值
(DEFUN ZL-INSERT-SETATT (EN ATTNAME INT VALUE / RETURN E FLAG ENT)
(SETQ E EN RETURN NIL FLAG T)
(WHILE (AND FLAG (SETQ E (ENTNEXT E)))
(SETQ ENT (ENTGET E))
(COND
((NOT (= (CDR (ASSOC '0 ENT)) "ATTRIB")) (SETQ FLAG NIL))
((= "SEQEND" (CDR (ASSOC '0 ENT))) (SETQ FLAG NIL))
((= (CDR (ASSOC '2 ENT)) ATTNAME)
(IF (ASSOC INT ENT)
(SETQ ENT (SUBST (CONS INT VALUE) (ASSOC INT ENT) ENT))
(SETQ ENT (CONS (CONS INT VALUE) ENT))
)
(ENTMOD ENT)
(ENTUPD EN)
(SETQ RETURN T)
)
) ;_结束COND
)
;;返回RETURN
)
;;(ZL-INSERT-SETATT (car(entsel)) "TEST1" 2 "ATT1")
;;(ZL-INSERT-SETATT (car(entsel)) "TEST2" 1 "WG-4/TL")
hn10183051 发表于 2019-7-26 11:03
;替换图块属性 ZZXXQQ 2007.10.28
(DEFUN CHATTRIB (OLDATT NEWATT)
(IF (AND (PRINC "\nSelect Block...
谢谢 但我还需要进行判断后再进行改变值 satan421 发表于 2019-7-26 11:34
;;功能:属性块中属性文字的修改
;;作者 zml84
;;参数:
谢谢 但我还需要进行判断后再进行改变值 satan421 发表于 2019-7-26 11:34
;;功能:属性块中属性文字的修改
;;作者 zml84
;;参数:
谢谢老师,学习到了 本帖最后由 song宋_74729 于 2022-9-1 22:57 编辑
satan421 发表于 2019-7-26 10:12
是不是你想要的
(DEFUN C:ZA ( / ENT FLAG I SS SXZ)
(IF (AND (PRINC "\NSELECT BLOCK WITH ATTRIBUTE ...
如果是删除属性块中属性文字
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=172362&fromuid=7313835
(出处: 明经CAD社区)
satan421 发表于 2019-7-26 11:34
;;功能:属性块中属性文字的修改
;;作者 zml84
;;参数:
太棒了,太棒了。666
页:
[1]