Как удалить команду из списка доступных команд AutoCADАвтор: Александр Ривилис
Это экзотическая ситуация, но может возникнуть необходимость полностью запретить команду AutoCAD. Один из вариантов – выполнение метода veto() в событии DocumentLockModeChanged. Но при этом команда есть в списке доступных команд и её выполнение начинается, а затем прерывается.
Есть более радикальный метод – использование метода RemoveCommand недокументированного класса Utils из пространства имён Autodesk.AutoCAD.Internal. Этот метод – обертка для метода AcEdCommandStack::removeCmd из ObjectARX. Ему передаются два параметра – имя группы команд и имя команды. Обычно достаточно передать глобальное имя команды, но бывают и исключения. Поэтому мы удалим команду и по глобальному и по локальному имени. Так как мы не знаем в какой локализации AutoCAD будет выполняться код, то нам нужно получить имя локализованной команды по её глобальному имени. Для этой цели в ObjectARX есть функция acedGetCName которая в версиях AutoCAD до 2012 включительно содержится в acad.exe, а позднее в accore.dll Мы воспользуемся P/Invoke для вызова её из .NET
Как получить 3D-полилинию, по которой получается тело сдвигаАвтор: Александр Ривилис
Вопрос: Имеется труба - твердое тело, полученной сдвигом круга (Circle) по траектории, образованной 3D-полилинией (3DPoly). Как получить вершины 3D-полилинии?
Ответ: Вариантов решения этой задачи несколько:
1) Использование метода GetGripPoints. Для тела у которого не очищена история редактирования если пропустить первые четыре ручки, то мы получим вершины 3D-полилинии. Но если история очищена, то получить вершины таким образом не получится, так как расположение ручек совсем другое.
2) Использовать BREP .NET API для получения информации о вершинах.
Второй вариант мы и рассмотрим, так как он более универсальный. Нам следует получить все ребра (Edge) твердого тела, выделить из них круглые (CircularArc3d) и эллиптические (EllipticalArc3d) и найти их центры.
Разделение ячеек спецификацииАвтор: Виктор Чекалин
Евгений Пашин задал на форуме интересный вопрос. В пользовательском интерфейсе есть возможность объединения и разделения ячеек спецификации. С помощью Revit API объединить ячейки достаточно просто. Нужно попользоваться методом TableSectionData.MergeCells. А как снять объединение с помощью Revit API?
Рисование кривых по списку точек
Вопрос: Я пытаюсь нарисовать соприкасающиеся друг с другом кривые в активном документе ActiveUIDocument.Document, из списка точек XYZ. Большинство примеров рисования кривых демонстрируется в редакторе семейств FamilyDocument и я так и не могу их адаптировать для рисования в проекте. Необходимо создавать рабочую плоскость для таких кривых?
Стоит ли использовать постоянные объектные реакторы?
Тот факт, что в AutoCAD можно "прописать" собственные реакции на какие-либо действия ACAD'a, не секрет.Как выполнить Overrule для замкнутого сплайна так, чтобы он был заполнен своим цветомАвтор: Александр Ривилис
Вопрос: Как выполнить Overrule для замкнутого сплайна (Spline) так, чтобы он был заполнен своим цветом?
Ответ: Простейший способ – это выполнить аппроксимацию сплайна и рисовать сплайн при помощи Geometry.Polygon указав в качестве параметра точки аппроксимации.
Ниже пример как это можно реализовать:
Как в .NET выбрать грани 3DSOLID и изменить им цвет.Автор: Александр Ривилис
Недавно мы обсуждали как это сделать средствами ObjectARX. Сегодня рассмотрим, как это делается в .NET API:
Как в ObjectARX выбрать грани 3DSOLID и изменить им цветАвтор: Александр Ривилис
Оказалось, что на такой, казалось бы простой и распространенный вопрос найти примера в интернете не удается. Более того несколько функций, которые я использовал для решения этой задачи входят в состав ObjectARX SDK начиная с версии 2008, но никогда ни в одном примере не фигурировали. Есть готовые примеры как найти выбранную грань 3DSOLID, но они очень громоздки, зависят от ПСК, точки зрения, точки указания и т.д. В этом же примере всё очень просто и лаконично и основывается на функции обычного выбора примитивов acedSSGet:
Обзор Data Management API
Рассматриваются общие сведения по Data Management API Autodesk ForgeAutodesk Forge: видеозаписи обучающих вебинаров
Autodesk Forge: видеозаписи обучающих вебинаров.
Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360
Autodesk Forge: видеозаписи обучающих вебинаров
Autodesk Forge: видеозаписи обучающих вебинаров.
Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360
Autodesk Forge: видеозаписи обучающих вебинаров
Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360Ознакомиться с записями обучающих вебинаров вы можете по ссылкам в таблице ниже.
Руководство по получению 3-Legged токена для OAuth Autodesk Forge
Рассматриваются особенности получения 3-Legged токена для OAuth Autodesk ForgeАналог attout и attin
В составе ExpressTools есть две весьма интересные команды - attout и attin.Как получить форму воздуховода и трубы
Это довольно старая тема, которая ранее уже обсуждалась. Еще тогда было потрачено довольно много времени для решения этой проблемы.
Сейчас ситуация немного изменилась и процесс стал гораздо легче, так как в Revit 2015 появилось свойство ElementType.FamilyName.
Динамические размеры в AcEdJig с использованием ObjectARXАвтор: Александр Ривилис
Вопрос:
Не могу найти готовые примеры использования динамических размеров в AcEdJig в интернете и в ObjectARX SDK, а описания этого процесса в документации ObjectARX SDK нет. Подскажите как их использовать? Хочется иметь возможность использовать динамические размеры по аналогии с тем, как это делается в командах AutoCAD.
Ответ:
В составе ObjectARX SDK 2007 и 2008 был пример Grip, в котором разъяснялась техника использования динамических размеров. К сожалению этот пример отсутствует в более новых версиях ObjectARX SDK. Я адаптировал этот пример для AutoCAD 2017 и ObjectARX SDK 2017.
Для проверки загрузите этот пример, перестройте приложение и загрузите grip.arx в AutoCAD 2017. Запустите команду RECTJIG и вы увидите как можно задать размеры по горизонтали и вертикали в динамических размерах.
Пример использования метода Curve.ExtendАвтор: Александр Ривилис
Вопрос:
Не нашел примера использования метода Curve.Extend. Подскажите, пожалуйста, как этот метод можно использовать для удлинения кривой.
Ответ:
Ниже приводится пример кода, который позволяет выбрать кривую для удлинения и граничную кривую, до которой будет выполнено удлинение:
Создаем ассоциативный массив с помощью ObjectARX
В этой статье мы рассмотрим возможность создания объекта МАССИВ (Array) используя три класса параметров для создания ассоциативного массива унаследованных от класса AcDbAssocArrayCommonParameters:- AcDbAssocArrayPathParameters
- AcDbAssocArrayPolarParameters
- AcDbAssocArrayRectangularParameters
который может использоваться для изменения параметров ассоциативного Прямоугольного Массива, Массива по Траектории и Кругового Массива независимо от типа массива.
AcDbAssocArrayActionBody– это ассоциативное действие, которое выполняется для управления или позиционирования массива примитивов, основанное на параметрах массива.