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 ...
随机推荐
- 经典损失函数:交叉熵(附tensorflow)
每次都是看了就忘,看了就忘,从今天开始,细节开始,推一遍交叉熵. 我的第一篇CSDN,献给你们(有错欢迎指出啊). 一.什么是交叉熵 交叉熵是一个信息论中的概念,它原来是用来估算平均编码长度的.给定两 ...
- Special-Judge模板
SPJ模板 放一篇\(SPJ\)(\(Special-Judge\))的模板. 注意,仅适用于\(Lemon\). 并不适用于洛谷. 代码:@zcs0724 #include <bits/std ...
- mybatis中<include>标签的作用
MyBatis中sql标签定义SQL片段,include标签引用,可以复用SQL片段 sql标签中id属性对应include标签中的refid属性.通过include标签将sql片段和原sql片段进行 ...
- CF 938G Shortest Path Queries
又到了喜闻乐见的写博客清醒时间了233,今天做的依然是线段树分治 这题算是经典应用了吧,假的动态图(可离线)问题 首先不难想到对于询问的时间进行线段树分治,这样就可以把每一条边出现的时间区间扔进线段树 ...
- 【VS开发】COM组件技术概述
这篇文章对COM做出来比较完整的解释,非常好. COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术.在COM构架下,人们可以开发出各种各样功能专一的组件,然后将它 ...
- win7 64bit安装redis
win7 64bit安装redis 1 先安装redis客户端 1.下载Redis的压缩包 https://github.com/dmajkic/redis/downloads 我下载的是redis- ...
- LeetCode1——两数之和
最近在家拧三阶魔方,把初级的玩法掌握了,也就是可以还原六个面了,速度不快,但是也很兴奋.三阶魔方的初级玩法按照套路拧就可以了,每一步需要完成的任务,该步骤转动的方法基本都是固定的,而且变化也并不是特别 ...
- Java & PHP RSA 互通密钥、签名、验签、加密、解密
RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Le ...
- 利用 Javascript 让 DIV 自适应屏幕的分辨率,从而决定是否显示滚动条
直接贴代码了: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- C# 重载 overload,重写override覆盖
重载overload 派生类和基类的方法同名,其中访问修饰符(public,private,protected,internal,protected internal),返回类型,参数类型,个数,顺序 ...