admin 发表于 2024-3-16 09:50:17

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]
查看完整版本: AutoCAD中的ARX插件一般写法(ObjectARX+C++)