Всем доброго времени суток. Работаю с SolidWorks
Задача такая: Нужно поменять текст в Annotation.
В VBA делаю так:
Dim swApp As Object
Dim Part As Object
Dim SelMgr As SelectionMgr
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim Feature As Object
Dim n As Note
Sub main()
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
swApp.ActiveDoc.ActiveView.FrameState = 1
'boolstatus = Part.Extension.SelectByID2(\"Лист1\", \"SHEET\", 1.171892412521, 0.05186800888059, 0, False, 0, Nothing, 0)
'boolstatus = Part.Extension.SelectByID2("Лист1", "SHEET", 1.171892412521, 0.05186800888059, 0, False, 0, Nothing, 0)
Part.EditTemplate
boolstatus = Part.Extension.SelectByID2("Детальный элемент1119@Формат листа1", "NOTE", 0, 0, 0, False, 0, Nothing, 0)
'MsgBox CStr(SelMgr.GetSelectedObjectCount)
Set n = SelMgr.GetSelectedObject6(1, 0)
If Not n Is Nothing Then
'MsgBox n.GetName
If n.SetTextAtIndex(0, "1232112") Then
'MsgBox n.GetName
End If
End If
Part.ClearSelection2 True
End Sub
Все работает прекрасно значение элемента 1119 меняется
Нужно это сделать в Delphi
Пишу так:
var longstatus:Longint; boolstatus :boolean;
SelMgr:olevariant; bres:HRESULT;
begin
SelMgr:= SolidDoc.SelectionManager;
SolidDoc.EditTemplate;
boolstatus := SolidDoc.Extension.SelectByID2('Детальный элемент1119@Формат листа1',
'NOTE', 0, 0, 0, False, 0, null, 0,bres);
Note:=SelMgr.GetSelectedObject6(1, 0);
note.SetTextAtIndex(0, 'Ага');
SolidDoc.ClearSelection2(True);
end;
Компилится но при выполнении стопорится на SelectByID2
с ошибкой "Несовпадение типов"
Во всем виноват параметр NULL
Туда судя по хелпу нужно вписать pointer, но если я ставлю nil компилятор ругатся "Type not allowed in Variant Dispatch call"
Что нужно подставить чтоб заработало?