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

31/05/2020

Определение геометрического центра LWPOLYLINE, 2DPoly и 3DPoly

К сожалению, нет прямого API для получения геометрического центра для трех видов полилиний. Кто-то может использовать топологические библиотеки, а кто-то предпочтет простейший из возможный способов – конвертирование AcDbPolyline, AcDb2Polyline, AcDb3dPolyline в область (AcDbRegion) без добавления его в чертеж, чтобы получить геометрический центр.

Опубликовано 31.05.2020     Читать далее >>>
14/04/2020

OPMNetExt для AutoCAD 2021Автор: Александр Ривилис

Вопрос: Имеется ли версия OPMNetExt для AutoCAD 2021?

Пояснение: Модуль OPMNetExt был создан Cyrille Fauvel для добавления динамических свойств в Панель свойств AutoCAD и впервые был опубликован Kean Walmsley у него в блоге: https://through-the-interface.typepad.com/through_the_interface/2009/05/modifying-an-autocad-objects-state-via-a-dynamic-property-defined-in-net.html

Ответ: Я портировал OPMNextExt для работы с AutoCAD 2021

Опубликовано 14.04.2020     Читать далее >>>
29/02/2020

Как временно заблокировать интерфейс AutoCAD при помощи .NET и C++Автор: Александр Ривилис

При длительных операциях с AutoCAD иногда возникает потребность заблокировать его интерфейс, чтобы не дать возможность пользователю изменять чертеж. В AutoCAD API специальных средств для этого нет, но можно воспользоваться Win32 API.
Опубликовано 29.02.2020     Читать далее >>>
29/10/2019

Установка типа колонки мультитекста при его создании

Мы получили недавно сообщение о том, что в программе возникает исключение eNotApplicable при попытке установить тип колонки (ColumnType) при создании мультитекста таким кодом:
Опубликовано 29.10.2019     Читать далее >>>
29/10/2019

Управляемый HLR API для AutoCAD

Мы получили значительное количество запросов от разработчиков о создании управляемой обертки для классического HLR API, который входит в состав ObjectARX SDK для AUtoCAD.

Оригинальный пример был написан Cyrille Fauvel , а я исправил несколько ошибок, связанных с функцией обратного вызова индикатора прогресса и мигрировал проект для AutoCAD 2019.

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

Как определить использовалась ли Базовая точка при вставке выбранных объектов

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

Когда мы используем команду _COPYBASE с заданной базовой точкой, выбранные объекты копируются во временный dwg-файл и системная переменная INSBASE этого временного файла содержит введённую базовую точку.

Эта программа использует этот факт при вставке при помощи _PASTORG в другой чертеж.

Спасибо Joel Petersen за предложенную идею

Опубликовано 29.10.2019     Читать далее >>>
28/07/2019

Создание таблиц с различной высотой строк с помощью .NET

Создание таблицы с использованием методов Table.InsertColumns и Table.InsertRows достаточно сложное, и ниже приведены некоторые сценарии, которые могут быть полезны:

Сценарий 1: Использование только метода Table.InsertColumns:

Наряду с указанным числом столбцов, создается строка по умолчанию (без ячеек) с индексом строки 0

Сценарий 2. Использование только метода Table.InsertRows:

Наряду с указанным количеством строк создается один столбец по умолчанию (с ячейками) с индексом столбца 0.

Например, table.InsertRows (0, 5, 3); создает таблицу как показано ниже:

Сценарий 3: Использование индекса для создания строк или столбцов:

Здесь используется метод table.InsertRows (int row, double height, int rows)

int row = индекс строки
double height = rows (без строки по умолчанию)
int rows = число добавленых строк

Как и в приведенном выше примере, table.InsertRows (0, 5, 3); создает таблицу с 4 строками (3 + 1 строка по умолчанию) и 1 столбцом с индексом 0.

Поскольку первый параметр (индекс) равен 0, каждая строка вставляется в позицию 0 и толкает ранее вставленную строку (если есть) ниже. Таким образом, мы можем найти строку по умолчанию в самой нижней позиции после создания.

Сценарий 4: Мы можем использовать table.InsertRows в цикле для создания строк различной высоты. Ряды различной высоты могут быть созданы следующим образом:

Опубликовано 28.07.2019     Читать далее >>>
28/07/2019

Как изменить установки ГРАФИКАНАСТР при помощи .NET

Вам следует использовать GraphicsSystem.Configuration API для включения и выключения различных эффектов графической системы.

Вот пример включения «Сглаживания линий»:

Опубликовано 28.07.2019     Читать далее >>>
15/06/2019

Нахождение геометрического центра для LWPOLYLINE, 3DPoly и 2DPoly

К сожалению, в AutoCAD API нет прямого метода для определения геометрического центра всех трех типов полилиний. Можно использовать библиотеки топологии, чтобы выяснить это. Проще же всего преобразовать LWPOLYLINE, AcDb2dPolyline, AcDb3dPolyline в AcDbRegion в памяти и применить AutoCAD API для получения геометрического центра области (AcDbRegion).

Опубликовано 15.06.2019     Читать далее >>>
15/06/2019

Как управлять установками GRAPHICSCONFIG при помощи .NET

Для включения или выключения эффектов графической системы нужно пользоваться GraphicsSystem.Configuration API.

Вот пример для включения сглаживания линий (LineSmoothing)

Опубликовано 15.06.2019     Читать далее >>>
27/02/2019

Как проверить, что при редактировании XREF он сохранён или отвергнут в .NETАвтор: Александр Ривилис

Madhukar Moogala в этой статье описал как можно используя ObjectARX определить были ли сохранены изменения при редактировании внешней ссылки по месту или нет. А вот как можно добиться аналогичного результата, используя AutoCAD .NET API:

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

Как определить что свойства примитива изменены при помощи Панели Свойств в .NET?Автор: Александр Ривилис

Вопрос: В ObjectARX как мы знаем есть возможность узнать, что свойства примитива изменены в Панели свойств (OPM). Этому посвящена статья Как определить что свойства примитива изменены при помощи Панели Свойств? А как можно это же сделать используя только средства .NET API?

Ответ: В AutoCAD .NET API есть недокументированное пространство имён Autodesk.AutoCAD.Internal.PropertyInspector, содержащее класс PropertyInspectorEventManager, который позволяет подписаться на события propertyWillChange (которое происходит перед началом изменения свойства) и propertyChanged (которое происходит сразу после изменения свойства). Им мы и воспользуемся для решения нашей задачи.

Опубликовано 10.12.2018     Читать далее >>>
22/11/2018

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

Ниже приводится код, который выводит все свойства, которые видны в Панели свойств:
Опубликовано 22.11.2018     Читать далее >>>
13/11/2018

Как определить локализованное имя примитива в OPM?Автор: Александр Ривилис

Ответ на этот вопрос даёт следующий код:
Опубликовано 13.11.2018     Читать далее >>>
29/10/2018

Вставка формы (SHAPE) в чертеж AutoCAD при помощи .NET APIАвтор: Александр Ривилис

Вопрос: Как при помощи AutoCAD .NET API вставить в чертеж форму, как это делает команда ФОРМА (_SHAPE)?

Ответ: Как оказалось эта информация нигде не освещена. Для того чтобы вставить форму в чертеж необходимо:

  1. Создать текстовый стиль, указывающий на файл содержащий форму
  2. Создать примитив Shape, который имеет соответствующий стиль и имя соответствующее имени формы. Имеются определённые особенности, которые отражены в коде ниже:
Опубликовано 29.10.2018     Читать далее >>>
06/05/2018

Определение радиуса и центра кругового конуса при помощи .NET

Мы можем использовать BREP API для определения радиуса и центра кругового конуса (свойства, показанные на изображении панели свойств).

Ниже фрагмента кода .NET, который можно использовать:

Опубликовано 06.05.2018     Читать далее >>>
06/05/2018

Установка исходной точки при создании штриховки с помощью .NET

У нас был вопрос, поднятый клиентом относительно установления исходной точки штриховки в процессе создания штриховки.
Опубликовано 06.05.2018     Читать далее >>>
28/04/2018

Просмотр внешнего вида типа линии

Я получил такое задание от пользователя – получить внешний вид типа линии при помощи API.

Мы воспользуемся свойством Comments чтобы получить описание типа линии в форме строки:

Опубликовано 28.04.2018     Читать далее >>>
16/04/2018

AutoCAD 2019 ObjectARX wizard и .NET wizard

Опубликовано 16.04.2018     Читать далее >>>
20/03/2018

Как получить пересечение прямой и твердого тела в NET?Автор: Александр Ривилис

По аналогии с тем, как это делается в ObjectARX, это можно сделать при помощи B-Rep API и в AutoCAD .NET API. Следующий код иллюстрирует как получить пересечение линейного примитива (ОТРЕЗОК, ЛУЧ, ПРЯМАЯ) с примитивом, который представляется в виде ACIS (т.е. твердое тело - SOLID, область - REGION, или тело BODY).

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