CAD БИБЛИОТЕКА
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум 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 Кб, 376 просмотров)


Последний раз редактировалось zamtmn, 16.03.2020 в 01:48.
Просмотров: 106924
 
Непрочитано 09.01.2020, 07:16
#361
ShaggyDoc

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


Почему бы критикам и советчикам не сделать что-то своё, и не завести собственную ветку "Создание Моей CAD-программы"?
И доказывать верность именно своей концепции практически.

"Не учите меня жить, лучше помогите материально"(С)
ShaggyDoc вне форума  
 
Непрочитано 09.01.2020, 07:53
#362
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Почему бы критикам и советчикам не сделать что-то своё, и не завести собственную ветку "Создание Моей CAD-программы"?
И доказывать верность именно своей концепции практически.
"Не учите меня жить, лучше помогите материально"(С)
Зачем заводить новую ветку? Есть же существующая.
nickname2019 вне форума  
 
Автор темы   Непрочитано 09.01.2020, 12:26
#363
zamtmn

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


>>Имхо, нужен встроенный язык программирования наподобие "лисп".
Нужен, но не прям чтоб позпрез. Этим языком будет pascalscript
zamtmn вне форума  
 
Непрочитано 09.01.2020, 15:20
#364
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>Имхо, нужен встроенный язык программирования наподобие "лисп".
Нужен, но не прям чтоб позпрез. Этим языком будет pascalscript
Интересно. Я не знал, что такая библиотека есть.
nickname2019 вне форума  
 
Непрочитано 09.01.2020, 16:06
#365
veb86

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>>Имхо, нужен встроенный язык программирования наподобие "лисп".
Нужен, но не прям чтоб позпрез. Этим языком будет pascalscript
Я тоже считаю что поддержка скриптового языка сейчас не нужна, все равно реально ей пользоваться никто не будет. Я могу прекрасно работать с исходным кодом ZCADa с перекомпиляцией проекта. Кому захочется и будет желание попробовать силы в ZCADе могут так же все развернуть у себя и кодить.
veb86 вне форума  
 
Непрочитано 09.01.2020, 16:53
#366
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от veb86 Посмотреть сообщение
Я тоже считаю что поддержка скриптового языка сейчас не нужна, все равно реально ей пользоваться никто не будет. Я могу прекрасно работать с исходным кодом ZCADa с перекомпиляцией проекта. Кому захочется и будет желание попробовать силы в ZCADе могут так же все развернуть у себя и кодить.
Это понятно. Я в своем проектике дошел до проблемы создания пользователем визуальных интеллектуальных компонентов, поэтому хотел обсудить пути решения. Универсальное решение - когда пользовательские компоненты интерпретируемым языком описываются, чтобы не обмениваться перекомпилированным исходником программы. На крайний случай - модулями какими-нибудь пользователи обмениваются и нормально. pascalscript- это интересно. Хотя питон - наверно более модно.

Я вообще хотел свой язык назвать "Глагол" - потом глядь, а его уже придумали.

Последний раз редактировалось nickname2019, 09.01.2020 в 17:16.
nickname2019 вне форума  
 
Автор темы   Непрочитано 09.01.2020, 18:13
| 1 #367
zamtmn

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


zcad написан на паскале - паскаль в качестве скрипта - логично. за модой не гонюсь.
Пока у нас логика работы "хитрых" примитивов захардкожена
zamtmn вне форума  
 
Непрочитано 09.01.2020, 21:05
#368
veb86

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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Это понятно. Я в своем проектике дошел до проблемы создания пользователем визуальных интеллектуальных компонентов, поэтому хотел обсудить пути решения. Универсальное решение - когда пользовательские компоненты интерпретируемым языком описываются, чтобы не обмениваться перекомпилированным исходником программы. На крайний случай - модулями какими-нибудь пользователи обмениваются и нормально. pascalscript- это интересно. Хотя питон - наверно более модно.
Поищите информацию как сделана данная программа, автор где то активно дискутировал. https://lep10.ru/index.php Мне данная программа понравилась, как мне кажется все сделано максимально снизив необходимость взаимодействовать со средой CAD.

Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Я вообще хотел свой язык назвать "Глагол" - потом глядь, а его уже придумали.
Мне кажется лучше использовать готовые и проверенные временем вещи.
veb86 вне форума  
 
Непрочитано 10.01.2020, 09:08
#369
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от veb86 Посмотреть сообщение
Мне кажется лучше использовать готовые и проверенные временем вещи.
Да, пока стандарта языка тебе достаточно. Если не достаточно - придется создавать новый. Меня конкретно не устраивает, что для создания пользовательских интеллектуальных графических объектов нужно использовать "тяжелые" компиляторы Visual Studio (ACAD_PROXY_ENTITY, в случае ZCAD - Lazarus и т.д.), а стандарт Lisp не позволяет это сделать простым способом. Освоить Visual Studio (или другой компилятор) может небольшое количество пользователей. Соотвественно, нужно создать другой язык.

https://lep10.ru/index.php - это вероятнее всего достаточно простая программа скорее всего на лисп (или vba) с использованием динамических блоков и атрибутов. Это решается стандартными средствами.

Последний раз редактировалось nickname2019, 10.01.2020 в 15:12.
nickname2019 вне форума  
 
Непрочитано 10.01.2020, 09:32
#370
trir


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


Цитата:
это вероятнее всего достаточно простая программа скорее всего на лисп (или vba) с использованием динамических блоков и атрибутов. Это решается стандартными средствами.
там dotNET + MySQL
trir вне форума  
 
Непрочитано 10.01.2020, 09:52
#371
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от trir Посмотреть сообщение
там dotNET + MySQL
Базу пользователь типа "тетка" или "продвинутая тетка" может сам пополнять?
nickname2019 вне форума  
 
Непрочитано 10.01.2020, 09:53
#372
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
а стандарт Lisp не позволяет это сделать простым способом.
К слову сказать, лисп в Акаде еще дальше от стандарта, чем лисп в емаксе.
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 10.01.2020, 13:47
#373
veb86

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


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
https://lep10.ru/index.php - это вероятнее всего достаточно простая программа скорее всего на лисп (или vba) с использованием динамических блоков и атрибутов. Это решается стандартными средствами.
Ведь по любому здесь сидит разработчик, и вы назвали такое расширение простой программкой, обидели по-любому. Между прочем, это очень крутое расширение для CAD, имеет прекрасный интерфейс и все в ней удобно реализовано.
Работает, я тоже так думаю, на dotNet + БД.
Пользователь "тетка" сможет без особых проблем добавлять и удалять параметры добавленные в блок. Посмотрите видео как там реализовано добавление.

Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Меня конкретно не устраивает, что для создания пользовательских интеллектуальных графических объектов нужно использовать "тяжелые" компиляторы типа Visual Studio (ACAD_PROXY_ENTITY, в случае ZCAD - Lazarus), а стандарт Lisp не позволяет это сделать простым способом.
Я думаю если бы это было просто, то это бы уже сделал сам Аутодеск. У них есть динамические блоки, которые тоже что то там позволяют. И насколько я понимаю в автокаде реализован механизм позволяющий добавлять атрибуты к блоку и много еще чего, чего я незнаю. Как я понимаю, проблема заключается не в том что бы добавить свои параметры к интеллектуальному графическому объекту, а что бы создать программу которая будет их получать и что то с ними делать. А что бы писать программу надо уже обладать большими знаниями чем "продвинутая тетка", потому что как мне кажется, не каждая "продвинутая тетка" сможет делать сложные расчеты в экселль, а там все очень даже просто реализовывается.
veb86 вне форума  
 
Непрочитано 10.01.2020, 13:52
#374
trir


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


Цитата:
использовать "тяжелые" компиляторы типа Visual Studio
Visual Studio не компилятор
trir вне форума  
 
Непрочитано 10.01.2020, 14:24
#375
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от trir Посмотреть сообщение
Visual Studio не компилятор
В состав поставки Visual Studio входят компиляторы.

----- добавлено через ~5 мин. -----
Цитата:
Я думаю если бы это было просто, то это бы уже сделал сам Аутодеск.
Но им это не надо.
Цитата:
У них есть динамические блоки, которые тоже что то там позволяют. И насколько я понимаю в автокаде реализован механизм позволяющий добавлять атрибуты к блоку и много еще чего, чего я незнаю.
Да. Но в лиспе нельзя создать свой Proxy объект.
Цитата:
Как я понимаю, проблема заключается не в том что бы добавить свои параметры к интеллектуальному графическому объекту, а что бы создать программу которая будет их получать и что то с ними делать.
Да. Можно так. А можно создать свой язык типа лиспа, чтобы описывать реакторы объектов и т.д.
nickname2019 вне форума  
 
Непрочитано 10.01.2020, 14:31
#376
trir


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


Цитата:
В состав поставки Visual Studio входят компиляторы.
В состав поставки Windows тоже
trir вне форума  
 
Непрочитано 10.01.2020, 14:32
#377
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от veb86 Посмотреть сообщение
Ведь по любому здесь сидит разработчик, и вы назвали такое расширение простой программкой, обидели по-любому.
Я никого обидеть не хотел. Программа впечатляет в плане производительности. Я имел ввиду, что "просто" - это когда стандартная методика есть.

Да, можно просто взять и рисовать в автокаде (просто), а можно взять и написать свой редактор ZCAD (сложно).
nickname2019 вне форума  
 
Непрочитано 10.01.2020, 14:55
#378
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Да. Но в лиспе нельзя создать свой Proxy объект.
Вам бы, батенька, матчасть подучить и терминологией разобраться, а уж потом на рассуждения о создании языков программирования замахиваться
__________________
На работе было скучно:shout:
ciril вне форума  
 
Непрочитано 10.01.2020, 15:07
#379
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 308


Цитата:
Сообщение от ciril Посмотреть сообщение
Вам бы, батенька, матчасть подучить и терминологией разобраться, а уж потом на рассуждения о создании языков программирования замахиваться
Ладно. Пойду сотру интерпретатор.

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от tri
Visual Studio не компилятор... В состав поставки Windows тоже
Замечание принимается. В посте #369 слово "типа" исключено.
nickname2019 вне форума  
 
Непрочитано 11.01.2020, 08:20
#380
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 144


'Автоматическая обработка данных. Язык лисп и его реализация' Лавров С. С. Силагадзе Г.С.

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

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

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