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

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     Читать далее >>>
24/05/2013

Отображение модальных и немодальных форм в AutoCAD .NET

Еще один из примеров ошибок начинающих.

Иногда то что мы уже знаем становится у нас на пути. Если мы хотим показать форму в .NET, мы используем Form.ShowDialog. Правильно?

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

Отключение обработчиков событий

Тема на форуме AutoCAD .NET напомнила мне ситуацию, когда я потратил массу времени на отладку при разработке моего приложения DigSigStamp. Всё было замечательно, пока Kean не почистил мой код для отправки на сайт Labs. Тогда мои обработчики событий неожиданно перестали вызываться при повторном запуске моего кода...

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

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

Определение имени блока из вставки блока становится более сложным делом если этот блок динамический. Когда пользователь модифицирует динамический блок AutoCAD сначала создает анонимный блок, а затем создаёт ссылку на этот анонимный блок в этом чертеже. Ниже приведён код, который учитывает этот сценарий и получает имя основного (а не анонимного) блока...

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

Обеспечение параллельности транзитной графики экрану

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

Метод «Editor.PointToWorld» можно использовать для конвертации точки, для которой известны её экранные координаты, чтобы получить её координаты в МСК (WCS). Этот метод можно использовать для вычисления точек в МСК (WCS) для которых известны координаты в ДСК (DCS)...

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

Об автосохранении и уведомлениях/событиях

Когда AutoCAD выполняет автосохранение, он сохраняет чертежи в каталог Temp операционной системы с именами "DrawingName_Numbers.ac$", как указано в диалоге Параметры, и посылает сообщение kSaveMsg всем приложениям:

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