ADN Club > Inventor API
Засыпает VBA-код при работе
mikazakov:
--- Цитата: Vyacheslav от 20-08-2021, 13:18:13 ---Вот код фукции которую он в это время выполняет:
--- Конец цитаты ---
Ну такой не причесанный код я не могу у себя потестить.
Попробуйте использовать функцию для отладки.
Debug.Print
Вставьте эту функцию в нескольких местах по телу программы и посмотрите в соответствующем окне , что будет выводится
Vyacheslav:
Доброго времени. Сегодня определил место на котором останавливается... Но решения так и не удалось найти.
Останавливается на этой функции:
--- Код - Visual Basic [Выбрать] ---Public Sub CenterViewHS(s As Sheet, name As String, startX As Double, endX As Double) Log "CenterViewHS 1" Dim oView As DrawingView Set oView = GetDrawingViewS(s, name) Log "CenterViewHS 2" Dim vx As Double Dim vy As Double Dim vxc As Double Dim px As Double Dim py As Double Log "CenterViewHS 3" vxc = oView.Center.X Log "CenterViewHS 4" vx = oView.Position.X Log "CenterViewHS 5" vy = oView.Position.Y Log "CenterViewHS 6" px = startX + (endX - startX) / 2 - (vxc - vx) py = vy Log "CenterViewHS 7" Dim p As Point2d Set p = ThisApplication.TransientGeometry.CreatePoint2d(px, py) Log "CenterViewHS 8" oView.Position = p Log "CenterViewHS 9"End Sub
Останавливается на команде: vxc = oView.Center.X
Для дальнейшего запуска достаточно малейшего движения мышки даже не в окне Инвентора или любое всплывающее окно тоже приводит все в движение.
mikazakov:
Ну вот я потестил макрос, вызывал этот макрос из самого инвентора
Все работает нормально. На другом компьютере пробовали свой макрос запускать?
--- Код - Visual Basic [Выбрать] ---Public Sub CenterViewHS()' Log "CenterViewHS 1" Dim dd As DrawingDocument: Set dd = ThisApplication.ActiveDocument Dim oView As DrawingView Set oView = dd.ActiveSheet.DrawingViews(1) ' Log "CenterViewHS 2" Dim vx As Double Dim vy As Double Dim vxc As Double Dim px As Double Dim py As Double ' Log "CenterViewHS 3" vxc = oView.Center.X ' Log "CenterViewHS 4" vx = oView.Position.X ' Log "CenterViewHS 5" vy = oView.Position.Y ' Log "CenterViewHS 6" ' px = startX + (endX - startX) / 2 - (vxc - vx)' py = vy'' Log "CenterViewHS 7" Dim p As Point2d Set p = ThisApplication.TransientGeometry.CreatePoint2d(px, py) ' Log "CenterViewHS 8" oView.Position = p Debug.Print "CenterViewHS 9"End Sub
Vyacheslav:
Да, сейчас попробовали. Останавливается совсем в других местах...
Я думаю что просто Макрос уже на пределе. Код очень большой...
Нужно делать пытаться надстройку...
mikazakov:
--- Цитата: Vyacheslav от 25-08-2021, 16:54:31 ---Останавливается совсем в других местах...
Я думаю что просто Макрос уже на пределе. Код очень большой...
--- Конец цитаты ---
Ну странная штука конечно, хотя VBA имеет склонность тормозить, потому как VBA язык-интерпретатор. А сколько строк в "большом коде"?
Навигация
Перейти к полной версии