明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 面不好吃

C/C++语言直接驱动AutoCAD自动绘图技术应用,非ARX/VBA/LISP技术

  [复制链接]
 楼主| 发表于 2012-11-29 14:41:19 | 显示全部楼层
本帖最后由 面不好吃 于 2012-11-29 14:42 编辑
longer1000 发表于 2012-11-29 12:38
详细介绍就好了

呵呵,我回头补个开发流程的文档来,关于开发的资料在每个头文件都有详细的说明到每个函数的参数了,而且是中文的哦
发表于 2012-11-29 15:07:59 | 显示全部楼层
感谢楼主分享
发表于 2012-11-29 15:32:38 | 显示全部楼层
看看 到底是什么东东,看用得着不!
发表于 2012-11-29 18:36:27 | 显示全部楼层
无图无真相!!
 楼主| 发表于 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封装;
发表于 2012-11-29 19:54:31 | 显示全部楼层
不错,做个演示就更好啦
发表于 2012-11-29 19:56:50 | 显示全部楼层
不会用  有教程就好了
发表于 2012-11-29 20:24:26 | 显示全部楼层
mark!!!!!!
发表于 2012-11-29 21:00:41 | 显示全部楼层
楼主应该做个GIF上来。。。
发表于 2012-11-30 06:03:39 | 显示全部楼层
貌似很强大
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:31 , Processed in 0.162891 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表