Создание прямоугольного облака (RevCloud) при помощи acedCommandS
Когда выполняется команда Облако (_RevCloud) из скрипта или при помощи функции acedCommandS (command или command-s в Lisp), опции в командной строке не соответствуют опциям в командной строке при запуске команды Облако из пользовательского интерфейса AutoCAD. Например, не появляется опция установки типа облака, когда запускается при помощи acedCommandS.
Закрепление панелей инструментов в рядах с использованием CUI API
Создание и закрепление панелей в AutoCAD API представлено в COM API. Хотя панели можно закреплять при помощи COM API, в нём нет возможности организовывать панели в несколько рядов. Сам AutoCAD использует внутри себя метод закрепления панелей в рядах, который не представлен в COM API.
Способ обойти это ограничение заключается в использовании для настройки панелей инструментов в рабочем пространстве при помощи CUI API. Вот пример кода, который организует панели инструментов в текущем рабочем пространстве, как показано на следующем скриншоте. Все остальные панели инструментов в текущем рабочем пространстве скрыты. При необходимости вы можете модифицировать код, чтобы показать другие панели.
Не могу удалить обработчик события в .NET
Когда моё .NET-приложение загружается, оно подписывается на событие DocumentToBeDestroyed и нормально работает.Когда позднее я пытаюсь отписаться от обработки этого события, у меня это не получается и мой обработчик продолжает вызываться.
Создание семейства в памяти
Вопрос: Когда создается новое семейство, то ему автоматически присваивается имя, которое можно увидеть в заголовке. Возможно ли изменить это имя и заголовок без сохранения файла? Я не хочу сохранять фал. Я просто хочу загрузить его сразу в другую модель.
Объединение геометрии стен и колонн
Я пытался найти в блоге пример использования объединения геометрии, но так и не смог. Собственно, вот он.
Перечисление элементов
Очень много людей используют FilteredElementCollector, например, вот так:
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";
}
}
Создание крыши
Изначально вопрос бы задан на форуме Revit API и Stack Overflow:
Вопрос: У меня проблема с программным созданием крыши. Я знаю, как создавать лестницы, к примеру, используя CreateSketchedLanding с корректными параметрами. Но вот как воздать крышу с нуля, не пойму. Может кто-нибудь направить меня в нужное русло?
Чтение общей площади зоны здания и площади офисных зон
Небольшой пример того, как читать площадь зон, являющихся общей площадью здания и офисной зоной. Начнем с получение объектов класса Area (зона), используя FilteredElementCollector и фильтр SpatialElement. Затем, AreaScheme и, если требуется, ограничим по уровню, на котором располагается зона. В итоге отобразим общую площадь зон по зданию и площадь офисных зон.
Закрытие активного документа
На форуме один из пользователей говорит, что он хочет закрыть активный документ и заново его открыть.
О геометрии в Revit и грани цилиндров
Вопрос: При обходе по граням, представляющим границы цилиндра, я обнаружил, что цилиндр имеет 2 плоских грани (верх и низ цилиндра) и две цилиндрических грани (два полуцилиндра). Я проверил еще несколько различных закругленных поверхностей в Revit и заметил, что все они поделены на 2 или 4 полу- или четверть-цилиндра. Почему так?
Нахождение конечных точек оси цилиндрического твердого тела
В недавнем запросе от разработчика потребовалось найти конечные точки оси цилиндрического твердого тела. Для этого требуется найти круглые ребра тела и найти их центры. Я вспомнил про элегантный образец кода Gilles Chanteauна форуме, который использует Linq запрос к BRep API здесь. Мы немного изменим его код чтобы получить концы осей цилиндра. Вот немного модифицированный код и благодарности Gilles.Синхронизация свойств Vault для эквивалентности свойств
Рассматриваются особенности метода GetComponentProperties в Vault 2016 APIПолучение данных о семействе и типоразмере элемента трубопроводной сетиАвтор: Дмитрий Загорулькин
Иногда нужно получить данные о семействе и типоразмере трубы или колодца, которые уже присутствуют на чертеже. Например - чтобы создать такой же элемент в другом месте сети. Метод создания трубы или колодца в сети требует указания ObjectId для семейства и типоразмера (из справки):
Устанавливаем ортографический вид без изменения ПСК
Вот предыдущая статья с подобной темой об установке ортографического вида. В приведённом коде есть ограничение, связанное с тем что модифицируется активная запись таблицы ВЭкранов (ViewportTableRecord) и после изменения вида имя текущей ПСК не отображается в Видовом Кубе. Когда же мы меняем вид при помощи Видового Куба и переключаемся на Вид Сверху – это меняет только вид, но не меняет текущую ПСК. Также оси X и Y соответственно выравниваются горизонтально и вертикально. Вот код, который позволяет добиться подобного поведения при помощи API. Он устанавливает направление вида вдоль оси +Z и выравнивает оси X и Y так же, как это делает Видовой Куб:
Особенности, характерные для Python - Часть 3
Особенности, Fusion 360 API, характерные для PythonКак удалить профиль вращения после создания тела вращения
Иногда я получаю запросы от партнеров ADN о том что:“После использования AcDb3dSolid::createRevolvedSolid() образующая кривая вращения видна в твердом теле.”
Профиль используемый для вращения виден в твёрдом теле как показано на картинке.
Он может быть удалён при помощи метода cleanBody класса AcDb3dSolid, который удаляет все грани и ребра, которые не нужны для поддержки топологии твердого тела.
Особенности, характерные для Python - Часть 2
Особенности, Fusion 360 API, характерные для PythonРегистрация команды для функции обратного вызова UnknownCommand
Этот пример отвечает на множество вопросов по поводу функции обратного вызова unknownCommand и использования UnknownCommand.Когда когда-либо пользователь вводит неправильное или незарегистрированное имя команды или опечатывается, мы можем использовать механизм, чтобы перехватить команду с опечаткой и отправить нашу команду или зарегистрировать новую команду и отправить её.
В этом примере пользователь пытается ввести некоторую неизвестную команду, например, в функции обратного вызова, запущенной из реактора события unknownCommand, мы будем загружать наш "TestUknCom".
Создание новой ТП на трассе для трубопроводной сети в заданном пикетеАвтор: Дмитрий Загорулькин
С помощью инструментов пользовательского интерфейса редактирования трассы, мы легко можем добавить на нее точку пересечения (ТП). Однако в API Civil 3D 2013-2016 нет никакого готового метода, позволяющего выполнить то же самое программно. Мне же был крайне необходим такой метод для автоматизации работы с видами профилей трубопроводных сетей, поэтому пришлось разрабатывать его самостоятельно.
В общем случае, эта задача крайне непроста. Достаточно взглянуть на список возможных типов объектов, которые могут входить в состав трассы: