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

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

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

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

Всем привет!
В свободное время делаю для себя небольшую 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, HATCH
  • некоторые потуги автоматизации слаботочных разделов проекта
Cтраничка программы на SourceForge
Cтраничка программы на GitHub
Cтраничка программы на Ohloh

Программа пишется на паскале, компилируется в Lazarus/FPC. Исходный код открыт и лежит в SVN репозитории Git репозитории
Текущую сборку программы можно взять тут, но лучше тут (более менее свежие сборки для Windows_x86 и для Linux_x86_64, другие - стареханькие). Для работы требуется аппаратная поддержка OpenGL на целевом компе
Также программу можно собрать самомтоятельно, для этого понадобятся:
  • релизный Lazarus версии не менее 2.0.10 на базе FPC версии не менее 3.2

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

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

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


Последний раз редактировалось zamtmn, 09.09.2022 в 20:53.
Просмотров: 208436
 
Автор темы   Непрочитано 07.12.2016, 06:52
#201
zamtmn

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


>>так для этого и писал
Проблема не тут. Простой пример:
Например есть кабель питающий прибор ARK1. Начинается он на шкафе распределительном ШР1, заканчивается на ARK1.
На чертеже это выглядит так: на плане первого этажа "кусок" кабеля от ШР1 до стояка, на плане второго этажа "кусок" кабеля от стояка до символа разрыва, на виде от символа разрыва до блока ARK1.
Т.е. фактически кабель состоит из 3х примитивов - 2 на планах, 1 на виде. причем на планах масштаб например 1:100, а на виде 1:50.
Получается для 2х кусков на планах масштабный коэффициент хранится централизовано 1:100, а третий кусок на виде имеет его локальное "переопределение" 1:50.
Таких ситуаций вынуждающих некоторые свойства хранить локально может быть очень много, поэтому тупо взять и вынести все куда то в "центр" не получилось.
"Путаница" возникает тут - пользователь выделил 3й кусок кабеля на "виде", в инспекторе появился его масштаб 1:50 - пользователь должен помнить что он видит и редактирует "локальное" переопределение а не "глобальное" значение.
Пока в качестве "решения" рассматриваю по разному раскрасить "локальные" и "глобальные" параметры в инспекторе

Последний раз редактировалось zamtmn, 07.12.2016 в 07:00.
zamtmn вне форума  
 
Непрочитано 07.12.2016, 09:19
#202
veb86

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>так для этого и писал
Проблема не тут. Простой пример:
Например есть кабель питающий прибор ARK1. Начинается он на шкафе распределительном ШР1, заканчивается на ARK1.
На чертеже это выглядит так: на плане первого этажа "кусок" кабеля от ШР1 до стояка, на плане второго этажа "кусок" кабеля от стояка до символа разрыва, на виде от символа разрыва до блока ARK1.
Т.е. фактически кабель состоит из 3х примитивов - 2 на планах, 1 на виде. причем на планах масштаб например 1:100, а на виде 1:50.
Получается для 2х кусков на планах масштабный коэффициент хранится централизовано 1:100, а третий кусок на виде имеет его локальное "переопределение" 1:50.
Таких ситуаций вынуждающих некоторые свойства хранить локально может быть очень много, поэтому тупо взять и вынести все куда то в "центр" не получилось.
"Путаница" возникает тут - пользователь выделил 3й кусок кабеля на "виде", в инспекторе появился его масштаб 1:50 - пользователь должен помнить что он видит и редактирует "локальное" переопределение а не "глобальное" значение.
Пока в качестве "решения" рассматриваю по разному раскрасить "локальные" и "глобальные" параметры в инспекторе
А зачем масштаб хранить централизовано, пускай масштаб хранится только локально. Вариант с тем что если локально не переопредели, то брать их централизовано тоже прикольный. Все правильно, реализовать надо и такую и такую возможность. А вообще, я все таки представляю работу с масштабом в виде зон, обвел вид или план супер прямоугольником, и присвоил в нем масштаб, и уже все кабели внутри при построении будут получать масштаб из этого прямоугольника, в локальное хранилище.
veb86 на форуме  
 
Непрочитано 07.12.2016, 09:40
#203
Сергей812


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Получается для 2х кусков на планах масштабный коэффициент хранится централизовано 1:100, а третий кусок на виде имеет его локальное "переопределение" 1:50.
А для этого и придумали листы и видовые экраны с масштабированием в том же акаде)
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 11:00
#204
zamtmn

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


