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

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

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

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

Всем привет!
В свободное время делаю для себя небольшую 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 версии не менее 2.0.10 на базе FPC версии не менее 3.2

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

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

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

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


Последний раз редактировалось zamtmn, 08.07.2020 в 00:19.
Просмотров: 117817
 
Непрочитано 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"В
Сообщений: 12,190


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

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


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


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

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


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


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


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

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


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


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


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

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

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

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


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

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


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

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


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


Цитата:
Сообщение от 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
Сообщений: 4,383


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


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


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

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


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

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


Цитата:
Сообщение от 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
Сообщений: 4,383


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


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


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

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


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


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


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


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

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

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


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


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


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

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


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


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

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

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

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