控件下载地址:http://www.mxdraw.com/download.html。
运行MxDraw3d6.0(20180604)TryVersion.exe,这是一个自解压包的exe,找到解压目录后点击运行MxDraw3d6.0(20180604)TryVersion.exe,会在当前目录下创建一个MxDraw3d60文件夹。
文件夹中包含三个子文件夹。
1、Bin文件夹是发行版和调试版的应用例子程序\Bin\vc100\Test3d.exe点击即可运行。
2、Mx3D文件包含C#、C++、IE、版本的sample代码直接可以编译运行。
3、MxDraw3dCode文件夹是lib文件和各种头文件。
注册控件之前请先退出杀毒软件(如360杀毒软件),以 管理员身份(否则会注册失败)运行 MxDraw3d60目录下的RegMxDraw3d.bat。
若是没有以管理员方式运行则可能出现如下情况:
运行Visual Studio,点击左上角【文件(F)】->【新建(N)】->【项目(P)】,选择Visual C#,使用Windows 窗体应用 (.NET Framework) 新建一个工程。
在工具箱中选择“选择项”,的“选择工具项”中选中“com组件”找到控件 MxDrawX3d Control ,选中点击确定。然后再工具箱找到我们的控件拖入界面即可。(如下)
1、在工程创建完成后,打开界面。找到工具箱,在工具箱中的空白处右单机鼠标找到选择项并点击进入。然后再选择项中点击com组件,并找到 MxDrawX3d Control 。点击勾选。
2、回到工具箱,会发现添加了如下控件,将其控件拖入界面即可。
添加程序集引用: using MxDrawX3dLib :
以绘制基本的三维实体为列:绘制圆柱。
//设置实体颜色索引 axMxDrawX3d1.DrawCADColorIndex = 5; //设置实体材质索引 axMxDrawX3d1.DrawMaterial = 3; //绘制圆柱20:半径,100 :高度 axMxDrawX3d1.DrawCylinder(20, 100); axMxDrawX3d1.ZoomAll();
运行效果如下:
简单的实体布尔运算:
MxDraw3dMakeShape make = new MxDraw3dMakeShape(); //绘制圆球(0,0,0)球的原点,40球的半径 MxDraw3dShape Sphere = make.DoSphere(0, 0, 0, 40); //绘制方块(-10, -50, -10) 方块的原点,(20,100,20)方块的长宽高 MxDraw3dShape Box = make.DoBox(-10, -50, -10, 20,100,20); //进行布尔相加运算 MxDraw3dShape ShapeAdd = make.DoAdd(Sphere, Box); //设置实体的颜色和材质 ShapeAdd.Mx3dColorIndex = MxDrawX3dLib.MX_3DCOLORINDEX.Mx3dSLATEGRAY4; ShapeAdd.Mx3dMaterial = MxDrawX3dLib.MX_3DMATERIAL.Mx3dBRASS; //设置显示模式 ShapeAdd.SetDisplayMode(1); //绘制得到的实体 axMxDrawX3d1.DrawEntity(ShapeAdd); //居中显示 axMxDrawX3d1.ZoomAll(); MxDraw3dShape Sphere1 = make.DoSphere(100, 0, 0, 40); MxDraw3dShape Box1 = make.DoBox(90, -50, -10, 20, 100, 20); MxDraw3dShape ShapeCut = make.DoCut(Sphere1, Box1); ShapeCut.Mx3dColorIndex = MxDrawX3dLib.MX_3DCOLORINDEX.Mx3dMATRABLUE; ShapeCut.Mx3dMaterial = MxDrawX3dLib.MX_3DMATERIAL.Mx3dBRASS; ShapeCut.SetDisplayMode(1); axMxDrawX3d1.DrawEntity(ShapeCut); axMxDrawX3d1.ZoomAll();
运行效果如下:
平移、旋转、透明度、纹理:
MxDraw3dMakeShape make = new MxDraw3dMakeShape(); //绘制方块 MxDraw3dShape shape2 = make.DoBox(0, 0, 0, 300, 300, 15); shape2.SetDisplayMode(1); //设置透明度 shape2.Transparency = 0.5; axMxDrawX3d1.DrawEntity(shape2); axMxDrawX3d1.ZoomAll(); //平移旋转构造 MxDraw3dShapeTransformation r2 = new MxDraw3dShapeTransformation(); //旋转基点坐标 MxDraw3dPoint ptRot = new MxDraw3dPoint(); ptRot.x = 1000; ptRot.y = 300; ptRot.z = 0; //旋转法向量 MxDraw3dVector pvRot = new MxDraw3dVector(); pvRot.x = 0; pvRot.y = 1; pvRot.z = 0; //平移函数绕基点向量轴旋转90 r2.Rotation(ptRot, pvRot, 90 * 3.14159265 / 180.0); MxDraw3dShapeTransformation s2 = new MxDraw3dShapeTransformation(); //平移基点 MxDraw3dPoint ptMove = new MxDraw3dPoint(); ptMove.x = 0; ptMove.y = 0; ptMove.z = 0; //缩放因子 s2.scale(ptMove, 1.0); //平移向量 MxDraw3dVector pvMove = new MxDraw3dVector(); pvMove.x = -600; pvMove.y = 0; pvMove.z = 0; MxDraw3dShapeTransformation m2 = new MxDraw3dShapeTransformation(); //于基点向量平移 m2.Move(pvMove); //计算由m2和r2组成的转换 m2.multiply(r2); m2.multiply(s2); shape2.TransformShape(m2); //创建纹理实体 MxDraw3dTexturedShape ts2 = make.CreateTexturedShape(shape2); //读取纹理图片 ts2.SetTextureFileName(@"K:\wood01.bmp"); //启用纹理映射 ts2.SetTextureMap(true); //缩放纹理(面部的百分比)。 ts2.SetTextureScale(true, 1, 1); //设置每个面上纹理的出现次数。 ts2.SetTextureRepeat(true, 1, 1); //更改纹理的原点(0,0)将被映射到曲面(UOrigin,VOrigin) ts2.SetTextureOrigin(true, 0, 0); ts2.SetDisplayMode(3); axMxDrawX3d1.DrawEntity(ts2); axMxDrawX3d1.ZoomAll();
运行:平移、旋转、透明度、纹理实例效果如下: