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

07/11/2015

Клонированный видовой экран есть, но невидим в только что созданном листе

Вопрос:

Имеется лист "Лист1" с видовым экраном "vp" в нём. Я хочу скопировать этот видовой экран при помощи ObjectARX (метод deepCloneObjects) в существующий, но пока не открытый лист "Лист2" этого же dwg-файла. Но скопированный в "Лист2" видовой экран невидим и не может быть выбран и найден ни при помощи команды СПИСОК (_LIST), ни каким другим способом.

Если же "Лист2" уже был хоть раз открыт перед копированием vp (даже без заполнения информации в диалоговом окне "Параметры листа"), всё работает прекрасно и vp прекрасно виден после перехода в "Лист2".

Что не так?

Опубликовано 07.11.2015     Читать далее >>>
05/11/2015

Копирование размерных стилей между чертежами при помощи C#

Этот пример показывает, как использовать метод WblockCloneObjects для копирования объектов между чертежами – в данном случае это набор размерных стилей. Он так же демонстрирует малоизвестный метод для получения последних (до 6 штук) использованных размерных стилей – GetDimRecentStyleList (по крайней мере, я раньше не натыкался на него).

Небольшое замечание. Распространенная ошибка многих людей для клонирования DBObjects использовать метод Clone. Его следует использовать осторожно, так как он производит лишь «поверхностное» копирование. В зависимости от того, зачем вам нужны клоны как правило лучше использовать WblockClone или DeepClone вместо обычного Clone.

Опубликовано 05.11.2015     Читать далее >>>
03/11/2015

Преобразование геометрических объектов в примитивы AutoCAD

Очень часто вы работаете с геометрическими объектами (экземплярами классов AcGeXXXX) для выполнения некоторых геометрических операций в 2D или в 3D. Для преобразования их в примитивы, которые могут быть добавлены в базу AutoCAD существует очень полезный метод в ObjectARX / AutoCAD .NET API.

Метод "acdbConvertGelibCurveToAcDbCurve", который выполняет эту функцию, был представлен в AutoCAD 2012. Эквивалентный метод в AutoCAD .NET API появился в AutoCAD 2013.

Опубликовано 03.11.2015     Читать далее >>>
31/10/2015

Особенности, характерные для C++ - Часть 5

Отладка сценария или надстроек на Mac
Опубликовано 31.10.2015     Читать далее >>>
31/10/2015

Особенности, характерные для C++ - Часть 4

Отладка сценариев или надстроек Windows
Опубликовано 31.10.2015     Читать далее >>>
30/10/2015

Особенности, характерные для C++ - Часть 3

Файлы заголовков, итерации, равенства объектов, вспомогательные функции
Опубликовано 30.10.2015     Читать далее >>>
30/10/2015

Особенности, характерные для C++ - Часть 2

Типы объектов и приведение типов, события
Опубликовано 30.10.2015     Читать далее >>>
29/10/2015

Особенности, характерные для C++ - Часть 1

Специфические для ОС особенности, объявление объекта, обработка ошибок, свойства
Опубликовано 29.10.2015     Читать далее >>>
28/10/2015

Параметры типа для системных семейств

Вопрос: Надеюсь кто-нибудь сможет мне помочь как получить параметры типа для системных семейств. Я могу получить параметры экземпляра, такие как Площадь или объем, но не могу, например, Ключевую пометку.

Опубликовано 28.10.2015     Читать далее >>>
28/10/2015

Создание рабочего набора

Вопрос: Я разрабатываю надстройку для Revit. Мое приложение создает документ в заданной директории по моему шаблону. Мне нужно создать новый проект с рабочим набором. В интерфейсе приложения пользователь должен выбрать специальность, путь для сохранения файла, название рабочего набора и нажать кнопочку «Создать файл». Приложение должно создать проект с рабочими наборами. Это возможно? Как это сделать? Спасибо.

Опубликовано 28.10.2015     Читать далее >>>
28/10/2015

Установка и очистка признака модификации документа в .NETАвтор: Александр Ривилис

