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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp в 3D

Lisp в 3D

Ответ
Поиск в этой теме
Непрочитано 02.02.2009, 21:54
Lisp в 3D
eugen81
 
ООО Предприятие "Ирбис"
 
Екатеринбург
Регистрация: 02.02.2009
Сообщений: 45

Доброго времени суток, товарищи!

Помогите, кто может, решить такую проблему: необходимо повернуть объект (блок, примитив и т.д.) в трехмерном пространстве НЕ используя COMMAND и VL-CMDF, желательно оперируя группами характеристик объекта (например 210). Причем так, чтобы выглядело это наглядно, как с командой ROTATE, но вокруг заданой оси, а не только в плоскости XY. Опять же, нельзя менять систему координат
Заранее спасибо!

Последний раз редактировалось eugen81, 03.02.2009 в 21:17.
Просмотров: 13273
 
Автор темы   Непрочитано 03.02.2009, 21:14
#21
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


ах-х-х!!! страница временно недоступна!
eugen81 вне форума  
 
Непрочитано 03.02.2009, 21:18
#22
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


eugen81, лови..
Вложения
Тип файла: rar satmanual.rar (754.7 Кб, 120 просмотров)
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/

Последний раз редактировалось Елпанов Евгений, 16.02.2009 в 22:25.
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 03.02.2009, 21:50
#23
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


Спасибо) с английским я не очень, но разберусь
eugen81 вне форума  
 
Непрочитано 04.02.2009, 11:48
#24
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


http://www.cad.bmstu.ru/index.php?vi...tent&Itemid=25

вот на руском чуток по ACIS
zamtmn вне форума  
 
Автор темы   Непрочитано 04.02.2009, 11:59
#25
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


Спасибо. Так хоть быстрее войду в курс дела
eugen81 вне форума  
 
Непрочитано 04.02.2009, 12:06
#26
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>eugen81
если не секрет нафига связался с солидами?
zamtmn вне форума  
 
Автор темы   Непрочитано 04.02.2009, 12:21
#27
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


Не секрет. Если я собираюсь писать приложение, которое, возможно, претендует на полноценную надстройку к автокаду, то азы 3д я точно должен знать
Да и вопрос собственно встает таким образом. Труба - это ведь цилиндр, хоть и условно. Для выполнения модели теплового узла - вполне достаточно. Остается проблема программного изменения параметров этой трубы - диаметра, длины, расположения в пространстве.
И если я уж начал оперировать блоками на таком уровне, что вставляю, ориентирую, выдергиваю атрибуты через функции доступа к примитивам, то желательно и параметрами других солидов начиться управлять на том же уровне

Последний раз редактировалось eugen81, 04.02.2009 в 12:30.
eugen81 вне форума  
 
Непрочитано 04.02.2009, 12:23
#28
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


3d и солиды между собой не связаны. вполне можно обойтись без них
zamtmn вне форума  
 
Непрочитано 04.02.2009, 12:30
#29
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


eugen81, ты идешь в неверном направлении, зайдешь в темный лес SAT, а результата не будет.

Хочешь всерьез сделать 3D хотя бы для труб и всего, что с ними связано? Не заморачивайся с DXF-кодами!

Покажу несколько картинок. Всё, что там смоделировано - только на LISP, там нет вообще блоков, только солиды. Даже насос - один солид. Нигде DXF-кодов применять не пришлось.

Вот на чем сосредотачивай усилия:

1. Библиотека функций для 3D, основанная на векторах. Чтоб любую точку в пространстве можно было определить так же просто, как с помощью polar на плоскости.

2. Интерфейс пользователя. Сначала - выбор требуемого изделия (в картинках пример иллюстрированного меню). Потом - удобная трассировка в пространстве. Чтобы минимум ввода в виде координат, а побольше выборов указанием на направления.

