Attach part reference to a block using AcmPartRef

Attach part reference to a block using AcmPartRef

ron_m
Enthusiast Enthusiast
536 Views
0 Replies
Message 1 of 1

Attach part reference to a block using AcmPartRef

ron_m
Enthusiast
Enthusiast

I a tying to attach a part referece to an existing block using the AcmPartRef object. The following code almost works but I can't get it attached to the block.

 

Public Sub createPartRef()
    Dim oAcApp As AcadApplication
    Dim oAcUtil As AcadUtility
    Set oAcApp = GetObject(, "AutoCAD.Application")
    Set oAcUtil = oAcApp.ActiveDocument.Utility
   
    Dim pt As Variant
    Dim oPartref As McadPartReference
    Dim BlockName As String
    BlockName = "180807I"
    Dim oAcBlock As AcadBlock
    Set oAcBlock = ThisDrawing.Blocks.Item(BlockName)
    If IsObject(oAcBlock) Then
        pt = oAcBlock.Origin
        pt = oAcUtil.TranslateCoordinates(pt, acUCS, acWorld, False)
        Set oPartref = oAcBlock.AddCustomObject("AcmPartRef")
        oPartref.Origin = pt

 

' This code errors on AttachGeometry
        'Dim refGeomentry As Object
        'refgeometry = oacblock.
        'oPartref.AttachGeometry oAcBlock, oAcBlock.Origin
        
    End If
   
    Dim oSymbb As McadSymbolBBMgr
    Set oSymbb = ThisDrawing.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr")
    Dim oBommgr As McadBOMMgr
    Set oBommgr = oSymbb.BOMMgr
   
    Dim pdata(0 To 5, 0 To 1) As String
    pdata(0, 0) = "DESCR": pdata(0, 1) = "My Description"
    pdata(1, 0) = "STANDARD": pdata(1, 1) = "My Standard"
    pdata(2, 0) = "MATERIAL": pdata(2, 1) = "BEARING, D-LOK, 1.00, 2-HOLE, #128760"
    pdata(3, 0) = "NOTE": pdata(3, 1) = "My Note"
    pdata(4, 0) = "VENDOR": pdata(4, 1) = "My Vendor"
    pdata(5, 0) = "NAME": pdata(5, 1) = "Comp1"
   
    oBommgr.SetPartData oPartref, pdata

    ' Add to BOM
    oBommgr.CurrentBOM.AddItem oPartref.ObjectID, CStr(oBommgr.CurrentBOM.Items.Count + 1)
   
    ThisDrawing.Application.Update
   

' At this point I have a BOM record but no visable part reference.I get a 2nd BOM record if I run it again.
   
End Sub

 

Any help be it VBA , DotNet, C++ or Lisp would be very appricated.

0 Likes
537 Views
0 Replies
Replies (0)