Страница 1 из 3

Векторный графический редактор

СообщениеДобавлено: 18.11.2023 20:00:41
Warfalomay
Доброго времени суток!
От нечего делать сделал простенький 2D векторный редактор для построения несложных эскизов. Ну, не совсем сделал, до готового еще очень далеко, скажем так, заготовка.
Может кому пригодится в виде геометрических алгоритмов и общего принципа работы.
Правда, работает только под Windows (из-за функций WinAPI), если нужно под Linux, то требуется небольшая доработка.
https://disk.yandex.ru/d/G0LrntB5U2lK1w

Re: Векторный графический редактор

СообщениеДобавлено: 23.11.2023 20:20:04
Alex2013
Интересно "буду посмотреть"... :idea:

Re: Векторный графический редактор

СообщениеДобавлено: 24.11.2023 16:15:01
Alexander
Запустил под WINE. Фигуры рисует хорошо. Ну да: сделать для Линукса и добавить побольше привычных для таких программ инструментов (выделение, перемещение сделать проще что ли и прочее).

Re: Векторный графический редактор

СообщениеДобавлено: 25.11.2023 01:22:34
Sharfik
Третьим будешь))
Я так понял блоков и dxf нет

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 11:49:04
Warfalomay
Sharfik
Блоки есть, но недоработанные. Начал делать, но забил, т.к. сама логика программы немного ущербная : все графические объекты - просто запись в массиве определенного типа. Блоки - это тоже массив с номерами объектов. При удалении граф.объекта, напр. линии, весь массив линий сдвигается вверх, вся нумерация в блоках ломается.
Позже понял, что все объекты нужно было делать отдельными классами (вернее экземплярами классов). Без массивов. Обращаться через FindComponent. Тогда можно было бы и блоки. Но переделывать уже лениво.
А за DXF: вот наткнулся на тему: https://www.cyberforum.ru/lazarus/thread1626208.html
В принципе все просто, тем более, что автор уже все разобрал и описал. Думаю добавить к своему редактору.

Добавлено спустя 6 минут 48 секунд:
SharfikAlexander
Это не самые большие проблемы в этой программе :)
При рисовании регулярно образуются объекты с дробными координатами. В программе же они все округляются до целых. Соответственно, потом точки, которые округлились в разные стороны будут не совпадать. Можно увидеть, сделав картинку с окружностями, пересечениями, привязкой концов линий к пересечениям, а потом сделать из меню Файл скрипт для Автокада. В Автокаде будет видно, что точки немного не совпадают.
Опять же - "генетические уродства" данной программы. Все координаты надо было хранить в дробном виде, в формулах считать также. Округлять только для вывода на экран.

Добавлено спустя 6 минут 43 секунды:
Alexander
Вот немного подправил, теперь, по идее, можно без Wine откопилировать под Linux. Заодно поубрал немного мусора и лишних действий из кода.
https://disk.yandex.ru/d/5zvLfsBqnOE9ig

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 17:15:02
Alexander
> по идее, можно без Wine откопилировать под Linux

Код: Выделить всё
drawing_unit.pas(6,6) Error: Невозможно найти Windows, используемый в Drawing_unit в инспекторе проекта.

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 17:43:15
zub
Warfalomay
>>В принципе все просто, тем более, что
оптимистично))

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 19:22:21
Warfalomay
Alexander
Пардон, Linux не пользуюсь, проверить было не на чем. Вот теперь должно быть нормально:
https://disk.yandex.ru/d/ml7zgVgO9ULCAg

Добавлено спустя 3 минуты 35 секунд:
zub
А что сложного, если есть описание формата?
У меня в программе есть экспорт в скрипт, который читается Автокадом (ну, вернее Nanocad, но разницы, наверное, нет), по такому же принципу и в DXF можно экспортировать.

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 19:39:19
zub
очень много нюансов

Добавлено спустя 13 минут 52 секунды:
ну и описание собственно хоть и с виду внушает, но ориентировано на чтение - для записи в актуальные информации мало

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 20:31:10
Alexander
> Вот теперь должно быть нормально

my_modify.pas(30,71) Error: Невозможно найти MyFunc, используемый в my_modify.

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 22:00:35
Warfalomay
Alexander
Все, сдаюсь :cry:
Нифига не понятно, этот модуль есть в папке lib проекта, почему он не цепляется...

Добавлено спустя 1 минуту 56 секунд:
zub
Возможно и мало, я еще не пробовал. Вроде информацию о всех нужных типах примитивов понятно как в DXF записать, пока, наверное, этого достаточно.

Добавлено спустя 5 минут 24 секунды:
Alexander
Можно докинуть файл в папку с проектом
https://disk.yandex.ru/d/L6bOKtbo8nkwFg,
хотя в виде откомпилированного модуля он и так есть в наличии.
Надеюсь,теперь заработает :(

Re: Векторный графический редактор

СообщениеДобавлено: 30.11.2023 22:29:35
veb86
Возможно и мало, я еще не пробовал. Вроде информацию о всех нужных типах примитивов понятно как в DXF записать, пока, наверное, этого достаточно.

zub написал вот это с нуля https://github.com/zamtmn/zcad

Re: Векторный графический редактор

СообщениеДобавлено: 01.12.2023 06:44:14
Warfalomay
veb86
И что?

Re: Векторный графический редактор

СообщениеДобавлено: 01.12.2023 07:48:57
Alexander
Да, теперь запустился, спасибо !

Изображение

Re: Векторный графический редактор

СообщениеДобавлено: 01.12.2023 09:49:35
veb86
Warfalomay писал(а):veb86
И что?

Не хотел обидеть. Я просто хотел сказать, что zcad достиг уже много, если закрыть глаза на некоторые недоделки, то я думаю он может заменить платный CAD.
Но даже с учетом этого, полноценной поддержки всех примитивов нет (DXF). Есть куча странных поведенческих свойств примитивов, да и самих примитивов огромное множество. Открыть огромный чертеж без предварительной подготовки реально, но будут проблемы. Например МТекст который в себе несет такое {\fArial Narrow|b0|i0|c0|p34;H\fArial|b0|i0|c204|p34;\LE\Q5;\W1.5;\T0.9;\lLLO} WORLD (HELLO WORLD).
Я бы предложил сделать круче, организовать поддержку https://github.com/LibreDWG/libredwg. Адаптировать данную библиотеку под fpc было бы круто. Ну и помогло бы развитию zcad и самой libredwg :D :D :D