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

30/05/2013

Получение нормали к грани 3D-тела с помощью BREP .NET API

Следующая C#-статья иллюстрирует как получить нормаль к грани 3D-тела с помощью функционала BRep .NET API:

Опубликовано 30.05.2013     Читать далее >>>
29/05/2013

Получение координат контура подрезки

Вопрос:
Я могу установить контур подрезки при помощи метода AcadRasterImage.ClipBoundary, но как я могу получить координаты уже существующего контура подрезки? Я знаю, что если контур прямоугольный, то я могу получить граничный прямоугольник, ширину и высоту. А если контур подрезки имеет неправильную (непрямоугольную) форму, то я не могу найти ни одного метода, чтобы получить его координаты.

Решение:
Эквивалент метода из ObjectARX AcDbRasterImage::clipBoundary() не представлен в текущей модели ActiveX Automation.

Мы можем самостоятельно предоставить такой метод. Полный проект прилагается: ImgClipBoundary

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Получение информации о гранях из AcDbPolyFaceMesh и AcDbPolygonMesh

Вопрос:

Я бы хотел получить информацию о гранях для примитивов полигональных и многогранных сетей. Есть ли пример как это можно сделать?

Ответ:

Следующие примеры кода рисуют отрезки поперёк всех граней выбранных примитивов полигональной и многогранной сетей.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Получение информации о гранях PolyFaceMesh в .NET

Это .NET версия этой статьи

Обычно достаточно просто мигрировать из кода ObjectARX в код AutoCAD .NET API, так как это просто обертки над ARX API. Вам нужно убрать префикс AcDb из имён классов базы данных, использовать foreach вместо функции создающей итератор, использовать транзакции, и большая часть следующего кода будет готова :)

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Получение граней SubD Сети

Если вы хотите получить все грани геометрии поверхности AcDbSubDMesh (называемой просто "Сеть" в Палитре свойств), то вы можете использовать либо getFaceArray (возвращает базовый (уровня 0) список граней сети) или getSubDividedFaceArray (возврат список граней сглаженной сети).

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Получение имени блока в ARX

Вопрос:
Могу ли я используя ObjectARX получить имя блока из вставки блока внутри ObjectARX приложения? Я знаю, что это можно сделать используя ads_entget (acdbEntGet), а затем найти соответствующий код группы.

Ответ:
Нет метода у класса вставки блока, который бы возвращал имя определения блока. Вставка блока (класс AcDbBlockReference) хранит ID объекта определения блока (класс AcDbBlockTableRecord). Имя блока хранится в определении блока. Чтобы получить имя блока нужно получить ID определения блока и открыть его. Тогда можно будет получить имя блока из определения блока. Следующий код позволяет выбрать вставку блока и получить его имя:

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Показ локализованных имён свойств с использованием Не-COM системы свойств

Если вы уже начали использовать Не-COM систему свойств в AutoCAD, пожалуйста, посмотрите эту презентацию (DevTV) моего коллеги, Adam Nagy. В этой статье мы рассмотрим изменения, которые потребуются для показа локализованных имён с использованием Не-COM системы свойств.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Площадь пересечения двух AcDbRegion

Следующий пример показывает использование метода AcDbRegion::booleanOper() для пересечения двух примитивов область (AcDbRegion)...

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Печать листов с использованием объекта Plot ActiveX в ObjectARX

Следующий код показывает как напечатать все листы в пакетном режиме с использованием ActiveX API в C++

Ключевые моменты для пакетной печати:

1) Установим число листов, которые будут напечатаны при помощи метода StartBatchMode() объекта IAcadPlot ...

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Перехват вывода в текстовый экран и командную строку AutoCAD

Вопрос:

Как получить текстовый вывод команд, таких как СПИСОК (_LIST), а также скрыть вывод некоторых команд в командную строку?

Ответ:

Вы можете временно подменить объект HostApplicationServices своим собственным...

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Пересечение Поверхности и Отрезка с использованием ARX

В другой статье, мой коллега Philippe рассказал о получении точки пересечения между плоскостью и отрезком. В этой статье мы увидим, как получить пересечение любой поверхности и отрезка.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Пересечение между примитивами 3-ГРАНЬ и ОТРЕЗОК при помощи ARX

Вопрос:
Как можно вычислить точку пересечения (если она есть) между AcDbFace и AcDbLine

Ответ:
Существуют два основных пути которыми это можно осуществлено с помощью ARX и оба они далее показаны:

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Пересечение между плоскостью и кривой в .NET

Вот шаги, которые позволят найти точки пересечения между плоскостью и кривой (на основе объяснения данного моим коллегой Krishnamurthy Kalvai) . Я представляю образец кода, который реализует эти шаги, чтобы найти пересечение эллипса и плоскости.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Перезентация (DevTV): Не-COM система свойств

Мы создали презентацию (DevTV) по Не-COM системе свойств (кодовое имя Ubiquity), публичное API, которое получила последняя версия AutoCAD. В прошлом нужно было создавать COM классы для добавления свойств собственных объектов в Палитру свойств. Теперь вы можете делать это без использования COM – поэтому мы её и назвали ‘Не-COM система свойств'.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Перебор всех IAcadBlock в IAcadBlocks используя ActiveX в C++

Вопрос:
В C++ я не вижу возможности перебрать IAcadBlocks, чтобы получить доступ к каждому IAcadBlock. Есть пример кода, который это делает?

Ответ:
Следующие два подхода перебирают IAcadBlocks для доступа к каждому IAcadBlock. Первый предполагает, что вы настроили ваш проект с использованием ARX/MFC и импортирована TLB-библиотеки AutoCAD COM.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Ошибка PInvokeStackImbalance

Вопрос:

Я пытаюсь с помощью P/Invoke вызвать acedPostCommand() чтобы прервать текущую команду, а получаю ошибку PInvokeStackImbalance при вызове acedPostCommand внутри моего .NET кода:

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

Ошибка "Проблема при загрузке приложения " на 64-разрядной Windows при использовании GetInterfaceObject

Вопрос:

У меня есть AutoCAD .NET сборка, которая является ActiveX сервером, что позволяет мне управлять сборкой из внешнего приложения. Это хорошо работает в 32-разрядной Windows, но в 64-разрядной я получаю ошибку «Проблема при загрузке приложения» ("Problem in loading application") когда использую метод GetInterfaceObject() для доступа к моему ActiveX серверу. Я проверил, что сборка загружена, так что непонятно в чем ошибка...

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

AutoCAD 2014 для разработчиков (JavaScript)

Сегодня официальный анонс продуктов семейства 2014. AutoCAD 2014 на днях будет доступен пользователям по всему миру. Вы, несомненно, найдете много информации в сети относительно особенностей продукта, так что я собираюсь сосредоточиться именно на возможностях и требованиях для разработчиков.

Опубликовано 29.05.2013     Читать далее >>>
29/05/2013

AutoCAD 2014 для разработчиков (VBA)

Сегодня официальный анонс продуктов семейства 2014. AutoCAD 2014 на днях будет доступен пользователям по всему миру. Вы, несомненно, найдете много информации в сети относительно особенностей продукта, так что я собираюсь сосредоточиться именно на возможностях и требованиях для разработчиков.

Опубликовано 29.05.2013     Читать далее >>>
24/05/2013

Отображение пользовательского примитива при перетаскивании

Если пользовательский примитив унаследован от AcDbEntity и использует методы polyline() и polygon() класса AcGiWorldGeometry внутри метода worldDraw(), то в ряде случаев функции могут возвращать состояние ошибки если используются при перетаскивании или редактировании при помощи ручек (grips).

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