Установка и очистка признака модификации документа в .NET

Для установки и очистки признака модифицированности документа можно воспользоваться недокументированной функцией acdbSetDbMod, которая экспортируется из acdbNN.dll, где NN зависит от версии AutoCAD. Пример использования этой функции:

Опубликовано 28.10.2015     Читать далее >>>
27/10/2015

Редактирование связанного файла

Вопрос: В своем коде я пытаюсь создать пространство внутри связанной модели. Но, получаю ошибку при вызове метода NewSpace:

 

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

Опубликовано 27.10.2015     Читать далее >>>
27/10/2015

Преобразование координат листа в координаты модели

Вопрос: Вы отмечали, что в Revit API есть пробел, связанный с конвертацией между координатами модели и координатами листа. Это как раз то, с чем мы столкнулись.

Нам нужно получить границы геометрии элемента на листе.

В Revit 2016 этот пробел все еще существует? Есть ли какой-то способ обойти это ограничение?

Опубликовано 27.10.2015     Читать далее >>>
22/10/2015

Обновление Палитры Внешних ссылок при помощи Microsoft UI Automation

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

Палитра внешних ссылок AutoCAD превращается в расширенное стандартное окно (ESW) в том случае если установлен плагин Vault для AutoCAD. Поскольку статус возврата / получения файлов отображаются в Палитре Внешних Ссылок, необходимо обновление палитры для отображения текущего состояния в том случае, когда статус изменён извне при помощи клиента Vault.

В силу того, что нет никакого публичного API для этого, мы рассмотрим использование Microsoft UI Automation для имитации нажатия кнопки Обновить. Пожалуйста, обратите внимание, что подход, предложенный здесь не поддерживается Autodesk, а опирается на Win32 и UI Automation API. Если вы будете использовать этот подход, пожалуйста, проверить его более детально в своем приложении.

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

Как объединить отрезки и дуги в полилинию?Автор: Александр Ривилис

Эта статья навеяна темой на форуме Полилинии и дуги в одну полилинию

Начиная с AutoCAD 2011 для этой цели можно воспользоваться методами Entity.JoinEntity и Entity.JoinEntities из AutoCAD .NET API, а также AcDbJoinEntityPE::joinEntity и AcDbJoinEntityPE::joinEntities из ObjectARX. Интереснее показать как можно это реализовать самостоятельно в .NET и в ObjectARX:

Опубликовано 21.10.2015     Читать далее >>>
17/10/2015

Модифицируем Ассоциативный массив по траектории при помощи API

В этой статье мы рассмотрим как можно модифицировать ассоциативный массив по траектории при помощи API. Массив по траектории может зависеть или от расстояния между элементами или между количеством элементов в зависимости от свойств массива. Следующий образец кода уменьшает количество элементов или увеличивает расстояние между элементами для уменьшения количества элементов вдоль пути.

Опубликовано 17.10.2015     Читать далее >>>
15/10/2015

Создание прямоугольного облака (RevCloud) при помощи acedCommandS

Когда выполняется команда Облако (_RevCloud) из скрипта или при помощи функции acedCommandS (command или command-s в Lisp), опции в командной строке не соответствуют опциям в командной строке при запуске команды Облако из пользовательского интерфейса AutoCAD. Например, не появляется опция установки типа облака, когда запускается при помощи acedCommandS.

Опубликовано 15.10.2015     Читать далее >>>
12/10/2015

Закрепление панелей инструментов в рядах с использованием CUI API

Создание и закрепление панелей в AutoCAD API представлено в COM API. Хотя панели можно закреплять при помощи COM API, в нём нет возможности организовывать панели в несколько рядов. Сам AutoCAD использует внутри себя метод закрепления панелей в рядах, который не представлен в COM API.

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

Опубликовано 12.10.2015     Читать далее >>>
02/10/2015

Не могу удалить обработчик события в .NET

Когда моё .NET-приложение загружается, оно подписывается на событие DocumentToBeDestroyed и нормально работает.

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

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