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

21/07/2015

Исключение при вызове метода NewExtrusion - один из параметров не удовлетворяет требованиям

Иногда, при вызове метода Document.FamilyCreate.NewExtrusion возникает исключение:  Autodesk.Revit.Exceptions.ArgumentException - один из параметров не удовлетворяет требованиям.

Наиболее вероятная причина – профиль выдавливания и вектор нормали рабочей плоскости не перпендикулярны.

Например:

Код - C#: [Выделить]
  1. // создаем прямоугольный профиль
  2. CurveArrArray profile = new CurveArrArray();
  3. CurveArray ca = new CurveArray();
  4. XYZ[] points = new XYZ[] {
  5.     new XYZ(10, 0, 0),
  6.     new XYZ(20, 0, 0),
  7.     new XYZ(20, 0, 10),
  8.     new XYZ(10, 0, 10)
  9. };
  10. for (int ii = 0; ii < points.Length; ii++)
  11. {
  12.     var point = points[ii];
  13.     var point2 = points[ii == points.Length - 1 ? 0 : ii + 1];
  14.     ca.Append(Line.CreateBound(point, point2));
  15. }
  16. profile.Append(ca);
  17.  
  18. // создает вектор нормали рабочей плоскости НЕ перпендикулярно профилю
  19. SketchPlane sketchplane = SketchPlane.Create(doc,
  20.     new Plane(XYZ.BasisZ, XYZ.Zero));
  21. Extrusion solid = doc.FamilyCreate.NewExtrusion(
  22.     true, profile, sketchplane, 20);

Данный код вызовет исключение, так как вектор нормали рабочей плоскости совпадает с осью Z, но профиль перпендикулярен оси Y.

Поэтому корректный код для создания рабочей плоскости должен быть таким:

Код - C#: [Выделить]
  1. SketchPlane sketchplane = SketchPlane.Create(doc,
  2.     new Plane(XYZ.BasisY, XYZ.Zero));

Источник: http://adndevblog.typepad.com/aec/2015/06/revitiapi-newextrusion-throws-argumentexception-one-of-the-conditions-for-the-inputs-was-not-satisfi.html

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

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

Опубликовано 21.07.2015
Отредактировано 24.07.2015 в 19:51:32