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

18/05/2016

Как обновить выбранные поля не выполняя регенерацию всего чертежаАвтор: Александр Ривилис

Вопрос: Мне необходимо выполнить обновление некоторых полей в чертеже, но мне не хотелось бы выполнять полную регенерацию. Как это можно осуществить?

Ответ: В ObjectARX есть семейство функций acdbEvaluateFields, которые и позволяют обновить поля в чертеже. Пример использования функции acdbEvaluateFields смотрите ниже:

Опубликовано 18.05.2016     Читать далее >>>
10/05/2016

Как определить изменение вида в AutoCAD

Недавно один из партнеров ADN задал мне вопрос о том, как можно идентифицировать изменение вида в AutoCAD при выполнении зуммирования и панорамирования при помощи мыши. Чтобы отловить такое событие в ObjectARX следует использовать реактор редактора viewChanged() (AcEditorReactor::viewChanged()). А вот в AutoCAD.NET API эквивалентом этом реактору будет событие класса документа Document::ViewChanged
Опубликовано 10.05.2016     Читать далее >>>
07/05/2016

Как средствами ObjectARX получить точки пересечения кривой и плоскостиАвтор: Александр Ривилис

Вопрос: Имеется кривая (наследник AcDbCurve) и задана плоскость AcGePlane. Каким образом можно получить все точки пересечения кривой и плоскости?

Ответ: Для этой цели мы воспользуемся геометрической библиотекой. Во-первых, при помощи функции acdbConvertAcDbCurveToGelibCurve мы преобразуем AcDbCurve (и любого его наследника) в AcGeCurve3d. Во-вторых, воспользуемся классом AcGeCurveSurfInt для получения точек пересечения кривой и плоскости.

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

Опубликовано 07.05.2016     Читать далее >>>
30/04/2016

Добавление иконки к имени команды без использования CUIXАвтор: Александр Ривилис

Вопрос: как программно добавить иконку для своей команды в контекстное меню, возникающее при наборе команды вручную? Один из способов мне известен – это регистрация команды в cuix-файле, как описано здесь: Adding Icon Next To Custom Command. Хотелось бы добиться такого же результата, но без создания cuix-файла.

Ответ: средствами ObjectARX это возможно. Думаю, что можно и при помощи AutoCAD .NET API, но понадобится активно использовать P/Invoke для большого числа функций из Win32 и ObjectARX. Я покажу здесь как это можно сделать при помощи ObjectARX:

Опубликовано 30.04.2016     Читать далее >>>
27/04/2016

Использование CustomExporter для 2D

Вопрос: Я пытаюсь получить двумерное представление заданного элемента в модели. При помощи CustomExporter я получаю все видимые элементы на 3D виде. Я читал несколько статей и в одной из них я прочел, что нужно использовать что-то вроде «переключение на двумерный план этажа и запросить представление этого элемента на заданном виде». Сейчас я застрял на этапе как мне получить нужный план этажа, если у меня их в модели несколько? Можете направить меня в нужное русло?

Опубликовано 27.04.2016     Читать далее >>>
24/04/2016

Форматирование плавающего числа в строку

В ObjectARX для конвертации плавающего числа в строку используется функция acdbRToS. Эта функция также заботится о преобразовании строки в нужный формат ("Архитектурные", "Десятичные", "Инженерные", "Дробные" и "Научные"), как показано в коде ниже.
Опубликовано 24.04.2016     Читать далее >>>
18/04/2016

Объединение блоков AutoCAD с использованием .NET API

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

Ответ: Вот C#-код, который использует метод Database.DeepCloneObjects() для создания нового блока на основе двух других:

Опубликовано 18.04.2016     Читать далее >>>
08/04/2016

Как получить границы области (Region)Автор: Александр Ривилис

Вопрос: Как средствами AutoCAD .NET API можно получить границы (контура) области (Region)?

Ответ: Для этой цели следует воспользоваться возможностями Brep .NET API. Пример получения граничных контуров ниже. Внешние контура красного цвета, внутренние - желтого.

Опубликовано 08.04.2016     Читать далее >>>
05/04/2016

AppPackage API в AutoCAD I/O API - Часть 2

Рассматриваются примеры AppPackage API в AutoCAD I/O API
Опубликовано 05.04.2016     Читать далее >>>
04/04/2016

AppPackage API в AutoCAD I/O API - Часть 1

Рассматриваются примеры AppPackage API в AutoCAD I/O API
Опубликовано 04.04.2016     Читать далее >>>
03/04/2016

WorkItem в AutoCAD I/O API - часть 2

Рассматриваются примеры использования API деятельности в WorkItem I/O API
Опубликовано 03.04.2016     Читать далее >>>
02/04/2016

WorkItem в AutoCAD I/O API - часть 1

Рассматриваются примеры использования API деятельности в WorkItem I/O API
Опубликовано 02.04.2016     Читать далее >>>
01/04/2016

API деятельности в AutoCAD I/O API - Часть 2

Рассматриваются примеры использования API деятельности в AutoCAD I/O API
Опубликовано 01.04.2016     Читать далее >>>
01/04/2016

Медицинский анализ в Fusion 360

Рассматриваются особенности нового функционала Autodesk Fusion 360
Опубликовано 01.04.2016     Читать далее >>>
31/03/2016

API деятельности в AutoCAD I/O API - Часть 1

Рассматриваются примеры использования API деятельности в AutoCAD I/O API
Опубликовано 31.03.2016     Читать далее >>>
30/03/2016

Конвертация AcDb3DSolid в AcDbPolyFaceMesh средствами ObjectARXАвтор: Александр Ривилис

Вопрос: Стоит задача получить на основе AcDb3DSolid сеть AcDbPolyFaceMesh. Как это можно сделать?

Ответ: Ниже код, который позволяет это сделать. Возможны вариации в настройке AcBrMesh2dControl, определяющей насколько сеть будет повторять контуры твердого тела и какие элементы будут в основе этой сети.

Опубликовано 30.03.2016     Читать далее >>>
27/03/2016

Установка цвета всем граням твёрдого тела

Ниже вы видите код, который показывает как пройти по всем граням твердого тела и покрасить каждую из граней в свой цвет:
Опубликовано 27.03.2016     Читать далее >>>
09/03/2016

Управление форматом вывода данных чисел в Панели свойств AutoCADАвтор: Александр Ривилис

Управление форматом вывода данных чисел в Панели свойств AutoCAD

В статье Как показать правильно числовое значение в Панели Свойств (OPM)? в общих чертах описывается возможность управлять форматом вывода числовых значений в Панели свойств. Всё более-менее просто если свойство статическое. В этом случае имеется возможность указать формат числа в idl-файле. А вот в случае динамического свойства требуется выполнить специальную подготовку. Форматом вывода управляют методы GetCurrentValueName и GetCurrentValueType. Вот пример, обеспечивающий независящее от единиц представление действительного числа:

Опубликовано 09.03.2016     Читать далее >>>
26/02/2016

Превращение всех элементов в DirectShape

Новый интересный пример использования DirectShape предоставил наь Nikolay Shulga, старший инженер из команды разработчиков Revit.

Вот что он пишет: