Простой векторный 2D редактор для черчения

Обсуждаются как существующие проекты (перевод документации, информационная система и т.п.), так и создание новых.

Модератор: Модераторы

Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 22.11.2025 15:16:42

Решил этот что "побочный проект" (задуман как часть функционала другой программы) вполне заслуживает отдельной темы.

Вообщем повозившись с разными исходниками найденными в интернете решил взять за основу "GraphicEditor Мельникова"
Там все просто и почти сразу понятно и главное расширяемо .

За "сияющий идеал" взята всеми любимая Xara Xtreme
Изображение

Чего не хватает в первую очередь ? Сетки, линеек и уровней .

Сказано сделано ! (Не идеально но работает )
Изображение

Что было "внезапной проблемой": ошибки при использовании инструментов "Выделение" "Перемещение ", "Рука" тут пришлось капитально повозиться в несколько итераций "с откатом" к стабильной сборке .
+ В качестве контейнера данных в базовом коде используется динамические массивы, что заметно сказывается на "прозрачности кода" ( Если бы не помощь вечно неунывающего ИИ я бы наверно это дело или бросил или отложил ).

>>>Бинарник Min_VGED_BIN_B0_004C 703 kb

>>>Исходники GraphicEditor-master_0_04_clear.7z 4.318 кб



Теперь нужно добавить дополнительные инструменты, поддержку SVG и нормальную трансформацию.
Последний раз редактировалось Alex2013 26.11.2025 13:01:09, всего редактировалось 4 раз(а).
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44

Re: Простой векторный 2D редактор для черчения

Сообщение Alexander » 22.11.2025 17:17:12

О! Новый графический редактор. Спасибо!
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 856
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 22.11.2025 19:14:37

Alexander писал(а):О! Новый графический редактор. Спасибо!

Всегда пожалуйста ! Но пока это еще скорее заготовка чем что-то полноценное .
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44

Re: Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 26.11.2025 00:17:47

Продолжение банкета ...
Изображение
>>Min_VGED_BIN_B0_0_04_5_3WP.7z
>>GraphicEditor-master_0_04_53_WP.7z
Сырость все еще "цветет и пахнет" ( походу выловил более 10 явных недоделок которые нуждаются в фиксации )
Но продвижение есть !
1 Улучшено выделение фигур (с поддержкой уровней ) хотя работы по отладке и доработке там еще море .
2 Добавлены инструменты "замкнутый полигон" и "текст" (интересная фишка "правильное масштабирование") .
3 Работает копирование и вставка правда обращаться с "копипастой" нужно осторожно (желательно например отменять выделение перед вставкой )
4 Довольно неплохо работают Undo и Redo
5 К сожалению все еще остался инструмент MoveTool (очень раздражает но работает )
6 "Отметка" SelectionTool может работать ( а иногда не работать :wink: ) в трех режимах "Простой" с нажатым Shift (выделение рамкой ) и с нажатым Ctrl ( добавляет ( или убавляет) в выбранное то что находится под курсором ) для полигона есть два режима "рамка" и "точки" . Сразу загрустил по своей старой программе там выделение сделано банально "по методу художника" слегка тормознуто но ОЧЕНЬ надежно !
К сожалению пока нет универсального масштабирования и поворота фигур .
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44

Re: Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 06.12.2025 14:17:10

Новая сборка !! В основном "откачка сырости" и "дезинсекция"...
Изображение
Объем работ довольно внушительный но многое еще требует доработки .
>>>Min_VGED_BIN_B_0_04_575.7z
>>>Min_VGED_SRC_B_0_04_575.7z

Добавлено спустя 13 часов 11 минут 57 секунд:
Мини патч.. Модуль Main.pas
Вместо этого
Код: Выделить всё
procedure TMainForm.ToolsButtonsPaint (Sender: TObject);
var B:TBitBtn;
const    C:TCanvas= Nil;
begin
  inherited;
  If OldTool=Nil then Exit;
if OldTool<> currentTool then
  begin
  B:=FindToolButton(OldTool);
    C:=B.Glyph.Canvas;
    c.CopyMode:=cmDstInvert;
    C.CopyRect(b.Glyph.Canvas.ClipRect,c,b.Glyph.Canvas.ClipRect);
    C.CopyMode:=cmSrcCopy;
  end;
B:=FindToolButton(currentTool);
  C:=B.Glyph.Canvas;
  c.CopyMode:=cmDstInvert;
  C.CopyRect(b.Glyph.Canvas.ClipRect,c,b.Glyph.Canvas.ClipRect);
  C.CopyMode:=CmSrcCopy;
end;

Нужно написать вот это
Код: Выделить всё
procedure TMainForm.ToolsButtonsPaint (Sender: TObject);
var B:TBitBtn;
const    C:TCanvas= Nil;
         ot:TTool=Nil;
begin
  inherited;
