Обновите ссылку на таблицу данных в AutoCAD, используя VBA - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблема, у меня есть файл AutoCAD с кучей ссылок на данные, и я хотел бы обновить только ссылки на данные, относящиеся к конкретной таблице.Похожи на функциональность выбора таблицы со ссылками на данные, щелчка правой кнопкой мыши и выбора Обновить ссылки на таблицы.

У меня есть следующий код:

Private Sub Update_table_data_link(tblRef As AcadTable)

ThisDrawing.SendCommand "DATALINKUPDATE" & vbCr & "U" & vbCr & "K" & vbCr

End Sub

Работает, но обновляет все ссылки на данныена чертеже (что является проблемой), поэтому идеальное решение позволило бы мне получить ссылки, связанные с tblRef
, и изменить строку на:
ThisDrawing.SendCommand "DATALINKUPDATE" & vbCr & "U" & vbCr & "D" & vbCr & "datalink_name_from_tblRef" & vbCr

или напрямую отправитькоманда для обновления ссылок на tblRef

1 Ответ

0 голосов
/ 16 февраля 2019

После долгих размышлений и большой помощи, вот ответ:

Private Sub Update_table_data_link(tblRef As AcadTable)

    ThisDrawing.SendCommand "DATALINKUPDATE " & vbCr & "U" & vbCr & Ent2lspEnt(tblRef) & vbCr & vbCr

End Sub

Public Function Ent2lspEnt(entObj As AcadEntity) As String
    'Designed to work with SendCommand, which can't pass objects.
    'This gets an objects handle and converts it to a string
    'of lisp commands that returns an entity name when run in SendCommand.
    Dim entHandle As String

    entHandle = entObj.Handle
    Ent2lspEnt = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
End Function

Обратите внимание, что "Update_table_data_link" имеет таблицу в качестве входных данных

...