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

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     Читать далее >>>
18/03/2018

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

Этот код демонстрирует как использовать subentitypath для подсветки определенного сегмента полилинии. Вы можете использовать метод Unhighlight для снеятия подсветки сегмента полилинии (этот метод здесь не приводится). Не забудьте прочитать соответствующую тему по этому методу в ObjectARX Managed Reference Guide прежде чем использовать его в своём коде – там есть несколько деталей, которые следует учитывать.

Опубликовано 18.03.2018     Читать далее >>>
30/01/2018

Как сделать объекты AutoCAD аннотативными в .NET

В этой статье мы решим два вопроса:
  1. Как создать и добавить к чертежу новый масштаб аннотации?
  2. Как сделать примитивы аннотативными и присвоить им допустимые масштабы аннотаций?

Ниже приведен код, в котором содержатся два метода – команды:

Команда ADS позволит нам создать новый масштаб аннотации с именем "МойМасштаб 1:28", а команда ATS позволит сделать выбранный примитив аннотативным и назначить ему масштабы аннотаций:

Опубликовано 30.01.2018     Читать далее >>>
01/09/2017

Как выбрать грани соседствующие с выбранным ребром 3DSOLID

Используя BREP API, довольно просто получить смежные грани для выбранного ребра 3DSOLID.

Мы будем использовать Boundary Loop, чтобы получить все петли, в которые входит выбранное ребро для получения соседних граней.

Опубликовано 01.09.2017     Читать далее >>>
01/09/2017

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

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

Опубликовано 01.09.2017     Читать далее >>>
22/08/2017

Добавление MTEXT к ячейке таблицы

Это пример кода вставки MText’а в указанную пользователем ячейку Таблицы. Можно передавать RTF-контент в MText или создавать строку с использованием кодов форматирования.

Опубликовано 22.08.2017     Читать далее >>>
05/08/2017

В AutoCAD 2018.1 метод UpgradeOpen приводит к фатальной ошибке внутри транзакцииАвтор: Александр Ривилис

Вопрос: Я обнаружил, что если использовать метод UpgradeOpen внутри транзакции, в которой этот объект открыт для чтения, то это приводит к фатальной ошибке. Пример кода, приводящий к такой ошибке:

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