ObjectARX之Mac os开发
网上关于ObjectARX开发的相关介绍都基于Windows环境。Mac 环境的开发几乎没有,下面介绍Mac环境下ObjectARX的开发。
AutoCAD ObjectARX开发必备条件:
1. 安装Mac 版AutoCAD
2. 安装AutoCAD版本对应的ObjectARX 的SDK
本文以AutoCAD 2018 及对应的ObjectARX SDK,ObjectARX 2018 SDK 下载链接:http://help.autodesk.com/view/OARXMAC/2018/ENU/
ObjectARX SDK安装成功后的路径如下图:

打开Xcode 新建项目时会出现Auto CAD项目信息:

新建arx项目后,xcode会自动创建一个arxmian.cpp文件。代码如下
#if defined(_DEBUG) && !defined(AC_FULL_DEBUG)
#error _DEBUG should not be defined except in internal Adesk debug builds
#endif #include <aced.h>
#include <rxregsvc.h> void mycmd()
{
acutPrintf(L"My command");
} // Initialization function called from acrxEntryPoint during
// kInitAppMsg case. This function is used to add commands
// to the command stack.
//
void
initApp()
{
acedRegCmds->addCommand(L"MYARX_COMMANDS", L"mycmd", L"mycmd", ACRX_CMD_MODAL, mycmd);
} // Clean up function called from acrxEntryPoint during the
// kUnloadAppMsg case. This function removes this app's
// command set from the command stack.
//
void
unloadApp()
{
acedRegCmds->removeGroup(L"MYARX_COMMANDS");
} // ARX entry point
//
extern "C"
AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* appId)
{
switch (msg) {
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(appId);
acrxDynamicLinker->registerAppMDIAware(appId);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
default: break;
}
return AcRx::kRetOK;
}
例子会注册一个新的命令到AutoCAD中,下面我们通过命令插入一条直线
void createLine() {
AcGePoint3d startPoint(, , );
AcGePoint3d endPoint(, , );
AcDbLine* pLine = new AcDbLine(startPoint, endPoint);
//获取block 表
AcDbBlockTable *pBlockTable;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead);
//获取模型空间
AcDbBlockTableRecord* pModelSpace;
pBlockTable->getAt(ACDB_MODEL_SPACE, pModelSpace, AcDb::kForWrite);
//向模型空间添加该直线并返回其id
AcDbObjectId lineId;
pModelSpace->appendAcDbEntity(lineId, pLine);
//关闭相关对象
pLine->close();
pModelSpace->close();
pBlockTable->close();
}
然后在mycmd函数中调用该函数:
void createLine(); void mycmd()
{
acutPrintf(L"Create Line");
createLine();
}
编译项目生成bundle文件

然后我们打开AutoCAD 2018 加载该bundle文件:


在AutoCAD的命令行中输入 mycmd就会绘制一条线出来

ObjectARX之Mac os开发的更多相关文章
- Unity3D开发之搭建Mac OS开发环境
运行图 首先上几张图 IOS模拟器 坚屏 横屏 打包任务 摸索了一上午,才搞定在模拟器中运行.至于在Iphone真机中运行,虽然有开发者证书,目前还没在Xcode中配置好. 我今天第一次接触并使用MA ...
- Unity3D开发之Mac OS 开发环境搭建 笔记
http://www.cnblogs.com/zhaoqingqing/p/3383167.html 首先上几张图: 摸索了一上午,才搞定在模拟器中运行.至于在Iphone真机中运行,虽然有开发者证书 ...
- mac os开发之简单动画
[NSAnimationContextbeginGrouping]; [[NSAnimationContextcurrentContext] setDuration:.1f]; [[self.wind ...
- Mac OS上搭建LNMP开发环境
1. 概述 LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.c ...
- COCOA® PROGRAMMING FOR MAC® OS X (1)- Get Start
这个是Mac OS App开发学习的第一篇,希望是一个好的开始. 一.为什么要学习Mac OS App开发 a)长时间做IOS开发,发现自己所做的局限在苹果的一些库上面,一些底层的API却是私有的,不 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- [.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux)
[.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux) 1.关于跨平台 上篇中介绍了MVC的发展历程,说到ASP.NET ...
- Mac OS X平台下QuickLook开发教程
一.引言 Quick Look技术是Apple在Mac OS X 10.5中引入的一种用于快速查看文件内容的技术.用户只需要选中文件单击空格键即可快速查看文件内容,可以在不打开文件的情况下快速浏览内容 ...
- 【开发软件】推荐一款MAC OS X 下php集成开发环境mamp
这里给大家推荐一款在mac上搭建WEB服务器环境的集成环境安装软件,非常的好用,需要的朋友可以拿去,不用谢 ^_^ 之前苦于mac上搭建本地服务器之艰辛,找寻好久都没找到一款类似windows ...
随机推荐
- Node.js—学习
一.Node.js 1. Hello World var http = require('http'); http.createServer(function(request, response) { ...
- LVS基本知识
前言 linux集群类型 LB -->负载均衡集群(Load Balancing) HA-->高可用集群(High Availiablity) HP-->高性性集群(High ...
- Appium 定位
使用过 Appium 的都知道,元素的定位方式有很多种,具体使用哪一种,主要看业务的需要和自己的使用爱好.下面总结一下,Appium 到底有哪些定位方式,定位的元素以下面截图指定的元素为例子: 这 ...
- R-时空可视化
Robert J. Hijmans37 开发了 raster 包用于网格空间数据的读.写.操作.分析和建模,同时维护了空间数据分析的网站 https://www.rspatial.org Edzer ...
- MySQL学习笔记4——DQL
DQL(数据查询语言) 一.基本查询 1.字段(列)控制1)查询所有列SELECT * FROM 表名; ->"*"表示查询所有列 2)查询指定列SELECT 列1 [, 列 ...
- 【电脑】win10开启telnet服务
- 安装Microsoft Office 2010 提示需要安装MSXML版本6.10.1129.0 的解决方案
1.先按照https://blog.csdn.net/c_lanxiaofang/article/details/80410868进行处理安装 2.安装vison2010,如果还存在提示未安装MSXM ...
- R语言- 实验报告 - 利用R语言脚本与Java相互调用
一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调 ...
- mongodb 导出制定的查询结果
1.mongo查询语句: db.quarkContext.find({"submitTime":{"$gt":ISODate("2019-07-13T ...
- vuex 源码分析(五) action 详解
action类似于mutation,不同的是Action提交的是mutation,而不是直接变更状态,而且action里可以包含任意异步操作,每个mutation的参数1是一个对象,可以包含如下六个属 ...