用DELPHI进行AUTOCAD二次开发的技术基础资料(1分)

  • 主题发起人 funboy88
  • 开始时间
F

funboy88

Unregistered / Unconfirmed
GUEST, unregistred user!
AutoCAD Dockable ActiveX Control Container v1.1


Introduction
This application is a tool for 3rd party developers who are interested in developing UI applications for AutoCAD 2000 without the need for C++ and ObjectARX. It provides a docking window that serves as a generic and programmable container of ActiveX controls. ActiveX controls can be created with a variety of tools such Visual Basic and Delphi. This enables easy creation of modeless UI applications using the language of your choice. AutoCAD can then be customized from your ActiveX control via the AutoCAD Automation Object Model.

介绍
这个工具是为对AUTOCAD2000 进行二次开发感人趣的第三方开发者准备的,不需要C++和OBJECTARX,它通过一个停靠窗口,可看作是一个一般的可编程的ACTIVEX控件的容器,能够用许多的工具来发发ACTIVEX控件,诸如VB,DELPHI,这就能够很容易的使用你喜欢的语言开发一个,
AUTOCAD由CAD的自动化对象模块,能够通过你的ACTIVEX控件被定制

翻译不准,看得懂意思,大概意思就是利用这个控件容器,你能够用你喜欢的工具去进行CAD的二次开发,当然DELPHI不例外了,只要用DELPHI做一个OCX文件,注册进服务器后,然后这个容器通过调过GUID就能够把你的OCX加入到CAD里,做为其中的一部分,
大家去看看我的DEMO,用DELPHI写的,装载进CAD以后,就可以通过指定X,Y,X坐标及半径来画一个圆了,很不错,它里面自带的DEMO是VB写的,我用DELPHI写了一个,一起打到包里,大家可以去我网站下

上次一个广州朋友说接到一个CAD的二次开发项目,他两天就研究明白了,而我却弄了四天时间,E文,接口(INTERFACE)还得多多练习,
VB中的IMPLEMENTS转到DELPHI中折腾了一下,现在明白了,主要是实现这个接口IRetrieveDockableContainer2中的方法SetDockContainer,那个接口方法SetDockContainer只是声明了,没有实现,所以一定要记得实现它。看我的DEMO哟。现在研究完了,送给对CAD二次开发感兴趣的朋友,其实这个东东,很简单的,只要知道原理,我开始的时候就是摸不到头,一直在找ARX方面的文件,那个朋友一直忙,没时间请教,我一直搞不清DELPHI中如何去做CAD的ARX文件的,这个工具一下就解决了,那个朋友发给我的,现在还是不知道如果不用这个工具,如何可以实现ARX文件的,我在书店看到都是说ARX用在C++中,ARX3.0里也全是C++的头库文件,有朋友指点一下。有这个工具,用DELPHI进行CAD的二次开发就容易多了,好像CAD 2002里面没有那个ACAD.rx文件?是不是呀,这个文件是实现CAD的arx应用程序自动装载,好像CAD 2002里只要装载了一次,不载载的话,他以后会自动装载上次的。有朋友知道嘛?我找不到这个文件,帮我找找,SAMPLE目录里应该不是程序自动装载的配置文件吧!


DEMO使用方法,你先看这个工具里的HELP.doc文件,
用我的DEMO里,里面的GUID是my.my

这是工具里使用方法说明
Using the Command Line
ACCONT.ARX provides the “DC” (short for “DOCKABLE_CONTAINER”) command to create the docking ActiveX control container window. This command requires the ProgID or CLSID string of the ActiveX control to proceed. The ProgID is a string that uniquely identifies the ActiveX control.

For example, using the Microsoft Calendar control registered on your system:

Command: DC
ProgID of control: mscal.calendar

NOTE: The ActiveX control needs to be installed and registered with the system.


打开CAD 2002
新建一新DWG文件
打开工具》加载应用程序》在对话框去添加这个容器工具accont.arx文件
装载成功后,在命令提示行输入DC命令,这是这个ARX文件定制的命令,是“DOCKABLE_CONTAINER”的简写,然后它会提示你输入
the ProgID or CLSID string of the ActiveX control
这个时候你输入我的OCX文件的GUID啦,就是MY.my
回车后你就看到那个啦,DEMO BY FUNBOY88
现在你可以点下那个画圆试试,是不是看到图纸空间里多了一个圆的呀,看不到的话,把半径调大点,
呵呵,好玩吧,
如果不成功,出现创建错误的话,就是OCX文件你没有注册

你得先注册我的OCX文件哟,要不然建立不起的,用REGSVR32注册,不用我说了吧



这个工具主要是通过接口的封装,让我们可以不用知道ARX如何转化的,只要像做普通OCX文件一样的做的

用D6打开源程序的时候,记得还要IMPORTS 进CAD的库文件ACAD.TLB以及这个工具的库文件accont.tlb
不然那些接口谁知道是哪里来的呢,呵呵,
 
忘记说下载的地方
http://www.softediter.com/demo.gif去看DEMO
http://www.softediter.com/cad.zip是我的DEMO源程序,D6的
http://www.softediter.com/accont.zip是这个工具,里面带了VB的源程序

刚辞职,这两天在找公司,大家帮帮忙
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1360868
 
版主把问题结束了吧
我结束了不了
 
呵,,我试了试,,觉得还可以,就是VCL组件有些好像不能放在ActiveForm上,
放上去了,一发生事件,AutoCAD就死掉,,

你的例子我试了,,可以用,但是退出AutoCAD时 AutoCAD 不会退出,
并且占用了100%的CPU资源,,

后来我到网上找,,发现有一个地方跟你做的不一样,就是在 Type Library 编辑器里,
CoClass 的接口实现部分,,虽然你也手工地把IRetrieveDockableContainer2接口加到了
CoClass 的接口列表中,但是这个过程应该是让 Type Library编辑器来自动实现的,
也就是在选中 CoClass 后,在 Implements 的接口列表中,加入对 IRetrieveDockableContainer2
接口的实现。。
这样子就不会造成 AutoCAD 退出时,出现退不出,而且好像是死掉的情况。。

多多相互交流哈!。。

darnis@21cn.com
 
最近有个友在玩visual lisp 据他说, 用visual list 比activex 简单
 
应该是,Lisp是CAD支持的脚本,,效率不一定比得上ARX或者是 ActiveX,
在学校的时候学过 Lisp 语言,,很久没用,,都已经全部还给老师了。。:)
 
多谢楼上兄弟
有空我再试试
好长时间没有去研究这个了,
现在没有做DLEPHI了,
 
已经不能用了
我的域名没服务器了
 
能给我有一份么?ziranfeng@xinhuanet.com
 
能把你的demo发给我一份吗? fc_long@x263.net qq: 18551091
 
顶部