21/07/2015
Исключение при вызове метода NewExtrusion - один из параметров не удовлетворяет требованиям
Иногда, при вызове метода Document.FamilyCreate.NewExtrusion возникает исключение: Autodesk.Revit.Exceptions.ArgumentException - один из параметров не удовлетворяет требованиям.
Наиболее вероятная причина – профиль выдавливания и вектор нормали рабочей плоскости не перпендикулярны.
Например:
Код - C#: [Выделить]
- // создаем прямоугольный профиль
- CurveArrArray profile = new CurveArrArray();
- CurveArray ca = new CurveArray();
- XYZ[] points = new XYZ[] {
- new XYZ(10, 0, 0),
- new XYZ(20, 0, 0),
- new XYZ(20, 0, 10),
- new XYZ(10, 0, 10)
- };
- for (int ii = 0; ii < points.Length; ii++)
- {
- var point = points[ii];
- var point2 = points[ii == points.Length - 1 ? 0 : ii + 1];
- ca.Append(Line.CreateBound(point, point2));
- }
- profile.Append(ca);
- // создает вектор нормали рабочей плоскости НЕ перпендикулярно профилю
- SketchPlane sketchplane = SketchPlane.Create(doc,
- new Plane(XYZ.BasisZ, XYZ.Zero));
- Extrusion solid = doc.FamilyCreate.NewExtrusion(
- true, profile, sketchplane, 20);
Данный код вызовет исключение, так как вектор нормали рабочей плоскости совпадает с осью Z, но профиль перпендикулярен оси Y.
Поэтому корректный код для создания рабочей плоскости должен быть таким:
Код - C#: [Выделить]
- SketchPlane sketchplane = SketchPlane.Create(doc,
- new Plane(XYZ.BasisY, XYZ.Zero));
Автор перевода: Виктор Чекалин
Отредактировано 24.07.2015 в 19:51:32
Обсуждение: http://adn-cis.org/forum/index.php?topic=2870
Опубликовано 21.07.2015Отредактировано 24.07.2015 в 19:51:32