@mIka01

Как построить stl силами c#?

Здравствуйте, как из массива точек построить stl модель?
Имеется массив точек в трёхмерном пространстве, их можно объединить в треугольники (если это необходимо). Вроде вёрстка документа говорит о незамысловатый структуре stl, однако я новичок и поэтому скорее всего не смогу с этим разобраться. Ест ли готовая библиотека, а лучше гайд как это делать.

Заранее благодарю.
  • Вопрос задан
  • 414 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Есть несколько библиотек:
Бесплатная: https://www.nuget.org/packages/QuantumConcepts.For...
Платная: https://products.aspose.com/cad/net
Имеется массив точек в трёхмерном пространстве, их можно объединить в треугольники (если это необходимо).

Необходимо, тк STL оперирует треугольниками - ещё придётся определить нормали этих треугольников в своём облаке точек и записывать треугольники в правильном порядке (тк в самом формате не предусмотрено полей для нормалей)

Вроде вёрстка документа говорит о незамысловатый структуре stl, однако я новичок и поэтому скорее всего не смогу с этим разобраться.

Если уже не смог (даже текстовый формат), то библиотека не поможет. Если ещё не пробовал - иди пробовать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mIka01 Автор вопроса
Если нужно то есть библиотека.
Скачиваете напрямую из NuGet.
using System.IO;
using IxMilia.Stl;

StlFile stlFile = new StlFile();
            stlFile.SolidName = "my-solid";

            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 0, 0)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 100, 0)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(100, 0, 100), new StlVertex(0, 100, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 100), new StlVertex(0, 100, 100), new StlVertex(100, 100, 100)));

            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(100, 0, 0), new StlVertex(0, 0, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(100, 0, 0), new StlVertex(100, 0, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 100, 0), new StlVertex(100, 100, 0), new StlVertex(0, 100, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 100, 100), new StlVertex(100, 100, 0), new StlVertex(100, 100, 100)));

            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 0), new StlVertex(0, 100, 0), new StlVertex(0, 0, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(0, 0, 100), new StlVertex(0, 100, 0), new StlVertex(0, 100, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 0), new StlVertex(100, 100, 0), new StlVertex(100, 0, 100)));
            stlFile.Triangles.Add(new StlTriangle(new StlNormal(1, 0, 0), new StlVertex(100, 0, 100), new StlVertex(100, 100, 0), new StlVertex(100, 100, 100)));

            using (FileStream fs = new FileStream(@"C:\Users\...\1.stl", FileMode.Open))
            {
                stlFile.Save(fs);
            }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы