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

如何替换表中的属性?

如何替换表中的属性
有一张桌子
它包含一个具有属性的块
有必要通过表格第一行的VBA更改属性;ATR“;“价值”;DD25“;至;HH38&quot
I'我试图获得一个块并更改属性,但它会为每个人更改它
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,而不是BLOCKCOLLECTION,您必须更改ia。我会Lisp
如果你寻找BLOCKCOLLECTION,当然一切都会改变。希望它能有所帮助;

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

问题是这些块在BLOCKREFERENCE中不存在
如果有一个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

罗伊043太棒了
谢谢你!这正是我们所需要的。问题解决了。
页: [1]
查看完整版本: 如何替换表中的属性?