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

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

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

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

Всем привет!
В свободное время делаю для себя небольшую 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 Кб, 561 просмотров)


Последний раз редактировалось zamtmn, 09.09.2022 в 20:53.
Просмотров: 209330
 
Автор темы   Непрочитано 21.09.2018, 21:33
#301
zamtmn

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


>>надо просто включить приметив точку, и программно определять, если внутри блока есть точка то привязываемся только к ней
Это совсем неуправляемый способ, так можно делать уже сейчас
zamtmn вне форума  
 
Непрочитано 21.09.2018, 22:25
#302
veb86

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


Цитата:
Сообщение от zamtmn Посмотреть сообщение
Это совсем неуправляемый способ, так можно делать уже сейчас
Не сразу допер что ты имел в виду в сообщении №297, еще раз перечитал, потупил, подумал,перечитал и полностью с тобой согласен. Твой варианты гораздо интересней
veb86 вне форума  
 
Автор темы   Непрочитано 01.10.2018, 22:12
1 | #303
zamtmn

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


Попримитивное отключение привязок заработало
Миниатюры
Нажмите на изображение для увеличения
Название: osnapmode.png
Просмотров: 210
Размер:	29.0 Кб
ID:	206636  
zamtmn вне форума  
 
Непрочитано 01.10.2018, 22:24
#304
bigden


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


программа только на английском?
bigden вне форума  
 
Непрочитано 01.10.2018, 22:50
#305
veb86

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


Цитата:
Сообщение от bigden Посмотреть сообщение
программа только на английском?
У Zcad-a есть языковая проблема чисто русский язык выбрать не получится все равно часть интерфейса останется на английском, и на оборот.
Как по мне, так русского в ней больше
veb86 вне форума  
 
Автор темы   Непрочитано 02.10.2018, 04:42
#306
zamtmn

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


bigden
Система локализации есть, но в актуальном состоянии она не поддерживается

----- добавлено через ~56 мин. -----
Похоже значение по умолчанию для контроля привязок лучше сделать asowner, сейчас сделал on, но это выльется в большое редактирование бд блоков, с asowner редактировать гораздо меньше
zamtmn вне форума  
 
Автор темы   Непрочитано 03.10.2018, 08:25
#307
zamtmn

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


Ну и чтоб совсем было хорошо добавил переменную DWG_OSModeControl:Boolean - false: "попримитивное" управление привязками отключено - работает как в автокаде, true: учитываются настройки каждого примитива. Для удобного переключения - ассоциировал с ней кнопку "OSC" в статусбаре
zamtmn вне форума  
 
Непрочитано 03.10.2018, 08:52
#308
Marsikus

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


По умолчанию - false?
__________________
energokot.blogspot.com
Marsikus вне форума  
 
Автор темы   Непрочитано 03.10.2018, 09:12
#309
zamtmn

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


Да, но ее значение мохраняется между сесиями при сохранении параметров
zamtmn вне форума  
 
Непрочитано 03.10.2018, 11:12
#310
frostmourn


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


А есть готовая сборка? По ссылкам не нашёл.
frostmourn вне форума  
 
Автор темы   Непрочитано 03.10.2018, 11:55
#311
zamtmn

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


https://yadi.sk/d/pP2dWkj_wg2MHw еще не тестировалось. С проблемами или сюда или на багтрекер гитхаба
zamtmn вне форума  
 
Автор темы   Непрочитано 08.10.2018, 07:07
#312
zamtmn

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


Появилась возможность назначать разные сочетания клавиш на действия, например кусок конфига cad\menu\actionscontent.xml:
Код:
[Выделить все]
      <ZAction Name="ACN_COPY" Command="Copy" Img="copy" Caption="Copy" Hint="Copy primitives" SecondaryShortCuts="C"/>
      <ZAction Name="ACN_MOVE" Command="Move" Img="move" Caption="Move" Hint="Move primitives" ShortCut="CTRL+SHIFT+M" SecondaryShortCuts="M"/>
      <ZAction Name="ACN_ROTATE" Command="Rotate" Img="rotate" Caption="Rotate" Hint="Rotate primitives" ShortCut="CTRL+SHIFT+R" SecondaryShortCuts="R"/>
      <ZAction Name="ACN_SCALE" Command="Scale" Img="scale" Caption="Scale" Hint="Scale primitives" ShortCut="CTRL+SHIFT+S" SecondaryShortCuts="S"/>