3. Стыковка элементов. Если уже есть труба, а на ней надо поставить задвижку, задвижка должна полуавтоматом пристыковаться к концу трубы, а потом уже у неё интерактивно надо задать направление шпинделя. Именно визуальным вращением, только в 3D и вокруг оси трубы. Если уже есть труба, и под неё надо подставить опору (см. рис), то надо только указать точку на оси трубы (ось должна быть, а саму трубу надо уметь на этот момент скрыть ( чтоб ось увидеть), и опора должна сама нарисоваться вниз на заданную высоту.

Вот в этом направлении надо усилия направлять.
Миниатюры
Нажмите на изображение для увеличения
Название: chamber_005.jpg
Просмотров: 128
Размер:	55.5 Кб
ID:	15526  Нажмите на изображение для увеличения
Название: pump_004.jpg
Просмотров: 108
Размер:	62.5 Кб
ID:	15527  Нажмите на изображение для увеличения
Название: ru_3d_pole.jpg
Просмотров: 108
Размер:	29.5 Кб
ID:	15528  Нажмите на изображение для увеличения
Название: ru_3d_pump_k.jpg
Просмотров: 101
Размер:	15.6 Кб
ID:	15529  Нажмите на изображение для увеличения
Название: ru_xml_ballorex.png
Просмотров: 106
Размер:	21.8 Кб
ID:	15530  

ShaggyDoc вне форума  
 
Непрочитано 04.02.2009, 12:31
#30
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от zamtmn Посмотреть сообщение
3d и солиды между собой не связаны. вполне можно обойтись без них
Очень глубокая мысль....Читал...Долго думал....
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 04.02.2009, 13:03
#31
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


ShaggyDoc, именно этого я и хочу добиться. Я лиспом начал заниматься только три месяца назад и то с большими перерывами ввиду большой загруженности на работе.
Управление блоком через DFX коды показалось мне довольно удобным. Из блока с помощью DFX я легко выдергиваю атрибуты, в которых записан условный диаметр той же задвижки, ее монтажная длина, с помощью которой программно вычисляется точка вставки следующего объекта.
И хоть меню выбора объекта у меня не так красиво как у вас но выбор происходит только из Ду предыдущего объекта. То есть если труба была Ду50, то я не смогу вставить задвижку DN80 без перехода.
Мне кажется, блоки тем и хороши, что позволяют хранить необходимую информацию внутри самого блока. Но к сожалению трубу, у которой изменяемая длина, я не могу вставить блоком. Знаний пока мало. Поэтому и залез в солиды.
eugen81 вне форума  
 
Автор темы   Непрочитано 04.02.2009, 13:15
#32
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


ShaggyDoc, не могли бы вы показать кусок рабочего кода, где к концу трубы вы вставляете задвижку и ориентируете ее вокруг оси?
eugen81 вне форума  
 
Автор темы   Непрочитано 04.02.2009, 13:37
#33
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


И еще:
Допустим, что необходимо укоротить какой-то кусок трубы, после которой вы повесили арматуру и еще много всякого добра. То есть после укорачивания так же должны будут сдвинуться по оси все объекты. Каким образом вы это реализуете, используя солиды?
eugen81 вне форума  
 
Непрочитано 04.02.2009, 14:07
#34
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Очень глубокая мысль....Читал...Долго думал...
ИМХО. солиды в автокаде вещь не родная. имеется для "галочки"
по вашему работать с 3д - везде где надо и не надо тыкать солиды?

>>Покажу несколько картинок. Всё, что там смоделировано - только на
>>LISP, там нет вообще блоков, только солиды. Даже насос - один
>>солид. Нигде DXF-кодов применять не пришлось.
вот именно - картинок. при таком подходе возникнут сложности с хранением неграфической информации - dy труб у вас где хранится? а если понадобится чтото поменять - колено в трубу какуюнибудь врезать? солид заново пересоздавать?
zamtmn вне форума  
 
Непрочитано 04.02.2009, 14:32
#35
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от eugen81 Посмотреть сообщение
ShaggyDoc, не могли бы вы показать кусок рабочего кода, где к концу трубы вы вставляете задвижку и ориентируете ее вокруг оси?
Без проблем. Если поможет:

Код:
[Выделить все]
(ru-3d-valve-gate-simple  (ru-3d-pipe-flange-std-100-16)  230.0 523 200)
Это задвижка Ду 100. Такой код вставлен в меню (иллюстрация в моем предыдущем посте). Вот этот код и прилепляет здавижку к трубе и вращает её. Если понадобится, допустим, задвижка Ду 200, то уже обычный пользователь уровня "смышленая тетка" скопирует эту строчку, исправит аргументы и будет уже иметь и программу моделирования задвижки Ду 200:

Код:
[Выделить все]
(ru-3d-valve-gate-simple  (ru-3d-pipe-flange-std-200-16)  330.0 900 280)
А вот чтобы добиться такой конечной простоты, надо начинать с того, что я написал в #29 - делать библиотеку функций, а не мучиться с частным случаем.

Если я начну сейчас расшифровывать приведенные высокоуровневые функции до самого "низа", т.е. до штатных средств Автокада, это будет длинная цепочка и займет много страниц. Это более 400 связанных между собой отдельных функций, каждая из которых делает своё дело.

Сам момент вращения очень прост:

Код:
[Выделить все]
(vl-cmdf "_.ROTATE" selection "" (trans pnt 0 1) pause)
А вот его окружение, "предварительные ласки", чтобы обычная команда ROTATE заработала в 3D, да как надо - требует дополнительных функций-оболочек.

Код:
[Выделить все]
Допустим, что необходимо укоротить какой-то кусок трубы, после которой вы повесили арматуру и еще много всякого добра. То есть после укорачивания так же должны будут сдвинуться по оси все объекты. Каким образом вы это реализуете, используя солиды?
А я это и не реализую. "Я не буду глотать столько попугаев".

Подобные вещи реализуются только при использовании CUSTOM-объектов на ObjectARX. Создается не просто 3DSOLID, а совершенно новый класс, отсутствующий в "голом" AutoCAD - под названием, например, PIPE. Такой объект имеет свойства наподобие наружного диаметра, толщины стенки, длины. А также обладает способностью изменять свою геометрию при сдвижке смежных объектов. А смежные объекты, такие как СТЕНА, умеют "протыкаться" при прохождении через них трубы. Это продукты класса MEP, ADT, ABS (куча, меняющая свои названия по мере развития).

Но, если мы можем построить трубу средствами обычного LISP одним щелчком по оси трубы, так нам, при изменении геометрии проще эту трубу стереть, укоротить или удлинить ось, а потом одним щелчком заново построить.
ShaggyDoc вне форума  
 
Непрочитано 04.02.2009, 14:42
#36
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381


Цитата:
Сообщение от zamtmn Посмотреть сообщение
по вашему работать с 3д - везде где надо и не надо тыкать солиды?
Я разве написал, что надо втыкать, куда не надо? "Втыкать" вообще надо только то, "что надо" и "куда надо". Если кто-то куда-то не туда втыкает, не надо подозревать других

Цитата:
вот именно - картинок. при таком подходе возникнут сложности с хранением неграфической информации - dy труб у вас где хранится? а если понадобится чтото поменять - колено в трубу какуюнибудь врезать? солид заново пересоздавать?
Родной, сделай такие картинки, покажи, а потом и поговорим. И про где что хранится, где Ду, где Ру, и про подходы, и про отходы, и как врезать.
ShaggyDoc вне форума  
 
Непрочитано 04.02.2009, 14:47
#37
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Родной, сделай такие картинки, покажи, а потом и поговорим. И про где что хранится, где Ду, где Ру, и про подходы, и про отходы, и как врезать

Для создания таких картинок есть гораздо более удобные средства чем автокад+лисп. Ни сколько не умаляю Ваших трудов при разрабоке программы, но это не более чем красивые картинки
zamtmn вне форума  
 
Автор темы   Непрочитано 04.02.2009, 15:27
#38
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


Давайте только не будем устраивать войну из-за различных подходов к моделированию

ShaggyDoc: на мой взгляд работа с блоками и DFX кодами тем и удобна, что удобно хранить и извлекать неграфическую информацию из самих объектов. Можно было бы хранить ее, скажем, в отдельной базе данных, но тогда возникла бы проблема синхронизации этой базы с солидами.
Так же возникает вопрос. Открываем новый чертеж проекта, который необходимо наполнить. Как я понял, все ваши солиды формируются на ходу, то есть каждый раз обсчитываются при вставке.
Тогда опять возникает проблема, которая часто имеет место в процессе создания проекта. Заказчик вдруг понимает, что на устанавливаемое оборудование у него не хватает денег, просит вставить что-нибудь попроще. А это что-то попроще вдруг имеет другие установочные размеры. Или что еще хуже - делать реконструкцию узла, когда здание разобрано на половину. По рабочему проекту строителей планировка помещения будет такая, а на самом деле сделают все по другому.
А вручную перерисовывать трубы и другую атрибутику в новых местах - это, извините, геморой, от которого руки опускаются.
Моя цель - тупо в списке оборудования меняешь объект на новый, указываешь мышью объекты, которые необходимо подвинуть, и просто говоришь программе "действуй".
В случае использования DFX - правятся нужные группы и все. они сами встали на свое место. при использованиии солидов - приходится перерисовывать все заново.
Да и код, если его развернуть до функций автокада с использованием DFX и готовых блоков занимает гораздо меньше места, чем вы сказали, что облегчает его проверку и модификацию в случае необходимости.

Но с другой стороны есть и такие ситуации, где блоки, как и DFX коды бесполезны, или по крайней мере применять их было бы делом не оправдывающим себя. Так что всегда надо искать компромисс

Последний раз редактировалось eugen81, 04.02.2009 в 19:47.
eugen81 вне форума  
 
Автор темы   Непрочитано 04.02.2009, 15:30
#39
eugen81

ООО Предприятие "Ирбис"
 
Регистрация: 02.02.2009
Екатеринбург
Сообщений: 45
<phrase 1=


А за ObjectARX - отдельное спасибо. Обязательно посмотрю, что это такое
eugen81 вне форума  
 
Непрочитано 04.02.2009, 21:28
#40
Кулик Алексей aka kpblc
Moderator

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


Неграфическую информацю как из DXF кодов извлекать - удовольствие весьма сомнительное (сугубо ИМХО). Особенно учитывая непредсказуемый объем информации.
По задаче работы с трубами и арматурой: если ты еще не сильно завязан на AutoCAD, посмотри AutoCAD MEP или Revit MEP. Времени на изучение потратишь вряд ли больше, но большинство "хотелок" там реализовано, как мне кажется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp в 3D

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструирование в 3D Serz AutoCAD 87 28.10.2014 10:40
Lisp Как поставить диаметр отверстия на 3D solidе P4s8x LISP 4 06.11.2008 19:31
Как тело построенное 3D Face превратить в 3D Solid? Bdod AutoCAD 37 03.08.2006 11:36
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19