CAD二次开发,有很多不同层次的语言和库可供选择。

首先是VisualLisp和AutoLisp。Lisp是一门历史悠久的函数式编程语言,很多概念和C这种过程式语言不一样,据说他在人工智能等方面有广泛的应用。

CAD引入了这种语言,给他添加相应的函数库,就成了命令行使用的AutoLisp。在此基础上再增加关于对话框和窗口界面的库,就是VisualLisp,简称VL。VL在CAD中可以视为CAD命令的整合,是脚本语言,而且由CAD程序提供了编写环境。因此上手相当容易,便于编写,调试也很方便。

不过由于是脚本语言,就有两大缺陷。第一是速度,当程序规模很大或是操作的对象数量过多时,你会明显感觉到迟钝。第二是功能。如果有什么功能是命令本身做不到的,那VL也做不到。譬如关于自定义对象、内存操作、数据传递之类,往往要通过别的方法解决。所以我个人认为Lisp适用于把现有命令组合成一个新命令来使用,尤其是存在大量重复操作的时候,用来做批处理非常好。唯一让人感到不适的是,由于Lisp语言本身的语法要使用大量的圆括弧,当嵌套层次较深时,往往会在括弧的配对上发生问题。

第二大类是使用ActiveX和VB。ActiveX是Microsoft提出的一组使用COM(Component Object Model,部件对象模型)使得软件部件在网络环境中进行交互的技术集。ACAD使用Acitvex把数据传送给ActiveX程序,程序处理后再传回ACAD。这个过程有点像浏览器浏览动态网站。AcitveX与具体的编程语言无关,因此理论上说可以用任何一种支持他的语言来编写,但通常大家选择VB语言。VBA是VB的特殊形式,他将VB植入到应用程序中。ACAD包含的VBA能够和CAD共享地址空间,而独立的VB则需要通过接口完成。这种方法在编写上比Lisp复杂,调试也困难。但速度快,功能更强劲。但是在某些对速度要求相当高的运算和涉及CAD内部的应用上仍然会显得力不从心。对于熟悉VB语言又不想学习Lisp奇怪语法的开发者来说,这是不错的选择。

此外,从目前的趋势来看,AutoDesk有全面转到.net平台的趋势,ActiveX和VB看来也将会被他的继任者取代,似乎是VB.net/C#和ObjectARX Managed wrapper classes的组合,具体情况观望中。

第三大类就是ADS ARX 和ObjectARX。ADS是AutoDesk从ACAD R11开始提供的C编程环境。它具有C的一切优点,又能操作CAD。但他和ActiveX类似是通过管道通讯的。ARX(AutoCAD Runtime eXtension)是在ADS基础上发展的面向对象的环境,使用C++语言。最终ARX进化为ObjectARX,他完全面向对象,并且是以dll(动态链接库)的形式共享CAD的地址空间。由于先前的ARX已被包含为子集,人们也就简称ObjectARX为ARX。在CAD2006以前,只能使用C++语言和VC编译器来生成ObjectARX程序。但目前已经可以使用VB.net C# C++等语言配合VisualStudio.net编译器来生成ARX程序了。

用ARX所编出的程序,在载入后就与ACAD在同一代码区,共享全部数据区,能够直接对CAD内部的数据做任何的操作,因此具有极高的执行效率和强大的功能。即使AutoCAD系列软件自身,在编制完成了程序的基本功能之后,其他大量的内部命令其实也是用ARX实现的。你可以通过察看安装好的CAD程序目录中的那些数目众多的arx文件来领会这一点。这就充分说明了ARX的彪悍,不需要再举例子。

