"виртуальный" 3D CAD / С#, GDL, LISP
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > "виртуальный" 3D CAD / С#, GDL, LISP

"виртуальный" 3D CAD / С#, GDL, LISP

Ответ
Поиск в этой теме
Непрочитано 05.03.2013, 23:26 #1
"виртуальный" 3D CAD / С#, GDL, LISP
SergeyAB
 
Сообщений: n/a

INTRO: не представляю чем закончится обсуждение, надеюсь понять/узнать что-то новое и для себя.

Речь пойдет о проектировании СОФТа(рабочее название MySteelFish - моя стальная "рыба"(MSF), предлагаю так далее и называть) для следующей задачи:

Параметризовать прототипы типовых конструкций и частично(без размеров) автоматизировать получение КМД чертежей конструкции(не здания, не объекта, а одной отправочной марки). Т.е. интерфейсная часть должна предоставить пользователю возможность задать параметры, определяющие геометрию некоторой металлоконструкции(сечения проката, детерминирующие размеры, привязки и кол-во отверстий, ребер, фасонок и.т.п).

Если коротко, то MSF: виртуальный 3D-описатель с возможностью получения ортогональных проекций.
Теперь подробнее - почему виртуальный? птаму что ничего из графических библиотек использовать не планирую(потому что не нужно!) чисто аналитика - геометрия, алгоритмы.

Чтобы стало понятнее - допустим мы хотим получить необходимые виды(проекции и сечения) некоторой композиции 3Д тел, НАПРИМЕР куба и стоящей на нем пирамиды, разве нужно их строить при помощи 3Д(OpenGL, DirectX)? НЕТ! нужно знать их координаты, размеры, задать плоскости проецирования(сечения,виды), аналитически получить проекции в виде набора 2D примитивов, и передать эти примитивы (с аттрибутами - линия:сплошная, штриховая, осевая; штриховка) элементарному алгоритму на лиспе или другом скрипте который есть в любом КАДе - для отрисовки в 2Д.

Т.е. предметная область MSF - заранее определенные(типовые) конструкции, для которых достаточно просто описывается прототип. Ни о каком 3d интерактиве речи не идет. В некоторых случаях прототипом будет являться непосредственно конкретная марка по серии(когда сложно унифицировать описание для всех марок по одной серии)

MSF - не универсальный 3D steel пакет c поддержкой гнутья и всевозможными видами сварки, болтов и кучей сортаментов, все локально и призмеленно. Что-то вроде КОМЕТЫ скада, но с "интеллектом", а не изначально набором 2D.

И в отличии от крутых пакетов вроде эдванс и теклы, задача совершенно иная, и философия тоже, проводимая параллель с этими Монстрами весьма условна, я никоим образом не сравниваю, лучше сказать анализирую, опираюсь на функционал этих пакетов.

И вот что мне думается(или почему Эдванс и Текла - "монстры"):

1. В 99% случаев отечественного проектирования МК - проверка коллизий осуществляется "в голове". И в текле и эдвансе это цена "интерактива" - сами проверяют что у них "на автомате" получилось. читай: НЕНУЖНЫЙ ФУНКЦИОНАЛ В 95%.

2. Философия построения модели "узлами" заставляет для построения чертежа например связи полностью создать колонну, а нафига мне колонна? Да, чтобы и с нее потом КМД получить...читай: ЛИШНЕЕ ВРЕМЯ НА МОДЕЛЛИРОВАНИЕ В 95%.

3. BIM концепция - спецификации соответствуют модели от и до. А значит нужно построить всю модель! В простом случае один тип колонны и один тип ригеля + прогоны - 3 отправочных марки, а сколько весит файл BIM-проекта? читай: полная модель всегда избыточна.А ее редактирование влечет за собой очень много. Да, есть редакции чертежа, куча прочих настроек, автонумерация, бесконечные шаблоны чертежа для каждого вида конструкций...

IMHO - в целом получается неудобный конструктор с очень большим кол-вом настроек, а нужны только лишь чертежи отправочных и схемы.
Т.е. я хочу сказать что сама идея MSF пришла мне в голову как своебразная "ниша" - с одной стороны с относительно несложной реализацией, с другой стороны - как компроммис м/у кучей настроек в монстрах и фактической простотой тех вещей в них, от которых я готов отказаться, а именно:
Схемы расположения,ведомости, образмеривание, нумерация, компоновка листа - это на самом деле не большой труд для конструктора, их совсем несложно чертить и "контролировать". А цена автоматизации этих вещей в Текле и эдванс сделали их крайне не привлекательными, сложными для освоения, цена этой автоматизации - бесконечные глюки.(СУГУБО IMHO). Я же предлагаю безглючный достаточно продуктивный механизм.

