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

27/02/2019

Как проверить, что при редактировании XREF он сохранён или отвергнут

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

А что если вашей программе необходимо определиться сохранена ли внешняя ссылка или нет:

Опубликовано 27.02.2019     Читать далее >>>
19/01/2019

Как из arx-приложения получить все загруженные в AutoCAD .NET-сборкиАвтор: Александр Ривилис

Как из arx-приложения получить все загруженные в AutoCAD .NET-сборки

Arx-приложение может быть native и mixed. В любом случае, чтобы получить все .NET-сборки нужно воспользоваться методом AppDomain:: GetAssemblies. Для mixed-кода это совсем просто:

Опубликовано 19.01.2019     Читать далее >>>
12/11/2018

Как определить, что lisp-функцию можно вызвать из arx-приложения?Автор: Александр Ривилис

Как определить, что lisp-функцию можно вызвать из arx-приложения?

Основное документированное средство для вызова lisp-функций из arx-приложения – это функция acedInvoke. Для того, чтобы ею воспользоваться необходимо одно из двух условий:

  1. Функция имеет имя вида C:XXX, т.е. имя аналогичное тому, как используется в AutoLisp для определения команды AutoCAD.
  2. Функция зарегистрирована при помощи lisp-функции (vl-acad-defun ‘имя_функции)

Как можно определить, что хотя бы одно из этих условий выполняется? Ниже приведён подробно документированный код:

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

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

Как сделать вставку точки в разрыв кривой?

На форуме мне задали вопрос о том, как можно эмулировать команду _BREAK и вставлять в разрыв точку? Ниже код, показывающий как используя метод getSplitCurves можно добиться результата.

Опубликовано 01.08.2018     Читать далее >>>
29/07/2018

Удаление границы штриховки

Класс AcDbHatch предоставляет методы для получения границ и для удаления границ. Каждая граница представляет собой так называемый цикл. С помощью методов класса AcDbHatch вы можете выполнять итерацию всех циклов. Затем вы можете получить все объекты, принадлежащие одному циклу. Все, что вам нужно сделать, это сравнить метки объектов цикла с меткой граничного объекта, который должен быть удален из объекта штриховки. Если у одного из объектов цикла есть дескриптор, который вы ищете, вы можете использовать AcDbHatch :: removeLoopAt (), чтобы удалить петлю из штриховки.

Следующая функция делает именно это. Параметр handleRemove является меткой примитива, принадлежащего к циклу, который следует удалить.

Опубликовано 29.07.2018     Читать далее >>>
27/07/2018

Создание штриховки и установка её масштаба

Вопрос:

Как можно создать штриховку и установить ей масштаб? Я написал функцию, которая создаёт штриховку. Но я обратил внимание, что она не в состоянии назначить масштаб штриховки и мне приходится это делать вручную. Почему это происходит?

Ответ:

Причина может быть в том, что вызов метода setPatternScale() происходит не в тот момент, когда это следует делать. Обратите внимание, что вы должны установить свойства штриховки, такие как угол, масштаб, ассоциативность и имя штриховки сразу же после создания AcDbHatch. После добавления границ штриховки вы можете установить другие свойства, такие как слой, цвет, стиль штриховки и т.д. Затем следует вызвать метод evaluateHatch() чтобы штриховка правильно отобразилась на экране. И после этого штриховку следует добавить к базе чертежа AutoCAD и закрыть. Следующий код показывает как это следует делать. Более детальную информацию можно найти в ObjectARX документации для класса AcDbHatch.

Опубликовано 27.07.2018     Читать далее >>>
27/07/2018

Ассоциативность AcDbHatch

После того как я создал объект штриховки, добавил его в базу, установил стиль и т.д. у неё нет ассоциативности к объектам границы. Чтобы сделать её ассоциативной нужно сделать объект штриховки постоянным реактором для примитивов, которые штрихуются. Следующий пример кода демонстрирует как создать штриховку и сделать её ассоциативной к примитивам её границы (прямоугольник и круг).
Опубликовано 27.07.2018     Читать далее >>>
16/04/2018

AutoCAD 2019 ObjectARX wizard и .NET wizard

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

Как удалить переменную из Диспетчера параметров AutoCAD средствами ARXАвтор: Александр Ривилис

Следующий код покажет как это можно сделать:
Опубликовано 27.03.2018     Читать далее >>>
20/03/2018

Как получить пересечение прямой и твердого тела?

Это можно сделать при помощи B-Rep API. Следующий код иллюстрирует как получить пересечение линейного примитива (ОТРЕЗОК, ЛУЧ, ПРЯМАЯ) с примитивом, который представляется в виде ACIS (т.е. твердое тело - SOLID, область - REGION, или тело - BODY).
Опубликовано 20.03.2018     Читать далее >>>
26/12/2017

Изменение установок экранного разрешения при помощи API

Мы можем установить все четыре установки в Экранном разрешении в Настройке.
Опубликовано 26.12.2017     Читать далее >>>
26/12/2017

Как получить порядковые номера для экспортируемых AEC-функций

Порядковые номера функций могут быть полезны в RealDWG-приложениях. Например, такой сценарий, когда RealDWG-приложение расчленяет любые AEC-примитивы, которые являются зависимыми от вида, расчленение примитива в определенном виде с получением геометрии зависящей от вида, может требовать установку вида примитива в чертеже, а затем его расчленение.
Опубликовано 26.12.2017     Читать далее >>>
13/11/2017

