嗨,我希望有人能给我解释一下。我(在这个论坛的很多帮助下)编写了一些代码,允许选择具有属性的块,保存某些属性值,代码然后删除块,然后允许用户在图形上选择一个点以插入新块。然后将旧块中的值转移到新块。然后,用户转到下一个块并再次执行该过程。我想做的是更改代码,以便在运行代码时,使autocad选择具有特定名称的每个块,并将每个块的属性保存在阵列中,然后将新块插入到与旧块相同的插入点。
我认为我已经实现了很多这些功能。我需要添加的唯一一件事是,块选择具有特定名称的所有块,然后设置一个数组来执行I=cnt(cnt是所选块的顶部数量),然后循环遍历我现有的代码,唯一的更改是插入点从允许用户选择更改为获取旧的块插入指向并在同一点中插入名称块。
通过一次选择一个块来工作的代码是
- Sub BRPT2_InsertingBlockWithNewValues()
- ' Define the block
- 'Dim MyAttTextStr As String
- Dim blockObj As AcadBlock
- Dim insertionPnt(0 To 2) As Double
- insertionPnt(0) = 0
- insertionPnt(1) = 0
- insertionPnt(2) = 0
- 'Set blockObj = ThisDrawing.Blocks.Add _
- '(insertionPnt, "LEVEL4_ATTBLOCK")
- '(insertionPnt, "APA013")
- Dim MyInsertPt As Variant
- MyInsertPt = ThisDrawing.Utility.GetPoint(, vbCr & "Pick insertion point: ")
- ' Insert the block
- Dim blockrefobj As AcadBlockReference
-
- Myblockrefobj = "LEVEL4_ATTBLOCK"
- 'Myblockrefobj = "APA013"
-
- Set blockrefobj = ThisDrawing.ModelSpace.InsertBlock _
- (MyInsertPt, Myblockrefobj, 1#, 1#, 1#, 0)
- 'ZoomAll
- ' MsgBox "Block Has Been Inserted " & blockrefobj.ObjectName
-
-
- BRPT3_InsertStordValueInToNewBlock
-
- End Sub
- Public MyAttTagStr_Old_1 As String
- Public MyAttTagStr_Old_2 As String
- Public MyAttTagStr_Old_3 As String
- Public MyAttTagStr_NEW_1 As String
- Public MyAttTagStr_NEW_2 As String
- Public MyAttTagStr_NEW_3 As String
- Public MyAttTextStr1 As String
- Public MyAttTextStr2 As String
- Public MyAttTextStr3 As String
- Public MyOldBlockObjSS As AcadSelectionSet
|