if  ot<>Nil then
  begin
  B:=FindToolButton(OT);
    C:=B.Glyph.Canvas;
    c.CopyMode:=cmDstInvert;
    C.CopyRect(b.Glyph.Canvas.ClipRect,c,b.Glyph.Canvas.ClipRect);
    C.CopyMode:=cmSrcCopy;
  end;

  B:=FindToolButton(currentTool);
  C:=B.Glyph.Canvas;
  c.CopyMode:=cmDstInvert;
  C.CopyRect(b.Glyph.Canvas.ClipRect,c,b.Glyph.Canvas.ClipRect);
  C.CopyMode:=CmSrcCopy;
  OT:= currentTool;
end;


Еще можно выкинуть глобальную переменную OldTool все что с ней связано
(бо старик Окам настоятельно советовал и бритвой опасной угрожал )
Зы
Брр ! О чем я только думал когда писал вот это безобразие?
(ИИ тут точно непричем это на 100% моя поделка, (Нет,в целом она работала, но в коде есть места где программа "сама выбирает инструмент" и я не очень помню где именно ( основу писал не я + ИИ насоветовал в процессе отладки "40 бочек арестантов" ) но главное тут в том что если сделать сохранение предыдущего выбора "локально" то код работает всегда )
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44

Re: Простой векторный 2D редактор для черчения

Сообщение Alexander » 09.12.2025 10:11:01

Посмотрел .exe под WINE. Потом решил собрать под Линукс. Заменил использование юнита Windows на LCLType в main.
Собрался и почти заработал. Не срабатывает при этом (авто)перерисовка. То есть если нарисовать прямоугольник его сразу не видно, а если максимизировать/восстановить окно то его становится видно.

Изображение
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 856
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 09.12.2025 10:46:57

Спасибо за отзыв! (под линукс собирать не пробовал, но там предсказуемо возможны проблемы с перерисовкой скорее всего нужно добавить refresh; в конце метода "procedure TMainForm.PaintBoxPaint(Sender: TObject);", модуль Windows подключен из за констант клавиш и кажется ничего больше не делает.)
Зы
Гораздо более непонятно почему иконки инструментов отображаются криво.
Зы Зы
Сейчас в процессе отладки новый инструмент для вставки растровых картинок .
Изображение
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44

Re: Простой векторный 2D редактор для черчения

Сообщение Alexander » 09.12.2025 18:13:34

Сделал видео с ним. Патч ToolsButtonsPaint применил и OldTool как смог закомментировал. Но на это не влияет.
Может кто ещё под Линукс пособирает и поймет в чём дело. Вообще многоплатформенный графический редактор вещь многонужная :) .

http://soft.self-made-free.ru/VGED.mp4

Может ещё от версий зависит?:
Free Pascal Compiler version 3.2.2+dfsg-46 [2025/02/08] for x86_64
Lazarus 4.4 (rev Unversioned directory) FPC 3.2.2 x86_64-linux-gtk2
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 856
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Простой векторный 2D редактор для черчения

Сообщение zub » 10.12.2025 00:05:37

Очередной векторный редактор?))
zub
долгожитель
 
Сообщения: 2888
Зарегистрирован: 14.11.2005 23:51:26

Re: Простой векторный 2D редактор для черчения

Сообщение Alex2013 » 11.12.2025 14:43:40

zub писал(а):Очередной векторный редактор?))

О привет ZUB! "Очередной векторный редактор" ну как сказать скорее очередная часть другого проекта которой в принципе можно поделится.(Теперь с исходниками) (И на этот раз не настолько узкоспециализированная как программа поддержки пакета для создания веб-интерфейса ) Разумеется это и близко не CAD, а просто "утилита для графических заметок" эдакий "графический блокнот с условной миллиметровкой ". Основная фишка, "масштабирование рабочего пространства" (Рисовать хоть что нибудь точное в "чисто растровых программах" та еще докука )

Добавлено спустя 18 минут 28 секунд:
Alexander писал(а):Сделал видео с ним. Патч ToolsButtonsPaint применил и OldTool как смог закомментировал. Но на это не влияет.
Может кто ещё под Линукс пособирает и поймет в чём дело. Вообще многоплатформенный графический редактор вещь многонужная :) .

http://soft.self-made-free.ru/VGED.mp4

Может ещё от версий зависит?:
Free Pascal Compiler version 3.2.2+dfsg-46 [2025/02/08] for x86_64
Lazarus 4.4 (rev Unversioned directory) FPC 3.2.2 x86_64-linux-gtk2


Хм ! Странно при загрузке все рисует как надо ...
А что c Undo/Redo и Ctrl-C + Ctrl-V ?
(Lazarus 4.0 FPC 3.2.2 32 бита (пишу под из под Windows 10 64 бита) ) Могу пробовать собрать 64-х битную версию.
Зы
"Много-нужная" будет когда хоть немного начнет напоминать "Xara Xtreme," а пока это действительно в лучшем случае (то есть без ошибок и глюков ) не слишком удобный "графический блокнот" .
Alex2013
долгожитель
 
Сообщения: 3204
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Разное

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1