Как я могу извлечь область в сетку или твердое тело, используя глаза?
Я пытаюсь создать навигационную сетку на Autodesk Naviswork, используя Eyeshot.
преобразовать вершины и IndexTriangle в треугольники вершин после создания твердого тела, используя Solid.FromTriangles()
,
var solidList = new List();
var Solid = Solid.FromTriangles(item.vertices, item.triangles);
но это не работает для логических операторов, подумал я.
поэтому я хочу извлечь регион для использования логических операторов.
Как я могу извлечь регион в сетку или сплошной (или вершины треугольников)?
1 ответ
Это очень легко сделать. Вы должны убедиться, что ваш регион 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);