国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

機械社區(qū)

標題: 給AutoCAD增加計算器功能 [打印本頁]

作者: arkv2006    時間: 2006-8-29 08:50
標題: 給AutoCAD增加計算器功能

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

4 `; y8 n7 [" Q9 F2 q

1 原理及方法

0 F+ \( V( z5 y! z

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

; }( `6 s, V, e) ]' e( e: g

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

6 O, G8 L; B5 S

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

/ A( w; E( d1 p0 _

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

! G6 y7 f( [7 b( G; `" t' I H% Z

  當base=0時,power須大于0

7 s! U& `5 U5 Y P L

  當base<0時,power可為整數(shù),若為小數(shù)或分數(shù)時要求當其化為最簡分數(shù)時分母不能為偶數(shù)。

. D& F1 G8 [* Z4 ], L! b

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

, p! n& q; B' I5 {, Q6 a$ q$ P$ _

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

& _8 K$ m+ \5 U4 v3 O' u

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

) O0 J* h0 u4 I3 w# k7 M4 J- U

2 程序使用方法

% R3 f3 O" t! r2 e* [( D( r

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

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

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




歡迎光臨 機械社區(qū) (http://m.whclglass.com.cn/) Powered by Discuz! X3.5