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

01/12/2021

Как создать конус, направленный вдоль заданной осиАвтор: Александр Ривилис

Вопрос: Как при помощи AutoCAD .NET API можно создать конус, который бы был направлен вдоль заданной пользователем оси?

Ответ: Для того, чтобы создать конус достаточно воспользоваться методом Solid3d.CreateFrustum. Созданный таким образом конус направлен вдоль оси Z, и начало координат находится в середине оси конуса. Дальше следует выполнить трансформацию конуса. Ниже исходный текст программы:

Опубликовано 01.12.2021     Читать далее >>>
13/09/2021

Создаём четыре видовых экрана модели и назначаем ортогональные виды

Недавно пользователю понадобилось модифицировать код для создания раздельных видовых экранов в модели и установить каждому из них различные ортогональные виды. Код ниже создаёт четыре раздельных видовых экрана в модели. Для этого мы создаём новые ViewportTableRecord, которые представляют новые видовые экраны, а их параметры устанавливаем на основе текущей ViewportTableRecord. Это гарантирует, что ViewportTableRecord будет правильно настроен для установки орфографического представления. И в конечном итоге мы выполняем показ до границ. Вот скриншот результирующего расположения видовых экранов.

Опубликовано 13.09.2021     Читать далее >>>
13/09/2021

Имитация штриховки при помощи DrawableOverrule

Если вам нужно временно заштриховать примитив – для этой цели можно воспользоваться DrawableOverrule. Рисование шаблона штриховки в WorldDraw / ViewportDraw может быть как простым, так и сложным в зависимости от того, какой шаблон штриховки используется. Чтобы корректно заштриховать границу штриховки при помощи шаблона штриховки можно воспользоваться подрезкой по контуру, создаваемой в Overrule. Это упрощает реализацию Overrule, так как отсечка шаблона штриховки за пределами объекта обеспечивается подрезкой по заданным границам объекта.

Опубликовано 13.09.2021     Читать далее >>>
10/08/2021

Доступ к файлам стандартов оформления AutoCAD (.dws)

У меня появился шанс исследовать эту проблему, когда я наткнулся на запрос на форуме.

Когда пользователь вызывает команду _LAYTRANS, появляется диалоговое окно транслятора слоёв, и пользователю разрешено сопоставление из загруженного рисунка на текущий рисунок.

Слои из загруженного чертежа сопоставляются со слоями в текущем чертеже или могут быть сопоставлены пользователем.

Эта настройка может быть сохранена в качестве файла стандартов (.dws), для будущего использования, когда пользователь получает рисунок от клиента, пользователь может проверить, соответствует ли чертеж указанным файлам стандартов.

Файл стандартов оформления содержит таблицу трансляции слоёв в виде расширенных данных для каждого из слоёв, которые могут быть сопоставлены или транслированы.

Например, в этом файле есть соответствие между слоями A,B,C и 1,2,3. Тогда слои A,B,C файла стандартов (исходного) транслируются в слои 1,2,3 текущего чертежа (назначения)

Чтение dws-файлов точно такое же как и чтение dwg-файлов, только с другим расширением (спасибо Lee за подсказку).

Опубликовано 10.08.2021     Читать далее >>>
02/08/2021

Установка исходной точки штриховки при её создании в .NET

У нас был вопрос, поднятый клиентом по поводу установки исходной точки штриховки в процессе её создания.

Было обнаружено, что исходную точку штриховки следует задавать не в той транзакции, в которой эта штриховка создаётся, для того чтобы исходная точка была установлена корректно.

Ниже код, который можно использовать для проверки :

Опубликовано 02.08.2021     Читать далее >>>
01/08/2021

Метод Editor.Snap для изменения режима привязки точки

При использовании метода Editor.GetEntity часто требуется получить в точности все координаты точки указания, используемые для выбора объекта.

Например, рассмотрим следующую ситуацию. Построим окружность с центром в точке point (0,0,5) и радиусом 5 в плоскости XY МСК при виде сверху.

