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

26/04/2015

Пользовательский выбор файла, подчиняющийся системной переменной FILEDIA

Когда мы создаем пользовательскую команду, мы хотим чтобы она подчинялась общим правилам AutoCAD. Одним из правил является подчинение переменной FILDEIA, которая управляет появлением диалога при выборе файлов.

Многие разработчики используют напрямую класс Autodesk.AutoCAD.Windows.OpenFileDialog, который напрямую вызывает диалог. Альтернативой ему является класс PromptSaveFileOptions, который подчиняется системной переменной FILEDIA.

Опубликовано 26.04.2015     Читать далее >>>
26/04/2015

Улучшение алгоритма по вычислению общей и полезной площади стен

Продолжаем обсуждать решение проблемы по вычислению общей и полезной площади стен. После того, как мы немного переделали алгоритм и стали использовать метод FindInserts для поиска всех проемов, пользователь Håkon Clausen нашел пару недочетов в этом алгоритме и оставил их в комментарии (ориг.):

Опубликовано 26.04.2015     Читать далее >>>
26/04/2015

Получение всех доступных имен плоттеров

Для того чтобы получить все доступные для AutoCAD плоттеры можно воспользоваться менеджером конфигурация плоттеров (класс PlotConfigManager). У этого класса есть свойство Devices, которое дает доступ ко всем плоттерам. Ниже процедура получения имён плоттеров:

Опубликовано 26.04.2015     Читать далее >>>
25/04/2015

Как задать виды для печати с помощью Revit API

Если вы хотим изменить настройки печати в Revit, то первое, с чего мы должны начать – это свойство Document.PrintManager. PrintManager.ViewSheetSetting используется для установки видов, которые вы хотите напечатать.

Однако, когда вы обращаетесь к методу PrintManager.ViewSheetSetting вы можете получить вот такое исключение: This property is only available when user choose Select of Print Range (Свойство доступно только когда пользователь выбрал ‘выбранные виды’ в настройках печати.)

Опубликовано 25.04.2015     Читать далее >>>
24/04/2015

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

Недавно я представил новый пример использования класса SpatialElementGeometryCalculator для вычисления полезной и общей площади стен.

В статье обсуждалось несколько интересных моментов:

  • Использование класса SpatialElementGeometryCalculator
  • Портирование надстройки, написанной на VB.NET в C#
  • Использование временной транзакции для решения задач
  • Использование FilteredElementCollector для поиска всех проемов в стене
  • Оптимизация поиска при использовании FilteredElementCollector
Опубликовано 24.04.2015     Читать далее >>>
23/04/2015

Запланированные сценарии действия рабочего процесса

Особенности управления рабочими процессами в PLM 360
Опубликовано 23.04.2015     Читать далее >>>
23/04/2015

Drag & Drop из немодального диалога в редактор AutoCAD

В составе ObjectARX SDK 2004 был прекрасный пример на C++, который демонстрировал реализацию технологии «drag &drop» («перетащи и брось») в AutoCAD как файлов из проводника, так и из немодального диалога внутрь AutoCAD. Здесь я выкладываю этот пример, переделанный для версии AutoCAD 2016. Чтобы проверить его, загрузите arx-файл и запустите команду arxdd. Прочитайте файл ReadMe.txt включенный в пример для объяснения методов, реализующих технологию «drag & drop».

Загрузить Arxdd

Источник: http://adndevblog.typepad.com/autocad/2015/04/drag-and-drop-from-a-modeless-dialog-into-autocad-editor.html

Опубликовано 23.04.2015     Читать далее >>>
22/04/2015

Написание и отладка сценария для Fusion 360

Возможности написания и отладки приложений для Fusion 360 на Python и JavaScript
Опубликовано 22.04.2015     Читать далее >>>
22/04/2015

Как найти сплайн в AutoCAD между двумя другими сплайнами в .NET

Я получил вопрос в комментариях к блогу:

Как найти «центральную» линию NurbCurve3dмежду двумя другими линиями NurbCurve3d?

Я интерпретирую это следующим образом: с учетом двух объектов NurbCurve3d, создать NurbCurve3d, который находится точно между ними. NurbCurve3d являются AcGe-классом - это означает, что это объект неграфический - так что я решил работать со сплайнами (Spline), поскольку они тесно связаны с классом NurbCurve3d (есть удобные методы для преобразования между этими двумя классами). Вот еще для интересующихся некоторая информация о NURBS.

Опубликовано 22.04.2015     Читать далее >>>
21/04/2015

Где хранит свои настройки монитор системных переменных AutoCAD 2016?

