SystemVariableEnumerator - новый класс в AutoCAD 2015
Новый класс SystemVariableEnumerator обеспечивает возможность пройтись по всем публичным системным переменным и получить их имена, типы данных, диапазон изменения (если есть), статус «только для чтения» и где они хранятся. В ObjectARX соответствующий класс называется AcEdSysVarIteratorПример использования:
Отладка и запуск lisp-приложений в консольном AutoCAD
Разбираясь с консольным AutoCAD (напоминаю, что он появился в AutoCAD 2013), обнаружил интересную вещь, связанную с автоматически загруженными приложениямиОчистка файла dwg при открытии
Не секрет, что при открытии файла крайне желательно получить максимально очищенный от мусора файл. Причем так, чтобы очистка выполнялась в максимальном объеме, а ручной работы не было вообще.Как определить нажата ли кнопка Отмена в диалоговом окне DCL
Сейчас довольно редко используются диалоговые окна с помощью DCL в AutoCAD, но если вы используете их, то следующая информация может быть вам полезна.Допустим, вы используете командные реакторы чтобы определить, когда определенные команды отменяются, но когда команда имеет диалоговое окно, нет никакой разницы, если пользователь нажимает Отмена или Да (просто вызывается командный реактор редактора commandEnded). Так, как же вы можете обнаружить разницу между Да и Отмена при выборе в диалоговом окне?
Как получить текст из окна командной строки AutoCAD с использованием ObjectARX
ObjectARX API содержит функцию acedGetAcadTextCmdLine() которая возвращает доступ к CWnd MFC окна командной строки. Окно командной строки содержит множество дочерних окон (в зависимости от версии AutoCAD) так что нам понадобится пройтись по ним, чтобы найти текст, так что будем использовать Win32 API для итерации по окнам и получения текста.Как-то так…
Хранение пользовательских настроек плагина для Revit
Вопрос: Я ищу подходящий способ как сохранить пользовательские настройки для моего плагина.
В моем случае мне нужно сохранить пути к файлам, настройки импорта и т.п., чтобы при следующем запуске плагина, все данные, введённые пользователем ранее, оставались такими же, без необходимости забивать их заново.
Есть какая-нибудь инструкция, или может быть в Revit API существует подобная функциональность?
Использование всплывающих подсказок в надстройке Revit
Вопрос: Кто-нибудь знает можно ли использовать строку состояния для отображения своих собственных сообщений в любой момент? И если можно, то как?
Когда пользователю предлагается выбрать элементы или некую область, то строку состояния можно довольно легко задействовать:
Необходимость использования Release версии библиотек MFC/CRT при компиляции ObjectARX приложения
Вопрос:
Мое приложение использует динамические версии MFC и DLL библиотеку времени выполнения. Когда я линкую Debug версию, появляется предупреждение о конфликте MSVCRT с другими библиотеками. Когда я использую ключ линковки /verbose:lib, я вижу, что линкуются debug-версии MFC и библиотеки времени выполнения. Руководство пользователя ObjectARX указывает не использовать debug-версии. Что следует сделать, чтобы линковать с release-версиями MFC?
Решение:
Все что нужно сделать – это убрать определение _DEBUG при включении файлов заголовков MFC header
Как получить устройства регулирования потока для напорной трубопроводной сетиАвтор: Виктор Чекалин
Напорная трубопроводная сеть (Pressure Network) в Civil содержит три типа объектов:
- Напорные трубы (Pressure Pipes)
- Фитинги (Fittings)
- Устройства регулирования потока (Appurtenances)
Для работы с напорными трубопроводными сетями в Civil .NET API необходимо подключить сборку AeccPressurePipesMgd.dll.
Разрешение конфликтов MFC между ObjectARX MFC DLL и AutoCAD
Класс CAcModuleResourceOverride обеспечивает очень удобный способ для переключения дескриптора ресурсов MFC между AutoCAD и ресурсами вашего собственного ARX DLL приложения.Если вам нужно использовать функции пользовательского интерфейса AutoCAD внутри ваших функций, вы можете использовать класс CAcModuleResourceOverride() опираясь на его деструктор (который восстанавливает дескриптор ресурсов MFC AutoCAD)
MFC: Проблемы с CAcModuleResourceOverride
Возможно вы замечали, что при использовании объекта CAcModuleResourceOverride для переключения дескриптора ресурсов по-умолчанию (дескриптора ресурсов AutoCAD) на дескриптор ресурсов вашего файла приложения, невозможно вызвать AutoCAD или некоторые ARX функции, такие как acedGetFileD().Отсоединение балки от плоскости
Вопрос: В пользовательском интерфейсе с помощью контекстного меню балки есть команда «Отсоединить от плоскости». А как можно сделать то же самое, только программно?
После того, как я нажал правую кнопку на балке и выбрал «Отсоединить от плоскости», Revit удаляет параметр Рабочая плоскость, т.е. встроенный параметр BuiltInParameter.SKETCH_PLANE_PARAM, и делает активным параметр Базовый уровень, который до этого был только для чтения. Хотелось бы проделать эти действия с помощью Revit API.
Я попробовал удалить параметр Рабочая плоскость, но это не помогло. Свойство FamilyInstance.Host также является только для чтения, поэтому с помощью него не получится отсоединить балку от рабочей плоскости.
Есть ли способ отсоединить балку от плоскости программно?
Когда метод IsEffectivelyErased возвращает True
Для объектов, которые содержатся в базе данных и которые не были сами удалены может быть три причины по которым isEffectivelyErased() может вернуть true:
Создание блока с многострочным определением атрибута
Это пример кода, который создает определение блока с многострочным определением атрибута, а затем создает вставку блока из определения блока.
Лёгкое программирование под Autodesk Vault. Часть 3Автор: Дмитрий Емельянов
Клиент-серверное общение VaultНаименование системных семействАвтор: Виктор Чекалин
В Revit существует 2 типа семейств: пользовательские семейства и системные семейства. Пользовательские семейства в большинстве случаев являются редактируемыми и их можно сохранить в отдельный файл семейства (.rfa). С системными же семействами такое проделать не получится. Можно лишь создавать новые типоразмеры системных семейств.
Где находятся сборки COM взаимодействия (Interop) ?
Начиная с AutoCAD 2013 мы прекратили регистрацию сборок взаимодействия с COM AutoCAD в Глобальном кэше сборок (GAC). Мы продолжаем поставлять их в составе ObjectARX SDK.Правильный путь использования этих сборок следующий:
Получение изолиний поверхности (Surface)
Это пример кода получающий изолинии вдоль направлений U и V поверхности. Полученные кривые изолиний добавляются в базу данных чертежа.RevitLookup. Исследуем базу данных RevitАвтор: Виктор Чекалин
В статьях я часто упоминаю о довольно полезной утилите – RevitLookup.
Данная утилита позволяет нам взглянуть на внутреннюю базу данных Revit прямо из пользовательского интерфейса без необходимости писать тестовые надстройки, в которых будем проверять значение каких-либо свойств элемента.
С помощью утилиты мы можем просмотреть:
- Абсолютно все элементы, которые существуют в базе данных текущего проекта, включая те, которые пользователь никогда не увидит.
- Значения всех свойств класса элемента.
- Свойства приложения и открытых документов
- Распечатать свойства элемента на принтере