При выборе точке на окружности с использованием Editor.GetEntity, PromptEntityResult.PickedPoint вернул : (3.50064192661003 , 3.35618169844321 , 0)

Опубликовано 01.08.2021     Читать далее >>>
06/07/2021

Как выполнить расчленение группы примитивов при помощи .NET APIАвтор: Александр Ривилис

Следующий код показывает как можно расчленить группу, заданную её именем:
Опубликовано 06.07.2021     Читать далее >>>
28/05/2021

Доступна обновленная документация AutoCAD Plant 3D SDK

Обновленная версия документации Plant SDK, которая распространяется на версии с 2017 по 2022, доступна для скачивания в Центре разработчика: https://www.autodesk.com/developer-network/platform-technologies/autocad-p-id-and-plant-3d

Ссылка для загрузки документации: https://damassets.autodesk.net/content/dam/autodesk/files/autocad_plant_3d/autocad_plant_3d_sdk_2017_through_2022_english_documentation.zip

Опубликовано 28.05.2021     Читать далее >>>
27/05/2021

Определение активного пространства и активного листа

Database.CurrentSpaceId содержит ObjectId текущего пространства (Модели или Листа). Вы можете использовать ее для идентификации активного пространства. При помощи LayoutManager мы может узнать активный лист.
Опубликовано 27.05.2021     Читать далее >>>
14/04/2021

Как подсветить примитив внутри блока или внешней ссылки - NETАвтор: Александр Ривилис

Вопрос: Для того чтобы подсветить примитив в текущем пространстве (Модели или Листа) достаточно воспользоваться методом Entity.Highlight(). А как подсветить примитив, который находится в составе блока (возможно вложенного блока) или во внешней ссылке?

Ответ: Для этой цели следует воспользоваться методом Entity.Highhlight(FullSubentPath subId), предварительно создав правильный FullSubentPath.

Ниже приведен код, который подсвечивает примитив внутри самого вложенного блока или внешней ссылки:

Опубликовано 14.04.2021     Читать далее >>>
28/02/2021

AutoCAD .NET API: метод IExtensionApplication.Terminate() не вызывается

Вопрос:

Я создаю и запускаю приложение с использованием AutoCAD .NET API, но после установки обновления AutoCAD 2020.1 Update, метод IExtensionApplication.Terminate() больше не вызывается.

Тоже самое касается и AutoCAD 2020.1.2 Update и AutoCAD 2021 со всеми обновлениями.

Что-то изменилось??

Опубликовано 28.02.2021     Читать далее >>>
29/10/2020

Как можно динамически поменять цвет фона в редакторе блоков BEDIT в .NET API?Автор: Александр Ривилис

Вопрос: Как можно поменять цвет фона в редакторе блоков (BEDIT) при помощи кода .NET API?

Ответ: В ObjectARX есть возможность менять цвет элементов интерфейса AutoCAD (в том числе и цвет фона редактора блоков). Воспользуемся P/Invoke для вызова этого кода из .NET:

Опубликовано 29.10.2020     Читать далее >>>
28/10/2020

Как запустить диалоговое окно калькулятора в AutoCAD, используя .NET API?Автор: Александр Ривилис

Вопрос: Можно ли запустить диалоговое окно калькулятора AutoCAD (не путать с палитрой калькулятора, вызываемой командой _QUICKCALC) и получить результаты вычисления?

Ответ: Диалоговое окно калькулятора (как и палитра калькулятора) упрятаны в сборке AcCalcUi.dll. Эта сборка не входит в состав ObjectARX SDK, так что следует сослаться на сборку в составе AutoCAD. Не забывайте указывать в свойствах сборки CopyLocal = False, чтобы не копировать эту сборку к своему приложению. Сборка содержит пространства имён:

Autodesk.AutoCAD.CalculatorUI
Autodesk.AutoCAD.CalculatorUI.CalculatorControl
Autodesk.AutoCAD.CalculatorUI.LayoutParser
Autodesk.AutoCAD.CalculatorUI.VariableParser

В простейшем случае для вызова калькулятора мы можем воспользоваться методом QCalcApplication.ShowModalCalculator. Смотрите пример использования:

Опубликовано 28.10.2020     Читать далее >>>
30/09/2020

Как преобразовать LineWeight в текстовую строку и обратно?Автор: Александр Ривилис

Вопрос: Как выполнить средствами AutoCAD .NET API преобразование из веса линии (LineWeight) в строку (String) и обратно?

Ответ: Для этой цели можно воспользоваться классом Autodesk.AutoCAD.DatabaseServices.LineWeightConverter

Вот пример кода, который выполняет прямое и обратное преобразование:

Опубликовано 30.09.2020     Читать далее >>>
30/08/2020

Как скрыть командную строку без запроса к пользователю?Автор: Александр Ривилис

Как скрыть командную строку без запроса к пользователю?

Вопрос: Я использую для скрытия командной строки метод Autodesk.AutoCAD.Internal.Utils.CloseCommandLine(); При этом возникает запрос:

Можно ли как-то избавится от этого запроса, как будто в этом окне мы ответили Да?

Ответ: Это возможно при использовании HideableDialogSettings:

Опубликовано 30.08.2020     Читать далее >>>
30/08/2020

Как изменить цвет ПСЕВДОРАЗРЕЗА (LIVESECTION)?Автор: Александр Ривилис

Как изменить цвет ПСЕВДОРАЗРЕЗА (LIVESECTION)? Вопрос: Как изменить цвет ПСЕВДОРАЗРЕЗа (LIVESECTION)? Можно ли это сделать при помощи API? Ответ: Средствами AutoCAD .NET API это возможно. Для этой цели необходимо задать цвет при помощи SectionSettings:
Опубликовано 30.08.2020     Читать далее >>>
31/07/2020

RealDWG: Получение информации о цвете граней твердых тел

Используя RealDWG SDK следующий код позволяет получить цвета граней твердых тел в чертеже AutoCAD.

Для извлечения цветов из компонентов твердого тела используется BREP API, поэтому необходимо сослаться на сборку AcDbMgdBrep.dll из RealDWG SDK.

Опубликовано 31.07.2020     Читать далее >>>
19/06/2020

Разделение составных твердых тел на отдельные тела

Мы можем воспользоваться методом Solid3d.SeparateBody

Этот метод разделяет твердое тело на коллекцию непересекающихся твердых тел.
Вызывающее этот метод приложение должно что-то сделать с твердыми телами полученной коллекции (или добавить их в базу данных или удалить, если они больше не нужны). Когда вызывающее приложение закрывает твердое тело, результирующее твердое тело фиксируется в базе данных.
Таким образом если не добавить твердые тела из коллекции в базу данных, мы потеряем какую-то информацию.

Опубликовано 19.06.2020     Читать далее >>>
18/06/2020

Переопределение клавиши вызова Помощи при помощи CUI API

Существует общая потребность изменить назначение клавиши вызова Помощи с F1 на какую-нибудь другую клавишу (или сочетание клавиш), так как на клавиатуре F1 и ESC находятся рядом, а клавиша ESC используется для отмены запущенной команды или отмены выбранных объектов. Поскольку клавиша F1 соседствует с ESC - шансы нажатия этой клавиши случайно довольно высоки. F1 приводит к появлению окно справки, что в указанных случаях является контрпродуктивным.

Чтобы избежать этого, мы можем присвоить F1 команде Отмена, а CTRL + ALT + H для справки.

Опубликовано 18.06.2020     Читать далее >>>
01/06/2020

Фильтр для выбора примитивов на разных слоях

Эта статья показывает простой способ для создания фильтра, который позволит выбрать примитив типа A на слое L и типа B на нескольких слоях L1, L2, L3…. И так далее.

Опубликовано 01.06.2020     Читать далее >>>