模具知识|AutoCAD二次开发程序的自动安装处理

   更新日期:2017-03-23     来源:建材之家    作者:模具之家    浏览:25    评论:0    
核心提示:AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入

模具知识|AutoCAD 概述

推荐简介:什么是 AutoCAD CAD ( Computer Aided Design )的含义是指计算机辅助设计,是计算机技术的一个重要的应用领域。 AutoCAD 则是美国 Autodesk 企业开发的一个交互式绘图软件,是用于二维及三维设计、绘图的系统工具,用户可以使用它来创建、浏览、管理、打印、输出、共享及准确复用富含信息的设计图形。 AutoCAD 是目前世界上应用最广的 CAD......
模具之家讯:AutoCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在AutoCAD原菜单文件内添加自己的内容,对于AutoCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AutoCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。为此笔者用VC++开发了一套自动安装程序,使原本需要五、六分钟的人工操作在十几秒内即可自动完成。

一、基本思路

整个安装程序遵循以下思路:

1) 首先获得所在机器AutoCAD2000系统的安装路径;
2) 寻找菜单文件AutoCAD2000\\support\\acad.mnu,打开文件并将要添加的内容加至末尾;
3) 寻找LISP文件AutoCAD2000\\support\\acad2000doc.lsp,打开文件并将要添加的内容加至末尾;
4) 创建一个预先命名的子目录,将所有二次开发形成的各类文件拷入;
5) 给出信息框,告知安装成功,如有问题则告知安装失败。

需要指出的是,在添入acad2000doc.lsp的内容中须有如下语句:

(command“_menu”(strcat (getvar "menuname") ".mnu")),目的是为了强制执行菜单文件装入命令,将改动后的acad.mnu文件编译后装入。

另外,在添入acad2000doc.lsp的内容中还有一赋值语句,将准备创建的包含所有二次开发生成文件的子目录全路径名赋予一全局变量,以供二次开发程序在需要时调用,从而避免了在AutoCAD环境下交互设定路径的麻烦。
境下交互设定路径的麻烦。

二、实现方式及关键函数

为获得AutoCAD2000的安装路径,需要利用WINDOWS系统注册表的有关功能。
首先通过RegOpenKey函数打开注册表:

HKEY hKey;
LonGret=RegOpenKey( HKEY_LOCAL_MACHINE, "Software\\Autodesk\\AutoCAD\\R14.0\\ACAD-1:804", &hKey);

其中第一参数HKEY_LOCAL-MACHINE为注册表中预定义的主键句柄,第二参数为注册表中HKEY_LOCAL_MACHINE下的子键内容,第三参数hKey将返回一子键句柄,用于接下来的键值查询。若该函数运行成功,将返回一长整型数ERROR_SUCCESS。

接下来利用RegQueryValueEx函数进行键值查询:

DWORD dwType=REG_SZ;
BYTE szData[100];
DWORD dwSize=sizeof(szData);
If (ret=ERROR_SUCCESS)
ret=RegQueryValueEx(hKey, "AcadLocation", 0, &dwType, szData, &dwSize);

其中第一参数hKey为由RegOpenKey函数获得的欲查询的子键句柄;第二参数“AcadLocation”为欲查询的键值名;第三参数为保留项,要求添0;第四参数为键值数据类型;第六参数为键值缓冲器容量;最关键的是第五参数szData,欲查询的键值结果将由其带回,该键值即为所需要的 AutoCAD2000的安装路径。

以上涉及到的有关注册表中主键、子键、键值名、及键值的关系可通过下列方法由WINDOWS系列注册表查出:单击“开始”--“运行”--添入“regedit”--“确定”--“HKEY_LOCAL_MACHINE”--“Software”- -“Autodesk”--“Autocad”--“R15.0”--“ACAD-1:804”--“AcadLocation”--“e:\ autocad2000”。其中的键值名“AcadLocation”所对应的键值为“e:\autocad2000”,就是AutoCAD2000的安装路径,在不同的机器上可能内容不同。

键值查询函数若运行成功,将返回长整型数ERROR_SUCCESS。


