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

31/08/2015

Создание поверхности в Revit

Вопрос: Мне нужно создать поверхность с помощью Revit API по заданным точкам. Поверхность может быть любая, например, пол, крыша или любой другой компонент. Поверхность не является рабочей плоскостью.

Есть какая-нибудь команда, которая делает это? Или мне нужно найти способ как это делать?

Ответ: Вот решение как можно создать пол по точкам:

Код - C#: [Выделить]
  1.   UIApplication uiapp = commandData.Application;
  2.   UIDocument uidoc = uiapp.ActiveUIDocument;
  3.   Document doc = uidoc.Document;
  4.  
  5.   using( Transaction tx = new Transaction( doc ) )
  6.   {
  7.     tx.Start( "Create a Floor" );
  8.  
  9.     int n = 4;
  10.     XYZ[] points = new XYZ[n];
  11.     points[0] = XYZ.Zero;
  12.     points[1] = new XYZ( 10.0, 0.0, 0.0 );
  13.     points[2] = new XYZ( 10.0, 10.0, 0.0 );
  14.     points[3] = new XYZ( 0.0, 10.0, 0.0 );
  15.  
  16.     CurveArray curve = new CurveArray();
  17.  
  18.     for( int i = 0; i < n; i++ )
  19.     {
  20.       Line line = Line.CreateBound( points[i],
  21.         points[(i < n-1) ? i + 1 : 0] );
  22.  
  23.       curve.Append( line );
  24.     }
  25.  
  26.     doc.Create.NewFloor( curve, true );
  27.  
  28.     tx.Commit();
  29.   }
  30.   return Result.Succeeded;

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

На сайте The Building Coder есть также похожий метод для создания области.

На самом деле есть много возможностей для этого. Зависит от того, что вам действительно нужно в итоге.

Также можно ознакомится со статьей по созданию формообразующих элементов с помощью API (на англ.) Правда она очень старая.

Новейший и возможно самый легкий способ на сегодняшний день – использование DirectShape (на англ.). Несколько статей по использованию DirectShape есть и на нашем сайте.

Так что возможно следует начать именно с него.

Источник: http://thebuildingcoder.typepad.com/blog/2015/07/clicks-dmu-surfaces-firerating-feedback-vacation.html#4

Автор перевода: Виктор Чекалин

Обсуждение: http://adn-cis.org/forum/index.php?topic=2965

Опубликовано 31.08.2015