SharpCAD建模工具1.0发布了。SharpCAD模仿的是开源脚本建模工具OpenSCAD,SharpCAD造型内核使用的是OpenCasCADE7.5,未修改任何代码。此外还用到了以下几个开源库:
ScriptCs-------------------------------------------c#脚本引擎(Apache2)
SharpGL------------------------------------------c#版本的OpenGL(MIT)
FastColoredTextBox----------------------------文本编辑器(LGPL)
1、目前实现的功能
1.0版本目前实现了以下功能:
Circle => 二维圆
Square => 方形
PolyFace => 多边形
Sphere => 球
Box => 立方体
Cylinder => 圆柱
Torus => 圆环
Linear_Extrude => 拉伸(仅支持Circle,Square,PolyFace)
Rotate_Extrude => 拉伸(仅支持Circle,Square,PolyFace)
布尔交并差
Translate => 平移
Rotate => 旋转
Scale => 缩放
Color => 颜色
支持保存脚本为.cscad文本格式,支持将当前场景中对象导出为OBJ 。
2、软件界面及示例
2.1软件界面
界面如下,主要分为菜单栏,代码编辑器,场景窗口,输出窗口。
菜单栏:
文件:支持打开/新建.cscad文件,支持保存/另存当前脚本为cscad文件;
视图:支持对象以点、线框、填充模式显示,支持显示法线;
设计:执行脚本(快捷键F5),如果脚本有错误,则会将错误信息输出到输出窗口;
导出:导出为OBJ。
编辑器:
支持显示行号,支持撤销undo(Ctrl+Z),支持高亮显示,支持自动格式化代码。
场景:
鼠标左键=>旋转
鼠标滚轮=>缩放
输出窗口:
显示错误及提示信息,支持显示行号。
2.2示例
Circle c = new Circle (10);//创建一个半径为10的圆
c.Color = Color.Red;//将圆的颜色设置为红色
Scene.Add(c);//将圆添加到场景中,所有需要显示的对象都需要添加到场景中
结果如下:
来个复杂一点的:
//Square Rotate_Extrude
Square square = new Square(5);
square.Translate(10,0,0);
var re0 = ACOCCTTools.Rotate_Extrude(square,360);
re0.Color = Color.Red;
Scene.Add(re0);
//PolyFace Rotate_Extrude
List<Point3D> pnts = new List<Point3D>()
{
new Point3D (0,0,0),
new Point3D (8,4,0),
new Point3D (4,8,0),
new Point3D (4,12,0),
new Point3D (12,16,0),
new Point3D (0,20,0)
};
PolyFace face = new PolyFace(pnts);
var re1 = ACOCCTTools.Rotate_Extrude(face ,360);
re1.Translate(0,30,0);
re1.Color = Color.Green;
Scene.Add(re1);
//complex Rotate_Extrude
{
Square square0 = new Square(5);
square0 .Color = Color.Magenta;
var square1 = square0.Clone();
square1.Translate(12.5,0,0);
var re2 = ACOCCTTools.Rotate_Extrude(square1,180);
re2.Translate(40,40,0);
var square2 = square0.Clone();
square2.Translate(5,0,0);
var re3 = ACOCCTTools.Rotate_Extrude(square2,180);
re3.Translate(7.5,0,0);
re3.Translate(40,40,0);
var square3 = square0.Clone();
square3.Translate(5,0,0);
var re4 = ACOCCTTools.Rotate_Extrude(square3,-180);
re4.Translate(-7.5,0,0);
re4.Translate(40,40,0);
Scene.Add(re2);
Scene.Add(re3);
Scene.Add(re4);
}
结果如下:
主程序已混淆,之所以混淆,是因为代码写得烂,无他!
下载链接: