Новый ZWCAD 2017
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

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

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

Jeneva на форуме Вставить имя

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

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

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

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550
Отправить сообщение для gomer с помощью ICQ Отправить сообщение для gomer с помощью Skype™


можно, книги по VBA в гугле
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.06.2017, 21:38
#3
Jeneva


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


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


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


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

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


Jeneva, для начала (и заголовка топика) - на каком языке собираешься программировать? Подобное окно можно создать на любом языке, который поддерживает AutoCAD.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.06.2017, 22:19
#6
Jeneva


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


В 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
Сообщений: 3,525


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


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


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


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


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


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


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

 VetCAD++
Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить все состояние видимостей динамического блока? prajdziswet LISP 5 21.10.2016 01:39
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 AutoCAD 2 26.09.2010 13:13

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы