- 积分
- 650
- 明经币
- 个
- 注册时间
- 2012-11-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2012-11-30 17:33:48
|
显示全部楼层
现在传一个最基本的应用操作过程:
我门要绘制如下图所示范的图形
图3
1.首先是创建一个应用程序,这里我们选择mfc对话框类型的应用程序做为示例;
图1:
图2
2.做界面
图4
3.给各个edit控件添加变量:
图5
4.添加绘图功能函数
图六
5.将压缩包中的scrlib目录复制到工程目录下
图7
6.将倒入库scrlib.lib放置到工程目录lib下
图8
7.将scr驱动库scrlib.dll与应用程序放置到同一个目录下
图9
9.编译并运行一次程序;
10.添加一个专门用来画图的类MyDwgDraw,在类的头文件内添加代码如图示:
在工程中倒入scrlib.lib库,扩充继承,修改构造函数.
图11
,12
11.修改构造函数MyDwgDraw()为MyDwgDraw(TCHAR workPath[_MAX_PATH]);
具体样子:
MyDwgDraw::MyDwgDraw(TCHAR workPath[_MAX_PATH])
:DwgDraw(workPath),dimSet(this)
{
}
12.MyDwgDraw类添加公有绘图函数:
void Drawing(bool bShow=false); //生成二维产品图
13.在void CScrlibDlg::OnOK()中实例化一个MyDwgDraw类;
(当然你首先要在头部包含头文件#include "MyDwgDraw.h")
void CScrlibDlg::OnOK()
{
// TODO: Add extra validation here
MyDwgDraw mydwg("C:\\work");//这个目录你要自己创建了,最好先不要先不要用中文目录.
//把程序界面上的数据传到MyDwgDraw类中去
mydwg.Drawing(true);//是否显示图形
CDialog::OnOK();
}
14.现在就可以开始正式绘制图形了,在Drawing()函数中试绘一条直线:
void MyDwgDraw::Drawing(bool bShow)
{
AcGePoint3d ptStart,ptEnd;
ptStart.set(10,10,0);
ptEnd.set(52,73,0);
//绘制直线
DrawLine(ptStart, //直线起点坐标
ptEnd, //直线终点坐标
"0", //层,
LT_BYLAYER, //线型,
CLR_BYLAYER,//颜色,0;随层,1:红色,2:黄色3:绿色,4:青色,5:兰色,6:紫色,7:白色
LW_BYLAYER, //线宽
true); //可见性
//保存图形文件
char ACADApplication[]="C:\\Program Files\\AutoCAD 2002\\acad.exe";//此处放置autocad应用程序安装全路径
char DwgFileName[]="C:\\work\\scrlib应用示例\\dwg\\test.dwg";
//以下操作会删除现有的dwg文件,需要自己检查是否覆盖现有文件
saveToDwg(ACADApplication,DwgFileName, bShow); //autocad应用程序的全路径(包括文件名称),要保存的dwg文件名称(路径+文件名+扩展名[.dwg])
}
15.现在编译并运行程序,然后点击"绘dwg图",没有问题的话,你就真正可以用scrlib库开始做开发了;
16.我们现在把界面上图形绘制的代贴出来;
//生成二维图
//
void MyDwgDraw::Drawing(bool bShow)
{
AcGePoint3d bPt,pt1,pt2,pt3,pt4;
bPt.set(100,100,0);
m_r=5.0;
//绘制多义线
AcGePoint3d Vertex[4];
int i=0;
for (i=0;i<4;i++)
{
Vertex=bPt;
}
Vertex[1].x+=m_a;
Vertex[2].x=Vertex[1].x;
Vertex[2].y+=m_b;
Vertex[3].y=Vertex[2].y;
DrawPline(Vertex, //多义线<AcGePoint3dArray有问题时用该函数>,顶点坐标数组
4, //顶点数组顶点个数
1, //类型,1:多段线,2:曲线拟合,3:二次样条,4:三次样条,
true, //多义线是否闭合,
1, //指定一个可以拾取多义线的点,默认使用第一点,当类型为2/4时必须指定真正能够拾取的点(并且该点上没有其它实体线型)
NULL, //<起点切向点<type为2/4时须要设置>>:未指明时使用第一个点.闭合时的切点也使用该参数指定.
NULL, //<终点切向点<type为2/4时须要设置>>:未指明时使用最后个点.
LAYER_0, //层,
LT_BYLAYER, //线型,
CLR_BYLAYER, //颜色,0;随层,1:红色,2:黄色3:绿色,4:青色,5:兰色,6:紫色,7:白色
LW_BYLAYER, //线宽
true); //可见性
//标注a
pt1=Vertex[0];
pt1.y-=10;
KHAlignedDim(Vertex[0],Vertex[1], //标注界线第1点,第2点,
pt1, //尺寸线位置点,尺寸文字,
"", //标注样式,未指明之时,采用当前cad中当前设置的标注样式(具有不确定性)
"0", //标注层
"", //尺寸文字,(未指明之时则标注Pt1和Pt2的实测值)
0); //文字旋转角度(弧度)
int row=2,col=3;
Vertex[0].x+=m_e;
Vertex[0].y=Vertex[3].y-m_d;
Vertex[1].x=Vertex[0].x;
Vertex[1].y=Vertex[0].y-m_c;
for (i=0;i<row;i++)
{
pt1=Vertex;
for (int j=0;j<col;j++)
{
pt2=pt1;
pt2.x +=j*m_f;
DrawCircle(pt2, //圆心坐标
m_r, //半径
LAYER_0, //层,
LT_BYLAYER, //线型,
CLR_BYLAYER, //颜色,0;随层,1:红色,2:黄色3:绿色,4:青色,5:兰色,6:紫色,7:白色
LW_BYLAYER, //线宽
true); //可见性
}
}
//保存图形文件
char ACADApplication[]="C:\\Program Files\\AutoCAD 2002\\acad.exe";//此处放置autocad应用程序安装全路径
char DwgFileName[]="C:\\work\\scrlib应用示例\\dwg\\test.dwg";
//以下操作会删除现有的dwg文件,需要自己检查是否覆盖现有文件
saveToDwg(ACADApplication,DwgFileName, bShow); //autocad应用程序的全路径(包括文件名称),要保存的dwg文件名称(路径+文件名+扩展名[.dwg])
}
17.更强大的应用去参考demo中的例子;研发经费赞助电话13517605601;哈哈... |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|