MSF - My Steel Fish

....
Начал писать большой проект на Python...
Возлагаю на него очень большие надежды...уже есть некоторые результаты, но пока даже показывать что то рано...Без преувеличения сказать - это будет самая значимая для меня
 разработка...Рабочее название MSF - My Steel Fish.



Моя стальная "рыба"(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 - upd - являюсь сторонником ArchiCad, поэтому про Lisp можно забыть) и вывести их в макет(в автокаде это лист, в арче - макет) - тривиальная задача.

ИТОГО: нужно поменять параметры - открываем MSF - м.б. написана на чем угодно(я Пишу на С#, Python), находим в дереве проекта требуемую отправочную марку, переназначаем ее размеры/параметры, "перемалываем",и в каде получаем обновленный чертеж.
=======================================================================
на 9.04 реализовано:
- функции сцены(добавление объекта, сборки) 
- задание плоскостей проецирования
- функции работы с объектом сцены - поворот/ смещение, масштаб(вот нафига он только?)
- возможность настройки "проецирования" - указание объектов и/или граней/ребер/вершин    которые не будут проецироваться на конкретном виде/сечении.
- получение ортопроекций сборки(набора базовых объектов).
В данный момент работаю над функциями полигонов, алгоритмом раскраски (т.е. отделить видимый и невидимый контур), функциями работы с сортаментом.
Если вас заинтересовала эта тема, вам есть что сказать/показать/предложить - пишите на SabRusEng@gmail.ru 

P|S - проектом MSF занимаюсь полностью, поэтому на тему GDL некоторое время писать не буду, если есть конкретные предложения - пишите.

 

Комментарии

Популярные сообщения из этого блога

GDL. Объект для моделей из "оцилиндрованного бревна"

График функции в полярных координатах?! Легко!

Объект "Plan Marker"