AutoCAD 2011 for MAC ARX 开发学习笔记
大概十五年前,萌生过在苹果上开发图形软件的想法,由于种种原因未能实现。在写这个帖子的时候,用的却是Apple MAC Book,在试用AutoCAD 2011的同时,试验了一下ARX移植的可能性,结果是,感觉比较COOL. 一个全新的开发环境,全新的开发语言,我这个生手用了半小时完成了"Hellow world",只能说Autodesk在保护用户们在ObjectARX上的投资上可说是不遗余力。ARX在MAC上的市场很难说,但对于我们这些被国内的盗版搞的挣扎在生存边缘的“ARX人”来说是否Apple shop是一条可以企望的新路呢?转入正题,首先要具备开发AutoCAD 2011 for MAC的环境:
MAC 或 MAC BOOK,你装个虚拟机也行,但比较困难
XCODE 3.2以上,Apple网站上有下载(MAC OS选仔细了,有些XCODE版本不支持雪豹)
AutoCAD 2011 forMAC
ObjectARX 2011 for MAC
待续...
本帖最后由 haill2000 于 2011-1-6 11:20 编辑
如果你以前在Windows上开发过ARX程序,可能首先关心的是如何在AutoCAD 2011 for MAC的命令行中打印出“Hellow world"。
当初我在走这一步时,比较意外的是太容易,有关MAC OS上开发程序是否快速上手的疑虑好像都是多余的。
有类似AppWizard的引导程序帮你创建工程(附图一),所有编译、链接参数都已设置好,包括命令注册和注销的代码,Windows上的ObjectARX我只用到2004,好像命令注册注销要自己写。
接下来你只要在自己的命令函数里加入acutprintf(附图二),很简单,不是吗?
下一步的想法可能跟我一样,对话框如何实现?稍微复杂点,但远未超出当初对困难的估计。
附图一
附图二
(待续)
AutoCAD 2011 for MAC ARX 开发学习笔记(三)
虽然我们已经创建了Hello World,感觉容易是因为Autodesk为我们做了大部分的工作,有关MAC OS的细节可以不用关心。
但一个真正实用的ARX程序只靠命令行是无法取悦客户的,所以如果想要友好的交互界面,必须要涉足MAC OS的界面交互编程。
如果有一定ARX程序编写经验,知道在Windows中有两种选择,Windows API和MFC,估计大多数人不会选择Windows API,MFC封装了Windows API的大部分功能,通过对象、方法创制界面,比用一个个复杂参数起名怪异的API函数好用多了。但是否可以不用Windows API呢,不行,有些特别的应用离不开API。
跟Windows环境一样,MAC OS提供同样的两套编程方式以供选择,Cocoa和Carbon。
Cocoa类似于MFC
Carbon类似于Windows API
根据我在Cocoa上不多的经验,感觉Cocoa比MFC好用多了,引用Cocoa教程中一段,差距就如书中所讲:
Once upon a time, there was a company called Taligent, which was created by IBM and Apple to develop a set of tools and libraries like Cocoa. About the time Taligent reached the peak of its mindshare, I met one of its engineers at a trade show. I asked him to create a simple application for me: A window would appear with a button, and when the button was clicked, the words "Hello, World!" would appear in a text field. The engineer created a project and started subclassing madly: subclassing the window and the button and the event handler. Then he started generating code: dozens of lines to get the button and the text field onto the window. After 45 minutes, I had to leave. The app still did not work. That day, I knew that the company was doomed. A couple of years later, Taligent quietly closed its doorsforever. 本帖最后由 haill2000 于 2011-1-18 15:03 编辑
AutoCAD 2011 for MAC ARX 开发学习笔记(四)
Cocoa和MFC的区别最重要的在哪里?个人感觉是事件处理的不同。
有一种说法Cocoa的语言Object-C是Smalltalk+C,感觉比较有道理。SmallTalk是以事件为基础的,换句专业的说法,对象之间的联系都是通过事件。VC++在事件处理方面感觉基本没有管用的办法。我做ARX程序有时会碰到提示"无法支持的操作“,查遍微软的文档,当时没找到原因。最后一个偶然的机会发现是一个对话框中的控件被删掉了,相应的消息响应函数却在保留。
Cocoa的事件处理无法直接看到,一个按钮按下,对应的动作响应只要你去定义就ok(附图一),不像MFC找到所有的消息,然后开发工具定位到生成的代码,让你填空。MFC感觉简便,但响应函数和事件的对应要编程者自己维护,存在被删改的风险。
cocoa处理消息的代码简洁,如附图二。
代码里写了,消息处理的入口自动出现,这点感觉比较酷,如附图三。
附图一:
附图二:
附图三:
AutoCAD终于又可以在Mac上用了,但是ARX又成了一个大问题。
不能发帖? AutoCAD 2011 for MAC 的ARX二次开发。好东西,持续关注!!!建筑工程软件迟早要移动起来! 本帖最后由 haill2000 于 2011-3-1 12:52 编辑
AutoCAD 2011 for MAC ARX 开发学习笔记(五)-创建自己的对话框
我们曾经创建了自己的ARX命令,创建自己的对话框也比较简单,我的感觉是,比MFC简单很多。
简单的理由也很简单,核心是MVC。
做基于MFC的ARX程序时,最烦的就是没办法把流程控制类、界面控制类和业务模型类严格区分开,类之间的耦合非常紧,一旦需求变化,代码常变得不稳定。
似乎COCOA避免这些问题,复杂的应用还没实践,起码在这个简单生成对话框的例子中,体现了MVC。
双击myWindows.xib(图1),xcode会自动启动interface builder,在右侧的library中拖一个按钮到iwndow中,在按钮中输入"hello,world!".(图二)
图1
图2
在mywindow.mm中加入图示代码:
图3
在按钮的事件响应中,建立连接:
图4
创建程序,带自建对话框的ARX程序运行成功
图5
嗨,哥们儿,问个小问题,ObjectARX 2011 for MAC 能否提供一份,这个我在网上没有搜到。 “ 嗨,哥们儿,问个小问题,ObjectARX 2011 for MAC 能否提供一份,这个我在网上没有搜到。”打扰,已经找到了,和好
页:
[1]
2