char szRootName[100]=\\support\\acad.mnu;
if (ret=ERROR_SUCCESS)
1strcat((char*) szData, szRootName);
现在szData中装有acad.mnu的全路径,以下操作将打开该文件并添入内容:
HANDLE hfile=CreateFile((char*) szData, GENERIC_READ|GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
If(hfile!=INVALID_HANDLE_VALUE)
{
if (0xFFFFFFFF!=SetFilePointer(hfile, 0, NULL, FILE_END))
{
char szBuf[1000]="\n***POP12\n**CAM\n[&CAM]\n[->基本参数]\n[卡盘原点] ^c^cchuck_datam\n[换刀原点] ^c^ctool_datam\n[<-毛坯参数] ^c^cstock\n[工步设计] ^c^csteps\n[仿真加工] ^c^csimulation\n[代码生成] ^c^cgen_code\n[代码存盘] ^c^ccode_save\n[工艺存盘] ^c^csave_inf\n[工艺装入] ^c^cload_inf\n[->刀具管理]\n《创建新刀》 ^c^ccreate_new_tool\n[<-刀库增删] ^c^ctool_manage\n";
DWORD dwWrite=0;
BRet=WriteFile(hfile, szBuf, Lstrlen(szBuf), &dwWrite, NULL);
If (!bRet) Printerror();
}
CloseHandle(hfile);
}

上述操作中用CreateFile函数打开文件,SetFilePointer函数将指针移至文件末尾,字符串数组szBuf中装有欲添加的内容,以WriteFile函数写入,PrintError为自编的错误处理函数。

以同样的方法可以找到acad2000doc.lsp文件并添入内容。

以下操作将创建一个名为“C:\hkcam”的子目录,并将事先准备好的本程序所在目录下的所有文件拷贝进去:

Cstring nam1, nam2;
BOOL bCreate=CreateDirectory("C:\\hkcam", NULL);//创建子目录
CfileFind finder; //创建类对象
BOOL b Working=finder.FindFile("*.*");//利用类函数搜索所有文件
While(b Working)//循环搜索及文件拷贝
{
b Working=finder.FindNextFile();
nam1= finder.GetFileName();//获得文件名 #p#分页标题#e#
nam2= " c:\\hkcam\\";
nam2=nam2+nam1;//组成全路径
BOOL bCopy=CopyFile(nam1, nam2, FALSE);//文件拷贝
}

所有操作成功后,以信息框告知:

MessageBox( NULL,“安装成功,请按OK钮继续”,“安装结果”,MB_OK);

整个程序以MFC静态链接库创建。上述所有内容可以写入一个源文件内,这里称其为Append.cpp。为使最终执行文件尽可能小,应删去程序框架中所有不需要的内容。为此,源文件中只保留Append.cpp,Append.rc,及StdAfx.cpp几项;而头文件中只有Append.h, Resource.h,及StdAfx.h几项。所定义的唯一派生类为class CappendApp:public CwinApp,置于Append.h之内。

三、结束语

在VC++环境下利用有关WINDOWS系统注册表操作函数获得AutoCAD系统的安装路径,从而找出并改写AutoCAD有关文件;创建子目录并拷入各种二次开发形成文件,由此实现了AutoCAD二次开发程序与AutoCAD系统的自动衔接与嵌入。文中程序已由实践验证,完全可用于AutoCAD二次开发程序的自动安装。
模具之家为您提供最全面的塑胶,塑料,模具,模具设计,塑胶模具品牌的装修知识点和各种塑胶模具的导购与在线购买服务,拥有最便宜的塑胶模具价格和最优质的售后服务,敬请登陆模具之家:http://www.ju26.com/
小程序码
 
打赏
 
更多>文章标签:模具之家
更多>同类行业资讯
0相关评论

推荐图文更多...
点击排行更多...
商机快讯更多...
风水商圈更多...
最新视频更多...
推荐产品更多...
天花之家 | 木门之家 | 灯具之家 | 铁艺之家 | 幕墙之家 | 五金头条 | 楼梯头条 | 墙纸头条 | 壁纸头条 | 玻璃头条 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 潜江建材 | 仙桃建材 | 恩施建材 | 随州建材 | 咸宁建材 | 黄冈建材 | 荆州建材 | 孝感建材 | 荆门建材 | 鄂州建材 | 襄樊建材 | 宜昌建材 | 十堰建材 | 黄石建材 | 长沙建材 | 湘西建材 | 娄底建材 | 怀化建材 | 永州建材 | 郴州建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap |
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 建材风水