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

29/03/2014

SystemVariableEnumerator - новый класс в AutoCAD 2015

Новый класс SystemVariableEnumerator обеспечивает возможность пройтись по всем публичным системным переменным и получить их имена, типы данных, диапазон изменения (если есть), статус «только для чтения» и где они хранятся. В ObjectARX соответствующий класс называется AcEdSysVarIterator

Пример использования:

Опубликовано 29.03.2014     Читать далее >>>
28/03/2014

Отладка и запуск lisp-приложений в консольном AutoCAD

Разбираясь с консольным AutoCAD (напоминаю, что он появился в AutoCAD 2013), обнаружил интересную вещь, связанную с автоматически загруженными приложениями
Опубликовано 28.03.2014     Читать далее >>>
28/03/2014

Очистка файла dwg при открытии

Не секрет, что при открытии файла крайне желательно получить максимально очищенный от мусора файл. Причем так, чтобы очистка выполнялась в максимальном объеме, а ручной работы не было вообще.
Опубликовано 28.03.2014     Читать далее >>>
27/03/2014

Как определить нажата ли кнопка Отмена в диалоговом окне DCL

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

Допустим, вы используете командные реакторы чтобы определить, когда определенные команды отменяются, но когда команда имеет диалоговое окно, нет никакой разницы, если пользователь нажимает Отмена или Да (просто вызывается командный реактор редактора commandEnded). Так, как же вы можете обнаружить разницу между Да и Отмена при выборе в диалоговом окне?

Опубликовано 27.03.2014     Читать далее >>>
24/03/2014

Как получить текст из окна командной строки AutoCAD с использованием ObjectARX

ObjectARX API содержит функцию acedGetAcadTextCmdLine() которая возвращает доступ к CWnd MFC окна командной строки. Окно командной строки содержит множество дочерних окон (в зависимости от версии AutoCAD) так что нам понадобится пройтись по ним, чтобы найти текст, так что будем использовать Win32 API для итерации по окнам и получения текста.

Как-то так…

Опубликовано 24.03.2014     Читать далее >>>
24/03/2014

Хранение пользовательских настроек плагина для Revit

Вопрос: Я ищу подходящий способ как сохранить пользовательские настройки для моего плагина.

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

Есть какая-нибудь инструкция, или может быть в Revit API существует подобная функциональность?

Опубликовано 24.03.2014     Читать далее >>>
23/03/2014

Использование всплывающих подсказок в надстройке Revit

Вопрос: Кто-нибудь знает можно ли использовать строку состояния для отображения своих собственных сообщений в любой момент? И если можно, то как?

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

Опубликовано 23.03.2014     Читать далее >>>
21/03/2014

Необходимость использования Release версии библиотек MFC/CRT при компиляции ObjectARX приложения

Вопрос:
Мое приложение использует динамические версии MFC и DLL библиотеку времени выполнения. Когда я линкую Debug версию, появляется предупреждение о конфликте MSVCRT с другими библиотеками. Когда я использую ключ линковки /verbose:lib, я вижу, что линкуются debug-версии MFC и библиотеки времени выполнения. Руководство пользователя ObjectARX указывает не использовать debug-версии. Что следует сделать, чтобы линковать с release-версиями MFC?

Решение:
Все что нужно сделать – это убрать определение _DEBUG при включении файлов заголовков MFC header

Опубликовано 21.03.2014     Читать далее >>>
19/03/2014

Как получить устройства регулирования потока для напорной трубопроводной сетиАвтор: Виктор Чекалин

Напорная трубопроводная сеть (Pressure Network) в Civil содержит три типа объектов:

  • Напорные трубы (Pressure Pipes)
  • Фитинги (Fittings)
  • Устройства регулирования потока (Appurtenances)

Для работы с напорными трубопроводными сетями в Civil .NET API необходимо подключить сборку AeccPressurePipesMgd.dll.

Опубликовано 19.03.2014     Читать далее >>>
19/03/2014

Разрешение конфликтов MFC между ObjectARX MFC DLL и AutoCAD

