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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вывести список деталей с размерами по ДхШхГ используя VBA

Вывести список деталей с размерами по ДхШхГ используя VBA

Ответ
Поиск в этой теме
Непрочитано 30.11.2011, 16:07 #1
Вывести список деталей с размерами по ДхШхГ используя VBA
MaximuS_G
 
Регистрация: 08.11.2011
Сообщений: 30

Всем привет!
Надеюсь получить совет от гуру...
Есть изделие, нарисованное в Автокаде (см. вложение). Для примера это шкаф: у него есть стоевые, дно, крыша, перегородки, полки и т.д.
Часть из этих деталей сделано из материала А, часть из материала Б.
Моя задача:
1. Вывести список деталей с размерами по ДхШхГ из материала А и Б.
2. Посчитать площадь всех деталей сделанных из материала А.
Если бы я смог решить первую задачу, вторая задача тоже бы решалась.

Вот здесьв принципе практически тоже самое требовалось, только для 2D объектов, а у меня 3d.
Разница в том, что автору нужен был код, а мне нужны подсказки, я хочу сам разобраться. В том топике Дима_ приводил код для задачи, но он не на VBA, я его не могу к сожалению понять.
Думал материалы отличать слоями, но сейчас буду пробовать разобраться с блоками. В топике вроде бы сошлись на том, что их использование для такой задачи как у меня лучше.

И еще вопросы:
Как мне получить ссылку на выделенный объект в рабочем пространстве, что бы посмотреть его свойства?
То есть вот такой кусок кода сначала создает объект, а потом он к нему обращается, а мне надо к выделенному добраться.

Код:
[Выделить все]
Dim circleObj As AcadCircle
Set circleObj = ThisDrawing.ModelSpace.AddCircle(center, radius)
circleObj.Layer = "ABC"
Если я правильно понимаю, то к любому объекту я могу добраться перебором:
Код:
[Выделить все]
Dim oCad As AcadObject
For Each oCad In ThisDrawing.ModelSpace
MsgBox oCad.Volume
Next
В чем разница между AcadObject и AcadEntity?

Заранее спасибо за любую помощь!
Всем удачи!)

Вложения
Тип файла: dwg
DWG 2004
Пример.dwg (65.1 Кб, 1617 просмотров)

Просмотров: 7091
 
Непрочитано 30.11.2011, 16:59
#2
Олег (jr.)

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


Сразу скажу прямо бросай это дело с VBA, он не будет
применятся в дальнейших версиях Автокада
Скрей всего тебе нужно начать с AutoLisp или
осваивать технологию .Net, напр. см. здесь
http://www.cad.dp.ua/stats/vba-net.php
Уровень знаний у тебя пока нулевой так что не будет особой разницы
в выборе, хотя лично я тебе посоветовал бы AutoLisp
и обязательно купи учебник (лучше Н.Н. Полещука)
Олег (jr.) вне форума  
 
Непрочитано 30.11.2011, 17:14
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от MaximuS_G Посмотреть сообщение
В чем разница между AcadObject и AcadEntity?
Все объекты AutoCAD наследуются от AcadObject.
AcadEntity наследуется от AcadObject и представляет собой базовый класс для всех графических примитивов (если тебе это о чём-то говорит...).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.11.2011, 17:20
#4
MaximuS_G


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


Олег (jr.), спасибо большое что присоединились!
Учебник Полищука у меня есть, но там описывается много всего, что мне не нужно.
Я буду рисовать в Автокаде мебель в интерьере, потом передавать ее в 3d Max и там делать рендер - схема работы предложена Unfamous в этом топике). Автоматизация нужна что бы проводить автоматический расчет стоимости проекта - связка AutoCAD с MS SQL Server (в котором будут храниться данные о стоимости материалов).
Сейчас работаю в 2006 автокаде, выше не тянет компьютер, но собираюсь скоро взять мощнее аппарат, и перейду на 2012.
Через VB.net легче будет добраться к MS SQL Server, чем через AutoLisp? Понравилось, что в AutoLisp можно использовать команды автокада, например _box. Так ли это?
Заранее спасибо!

hwd, спасибо большое что присоединились!
В Вашем объяснении есть знакомые слова, но пока не знаю как их применить))).

Последний раз редактировалось MaximuS_G, 30.11.2011 в 17:25.
MaximuS_G вне форума  
 
Непрочитано 30.11.2011, 17:32
#5
Олег (jr.)

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


