AutoCAD中的ARX插件一般写法(ObjectARX+C++)
oid inputvalue(){
int res;
//输入一个整数
acedGetInt(采用T("输入一个整数:"),&res);
//显示
displayvalue(采用bstr采用t(res));acutPrintf(采用T("\n"));
/*采用bstr采用t bstrt(res);
ACHAR* tmp=cvOp.GetAcharPtr(bstrt);
acutPrintf(tmp);*/
//输入一个字符串
wchar采用t* str;
str=new wchar采用t;
acedGetString(1,采用T("输入一个字符:"),str);
displayvalue(采用bstr采用t(str));
acutPrintf(采用T("\n"));
}
// 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"));
}
//----------------------------------------------------
页:
[1]