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

14/11/2016

Как удалить команду из списка доступных команд AutoCADАвтор: Александр Ривилис

Это экзотическая ситуация, но может возникнуть необходимость полностью запретить команду AutoCAD. Один из вариантов – выполнение метода veto() в событии DocumentLockModeChanged. Но при этом команда есть в списке доступных команд и её выполнение начинается, а затем прерывается.

Есть более радикальный метод – использование метода RemoveCommand недокументированного класса Utils из пространства имён Autodesk.AutoCAD.Internal. Этот метод – обертка для метода AcEdCommandStack::removeCmd из ObjectARX. Ему передаются два параметра – имя группы команд и имя команды. Обычно достаточно передать глобальное имя команды, но бывают и исключения. Поэтому мы удалим команду и по глобальному и по локальному имени. Так как мы не знаем в какой локализации AutoCAD будет выполняться код, то нам нужно получить имя локализованной команды по её глобальному имени. Для этой цели в ObjectARX есть функция acedGetCName которая в версиях AutoCAD до 2012 включительно содержится в acad.exe, а позднее в accore.dll Мы воспользуемся P/Invoke для вызова её из .NET

Опубликовано 14.11.2016     Читать далее >>>
07/11/2016

Как получить 3D-полилинию, по которой получается тело сдвигаАвтор: Александр Ривилис

Вопрос: Имеется труба - твердое тело, полученной сдвигом круга (Circle) по траектории, образованной 3D-полилинией (3DPoly). Как получить вершины 3D-полилинии?

Ответ: Вариантов решения этой задачи несколько:

1) Использование метода GetGripPoints. Для тела у которого не очищена история редактирования если пропустить первые четыре ручки, то мы получим вершины 3D-полилинии. Но если история очищена, то получить вершины таким образом не получится, так как расположение ручек совсем другое.

2) Использовать BREP .NET API для получения информации о вершинах.

Второй вариант мы и рассмотрим, так как он более универсальный. Нам следует получить все ребра (Edge) твердого тела, выделить из них круглые (CircularArc3d) и эллиптические (EllipticalArc3d) и найти их центры.

Опубликовано 07.11.2016     Читать далее >>>
29/10/2016

Разделение ячеек спецификацииАвтор: Виктор Чекалин

Евгений Пашин задал на форуме интересный вопрос. В пользовательском интерфейсе есть возможность объединения и разделения ячеек спецификации. С помощью Revit API объединить ячейки достаточно просто. Нужно попользоваться методом TableSectionData.MergeCells. А как снять объединение с помощью Revit API?

Опубликовано 29.10.2016     Читать далее >>>
29/10/2016

Рисование кривых по списку точек

Вопрос: Я пытаюсь нарисовать соприкасающиеся друг с другом кривые в активном документе ActiveUIDocument.Document, из списка точек XYZ. Большинство примеров рисования кривых демонстрируется в редакторе семейств FamilyDocument и я так и не могу их адаптировать для рисования в проекте. Необходимо создавать рабочую плоскость для таких кривых?

Опубликовано 29.10.2016     Читать далее >>>
29/10/2016

Стоит ли использовать постоянные объектные реакторы?

Тот факт, что в AutoCAD можно "прописать" собственные реакции на какие-либо действия ACAD'a, не секрет.
Опубликовано 29.10.2016     Читать далее >>>
26/10/2016

Как выполнить Overrule для замкнутого сплайна так, чтобы он был заполнен своим цветомАвтор: Александр Ривилис

Вопрос: Как выполнить Overrule для замкнутого сплайна (Spline) так, чтобы он был заполнен своим цветом?

Ответ: Простейший способ – это выполнить аппроксимацию сплайна и рисовать сплайн при помощи Geometry.Polygon указав в качестве параметра точки аппроксимации.

Ниже пример как это можно реализовать:

Опубликовано 26.10.2016     Читать далее >>>
24/10/2016

