天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 148|回复: 0

第一章 ObjectARX入门

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 2024-3-13 22:58:32 | 显示全部楼层 |阅读模式

    ObjectARX中的ARX表示AutoCAD运行时扩展(AutoCAD Runtime eXtension)。
    1、CAD二次开发时对应的Visual C++版本

    CAD版本ObjectARX版本VS版本
    VS版本号
    CAD R12 ARX 1 VC2
    CAD R14 ARX 202 VC4.2
    CAD2000/2002即R15、R15.0.7 ObjectARX 2002 VC6.0 采用MSC采用VER = 1200
    CAD2004-AutoCAD2006 即R16 ObjectARX 2005 VC2002(即7.0) 采用MSC采用VER = 1300
    CAD2007-AutoCAD2009 即R17  ObjectARX 2007 VS2005(即8.0)采用MSC采用VER = 1400
    CAD2010/CAD2011 Arx2010 vs2008  (即9.0) 采用MSC采用VER = 1500

    2、ARX入口点函数:
      exern "C" AcRx::AppRetCode
      AcrxEntryPoint(AcRx::AppMsgCode msg,void* pKt);
    extern "C" 通知AutoCAD acrxEntryPoint是一个外部函数。
    参数: AutoCAD消息:
    KInitAppMsg         当应用程序加载后进行AutoCAD与应用程序之间的通信时发送。
    KUnloadAppMsg    当卸载ARX应用程序时(用户卸载应用程序或者AutoCAD本身中断程序时)发送,关闭文件并完成清除操作。
    KLoadDwgMsg      当打开绘图文件时发送。使应用程序的函数可以调用ADSRX函数库,只有在应用程序用acedDefun()注册为一个AutoLISP函数后才能发送消息。
    返回值:
    KUnloadDwgMsg  当用户退出绘图并卸载ADS函数库时发送。
    enum AppRetCode{
    KRetOk    =0,
    KRetError =3 };

    3、课程入门第一个程序:Hello Word

    1     #include "stdafx.h"   2     #include <aced.h>   3     #include <rxregsvc.h>    4     #include <TCHAR.h>   5       6       7     void initApp();   8     void unloadApp();    9     void helloWorld();  10       11       12       13     void initApp()  14     {   15         // register a command with the AutoCAD command mechanism  16         acedRegCmds->addCommand(采用T("HELLOWORLD采用COMMANDS"),  //hello world commands17             采用T("Hello"),  18             采用T("jianglei"),  19             ACRX采用CMD采用TRANSPARENT,  20             helloWorld);  21     }  22       23       24     void unloadApp()  25     {   26         acedRegCmds->removeGroup(采用T("HELLOWORLD采用COMMANDS"));  27     }  28       29       30       31       32     void helloWorld()  33     {   34         acutPrintf(采用T("\nHello World!"));  35       36     }  37       38     extern "C" AcRx::AppRetCode  39     acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)  40     {   switch (msg)  41         {  42       43         case AcRx::kInitAppMsg:  44             acrxDynamicLinker->unlockApplication(pkt);  45             acrxRegisterAppMDIAware(pkt);  46             initApp();  47             break;  48         case AcRx::kUnloadAppMsg:  49             unloadApp();  50             break;  51         default:  52             break;  53       54         }  55       56         return AcRx::kRetOK;  57       58     }

    其中最常用的函数是: acutPrintf(采用T("\nHello World!")); 相当于C语言中的printf函数。

          最重要的是: acedRegCmds->addCommand()宏,把自定义命令加入到CAD的命令列表中。

    4、定制类

    其中CAD大部分类都是从类AcRxObject派生出来的。所以相当于C++中的类CObject;例如从这个类派生出来的AcDbObject类,它包含了CAD数据库常驻对象,例如符号表,实体等;而cad中 所以实体都是从AcDbEntity类派生的,如AcDbLine.

     

     

     

     

    第一章 ObjectARX入门
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-1 10:37 , Processed in 0.146272 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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