家具设计C#编程
/*家具设计编程,在C#中用ewdraw在中做了个衣柜,附上图片与代码
以下是C#实现的代码
*/
/*DeleteAll为清空函数,
* 使用该函数将把视图中的所有实体删除
* 与该函数相关的是Delete函数,区别是Delete函数是根据实体ID 号只删除一个实体。
*/
axEWdraw1.DeleteAll();
/*
* Box函数,该函数是做家具时,用的最多的函数。因为盒体是板材的基本形状。
* 掌握了该函数,就可以把做出各样式的柜体。
* 参数:
* 1.基点,也就是box起始点位置
* 2.长 x方向
* 3.宽 y方向
* 4.高 z方向
* 该函数返回一个已经被创建的盒体的ID号(〉0),以备其它函数调用
*/
int frame1= axEWdraw1.Box(new object[] { 0.0, 0, 0 }, 270, 90, 3);//bottom
int frame2 = axEWdraw1.Box(new object[] { 0.0, 0, 3 }, 3, 90, 230);//left
int frame3 = axEWdraw1.Box(new object[] { 270.0 - 3.0, 0, 3 }, 3, 90, 230);//right
int frame4= axEWdraw1.Box(new object[] { 0.0, 0, 230.0 }, 270, 90, 3.0);//top
int frame5= axEWdraw1.Box(new object[] { 0.0, 90 - 3.0, 0.0 }, 270, 3, 230 + 3.0);//back
int frame6= axEWdraw1.Box(new object[] { 100.0, 20, 3 }, 3, 70, 230);//mid1;
int frame7= axEWdraw1.Box(new object[] { 100.0 + 70.0, 20, 3 }, 3, 70, 230);//mid1;
/*SetEntTexture是设置实体的纹理
* 参数:
* 1.要设置纹理的实体的ID号
* 2.纹理图形的的文件名,要确保文字是存在的。可以支持bmp,jpg。 * 3与4是UV缩放值,一般都取1,不需要动
* 5与6是UV重复值,一般都取1,不需要动
* 7与8是UV的原点,一般都取0,不需要动
*/
axEWdraw1.SetEntTexture(frame1, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(frame2, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(frame3, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(frame4, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(frame5, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
0.0);
axEWdraw1.SetEntTexture(frame7, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
/*
* AddIDToBuffer在此的作用是为了在最后形成组,先将要成为组成员的实体的ID号放入缓存。
* 参数只有一个,就是ID号
* 需要注意的是,这个函数与ClearIDBuffer是一对,ClearIDBuffer在最后使用。
*/
axEWdraw1.AddIDToBuffer(frame1);
axEWdraw1.AddIDToBuffer(frame2);
axEWdraw1.AddIDToBuffer(frame3);
axEWdraw1.AddIDToBuffer(frame4);
axEWdraw1.AddIDToBuffer(frame5);
axEWdraw1.AddIDToBuffer(frame6);
axEWdraw1.AddIDToBuffer(frame7);
int tab1= axEWdraw1.Box(new object[] { 0, 20, 230 - 50 }, 100, 70, 3);//table1
int tab2 = axEWdraw1.Box(new object[] { 100.0, 20, 230 - 50 }, 70, 70, 3);//table2
int tab3 = axEWdraw1.Box(new object[] { 100.0 + 70.0, 20, 230 - 50 }, 100, 70, 3);//table3
int tab4 = axEWdraw1.Box(new object[] { 100.0, 20, 230 - 50 - 90 }, 70, 70, 3);//table4
int tab5 = axEWdraw1.Box(new object[] { 100.0 + 70.0, 20, 25 + 3.0 }, 100, 70, 3);//table5
int tab6= axEWdraw1.Box(new object[] { 100.0, 20, 50 }, 70, 70, 3);//table6
axEWdraw1.AddIDToBuffer(tab1);
axEWdraw1.AddIDToBuffer(tab2);
axEWdraw1.AddIDToBuffer(tab3);
axEWdraw1.AddIDToBuffer(tab4);
axEWdraw1.AddIDToBuffer(tab5);
axEWdraw1.AddIDToBuffer(tab6);
0.0);
axEWdraw1.SetEntTexture(tab2, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(tab3, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(tab4, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(tab5, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(tab6, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
/*Cylinder2P是根据柱体轴线,底和顶轴线的两个端点创建柱体,参数分别为这个两个端点*/
int c1 = axEWdraw1.Cylinder2P(1.5, new object[] { 0.5, 30, 230 - 50 - 10 }, new object[] { 269.5, 30, 230 - 50 - 10 });
/*SetEntColor 设置实体颜色色,参数是颜色索引,可以用RGBToIndex将RGB值转为索引值*/
axEWdraw1.SetEntColor(c1, axEWdraw1.RGBToIndex(255, 255, 255));
axEWdraw1.AddIDToBuffer(c1);
int c2 = axEWdraw1.Cylinder2P(1.5, new object[] { 0.5, 30, 90 + 1.5 }, new object[] { 100 + 2.5, 30, 90 + 1.5 });
axEWdraw1.SetEntColor(c2, axEWdraw1.RGBToIndex(255, 255, 255));
axEWdraw1.AddIDToBuffer(c2);
//drawer
int drawersub1 = axEWdraw1.Box(new object[] { 100.0 + 2.0, 20, 3 }, 3, 70, 15);//sub1;
int drawersub2= axEWdraw1.Box(new object[] { 100.0 + 70 - 2.0, 20, 3 }, 3, 70, 15);//sub2;
int drawersub3 = axEWdraw1.Box(new object[] { 100.0 + 2.0, 20, 3 }, 70, 3, 15);//sub3
int drawersub4 = axEWdraw1.Box(new object[] { 100.0 + 2.0, 90 - 2.0 - 3.0, 3 }, 70, 3, 15);//sub4
int drawersub5 = axEWdraw1.Box(new object[] { 100.0 + 2.0, 20, 3 }, 70, 70, 3);//sub5
int handle1= axEWdraw1.Box(new object[] { 100.0 + 35, 20 - 2.0, 3 + 7.5 }, 4, 3, 2);//
axEWdraw1.AddIDToBuffer(drawersub1);
axEWdraw1.AddIDToBuffer(drawersub2);
axEWdraw1.AddIDToBuffer(drawersub3);
axEWdraw1.AddIDToBuffer(drawersub4);
axEWdraw1.AddIDToBuffer(drawersub5);
axEWdraw1.AddIDToBuffer(handle1);
axEWdraw1.SetEntTexture(drawersub1, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(drawersub2, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(drawersub3, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(drawersub4, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(drawersub5, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
axEWdraw1.SetEntTexture(handle1, "test.bmp", 1, 1, 1, 1, 0.0, 0.0);
/*Copy为复制函数,是较常用函数。用该函数可以复制实体。可用于相同板材位置不同时,可以直接复制生成。
*参数:
*1.要复制的实体ID
*2.要复制实体位置的起始点
*3.复制后实体位置的目标点
*复制成功后,返回一个〉0的ID号,也就是新颜色的复制实体
*/
int drawer2 = axEWdraw1.Copy(drawersub1, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
drawer2 = axEWdraw1.Copy(drawersub2, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
drawer2 = axEWdraw1.Copy(drawersub3, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
drawer2 = axEWdraw1.Copy(drawersub4, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
drawer2 = axEWdraw1.Copy(drawersub5, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
drawer2= axEWdraw1.Copy(handle1, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 });
axEWdraw1.AddIDToBuffer(drawer2);
/*Copy为复制函数,是较常用函数。用该函数可以复制实体。可用于相同板材位置不同时,可以直接复制生成。
*参数:
*1.要复制的实体ID
*2.要复制实体位置的起始点
*3.复制后实体位置的目标点
*复制成功后,返回一个〉0的ID号,也就是新颜色的复制实体
*/
int drawer3 = axEWdraw1.Copy(drawersub1, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
drawer3 = axEWdraw1.Copy(drawersub2, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
drawer3 = axEWdraw1.Copy(drawersub3, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
drawer3 = axEWdraw1.Copy(drawersub4, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
drawer3 = axEWdraw1.Copy(drawersub5, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
drawer3= axEWdraw1.Copy(handle1, new object[] { 0, 0, 0 }, new object[] { 0, 0, 15 * 2.0 });
axEWdraw1.AddIDToBuffer(drawer3);
/*MakeGroupWithPlane函数,是指将被添加到ID缓存的实体集合做成一个组.
* 参数:
* 1.组名
* 2.组的基点
* 3.组的吸附面的原点
* 4.组的吸附面的方向
* 5.组的吸附面的X方向
* 注意:也可以在创建组后,使用SetGroupPlaneByBoxFace来设置组的吸附面,SetGroupPlaneByBoxFace的参数为1..6 , 分别表示,前向面,后向面,左向面,右向面,顶面,底面.
*/
axEWdraw1.MakeGroupWithPlane("cabinet", new object[] { 0, 0, 0 }, new object[] { 0, 0, 0 }, new object[] { 0, -1, 0 }, new object[] { 1, 0, 0 });
//ClearIDBuffer与AddIDToBuffer对应,用来清空ID缓存
axEWdraw1.ClearIDBuffer();
/*SetViewCondition 设置视图的基本方向,较常用,一般设置为8,东南方向*/
axEWdraw1.SetViewCondition(8);
/*SetBackGroundColor 设置背景色,参数是颜色索引,可以用RGBToIndex将RGB值转为索引值*/
axEWdraw1.SetBackGroundColor(axEWdraw1.RGBToIndex(255, 255, 255));