免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 4510|回复: 12
收起左侧

[二次开发] 寻求 地形图编辑中检测点线矛盾

[复制链接]

24

主题

6900

铜板

44

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1738

斑竹勋章宣传勋章灌水勋章

QQ
发表于 2009-12-28 22:42 | 显示全部楼层 |阅读模式
求一个CAD的二次开发程序  用于在DLG编辑中检测   高程点 和 等高线 的点线矛盾问题

[/table]
[table=100%,#cce8cf]希望大家能给点帮助或资料  谢谢!




呵呵 解决了  可以看我的其他主题   专门写了解决办法
该会员没有填写今日想说内容.

249

主题

1万

铜板

265

好友

资深会员

地质女郎

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3265

荣誉会员勋章

发表于 2009-12-28 23:34 | 显示全部楼层

回 楼主(heying08) 的帖子

AutoCAD是目前微机上应用最为广泛的通用交互式计算机辅助绘图与设计软件包。AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。其通用性使得它在机械、电子、航空、船舶、建筑、服装等领域得到了极为广泛的应用。但是,不同的行业标准使得各领域在使用AutoCAD的过程中均需根据自身特点进行定制或开发。Autodesk公司为满足广大用户的需求,自AutoCAD v2.18版至AutoCAD 2000的短短十几年间,就相继推出了三代二次开发工具,如图1所示。可以说,AutoCAD的通用性为其二次开发提供了必要条件,而AutoCAD开放的体系结构则使其二次开发成为可能。
图1 AutoCAD二次开发工具的演变
下面对AutoCAD的三代开发工具进行浅析。
一、第一代开发工具——AutoLISP
AutoLISP是1986年随AutoCAD v2.18提供的二次开发工具。它是一种人工智能语言,是嵌入AutoCAD内部的COMMON LISP的一个子集。在AutoCAD的二次开发工具中,它是唯一的一种解释型语言。使用AutoLISP可直接调用几乎所有的AutoCAD命令。
AutoLISP语言最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL(Dialog Control Language)文件,创建自己的对话框。
AutoLISP具有以下优点:(1)语言规则十分简单,易学易用;(2)直接针对AutoCAD,易于交互;(3)解释执行,立竿见影。
AutoLISP的缺点是:(1)功能单一,综合处理能力差;(2)解释执行,程序运行速度慢;(3)缺乏很好的保护机制,源程序保密性差;(4)LISP用表来描述一切,并不能很好地反映现实世界和过程,跟人的思维方式也不一致;(5)不能直接访问硬件设备、进行二进制文件的读写。
AutoLISP的这些特点,使其仅适合于有能力的终端用户完成一些自己的开发任务。
二、第二代开发工具——ADS
ADS(AutoCAD Development System)是AutoCAD R11开始支持的一种基于C语言的灵活的开发环境。ADS可直接利用用户熟悉的C编译器,将应用程序编译成可执行文件后在AutoCAD环境下运行,从而既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势。
与AutoLISP 相比,ADS优越之处在于:(1)具备错综复杂的大规模处理能力;(2)编译成机器代码后执行速度快;(3)编译时可以检查出程序设计语言的逻辑错误;(4)程序源代码的可读性好于AutoLISP。 而其不便之处在于:(1)C语言比LISP语言难于掌握和熟练应用;(2)ADS程序的隐藏错误往往导致AutoCAD,乃至操作系统的崩溃;(3)需要编译才能运行,不易见到代码的效果;(4)同样功能,ADS程序源代码比AutoLISP代码长很多。
三、第三代开发工具——Visual LISP,ARX及基于ActiveX Automation技术的VBA等
1.Visual LISP(VLISP)
VLISP是AutoLISP的换代产品。它与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCAD LISP语言。VLISP对语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。同时,通过实现反应器函数,还扩展了AutoLISP响应事件的能力。作为开发工具,VLISP提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以提高二次开发的效率 。另外,VLISP还提供了工具用于发布独立的应用程序。
2.ARX
ARX(AutoCAD Runtime eXtension)是AutoCAD R13之后推出的一个以C++语言为基础的面向对象的开发环境和应用程序接口。ARX程序本质上为Windows动态链接库(DLL)程序,与AutoCAD共享地址空间,直接调用AutoCAD的核心函数,可直接访问AutoCAD数据库的核心数据结构和代码,以便能够在运行期间扩展AutoCAD固有的类及其功能,创建能够全面享受AutoCAD固有命令特权的新命令。ARX程序与AutoCAD、Windows之间均采用Windows消息传递机制直接通讯。
AutoLISP、ADS、ARX都是AutoCAD提供的内嵌式编程语言。AutoLISP和ADS都是通过内部进程通讯(IPC)来和AutoCAD通讯,它们与AutoCAD是相互分离的过程,而ARX以DLL形式与AutoCAD共享地址空间,如图2所示。因此,与前两者相比,其速度更快、运行更稳定、更简单。由于是在Windows及VC++编程环境里运行,所以,对开发者的编程能力要求较高。
图2 ARX、ADS、AutoLisp与AutoCAD的关系
ObjectARX应用程序以C++为基本开发语言,具有面向对象编程方式的数据可封装性、可继承性及多态性的特点,用其开发的CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实现以及代码可重用性强等特点,并且支持MFC基本类库,能简洁高效地实现许多复杂功能。
这里顺便提一下ADSRX。AutoCAD R14的开发环境ADSRX是ARX的一个子集,它等效于ADS。使用ADSRX,能够用C语言编写基于AutoCAD的程序,也能很方便地将ADS程序移植为ARX程序。
图3比较了AutoLISP、ADS、ADSRX和ARX的关于速度、暴露性、功能和要求使用每个API的编程经验等方面的编程接口。“暴露性”参数显示了用户编程错误的可能严重性。尽管ARX接口是四个API中最强有力的,它也具有产生严重编程错误的最大潜在性,如破坏AutoCAD数据结构等。其它编程环境要求较少的编程经验,但提供的功能和范围也较小。
图3 AutoLisp、ADS和ARX的系统比较
可以说,AutoLISP着眼于应用程序的交互性,ADS C/C++着眼于应用程序的综合性,而ARX则着眼于应用程序的智能性。
3.基于ActiveX Automation技术的VBA等开发工具
ActiveX Automation是一套微软标准,以前称为OLE Automation技术。该标准允许通过外显的对象由一个Windows应用程序控制另一个Windows应用程序,这也是面向对象编程技术的精髓所在。AutoCAD从R14开始增加了作为ActiveX Automation服务器应用程序的功能,使得许多面向对象编译语言和应用程序可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能,如图4所示。
图4 ActiveX在开发语言与AutoCAD之间所起的作用
ActiveX Automation服务器应用程序是通过自身对象的属性、方法和事件实现其功能。对象是服务器应用程序简单而抽象的代表。不管是用VB、VC、OFFICE VBA等从外部开发,还是用AutoCAD VBA从内部对AutoCAD进行二次开发,都是通过调用AutoCAD的对象体系结构来进行的。AutoCAD 2000 ActiveX Automation技术将AutoCAD 2000的各种功能封装在AutoCAD ActiveX对象中,供编程使用。AutoCAD 2000中提供的所有对象组成一个树形结构,如图5所示,最高层是Application对象,其他对象都是它的后代。为了得到一个特定的对象,必须从Application对象对其子孙进行遍历,直到找到该特定的对象。
图5 AutoCAD对象模型
ActiveX Automation技术的完全面向对象化编程的特点,使其开发环境具备了强大的开发能力和简单易用的优良特点,开发工具的选择也具有很大的灵活性。所以,利用ActiveX Automation技术,是极具潜力的一种开发手段。
四、结束语
以上对AutoCAD的三代开发工具分别作了简要介绍。目前,第一代的AutoLISP已能被第三代的VLISP完全替代,第二代的ADS在AutoCAD 2000中已不再支持,所以,第三代开发工具将成为今后AutoCAD二次开发的必然选择。而在第三代工具中具体选择哪一种,笔者认为,主要还应根据用户应用程序的需要和开发人员的编程经验
锄禾日当午,签到好辛苦!...

24

主题

6900

铜板

44

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1738

斑竹勋章宣传勋章灌水勋章

QQ
 楼主| 发表于 2009-12-28 23:41 | 显示全部楼层

回 1楼(红粉佳人) 的帖子

哥们  做广告呢?  真的希望真找到一个这样的程序  或者资料
该会员没有填写今日想说内容.

643

主题

8万

铜板

72

好友

地信贵宾

http://bbs.3s001.com/

Rank: 13Rank: 13Rank: 13Rank: 13

积分
17120
发表于 2009-12-28 23:48 | 显示全部楼层
推荐你到几个专业CAD二次开发的,地信网主要做地质及地理信息系统,CAD在这里只是辅助制图,二次开发没有太多的人气,术业专攻,呵呵,希望对你有用!
www.mjtd.com

www.xdcad.net

www.vlisp.com

www.okok.org

www.jxcad.com
该会员没有填写今日想说内容.

643

主题

8万

铜板

72

好友

地信贵宾

http://bbs.3s001.com/

Rank: 13Rank: 13Rank: 13Rank: 13

积分
17120
发表于 2009-12-28 23:51 | 显示全部楼层

回 2楼(heying08) 的帖子

我给你找了半天,就是不好找的,建议你到各个坛子里撒网提问,再找一些辅助学习的材料,再希望地信的朋友一起来找找,说不定那们朋友就有这方面的资料!
该会员没有填写今日想说内容.

24

主题

6900

铜板

44

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1738

斑竹勋章宣传勋章灌水勋章

QQ
 楼主| 发表于 2009-12-29 23:57 | 显示全部楼层

回 3楼(ron) 的帖子

其实我只是想找到一个能检测点线矛盾的程序   找了很久了都没找到
该会员没有填写今日想说内容.

24

主题

6900

铜板

44

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1738

斑竹勋章宣传勋章灌水勋章

QQ
 楼主| 发表于 2009-12-29 23:58 | 显示全部楼层

回 4楼(ron) 的帖子

谢谢你  我还在尝试  逛了N多论坛了  呵呵
该会员没有填写今日想说内容.

6301

主题

31万

铜板

321

好友

管理员

地信网站长

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
47040

宣传勋章斑竹勋章

发表于 2009-12-30 01:20 | 显示全部楼层

回 6楼(heying08) 的帖子

我找了这个看对你有没有用,《Visual.Basic.NET二次开发AutoCAD范例精解》,我已上传到本站的FTP服务器中,需要的话请下载!
地信网官方信息发布帐号,无专人值守。

24

主题

6900

铜板

44

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1738

斑竹勋章宣传勋章灌水勋章

QQ
 楼主| 发表于 2009-12-30 23:57 | 显示全部楼层

回 7楼(admin) 的帖子

好的  我去看看  先谢谢了
该会员没有填写今日想说内容.

12

主题

1344

铜板

27

好友

高级工程师

学习,学习,学习

Rank: 9Rank: 9Rank: 9

积分
751
发表于 2010-4-21 11:29 | 显示全部楼层
你可以用Geoway来查,很不错的
测绘内业
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表