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

23/09/2014

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

Вопрос: С помощью API мне нужно получить поверхность, которая находится на пересечении заданной точки и заданного направления. Для этого я использую класс ReferenceIntersector. Вот пример моего кода:

Код - C#: [Выделить]
  ReferenceIntersector refIntersector

    = new ReferenceIntersector( id,

      FindReferenceTarget.Face, selectedView );

 

  XYZ origin = new XYZ( x, y, z );

 

  ReferenceWithContext refContext

    = refIntersector.FindNearest(

      origin, new XYZ( 0, 0, -1 ) );

 

  Reference refObject = refContext.GetReference();

А что мне делать дальше с refObject? Как мне в итоге получить ссылку на поверхность?

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

Использование потоков (Thread) для фоновой обработки

Вопрос:

Внутри моей команды я хочу запустить фоновую задачу для синхронизации с базой данных. Как только эта задача заканчивается я хотел бы при помощи AutoCAD .NET API сделать некоторые изменения в базе данных. Однако, когда я вызываю функции AutoCAD API из этой задачи, они не работают. Например, the MdiActiveDocument равен null.

Ответ:

AutoCAD .NET API не позволяют использовать мультизадачность. Необходимо вызывать функции API из главной задачи.

Если вы находитесь в другой задаче, вам необходимо настроить вызов из главной задачи. Самый простой способ достичь этого – это создать объект System.Windows.Forms.Control в главной задаче и использовать его метод Invoke() для запуска функции которая и выполнит окончательную обработку.

Опубликовано 23.09.2014     Читать далее >>>
22/09/2014

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

Вопрос: Есть ли какой-нибудь метод, с помощью которого можно определить, присоединен ли экземпляр семейства к чему-либо?

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

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

Доступ к настройкам из ленты и закрепление всплывающей панели

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

 

 

Опубликовано 21.09.2014     Читать далее >>>
20/09/2014

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

Еще один небольшой пример, демонстрирующий достоинства утилиты RevitLookup.

В данной статье покажем это на примере удаления описания общего параметра, который предоставил нам Trevor Taylor из компании ZGF.

Задача

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

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

Получение указателя на объект по ObjectID

Иногда необходимо по ObjectID получить указатель на объект. Казалось бы, ничего особо сложного нет - в ActiveX есть метод vla-ObjectIdToObject с соответствующим параметрами. Но не все так просто, как хотелось бы.
Опубликовано 19.09.2014     Читать далее >>>
14/09/2014

Определение типа электрооборудования

Вопрос: Как правильно определить различия между распределительным щитом и щитом осветительных и бытовых приборов с помощью API? Например, из базового примера проекта Revit MEP, как мне определить тип оборудования SWB и MDP-1?

 

Опубликовано 14.09.2014     Читать далее >>>
13/09/2014

Ассоциативный Массив и его API

В AutoCAD 2012 появился так называемый ассоциативный массив. Одновременно с этим появилось и API для его создания, редактирования и получения информации о существующем ассоциативном массиве. Например, вот так можно получить характеристики массива:

Опубликовано 13.09.2014     Читать далее >>>
13/09/2014

Уникальность наименования и класс NamingUtils

В Revit API полно сюрпризов. Вот один из них, которых правел нас к новому вспомогательному классу, который раньше был не замеченным.

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

Как удалить неиспользуемые и необработанные ссылки на данные (DataLink)?Автор: Александр Ривилис

Для необработанных ссылок на данные свойство IsValid всегда равно false. А вот с неиспользуемыми ссылками на данные несколько сложнее. Метод DataLink.GetTargets() возвращает коллекцию ObjectId объектов/примитивов, которые используют эту связь. Если таблица (Table) использовала связь, то её ObjectId содержится в коллекции DataLink.GetTargets(). Если эту таблицу стереть, то DataLink.GetTargets() не будет содержать ObjectId таблицы, а будет содержать ObjectId для объекта TableContent (это не примитив, т.е. не является наследником Entity). Таким образом, если DataLink.GetTargets() не содержит ObjectId ни одного примитива, то соответственно он не используется и его можно удалить. Следующий код это и показывает:

Опубликовано 10.09.2014     Читать далее >>>
08/09/2014

Как получить неиспользуемые внешние ссылки, растры и подложки?Автор: Александр Ривилис

Вопрос: Мне нужно средствами AutoCAD .NET API получить неиспользуемые внешние ссылки (XREF), растры (IMAGE), pdf-подложки (PDFUNDERLAY) и dwf-подложки (DWFUNDERLAY). Как это можно сделать?

Ответ: Для внешних ссылок достаточно найти все записи таблицы блоков (BlockTableRecord), свойство XrefStatus которых отлично от NotAnXref и для них справедливо выражение GetBlockReferenceIds(false, true).Count == 0

Для растров и подложек процедура несколько иная. Необходимо найти соответствующую таблицу (ACAD_IMAGE_DICT – для IMAGE, ACAD_PDFDEFINITIONS – для PDFUNDERLAY, ACAD_DWFDEFINITIONS – для DWFUNDERLAY) и получить из неё все ObjectId элементов. После этого достаточно воспользоваться методом Database.Purge(), чтобы получить только те ObjectId элементов, которые не используются.

Опубликовано 08.09.2014     Читать далее >>>
04/09/2014

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

Свойства. Введение
Опубликовано 04.09.2014     Читать далее >>>
01/09/2014

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

Элементы. Обновление информации
Опубликовано 01.09.2014     Читать далее >>>
28/08/2014

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

Элементы. Создание
Опубликовано 28.08.2014     Читать далее >>>
28/08/2014

Версия документа и количество сохранений

Александр Бушман (Alexander Buschmann) из компании IDAT Ingenieurbüro für Datenverarbeitung in der Technik GmbH прокомментировал статью о том, как отследить изменение семейства:

В Revit 2015 есть класс DocumentVersion, в котором есть свойства GUID и количество сохранений файла.

Имея эту информацию можно определить, были ли сделаны изменения или нет.

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

Опубликовано 28.08.2014     Читать далее >>>
27/08/2014

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

Элементы. Получение информации
Опубликовано 27.08.2014     Читать далее >>>
27/08/2014

Обработка случая дублирования типоразмеров при копировании элементов через API

При использовании метода ElementTransformUtils.CopyElements можно получить вот такое вот предупреждение:

 

Обработка случая дублирования типоразмеров при копировании элементов через API

Это окно может появится, когда вы копируете тип, которого не существует в проекте, но вложенный тип уже находится в этом же проекте.

Опубликовано 27.08.2014     Читать далее >>>
26/08/2014

Синхронизация видов Пространства Модели

Это пример кода синхронизирующий параметры двух ВЭкранов пространства Модели. Для простоты код подразумевает, что Пространство Модели уже разделено вертикально на два ВЭкрана одинаковой ширины. Если ширина ВЭкранов не одинакова код сделает её одинаковой перед синхронизацией параметров ВЭкранов.

Опубликовано 26.08.2014     Читать далее >>>
25/08/2014

Добавление пространственного фильтра к вставке блока

В этой статье сделаны небольшие исправления для существующей статьи написанной моим коллегой Xiaodongв 2013, связанные с внутренними изменениями, которые приводят к аварийному завершению AutoCAD 2015 на 32-разрядных машинах. Чтобы предотвратить это я написал универсальный код.
Опубликовано 25.08.2014     Читать далее >>>