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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

Создание CAD программы с нуля

Ответ
Поиск в этой теме
Непрочитано 19.11.2013, 00:29 6 |
Создание CAD программы с нуля
zamtmn
 
КИПиА
 
Tyumen
Регистрация: 21.03.2005
Сообщений: 1,452

Всем привет!
В свободное время делаю для себя небольшую CAD программу - всегда было интересно как это работает внутри.
На данный момент есть следующие наработки:
  • Довольно быстрый OpenGL рендеринг чертежа
  • Кроссплатформенность (Windows/Linux, x86/x64, win/gtk/qt)
  • поддержка подмножества DXF версии 2000
  • поддержка SHX, TTF шрифтов
  • поддержка типов линий
  • поддержка примитивов POINT, LINE, CIRCLE, POLYLINE, LWPOLYLINE, ARC, ELLIPSE, INSERT, TEXT, MTEXT, 3DFACE, SOLID, SPLINE
  • некоторые потуги автоматизации слаботочных разделов проекта
Cтраничка программы на SourceForge
Cтраничка программы на GitHub
Cтраничка программы на Ohloh

Программа пишется на паскале, компилируется в Lazarus/FPC. Исходный код открыт и лежит в SVN репозитории Git репозитории
Текущую сборку программы можно взять тут (более менее свежие сборки для Windows_x86 и для Linux_x86_64, другие - стареханькие). Для работы требуется аппаратная поддержка OpenGL на целевом компе
Также программу можно собрать самомтоятельно, для этого понадобятся:
  • Lazarus версии не менее 1.6 на данный момент нужна последняя версия Lazarus из trunk, FPC версии не менее 3.0.4 FPC из trunk (для получения рабочих транковых версий FPC и Lazarus можно воспользоваться https://github.com/newpascal/fpcupde...eleases/latest этой утилитой, она скачает и соберет у вас на компе нужные версии Lazarus и FPC)
  • SVN клиент чтоб скачать исходные коды (под Windows лучше всего подойдет TortoiseSVN, мануал)
Если Вы соберете zcad для Windows64 также понадобится 64 разрядная версия библиотеки GLU32.DLL (системная не подходит, т.к. старой версии) - прилагаю к этому посту, необходимо будет положить ее рядом с ексешником, заменив идущую в дистрибутиве zcad`а 32 разрядную версию GLU32.DLL

Программа не требует установки и не пишет\читает ничего в системные папки (за исключением TEMP) Под windows не допускаются кирилические (и другие) символы в пути к программе (в путях к dxf файлам допускаются), linux версия такой болезнью не страдает.

Для запуска доступны следующие ключи командной строки:
  • NLL - отключение загрузки файла докинга окон, окна открываются непристыкованными, но докинг работает
  • SI - полное отключение докинга, зкад работает в однооконном режиме (очень недоделанном)
  • UPDATEPO - отключение закрузки локализации, будет запущена английская версия. Также в этом режиме доступна команда обновления файлов локализации
  • NOSPLASH - отключение показа окна загрузки
  • путь/к/файлу.dxf - открыть указанный файл

Любые замечания/предложения приветствуются!

Вложения
Тип файла: zip glu.zip (903.8 Кб, 378 просмотров)


Последний раз редактировалось zamtmn, 16.03.2020 в 01:48.
Просмотров: 108881
 
Непрочитано 20.06.2016, 09:40
#161
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Гм... Вы меня не раз и по-разному сейчас озадачили.
Вы меня тоже озадачали вчера пытался понять OD/BD, читал статью в вашем блоге, и не осилил понять что вы предлагаете, может из-за кривого перевод. можете пример программы привести которая по такой схеме работает, или разложить все по полочкам как для чайников?
Я знаю Ревит, там есть возможность создать объект, придать ему форму, вид. наделить его необходимыми атрибутами, потом что то с этими атрибутами делать - OD/BD про это?
veb86 вне форума  
 
Непрочитано 20.06.2016, 10:38
#162
trir


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


да, только объекты ты сам и придумываешь
trir вне форума  
 
Непрочитано 20.06.2016, 11:05
#163
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 8,101


и что потом делать с ними-тоже)
Сергей812 вне форума  
 
Непрочитано 20.06.2016, 11:36
#164
trir


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


рисуешь, модифицируешь, аналезируешь
trir вне форума  
 
Непрочитано 20.06.2016, 11:50
#165
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Ну тогда в ZCADе это есть, просто отсутствует менеджер создания объектов, зкадовский объект будет представлять из себя графическое обозначение его можно нарисовать и положить в спец место, а затем в спец файле прописать атрибуты. Всю последовательность создания такого объекта я не знаю, ни разу не делал))) Все требует времени... создавать не так удобно как в ревите, но возможно при желании, и в спецификации объекты считаться начнут и на планы удобно вставлять, да и кнопку добавить к ZCADу совсем не сложно, надо пару строчек в один текстовый файл добавить. а на создание менеджера объекта, уйдет уйма времени.
veb86 вне форума  
 
Непрочитано 20.06.2016, 11:55
#166
trir


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


я хочу, что бы мои объекты лежали в БД и я мог редактировать их из любого CAD'а...
trir вне форума  
 
Непрочитано 20.06.2016, 12:06
#167
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Цитата:
Сообщение от trir Посмотреть сообщение
я хочу, что бы мои объекты лежали в БД и я мог редактировать их из любого CAD'а...
По идеи объект в ZCADе на данном этапе больше похож на блок, только умный блок, наверное можно отчасти сравнить с динамическим блоком в автокаде, хранится графическое обозначение в отдельном файле в спец папке, описание объекта в текстовом файле в другой папке. Наверное все это можно поместить в БД, только зачем. Вот есть модуль СПДС у автокада и не только у него. если этого модуля нет в другом каде то фиг вам, а не редактирование. Так и с этой БД будет, зкад с ней работать сможет, а другие Кады кто обучать работе будет?
veb86 вне форума  
 
Непрочитано 20.06.2016, 12:28
#168
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,985


ЩА занимаюсь написанием скриптов под FreeCad. Очень даже удобно.
Причем есть возможность создания своих "элементов" программно...
DEM вне форума  
 
Непрочитано 20.06.2016, 12:56
#169
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Цитата:
Сообщение от DEM Посмотреть сообщение
ЩА занимаюсь написанием скриптов под FreeCad. Очень даже удобно.
Причем есть возможность создания своих "элементов" программно...
Я пробовал в FreeCad нарисовать 100 тыщ отрезков, freecad умирает сразу. Я думаю отрезок это самая простая фигура. Может я что то не так делал. Применительно к проектированию он плохо подходит, он для другого
veb86 вне форума  
 
Автор темы   Непрочитано 20.06.2016, 13:13
#170
zamtmn

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


АлексЮстасу
Цитата:
Вот это меню, которое Вы приложили, Вас выручает, Вам помогает?
Это меню было сделано 6 лет назад http://forum.dwg.ru/showpost.php?p=523919&postcount=89 за это время я непомню чтоб я им активно пользовался((

Цитата:
Вашим меню Вам удобно пользоваться? В нем каталогизировано "ВСЕ"?
Мое меню под мои объекты, с моим форматом "расширеных" данных, в него попадает только то что специально подготовлено. Возможности добавить туда чтото другое нет (если только простые голые блоки)

Цитата:
В этом меню "сотни вариантов" реализованы, втащены? Вы это меню используете? Не застрелимшись?
Нет сотен вариантов там нет)) Грубо говоря в моем меню появится только 1 пункт "труба такаято, по госту такомуто" а "сотни" вариантов диаметров\толщин стенок реализованы подругому, вне меню.

Цитата:
Что с помощью этого меню бд можно делать?
Судя по картинке, выбрав в нем тип объекта, можно просматривать и присваивать значения свойств (у меня - "характеристик") объектов. Свойства==характеристики Вы реализовали средствами XData или XRecord? Или как-то иначе?
В этом "меню" собраны определения блоков (УГО) знакомых зкаду и определения оборудования (набор свойств) знакомых зкаду. УГО из меню можно вставлять в чертеж, оборудование можно добавлять из бд программы к бд чертежа и далеше уже копию из БД чертежа привязывать к объектам на чертеже.
Я не пишу под автокад, xdata\xrecord у меня просто нет. Есть чтото похожее на них. В каждом конкретном случае я советуюсь с своей левой пяткой как реализовать конкретное свойство - засунуть его непосредственно в примитив, или засунуть его в аналог xdata примитива. Поэтому если я буду добавлять например трубы в программу - получится новый примитив "труба" а не полилиния с набором параметров.

Цитата:
Из этого меню бд можно чертить, выбрав нужный тип объекта?
Пока только вставлять УГО и потом добавлять свойства. были мысли по вставке уго сразу с нужным набором свойств, но почемуто не пошло это дело.
zamtmn вне форума  
 
Непрочитано 20.06.2016, 13:33
#171
DEM

YngIngKllr
 
Регистрация: 29.03.2005
СПб
Сообщений: 12,985


Цитата:
Сообщение от veb86 Посмотреть сообщение
Я пробовал в FreeCad нарисовать 100 тыщ отрезков, freecad умирает сразу. Я думаю отрезок это самая простая фигура. Может я что то не так делал. Применительно к проектированию он плохо подходит, он для другого
Мне для МКЭ нуно...
Преобразование МКЭ геометрии в укрупненные блоки....
DEM вне форума  
 
Непрочитано 20.06.2016, 16:57
#172
hexD

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


Цитата:
Сообщение от veb86 Посмотреть сообщение
По идеи объект в ZCADе на данном этапе больше похож на блок, только умный блок, наверное можно отчасти сравнить с динамическим блоком в автокаде, хранится графическое обозначение в отдельном файле в спец папке, описание объекта в текстовом файле в другой папке. Наверное все это можно поместить в БД, только зачем. Вот есть модуль СПДС у автокада и не только у него. если этого модуля нет в другом каде то фиг вам, а не редактирование. Так и с этой БД будет, зкад с ней работать сможет, а другие Кады кто обучать работе будет?
Фу, какой моветон
hexD вне форума  
 
Непрочитано 20.06.2016, 22:02
#173
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Цитата:
Сообщение от hexD Посмотреть сообщение
Фу, какой моветон
Писал на работе, над словами долго не думал, дергали. Обидеть никого не хотел.
veb86 вне форума  
 
Непрочитано 22.06.2016, 02:18
#174
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,800


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Мое меню под мои объекты, с моим форматом "расширеных" данных, в него попадает только то что специально подготовлено. Возможности добавить туда чтото другое нет (если только простые голые блоки)
Ну, да, по мне нужно, чтобы пользователи могли сами формировать описания объектов, добавлять/убирать сам. Т.е. чтобы это было предельно несложно. Заготовки описаний объектов может в идее и мой гипотетический CAD делать. А пользователь сможет дорабатывать.
Цитата:
Сообщение от zamtmn Посмотреть сообщение
Нет сотен вариантов там нет)) Грубо говоря в моем меню появится только 1 пункт "труба такаято, по госту такомуто" а "сотни" вариантов диаметров\толщин стенок реализованы подругому, вне меню.
Гм... Если Ваши "сотни вариантов" определяются характеристиками, то это не разновидности объектов, а различия характеристик.
Цитата:
Сообщение от zamtmn Посмотреть сообщение
если я буду добавлять например трубы в программу - получится новый примитив "труба" а не полилиния с набором параметров.
По мне, чем проще и единообразней, тем лучше для пользователей. Мне кажется, что создания новых объектов, прокси-объектов и т.п. по-возможности нужно всячески избегать.

А что у Вас получается тогда в результате? CAD, т.е. инструмент универсальный, для всех или средство для тематического моделирования?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 22.06.2016 в 03:09.
АлексЮстасу вне форума  
 
Непрочитано 22.06.2016, 16:14
#175
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


извините что лезу в Ваш разговор
Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Ну, да, по мне нужно, чтобы пользователи могли сами формировать описания объектов, добавлять/убирать сам. Т.е. чтобы это было предельно несложно. Заготовки описаний объектов может в идее и мой гипотетический CAD делать. А пользователь сможет дорабатывать.
Я тоже это хочу но это огромный функционал которого нет...

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
По мне, чем проще и единообразней, тем лучше для пользователей. Мне кажется, что создания новых объектов, прокси-объектов и т.п. по-возможности нужно всячески избегать.
Я считаю что нагружать один из элементов электронного черчения (линия, полилинния, круг ...) не стоит, они для черчения. Вот сейчас в зкаде есть кабель, если открыть другим кадом это будет просто полилиния, ни каких прокси-объектов нет. я тоже наверное соглашусь zamtmn что лучше разделить на разные примитивы "труба" и "кабель". Так будет проще с программной стороны.

Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
А что у Вас получается тогда в результате? CAD, т.е. инструмент универсальный, для всех или средство для тематического моделирования?
Сугубо мое личное мнение, в начале что бы начать что то делать грандиозно новое (автоматизированное вычисление, пользовательская расширяемая БД элементов, внутренний простой язык программирования (что бы расчетки самим писать, как в freecad) и т.д.) нужно хотя бы добиться того что есть базового в коммерческих кадах (штриховка, обрезка, растяжка итд). Автор не может охватить все сразу, поэтому если и есть в зкаде тематичность то это вызвано тем что автору хочется автоматизировать свою работу, но при этом не забывая о базовом расширении функционала. Как я понимаю все желающие могут присоединится к проекту и развить свою тематичность в зкаде, проект опенсоурс. я присоединился, поэтому и начал писаться в теме. Несколько месяцев пишу под зкад модуль, планы как у всех грандиозные замахнулся высоко, что выйдет из этого не знаю , но промежуточными результатами доволен. Я электрик, программистом назвать себя могу с большим трудом, развиваю свою тему. А в зкаде развивать можно море всего, в разные стороны... язык программирования быстрый, кодовая структура када удобная, со своими особенностями...
veb86 вне форума  
 
Автор темы   Непрочитано 22.06.2016, 21:55
#176
zamtmn

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


АлексЮстасу
Цитата:
А что у Вас получается тогда в результате? CAD, т.е. инструмент универсальный, для всех или средство для тематического моделирования?
Пока получается 3 сущности - движек, кад и "электрические причиндалы" к каду. Можно использовать отдельно движек, можно движек+кад без электрики. Последнее время ковыряюсь в основном с "универсальной" частью - движком.
zamtmn вне форума  
 
Непрочитано 23.06.2016, 02:23
#177
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,800


Цитата:
Сообщение от veb86 Посмотреть сообщение
тоже наверное соглашусь zamtmn что лучше разделить на разные примитивы "труба" и "кабель". Так будет проще с программной стороны.
Разве не достаточно определить полилинии через расширенные данные как "труба", "кабель" и т.п.? Определить названием типа объекта в поле в расширенных данных "название объекта", где записано "труба", "кабель" и пр. И для трубы в расширенных данных свой набор полей для характеристик, а для кабеля - свой. Что может быть проще и универсальнее?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 23.06.2016, 10:15
#178
veb86

Проектировщик электрических сетей
 
Регистрация: 17.01.2014
Пенза
Сообщений: 156


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Определить названием типа объекта в поле в расширенных данных "название объекта", где записано "труба", "кабель" и пр. И для трубы в расширенных данных свой набор полей для характеристик, а для кабеля - свой. Что может быть проще и универсальнее?
Такое сделать можно, и нагрузить обычную полилинию другой информацией. Но, я так думаю это скажется на размере сохранения файла(лишняя информация будет тоже сохранятся, там где она не нужна), тем более при программировать станет сложнее. Если сейчас ты при программировании выстраиваешь цепочки между электрическими приборами, где связующим является кабель (кабелей на чертеже в любом случае на порядок меньше чем обычных полилиний), то с введением этого универсализма произойдут дополнительные не нужные проверки. Я понимаю что вы хотите получить, я в основном вообще черчу отрезками, а не полилиниями (привычка). И в будущем можно было бы сделать программную конвертацию (отрезок -> кабель) и (полилиния -> кабель) ну и наверное обратная конвертация. Имея возможность конвертировать на лету, необходимость нагружать полилинию отпадет
veb86 вне форума  
 
Непрочитано 23.06.2016, 13:22
#179
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,800


Цитата:
Сообщение от veb86 Посмотреть сообщение
Такое сделать можно, и нагрузить обычную полилинию другой информацией. Но, я так думаю это скажется на размере сохранения файла(лишняя информация будет тоже сохранятся, там где она не нужна), тем более при программировать станет сложнее.
Во многих случаях эта дополнительная информация сведется к названию типа объекта. Опыты показывают, что расширенные данные несильно нагружают файл, и не приводят к заметному торможению в работе.
Что лишнего и "нагружающего" может быть в информации о том, какой объект отображен, и какие у него характеристики? Я-то думаю, что это такая же основная информация, как и геометрия.
Кроме того, при появлении у графики определений объектов появляются новые полезные возможности - поиска по названиям объектов, восстановления графических свойств, если что-то случайно или специально перекрашивали, меняли слои и пр. И ряд других.
Цитата:
Сообщение от veb86 Посмотреть сообщение
Если сейчас ты при программировании выстраиваешь цепочки между электрическими приборами, где связующим является кабель (кабелей на чертеже в любом случае на порядок меньше чем обычных полилиний), то с введением этого универсализма произойдут дополнительные не нужные проверки.
Если связь графика-объект будет встроенной, то что, собственно, проверять?
Цитата:
Сообщение от veb86 Посмотреть сообщение
Я понимаю что вы хотите получить, я в основном вообще черчу отрезками, а не полилиниями (привычка). И в будущем можно было бы сделать программную конвертацию (отрезок -> кабель) и (полилиния -> кабель) ну и наверное обратная конвертация. Имея возможность конвертировать на лету, необходимость нагружать полилинию отпадет
Во-первых, чертить цельные объекты многими отрезками - все равно, как составлять тексты из отдельных букв. Во-вторых, зачем вообще "конвертировать" графику в объекты, если сразу построить черчение с определением графических элементов как объекты?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 23.06.2016, 13:43
#180
trir


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


1. Объекты можно рисовать по разному, в зависимости от ситуации
2. Нужно прописать взаимодействие объектов с другими объектами
trir вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

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

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