Skip to content

Akkhazriel/revit-sheet-copy-to-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Sheet Copy To Documents (Revit Add-in)

Плагин для Autodesk Revit: копирование выбранных листов (Sheets) из активного документа в другие открытые документы Revit с набором опций (параметры, основная надпись, аннотации, виды/легенды/спецификации, ревизии и т.д.).
Также есть режим предпросмотра (dry-run): показывает, какие действия будут выполнены и где возможны предупреждения.

Возможности

  • Копирование листов из текущего документа в один или несколько других открытых документов.
  • Опционально:
    • Параметры листа (только записываемые; с исключением системных/запрещённых).
    • Основная надпись (TitleBlock): подобрать тип в целевом документе, при необходимости скопировать тип из источника.
    • Параметры экземпляра основной надписи.
    • Элементы, «принадлежащие листу»:
      • Текст (TextNote)
      • Типовые аннотации (Generic Annotation)
      • Линии детализации (Detail Lines / Lines)
      • Guide Grids
      • Растровые изображения (Raster Images)
      • Импортированные PDF (ImportInstance с распознаванием по имени типа/символа)
    • Виды на листе: Drafting Views и Legends (копируются и размещаются viewport’ы).
    • Спецификации (Schedules) на листе (копируется ViewSchedule и размещается ScheduleSheetInstance).
    • Ревизии листа + синхронизация ревизионных облаков в скопированных видах (по геометрическому совпадению bbox-центров/размеров).
  • Предпросмотр операций (без транзакций и без изменений в целевых документах).
  • Логи результата копирования (успех/ошибка по листам и этапам).

Как это выглядит в Revit

После установки добавляется вкладка Ribbon:

  • Tab: Sheet Copy
  • Panel: Sheet Copy Tools
  • Button: Copy Sheets

Кнопка открывает UI-окно (в коде используется SheetCopyToDocsWindow) для:

  • выбора листов;
  • выбора целевых документов;
  • настройки опций;
  • предпросмотра действий;
  • запуска копирования. :contentReference[oaicite:16]{index=16}

Требования

  • Autodesk Revit (версия зависит от вашей сборки/SDK; код использует Autodesk.Revit.DB и стандартные API-классы Revit).

Установка (типовой сценарий)

  1. Соберите проект в Release.
  2. Скопируйте .dll(и) плагина в папку аддинов Revit.
  3. Создайте .addin файл, который указывает на вашу сборку и:
    • FullClassName для приложения Ribbon: SheetCopyToDocs.Application.RibbonApp
    • FullClassName для команды: SheetCopyToDocs.Application.SheetCopyToDocsCommand

Примечание: точный путь и формат .addin зависят от версии Revit и вашей структуры сборки.

Использование

  1. Откройте исходный документ (в котором находятся листы).
  2. Откройте один или несколько целевых документов (Project-документы, не family).
  3. Ribbon → Sheet CopyCopy Sheets.
  4. В окне:
    • выберите листы;
    • выберите целевые документы;
    • настройте опции;
    • (опционально) выполните предпросмотр;
    • нажмите OK для запуска копирования.
  5. Во время выполнения показывается окно прогресса (ProgressWindow).

Опции копирования

Все опции находятся в CopyOptions:

  • CopySheetParams — копировать параметры листа (только записываемые; исключаются Sheet Number/Name и некоторые системные).
  • CopyTitleBlock — копировать тип основной надписи (если нужного типа нет в целевом документе).
  • CopyTitleBlockParams — копировать параметры экземпляра основной надписи.
  • CopySchedules — копировать спецификации на листе.
  • CopyLegends — копировать легенды на листе.
  • CopyDraftingViews — копировать чертёжные виды (Drafting Views) на листе.
  • CopyText — копировать TextNote.
  • CopyGenericAnnotations — копировать Generic Annotations.
  • CopyDetailLines — копировать линии детализации / линии.
  • CopyGuideGrids — копировать Guide Grids.
  • CopyRasterImages — копировать растровые изображения.
  • CopyPdfImports — копировать импортированные PDF.
  • CopyRevisions — копировать ревизии листа + сопоставлять ревизии для ревизионных облаков в скопированных видах.

Важные детали реализации

Уникализация Sheet Number

Перед копированием параметров листа номер принудительно уникализируется в целевом документе:

  • если номер уже занят → добавляется суффикс _1, _2, ...

Параметры: что НЕ копируется

При копировании параметров исключаются системные/запрещённые параметры листа (например SHEET_NUMBER, VIEW_NAME и схожие по имени).

TitleBlock

  • На исходном листе должен быть TitleBlock, иначе операция листа упадёт с ошибкой.
  • В целевом документе тип подбирается по ключу FamilyName|TypeName.
  • Если тип не найден:
    • при CopyTitleBlock=true — тип копируется из source в target,
    • иначе используется «первый попавшийся» TitleBlock тип в целевом документе как fallback.

Скопированные виды и ревизионные облака

Для Drafting Views / Legends плагин:

  • копирует View (если ещё не копировался ранее в рамках одного target-документа),
  • создаёт Viewport на целевом листе в той же точке,
  • затем пытается сопоставить revision clouds в исходном/целевом виде по bbox-геометрии (центры/размеры с допуском 1 мм) и назначить соответствующую Revision.

Транзакции

  • На каждый целевой документ открывается TransactionGroup.
  • На каждый лист — отдельная Transaction.
  • Ошибки по этапам пишутся в лог и не обязательно валят весь процесс (зависит от места исключения).

Ограничения

  • Связанные документы (Revit Link) не поддерживаются как target.
  • Целевые документы берутся только из уже открытых документов Revit.
  • Копируются только:
    • Drafting Views и Legends (другие типы видов на листе игнорируются).
    • PDF определяется эвристикой по имени типа/символа, содержащему .pdf.
  • Сопоставление ревизионных облаков зависит от геометрического совпадения; при расхождении количества/геометрии синхронизация может пропуститься.

Структура кода (кратко)

  • SheetCopyToDocs.Application
    • RibbonApp — добавляет вкладку/панель/кнопку в Ribbon.
    • SheetCopyToDocsCommand — собирает данные, открывает UI, запускает workflow.
  • SheetCopyToDocs.Domain
    • CopyResult, CopyLogEntry — результаты и лог.
    • ICopyService, IPreviewService — интерфейсы.
    • ModelsCopyRequest, CopyOptions, PreviewResult и модели предпросмотра.
    • Rules.CopyRules — правила уникализации номеров и фильтра параметров.
  • SheetCopyToDocs.Infrastructure.Revit
    • CopyWorkflow — реализация копирования и dry-run предпросмотра.

Contributing

PR приветствуются:

  • улучшения UI,
  • расширение поддержки типов видов,
  • более надёжное сопоставление ревизий/облаков,
  • настройки правил копирования параметров.

Автор: Daniel Rogulin Telegram: @sadblueses E-mail: danrogulin@gmail.com GitHub: https://github.com/Akkhazriel

About

Плагин для Autodesk Revit: копирование выбранных листов (Sheets) из активного документа в другие открытые документы Revit с набором опций

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors