久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機(jī)械社區(qū)

標(biāo)題: 給AutoCAD增加計(jì)算器功能 [打印本頁(yè)]

作者: arkv2006    時(shí)間: 2006-8-29 08:50
標(biāo)題: 給AutoCAD增加計(jì)算器功能

在用AutoCAD進(jìn)行繪圖時(shí),經(jīng)常需要進(jìn)行一些必要的計(jì)算工作。盡管Autodesk公司隨AutoCAD一起提供了一個(gè)可進(jìn)行簡(jiǎn)單計(jì)算的LISP程序CALC.LSP,但該程序開(kāi)發(fā)較早,在COMMAND命令下使用,界面不直觀,且使用不方便。本文通過(guò)對(duì)AutoCAD內(nèi)對(duì)話框結(jié)構(gòu)及AutoLISP進(jìn)行研究,提出了一種用對(duì)話框結(jié)構(gòu)實(shí)現(xiàn)計(jì)算器功能的方法,同時(shí)給出程序流程圖,供大家參考。該程序已應(yīng)用于我院的實(shí)際工作中。

/ w9 P4 E/ Z# J+ g! t) x

1 原理及方法

. ], q) ], g- {! h; _& i

  AutoCAD對(duì)話框結(jié)構(gòu)包含多種構(gòu)件,如edit_box(編輯框)text(文字)button(按鈕)等。利用這些工具,可以開(kāi)發(fā)出界面友好的實(shí)用程序。圖1就是用這種方法實(shí)現(xiàn)的。 將計(jì)算器中數(shù)字及各種運(yùn)算符號(hào)以按鈕(button)形式排成55列,并把計(jì)算結(jié)果以文字構(gòu)件方式在對(duì)話框內(nèi)顯示,即可得到圖1所示對(duì)話框結(jié)構(gòu)(對(duì)話框文件#CAL.DCL)。最后編制對(duì)話框顯示及完成各種運(yùn)算功能的驅(qū)動(dòng)程序即可(驅(qū)動(dòng)程序#CAL.LSP),程序流程圖見(jiàn)圖2

! l7 ^5 m/ q" Y) G4 {5 R4 G

  在#CAL.LSP程序中用到了AutoLISP提供的多種數(shù)值計(jì)算及變量轉(zhuǎn)換函數(shù)。需要說(shuō)明的是,筆者在調(diào)試過(guò)程中發(fā)現(xiàn)某些函數(shù)對(duì)變量有一些特殊要求,現(xiàn)介紹如下,與讀者共同探討:

5 ^' J v; m5 h4 W" B2 m

  1、在冪運(yùn)算函數(shù)(expt base power)中,對(duì)變量base()power()的要求與代數(shù)學(xué)中冪的運(yùn)算要求是不同的。在代數(shù)學(xué)中對(duì)變量basepower的要求如下:

2 S- }0 o0 Q6 T- U5 D5 j

  當(dāng) base>0時(shí),power 可為任意實(shí)數(shù);

. p! ]. G) q* p! t

  當(dāng)base=0時(shí),power須大于0

0 D5 g0 E9 }' u) }. n/ L

  當(dāng)base<0時(shí),power可為整數(shù),若為小數(shù)或分?jǐn)?shù)時(shí)要求當(dāng)其化為最簡(jiǎn)分?jǐn)?shù)時(shí)分母不能為偶數(shù)。

5 j |: {9 v. U2 a2 } t; F5 A( X

  但在AutoLISP中當(dāng)變量base<0時(shí),要求power只能是整型數(shù)或小數(shù)點(diǎn)后均為0的實(shí)數(shù),如2-2.0等,否則將得到錯(cuò)誤信息或返回一個(gè)錯(cuò)誤結(jié)果(power值而定)。此外,當(dāng)計(jì)算結(jié)果太大而溢出時(shí),對(duì)于For DOS版的AutoCAD將返回1.67e+308,而WINDOWS版則返回1.79769e+308

, s4 r* g5 f$ q H

  2、正余弦函數(shù)(sin x)(cos x)要求變量x必須小于等于9.223372e+18(當(dāng)然還可再延長(zhǎng)小數(shù)位數(shù)),否則得不到正確結(jié)果。例如當(dāng)變量為9.223373e+18時(shí),對(duì)于For DOS版的AutoCAD返回NAN,而WINDOWS版則返回變量值本身。

. p+ D, q: F. O

  3、在使用函數(shù)(rtos)將數(shù)據(jù)轉(zhuǎn)化為字符串時(shí),筆者發(fā)現(xiàn)當(dāng)數(shù)據(jù)大于1e+100(10100次方)時(shí),會(huì)將指數(shù)100自動(dòng)地改為99。例如,執(zhí)行(rtos 6e+100 2 6)后得到"6.000000E+99",而不是所期待的"6.000000E+100"。所以本程序規(guī)定最大數(shù)據(jù)不能大于1e+99,否則將顯示溢出錯(cuò)誤。當(dāng)然,通過(guò)編制另外的轉(zhuǎn)換程序是可以將最大數(shù)據(jù)提高到AutoCAD所能接受的最大數(shù)據(jù)(經(jīng)測(cè)試發(fā)現(xiàn)其最大值可為1.79769e+308)。限于篇幅,本文不再提供該轉(zhuǎn)換函數(shù),需要的同志可與筆者聯(lián)系。

; Y9 r7 U5 {' a# A

2 程序使用方法

( L) B5 k5 s* y

  將程序#CAL.LSP 及對(duì)話框文件#CAL.DCL拷貝到AutoCAD所能找到的目錄中,在Command:命令下鍵入(LOAD "#CAL")進(jìn)行程序的加載,即可象其它AutoCAD內(nèi)部命令一樣使用#CAL了。也可在所使用的菜單文件(ACAD.MNU)中的下拉式菜單或屏幕菜單部分加上下面一行:[計(jì)算器]^C^C^P(if (null c:#cal) (load"#cal")) #cal以后即可直接從菜單中驅(qū)動(dòng)該絳頡?/P> 9 a# \, ^# _4 _ h: J

  對(duì)話框內(nèi)各個(gè)圖標(biāo)與普通計(jì)算器相似,"C"表示清零,"M+"表示存儲(chǔ)結(jié)果,"MR"表示彈出所存儲(chǔ)的結(jié)果,"sqrt"表示開(kāi)方,"X**y"表示求冪。當(dāng)所輸入的數(shù)據(jù)不合適或計(jì)算結(jié)果溢出時(shí)對(duì)話框內(nèi)會(huì)顯示錯(cuò)誤提示信息。

  本程序在AutoCAD R12.0 For DOSFor WINDOWS版上均調(diào)試通過(guò),但在WINDOWS版本中所顯示的圖形與圖1略有不同。
作者: ch402    時(shí)間: 2010-4-26 19:23
!!!!!!!!!!!!!!!!!!
作者: sitoo    時(shí)間: 2010-4-27 10:05
哈哈,AUTOCAD08版已經(jīng)有了計(jì)算器啦,O(∩_∩)O哈哈~




歡迎光臨 機(jī)械社區(qū) (http://www.ytsybjq.com/) Powered by Discuz! X3.5