Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Alexeynico от 17-11-2020, 15:11:14

Название: Создать аннотативный блок (COM Interop)
Отправлено: Alexeynico от 17-11-2020, 15:11:14
Добрый день!
В разрабатываемом ПО основная работа проводится не в Autocad, поэтому подключение к Autocad и некоторые функции организованы через COM (Interop) с поздним связыванием.

Подскажите, пожалуйста, есть ли возможность сделать блок аннотативным?

Блок создается вот так:
Код - C# [Выбрать]
  1. var blockPoint = activeDoc.Blocks.Add(AcadPoint(0, 0), nameBlock);
  2. blockPoint.AddCircle(AcadPoint(0, 0), 0.1);
  3. blockPoint.AddAttribute(2.5, 0, "Имя", AcadPoint(1.5, 1.5), "НАИМЕНОВАНИЕ", "Имя не заполнено");

Позже блок вставляется в чертеж с использованием InsertBlock().
Название: Re: Создать аннотативный блок (COM Interop)
Отправлено: Александр Ривилис от 17-11-2020, 18:15:29
Alexeynico,
1. Напоминая про правило форматирования кода на нашем форуме (у меня в подписи).
2.
Подскажите, пожалуйста, есть ли возможность сделать блок аннотативным?
Средствами AutoCAD COM/ActiveX нельзя. Собственно говоря аннототивность в AutoCAD появилась тогда, когда развитие COM/ActiveX в AutoCAD уже давно закончилось.
Название: Re: Создать аннотативный блок (COM Interop)
Отправлено: Alexeynico от 17-11-2020, 19:07:13
Да, с оформлением кода оплошал, впредь буду внимательней. Спасибо!
По теме: придется делать костыль через лисп и командную строку (аналогично https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/block-to-annotative-block/td-p/4711815)
Название: Re: Создать аннотативный блок (COM Interop)
Отправлено: Дмитрий Загорулькин от 18-11-2020, 18:55:46
придется делать костыль через лисп и командную строку (аналогично https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/block-to-annotative-block/td-p/4711815)
По идее, этот лисп просто цепляет расширенные данные. Подозреваю, что это можно сделать напрямую через COM без лисп-костылей.
Название: Re: Создать аннотативный блок (COM Interop)
Отправлено: Alexeynico от 18-11-2020, 19:17:27
По идее, этот лисп просто цепляет расширенные данные. Подозреваю, что это можно сделать напрямую через COM без лисп-костылей.
Думаю, что так и есть. Сейчас как раз разбираюсь с этим. Спасибо.
Название: Re: Создать аннотативный блок (COM Interop)
Отправлено: Александр Ривилис от 18-11-2020, 22:03:13
Дмитрий Загорулькин,
Насколько я помню этого недостаточно. Во всяком случае аннототивность может заработать только если чертеж сохранить, закрыть и снова открыть. И кроме того там не только Xdata. Там и обычные dxf-коды, с которыми COM/ActiveX не дружит - только через lisp.