天上不会掉馅饼,这个方式的代价就是难度提高了。首先C++语言本身就很复杂(VB.net和C#也不方便到哪里去),再配上复杂度不相上下的ObjectARX库,如果要写出切实可用的程序,还要深入了解CAD本身的结构。即使是开发很小的功能,也要有很多的工作要做。调试的工作,需要启动VC和CAD这两个大家伙,数据量大的时候会让你发狂的。丰厚的回报还有高风险相伴,由于已经和CAD融为一体,ARX程序的错误会直接影响到CAD。象内存泄漏这种常见而又高危的情况,很有可能会把CAD直接搞垮。所以对于程序的安全有着更高的要求。

除了语言、功能、编写和调试的难度之外,这三种方式还有CAD版本匹配的问题。Lisp程序的适合度最好,即使是为AutoCAD r12开发的程序,在CAD2007中仍然能够使用。而ARX则正相反,为CAD2002编写的程序就已经不能在2004下运行了。为旧版CAD编写的ARX程序的源代码可以不需要修改或修改较少,但必须连结新版本的ARX库重新编译,才能被新版本载入运行。而且,不同版本的ARX库还指定了不同版本的编译器。譬如,CAD2000/2002版应使用VC6,CAD2004/2005就需要使用VC.net 2002,而CAD2007则需要VC.net 2005。而VB则介于这两者之间。这个问题往往会把新手搞糊涂,必须参阅相关开发文档。

开发中使用什么语言,并不完全决定于我们。规模、资金、时间甚至用户的习惯才是考虑的关键。大型系统往往综合运用这三种方式,天正软件就是一个典型。我个人建议尝试搞CAD二次开发的人都该先好好看天正的那些东西。

bim的二次开发需要什么语言_CAD二次开发语言简介相关推荐

  1. 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建

    ‍原文链接:区块链基础语言(二)--Go语言开发环境搭建 一.操作系统位数的查询方法‍ 在安装前首先要了解个人的电脑系统位数是32位还是64位. 1.1Windows系统查询方法 右击"计算 ...

  2. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植

    文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...

  3. Python 语言 SAP2000 二次开发 实例

    目 录 Blog Links Remarks Example Blog Links DalNur | 博客总目录 Python语言 SAP2000 二次开发 -- 概述 Python语言 SAP200 ...

  4. 在Visual Studio 2012中使用VMSDK开发领域特定语言(二)

    本文为<在Visual Studio 2012中使用VMSDK开发领域特定语言>专题文章的第二部分,在这部分内容中,将以实际应用为例,介绍开发DSL的主要步骤,包括设计.定制.调试.发布以 ...

  5. c语言bool怎么用_C语言中的一维数组和二维数组什么?怎么用?

    C++| 匠心之作 从0到1入门学编程[免费]​yun.itheima.com C语言除了基本数据类型之外,还提供了构造类型的数据,构造类型的数据包括数组类型.结构体类型和共用体类型.下面我们详细介绍 ...

  6. harmonyos上的程序用什么语言写,HarmonyOS应用开发 — HelloWorld应用开发E2E体验

    感谢关注HarmonyOS,为了便于大家学习特将鸿蒙2.0基础教学内容整理如下: 1.HarmonyOS应用开发-视频播放 https://developer.huawei.com/consumer/ ...

  7. 基于c语言的linux嵌入式开发入门

    前言 本文主要包含,c语言基本结构与语法.make及makefile的使用.main函数参数与返回值的说明.标准输入.输出.错误流的介绍以及linux管道的应用. 语言数据类型 联合体也有翻译为共用体 ...

  8. c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...

    不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...

  9. [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...

最新文章

  1. CentOS5.6系统下mysql5安装
  2. 小工程结算书范本_工程结算合同书范本_工程结算合同格式
  3. CNN之性能指标:卷积神经网络中常用的性能指标(IOU/AP/mAP、混淆矩阵)简介、使用方法之详细攻略
  4. c语言数组将素数放在前部,m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将高于平均分的人数作为函数值返回,将_开卷宝...
  5. ubuntu配置GDB
  6. SwipeRefreshLayout下拉刷新
  7. deep linux 看视频卡,在Deepin 20等Linux系统下用Chrome看虎牙直播经常卡的处理
  8. c语言 统计数量用count_c语言中统计重复数字次数 c语言问题 统计不同数字的个数...
  9. .7 二叉查找树的 建立 insert search remove 操作
  10. HALCON 21.11:深度学习笔记---模型(8)
  11. 【HANA系列】SAP HANA SQL获取字符串长度
  12. Ubuntu 系统安装 MATLAB 2016b
  13. QTTabBar 1.5.4(Beta)版本
  14. 详解PWM原理、频率与占空比
  15. 如何用C语言实现批量修改文件类型
  16. 【推理加速】博客翻译:利用融合conv和bn的方法加速模型
  17. 商业方向的大数据专业_工业大数据应用的三大挑战和五大商业趋势
  18. Go语言创始人从Google离职
  19. ThreadLocal 面试夺命11连问
  20. 零基础童鞋快速学习前端开发 ---- (1)

热门文章

  1. 多线程对H3C网络设备、安全设备进行配置备份【包含虚拟防火墙配置备份】
  2. 【UCOSIII操作系统】任务篇(1)创建任务
  3. 04 | 连接池:别让连接池帮了倒忙
  4. Java 八大基本数据类型简述
  5. Java代码审计手册(3)
  6. React项目中裁剪图片组件使用
  7. 人工智能 - A*算法解决迷宫问题 附源码和可视化显示
  8. CentOS下安装XAMPP详细教程
  9. Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
  10. 大数相乘(数组表示)