Во время проведения вебинара по новинкам AutoCAD 2016 мне задали вопрос: где и как хранятся настройки монитора системных переменных? Точнее, где и как хранится список системных переменных?
Опубликовано 21.04.2015     Читать далее >>>
15/04/2015

CreateInstance возвращает E_NOINTERFACE при обращении к экземпляру AutoCAD

Когда мы пытаемся запустить экземпляр AutoCAD из внешнего приложения используя функцию CreateInstance, иногда мы получаем ошибку E_NOINTERFACE. В этой статье мы рассмотрим некоторые причины, по которым это может происходить и пути решения этой проблемы.

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

Изменение путей к растрам в чертеже с абсолютных на относительные

Ниже показан пример кода, который позволяет изменить абсолютные пути к файлам растров на относительные пути (по отношению к пути к файлу чертежа). Те же пути к растрам, которые уже были относительными, остаются неизменными.
Опубликовано 14.04.2015     Читать далее >>>
12/04/2015

Не добавляйте и не удаляйте элементы при перечислении коллекций элементов

Пользователь столкнулся с проблемой, что при загрузке семейства через API, Revit закрывается.

Вот его код:

Код - C#: [Выделить]
 UIApplication rvtApp = commandData.Application;

UIDocument rvtDoc = rvtApp.ActiveUIDocument;

 

FilteredElementCollector collector =

    new FilteredElementCollector(rvtDoc.Document)

    .OfClass(typeof(Family));

FilteredElementIterator itr =

    collector.GetElementIterator();

while (itr.MoveNext())

{

    Element elem = (Element)itr.Current;

    ReloadFamily(rvtApp, rvtDoc, elem);

}

Опубликовано 12.04.2015     Читать далее >>>
11/04/2015

Вычисление общей и полезной площади пверхности стен

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

В тестовом файле есть стена с двумя дверями. Внешне они выглядят одинаково, но для одной площадь равна 4м2, для другой – 2м2.

Почему так? Что же на самом деле возвращает параметр HOST_AREA_COMPUTED? Какой самый правильный способ определения площади окон и дверей в стене?

Опубликовано 11.04.2015     Читать далее >>>
10/04/2015

Надстройка для работы с Тонкими линиями с помощью UI Automation

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

К счастью, в Revit 2015 R2 это наконец-то стало возможным.

Опубликовано 10.04.2015     Читать далее >>>
10/04/2015

Запрет всплывания диалоговых окон в AutoCAD

Большинство появляющихся диалоговых окон AutoCAD могут быть подавлены при необходимости при помощи ряда системных переменных или вызова команды с предшествующим знаком "-" для вызова команды в режиме командной строки. Вы можете прочитать об этом в этой статье:

Переключение между диалоговыми окнами и командной строкой (англ)

Опубликовано 10.04.2015     Читать далее >>>
07/04/2015

Тестирование производительности разных версий ACAD

Попалась мне тут на глаза очередная статья по сравнению быстродействия разных CADов. Подумал, что будет небезынтересно сравнить производительность разных версий AutoCAD.
Опубликовано 07.04.2015     Читать далее >>>
01/04/2015

Как перезагрузить типы линий из файла

Метод AcDbDatabase::loadLineTypeFile позволяет загрузить типы линий из lin-файла. Если в чертеже имеется одноименный тип линии, то метод loadLineTypeFile вернет код ошибки. Чтобы принудительно перезагрузить типы линий из lin-файла, нужно загрузить их в другую базу, а затем выполнить клонирование в текущую. Вот соответствующий код:

Опубликовано 01.04.2015     Читать далее >>>
31/03/2015

Изменение размера области подрезки

Наблюдается странное поведение при изменении размера области подрезки.

Что я делал. Сначала я создал вид, затем установил область подрезки:

Код - C#: [Выделить]
 ViewFamilyType vTypeElev = Class1.getviewfamilytypes(

    ViewFamily.FloorPlan, RevitDoc).First<ViewFamilyType>();

var view = ViewPlan.Create(RevitDoc, vTypeElev.Id,

    RevitDoc.ActiveView.GenLevel.Id);

view.CropBoxActive = true;

BoundingBoxXYZ box = new BoundingBoxXYZ();

box.Min = new XYZ(100, 100, 0);

box.Max = new XYZ(200, 200, 100);

view.CropBox = box;

В этом случае все работает, как и ожидалось.

Однако, когда я только меняю область подрезки, без создания вида, то ничего не происходит.

Опубликовано 31.03.2015     Читать далее >>>
25/03/2015

Типы сценариев: сценарии действий и триггеры

Рассматриваются типы сценариев для PLM360
Опубликовано 25.03.2015     Читать далее >>>