Ошибка при создании сплайна
Я работаю над надстройкой для Revit, где в частности есть перенос кривых из Rhino в Revit для создания балок.
Код работает замечательно, когда количество контрольных точек кривой больше или равно 4. Но если их три, то возникает ошибка.
Как можно нарисовать сплайн с тремя контрольными точками с помощью Revit API?
Мой код:
- List<XYZ> ctrPoints = new List<XYZ>();
- ctrPoints.Add( new XYZ( Utils.mmToFeet( 72500.017337 ),
- Utils.mmToFeet( -5072.522765 ), Utils.mmToFeet( 0 ) ) );
- ctrPoints.Add( new XYZ( Utils.mmToFeet( 105082.371745 ),
- Utils.mmToFeet( -748.798009 ), tils.mmToFeet( 0 ) ) );
- ctrPoints.Add( new XYZ( Utils.mmToFeet( 117899.12727 ),
- Utils.mmToFeet( -15572.997171 ), Utils.mmToFeet( 0 ) ) );
- List<double> weights = new List<double>();
- weights.Add( 1 );
- weights.Add( 1 );
- weights.Add( 1 );
- List<double> knots = new List<double>();
- knots.Add( 0 );
- knots.Add( 0 );
- knots.Add( 0 );
- knots.Add( 52464.568605 );
- knots.Add( 52464.568605 );
- knots.Add( 52464.568605 );
- NurbSpline detailNurbSpline = NurbSpline.Create(
- ctrPoints, weights, knots, 3, false, true );
И пример сплайна:
Ответ: В возникающем исключении говорится, что количество контрольных точек должно быть не меньше чем значение параметра degree + 1.
Так как в приведенном выше коде значение параметра равно 3, то это условие нарушается.
Я бы порекомендовал использовать метод NurbSpline.Create([control points], [weights]). В нем автоматически вычисляется значение degree, в зависимости от количества точек.
Во внутреннем комментарии к коду написано следующее:
- // Используйте degree 1 для 2 точек, degree 2 для 3
- // и degree 3 для четырех и более
Обсуждение: http://adn-cis.org/forum/index.php?topic=2771
Опубликовано 05.06.2015