Создание поверхности в Revit
Вопрос: Мне нужно создать поверхность с помощью Revit API по заданным точкам. Поверхность может быть любая, например, пол, крыша или любой другой компонент. Поверхность не является рабочей плоскостью.
Есть какая-нибудь команда, которая делает это? Или мне нужно найти способ как это делать?
Ответ: Вот решение как можно создать пол по точкам:
- UIApplication uiapp = commandData.Application;
- UIDocument uidoc = uiapp.ActiveUIDocument;
- Document doc = uidoc.Document;
- using( Transaction tx = new Transaction( doc ) )
- {
- tx.Start( "Create a Floor" );
- int n = 4;
- XYZ[] points = new XYZ[n];
- points[0] = XYZ.Zero;
- points[1] = new XYZ( 10.0, 0.0, 0.0 );
- points[2] = new XYZ( 10.0, 10.0, 0.0 );
- points[3] = new XYZ( 0.0, 10.0, 0.0 );
- CurveArray curve = new CurveArray();
- for( int i = 0; i < n; i++ )
- {
- Line line = Line.CreateBound( points[i],
- points[(i < n-1) ? i + 1 : 0] );
- curve.Append( line );
- }
- doc.Create.NewFloor( curve, true );
- tx.Commit();
- }
- return Result.Succeeded;
Обратите внимание, что изменение документа должно происходить в рамках транзакции, которая, в данном примере заключена в блок using.
На сайте The Building Coder есть также похожий метод для создания области.
На самом деле есть много возможностей для этого. Зависит от того, что вам действительно нужно в итоге.
Также можно ознакомится со статьей по созданию формообразующих элементов с помощью API (на англ.) Правда она очень старая.
Новейший и возможно самый легкий способ на сегодняшний день – использование DirectShape (на англ.). Несколько статей по использованию DirectShape есть и на нашем сайте.
Так что возможно следует начать именно с него.
Обсуждение: http://adn-cis.org/forum/index.php?topic=2965
Опубликовано 31.08.2015