Как я могу извлечь область в сетку или твердое тело, используя глаза? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать навигационную сетку на Autodesk Naviswork, используя Eyeshot.

преобразование вершин и IndexTriangle в треугольники вершин после создания твердого тела с использованием Solid.FromTriangles().

var solidList = new List();
var Solid = Solid.FromTriangles(item.vertices, item.triangles);

но это не работает для логических операторов, подумал я.

, поэтому я хочу извлечь регион для использования логических операторов.

как извлечь область из сетки или сплошного тела (или вершин треугольников)?

1 Ответ

0 голосов
/ 08 января 2019

Это очень легко сделать. Вы должны убедиться, что ваш регион vertese отсортирован, иначе у вас могут возникнуть некоторые проблемы с ним, но это простой параметр. Если форма не полая, вот пример:

// the verteses has to be in order and direction doesn't matter here 
// i simply assume it's drawn on X/Y for the purpose of the example
public static Region CreateRegion(List<Point3D> verteses)
{
    // create a curve list representing
    var curves = new List<ICurve>();

    // for each vertex we add them to the list
    for (int i = 1; i < verteses.Count; i++)
    {
        curves.Add(new Line(verteses[i - 1], verteses[i]));
    }

    // close the region
    curves.Add(new Line(verteses.Last(), verteses[0]));

     return new Region(new CompositeCurve(curves, true), Plane.XY, true);
}

// this extrude in Z the region
public static Solid CreateSolidFromRegion(Region region, double extrudedHeight)
{
    // extrude toward Z by the amount
    return region.ExtrudeAsSolid(new Vector3D(0, 0, 1), extrudedHeight);
}

простой пример создания куба 10 на 10 на 10 из vertese (есть гораздо более простой способ сделать куб, но для простоты я сделаю куб)

// create the 4 verteses
var verteses = new List<Point3D>()
{
    new Point3D(0, 0, 0),
    new Point3D(10, 0, 0),
    new Point3D(10, 10, 0),
    new Point3D(0, 10, 0)
}

// create the region on the XY plane using the static method
var region = CreateRegion(verteses);

// extrude the region in Z by 10 units
var solid = CreateSolidFromRegion(region, 10d);
...