Цитата:
Сообщение от MaximuS_G Посмотреть сообщение
Через VB.net легче будет добраться к MS SQL Server, чем через AutoLisp?
На Vb.NET (или C#) будет летать
А если останешься на VBA то самому будет жалко все наработанное выбросить фтопку
Тут кое-что из основ .NET можно найти:
http://docs.autodesk.com/ACD/2010/EN...icNumber=d0e51

Страница hwd:

http://sites.google.com/site/bushmansnetlaboratory/home
Олег (jr.) вне форума  
 
Непрочитано 30.11.2011, 17:37
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от MaximuS_G Посмотреть сообщение
Учебник Полищука у меня есть
ПолИщук наверное икает...
Цитата:
Сообщение от MaximuS_G Посмотреть сообщение
Через VB.net легче будет добраться к MS SQL Server, чем через AutoLisp? Понравилось, что в AutoLisp можно использовать команды автокада, например _box. Так ли это?
На освоение автолиспа уйдёт меньше времени, чем на освоение дотнета. дотнет мощнее автолиспа.
Цитата:
Сообщение от MaximuS_G Посмотреть сообщение
В Вашем объяснении есть знакомые слова, но пока не знаю как их применить))).
это был ответ на вопрос:
Цитата:
В чем разница между AcadObject и AcadEntity?
тут не применение, тут понимание нужно.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.11.2011, 17:39
#7
Олег (jr.)

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


Улыбнуло спс
Олег (jr.) вне форума  
 
Непрочитано 30.11.2011, 19:30
#8
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от hwd Посмотреть сообщение
На освоение автолиспа уйдёт меньше времени, чем на освоение дотнета.
Тут смотря что понимать под освоением. Лисп он "вобще другой" - тут конечно сравнивается зеленое с соленым, но чтобы понять лисп - им надо "проникнуться", а дотнет можно просто "освоить".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 30.11.2011, 19:46
#9
Salt

Josser
 
Регистрация: 09.11.2011
Сообщений: 66


MaximuS_G Учи С#, он лаконичней и стройней, чем VB.NET. (VB.NET - это пиар-ход с целью понравиться программистам, ранее писавшим на VB). А из автолиспа тебе понадобится совсем немного (если вообще понадобится) и это немногое здесь на форуме всегда подскажут. Увлекаться автолиспом, на мой взгляд, не стоит. Достаточно под рукой иметь книгу Полещука.
Salt вне форума  
 
Непрочитано 30.11.2011, 20:36
#10
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
чтобы понять лисп - им надо "проникнуться", а дотнет можно просто "освоить".
"проникнуться"... "освоить"... Знать спецификацию нужно в любом языке программирования. Опыт приходит с практикой и чтением литературы. на AutoLisp можно писать более-менее сносные программки уже на второй день, поскольку границы его песочницы чётко обозначены - это AutoCAD (утверждаю это на основании собственного опыта). Чтобы писать более-менее сносные программки на .net, нужно для начала изучить спецификацию языка, на котором пишешь (она поболее лисповской будет), а так же изучить некоторый, базовый набор .net-библиотек (а это не два дня за книжкой, хотя зависит от скорости чтения/усвоения/запоминания информации...). Не сделав этого, лезть в написание плагинов на .net - это плохая идея.

Имхо - самый быстрый вариант для автора топика - автолисп.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.11.2011, 20:42
#11
gomer

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


гыыыыыыыыы, забавно Смешные вы все люди...
MaximuS_G, научись создавать свои детали в виде блоков с отребутами, а извлекать их гораздо быстрее научишься! Как по мне это лучше, чем расщиренные данные, в твоем случае... и еще, читай справку, а не Полещука! учить вба по книге о лиспе, имхо полный изврат, как впрочем и наоборот
gomer вне форума  
 
Непрочитано 30.11.2011, 20:44
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от gomer Посмотреть сообщение
научись создавать свои детали в виде блоков с отребутами, а извлекать их гораздо быстрее научишься!
+100.

P.S. Только ты бы грамотно писал, а то автор в справке и будет искать "отребуты" с заранее известным результатом...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.11.2011, 21:25
#13
gomer

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


Цитата:
Сообщение от hwd Посмотреть сообщение
автор в справке и будет искать "отребуты" с заранее известным результатом...
э, ну тогда я пас
gomer вне форума  
 
Автор темы   Непрочитано 01.12.2011, 15:29
#14
MaximuS_G


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


Всем большое спасибо за ответы!

Тогда ставлю для себя задачи:
1) "...научись создавать свои детали в виде блоков с атрибутами..." - учусь создавать блоки с атрибутами
2) "...на AutoLisp можно писать более-менее сносные программки уже на второй день..." - учу AutoLisp, так как в дальнейшем не собираюсь строить карьеру программиста.
Буду благодарен за ссылки по описанным выше тематикам!

Вопрос по AutoLisp - можно ли с помощью него создавать пользовательские формы ввода данных?

Удачи!)

Последний раз редактировалось MaximuS_G, 01.12.2011 в 15:41.
MaximuS_G вне форума  
 
Непрочитано 01.12.2011, 15:46
#15
Олег (jr.)

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


Да, смотри DCL
Олег (jr.) вне форума  
 
Непрочитано 01.12.2011, 18:31
#16
gomer

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


ну, вот, что вы наделали? В ВБА можно создавать "пользовательские формы ввода данных" гораздо быстрее и без кнопкодавства, даже не будучи программистом
gomer вне форума  
 
Автор темы   Непрочитано 01.12.2011, 18:44
#17
MaximuS_G


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


Цитата:
Сообщение от gomer Посмотреть сообщение
ну, вот, что вы наделали? В ВБА можно создавать "пользовательские формы ввода данных" гораздо быстрее и без кнопкодавства, даже не будучи программистом
Сначала научусь делать блоки с атрибутами, потом посмотрю AutoLisp ... с VBA я работал 2 года в приложениях MS Office, то есть нужно будет просто выучить объектную модель Автокада.

Цитата:
Сообщение от Олег (jr.)
Да, смотри DCL
Спасибо!

Последний раз редактировалось MaximuS_G, 02.12.2011 в 20:14.
MaximuS_G вне форума  
 
Непрочитано 10.12.2011, 02:47
#18
молод и перспективен


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


Доброе время суток MaximuS_G.
Я будучи инженером постояно работаю в автоКаде с 2006 по 2012 прошел все версии.
Для себя проектирую мебель. Програмирование изучал в школе и в уневере и этих знаний мне хватило чтобы свободно писать на ВБА.
Когда заказываю распил деталей мне нужно из моей модельки выдрать длину, ширину и толщину.
Так что этот код я написал, если интересно могу прислать
написан он был быстро, по-хорошему бы его доработать чтоб количество деталей считал при совпадении.

От ВБА отказываца не собираюсь, на дотНэт переходить наверно нада, но пока ВБА есть в каде не буду
В своей постоянной работе все время пишу маленькие простые програмки на ВБА. Еслиб нашел таких же как я то можно было бы написать чтото глобальное
молод и перспективен вне форума  
 
Непрочитано 10.12.2011, 11:30
#19
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от молод и перспективен Посмотреть сообщение
Доброе время суток MaximuS_G.
Я будучи инженером постояно работаю в автоКаде с 2006 по 2012 прошел все версии.
Для себя проектирую мебель. Програмирование изучал в школе и в уневере и этих знаний мне хватило чтобы свободно писать на ВБА.
Когда заказываю распил деталей мне нужно из моей модельки выдрать длину, ширину и толщину.
Так что этот код я написал, если интересно могу прислать
написан он был быстро, по-хорошему бы его доработать чтоб количество деталей считал при совпадении.

От ВБА отказываца не собираюсь, на дотНэт переходить наверно нада, но пока ВБА есть в каде не буду
В своей постоянной работе все время пишу маленькие простые програмки на ВБА. Еслиб нашел таких же как я то можно было бы написать чтото глобальное
Offtop:
Доброе время суток "молод и перспективен".
Это такая "модная тема" - писать с грамматическими и орфографическими ошибками буквально через слово, или же это сказывается отсутствие элементарных знаний уровня начальной школы?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 10.12.2011, 16:34
#20
Олег (jr.)

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


Offtop:
Цитата:
Сообщение от hwd Посмотреть сообщение
Offtop:
Доброе время суток "молод и перспективен".
Это такая
Уговорил

Последний раз редактировалось Олег (jr.), 11.12.2011 в 09:56.
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Вывести список деталей с размерами по ДхШхГ используя VBA

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен макрос для AutoCAD, экспортирующий список деталей в текстовый файл technos Программирование 20 24.10.2015 18:11
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Как вывести список всех подпримитивов блока или др. элемента. Neo_ Программирование 16 25.01.2010 19:53
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47