Как проверить действительность объекта ShapeManager для Solid3D

Если Solid3D имеет недействительный объект shape manager – это практически всегда приводит к аварийному завершению AutoCAD если не выполнить соответствующую проверку.
Опубликовано 13.11.2017     Читать далее >>>
29/03/2017

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

Как получить имя примитива из Панели свойств?

Вопрос: В панели свойств есть название примитива, который находится в наборе предварительного выбора (pickfirst):

Это название – локализованная строка. Например, в русской локализации – Дуга, в английской – Arc. Как можно имея идентификатор AcDbObjectId этого примитива узнать его имя?

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

Опубликовано 29.03.2017     Читать далее >>>
07/02/2017

Пример SubEntity из ObjectARX SDK 2009 для версии 2017Автор: Александр Ривилис

Вопрос: В ObjectARX SDK 2009 имелся пример SubEntity, который демонстрирует возможность работы с подобъектами, добавление их свойств в Панель свойств (OPM) и т.д. К сожалению этот пример не входит в состав ObjectARX SDK версий позднее 2009-ой. Можно ли его адаптировать к версии ObjectARX SDK 2017?

Ответ: Этот пример, адаптированный для ObjectARX SDK 2013, привёл Balaji Ramamoorthy здесь

Мне оставалось адаптировать его для ObjectARX SDK 2017. Результат работы можете посмотреть здесь: SubEntity2017.zip

Опубликовано 07.02.2017     Читать далее >>>
21/01/2017

Изменения в методе AcadAppInfo::writeToRegistry в AutoCAD 2017

В AutoCAD 2017 в методе AcadAppInfo::writeToRegistry, параметры Boolean удалены. Это потому что нет гарантии, что AutoCAD запущен с соответствующими привилегиями для записи в Local Machine, что всегда проблематично через API. Теперь writeToRegistry работает аналогично writeToRegistry(false, true) в AutoCAD 2016. (Пишем для текущего пользователя в секцию AutoCAD).

Опубликовано 21.01.2017     Читать далее >>>
21/12/2016

Создание фильтра примитивов унаследованных от полилинийАвтор: Александр Ривилис

Вопрос: У меня есть собственные примитивы, унаследованные от AcDbPolyline. Я хочу иметь возможность фильтровать их, а также другие типы полилиний (AcDb2dPolyline и AcDb3dPolyline), при помощи функции acedSSGet. Я пробовал создавать фильтр при помощи такого кода:

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

Московская конференция "День Разработчика Autodesk 2016"

Московская конференция «День Разработчика Autodesk 2016»

Уважаемые коллеги, приглашаем вас 26 января 2017 г на очередную конференцию «День Разработчика Autodesk 2016». Если вы планируете или уже разрабатываете приложения с использованием технологий Autodesk, хотите узнать, в каком направлении Autodesk развивает свои облачные и десктопные API, то эта конференция для вас.

На этот раз девиз конференции: «Data at the Center». Это новый подход к работе с данными, который стал возможным благодаря облачным технологиям. Отдельно мы рассмотрим Autodesk Forge, платформу для решения инженерных и бизнес-задач, объединяющую новое поколение облачных API и веб сервисов.

В ходе конференции вы узнаете свежие новости о разработке приложений для облачных и десктопных платформ Autodesk, мы подробно остановимся на новых возможностях Data Management API, Model Derivative API, Viewer, Design Automation API, 3D Print API, BIM 360 API, Reality Capture API и Fusion 360 Client API и, конечно же, не забудем про наши десктопные платформы AutoCAD, Revit, Civil 3D, Inventor, Vault. Отдельно расскажем об использовании онлайн-магазина приложений Autodesk App Store для популяризации ваших приложений.

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

Как в ObjectARX выбрать грани 3DSOLID и изменить им цветАвтор: Александр Ривилис

Оказалось, что на такой, казалось бы простой и распространенный вопрос найти примера в интернете не удается. Более того несколько функций, которые я использовал для решения этой задачи входят в состав ObjectARX SDK начиная с версии 2008, но никогда ни в одном примере не фигурировали. Есть готовые примеры как найти выбранную грань 3DSOLID, но они очень громоздки, зависят от ПСК, точки зрения, точки указания и т.д. В этом же примере всё очень просто и лаконично и основывается на функции обычного выбора примитивов acedSSGet:

Опубликовано 21.10.2016     Читать далее >>>
29/09/2016

Динамические размеры в AcEdJig с использованием ObjectARXАвтор: Александр Ривилис

Вопрос:
Не могу найти готовые примеры использования динамических размеров в AcEdJig в интернете и в ObjectARX SDK, а описания этого процесса в документации ObjectARX SDK нет. Подскажите как их использовать? Хочется иметь возможность использовать динамические размеры по аналогии с тем, как это делается в командах AutoCAD.

Ответ:
В составе ObjectARX SDK 2007 и 2008 был пример Grip, в котором разъяснялась техника использования динамических размеров. К сожалению этот пример отсутствует в более новых версиях ObjectARX SDK. Я адаптировал этот пример для AutoCAD 2017 и ObjectARX SDK 2017.

Для проверки загрузите этот пример, перестройте приложение и загрузите grip.arx в AutoCAD 2017. Запустите команду RECTJIG и вы увидите как можно задать размеры по горизонтали и вертикали в динамических размерах.

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