параметр ShortCut - основной шорткат который будет отображаться в меню, SecondaryShortCuts несколько дополнительных шорткатов, разделенных "|". Пока активна командная строка, буквенные шорткаты крадутся ей, если ее закрыть - работать становится очень удобно. Надо делать механизм быстрого дисабленья-енабленья командной строки и гдето подглядеть грамотную раскладку хоткеев.
zamtmn вне форума  
 
Непрочитано 08.10.2018, 08:06
#313
Marsikus

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



В AutoCAD? )
__________________
energokot.blogspot.com
Marsikus вне форума  
 
Непрочитано 08.10.2018, 08:08
#314
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,598


Цитата:
Сообщение от Marsikus Посмотреть сообщение
В AutoCAD? )
Вообще-то топик посвящен не ACAD'у.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 08.10.2018, 09:11
#315
Marsikus

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вообще-то топик посвящен не ACAD'у.
Я про подглядеть.
__________________
energokot.blogspot.com
Marsikus вне форума  
 
Автор темы   Непрочитано 08.10.2018, 12:01
#316
zamtmn

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


В автокаде все давно подсмотрено. режим работы с командной строкой, хоткеи вида ctrt+...
Я хочу "быстро отключаемую-включаемую" командную строку, чтоб и однобуквенные хоткеи работали, и чтото ввести можно было - например длину полярной трассировки.
Естественно это настраиваемо - хочешь как в автокаде работаешь, хочешь както похитрее

Также есть мысли по двухбуквенным хоткеям, напрямую lcl их неподдерживает, но сделать должно быть нетрудно. Вопрос только нужно ли. Двухбуквенные хоткеи например в кукаде во все поля, но имхо неочень удачно
zamtmn вне форума  
 
Автор темы   Непрочитано 11.10.2018, 01:44
#317
zamtmn

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


Отключение комстроки https://imgur.com/a/0vbQz89
zamtmn вне форума  
 
Автор темы   Непрочитано 14.10.2018, 23:41
#318
zamtmn

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


Приделал управление контролем "множественного" запуска программы - параметр "Unique instance" на вкладке "Система"
True - Запуск новых копий программы не происходит, параметры запуска (например открываемый файл) отдаются уже запущеной копии с "Unique instance"=true
False - каждый раз запускается новая копия программы
Данный параметр можно принудительно отключить параметром запуска в комстроке 'NOTCHECKUNIQUEINSTANCE' или 'NCUI'

Фича просилась давно, но было лень делать механизм раннего сохранения/чтения параметров - существующий работает гораздо позже чем осуществляется проверка повторного запуска. Сделал, появился новый конфигурационный файл - zcad/rtl/config.xml

----- добавлено через ~23 ч. -----
Проверил возможность сборки на Lazarus2.0RC1&FPC3.0.4 - работает! Теперь можно не плясать с бубном собирая транковые версии компилятора и среды, а поставить релиз (на данный момент релиз кандидат) лазаруса и потыкать палочкой зкад))
единственное, изза отсутствия в fpc 3.0.4 пакета компилятора rtl-generics пришлось его оформить лазарус пакетом.
соответственно при использовании fpc 3.0.4 нужно доставить
cad_source\other\rtl-generics_for_FPC304 - это rtl-generics из транка
при использовании транкового компилятора нужно поставить
cad_source\other\rtl-generics_dummy\ - это пустая заглушка чтоб лазарус не ругался
чуть более подробная инструкция по сборке - https://github.com/zamtmn/zcad#build-from-source

Теперь буду стараться поддерживать совместимость с релизами, пока в транках не появится ченить вкусного))
zamtmn вне форума  
 
Автор темы   Непрочитано 23.10.2018, 08:50
1 | #319
zamtmn

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


https://github.com/zamtmn/zcad/releases/tag/0.9.8.4 Релиз с последними изменениями
zamtmn вне форума  
 
Автор темы   Непрочитано 06.02.2019, 18:01
#320
zamtmn

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


Понадобился контрол для вставки блоков в чертеж.
Думаю какой сделать: некую древовидную структуру или в виде палитры как в автокаде.
Где можно подглядеть удачные реализации вставки блоков из библиотеки?
zamtmn вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Создание CAD программы с нуля

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

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