Как работать с 2D профилями в .NET
Как работать с 2D профилями в .NET
В этой статье показано, как определять 2D профили поперечного сечения и вытягивать или вращать их в 3D твердые тела, используя Aspose.3D для .NET.
Шаг1 — Установить пакет
dotnet add package Aspose.3D.FOSSШаг2 — Создать параметризованный профиль
Используйте встроенные фигуры, такие как RectangleShape или CircleShape, для стандартных сечений:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Profiles;
var scene = new Scene();
// Rectangle profile: 2 units wide, 1 unit tall
var rectProfile = new RectangleShape();
rectProfile.XDim = 2.0;
rectProfile.YDim = 1.0;
// Extrude 5 units along Z
var beam = new LinearExtrusion(rectProfile, 5.0);
beam.Slices = 10;
scene.RootNode.CreateChildNode("beam", beam);Шаг3 — Создать параметрический L-образный профиль
LShape создает L-образный брус из размерных свойств:
using Aspose.ThreeD.Profiles;
// L-shaped cross-section structural beam
var lProfile = new LShape();
lProfile.Width = 0.1;
lProfile.Depth = 0.2;
lProfile.Thickness = 0.01;
var lBeam = new LinearExtrusion(lProfile, 4.0);
scene.RootNode.CreateChildNode("l_beam", lBeam);Шаг 4 — Создать зеркальный профиль
MirroredProfile создает симметричный сечение, зеркально отражая базовый профиль:
using Aspose.ThreeD.Profiles;
// Base profile to mirror
var baseProfile = new RectangleShape();
baseProfile.XDim = 0.5;
baseProfile.YDim = 1.0;
// Mirror to get a symmetric beam flange
var mirrored = new MirroredProfile(baseProfile);
var iBeam = new LinearExtrusion(mirrored, 3.0);
scene.RootNode.CreateChildNode("i_beam", iBeam);Шаг 5 — Вращать профиль в тело
RevolvedAreaSolid вращает профиль вокруг оси, создавая вращательно-симметричное тело. Установите Shape и AngleEnd в экземпляре:
var circleProfile = new CircleShape { Radius = 0.5 };
var revolved = new RevolvedAreaSolid();
revolved.Shape = circleProfile;
revolved.AngleEnd = Math.PI * 2; // full revolution
scene.RootNode.CreateChildNode("sphere", revolved);Шаг 6 — Сохранить сцену
scene.Save("profiles.gltf", FileFormat.GLTF2);
Console.WriteLine("Saved: profiles.gltf");Troubleshooting
| Symptom | Вероятная причина | Исправление |
|---|---|---|
| Экструзия не имеет видимой геометрии | Края профиля коллинеарны или имеют нулевую площадь | Проверьте, что Edges образуют корректный замкнутый полигон |
| Отражённый результат не симметричен | MirroredProfile отражает всё, что baseProfile оборачивает — отдельный параметр оси установить нельзя | Передайте корректный baseProfile в new MirroredProfile(baseProfile); отрегулируйте базовый профиль, чтобы получить требуемую симметрию |
| Вращаемое тело полое или плоское | Угол выдавливания равен 0 или профиль открыт | Используйте закрытый профиль и установите угол Math.PI * 2 для полного оборота |
Сопутствующие ресурсы
- Работа с профилями — руководство разработчика с полными деталями API
- Работа с сущностями сцены — присоединить экструдированные тела к узлам сцены