|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
DWG -> Трёхмерная таблица
Регистрация: 11.07.2010
Сообщений: 24
|
||
Просмотров: 13407
|
|
||||
Не знаю как другие, но лично я не смог понять что за "трёхмерная таблица цветов" (цвета всех пикселов в плоскости XY для каждого уровня Z что-ли...) и зачем такое может понадобиться.
|
||||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
Цитата:
Грубо говоря, необходимо обойти все точки по осям X, Y, Z, собрав их информацию. |
|||
![]() |
|
||||
|
||||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
Для рассчёта теплообмена здания, и учётом объектов внутри здания. Главная проблема с обходом DWG файла по осям.
Ой, я вобще новичёк в AutoCAD, но постараюсь разобраться. Дело в том, что я ещё не разобрался как такие скрипты запускать. Насколько я понял, Вы написали макрос для AutoCAD. Последний раз редактировалось Lazerus, 11.07.2010 в 13:05. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
>Lazerus: В таком случае читайте справку, чтоб различать, что такое скрипт(сценарий), программа на autolisp или макрос VBA... и как этим пользоваться!
в данном случае скопируйте код в командную строку, затем в ней же наберите: test... если в рисунке есть точки различных цветов, то получите список точек и их цветов! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,409
|
Раздел публикации -> как использовать лисп, опубликованный на форуме
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 27.06.2010
Сообщений: 6
|
я бы решала Вашу задачу примерно так (ObjectARX):
1. определить какие объекты нужно подвергнуть преобразованию (выделение) 2. определить границы (диапозоны координат по каждой из осей) трехмерной области 3. определить разрешающую способность результирующей таблицы ТЕ какой объем векторного пространства будет отображатся на одну ячейку таблицы-результата. чем больше ячейка - тем проще считать, но хуже детализация, чем меньше ячейки - тем больше операций счета и памяти требуется, но детализация лучше. 4. выделить память под таблицу, определить функции для преобразования координат из векторного пространства в дискретные координаты таблицы. каждая ячейка таблицы работает по принципу аккомулятора(накопителя): она хранит значения("цвета") объектов пересекающихся с ней и вес - долю объема ячейки которую занимает объект. 4. а вот самое интересное тут. нужно пройти по списку объектов полученных в пункте 1, найти ячейки таблицы которые содержат этот объект и вычислить "влияние" объекта на эти ячейки. ТЕ если стена дома имеет "цвет" C1 и занимает половину объема ячейки, то добавляем в аккомулятор ячейки значения цвета и долю объема, в данном случае 0.1 - подробности этого пункта зависят от того какие типы объектов Вы используете, и других подробностей. здесь потребуется привлечь достаточно много математики. 5. по окончании сканирования объектов в ячейках будут данные о влиянии объектов на них, можно вычислить средне-весовое этих данных и сохранить массив данных в любом по информации: как получить список объектов, как получить доступ к ним: http://arxdummies.blogspot.com/2005/...tion-sets.html метод луча, для определения принадлежности точки многоугольнику (может помочь с пунктом 4): http://ru.wikipedia.org/wiki/%D0%90%...B8.D1.82.D0.BC |
|||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
Цитата:
lene-caress, спасибо! Я так понимаю, что невозможно просто пройтись по осям и узнать значения каждой точки через Object ARX. Впринципе, мне без разницы что использовать: ARX или что-либо ещё. В любом случае, постораюсь разобраться по предоставленному Вами плану. Последний раз редактировалось Lazerus, 11.07.2010 в 22:13. |
|||
![]() |
|
||||
Регистрация: 27.06.2010
Сообщений: 6
|
Цитата:
дело, однако, не в ObjectARX а в том, что acad оперирует векторными данными, в то время как Вам требуются данные по структуре похожие на растр, только трехмерные. |
|||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
А Вы занимаетесь с ARX? Если "Да", то не моглибы привести пример? Конкретно интересуют координаты объекта, размер, расположение. Я в любом случае буду пытаться разобраться сам, но всёже при наличии примера былобы быстрее.
|
|||
![]() |
|
||||
Offtop: Чем-то напоминает манеру письма Павла Лукьянченко...
|
||||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 27.06.2010
Сообщений: 6
|
как я уже говорила, вот тут описан способ получения списка объектов.
http://arxdummies.blogspot.com/2005/...tion-sets.html в самом конце заметки дан исходный код, который по полученному ads_name получает сначала AcDbObjectId, а потом получает сам объект (AcDbEntity*) с помощью функции acdbOpenAcDbEntity если проводить аналогии (немного кривые) AcDbObjectId похож на первичный ключ (primary key) в реляционных СУБД. а функция acdbOpenAcDbEntity позволяет получить доступ к объекту идентифицируемому ключем. полученный AcDbEntity можно преобразовать к нужному типу объекта, но поскольку тип зарание не известен, то получается: * либо пробовать преобразовать для каждого обрабатываемого нашей программой типа, * либо как-то идентифировать что за объект у нас есть. в предках AcDbEntity есть класс AcRxObject у него есть метод desc() этот метод возвращает AcRxClass, у него есть метод name(), который возвращает строковый идентификатор типа объекта для объекта AcDbLine это будет строчка "AcDbLine" в любом случае, если нам нужно попробовать привести AcDbEntity к типу пригодному для обработки. пусть наш объект в переменной: AcDbEntity *ent ... либо воспользовавшись данными ent->desc()->name() либо методом "квазинаучного тыка" пробуем преобразовать объект к типу AcDbLine: Код:
что касается функций из AcDb* здесь проблем быть не должно они описаны в документации (ObjectARX Reference) и достаточно понятны. лично у меня вечные проблемы с написанием пользовательского интерфейса и т.п. Последний раз редактировалось Кулик Алексей aka kpblc, 12.07.2010 в 07:01. |
|||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Вы говорили, что все затевается для "рассчёта теплообмена здания, и учётом объектов внутри здания."
Может имеет смысл рассказать вкратце, что за программа будет делать этот расчет и какие входные данные её требуются? Просто невозможно просмотреть все точки трехмерного пространства в принципе, поскольку их бесконечное множество. Тут дискретизация требуется ( о чем говорила lene-caress). Но можно ведь и по другому подойти. Собрать все объекты в набор и проанализировать каждый из них. Ведь получить сведения о характерных точках, ребрах и гранях можно непосредственно из объектов не сканируя вдоль и поперек трехмерное пространство. Есть шанс, что вам предложат иной подход к решению, если будет достаточно информации о входных требованиях программы теплового расчета.
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
![]() |
|
||||
Регистрация: 11.07.2010
Сообщений: 24
|
Цитата:
|
|||
![]() |
|
||||
это только кличка Регистрация: 22.10.2006
Москва
Сообщений: 252
|
Цитата:
Научится работать - это книжка страниц на 800 (какая нибудь "библия"). Научиться программировать на LISP - книжка Н.Н.Полещука (~ 500 стр.) + форум на этом сайте. Научитья ObjectARX - это учебник по языку С++ и год жизни (если с учебником повезет) + справка по ObjectARX и ещё год жизни (если умеете читать по английски) + форум по ObjectARX на сайте caduser.ru. И, наконец, .NET программирование в AutuCAD - требует знаний языка С# (или VB.NET) и самой платформы .NET, знаний классического ObjectARX (поскольку является оболочкой вокруг ObjectARX) и железных нервов, поскольку отвратительно документирована. Вот такие перспективы. С наскоку не решить. Можно ещё нанять программиста...
__________________
...в шее моей жилы железные, и лоб мой - медный... |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
формат Corel'a -> dxf или dwg. Как? | the_sun | Прочее. Программное обеспечение | 15 | 07.02.2013 15:10 |
Сконвертируйте пожалуйста CDW (версию не знаю) -> DWG 2006 | vama | Прочее. Программное обеспечение | 1 | 22.10.2009 12:50 |
Пакетный перегон dxf -> dwg возможно ли ? | bdfy | AutoCAD | 4 | 15.11.2006 21:41 |
Хороший конвертер DWG -> JPG | solegs | AutoCAD | 15 | 09.12.2004 18:24 |
dwg 2005 -> dwg 2002. нужна программа | Torero | AutoCAD | 5 | 22.09.2004 14:20 |