| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать размер средствами VBA

Как создать размер средствами VBA

Ответ
Поиск в этой теме
Непрочитано 05.05.2022, 13:59 #1
Как создать размер средствами VBA
Sergi
 
Регистрация: 22.04.2022
Сообщений: 8

Помогите понять в чем ошибка.
Хочу создать объект AcadDimRotated со стороны Excel VBA
Порядок действий:
- Создаю эксель файл
Нажмите на изображение для увеличения
Название: E1.jpg
Просмотров: 32
Размер:	33.4 Кб
ID:	247129
-Создание полилинии работает нормально
Sub t_1()
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Set acadApp = GetObject(, "AutoCAD.Application")
Set acadDoc = acadApp.ActiveDocument

Dim objRect1 As AcadLWPolyline

Dim dblVertexlist(0 To 7) As Double
dblVertexlist(0) = Range("I2"): dblVertexlist(1) = Range("J2")
dblVertexlist(2) = Range("I2") + Range("E2"): dblVertexlist(3) = Range("J2")
dblVertexlist(4) = Range("I2") + Range("E2"): dblVertexlist(5) = Range("J2") + Range("F2")
dblVertexlist(6) = Range("I2"): dblVertexlist(7) = Range("J2") + Range("F2")
Set objRect1 = acadDoc.ModelSpace.AddLightWeightPolyline(dblVertexlist)
objRect1.Closed = True
End Sub


-Пытаюсь создать размер
Sub t_2()
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Set acadApp = GetObject(, "AutoCAD.Application")
Set acadDoc = acadApp.ActiveDocument

Dim objRotDim1 As AcadDimRotated

Dim dblDimPoint1(0 To 2) As Double
Dim dblDimPoint2(0 To 2) As Double
Dim intDimL(0 To 2) As Integer
Dim lonRot1 As Integer

dblDimPoint1(0) = Range("I2"): dblDimPoint1(1) = Range("J2"): dblDimPoint1(2) = 0
dblDimPoint2(0) = Range("I2") + Range("E2"): dblDimPoint2(1) = Range("J2"): dblDimPoint2(2) = 0
intDimL(0) = 150: intDimL(1) = 20: intDimL(2) = 0
lonRot1 = 0
Set objRotDim1 = acadDoc.ModelSpace.AddDimRotated(dblDimPoint1, dblDimPoint2, intDimL, lonRot1)
End Sub

получаю вот такую ошибку
Нажмите на изображение для увеличения
Название: E2.jpg
Просмотров: 33
Размер:	34.5 Кб
ID:	247130

Версии
AutoCAD 2017
Excel 2016

Просмотров: 943
 
Непрочитано 05.05.2022, 14:21
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,696


А это нормально, что точка расположения выносной не (0 to 2) As Double?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.05.2022, 14:59
#3
Sergi


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А это нормально, что точка расположения выносной не (0 to 2) As Double?
Пока не задумывался над этим, да наверное маловато будет.
Разве может влиять это на ошибку?

Со сторона VBA Autocad пример простановки размера отрабатывает, ошибку не выдает.
Sergi вне форума  
 
Непрочитано 05.05.2022, 15:07
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,696


На всякий случай - на какой строке ошибка?
ЗЫ Я не слежу за развитием VBA. Может, ACAD2022, а Office - 2000 ? И там тупо несовместимость где-то зарылась? А что будет, если использовать не раннее, а позднее связывание?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.05.2022, 15:43
#5
Sergi


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


Ошибку тут показывает.
Нажмите на изображение для увеличения
Название: E3.jpg
Просмотров: 19
Размер:	26.9 Кб
ID:	247135
В VBA начинаю только вникать
между ранним и поздним еще досконально не разобрался,
погуглю про это, попробую.
Или пример бы позднего.
Sergi вне форума  
 
Непрочитано 05.05.2022, 16:38
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,770


вообще то функция AddDimRotated ожидает на входе Variant с массивом double
Сергей812 вне форума  
 
Автор темы   Непрочитано 05.05.2022, 17:54
#7
Sergi


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


Вот так заработало.

Код:
[Выделить все]
Sub t_4()
Dim acadApp As AcadApplication
Dim acadDoc As AcadDocument
Set acadApp = GetObject(, "AutoCAD.Application")
Set acadDoc = acadApp.ActiveDocument

Dim objRotDim1 As AcadDimRotated
Dim dblDimPoint1(0 To 2) As Double
Dim dblDimPoint2(0 To 2) As Double
Dim intDimL(0 To 2) As Double
Dim lonRot1 As Double

dblDimPoint1(0) = Range("I2"): dblDimPoint1(1) = Range("J2"): dblDimPoint1(2) = 0
dblDimPoint2(0) = Range("I2") + Range("E2"): dblDimPoint2(1) = Range("J2"): dblDimPoint2(2) = 0
intDimL(0) = 150: intDimL(1) = 20: intDimL(2) = 0
lonRot1 = 180 * 3.1415926535 / 180
Set objRotDim1 = acadDoc.ModelSpace.AddDimRotated(dblDimPoint1, dblDimPoint2, intDimL, lonRot1)
End Sub

Последний раз редактировалось Sergi, 05.05.2022 в 19:56.
Sergi вне форума  
 
Непрочитано 05.05.2022, 19:35
#8
Tom2k7


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


3й параметр должен быть double
Tom2k7 вне форума  
 
Непрочитано 06.05.2022, 01:52
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,770


А перед выполнением каких либо действий с активным документом не помешает проверить:
Код:
[Выделить все]
if(acadApp.GetAcadState().IsQuiescent)then
   Акад находится в состоянии простоя (idle) и готов  принимать внешние команды

end if
иначе можно получить блокировку Экселя до момента возврата Акада в idle.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать размер средствами VBA

Система Техэксперт дает уверенность в правильности и эффективности принимаемых инженерных решений!
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер в формате "NхШаг" sam_n Программирование 32 30.06.2019 17:50
Как создать кабельный журнал стандартными средствами autocad? gnuvse AutoCAD 23 27.06.2018 09:34
Можно ли средствами компаса создать трубу как на картинке. SergeySS Компас 38 29.01.2018 12:35
Как сделать параметрический размер информационным Малюк AutoCAD 2 27.10.2014 11:01
Размер в листе показывает не размер детали! Witalij AutoCAD 6 24.06.2008 07:56