Как в .NET выбрать грани 3DSOLID и изменить им цвет.Автор: Александр Ривилис
Недавно мы обсуждали как это сделать средствами ObjectARX. Сегодня рассмотрим, как это делается в .NET API:
Пример использования метода Curve.ExtendАвтор: Александр Ривилис
Вопрос:
Не нашел примера использования метода Curve.Extend. Подскажите, пожалуйста, как этот метод можно использовать для удлинения кривой.
Ответ:
Ниже приводится пример кода, который позволяет выбрать кривую для удлинения и граничную кривую, до которой будет выполнено удлинение:
Получение точек пересечения кривой и плоскостиАвтор: Александр Ривилис
Для получения пересечения кривой и плоскости можно пользоваться различными методами. Один из методов, который предложен в этой статье, это аппроксимация кривой с получением точек аппроксимации, а затем получение пересечения отрезков, образованных этими точками и плоскостью. Ниже пример кода, который реализует этот алгоритм:
Определение shx-файла, используемого в типе линии
Если тип линии использует shx-файл, то он ссылается на TextStyleTableRecord. Вот пример, который печатает имя shx-файла, который используется в типе линии ЗИГЗАГ (ZIGZAG).
Как перенести примитив из одного блока в другой
Можно использовать метод AssumeOwnershipOf для изменения владельца примитивов. Используя этот метод вы можете назначить владельцем примитивов любой блок. Это наиболее эффективный метод для переноса примитивов из одного блока в другой.
AutoCAD 2017 Service Pack 1 механизм Автозагрузки
AutoCAD 2017 Service Pack 1 механизм Автозагрузки
AutoCAD 2017 Service Pack 1 вносит ошибку, которая не позволяет AutoCAD автоматически загружать приложения.
Для исправления этой ошибки мы создали Исправление для AutoCAD 2017 Service Pack 1. Пожалуйста загрузите и установите его отсюда.
AutoCAD 2017 SP1 и отладка .NET приложений
Вышел Пакет обновлений 1 (SP1) для AutoCAD 2017. Для его загрузки перейдите сюда. Одно из важных улучшений - отладка .NET приложений в AutoCAD 2017 SP1 с использованием Visual Studio 2015. До сих пор разработчикам приходилось использовать обходной путь, как было сказано в статье Отладка AutoCAD 2017 с использованием Visual Studio 2015. Теперь же начиная с AutoCAD 2017 SP1 потребность в этом обходном пути отпала. Теперь вы можете даже воспользоваться возможностями Edit & Continue (Редактировать и продолжить) при отладке.Загрузка и выполнение VBA-макроса из .NET приложения
Код ниже показывает процедуру загрузки и выполнения VBA-макроса из .NET сборки. Здесь используются методы LoadDVB и RunMacro из AutoCAD ActiveX API. Так как код использует ключевое слово dynamic (или Reflection), то отпадает необходимость подключать ссылки к AutoCAD ActiveX (interop) модулям.
Добавление полей к атрибутам блока, вставленными в пространство модели
Вот статья, которая объясняет, как вставить блок с атрибутами.
Ниже C#-код, вставляющий поле (field) в атрибут блока. Создайте чертеж с блоком с именем "test" содержащий окружность (Circle) и определение атрибута с произвольным именем для тестирования кода.
Выгрузка и загрузка PDF-подложек
Следующий код показывает как выгрузить (загрузить) все PDF-подложки. Для того, чтобы они исчезли (появились) необходима регенерация всех вставок PDF в чертеже. Для получения всех PDF-вставок используется метод PdfDefinition.GetPersistentReactorIds.Как вставить блок с атрибутами в пространство модели
Определение блока содержится в BlockTableRecord. Если у блока есть атрибуты, то они содержатся в BlockTableRecord как AttributeDefinition – точно также как и любые другие примитивы.
Когда мы вставляем блок в чертеж (точнее в пространство модели), то мы вставляем BlockReference. Если у блока есть атрибуты, то для всех (кроме постоянных) AttributeDefinition в BlockTableRecord имеются соответствующие AttributeReference присоединённые к BlockReference. Постоянные атрибуты обрабатываются не так, потому что их текст одинаков во всех вставках этого блока (во всех BlockReference). Они находятся в BlockTableRecord, и не имеют соответствующих AttributeReference присоединённых к BlockReference.
Ниже простой C#-код для вставки блока с атрибутами в пространство модели. Создайте чертеж, содержащий блок с именем “CHECK” содержащий несколько атрибутов (часть постоянных, часть нет) для проверки кода.
Как позволить пользователю прервать длительную операцию в AutoCAD .NET
Если у вас запущена длительная операция, то вам может понадобится возможность прервать эту операцию (при помощи клавиши ESC). Следующий код работал в AutoCAD 2007…2009, но он продолжает по-прежнему исправно работать и в AutoCAD 2017.Выполнение подрезки блока или внешней ссылки при помощи .NETАвтор: Александр Ривилис
Вопрос: Как средствами AutoCAD .NET API можно выполнить подрезку блока или внешней ссылки (по аналогии с командой _XCLIP)
Ответ: Для этой цели используется пространственный фильтр (SpatialFilter). Следующий код показывает как выполнить подрезку блока/внешней ссылки при помощи произвольного замкнутого многоугольника:
Как сделать команды в плагине недоступными в .NET
Вопрос: Недавно я получил вопрос о том, как сделать недоступными команды из плагина в случае если проверка лицензии неудачна.
Ответ: Один из вариантов – проверить лицензию в методе IExtensionApplication.Initialize() и генерировать исключение если проверка лицензии потерпела неудачу. После генерации исключения ни одна из команд в плагине не будет доступна пользователю.
Удаление пропущенных внешних ссылок из базы не в редакторе AutoCAD
Ниже вы видите код функции для удаления потерянных внешних ссылок из базы незагруженной в редактор AutoCAD:
Установка величины прозрачности новому материалу с помощью .NET
Чтобы назначить величину прозрачности новому материалу в AutoCAD .NET API используется класс MaterialOpacityComponent. Следующий код добавляет новый материал в Библиотеку материалов с прозрачностью 90.
Отладка AutoCAD 2017 с использованием Visual Studio 2015
В настоящее время разработчики не могут полноценно отлаживать .NET модули в AutoCAD 2017 с использованием VS 2015. Как объясняется в статье Киана Уомсли для VS 2013 http://through-the-interface.typepad.com/through_the_interface/2013/11/debugging-autocad-using-visual-studio-2013.html, обходной путь для этой проблемы – это или включить отладку для машинного кода, или использовать режим совместимости в VS 2015.Завершение сеанса AutoCAD
В AutoCAD.NET API есть метод “Application.Quit()” для завершения сеанса AutoCAD. Однако в настоящее время “Application.Quit()” не позволяет сохранить все пользовательские установки профиля (например, активную вкладку Ленты). Одним из альтернативных методов для завершения сеанса AutoCAD может быть запуск команды _QUIT (ВЫХОД) при помощи метода “SendStringToExecute”
Как обновить выбранные поля не выполняя регенерацию всего чертежаАвтор: Александр Ривилис
Вопрос: Мне необходимо выполнить обновление некоторых полей в чертеже, но мне не хотелось бы выполнять полную регенерацию. Как это можно осуществить?
Ответ: В ObjectARX есть семейство функций acdbEvaluateFields, которые и позволяют обновить поля в чертеже. Пример использования функции acdbEvaluateFields смотрите ниже: