autocad二次开发的怎样对AutoCAD进行二次开发

autocad二次开发的怎样对AutoCAD进行二次开发,第1张

从AutoCAD 2.18开始推出AutoLISP开始到现在,我们所能使用的开发工具主要有:AutoLISP、VisualLISP、VBA、COM外部接口、ObjectARX、ObjectARX.NET等开发方式供用户选择。下面开始对上述开发方式进行简要介绍: AutoLISP是进行对AutoCAD二次开发最早的API,它是人工智能语言LISP的一个分支.主要用来自动完成重复性任务,进行客户化开发和编制AutoCAD菜单以及通过简单机制为AutoCAD扩充命令,能够有机的和AutoCAD结合在一起,它语法简单容易上手,到目前仍有很多的活跃开发用户。但是由于它是解释型API而不是面向对象的编程语言,使它的效率低下,由于执行的是源代码文件所以导致保密性能不高很难用它开发大型的应用程序

在AutoCAD R14.01中,Autodesk公司首次提供了一种新的LISP编程工具:Visual LISP,它是一种面向对象的开发环境,是AutoLISP的扩展和延伸。

在AutoCAD2000中,Visual LISP被集成到了AutoCAD环境之中。Visual LISP是一种半编译的API。由于可以被编译所以大大提高了运行效率和安全性。同时它又与AutoLISP完全兼容,又提供了AutoLISP的所有功能,同时它又能够访问AutoCAD的多文档环境,以及对COM/ActiveX技术的支持和反应器等。VisualLISP

IDE同时提供了完整的编辑环境使得用户可以对代码进行调试跟踪、源码语法检查、括号匹配、函数提示等工具,方便创建和调试LISP程序。由于VLISP集成于AutoCAD内部,而且随AutoCAD升级而升级所以兼容性比较好,这也尘轿裤是LISP深受广大编程爱好者使用的原因。

但派简在进行大数据的计算处理方面,Visual LISP不能很好的胜任这项任务,这使得开发大型数据运算的程序仍有一定困难。 ADS(AutoCAD Development System)是Autodesk公司最早在AutoCAD R11中提供的C语言编程环境。ADS除可使用标准C的函数外,又增加了一组专用于对AutoCAD进行 *** 作的函数。由于ADS程序具有C语言的一切优点,因而它曾是开发AutoCAD R11、AutoCAD R12应用程序的主要工具。用C写就的ADS程序,可在所有支持AutoCAD平台上进行源代码移植。只需使用普通的C语言编译器就可以编译生成ADS模块,与ADS库和标准C库链接后生成可执行文件,装入AutoCAD后即可运行。但是ADS和AutoLISP一样,内在结构不是面向对象的,用AutoLISP解释器加载和调用,利用IPC与AutoCAD通讯。

ARX(AutoCAD Runtime eXtension)是在ADS基础上发展起来的一种面向对象的C语言编程环境。由ADS到ARX的变迁就像C到C++的转变。ARX与老式的ADS及AutoLISP的最大差异在于ARX应用程序是动态链接库,共享AutoCAD地址空间,可以对AutoCAD进行直接函数调用,避免了IPC的系统开销和由此引起的性

能下降。因此那些频繁与AutoCAD通讯的应用程序在ARX环境下的运行效率明显优于老式ADS或AutoLISP环境。

ARX最早是在AutoCAD R13中提供的,但在AutoCAD R14中,ARX就被ObjectARX所代替。同时原来的ADS库函数全部被包含在ObjectARX中,将ADS函数合为单一的库就形成了ADSRX。ADSRX库已纳入到AutoCAD的总体结构中,因此它与其他ObjectARX库一样,能共享AutoCAD地址空间。

到了新世纪,传统意义上的ADS开发环境的概念已经不复存在,且ADSRX已成为了ObjectARX的一个子集,因此,ObjectARX是包含了ADS、ARX和ADSRX的一种综合的C/C++开发环境。ObjectARX的最大特点是引入了面向对象的编程机制,用户可以根据规则定制实体也是ObjectARX的一大亮点帆伍。 自AutoCAD R14起,提供了ActiveX Automation形式的API。ActiveX技术可将各种二进制应用程序组件集成一体。它可采用多种编程方式例如:VBA构造一种或多种与应用程序独立的宏编程。提供Automation服务的软件组件通过标准接口能够对外开放它的特定功能。

正是由于AutoCAD拥有ActiveX接口,因此,用户可以容易的用各种AciveX编程语言来定制开发AutoCAD。

AutoCAD包含的VBA能在进程内访问AutoCAD的对象模型。亦可以通过独立

的VB进行编程,但是VB与ActiveX的接口需要通过IPC驱动AutoCAD,所以作为ActiveX控件的VBA比VB具有明显的性能优势。

特别要强调的是,ActiveX与AutoCAD交互 *** 作很慢,若需要在外部程序中一边运算一边交互 *** 作的重复迭代,将耗费大量时间,如同死机

值得注意的是,从AutoCAD 2010版本开始,VBA不在随AutoCAD一起安装。如果想要在机器中运行VBA程序必须登录下面的网址进行下载方可运行。 在AutoCAD 2005 版本中Autodesk公司推出了用.NET开发AutoCAD的编程接口。它的实质是通过Managed C++/CLR技术对VC++的ObjectARX进行封装。到目前的AutoCAD 2015十年来Autodesk公司已经完成对大部分ObjectARX编程接口的封装。这种编程方式难度适中,能够访问大部分的编程接口(除了自定义实体);但是,由于AutoCAD的.NET接口是在不断的完善过程中导致了在低版本上不能够使用新增的功能。

TI公司的ADS8688是基于16位逐次逼近(SAR)模数转换器(ADC)的八路数据采集系统,工作在500kSPs的吞吐量.双核猜极工作电源±10.24 V,±5.12 V和±2.56 V,单极工作电源0 V 到 10.24 V和0 V到5.12 V,输出保护电压高达成±20 V,低功耗65mW,具有极好的性能: SNR: 92 dBTHD:–102 dB.主要用于工业控制,PLC和数据采集系统.本文改扰型介绍了ADS8688主要特李卜性,框图,以及在电源自动化和PLC的数据采集系统框图, ADS8688EVM-PDK 评估模块主要特性和GUI主要特性,电路图,材料清单和六层PCB设计图.

The ADS8684 and ADS8688 are 4- and 8-channel, integrated data acquisition systems based on a 16-bit successive approximation (SAR) analog-to-digital converter (ADC), operating at a throughput of 500 kSPS. The devices feature integrated analog front-end circuitry for each input channel with overvoltage protection up to ±20 V, a 4- or 8-channel multiplexer with automatic and manual scanning modes, and an on-chip, 4.096-V reference with low temperature drift. Operating on a single 5-V analog supply, each input channel on the devices can support true bipolar input ranges of ±10.24 V, ±5.12 V, and ±2.56 V, as well as unipolar input ranges of 0 V to 10.24 V and 0 V to 5.12 V. The gain of the analog front-end for all input ranges is accurately trimmed to ensure a high dc precision. The input range selection is software-programmable and independent for each channel. The devices offer a 1-MΩ constant resistive input impedance irrespective of the selected input range.

The ADS8684 and ADS8688 offer a simple SPI-compatible serial interface to the digital host and also support daisy-chaining of multiple devices. The digital supply operates from 1.65 V to 5.25 V, enabling direct interface to a wide range of host controllers.

ADS8688主要特性:

16-Bit ADC with Integrated Analog Front-End

4-, 8-Channel MUX with Auto and Manual Scan

Channel-Independent Programmable Input Ranges:

Bipolar: ±10.24 V, ±5.12 V, and ±2.56 V

Unipolar: 0 V to 10.24 V and 0 V to 5.12 V

5-V Analog Supply: 1.65-V to 5-V I/O Supply

Constant Resistive Input Impedance: 1 MΩ

Input Overvoltage Protection: Up to ±20 V

On-Chip, 4.096-V Reference with Low Drift

Excellent Performance:

500-kSPS Aggregate Throughput

DNL: ±0.5 LSBINL: ±0.75 LSB

Low Drift for Gain Error and Offset

SNR: 92 dBTHD: –102 dB

Low Power: 65 mW

AUX Input → Direct Connection to ADC Inputs

SPI™-Compatible Interface with Daisy-Chain

–40℃ to 125℃ Industrial Temperature Range

TSSOP-38 Package (9.7 mm × 4.4 mm)

图1. ADS8688功能框图

图2. 用于电源自动化的ADS8688八路复用数据采集系统框图

图3. 用于PLC的ADS8688 16位八路综合模拟输出模块框图

ADS8688EVM-PDK 评估模块

The ADS8688EVM-PDK is a platform for evaluating the ADS8688 device. The ADS8688EVM-PDK consists of an ADS8688EVM board and an SDCC controller card. The SDCC is an FPGA-based controller card that functions as an serial peripheral interface (SPI™) host and transfers data to the ADS8688EVM graphical user interface (GUI) via a USB interface. The ADS8688EVM GUI collects, analyzes, and records data from the ADS8688EVM board. The ADS8688EVM GUI is capable of collecting data from the ADS8688EVM in auto and manual modes, configuring the ADC program registers, and performing FFT analysis of data captured from the ADC.

ADS8688EVM-PDK 评估模块主要特性:

• Includes support circuitry as a design example to match ADC performance.

• 3.3-V slave SPI.

• Serial interface header for easy connection to the SDCC controller card.

• Designed for a 5-V analog supply.

• Integrated 4.096-V voltage reference.

• Bipolar (±10.24 V, ±5,12 V, ±2.56 V )or unipolar(0 V to 10.24 V, 0 V to 5.12 V) input ranges for each channel.

• Onboard, second-order, Butterworth, low-pass filters for four channels.

• Onboard regulator for generating a ±15-V bipolar supply for second-order, Butterworth, low-pass filters.

• Capable of accepting a ±100-mV signal on the negative analog inputs (AIN_xGND).

ADS8688EVM-PDK 评估模块GUI特性:

• Captures data from the ADS8688EVM in auto and manual modes.

• Configures the ADS8688 device program registers.

• Enables and disables channels in auto mode.

• FFT analysis and calculates the SNR, THD, and SINAD ac performance parameters.

• Single and multiple graph views for captured data.

• Includes a dc histogram for dc inputs.

• Logs ADC data.

图4.ADS8688EVM-PDK 评估模块外形图: microSD存储卡和SDCC控制板

The ADS8688EVM-PDK includes microSD memory cards that contain the EVM software and SDCC controller board firmware required for the EVM operation

我不是神人,但我希望可以帮你解决问题,呵呵……

首先,我有个小问题,你要求算的是2+4+8+……+100,是不是2的1次方,2次方,3次方?如果是,那应该是2+4+8+16+32+64,怎么有还加100呢?或者你笔误,应该是2—100之间的偶数相加呢?

好,下面来解决你的问题:

1.用ADS1.2运行你的加法程序,要注意一点就是ADS不能直链接运行C遍出来的程序,要用汇编代码启动。下面是启动代码startup.s文件(我空间有关于这个代码的分析,你可以去看看):

IMPORT |Image$$RO$$Limit|

IMPORT |Image$$RW$$Base|

IMPORT |Image$$ZI$$Base|

IMPORT |Image$$ZI$$Limit|

IMPORT Main 声明C程序中的Main()函数

AREA Start,CODE,READONLY 声明代码段Start

ENTRY标识程序入口

CODE32声明32位ARM指令

Reset LDR SP,=0x40003F00

初始化C程序的运行环境

LDR R0,=|Image$$RO$$Limit|

LDR R1,=|Image$$RW$$Base|

LDR R3,=|Image$$ZI$$Base|

CMP R0,R1

BEQ LOOP1

LOOP0 CMP R1,R3

LDRCC R2,[R0],#4

STRCC R2,[R1],#4

BCC LOOP0

LOOP1 LDR R1,=|Image$$ZI$$Limit|

MOV R2,#0

LOOP2 CMP R3,R1

STRCC R2,[R3],#4

BCC LOOP2

B Main 跳转到C程序代判差码Main()函数

END

2. 启动代码写好后,再编写C代码,运行你的程序(按你的意思算)

#define uint8 unsigned char //这两个宏定义是ADS里面防止数据溢迹冲好出带的

#define uint32 unsigned int

#define N 100

uint32 sum

// 使用加法运算来计算2+4+8+……+N的值。

void Main(void)

{ uint32 i

sum = 0

for(i=0i<=Ni=i*2)

{ sum += i

}

while(1)

}

3. 这两个程序合在一起才是是完整的ADS实现程序,希望可以解决你的困惑。姿铅

祝你进步!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12547943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存