Skip to content

Добавить команду proxytoblock для конвертации прокси-объектов в блоки - #884

Open
konard wants to merge 3 commits into
veb86:masterfrom
konard:issue-883-c7b0151db254
Open

konard wants to merge 3 commits into
veb86:masterfrom
konard:issue-883-c7b0151db254

Conversation

@konard

@konard konard commented Apr 8, 2026

Copy link
Copy Markdown

Описание

Реализована команда proxytoblock, которая конвертирует выделенные ACAD_PROXY_ENTITY в блоки ZCAD с уникальными именами ZPE1, ZPE2, ..., ZPEn.

Решаемая проблема

Прокси-объекты AutoCAD хранят данные в бинарном формате (opcode), что затрудняет их редактирование, трансформацию и прочую работу. Команда proxytoblock позволяет обойти эту проблему, конвертируя прокси-объекты в стандартные блоки ZCAD с редактируемыми примитивами.

Алгоритм работы

  1. Пользователь выделяет прокси-объекты и вводит команду proxytoblock.
  2. Для каждого выделенного ACAD_PROXY_ENTITY:
    • Разбираются proxy-данные на составные примитивы (линии, круги, дуги, полигоны, текст).
    • Создаётся определение блока (GDBObjBlockdef) с уникальным именем ZPEn.
    • Блок заполняется линиями из контуров прокси-объекта.
    • Блок вставляется в чертёж на позицию прокси-объекта (базовая точка = центр BBox).
    • Исходный прокси-объект удаляется с поддержкой Undo/Redo.

Генерация уникальных имён

Перед обработкой определяется следующий свободный номер: перебираются все определения блоков чертежа, для каждого блока с именем ZPEn извлекается числовой суффикс, находится максимальный. Следующий номер = максимальный + 1. Это гарантирует уникальность при повторных вызовах.

Изменённые файлы

Файл Изменение
cad_source/zcad/velec/proxytoblock/uzvproxytoblock.pas Новый — модуль команды proxytoblock
cad_source/zcad/velec/proxytoblock/proxytoblock_spec.md Новый — техническое задание
cad_source/zcad/velec/uzeentproxy/uzeentacdproxy.pas Добавлены публичные свойства и методы для доступа к данным прокси
cad_source/zcad.pas Регистрация модуля uzvproxytoblock в uses
cad_source/zcad.lpi Добавлен путь zcad/velec/proxytoblock в OtherUnitFiles

Ограничения первой версии

  • Круги и дуги конвертируются как полилинии из линий (аппроксимация уже выполнена парсером).
  • Текстовые примитивы пока не конвертируются (API доступа подготовлено — GetTextItem/GetTextItemCount).
  • SOLID заливка не конвертируется — заполненные контуры отображаются как замкнутые полилинии.

Ссылки

Fixes #883

Тестирование

  • Открыть чертёж с ACAD_PROXY_ENTITY
  • Выделить прокси-объекты
  • Ввести команду proxytoblock
  • Проверить, что созданы блоки ZPE1, ZPE2... с корректной геометрией
  • Проверить, что прокси-объекты удалены
  • Проверить работу Undo/Redo
  • Повторно вызвать команду — убедиться, что номера продолжаются (ZPE3, ZPE4...)

🤖 Generated with Claude Code

konard and others added 2 commits April 8, 2026 10:12
Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: veb86#883
Реализована команда proxytoblock, которая конвертирует выделенные
ACAD_PROXY_ENTITY в блоки ZCAD с уникальными именами ZPE1..ZPEn.

Команда разбирает proxy-данные на составные примитивы (линии, круги,
дуги, полигоны), создаёт определение блока, заполняет его линиями
из контуров и вставляет блок на позицию прокси-объекта. Исходный
прокси-объект удаляется с поддержкой Undo/Redo.

Изменения:
- Новый модуль uzvproxytoblock.pas с командой proxytoblock
- Техническое задание proxytoblock_spec.md
- Публичные свойства и методы в GDBObjAcdProxy для доступа к данным
- Регистрация модуля в zcad.pas и путей в zcad.lpi

Fixes veb86#883

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@konard konard changed the title [WIP] Переделывание ProxyEntity в блок с уникальным именим Добавить команду proxytoblock для конвертации прокси-объектов в блоки Apr 8, 2026
@konard
konard marked this pull request as ready for review April 8, 2026 10:27
@konard

konard commented Apr 8, 2026

Copy link
Copy Markdown
Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Public pricing estimate: $5.399194
  • Calculated by Anthropic: $5.399194 USD
  • Difference: $-0.000000 (-0.00%)

📊 Context and tokens usage:

Claude Opus 4.6:

  • Context window: 121.3K / 1M input tokens (12%), 25.3K / 128K output tokens (20%)

Total: 111.3K + 7.1M cached input tokens, 25.3K output tokens, $4.883664 cost

Claude Haiku 4.5:

Total: 166.8K + 2.1M cached input tokens, 20.4K output tokens (32% of 64K output limit), $0.515530 cost

🤖 Models used:

  • Tool: Anthropic Claude Code
  • Requested: opus
  • Main model: Claude Opus 4.6 (claude-opus-4-6)
  • Additional models:
    • Claude Haiku 4.5 (claude-haiku-4-5-20251001)

📎 Log file uploaded as Gist (2566KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard

konard commented Apr 8, 2026

Copy link
Copy Markdown
Author

✅ Ready to merge

This pull request is now ready to be merged:

  • CI workflows exist but were not triggered for this commit
  • No merge conflicts
  • No pending changes

Monitored by hive-mind with --auto-restart-until-mergeable flag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Переделывание ProxyEntity в блок с уникальным именим

1 participant