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

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     Читать далее >>>
01/10/2015

Создание семейства в памяти

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

 

Опубликовано 01.10.2015     Читать далее >>>
30/09/2015

Объединение геометрии стен и колонн

Я пытался найти в блоге пример использования объединения геометрии, но так и не смог. Собственно, вот он.

Опубликовано 30.09.2015     Читать далее >>>
30/09/2015

Перечисление элементов

Очень много людей используют FilteredElementCollector, например, вот так:

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

    = new FilteredElementCollector( doc );

 

  collector.OfClass( typeof( Family ) ).ToElements();

 

  IEnumerable<Family> nestedFamilies

    = collector.ToElements().Cast<Family>();

 

  String str = "";

 

  foreach( Family f in nestedFamilies )

  {

    str = str + f.Name + "\n";

 

    foreach( ElementId symbolId in

      f.GetFamilySymbolIds() )

    {

      Element symbolElem = doc.GetElement(

        symbolId );

 

      str = str + " типоразмер: "

        + symbolElem.Name + "\n";

    }

  }

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

Создание крыши

Изначально вопрос бы задан на форуме Revit API и Stack Overflow:

Вопрос: У меня проблема с программным созданием крыши. Я знаю, как создавать лестницы, к примеру, используя CreateSketchedLanding с корректными параметрами. Но вот как воздать крышу с нуля, не пойму. Может кто-нибудь направить меня в нужное русло?

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

Чтение общей площади зоны здания и площади офисных зон

Небольшой пример того, как читать площадь зон, являющихся общей площадью здания и офисной зоной. Начнем с получение объектов класса Area (зона), используя FilteredElementCollector и фильтр SpatialElement. Затем, AreaScheme и, если требуется, ограничим по уровню, на котором располагается зона. В итоге отобразим общую площадь зон по зданию и площадь офисных зон.

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

Закрытие активного документа

На форуме один из пользователей говорит, что он хочет закрыть активный документ и заново его открыть.

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

О геометрии в Revit и грани цилиндров

Вопрос: При обходе по граням, представляющим границы цилиндра, я обнаружил, что цилиндр имеет 2 плоских грани (верх и низ цилиндра) и две цилиндрических грани (два полуцилиндра). Я проверил еще несколько различных закругленных поверхностей в Revit и заметил, что все они поделены на 2 или 4 полу- или четверть-цилиндра. Почему так?

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

Отмена ограничений для VendorId

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

Нахождение конечных точек оси цилиндрического твердого тела

В недавнем запросе от разработчика потребовалось найти конечные точки оси цилиндрического твердого тела. Для этого требуется найти круглые ребра тела и найти их центры. Я вспомнил про элегантный образец кода Gilles Chanteauна форуме, который использует Linq запрос к BRep API здесь. Мы немного изменим его код чтобы получить концы осей цилиндра. Вот немного модифицированный код и благодарности Gilles.
Опубликовано 22.09.2015     Читать далее >>>
21/09/2015

Синхронизация свойств Vault для эквивалентности свойств

Рассматриваются особенности метода GetComponentProperties в Vault 2016 API
Опубликовано 21.09.2015     Читать далее >>>
20/09/2015

Получение данных о семействе и типоразмере элемента трубопроводной сетиАвтор: Дмитрий Загорулькин

Иногда нужно получить данные о семействе и типоразмере трубы или колодца, которые уже присутствуют на чертеже. Например - чтобы создать такой же элемент в другом месте сети. Метод создания трубы или колодца в сети требует указания ObjectId для семейства и типоразмера (из справки):

Опубликовано 20.09.2015     Читать далее >>>
18/09/2015

Устанавливаем ортографический вид без изменения ПСК

Вот предыдущая статья с подобной темой об установке ортографического вида. В приведённом коде есть ограничение, связанное с тем что модифицируется активная запись таблицы ВЭкранов (ViewportTableRecord) и после изменения вида имя текущей ПСК не отображается в Видовом Кубе. Когда же мы меняем вид при помощи Видового Куба и переключаемся на Вид Сверху – это меняет только вид, но не меняет текущую ПСК. Также оси X и Y соответственно выравниваются горизонтально и вертикально. Вот код, который позволяет добиться подобного поведения при помощи API. Он устанавливает направление вида вдоль оси +Z и выравнивает оси X и Y так же, как это делает Видовой Куб:

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

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

Особенности, Fusion 360 API, характерные для Python
Опубликовано 17.09.2015     Читать далее >>>
16/09/2015

Как удалить профиль вращения после создания тела вращения

Иногда я получаю запросы от партнеров ADN о том что:

“После использования AcDb3dSolid::createRevolvedSolid() образующая кривая вращения видна в твердом теле.”

Профиль используемый для вращения виден в твёрдом теле как показано на картинке.

Он может быть удалён при помощи метода cleanBody класса AcDb3dSolid, который удаляет все грани и ребра, которые не нужны для поддержки топологии твердого тела.

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

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

Особенности, Fusion 360 API, характерные для Python
Опубликовано 15.09.2015     Читать далее >>>
15/09/2015

Регистрация команды для функции обратного вызова UnknownCommand

Этот пример отвечает на множество вопросов по поводу функции обратного вызова unknownCommand и использования UnknownCommand.

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

В этом примере пользователь пытается ввести некоторую неизвестную команду, например, в функции обратного вызова, запущенной из реактора события unknownCommand, мы будем загружать наш "TestUknCom".

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

Создание новой ТП на трассе для трубопроводной сети в заданном пикетеАвтор: Дмитрий Загорулькин

С помощью инструментов пользовательского интерфейса редактирования трассы, мы легко можем добавить на нее точку пересечения (ТП). Однако в API Civil 3D 2013-2016 нет никакого готового метода, позволяющего выполнить то же самое программно. Мне же был крайне необходим такой метод для автоматизации работы с видами профилей трубопроводных сетей, поэтому пришлось разрабатывать его самостоятельно.
В общем случае, эта задача крайне непроста. Достаточно взглянуть на список возможных типов объектов, которые могут входить в состав трассы:

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