Класс CAcModuleResourceOverride обеспечивает очень удобный способ для переключения дескриптора ресурсов MFC между AutoCAD и ресурсами вашего собственного ARX DLL приложения.

Если вам нужно использовать функции пользовательского интерфейса AutoCAD внутри ваших функций, вы можете использовать класс CAcModuleResourceOverride() опираясь на его деструктор (который восстанавливает дескриптор ресурсов MFC AutoCAD)

Опубликовано 19.03.2014     Читать далее >>>
17/03/2014

MFC: Проблемы с CAcModuleResourceOverride

Возможно вы замечали, что при использовании объекта CAcModuleResourceOverride для переключения дескриптора ресурсов по-умолчанию (дескриптора ресурсов AutoCAD) на дескриптор ресурсов вашего файла приложения, невозможно вызвать AutoCAD или некоторые ARX функции, такие как acedGetFileD().
Опубликовано 17.03.2014     Читать далее >>>
15/03/2014

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

Вопрос: В пользовательском интерфейсе с помощью контекстного меню балки есть команда «Отсоединить от плоскости». А как можно сделать то же самое, только программно?

После того, как я нажал правую кнопку на балке и выбрал «Отсоединить от плоскости», Revit удаляет параметр Рабочая плоскость, т.е. встроенный параметр BuiltInParameter.SKETCH_PLANE_PARAM, и делает активным параметр Базовый уровень, который до этого был только для чтения. Хотелось бы проделать эти действия с помощью Revit API.

Я попробовал удалить параметр Рабочая плоскость, но это не помогло. Свойство FamilyInstance.Host также является только для чтения, поэтому с помощью него не получится отсоединить балку от рабочей плоскости.

Есть ли способ отсоединить балку от плоскости программно?

Опубликовано 15.03.2014     Читать далее >>>
14/03/2014

Когда метод IsEffectivelyErased возвращает True

Для объектов, которые содержатся в базе данных и которые не были сами удалены может быть три причины по которым isEffectivelyErased() может вернуть true:

Опубликовано 14.03.2014     Читать далее >>>
12/03/2014

Создание блока с многострочным определением атрибута

Это пример кода, который создает определение блока с многострочным определением атрибута, а затем создает вставку блока из определения блока.

Опубликовано 12.03.2014     Читать далее >>>
12/03/2014

Лёгкое программирование под Autodesk Vault. Часть 3Автор: Дмитрий Емельянов

Клиент-серверное общение Vault
Опубликовано 12.03.2014     Читать далее >>>
10/03/2014

Наименование системных семействАвтор: Виктор Чекалин

В Revit существует 2 типа семейств: пользовательские семейства и системные семейства. Пользовательские семейства в большинстве случаев являются редактируемыми и их можно сохранить в отдельный файл семейства (.rfa). С системными же семействами такое проделать не получится. Можно лишь создавать новые типоразмеры системных семейств.

Опубликовано 10.03.2014     Читать далее >>>
10/03/2014

Где находятся сборки COM взаимодействия (Interop) ?

Начиная с AutoCAD 2013 мы прекратили регистрацию сборок взаимодействия с COM AutoCAD в Глобальном кэше сборок (GAC). Мы продолжаем поставлять их в составе ObjectARX SDK.

Правильный путь использования этих сборок следующий:

Опубликовано 10.03.2014     Читать далее >>>
10/03/2014

Получение изолиний поверхности (Surface)

Это пример кода получающий изолинии вдоль направлений U и V поверхности. Полученные кривые изолиний добавляются в базу данных чертежа.
Опубликовано 10.03.2014     Читать далее >>>
09/03/2014

RevitLookup. Исследуем базу данных RevitАвтор: Виктор Чекалин

В статьях я часто упоминаю о довольно полезной утилите – RevitLookup.

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

С помощью утилиты мы можем просмотреть:

  • Абсолютно все элементы, которые существуют в базе данных текущего проекта, включая те, которые пользователь никогда не увидит.
  • Значения всех свойств класса элемента.
  • Свойства приложения и открытых документов
  • Распечатать свойства элемента на принтере
Опубликовано 09.03.2014     Читать далее >>>