c# - 如何使用 Eyeshot 将区域提取为网格或实体?

标签 c# geometry autodesk-navisworks eyeshot

我正在尝试使用 Eyeshot 在 autodesk naviswork 上创建导航网格。

使用 Solid.FromTriangles() 创建实体后,将顶点和 IndexTriangle 转换为顶点三角形。

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

但我认为它对 bool 运算符不起作用。

所以我想提取使用 bool 运算符的区域。

如何提取区域到网格或实体(或顶点三角形)?

最佳答案

这很容易做到。您必须确保您的区域顶点已排序,否则您可能会遇到一些问题,但它是一个简单的参数。如果形状不是空心的,这里是一个例子:

// 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);
}

一个从 vertese 创建 10 x 10 x 10 立方体的简单示例(有更简单的方法来制作立方体,但为了简单起见,我将制作一个立方体)

// 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);

关于c# - 如何使用 Eyeshot 将区域提取为网格或实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54088008/

相关文章:

c# - 通用约束和类型参数困惑

C# 使用 LINQ 将 ID 列表与对象列表中的每个 ID 进行比较

c# - 如何在 XAML 和 C# 中将字符串列表显示为 DataGrid(表)

javascript - 试图计算圆上两点之间的 Angular ?

c# - Navisworks TreeView 到数据表

c# - 我应该使用域名还是域 Controller 名称绑定(bind)到 Active Directory?

SVG 半圆和 Arc 参数消歧

matlab - 生成每个点之间距离最小的 3-d 随机点?

c# - 在 C# 项目中使用 C++ API