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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить свойства 3dSolid Box в VB...

Как получить свойства 3dSolid Box в VB...

Ответ
Поиск в этой теме
Непрочитано 15.06.2009, 20:48 #1
Как получить свойства 3dSolid Box в VB...
99garry
 
Регистрация: 15.06.2009
Сообщений: 3

Здравствуйте! Столкнулся с такой проблеммой:
Нужно написать приложение на VB в котором бы отображались высота, ширина и длина выбраного обьекта, при условии, что этот объект 3dSolid Box и свободно ориентирован в пространстве.
Что у меня получилось, так это определить, что выбраный обьект это 3dsolid и его тип Box.
Другими словами. Если нарисовать обьект box, а затем его выделить, нажать правую кнопку мыши, и в выпавшем меню выбрать пункт Properties, то появится окно в котором будут указаны свойствы обьекта, в числе которых и искомые ширина, длина и высота.
Многочасовой поиск в Help файле не дал результатов.
Спасибо за советы и любые способы решения данной( для специалистов, наверное маленькой) проблеммммммы.
Просмотров: 3125
 
Непрочитано 15.06.2009, 23:49
#2
Дима_

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


Для VBA не знаю, но через DXF:
Код:
[Выделить все]
(defun getboxparametr (obj)
(if (and
obj 
(= (type obj) 'ename)
(= (cdr (assoc 0 (entget obj))) "3DSOLID")
(setq obj (cdr (assoc 350 (entget obj))))
(setq obj (cdr (assoc 360 (entget obj))))
(setq obj (cdr (assoc 360 (entget obj))))
(= (cdr (assoc 0 (entget obj))) "ACSH_BOX_CLASS")
);end of and
(setq 	obj (member (cons 100 "AcDbShBox") (entget obj))
	obj (mapcar 'cdr (list (assoc 40 obj) (assoc 41 obj) (assoc 42 obj)))
);end of setq
);end of if
);end of getboxparametr
Пример:
Код:
[Выделить все]
(getboxparametr (entlast))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 17.06.2009, 13:44
#3
99garry


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Для VBA не знаю, но через DXF:
Код:
[Выделить все]
(defun getboxparametr (obj)
(if (and
obj 
(= (type obj) 'ename)
(= (cdr (assoc 0 (entget obj))) "3DSOLID")
(setq obj (cdr (assoc 350 (entget obj))))
(setq obj (cdr (assoc 360 (entget obj))))
(setq obj (cdr (assoc 360 (entget obj))))
(= (cdr (assoc 0 (entget obj))) "ACSH_BOX_CLASS")
);end of and
(setq 	obj (member (cons 100 "AcDbShBox") (entget obj))
	obj (mapcar 'cdr (list (assoc 40 obj) (assoc 41 obj) (assoc 42 obj)))
);end of setq
);end of if
);end of getboxparametr
Пример:
Код:
[Выделить все]
(getboxparametr (entlast))
По поводу DXF: не знаком с этим понятием, но если с его помощью можно в режиме текущего времени определить искомые параметры и использовать их в другом приложении, то я готов изучить этот метод.
Посоветуйте с чего начать знакомство с DXF...
Просто, возможно лучше направить свои усилия на изучение ObjectARX?
99garry вне форума  
 
Непрочитано 17.06.2009, 13:59
#4
Дима_

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


Цитата:
Сообщение от 99garry Посмотреть сообщение
...
Посоветуйте с чего начать знакомство с DXF...
Просто, возможно лучше направить свои усилия на изучение ObjectARX?
ObjectARX лучше - DXF уже давно умер, этот как ассемблер в виндах - начиналось все с него, но сейчас практически не используеться. DXF - это не язык, это формат хранения примитивов, к свойствам которых есть доступ через лисп.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 17.06.2009, 19:39
#5
Скулачёв А.

конструктор
 
Регистрация: 29.08.2007
Москва
Сообщений: 55


Дима_ , что вернёт твоя функция?
__________________
Продумано до мелочей
Скулачёв А. вне форума  
 
Непрочитано 17.06.2009, 21:41
#6
Кулик Алексей aka kpblc
Moderator

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


Дима_, далеко не всегда DXF не нужен в программировании под AutoCAD. Иногда без него не обойтись.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2009, 01:02
#7
Дима_

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


Цитата:
Сообщение от Скулачёв А. Посмотреть сообщение
Дима_ , что вернёт твоя функция?
(getboxparametr (car (entsel)))
Если указать на ящик созднной командой _box начиная с 2007 версии и старше - вернет список из длинны, ширины и высоты.
То Крыс - спору нет, яж и говорю - как ассемблер - теоритически вытащить можно все что угодно - правда, в непростых случаях,придеться немало формул из курса высшей математики вспомнить и в лисп их перевести, а это у большинства из нас вряд-ли лучше автодеска получиться - get-volume например, но если готовой команды нет, то без вариантов - dxf only.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.06.2009, 10:14
#8
Евгений А.

Армспорт
 
Регистрация: 18.07.2006
Ейск
Сообщений: 355


Может не в тему, но выскажусь. На ассемблер прошу не наезжать, он умрёт только вместе с компьютерами. Что касается DXF - это не язык программирования! а просто способ полного текстового представление файла dwg. Вывод отсюда такой - информация есть вся, но работать с ней получается медленно. А пример с get-volume не в тему - она не вытаскивает инфу из файла, а просто туповычисляет объём тела.
Евгений А. вне форума  
 
Автор темы   Непрочитано 22.06.2009, 20:58 печально...
#9
99garry


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


не хочется закрывать тему, но похоже, что свежие идеи иссякли. Так или иначе я не получил вразумительного ответа на свой вопрос.
99garry вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как получить свойства 3dSolid Box в VB...

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Справка по форуму Admin FAQ: Часто задаваемые вопросы 13 04.03.2014 11:12
Как читать свойства Custom из чертежа viter_alex Программирование 6 27.02.2009 10:03
Как подгрузить vb к автокаду? vasyavip Программирование 9 19.01.2009 01:40
как получить параметры бумаги принтеров? ASLYS Программирование 1 21.04.2008 19:04
Как изменить свойства атрибутов блока ALFMario AutoCAD 15 25.01.2008 00:42