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

20/06/2014

Установка относительного порядка отрисовки примитивов с помощью .NET

Чтобы установить относительный порядок отрисовки одних примитивов относительно других можно воспользоваться методами DrawOrderTable.MoveAbove или DrawOrderTable.MoveBellow как показано ниже в коде.
Опубликовано 20.06.2014     Читать далее >>>
20/06/2014

Ошибка запуска VLIDE во время отладки .NET-сборки

При отладке .NET-сборки далеко не всегда удается вызвать VLIDE
Опубликовано 20.06.2014     Читать далее >>>
18/06/2014

Изменение порядка отрисовки примитивов

Каждый блок в AutoCAD содержит информацию о порядке отрисовки примитивов в нём. Порядок отрисовки (DrawOrderTable) хранится в словаре расширения записи таблицы блоков. В .NET можно работать с этим словарем используя метод BlockTableRecord.DrawOrderTableId. Порядок отрисовки (DrawOrderTable), обеспечивает методы, такие как MoveToBottom, MoveToTop, MoveBelow, MoveAbove и так далее, которые позволяют изменить порядок отрисовки примитивов в блоке.

Опубликовано 18.06.2014     Читать далее >>>
16/06/2014

Что значит getallobjects() в контексте вложенных транзакций?

Вопрос:

Можете ли вы объяснить мне как работает метод getAllObjects() в контексте сценария использования вложенных транзакций? Я не нашел объяснения в ObjectARX Developer's Reference/Guide.

Ответ:

Давайте рассмотрим такой сценарий (это псевдокод, все транзакции типа AcDbTransaction)

Опубликовано 16.06.2014     Читать далее >>>
13/06/2014

Сброс текущего цвета при установке текущим другого слоя

Установка текущего цвета при помощи системной переменной CECOLOR помогает создавать примитивы с определенным цветом вне зависимости от цвета слоя. Но когда мы устанавливаем другой слой текущим нам может захотеться, чтобы цвет совпал с цветом нового текущего слоя.

Итак. Как автоматически менять текущий цвет на цвет Послою (BYLAYER) при изменении текущего слоя?

Текущий цвет может быть установлен при помощи метода AcDbDatabase::setCecolor(). Вы можете получить уведомление об изменении системной переменной, если создадите реактор, унаследованный от AcEditorReactor и переопределите его метод sysVarChanged(). Системная переменная текущего слоя: CLAYER.

Опубликовано 13.06.2014     Читать далее >>>
13/06/2014

Обновлять или добавлять схему расширяемой области хранения (Extensible Storage)

Вопрос: Я выпустил релиз своей надстройки, где я использую схему.

Сейчас я работаю над новой версией и мне нужно расширить схему области для хранения дополнительных параметров.

Когда я добавляю данные, я могу создать новую схему и скопировать все данные в новую схему, или же я могу создать совсем другую схему.

Создание другой схемы кажется довольно простым способом. Есть ли у этого способа какие-либо недостатки? Ведь если я постоянно буду продолжать создавать новые схемы, то в конце концов это повлияет на размер файла и на производительность.

Опубликовано 13.06.2014     Читать далее >>>
12/06/2014

Создание нового слоя и установка его текущим

Следующий код показывает процедуру создания нового слоя. Все слои хранятся в символьной таблице, называемой таблицей слоёв. Чтобы сделать любой слой текущим, нужно установить свойство Clayer объекта Database в идентификатор объекта слоя.
Опубликовано 12.06.2014     Читать далее >>>
12/06/2014

Минимальный размер DirectShape

В Revit 2015 API появилась возможность импортировать геометрию элементов напрямую в проект. В API, класс DirectShape представляет собой геометрическую фигуру.

У одного из пользователей возник вопрос, касающийся использования данного класса

Вопрос: Я создаю фигуры (DirectShape)  в Revit 2015 API из имеющегося набора поверхностей при помощи класса TessellatedShapeBuilder.

Проблема в том, что минимально допустимая длина грани, с которой Revit может работать равна 0,0026 фута. Если я пытаюсь использовать грань длиной 0,0025 фута, то Revit падает с ошибкой.

Можно ли изменить этот минимальный допуск?

Или может быть есть какой-то другой способ создания фигуры, где можно задать меньшую длину грани?

Опубликовано 12.06.2014     Читать далее >>>
11/06/2014

Обработка ошибок и предупреждений

Программная обработка диалогов с предупреждениями

Вопрос: Возможно ли с помощью Revit MEP 2011 API обрабатывать сообщения с предупреждениями?

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

