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

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

VBA. Редактирование аттрибутов блока.

Ответ
Поиск в этой теме
Непрочитано 23.09.2009, 16:35 #1
VBA. Редактирование аттрибутов блока.
Bart
 
Регистрация: 23.07.2009
Сообщений: 35

Пишу программу на VBA. Задача поставлена такая: задавать данные и должен формироваться шкаф (система управления) и куча чертежей к нему на основе входящих данных. Хотят, чтобы нажал кнопку и все само нарисовалось.
В VBA я не силен. Написал одну програмку лет 5 назад.

Начал я с эл. схемы. Задаю количество источников питания, нажимаю OK и вставляется определенное количество блоков. Там обозначения, нумерация, маркировка проводов. Все сделано аттрибутами. Как мне эти аттрибуты изменять при вставке автоматом? Там к значению просто +1 прибавляется у 5 аттрибутов. Как до аттрибутов добраться?
Просмотров: 8792
 
Непрочитано 23.09.2009, 16:42
#2
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Чего-то типа:
Код:
[Выделить все]
dim ....
....
Set insertedBlock = ThisDrawing.ModelSpace.InsertBlock(InsertPnt, name_Blck, Scale_Blck, Scale_Blck, Scale_Blck, Rotate_Blck)
Attr1 = insertedBlock.GetAttributes
      For Each Attr In Attr1
           If Attr.TagString = "имя атрибута" Then
              Attr.Textring="Значение атрибута"
           End If
      Next
    End If
  End If
insertedBlock - вставленный экземпляр блока, проходим в цикле по всем атрибутам, находим нужный по имени, задаем ему нужное значение...
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 23.09.2009, 16:44
#3
Кулик Алексей aka kpblc
Moderator

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


Если ent - указатель на вхождение блока, то у него есть метод GetAttributes. Ну, а дальше - уже сам
---
Опоздал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.09.2009, 16:49
#4
Bart


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


Ага. Спасибо. Как раз то, что нужно. Буду пробовать.

Может подскажете какую справочную литературку или сайт с примерами?
Bart вне форума  
 
Непрочитано 23.09.2009, 16:52
#5
Кулик Алексей aka kpblc
Moderator

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


А что, обычной справки мало?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.09.2009, 16:54
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Bart Посмотреть сообщение
Может подскажете какую справочную литературку или сайт с примерами?
:
http://www.cad.dp.ua/stats/a_vba/
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 23.09.2009, 17:13
#7
Bart


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А что, обычной справки мало?
В справке не понятно куда смотреть и что искать. По данному вопросу я поискал-поискал в справке и ничего не нашел.
Bart вне форума  
 
Непрочитано 23.09.2009, 17:23
#8
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Bart Посмотреть сообщение
В справке не понятно куда смотреть и что искать. По данному вопросу я поискал-поискал в справке и ничего не нашел.
Плохо искали.. При работе с примитивами автокада лучший способ - открыть объектную модель, щелкнуть по нужному типу примитива, и увидишь все его методы/свойства. Опять-таки щелкаешь по методу - видишь его описание; можно открыть пример кода (при наличии, чаще всего - он есть). Кстати, вот ресурс - попытка перевода справки по VBA на русский (коряво, "машинно", но все-таки...): http://vbamodel.narod.ru/AutoCAD/idx_object_model.htm
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 23.09.2009, 17:38
#9
Bart


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


И еще вопрос. Переменные нужно декларировать или не обязательно?

Последний раз редактировалось Bart, 23.09.2009 в 17:46.
Bart вне форума  
 
Непрочитано 23.09.2009, 21:05
#10
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Если в начале модуля есть "фраза" Option explicit, то надо. Если нет, то не обязательно..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Непрочитано 23.09.2009, 22:51
#11
Кулик Алексей aka kpblc
Moderator

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


Но лучше поставить Option Explicit и не мучаться потом с непонятным поведением
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.09.2009, 23:39
#12
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


лучше вообще забыть про VBA чтоб потом не мучаться
http://dwg.ru/dnl/254 - раз прога недоделаная, но можно поучиться на примере.
http://dwg.ru/dnl/1931 - два прога доделанная, если не понятно как атрибуты редактировать то там есть
ЗЫ если в ВБА все равно не шаришь пиши на лиспе.
Sleekka вне форума  
 