Как в .NET выбрать грани 3DSOLID и изменить им цвет.Автор: Александр Ривилис

Недавно мы обсуждали как это сделать средствами ObjectARX. Сегодня рассмотрим, как это делается в .NET API:

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

Как в ObjectARX выбрать грани 3DSOLID и изменить им цветАвтор: Александр Ривилис

Оказалось, что на такой, казалось бы простой и распространенный вопрос найти примера в интернете не удается. Более того несколько функций, которые я использовал для решения этой задачи входят в состав ObjectARX SDK начиная с версии 2008, но никогда ни в одном примере не фигурировали. Есть готовые примеры как найти выбранную грань 3DSOLID, но они очень громоздки, зависят от ПСК, точки зрения, точки указания и т.д. В этом же примере всё очень просто и лаконично и основывается на функции обычного выбора примитивов acedSSGet:

Опубликовано 21.10.2016     Читать далее >>>
18/10/2016

Обзор Data Management API

Рассматриваются общие сведения по Data Management API Autodesk Forge
Опубликовано 18.10.2016     Читать далее >>>
12/10/2016

Autodesk Forge: видеозаписи обучающих вебинаров

Autodesk Forge: видеозаписи обучающих вебинаров.

Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360

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

Autodesk Forge: видеозаписи обучающих вебинаров

Autodesk Forge: видеозаписи обучающих вебинаров.

Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360

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

Autodesk Forge: видеозаписи обучающих вебинаров

Продолжается серия обучающих вебинаров и сессий «вопрос-ответ», которые проходят в рамках онлайн хакатона Autodesk Forge и Fusion 360

Ознакомиться с записями обучающих вебинаров вы можете по ссылкам в таблице ниже.

Опубликовано 12.10.2016     Читать далее >>>
07/10/2016

Руководство по получению 3-Legged токена для OAuth Autodesk Forge

Рассматриваются особенности получения 3-Legged токена для OAuth Autodesk Forge
Опубликовано 07.10.2016     Читать далее >>>
03/10/2016

Аналог attout и attin

В составе ExpressTools есть две весьма интересные команды - attout и attin.
Опубликовано 03.10.2016     Читать далее >>>
30/09/2016

Как получить форму воздуховода и трубы

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

Сейчас ситуация немного изменилась и процесс стал гораздо легче, так как в Revit 2015 появилось свойство ElementType.FamilyName.

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

Динамические размеры в 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 и вы увидите как можно задать размеры по горизонтали и вертикали в динамических размерах.

Опубликовано 29.09.2016     Читать далее >>>
28/09/2016

Пример использования метода Curve.ExtendАвтор: Александр Ривилис

Вопрос:
Не нашел примера использования метода Curve.Extend. Подскажите, пожалуйста, как этот метод можно использовать для удлинения кривой.

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

Опубликовано 28.09.2016     Читать далее >>>
26/09/2016

Создаем ассоциативный массив с помощью ObjectARX

В этой статье мы рассмотрим возможность создания объекта МАССИВ (Array) используя три класса параметров для создания ассоциативного массива унаследованных от класса AcDbAssocArrayCommonParameters:
  1. AcDbAssocArrayPathParameters
  2. AcDbAssocArrayPolarParameters
  3. AcDbAssocArrayRectangularParameters

который может использоваться для изменения параметров ассоциативного Прямоугольного Массива, Массива по Траектории и Кругового Массива независимо от типа массива.

AcDbAssocArrayActionBodyэто ассоциативное действие, которое выполняется для управления или позиционирования массива примитивов, основанное на параметрах массива.

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

Руководство по получению 2-Legged токена для OAuth Autodesk Forge

Рассматриваются особенности получения 2-Legged токена для OAuth Autodesk Forge
Опубликовано 19.09.2016     Читать далее >>>
14/09/2016

Руководство по созданию приложения в Autodesk Forge - OAuth

Рассматривается получение Client ID и Secret
Опубликовано 14.09.2016     Читать далее >>>