И еще, если предупреждения могут быть перехвачены и обработаны, можно ли так же обработать сообщения об ошибках? Например, если при работе возникает ошибка, можно ли программно определить номер ошибки, выбрать подходящее действие для обработки этой ошибки и продолжить выполнение некоторых действий без фактического отображения диалога?

Опубликовано 11.06.2014     Читать далее >>>
11/06/2014

Обновление выравнивания текста

В ряде случаев выравнивание текста примитива DBText не выполняется. Для того чтобы заставить выполнится выравнивание используется метод DBText.AdjustAlignment. Этот метод для работы использует рабочую базу данных. Таким образом особенно важно указать ему рабочую базу данных, когда DBText еще не добавлен в рабочую базу данных.
Опубликовано 11.06.2014     Читать далее >>>
10/06/2014

Новые примеры в Revit SDK 2015

Новые примеры в Revit SDK 2015

Первый релиз Revit SDK 2015 включает в себя 4 новых примера, демонстрирующих функциональность нового Revit API:

Опубликовано 10.06.2014     Читать далее >>>
09/06/2014

Создание анонимного слоя

Чтобы создать анонимный слой необходимо вызвать метод AcDbLayerTableRecord::setIsHidden()как показано ниже в коде. Анонимные слои не видны в диспетчере слоёв и соответственно пользователь не может редактировать/удалить анонимный слой.

Опубликовано 09.06.2014     Читать далее >>>
07/06/2014

Удаление анонимных групп средствами ObjectARX

Когда пользователь создает группу в AutoCAD, он может создать группу анонимной. При этом любая группа (анонимная или нет) хранится в Словаре именованных объектов (NOD) в группе 'ACAD_GROUP'. Если группа анонимная, AutoCAD присваивает ей имена вида '*A1', '*A2' и так далее. Хотя группа и анонимная, но у каждой анонимной группы есть уникальное имя в базе чертежа.

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

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

Создание мультиполигона в AutoCAD средствами .NET API

Мультиполигон (MPolygon) – это пользовательский объект созданный для AutoCAD Map 3D. Но он доступен и в чистом AutoCAD и с ним можно работать средствами ObjectARX. Чтобы работать с ним в .NET необходимо добавить добавить ссылку на AcMPolygonMGD.dllи кроме того требуется, чтобы файл AcMPolygonObjNN.dbx (где NN = 19 для AutoCAD 2013 и 2014 и NN = 20 для AutoCAD 2015) загружен в AutoCAD до вызова любого из методов MPolygon. Оба этих файла содержатся в корневом каталоге AutoCAD.
Опубликовано 05.06.2014     Читать далее >>>
03/06/2014

Получение штриховки (Hatch) из мультиполигона (MPolygon)Автор: Александр Ривилис

Вопрос: В dwg-файле имеется множество мультиполигонов (MPolygon). Как из них можно получить штриховки (Hatch)? Метод MPolygon.Hatch в большинстве случаев дает штриховку, у которой в панели свойств неопределенна площадь.

Ответ: Ниже приводится код, который позволяет получить из MPolygon корректную (т.е. имеющую площадь) штриховку.

Опубликовано 03.06.2014     Читать далее >>>
31/05/2014

Идентификаторы элементов в Revit - Часть 4. Числовой и уникальный идентификатор меняется при повторном импорте

Предыдущие части:

Вопрос: Мы столкнулись с проблемой при повторном импорте измененного IFC файла в Revit, так как числовой и уникальный идентификатор оказались не надежными.

В результате, все ссылки на связанную модель (вне IFC), такие как размерность, потерялись, после того, как мы заново импортировали отредактированную модель. Нам пришлось повторно подгонять импортированную модель.

Опубликовано 31.05.2014     Читать далее >>>
30/05/2014

Лёгкое программирование под Autodesk Vault. Часть 23

Vault API предоставляет множество методов для получения информации о файлах. Для этого используются функции Get* и Find*, которые расположены в службах DocumentService и DocumentServiceExtensions.
Опубликовано 30.05.2014     Читать далее >>>
29/05/2014

Лёгкое программирование под Autodesk Vault. Часть 20Автор: Дмитрий Емельянов

Получение общей информации по хранилищам
Опубликовано 29.05.2014     Читать далее >>>
29/05/2014

Лёгкое программирование под Autodesk Vault. Часть 21Автор: Дмитрий Емельянов

Добавление хранилищ на сервер Vault
Опубликовано 29.05.2014     Читать далее >>>
29/05/2014

Лёгкое программирование под Autodesk Vault. Часть 22Автор: Дмитрий Емельянов

Vault API предоставляет множество методов для работы с файлами. Поскольку большинство информации расположено в файлах, это довольно большая область API.
Опубликовано 29.05.2014     Читать далее >>>