- 积分
- 650
- 明经币
- 个
- 注册时间
- 2012-11-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2012-11-29 18:49:40
|
显示全部楼层
shenzhi 发表于 2012-11-29 18:36
无图无真相!!
1.ScrLib脚本驱动AutoCAD绘图开发库,是纯C++语言的;
2.ScrLib绘图可以驱动CAD软件运行在后台绘图;
3.ScrLib库简单。最基本的只有三个类:一个基本功能类<QCADObject>,其功能为画线、圆、圆弧、椭圆、多义线(包括多段/拟合/样条曲线)、剖面线等;一个绘图环境设置类<DwgDraw>,其功能是设
置图层、线型、颜色、线宽、字体、标注样式等;另外一个类就是标注类<dimSet>,包括一些特殊符号的标注;只要掌握基本的三个类,就可以做开发。当然,另外还提供了一些辅助绘图类,例如直线,
圆,法兰,方框类,在这些类里有强大的数学运算能力,例如两个方向来的墙(直线)在某一处相交,只要定义两条直线,使用类提供的求交函数就可以得到交点了,不用像手绘那样去画什么辅助线,
然后裁剪,也不用去计算了。
4.用的时候将scrlib目录复制到工程目录下,然后将scrlib.lib导入工程了,可以在工程配置里面添加,也可以用代码引入,代码如下所示;
#include "./scrLib/scrLib.h"
#pragma comment(lib, ".\\lib\\scrLib.lib")//显示调用法:与Win32的调用方法一样,不需
5.其实你在建好vc应用程序工程以后将Demo目录下的压缩包解压后,找到以下四个文件加入工程就可以了。MyDwgBaseData类里放你的标准模板,如绘图环境设置DwgInit()函数中设置就可以;然后就
是图框和标题栏等一些模板化的东西xxxA1~XXXA5等;数据交换可以用PartsData类(大的话就用数据库或者文件来做);
MyDwgBaseData.cpp
MyDwgBaseData.h
MMJBanDeng.cpp
MMJBanDeng.h
6.所有实际的绘图的类都从MyDwgBaseData类派生就可以了。MMJBanDeng就是一个实例化的东西了,然后在需要画图的地方实例化一个MMJBanDeng就可以绘图了(可以参看crCadDrawingDlg.cpp中的
OnBnClickedOk()函数中的代码;
//-----开始绘图-----
MMJBanDeng bandeng(chMyDir);
//...
bandeng.Drawing(TRUE);
7.具体的绘图流程就是MMJBanDeng::Drawing(BOOL bShowDWG/*=FALSE*/)函数来实现的,个个函数都有具体的功能,这个样例是按照机械绘图的来做的,如下面的代码:
//生成2d产品图
DrawMainView(); //生成主视图
DrawLeftView(); //生成左视图
DrawDownView(); //生成俯视图
DrawA_AView(); //生成A-A视图
DrawB_BView(); //生成B-B视图
DrawScaleI(); //生成放大图1
DrawScaleII(); //生成放大图2
DrawPView(); //生成P向视图
//-------------明细表-------------
PartsDetailNum(); //零部件序号标注
DwgDetailTable(); //图样明细表
Technology(); //技术要求
//保存图形文件
//SaveFileName=WorkPath+DwgCode+".dwg"; //保存文件名
//SaveDwg(SaveFileName); //保存图形
char ACADApplication[_MAX_PATH];//="C:\\Program Files\\AutoCAD 2002\\acad.exe";
strcpy_s(ACADApplication,_MAX_PATH,theApp.m_strCadPath.operator LPCTSTR());
char DwgFileName[_MAX_PATH];
//strcpy_s(DwgFileName, _MAX_PATH, m_saveDwgFileName);
strcpy_s(DwgFileName, _MAX_PATH, theApp.m_strWorkPath.operator LPCTSTR());
strcat_s(DwgFileName, _MAX_PATH, "\\mydwg.dwg");
//以下操作会删除现有的dwg文件,需要自己检查是否覆盖现有文件
saveToDwg(ACADApplication,DwgFileName, bShowDWG); //autocad应用程序的全路径(包括文件名称),要保存的dwg文件名称(路径+文件名+扩展名[.dwg])
调试的时候将bandeng.Drawing(TRUE);函数传入置为TRUE就会在绘图完成后自动打开图形;如果不出图的话就检查一下MyDwgBaseData类的DwgInit()函数里创建调用的字体文件HZTXT.SHX有没有
没有的话换一个就好了。需要那个视图就画到对应的函数里去就好了。完全模块化;
8.调试运行的时候将scrlib.dll、ac1st15.dll、acutil15.dll三个文件与你的应用程序放在一起就可以了;
9.最好将“接头”目录下的成品样例放到你的机器上去运行一下,出图了的话,设置就没什么问题了。如果Lib-Debug里的文件不行就用Lib-Release里的就应该没问题了;
10.做开发的时候用建议用cad2002比较好。下接r14上接r16;
11.高级开发应用可以用c++ builder6.0这些软件来做界面开发,然后将绘图部分的做成函数调用的dll封装;
|
|