面不好吃 发表于 2012-11-29 14:41:19

本帖最后由 面不好吃 于 2012-11-29 14:42 编辑

longer1000 发表于 2012-11-29 12:38 static/image/common/back.gif
详细介绍就好了
呵呵,我回头补个开发流程的文档来,关于开发的资料在每个头文件都有详细的说明到每个函数的参数了,而且是中文的哦

海盗曹 发表于 2012-11-29 15:07:59

感谢楼主分享

lixegn 发表于 2012-11-29 15:32:38

看看 到底是什么东东,看用得着不!

shenzhi 发表于 2012-11-29 18:36:27

无图无真相!!

面不好吃 发表于 2012-11-29 18:49:40

shenzhi 发表于 2012-11-29 18:36 static/image/common/back.gif
无图无真相!!

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);                           //保存图形
                charACADApplication;//="C:\\Program Files\\AutoCAD 2002\\acad.exe";
                strcpy_s(ACADApplication,_MAX_PATH,theApp.m_strCadPath.operator LPCTSTR());
                char DwgFileName;
                //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封装;

梦回唐朝 发表于 2012-11-29 19:54:31

不错,做个演示就更好啦

spp_wall 发表于 2012-11-29 19:56:50

不会用有教程就好了

TimeT 发表于 2012-11-29 20:24:26

mark!!!!!!

freeok 发表于 2012-11-29 21:00:41

楼主应该做个GIF上来。。。

lrd1861 发表于 2012-11-30 06:03:39

貌似很强大
页: 1 [2] 3 4 5 6
查看完整版本: C/C++语言直接驱动AutoCAD自动绘图技术应用,非ARX/VBA/LISP技术