SharpCAD是一款以C#为脚本的建模工具。模仿的开源脚本建模工具OpenSCAD,SharpCAD造型内核使用的是OpenCasCADE7.5。
1.0.1相比1.0增加了一下功能:
import => 导入 (目前仅支持OFF)
projection => 投影
TriangleMesh布尔运算
示例:
Import :TriangleMesh ACOCCTTools.Import(String strFileName);导入文件,目前仅支持OFF文件,返回值为TriangleMesh,三角网格。
String strFile = @"D:\SharpCAD\data\elephant.off";
TriangleMesh triMesh = ACOCCTTools.Import(strFile);
//各个方向缩放10倍
triMesh.Scale(10,10,10);
triMesh.Color = Color.Red;
Scene.Add(triMesh);
效果如下:
Projection :
List<PolyFace> ACOCCTTools.Projection(TriangleMesh triMesh)三角网获取投影
List<PolyFace> ACOCCTTools.Projection(ShapeBase shape)Shape获取投影
//triMesh为import导入后的TriangleMesh
var faces = ACOCCTTools.Projection(triMesh);
//设置下颜色,否则默认为triMesh颜色
foreach(var item in faces)
{
item .Color=Color.Blue;
}
Scene.Add(faces);
TriangleMesh布尔,同,ShapeBase布尔一样:
TriangleMesh TriangleMesh operator+(TriangleMesh left, TriangleMesh right);//布尔并
TriangleMesh TriangleMesh operator-(TriangleMesh left, TriangleMesh right);//布尔减
TriangleMesh TriangleMesh operator*(TriangleMesh left, TriangleMesh right);//布尔交
String strFile = @"D:\SharpCAD\data\elephant.off";
TriangleMesh triMesh0 = ACOCCTTools.Import(strFile);
triMesh0.Scale(10,10,10);
triMesh0.Color = Color.Red;
Scene.Add(triMesh0);
String strFile1 = @"D:\SharpCAD\data\eight.off";
TriangleMesh triMesh1 = ACOCCTTools.Import(strFile1);
triMesh1.Scale(10,10,10);
triMesh1.Color = Color.Green;
Scene.Add(triMesh1);
大象和数字8
布尔差
TriangleMesh triBoolean = triMesh1-triMesh0;
triBoolean.Translate(10,0,0);
triBoolean.Color = Color.Yellow;
Scene.Add(triBoolean );
布尔交
triBoolean = triMesh1*triMesh0;
triBoolean.Translate(-10,0,0);
triBoolean.Color = Color.Blue;
Scene.Add(triBoolean );
完整代码:
String strFile = @"D:\SharpCAD\data\elephant.off";
TriangleMesh triMesh0 = ACOCCTTools.Import(strFile);
triMesh0.Scale(10,10,10);
triMesh0.Color = Color.Red;
Scene.Add(triMesh0);
String strFile1 = @"D:\SharpCAD\data\eight.off";
TriangleMesh triMesh1 = ACOCCTTools.Import(strFile1);
triMesh1.Scale(10,10,10);
triMesh1.Color = Color.Green;
Scene.Add(triMesh1);
TriangleMesh triBoolean = triMesh1-triMesh0;
triBoolean.Translate(10,0,0);
triBoolean.Color = Color.Yellow;
Scene.Add(triBoolean );
triBoolean = triMesh1*triMesh0;
triBoolean.Translate(-10,0,0);
triBoolean.Color = Color.Blue;
Scene.Add(triBoolean );
下载链接