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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Как в AutoCad создать всплывающее диалоговое окно, которое будет запрашивать свойства динамического блока перед его вставкой

VBA. Как в AutoCad создать всплывающее диалоговое окно, которое будет запрашивать свойства динамического блока перед его вставкой

Ответ
Поиск в этой теме
Непрочитано 21.06.2017, 20:03 #1
VBA. Как в AutoCad создать всплывающее диалоговое окно, которое будет запрашивать свойства динамического блока перед его вставкой
Jeneva
 
Регистрация: 21.06.2017
Сообщений: 10

Вечер добрый, вопрос заключается в следующем:

Создал динамический блок в AutoCad, написал код VBA для его вставки с возможностью изменения свойств блока (длина, ширина), создал кнопку под это дело. При нажатии кнопки запускается макрос и вставляется блок с заданной в коде VBA шириной и длиной. Можно ли сделать так, что бы при нажатии кнопки появлялось диалоговое окно, в котором предлагалось задать длину и ширину (или другие свойства) этого динамического блока, для того, что бы всё время не править код. Возможно ли это сделать в VBA?

Последний раз редактировалось Jeneva, 21.06.2017 в 23:35.
Просмотров: 4806
 
Непрочитано 21.06.2017, 21:25
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


можно, книги по VBA в гугле
gomer вне форума  
 
Автор темы   Непрочитано 21.06.2017, 21:38
#3
Jeneva


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


Спасибо за развёрнутый ответ) В тех книгах, где я читал, подробно про это не нашёл, вот и спрашиваю, может кто сталкивался знает...
Jeneva вне форума  
 
Непрочитано 21.06.2017, 21:51
#4
Сергей812


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


Вы читали странные книги, если там не было ни слова о UserForm в VBA)
Сергей812 вне форума  
 
Непрочитано 21.06.2017, 21:57
#5
Кулик Алексей aka kpblc
Moderator

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


Jeneva, для начала (и заголовка топика) - на каком языке собираешься программировать? Подобное окно можно создать на любом языке, который поддерживает AutoCAD.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.06.2017, 22:19
#6
Jeneva


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


В VBA. Ниже показан код. Вопрос в том, что бы постоянно не менять значение в VBA, а при запуске макроса всплывало диалоговое окно, где можно ввести данные значения. Я так понимаю, необходимо разработать окно в UserForm и связать его с свойствами блока (Я не силён в программировании, хочу это сделать для удобства работы в AutoCad)

Код:
[Выделить все]
 Sub Block()

   Dim blockRef As AcadBlockReference
   Dim name As String
   Dim pp As Variant
     
   'получаем точку вставки блока
   pp = ThisDrawing.Utility.GetPoint(, "Укажите точку вставки блока:")
   'имя и вставка блока
   name = "планограмма"
   Set blockRef = ThisDrawing.ModelSpace.insertBlock(pp, name, 1, 1, 1, 0)
   'получение динамических свойств блока
   If blockRef.IsDynamicBlock = True Then
      'задаём переменную и присвоим ей все динамические сво-ва блока
      Pr = blockRef.GetDynamicBlockProperties
         'проходим по каждому св-ву от начала pr до конца
         For Index = LBound(Pr) To UBound(Pr)
            Set prop = Pr(Index)
                'находим то св-во, которое нужно
                If prop.PropertyName = "Длина" Then
                prop.Value = 200#
                If prop.PropertyName = "Высота" Then
                prop.Value = 300#
                End If
         Next
   End If
End Sub

Последний раз редактировалось Кулик Алексей aka kpblc, 21.06.2017 в 23:21.
Jeneva вне форума  
 
Непрочитано 21.06.2017, 23:18
#7
Сергей812


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


Либо ThisDrawing.Utility.GetInteger (пишу навскидку, но вроде так называется метод) перед указанием точки вставки блока. Тогда можно и без UserForm обойтись и вводить прямо в комстроке
Сергей812 вне форума  
 
Непрочитано 22.06.2017, 12:11
#8
Владимир_М


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


Цитата:
Сообщение от Jeneva Посмотреть сообщение
В VBA. Ниже показан код. Вопрос в том, что бы постоянно не менять значение в VBA, а при запуске макроса всплывало диалоговое окно, где можно ввести данные значения.
А в чем смысл-то такой автоматизации? ДинБлок уже существует. Кнопка для вставки такого блока стандартная существует в том числе и с запросом точки вставки и проч. Если мы говорим именно о дин блоке, то по определению в нем должны быть предусмотрены возможности изменения всех его необходимых параметров (свойств) опять же без программирования. Зачем вокруг этого еще городить огород из VBA? Какая разница где Вы поменяете эти две цифры, в самодеятельной форме или в стандартных свойствах? Или Вы описали задачу не полностью...
Владимир_М вне форума  
 
Непрочитано 22.06.2017, 17:42
#9
KazTimur


 
Сообщений: n/a


Попробуйте это :
Вложения
Тип файла: dvb Primer.dvb (33.5 Кб, 68 просмотров)
Тип файла: dwg
DWG 2013
пример.dwg (37.8 Кб, 62 просмотров)
 
 
Автор темы   Непрочитано 23.06.2017, 19:28
#10
Jeneva


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


KazTimur, Спасибо большое! Работает)
Jeneva вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Как в AutoCad создать всплывающее диалоговое окно, которое будет запрашивать свойства динамического блока перед его вставкой

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить все состояние видимостей динамического блока? prajdziswet LISP 6 18.11.2021 21:30
Autocad Architecture 2011: Как в атрибуте блока тега двери создать вычисляемое значение DOOROBJECTS:NUMBERSUFFIX+DOOROBJECTS:NUMBER (Д01)? сям Вертикальные решения на базе AutoCAD 6 13.03.2014 09:57
как удалить свойства, созданные Autocad Map? АлексЮстасу Программирование 8 08.02.2011 02:41
AutoCAD 2009/2010 в ряде вопросов серьёзно курят перед AutoCAD 2007/2008 hwd Баги и пожелания в Autodesk 30 10.11.2010 12:56
Редактирование вхождения динамического блока из командной строки. Alexey_BH Динамические блоки 2 26.09.2010 13:13