找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 160|回复: 0

AutoCAD中的ARX插件一般写法(ObjectARX+C++)

[复制链接]

1

主题

0

回帖

35

积分

管理员

积分
35
发表于 2024-3-16 09:50:17 | 显示全部楼层 |阅读模式
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[4000];
acedGetString(1,采用T("输入一个字符:"),str);  
displayvalue(采用bstr采用t(str));
acutPrintf(采用T("\n"));  
}


  1. // MyArxFirst.cpp : 定义 DLL 应用程序的导出函数。
  2. //ObjectArx开发对txt文本文件的操作一例
  3. #pragma once
  4. #include "stdafx.h"
  5. //
  6. #include "Convert.h"
  7. #include "fileSimpleClass.h"
  8. #include "dbSimpleClass.h"
  9. //定义两个函数
  10. void initApp();
  11. void unloadApp();
  12. //定义命令函数
  13. //------------------------------------------
  14. void hello();//打印"Hello world!"在AutoCAD Command上  的命令
  15. void pfvalue();//打印文件内容 的命令
  16. void pdbvalue();//ado连接数据库的方法 的命令
  17. void inputvalue(); //CAD交互操作的方法 的命令
  18. //------------------------------------------
  19. //定义CAD的实体点函数  这个函数是必须的
  20. extern "C"
  21. AcRx::AppRetCode
  22. acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
  23. //void acrxEntryPoint(void* pkt)
  24. {
  25.         switch (msg)
  26.         {
  27.                 case AcRx::kInitAppMsg:
  28.                         acrxDynamicLinker->unlockApplication(pkt);
  29.                         acrxRegisterAppMDIAware(pkt);
  30.                         initApp();
  31.                         break;
  32.                 case AcRx::kUnloadAppMsg:
  33.                         unloadApp();
  34.                         break;
  35.                 default:
  36.                     break;
  37.         }
  38.         return AcRx::kRetOK;
  39. }
  40. void initApp()
  41. {
  42.     //register a command with the AutoCAD command mechanism
  43.         //string macro 用法:
  44.         //采用T("helloworld") or  采用采用T("helloworld")  or ACRX采用T("helloworld")
  45.         acedRegCmds->addCommand(ACRX采用T("HELLOWORLD采用COMMANDS"),
  46.                                     ACRX采用T("ArxHsgBag"),
  47.                                                         ACRX采用T("Hello"),
  48.                                                         ACRX采用CMD采用TRANSPARENT,
  49.                                                         hello);
  50.         acedRegCmds->addCommand(ACRX采用T("PFVALUE采用COMMANDS"),
  51.                                     ACRX采用T("ArxHsgBag"),
  52.                                                         ACRX采用T("pfvalue"),
  53.                                                         ACRX采用CMD采用TRANSPARENT,
  54.                                                         pfvalue);
  55.         acedRegCmds->addCommand(ACRX采用T("PDBVALUE采用COMMANDS"),
  56.                                     ACRX采用T("ArxHsgBag"),
  57.                                                         ACRX采用T("pdbvalue"),
  58.                                                         ACRX采用CMD采用TRANSPARENT,
  59.                                                         pdbvalue);
  60.         acedRegCmds->addCommand(ACRX采用T("INPUTVALUE采用COMMANDS"),
  61.                                     ACRX采用T("ArxHsgBag"),
  62.                                                         ACRX采用T("inputvalue"),
  63.                                                         ACRX采用CMD采用TRANSPARENT,
  64.                                                         inputvalue);
  65.         //
  66. }
  67. void unloadApp()
  68. {
  69.     acedRegCmds->removeGroup(ACRX采用T("HELLOWORLD采用COMMANDS"));
  70.         acedRegCmds->removeGroup(ACRX采用T("PFVALUE采用COMMANDS"));
  71.         acedRegCmds->removeGroup(ACRX采用T("PDBVALUE采用COMMANDS"));
  72.         acedRegCmds->removeGroup(ACRX采用T("INPUTVALUE采用COMMANDS"));
  73. }
  74. //定义两个类变量
  75. fileSimpleClass fsc;
  76. dbSimpleClass dbsc;
  77. Convert cvOp;
  78. //----------------------------------------------------
  79. //实现命令函数
  80. void hello()//hello命令
  81. {
  82.     acutPrintf(ACRX采用T("\n第一个Arx程序Hello World!"));       
  83. }
  84. void pfvalue()//打印文件内容 命令
  85. {       
  86.         acutPrintf(采用T("开始输出文件内信息:\n"));
  87.     const ACHAR* filepath=ACRX采用T("d:\\test.txt");  //OK
  88.         acutPrintf(filepath);        //OK
  89.         fsc.pfvalue采用default(filepath); //OK
  90.         fsc.pfvalue2(filepath);  //OK
  91. }
  92. void pdbvalue()//输出数据库表内记录的命令
  93. {
  94.     acutPrintf(采用T("开始输出数据库表内记录:\n"));
  95.         //...
  96.         acutPrintf(采用T("执行函数:pdbvalue采用mdb结果\n"));
  97.         dbsc.pdbvalue采用mdb();
  98.         acutPrintf(采用T("执行函数:pdbvalue采用mdb结果完毕!\n"));
  99.         //
  100.         acutPrintf(采用T("执行函数:pdbvalue采用mdb2结果\n"));
  101.         dbsc.pdbvalue采用mdb2();
  102.         acutPrintf(采用T("执行函数:pdbvalue采用mdb2结果完毕!\n"));
  103.         dbsc.pdbvalue采用write();
  104.         acutPrintf(采用T("执行函数:pdbvalue采用write完毕!\n"));
  105. }
  106. void displayvalue(采用bstr采用t bstrt)
  107. {
  108.      ACHAR* tmp=cvOp.GetAcharPtr(bstrt);
  109.      acutPrintf(tmp);
  110. }
  111. void inputvalue()
  112. {
  113.     int res;
  114.         //输入一个整数
  115.         acedGetInt(采用T("输入一个整数:"),&res);
  116.         //显示
  117.         displayvalue(采用bstr采用t(res));acutPrintf(采用T("\n"));
  118.         /*采用bstr采用t bstrt(res);
  119.         ACHAR* tmp=cvOp.GetAcharPtr(bstrt);
  120.     acutPrintf(tmp);*/
  121.         //输入一个字符串
  122.         ACHAR str;
  123.         acedGetString(1,采用T("输入一个字符:"),&str);
  124.         //displayvalue(采用bstr采用t(str));acutPrintf(采用T("\n"));       
  125. }
  126. //----------------------------------------------------
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-1 17:17 , Processed in 0.119331 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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