haill2000 发表于 2011-1-4 14:56:40

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 10:27:34

本帖最后由 haill2000 于 2011-1-6 11:20 编辑

      如果你以前在Windows上开发过ARX程序,可能首先关心的是如何在AutoCAD 2011 for MAC的命令行中打印出“Hellow world"。
      当初我在走这一步时,比较意外的是太容易,有关MAC OS上开发程序是否快速上手的疑虑好像都是多余的。
       有类似AppWizard的引导程序帮你创建工程(附图一),所有编译、链接参数都已设置好,包括命令注册和注销的代码,Windows上的ObjectARX我只用到2004,好像命令注册注销要自己写。
       接下来你只要在自己的命令函数里加入acutprintf(附图二),很简单,不是吗?
       下一步的想法可能跟我一样,对话框如何实现?稍微复杂点,但远未超出当初对困难的估计。
      
       附图一
      
      附图二      
      
   
(待续)





haill2000 发表于 2011-1-9 11:04:20

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 14:59:25

本帖最后由 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处理消息的代码简洁,如附图二。

   代码里写了,消息处理的入口自动出现,这点感觉比较酷,如附图三。

附图一:


附图二:

附图三:



3105955 发表于 2011-1-26 23:14:45

AutoCAD终于又可以在Mac上用了,但是ARX又成了一个大问题。

ivanbenjamin 发表于 2011-2-6 21:58:42

不能发帖?

ivanbenjamin 发表于 2011-2-6 21:59:23

AutoCAD 2011 for MAC 的ARX二次开发。好东西,持续关注!!!建筑工程软件迟早要移动起来!

haill2000 发表于 2011-3-1 12:47:12

本帖最后由 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

2005anjob 发表于 2012-3-26 12:43:40

嗨,哥们儿,问个小问题,ObjectARX 2011 for MAC 能否提供一份,这个我在网上没有搜到。

2005anjob 发表于 2012-3-26 12:59:46

“ 嗨,哥们儿,问个小问题,ObjectARX 2011 for MAC 能否提供一份,这个我在网上没有搜到。”打扰,已经找到了,和好
页: [1] 2
查看完整版本: AutoCAD 2011 for MAC ARX 开发学习笔记