Ограничения реализации или что хотелось бы сделать в версии 0.0:
1. Получать видимый невидимый контур
2. задавать любое количество произвольных сечений
3. Сварка - монтажная, заводская, нахлесточный, стыковой тип шва. Никакой подготовки кромок и т.п., это ручками по месту дорисую.
4. Сортамент РФ(нафига мне куча нормативов и расчетов чужих стран? мне там не жить и не работать)
5. 2D Примитивы(круг, линия, текст - для обозначений сечений, узлов)

основная Задача - получение видов(сечений) распадается на:

1. Создать параметрическое описание конструкции, тут потребуется математический парсер с поддержкой пользовательских переменных, функций, синтаксиса условий, циклов. Таких engine я уже насобирал с десяток(в сорцах), окончательно остановился на одной из них.

2. Полученную совокупность исходных данных представить в виде набора вершин и граней с нормалями.

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

(http://www.opita.net/node/29), для небольшой задачи(у нас небольшая задача!) скорость алгоритма не принципиальна.Мы не экшн гейм делаем.

4. Задать набор плоскостей проекций/сечений, дать им имена. Подготовить данные для 2D макета - прототипа будущего чертежа, с учетом размеров и конфигурации проецируемой конструкции, проще говоря расставить "видовые экраны" с учетом полученных размеров проекций

5. Спроецировать набор треугольников с учетом видимости и топологии(самая сложная часть задачи - открытых исходников придется поискать, суть любого ядра - алгоритм раскраски) функция проекции точки есть в любой книжке по машинной графике, как и куча алгоритмов отсечения и пр. Если речь идет о небольшой относительно несложной детали или конструкции то отсечениями можно пренебречь.(можно будет удалить не нужное и руками уже в чертеже в КАДе.)

6. Постобработка проекций - сборка треугольников-проекций в грани.

7. Передача массивов точек-линий-штриховок из набора заданных проекций И данных "макета" в лисп или скрипт требуемого CAD-пакета, посредством xml или txt. Т.о. пока открыт MSF мы можем получать актуальный xml содержащий 2д данные нашей конструкции, а прочитать из него 2д данные скриптом(LISP,GDL) и вывести их в макет(в автокаде это лист, в арче - макет) - тривиальная задача.

ИТОГО: нужно поменять параметры - открываем MSF - м.б. написана на чем угодно(я Пишу на С#), находим в дереве проекта требуемую отправочную марку, переназначаем ее размеры/параметры, "перемалываем",и в каде получаем обновленный чертеж.


Какие будут соображения относительно архитектуры? В чем лучше БД?(сортамент), я пока в экселе держу(аттач - может кому пригодится), идеи по интерфейсу?

Последний раз редактировалось Кулик Алексей aka kpblc, 05.03.2013 в 23:53.
Просмотров: 4227
 
Непрочитано 06.03.2013, 00:50
#2
zamtmn

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


Планируется обертка над чужим csg движком? или разработка своего?
>>Теперь подробнее - почему виртуальный? птаму что ничего из графических библиотек использовать не планирую(потому что не нужно!) чисто аналитика - геометрия, алгоритмы.
Зря, наверно интерактивный 3д редактор при таком подходе не нужен, но возможность хотябы просто рассмотреть\повертеть полученную модель не отходя от кассы ИМХО будет очень полезна. Темболее если всё уже посчитано - визуализация без интерактива не составит большого труда
zamtmn вне форума  
 
Непрочитано 06.03.2013, 09:21
#3
SergeyAB


 
Сообщений: n/a


"движок" - свой, вот в блендере авторы не стали париться - вся невидимая часть объекта усекается и всего то(055), в каркасном режиме наоборот проецируются все грани одинаково(056). Так работают все игровые движки(по 055), отсюда и скорость - невидимые(ну только по нормали которые) грани сразу не проецируются, частично закрытые - проецируются.
Читаю Никулина(http://www.cataloxy.ru/books/1401884...oy_grafiki.htm), еще есть это(057), думаю найду все ответы.

Пока не дошел до работы с невидимой частью в плане - не отсекать, а "работать".

Да, я согласен насчет визуализации, но мой наколеночный опыт говорит о том что придется долго и упорно добиваться нужных 2Д-результатов, так что виз непервостепенен.
Миниатюры
Нажмите на изображение для увеличения
Название: Image 055.jpg
Просмотров: 170
Размер:	137.6 Кб
ID:	98186  Нажмите на изображение для увеличения
Название: Image 056.jpg
Просмотров: 176
Размер:	176.8 Кб
ID:	98187  Нажмите на изображение для увеличения
Название: Image 057.jpg
Просмотров: 139
Размер:	30.6 Кб
ID:	98188  
 
 
Непрочитано 01.08.2013, 10:07
#4
hexD

КМД
 
Регистрация: 26.03.2013
Я ЖЫВУ В РОССИИ.
Сообщений: 506
<phrase 1=


Алилуйа! С Z-порядком разобрался! Обошлось даже без нормалей и триангуляции(сам не ожидал). Да и время просчета приемлимое...Разный цвет - глубина невидимости, принадлежность ребра каждой детали также отслеживается.
Теоретически алгоритм работает и с отверстиями, но пока все под отладкой, настраиваю...дыр в логике тоже хватает...

PS: больше деталей здесь
Изображения
Тип файла: jpg Image 097.jpg (50.2 Кб, 523 просмотров)

Последний раз редактировалось hexD, 01.08.2013 в 17:27.
hexD вне форума  
 
Непрочитано 01.08.2013, 17:54
#5
hwd

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


Купи себе книжку "Алгоритмы. Руководство по разработке." Скиена. Там огромная библиотека алгоритмов + ссылки на библиотеки, в которых эти алгоритмы уже реализованы (бери да юзай).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 05.10.2013, 14:28
#6
hexD

КМД
 
Регистрация: 26.03.2013
Я ЖЫВУ В РОССИИ.
Сообщений: 506
<phrase 1=


уфф...оказалось что у нас не совсем простая задача...но свет в конце тунеля все таки показался...
подробности

теоретически сплайны поддерживаются путем функции GraphicPath.Flattern, но если бы дело было только в этом...
что то более менее серьезное связанное с 3д моделью подразумевает одну неотъемлимую часть - очерковые ребра, а это для меня уже не тривиально...моделлировать трубы семейством плоских граней...не комильфо...так что снова матчасть и опять месяцы отладки...

описание сцены на скрине:

Construction CS3 = new Construction("Экструда");

List<Point2D> mpg1 = new List<Point2D> { new Point2D(22, 20), new Point2D(65, 20), new Point2D(80, 40), new Point2D(65, 50), new Point2D(22, 50) };

List<Point3D> Hole1 = new List<Point3D> { new Point3D(25, 25, 0), new Point3D(60, 25, 0), new Point3D(60, 30, 0),
new Point3D(32, 30, 0), new Point3D(32, 35, 0), new Point3D(38, 35, 0),
new Point3D(38, 43, 0), new Point3D(44, 43, 0), new Point3D(44, 35, 0),
new Point3D(60, 35, 0), new Point3D(60, 45, 0), new Point3D(25, 45, 0) };

List<Point3D> Hole2 = new List<Point3D> { new Point3D(30, 22, 10), new Point3D(60, 22, 10), new Point3D(60, 45, 10),
new Point3D(30, 45, 10)};


List<Point2D> Base21 = new List<Point2D> { new Point2D(10, 10), new Point2D(20, 10), new Point2D(20, 20), new Point2D(30, 20), new Point2D(30, 10),
new Point2D(40, 10), new Point2D(40, 40), new Point2D(30, 40), new Point2D(30, 30), new Point2D(20, 30),
new Point2D(20, 40), new Point2D(10, 40)};


EXTRUDE EXT4 = new EXTRUDE(10, mpg1);
EXT4.CreatePgnOnFace("0", Hole1);
EXT4.CreatePgnOnFace("1", Hole2);
//EXT4.SortRibsOnFace(EXT4.cf);
Detail Det46 = new Detail(3);
Det46.GeomBody = EXT4;

CS3.Details.Add(Det46);

CS3.Views.AddRange(SV.GetRange(7,3));
Миниатюры
Нажмите на изображение для увеличения
Название: финал.png
Просмотров: 83
Размер:	12.3 Кб
ID:	113458  
Вложения
Тип файла: rar Скрины_Сентябрь.rar (1.27 Мб, 40 просмотров)
Тип файла: rar Октябрь.rar (59.5 Кб, 39 просмотров)

Последний раз редактировалось hexD, 05.10.2013 в 14:38.
hexD вне форума  
 
Непрочитано 15.10.2013, 22:20
#7
hexD

КМД
 
Регистрация: 26.03.2013
Я ЖЫВУ В РОССИИ.
Сообщений: 506
<phrase 1=


Хм...вот же непруха...
С 17-ой версии архикад умеет строить невидимый контур...не успел я со своими костылями...
все же странно...почему раньше "не давали" этим пользоваться?
А впрочем какая разница...пойду застрелюсь...
Скоро сниму башнераздирающий видеотутор по созданию КМД в арчике! (Текла и эдванс - ацтой. )

https://www.dropbox.com/s/0zhr944t46...0%B0%D0%B4.rar (Смоделлено за 3 минуты)
Изображения
Тип файла: jpg Image 082.jpg (109.1 Кб, 307 просмотров)

Последний раз редактировалось hexD, 16.10.2013 в 12:42.
hexD вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > "виртуальный" 3D CAD / С#, GDL, LISP



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP - 2D полилинию в 3D Andrej LISP 22 25.04.2019 11:40
LISP. Вывод объема 3D тела. Scorpio_1986 LISP 3 27.02.2010 13:02
Auto CAD Civil 3d 2009 и Windows XP GEONIC Вертикальные решения на базе AutoCAD 8 24.04.2009 18:53
Lisp Как поставить диаметр отверстия на 3D solidе P4s8x LISP 4 06.11.2008 19:31