天气与日历 切换到窄版

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

C++和ObjectARX开发一例

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

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

//AutoCAD2010调用命令方法
//先加载应用程序MyArxFirst.arx
//命令: hello
//Hello World!


//-----------------------------------------
//myArxFirst.def文件的内容
LIBRARY        "MyArxFirst"
EXPORTS
acrxEntryPoint PRIVATE
acrxGetApiVersion PRIVATE



//-----------------------------------------
// MyArxFirst.cpp : 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
#include <aced.h>
#include <rxregsvc.h>

//定义两个函数
void initApp();
void unloadApp();

//打印"Hello world!"在AutoCAD Command上
void helloWorld();

void initApp()
{
    //register a command with the AutoCAD command mechanism
        acedRegCmds->addCommand(ACRX_T("HELLOWORLD_COMMANDS"),
                                    ACRX_T("Hello"),
                                                        ACRX_T("Bonjour"),
                                                        ACRX_CMD_TRANSPARENT,
                                                        helloWorld);
}

void unloadApp()
{
    acedRegCmds->removeGroup(ACRX_T("HELLOWORLD_COMMANDS"));
}

void helloWorld()
{
    acutPrintf(ACRX_T("\nHello World!"));
}


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;
}


//ObjectARX offers the following input functions. Refer to the ObjectARX Online Help for a complete description of how to use these functions.
//acedGetInt        used to get an integer value
//acedGetReal       used to get a real value
//acedGetString     used to get a string
//acedGetAngle      used to get a angle value
//acedGetKword      used to get a key word
//acedInitGet       used to initialize acedGetXXXX functions
//acedGetFileD      used to retrieve file selection from a file dialog
//acedGetPoint      used to pick a point
//acedGetDist       used to get the distance between two points
//acedGetCorner     see Online Help for a complete description
//
//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).
//
//acedEntSel       used to select a single entity
//acedNEntSel      used to select a single, nested entity
//acedNEntSelP     used to select a single, nested entity
//acutSSGet        used to select multiple entities

//---the end---

 

 

 

 

C++和ObjectARX开发一例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 11:44 , Processed in 0.149887 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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