Refri 发表于 2017-4-13 08:03:59

如何替换表中的属性?

如何替换表中的属性
它包含具有属性的块
需要通过表格第一行中的VBA将属性“ATR”值“DD25”更改为“HH38”
我试图获取一个块并更改属性,但它会更改每个人的属性。
Set block = ThisDrawing.Blocks
For Each item In block
str = item.EntityName
'Get t attributes
If item.EntityName = "AcDbAttributeDefinition" Then
if item.TextString ="DD25" thenitem.TextString="HH38"
End If
End If
Next item
**** Hidden Message *****

devitg 发表于 2017-4-18 17:26:40

嗨,我对VBA几乎一无所知,但是您必须在BLOCKREFERENCE上更改ia,而不是在BLOCKCOLLECTION 。我做Lisp。
如果你寻找 块集合 ,当然一切都会改变。
希望它有帮助

Refri 发表于 2017-4-19 02:28:00

问题是这些块在块引用中不存在。
如果有 lisp 的例子 - 给

Roy_043 发表于 2017-4-19 09:01:59

(defun c:Test ( / attDefId blk blkRecId enm tbl)
(if
    (and
      (setq enm (car (entsel)))
      (setq tbl (vlax-ename->vla-object enm))
      (= "AcDbTable" (vla-get-objectname tbl))
      (/= 0 (setq blkRecId (vla-getblocktablerecordid tbl 0 0)))
    )
    (progn
      (setq blk (vla-objectidtoobject (vla-get-activedocument (vlax-get-acad-object)) blkRecId))
      (vlax-for obj blk
      (if
          (and
            (not attDefId)
            (= "AcDbAttributeDefinition" (vla-get-objectname obj))
          )
          (setq attDefId (vla-get-objectid obj))
      )
      )
      (if attDefId
      (vla-setblockattributevalue tbl 0 0 attDefId "New String")
      )
    )
)
(princ)
)

Refri 发表于 2017-4-20 00:04:13

roy_043
太棒了!
谢谢您!正是需要的。问题解决了。
页: [1]
查看完整版本: 如何替换表中的属性?