Это всего лишь пример иллюстрирующий проблему. Гдето-чтото придумали... гдето это использовали... гдето не использовали - другой вопрос, проблемы с необходимостью локального хранения некоторых свойств не касается.
zamtmn вне форума  
 
Непрочитано 07.12.2016, 12:03
#205
Сергей812


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


да и собственно что нужно: длина кабеля (с учетом подъемов/спусков и запаса на монтаж) и куда он подходит. Если будет функция, которая будет забирать в центральное хранилище длину кабеля с учетом хранящегося локально в кабеле масштаба - то для дальнейшей обработки и выдачи информации в виде КЖ, спецификации и т.д. этот локальный масштаб особо и не нужен.
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 17:00
#206
zamtmn

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


По большому счету ниче никому ненужно)) но когда доходит до дела - всё состоит из таких "мелочей"
Таже длина кстати тоже есть локальная - для конкретного куска и глобальная - сумма длин кусков и "межстоячного" расстояния
zamtmn вне форума  
 
Непрочитано 07.12.2016, 17:05
#207
Сергей812


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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
По большому счету ниче никому ненужно)) но когда доходит до дела - всё состоит из таких "мелочей"
и в какой момент времени понимаешь - что нужно все бросить и сделать заново по иной идеологии - но жалко) И просто лень)
Сергей812 вне форума  
 
Автор темы   Непрочитано 07.12.2016, 17:20
#208
zamtmn

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


Я не считаю что у меня с идеологией чтото нетак - не усложняю на ровном месте.

Последний раз редактировалось zamtmn, 07.12.2016 в 17:36.
zamtmn вне форума  
 
Автор темы   Непрочитано 10.08.2017, 14:06
#209
zamtmn

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


