Генерация миниатюры dwg-файла при помощи функции acdbMakeDrawingPreview
Вопрос:
Как сгенерировать миниатюру dwg-файла, который создан при помощи AcDbDatabase::wblock/saveas API?
Ответ:
arx-файл acblock.arx экспортирует функцию, которая позволяет сгенерировать миниатюру dwg-файла. Заметим, что эта функция недокументированная и неподдерживаемая. Заметим также, что её сигнатура может измениться или функция вообще не будет доступна в будущем.
Как получить абсолютно все видимые и скрытые элементы
В статье описывается оригинальный метод определения видимости элемента на виде с помощью использования CustomExporter.Динамически блоки с операцией Растянуть (Stretch)
Средствами API невозможно создать динамический блок с операцией Растяни.
Одним из возможных путей обойти это ограничение – это создать набор чертежей с динамическими блоками. Эти чертежи должны быть созданы с использованием пользовательского интерфейса AutoCAD. Такие рисунки можно вставить при необходимости в любой другой чертеж с использованием AutoCAD API.
Последовательность загрузки приложений в AutoCADАвтор: Алексей Кулик
Текст касается тех, кто значительно изменил / дополнил штатный функционал AutoCAD, и кого волнует последовательность загрузки собственных дополнений в AutoCAD. Вполне вероятно, что разъяснение загрузки, например, LISP-файлов, позволит выяснить причину некорректной их работы. В качестве примера здесь используется AutoCAD 2009, но подобные принципы используются во всех версиях AutoCAD начиная с 2006.Две типичных ошибки работы с транзакциями
Возможно, это вырастет в целую серию о типичных ошибках.
Моя последняя статья была об обработке прерываний, и Adam написал замечание о неизвестных командах. Теперь две наиболее типичных ошибки людей работающих с транзакциями, когда они только начали использовать AutoCAD .NET API, которые могут потратить много часов для отладки и будут чувствовать себя крайне глупо, когда поймут в чем причина).
Использование транзитной графики
В статье мы рассматривали использование графических функций, обеспечивающих показ временной графики с помощью AutoCAD API. В этой статье мы рассмотрим использование API транзитной графики для отображения временной графики. Это API обеспечивает значительно лучшее управление над отображением графики по сравнению с графическими функциями.
Это пример кода который использует транзитную графику для отображения точек пересечения прямоугольника и луча. Чтобы проверить его нарисуйте прямоугольник и выберите внутреннюю точку направления луча, когда программа спросит.
API для работы с фильтрами переопределения видимости/графики
В статье описываются несколько случаев, при которых нужно ипользовать новые в Revit API 2014 функции.Как получить идентификатор типа Фасада здания
В статье описывавается способ как получить идентификатор типа Фасада здания, который необходим при создани нового фасада.Добавление атрибутов к определению блока с использованием C++ COM/ActiveX Automation в ObjectARX
Фокус в том, чтобы сделать это используя интерфейсы I * Ptr интерфейсы (например, IAcadDocumentPtr), так что бы подсчет COM-ссылок осуществлялся автоматически.
А другой фокус в том, чтобы использовать VARIANT как можно реже, настолько насколько это возможно - для этого у нас есть AcAx-классы. Вот код:
Загрузка управляемой .NET сборки из ObjectARX приложения
Вопрос:
Как загрузить управляемую .NET сборку из ObjectARX приложения?
Ответ:
Чтобы загрузить управляемую сборку из arx-приложения, вы можете использовать экспортируемую из acdbmgd.dll функцию LoadManagedDll.
Задание примитиву свойства прозрачности используя метод setAlphaPercent
Это пример на ObjectARX задающий примитиву прозрачность, используя метод "setAlphaPercent". Этот метод можно использовать вместо метода "setAlpha" если вы хотите задать альфа-значение в процентах.
Изменение типа Видового экрана (ViewPort)
Изменение типа элемента с помощью параметра ELEM_FAMILY_AND_TYPE_PARAMИзменение определения блока для одного вставленного блока
Ниже код, который меняет определение блока у конкретной вставки блока. Код просит у пользователя указать вставку блока и изменяет определение блока так, что вставка блока становится вставкой нового определения блока.
Атрибуты, взаимосвязь между элементами и другие вопросы
Использование 64-битного ActiveX компонента из .NET сборки
Вопрос:
Я использовал утилиты ADN (ADN utilities), которые включают несколько ActiveX компонентов. Теперь я портирую мой проект на 64-разрядную Windows и скачал 64-разрядные версии этих компонентов, однако я не могу поместить их на мою форму в Visual Studio.
Ответ:
Visual Studio - 32-разрядное приложение даже на 64-разрядной операционной системе, и она не поддерживает 64-разрядные ActiveX компоненты в Дизайнере форм (Form Designer). Но вы можете создать компонент программно в вашем коде.
Как FACETRES/VIEWRES соотносятся с AcGiCommonDraw::deviation() в ObjectARX
Вопрос:
Вы можете подробно объяснить как FACETRES и VIEWRES соотносятся с методом deviation() в классе AcGiCommonDraw?
Ответ:
Отклонение - (2D и 3D) это значение, которое управляет тонкостью тесселяции. Если значения стремится к нулю, тесселяция увеличивается...
Проблема с расположением двух и более видов на листе и ее решение
В статье описывается проблема с расположением видов на листе в одинаковое месторасположение и ее решение.Как вычислить длину примитива в ObjectARX/.NET
Вы можете использовать методы getStartParam() и getEndParam() для получения начального и конечного параметров кривой - унаследованного от AcDbCurve примитива. Затем используя метод getDistAtParam() можно получить длину кривой. Смотрите ниже код для получения длины:
Делаем быстрыми worldDraw и viewportDraw пользовательского объекта
Вопрос:
Мой пользовательский примитив довольно сложный, и всякий раз, когда мои пользователи вызывают команды ПОВЕРНУТЬ (ROTATE) или ПЕРЕНЕСТИ (MOVE) или что-то, что требует постоянного обновления графики, эти операции становятся очень прерывистыми и медленными. Как я могу исправить эту ситуацию?