找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C++和ObjectARX开发一例

[复制链接]

1

主题

0

回帖

35

积分

管理员

积分
35
发表于 2024-3-16 09:53:19 | 显示全部楼层 |阅读模式
  1. C++和ObjectARX开发一例
  2. //-----------------------------------------
  3. //开发环境  
  4. //vs2008+vs2008sp1+ObjectArx2010+AutoCAD2010  
  5. //vs2008新建一个win32项目或者MFC DLL项目  
  6. //vs2008设置项目属性->配置->所有配置
  7. //vs2008设置项目属性->配置属性->C/C++->代码生成->运行时库=多线程 DLL (/MD)
  8. //vs2008设置项目属性->配置属性->C/C++->常规->附加包含目录=E:\AutoCad开发\ObjectARX2010\inc  
  9. //vs2008设置项目属性->配置属性->连接器->常规->输出文件=$(OutDir)\$(ProjectName).arx  
  10. //vs2008设置项目属性->配置属性->连接器->常规->附加库目录="E:\AutoCad开发\ObjectARX2010\lib-win32"  
  11. //vs2008设置项目属性->配置属性->连接器->输入->附加依赖项=rxapi.lib acdb18.lib acge18.lib acad.lib acedapi.lib
复制代码


  1. //-----------------------------------------
  2. //myArxFirst.def文件的内容
  3. LIBRARY        "MyArxFirst"
  4. EXPORTS
  5. acrxEntryPoint PRIVATE
  6. acrxGetApiVersion PRIVATE
  7. //-----------------------------------------
  8. // MyArxFirst.cpp : 定义 DLL 应用程序的导出函数。
  9. //
  10. #include "stdafx.h"
  11. #include <aced.h>
  12. #include <rxregsvc.h>
  13. //定义两个函数
  14. void initApp();
  15. void unloadApp();
  16. //打印"Hello world!"在AutoCAD Command上
  17. void helloWorld();
  18. void initApp()
  19. {
  20.     //register a command with the AutoCAD command mechanism
  21.         acedRegCmds->addCommand(ACRX采用T("HELLOWORLD采用COMMANDS"),
  22.                                     ACRX采用T("Hello"),
  23.                                                         ACRX采用T("Bonjour"),
  24.                                                         ACRX采用CMD采用TRANSPARENT,
  25.                                                         helloWorld);
  26. }
  27. void unloadApp()
  28. {
  29.     acedRegCmds->removeGroup(ACRX采用T("HELLOWORLD采用COMMANDS"));
  30. }
  31. void helloWorld()
  32. {
  33.     acutPrintf(ACRX采用T("\nHello World!"));
  34. }
  35. extern "C"
  36. AcRx::AppRetCode
  37. acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
  38. //void acrxEntryPoint(void* pkt)
  39. {
  40.         switch (msg)
  41.         {
  42.                 case AcRx::kInitAppMsg:
  43.                         acrxDynamicLinker->unlockApplication(pkt);
  44.                         acrxRegisterAppMDIAware(pkt);
  45.                         initApp();
  46.                         break;
  47.                 case AcRx::kUnloadAppMsg:
  48.                         unloadApp();
  49.                         break;
  50.                 default:
  51.                     break;
  52.         }
  53.         return AcRx::kRetOK;
  54. }
  55. //ObjectARX offers the following input functions. Refer to the ObjectARX Online Help for a complete description of how to use these functions.
  56. //acedGetInt        used to get an integer value
  57. //acedGetReal       used to get a real value
  58. //acedGetString     used to get a string
  59. //acedGetAngle      used to get a angle value
  60. //acedGetKword      used to get a key word
  61. //acedInitGet       used to initialize acedGetXXXX functions
  62. //acedGetFileD      used to retrieve file selection from a file dialog
  63. //acedGetPoint      used to pick a point
  64. //acedGetDist       used to get the distance between two points
  65. //acedGetCorner     see Online Help for a complete description
  66. //
  67. //ObjectARX offers the following functions for selection of AutoCAD entities. (Again refer to the ObjectARX Online Help for a complete description of how to use these functions).
  68. //
  69. //acedEntSel       used to select a single entity
  70. //acedNEntSel      used to select a single, nested entity
  71. //acedNEntSelP     used to select a single, nested entity
  72. //acutSSGet        used to select multiple entities
  73. //---the end----
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-1 17:45 , Processed in 0.122619 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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