VBA Autocad. Run-time error 451
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Autocad. Run-time error 451

VBA Autocad. Run-time error 451

Ответ
Поиск в этой теме
Непрочитано 04.02.2013, 14:58 #1
VBA Autocad. Run-time error 451
AnteC
 
Регистрация: 01.11.2010
Сообщений: 12

Есть процедура
Private Sub Cross3DPoint(Cheked3DPline As Acad3DPolyline)
В которая почти аналогична
Private Sub CrossPoint(ChekedPline As AcadLWPolyline)

отличия заключаются в получении координат -
X21 = ChekedPline.Coordinates(ii * 2) у AcadLWPolyline и
X21 = Cheked3DPline.Coordinates(ii * 3) у Acad3DPolyline

Те встречаются варианты с обычными полилиниями и с 3D полилиниями. Для них нужно вычислить точки пересечения с другой полилинией.
Логично предположить, что можно использовать за место Acad3DPolyline - AcadObject и иметь всего 1 процедуру за место двух (меньше места в коде + неудобно править сразу 2 процедуры)
Но при использовании:
Код:
[Выделить все]
If TypeOf Cheked3DPline Is Acad3DPolyline Then
            X21 = Cheked3DPline.Coordinates(ii * 3)
        Else
            X21 = Cheked3DPline.Coordinates(ii * 2)
        End If
при i=0 получаю Run-time error 451. Property let procedure not defined and property get procedure did not return an object
при выполнении X21 = Cheked3DPline.Coordinates(ii * 3). Хотя в окне Watches прекрасно вижу Cheked3DPline.Coordinates(0)
Возможно ли все-таки использовать 1 процедуру за место двух?

ПС и еще небольшой вопрос
При использовании ThisDrawing.StartUndoMark и ThisDrawing.EndUndoMark можно ли как-то переименовать отменяемое действие?
Т.е. при их использовании в окне undo акада появляется "группа команд" , можно ли изменить например на "Макрос А"?
Просмотров: 3550
 
Непрочитано 04.02.2013, 18:11
#2
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Попробуй использовать SendCommand в конце программы, например
Код:
[Выделить все]
Sub MainProgramCommands()
With ThisDrawing
.StartUndoMark
Call MacrosA()
Call MacrosB()
'--------------------'
Call MacrosZZZ()
.EndUndoMark
Dim cmd as string
cmd="_U" & vbcr
.SendCommand cmd
.Regen 0
end with
End Sub
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 04.02.2013, 20:17
#3
AnteC


 
Регистрация: 01.11.2010
Сообщений: 12


Возможно я запутано выразился. Мне не нужно отменять действие, я хочу удобочитаемое название в списке undo (не знаю как он правильно называется - появляется при нажатии на стрелку вниз на кнопке undo) акада, для того, чтобы пользователю после выполнения программы было легко отличить это действие в списке.
AnteC вне форума  
 
Непрочитано 04.02.2013, 20:41
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Сомневаюсь что это возможно на VBA извини
Олег (jr.) вне форума  
 
Непрочитано 05.02.2013, 02:43
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от AnteC Посмотреть сообщение
Т.е. при их использовании в окне undo акада появляется "группа команд" , можно ли изменить например на "Макрос А"?
Нельзя.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA Autocad. Run-time error 451



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как дождаться пока AutoCAD открывает файл? "ThisDrawing.Open" VBA Miniril Программирование 15 12.03.2018 09:47
программирование на VBA для работы в AutoCAD Igor12345 Программирование 32 22.01.2014 11:13
AutoCAD LT 2005 и VBA Macros Vidas Программирование 10 03.05.2005 11:00
подскажите кто может где взять литературу по VBA for AutoCad er Программирование 2 28.10.2003 14:08