Давно не брал я в руки шашек))
В lazarus`е появиились более менее рабочие докающиеся тулбары.
В связи с тем что было очень много жалоб на проблемы с изменениием размера главного окна программы связаные с "эмуляцией" тулбаров докающимися формами - переделываю интерфейс на настоящие тулбары.
Теперь выглядит примерно так:

----- добавлено через ~3 мин. -----
http://imgur.com/a/V2jAK настройка и ресайз
Миниатюры
Нажмите на изображение для увеличения
Название: toolbars.png
Просмотров: 179
Размер:	172.3 Кб
ID:	192044  
zamtmn вне форума  
 
Автор темы   Непрочитано 26.08.2017, 17:20
#210
zamtmn

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


"Новый" релиз https://sourceforge.net/projects/zca...atest/download с новым интерфейсом
zamtmn вне форума  
 
Непрочитано 28.08.2017, 18:48
#211
Marsikus

software quality engineer
 
Регистрация: 19.09.2009
Харьков, Украина
Сообщений: 451


Цитата:
Сообщение от zamtmn Посмотреть сообщение
"Новый" релиз https://sourceforge.net/projects/zca...atest/download с новым интерфейсом
Поздравляю с новым релизом!
__________________
energokot.blogspot.com
Marsikus вне форума  
 
Непрочитано 28.08.2017, 20:55
#212
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,064


Цитата:
Сообщение от zamtmn Посмотреть сообщение
"Новый" релиз https://sourceforge.net/projects/zca...atest/download с новым интерфейсом
Я попробовал за запустить - возникает глюк. Отрисованные объекты (отрезки полилинии) пропадают. Если перемещать средней кнопкой модель - становиться видно. Оставляю в покое - пропадают. Видимо глюк графической библиотеки. Система windows 7x64.
А Вы программу вообще с нуля пишите или какие-то библиотеки в качестве основы брали?
База данных для хранения объектов чертежа своя или сторонняя?

Последний раз редактировалось ProjectMaster, 28.08.2017 в 21:01.
ProjectMaster вне форума  
 
Автор темы   Непрочитано 28.08.2017, 22:44
#213
zamtmn

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


>>возникает глюк
Поставте драйвера от производителя видеокарты, или включите рендеринг через гди (Рендер\Render backend в инспекторе) перед загрузкой чертежа
Всё свое.
zamtmn вне форума  
 
Непрочитано 28.08.2017, 23:13
#214
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,064


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>возникает глюк
Поставте драйвера от производителя видеокарты, или включите рендеринг через гди (Рендер\Render backend в инспекторе) перед загрузкой чертежа
Всё свое.
Прошу понять меня правильно. Эйнштейну приписывают слова (примерно), что талант заключается в умении приложить все усилия для достижения цели, а гений состоит в умении отказаться от этой цели (несмотря на все усилия) в пользу другой. Может быть, плюнуть и переделать программу на что-то более масштабируемое и универсальное (типа ObjectArx на c++).
На мой взгляд, на авттокадах/нанокадах/брикскадах и т.д. ваша программа могла бы найти больше пользователей.
Я когда-то на старой дельфи пытался создать свой автокад (я конструктор ПГС). Была куча наработок. Хорошо, что дельфа плохо работала с памятью и мне пришлось переучиться на c++. В результате я сэкономил кучу времени на создание уже имеющихся функций и посвятил себя тому, что в существующих программах реализовано плохо, либо совсем не реализовано. Я сэкономил кучу времени.

Последний раз редактировалось ProjectMaster, 28.08.2017 в 23:19.
ProjectMaster вне форума  
 
Непрочитано 29.08.2017, 00:02
#215
Сергей812


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


В третьем нанокаде была похожая ситуация - при масштабировании рабочего пространства нано произвольно решал: что ему при данном масштабе отображать из примитивов, а что нет. Потом побороли эту "фичу" в одном из следующих релизов)
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.08.2017, 00:43
#216
zamtmn

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


ProjectMaster
Про то что не на том пишу я уже устал объяснять)) Это хобби - я не экономлю время и не зарабатываю деньги на этом.

Сергей812
Фича тут в том что дефолтный драйвер opengl в составе windows очень обрезан, я довольно давно выкинул его поддержку - она нужна только для одноразовых смотрельщиков(( решить вопрос раз и навсегда можно написанием directx бакенда отрисовки. но мне это не очень интересно
zamtmn вне форума  
 
Непрочитано 29.08.2017, 00:58
#217
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,064


Цитата:
Сообщение от zamtmn Посмотреть сообщение
ProjectMaster
Про то что не на том пишу я уже устал объяснять)) Это хобби - я не экономлю время и не зарабатываю деньги на этом.
На самом деле, я сам примерно такой. Я думал как сделать, чтобы мой личный автокад работал быстрее автодесковского. Я решил, что нужно создать отдельный поток данных для opengl'а, компилируемых из базы данных графичеких объектов таким образом, чтобы обеспечивать минимальное число вспомогательных операций (типа сначала все линии красные рисуются и т.д.).
И хранение в базе объектов такое, чтобы хранились не сами объекты, а их отличия от предыдущих. Но до реализации так и не дошел. Это означает, что параллельные отрези (которых в чертежах очень много) можно хранить не 6 числами (x1,y1,z1,x2,y2,z2), а только смещением от базового объекта и коэффициентом масштаба (dx, dy, dz).
ProjectMaster вне форума  
 
Автор темы   Непрочитано 29.08.2017, 01:07
#218
zamtmn

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


>>можно хранить не 6 числами
Возможно это имеет смысл при хранении данных на диске, но не внутри программы в озу

У меня ниче такого нет, всё по старинке))
zamtmn вне форума  
 
Непрочитано 29.08.2017, 01:42
#219
ProjectMaster


 
Регистрация: 21.08.2017
Сообщений: 1,064


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>можно хранить не 6 числами
Возможно это имеет смысл при хранении данных на диске, но не внутри программы в озу

У меня ниче такого нет, всё по старинке))
Я вот сейчас пытаюсь в с++ посчитать осадку свайного поля под 4-х секционным 18-этажным зданием на основе текстовых файлов SCAD'а и автоматически сформулировать вторую расчетную схему с новыми коэффициентами постели - это как кросс, только для свай (для тех, кто в теме). А все потому, что не доверяю ни кроссу, ни лире.
Каждый по своему развлекается. :-). Среди электриков почему-то программистов намного больше, чем среди конструкторов. Кстати, прогу пришлось из дельфы как раз переделывать.
Чуть попозже протестирую и народу выложу.

Последний раз редактировалось ProjectMaster, 29.08.2017 в 01:47.
ProjectMaster вне форума  
 
Автор темы   Непрочитано 29.08.2017, 01:57
#220
zamtmn

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


Для такой задачи формошлепство в делфи - идеальный случай. срр тут ненужное усложнение.
Но это имхо и офтоп
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

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

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