Автор темы   Непрочитано 24.09.2009, 11:59
#13
Bart


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


Sleekka
У меня другая задача. Не просто работа с атрибутами. Но проги посмотрю при случае. И почему забыть про ВБА?
А лисп для меня вообще загадка, на вба проще.
Bart вне форума  
 
Непрочитано 24.09.2009, 12:02
#14
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


на лиспе нужно меньше писать раза так в 3 чтобы решить ту же задачу что и на вба, к тому же когда придется работать с массивами данных, в вба - чтобы массив был динамическим нужно будет при записи элемента постоянно назначать новую размерность массиву, вобщем намучаетесь, вба это так - цвет линии поменять и только, серьезных задач там не решить.
Sleekka вне форума  
 
Автор темы   Непрочитано 24.09.2009, 13:57
#15
Bart


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


Ну а где решить?
Мне, возможно, нужно будет делать менюшку, экспорт данных в access, эксель и ворд, а так же и обратно. Еще открывать файл, делать в нем чертеж и сохранять куда нужно.
Возможно все это будет через меню, а возможно будет считываться из файла эксель. Пока еще не ясно, все в процессе.
На данный момент идет процесс изучения.

Лисп я совсем не знаю, и мне как-то кажется, что он для этого не подойдет.
Bart вне форума  
 
Непрочитано 24.09.2009, 14:20
#16
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Bart Посмотреть сообщение
Ну а где решить?
Мне, возможно, нужно будет делать менюшку, экспорт данных в access, эксель и ворд, а так же и обратно. Еще открывать файл, делать в нем чертеж и сохранять куда нужно.
Возможно все это будет через меню, а возможно будет считываться из файла эксель. Пока еще не ясно, все в процессе.
На данный момент идет процесс изучения.
Лисп я совсем не знаю, и мне как-то кажется, что он для этого не подойдет.
Возможно, это можно и на лиспе сделать (я его тоже не знаю), но для взаимодействия с экселями и прочими вордами мне кажется, VBA подойдет лучше.. Правда, в состав Autocad 2010 модуль VBA уже не входит (можно его качнуть с автодесковского сайта и доустановить), а в будущих версиях, возможно, он и вовсе отомрет..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 24.09.2009, 14:33
#17
Bart


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


Как не входит??? Фига себе.
А тут нигде нет обсуждения о том, на чем программировать? Если VBA отпадет, то не понятно как дальше все работать будет.
Bart вне форума  
 
Непрочитано 24.09.2009, 15:01
#18
Кулик Алексей aka kpblc
Moderator

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


VBA-модуль не поставляется в комплекте с AutoCAD 2010 и продуктами на его основе (но этот модуль еще можно скачать с официального сайта).
Почему "непонятно на чем программировать"? lisp / arx / .net - и вперед
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 24.09.2009, 15:17
#19
Bart


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


Почитал я Autodesk.
VBA закончилось, советуют переходить на VB Express Edition. Он же и есть .net.
А кто на чем программирует? С лиспом все ясно.
Я просто думаю (свои требования я описал в первом посте) делать все на VB или переходить на что-то еще. Программистов рядом нет, так что спросить совета не у кого.

А в 2009 автокаде нормально будет работать то, что сделано на VB экспресс? И как там интегрируется?
Просто сейчас можно прогу запускать в самом акаде. Еще даже не законченую.
Bart вне форума  
 
Непрочитано 24.09.2009, 15:24
#20
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


Цитата:
Сообщение от Bart Посмотреть сообщение
Как не входит??? Фига себе.
А тут нигде нет обсуждения о том, на чем программировать? Если VBA отпадет, то не понятно как дальше все работать будет.
VB.net, C++, C#... Я не знаю, конечно, как политика автодеска изменится, но возможно, уже для следующей версии разработанные VBA-шные модули уже будут неприменимы..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Редактирование аттрибутов блока.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование блока, используя значение его атрибутов Mazai Программирование 14 19.01.2009 20:49
Редактирование блока ALM AutoCAD 1 27.06.2008 10:54
Как в пространстве редактора блоков запустить редактирование вложенного блока. Supermax Программирование 5 18.12.2007 17:50
Измнение через ексель (через макрос в VBA) аттрибутов динамического блока VitaminC Программирование 4 20.10.2007 14:52