AutoCAD中的ARX插件一般写法(ObjectARX+C++)
// MyArxFirst.cpp : 定义 DLL 应用程序的导出函数。 //ObjectArx开发对txt文本文件的操作一例 #pragma once #include "stdafx.h" // #include "Convert.h" #include "fileSimpleClass.h" #include "dbSimpleClass.h" //定义两个函数 void initApp(); void unloadApp(); //定义命令函数 //------------------------------------------ void hello();//打印"Hello world!"在AutoCAD Command上 的命令 void pfvalue();//打印文件内容 的命令 void pdbvalue();//ado连接数据库的方法 的命令 void inputvalue(); //CAD交互操作的方法 的命令 //------------------------------------------ //定义CAD的实体点函数 这个函数是必须的 extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) //void acrxEntryPoint(void* pkt) { switch (msg) { case AcRx::kInitAppMsg: acrxDynamicLinker->unlockApplication(pkt); acrxRegisterAppMDIAware(pkt); initApp(); break; case AcRx::kUnloadAppMsg: unloadApp(); break; default: break; } return AcRx::kRetOK; } void initApp() { //register a command with the AutoCAD command mechanism //string macro 用法: //_T("helloworld") or __T("helloworld") or ACRX_T("helloworld") acedRegCmds->addCommand(ACRX_T("HELLOWORLD_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("Hello"), ACRX_CMD_TRANSPARENT, hello); acedRegCmds->addCommand(ACRX_T("PFVALUE_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("pfvalue"), ACRX_CMD_TRANSPARENT, pfvalue); acedRegCmds->addCommand(ACRX_T("PDBVALUE_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("pdbvalue"), ACRX_CMD_TRANSPARENT, pdbvalue); acedRegCmds->addCommand(ACRX_T("INPUTVALUE_COMMANDS"), ACRX_T("ArxHsgBag"), ACRX_T("inputvalue"), ACRX_CMD_TRANSPARENT, inputvalue); // } void unloadApp() { acedRegCmds->removeGroup(ACRX_T("HELLOWORLD_COMMANDS")); acedRegCmds->removeGroup(ACRX_T("PFVALUE_COMMANDS")); acedRegCmds->removeGroup(ACRX_T("PDBVALUE_COMMANDS")); acedRegCmds->removeGroup(ACRX_T("INPUTVALUE_COMMANDS")); } //定义两个类变量 fileSimpleClass fsc; dbSimpleClass dbsc; Convert cvOp; //---------------------------------------------------- //实现命令函数 void hello()//hello命令 { acutPrintf(ACRX_T("\n第一个Arx程序Hello World!")); } void pfvalue()//打印文件内容 命令 { acutPrintf(_T("开始输出文件内信息:\n")); const ACHAR* filepath=ACRX_T("d:\\test.txt"); //OK acutPrintf(filepath); //OK fsc.pfvalue_default(filepath); //OK fsc.pfvalue2(filepath); //OK } void pdbvalue()//输出数据库表内记录的命令 { acutPrintf(_T("开始输出数据库表内记录:\n")); //... acutPrintf(_T("执行函数:pdbvalue_mdb结果\n")); dbsc.pdbvalue_mdb(); acutPrintf(_T("执行函数:pdbvalue_mdb结果完毕!\n")); // acutPrintf(_T("执行函数:pdbvalue_mdb2结果\n")); dbsc.pdbvalue_mdb2(); acutPrintf(_T("执行函数:pdbvalue_mdb2结果完毕!\n")); dbsc.pdbvalue_write(); acutPrintf(_T("执行函数:pdbvalue_write完毕!\n")); } void displayvalue(_bstr_t bstrt) { ACHAR* tmp=cvOp.GetAcharPtr(bstrt); acutPrintf(tmp); } void inputvalue() { int res; //输入一个整数 acedGetInt(_T("输入一个整数:"),&res); //显示 displayvalue(_bstr_t(res));acutPrintf(_T("\n")); /*_bstr_t bstrt(res); ACHAR* tmp=cvOp.GetAcharPtr(bstrt); acutPrintf(tmp);*/ //输入一个字符串 ACHAR str; acedGetString(1,_T("输入一个字符:"),&str); //displayvalue(_bstr_t(str));acutPrintf(_T("\n")); } //----------------------------------------------------