久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区

您的位置:網(wǎng)站首頁 > CAD新聞

選擇AutoLISP還是VBA

時間:2010-01-11 09:50:05 來源:

  我聽到許多關(guān)于這樣的問題。AutoLISPVBA有什么不同呢?我要學(xué)習(xí)怎樣二次開發(fā)AutoCAD,但我不能確定先學(xué)哪一個工具。哪一個工具更好呢?

  簡潔的回答是他們都好,你應(yīng)當(dāng)兩者都學(xué)。分析我的回答,你可以知道這不是最快的解決辦法,但在你做出一個完整的決定前,一個完整的回答需要時間和更多的問題。舉個例子:你懂BASIC嗎?如果你懂,那么VBA學(xué)起來會更快一些;如不懂BASIC,那么你學(xué)過其它的編程語言嗎?如果你學(xué)的正好是FORTRAN或PASCAL的話,那也很好。因為如果你已掌握了這兩種語言,則VBA的學(xué)習(xí)將十分簡單。如果你一點兒也不懂程序設(shè)計語言,那么AutoLISP將會是適合你學(xué)習(xí)的語言。
  如果你正好沒有程序設(shè)計的知識和經(jīng)驗,那么在AutoCAD里你應(yīng)當(dāng)學(xué)習(xí)什么語言?這個問題很難回答。這取決于你希望完成什么樣的工作?每種語言都有其優(yōu)點和缺點,AutoLISP擅長建立新命令和產(chǎn)生已有命令的連接。VBA擅長執(zhí)行包括在其他應(yīng)用程序中的組件,如Microsoft的Excel和Access。AutoLISP是基于表處理的編程體系,它允許程序員隨意地存儲和操作傳送信息,然而VBA部件包括數(shù)據(jù)和對復(fù)雜情況的各種有效操作,這就是問題變得復(fù)雜的地方,除非你已真正懂得這些工具的好處,否則,很難回答你應(yīng)該選擇哪一個,但你應(yīng)當(dāng)知道你想完成什么和允許完成什么,因為它將引導(dǎo)你向正確的解決方法前進。
  稍后,你會發(fā)現(xiàn)這一簡潔的回答是恰當(dāng)?shù)模銓W(xué)習(xí)兩種語言,你要做的一些事,可以在AutoLISP中用十分簡單的幾行代碼來解決。另一方面,你會發(fā)現(xiàn)VBA提供了一些最簡捷的應(yīng)用程序解決方案。例如,建立一個復(fù)雜的包括許多對話框的應(yīng)用,AutoLISP支持對話框,但是不如VBA支持的程度強,同時,在AutoCAD中一個任務(wù)的情況下,VBA提供在對象級別上訪問AutoCAD系統(tǒng),但它對AutoCAD的一些基本命令的支持性并不是很好,而AutoLISP在這一點上卻做的很好。
  這兩種語言不具有很好的兼容性,這種情況是必然的,就是說,你不能把在AutoLISP中寫的東西放到VBA中隨意使用,反之亦然。我并不是說這種情況不可能的,但卻是很難以實現(xiàn)。最低限度是,一但你選擇了一種語言來設(shè)計程序,你就不可能中途又用另一種語言來解決程序中的問題,你不得不繼續(xù)使用你最初選擇的語言。
  建立個詞匯表
  那么,讓我們從學(xué)術(shù)角度討論一些兩種語言間的不同之處。前面提到的AutoLISP是綜合了邏輯結(jié)構(gòu)與傳統(tǒng)AutoLISP命令的一個完美工具,你能組合AutoCAD命令并放在一個有條件的邏輯腳本里,而產(chǎn)生強有力的自定義命令,這些命令能被用于自動操作通常的任務(wù),也能解決計算問題而得到一個結(jié)果。基于命令種類的思想比目標(biāo)角度的思想更簡單,一個清楚直接指出不同點的例子:在一個多義線對象里打斷編輯方法。如果你要打斷一條多義線,你必須先計算并重新更新這個物體,Extend和Trim命令也一樣。這些命令現(xiàn)在還并不包含在AutoCAD對象系統(tǒng)的實體對象編輯方法中。在不久它們會隨時出現(xiàn),這就是對象的好處。
  在許多情況下,對象級的處理比命令方式更高級。當(dāng)你執(zhí)行一個命令時,你有可能可以也有可能不可以直接操作你所選取的對象。因為你必須依賴于AutoCAD的對象選擇機制。對象不是模糊不清的。當(dāng)你專門指定一個對象時,對你要操作的對象,它是很清楚的。
  對象級別的處理在VisualLISP也可實現(xiàn)。使用VisualLISP中的(VL)擴展,你能改變對象的參數(shù)且在需要時調(diào)用對象的方法。你不得不使用對象引用,它可以從已有的實體名或直接產(chǎn)生的對象中生成,在大多數(shù)情況下,一個有經(jīng)驗的AutoLISP程序員不需要使用這些對象,但遲早它們會派上用場。
  VisualLISP的另一優(yōu)點是比VBA更接近AutoCAD系統(tǒng)。VBA不是由AutoCAD產(chǎn)生的,它是在其它的環(huán)境下同樣工作的一個附加的語言,象Microsoft的Word和Excel一樣。它也類似于在AutoCAD中用VB(Visualbasic)語言編制程序的方法。VisualLISP僅在AutoCAD里運行,它的優(yōu)勢是軟件間有著密切的工作關(guān)系。當(dāng)在命令行里提示用戶時,你能發(fā)現(xiàn)一個不同點的例子。在VisualLISP里,你可以使用PROMPT或PRINT語句。在VBA里,你必須使用Prompt方法,這是優(yōu)化對象的一部分,也是繪制對象的一部分,下面的幾行代碼將對AutoCAD命令行發(fā)出一個提示。第一行為VisualLISP語言;第二行用的是VBA。
  (Prompt“nstarting.”)#p#分頁標(biāo)題#e#
  thisDrawing.Utility.PromptCh$(10)&“starting”
  有兩件事顯而易見,在VisualLISP里,在命令行窗口中,“n”使光標(biāo)跳到新的一行。VBA使用Chr$(10)功能,必需把它放在使用“&”操作符的提示字符串前才可以運行。其次是當(dāng)類型數(shù)量相對實用對象的提示方法接近時,才會使用這個。
  在AutoLISP中,可使用PRINT語句,在生成值前,“n”使順序轉(zhuǎn)到新的一行開始。PRINT的另一個特點是可以輸出任何數(shù)據(jù)類型,而PROMPT功能只能處理字符串。
  在VBA里,對于優(yōu)化對象的方法和AutoLISP里的“GET×××”函數(shù)一樣,你必須一直使用字符串。AutoLISP包括幾種不同的把你要使用的數(shù)據(jù)類型轉(zhuǎn)化成字符串型的函數(shù)。RTOS把數(shù)值型轉(zhuǎn)化成字符串型;ITOA把數(shù)值型轉(zhuǎn)化成整數(shù)型。VBA提供兩個數(shù)據(jù)轉(zhuǎn)換函數(shù):STR和FORMAT。當(dāng)轉(zhuǎn)化一個非負(fù)數(shù)時,STR函數(shù)返回一個精確的字符串,即在字符串前加上一個空格。這就是,str(-1.1)返回字符串“-1.1”,str(1.1)結(jié)果是“1.1”。FORMAT允許你設(shè)立特別的轉(zhuǎn)換格式。對正在學(xué)習(xí)VBA的人,可利用在線幫助查看有關(guān)該函數(shù)的幫助,它提供了大量的例子來演示數(shù)據(jù)是怎樣被轉(zhuǎn)化產(chǎn)生的。
  衡量的尺度
  對于AutoCAD的定制來說,由于AutoLISP語言是以命令的標(biāo)準(zhǔn)建立的,這促進了偏向于支持AutoLISP的尺度。你能使用AutoLISP中帶“C:”作為新命令名稱的頭兩個字符的方式來定義函數(shù),該命令就像AutoCAD命令一樣使用。“C:”函數(shù)被叫做“命令函數(shù)”。VBA有宏,你必須從程序管理器里運行宏。從命令提示(或普通的macro菜單)里運行不了宏,這就存在著一個重要問題。用戶可以使用AutoLISP啟動VBA程序管理,然后以相同的方式執(zhí)行宏。使用命令行語句時,你應(yīng)該確信在語句前加了“-”,格式如下:
  command“-VBALOAD”“mymacros”“-VBARUN”“mymacro”
  如果你未用此負(fù)號,將會出現(xiàn)一個對話框,提示用戶裝載VBA和運行宏。在多數(shù)情況下用戶并不想出現(xiàn)這個對話框。取而代之的是在命令行裝載宏并用一個VBA模塊來運行它,這樣,首先出現(xiàn)的是在AutoLISP中很強列關(guān)注的東西,不再僅僅只是一個傾向。一但一個錯誤和漏洞發(fā)生,就會有其他相關(guān)問題出現(xiàn),這在編程中并不尋常。
  另外一點,VBA允許一個經(jīng)由AutoLISP啟動的過程,VBA還有一個反應(yīng)繪圖及同時處理多個圖形的優(yōu)良機制。在VisualLISP里,你能做這些工作,但在VBA里就不是如此容易了。其反應(yīng)的事物與圖形連系在一起,甚至嵌入圖形模板中,有多種原因允許你所編程繪制圖形。VisualLISP沒有一些靈活的運行程序或操作菜單,因此它沒有這些能力。VBA與VisualLISP爭奪的另一領(lǐng)域為數(shù)據(jù)種類。VBA的數(shù)據(jù)種類多于VisualLISP,它包括了一些有用的如Date、Time的數(shù)據(jù)類型。在VisualLISP里日期和時間是用字符串或是數(shù)值存儲的。在一張圖形里,當(dāng)你通過系統(tǒng)變量存取系統(tǒng)日期信息時,你會得到純數(shù)字而不是日歷天數(shù)。
  在VBA中操作日期和時間是非常容易的,F(xiàn)ormat函數(shù)可以產(chǎn)生幾乎任一種描述的格式,你可以用基本的數(shù)值來完成比較和區(qū)別。你能以某種自定義的格式存儲或操作時間信息,方法簡單。我聽說頑固的AutoLISP程序員聲稱VBA不支持表處理而LISP支持,這是事實。但VBA不支持Variants類型,Variants與LISP庫中的一些數(shù)據(jù)種類標(biāo)志十分相似。Variants允許VBA使用不同類型的數(shù)據(jù)和結(jié)構(gòu),但不如LISP中的表處理功能強大。表能存儲許多種類型的數(shù)據(jù)且用幾行基于MAPCAR、FOREACH、APPLY的代碼就可以快速操作它們。但是這些程序設(shè)計體系需要時間去掌握,許多程序設(shè)計的新手在使用VBA時,將不會遺漏結(jié)構(gòu)的存取。
  坦白的說,表處理進程并不像對象操作那樣令人感興趣。在VBA(和VisualLISP)中你能連接其它系統(tǒng)支持的對象。對程序員而言,ActiveX是面向Windows的一個面向?qū)ο蟮倪^程到過程的通信編程系統(tǒng),它允許你的VBA程序運行在AutoCAD里,并且可借用Excel或其它一些支持自動操作的程序。因為Excel支持VBA,所以你能在一個Excel工作表中驅(qū)動AutoCAD。當(dāng)你試著思考它時,多自動進程處理有著某些讓人敬畏的潛力。
  在下載部分的鏈接里,你會發(fā)現(xiàn)兩個程序:
  一個是在VBA(帶有DVB擴展)里的,另一個在VisualLISP(帶有LSP擴展)里,這些函數(shù)完成相同的事:他們提示用戶輸入一些定義一個銑槽的參數(shù),并畫出這個銑槽,這個銑槽可以放在任何角落且有一個90°的圓角或一個完整的半圓帽。這些例子表明了VBA與VisualLISP運行程序的風(fēng)格的幾個不同點,或許這就是最明顯的產(chǎn)生lightweight多義線的的方法,在VBA里,該對象由一系列點確定,雛形產(chǎn)生后,拐點也相應(yīng)產(chǎn)生了,VisualLISP的例子簡單使用PLINE命令去產(chǎn)生點和弧,因為他們可以從命令行提示中配置。從運行程序這一點而言,VisualLISP版本很容易產(chǎn)生,因為你不必知道任何拐點和他們怎樣在多義線中使用,在VisualLISP我用EntMake語句,在一個實體列表中確定拐點,這個版本的基本命令很容易編譯代碼。如果你更深入地學(xué)習(xí),你會發(fā)現(xiàn)VisualLISP和VBA是十分平衡的,這個的弱項正是另一個的強項。然而VBA支持一些新的理論,對于AutoLISP程序員而然,他的缺點是把一個簡單問題復(fù)雜化。在大多數(shù)情況下,我傾向于VisualLISP,因為它提供了更多的自由度。對于AutoCAD的定制我有許多經(jīng)驗,但有些時候,根據(jù)客戶需求,我會用VBA,因為對客戶而言,其更容易維護。它提供了一些面向自動生成的模板。我的許多客戶在定制AutoCAD時,并沒有廣博的經(jīng)驗,但他們有Basic語言基礎(chǔ),因為這點,他們使用我推薦的VBA。對于不久將需改變的元素的操作,他們感到很輕松。#p#分頁標(biāo)題#e#
  上面所有的原因,就是我為什么推薦VisualLISP和VBA二者都學(xué)的緣故。話又說回來,這還要依據(jù)你所使用的工具而定,學(xué)會其一,已可以了,但你會錯過向另一個方向發(fā)展的時間,這是必然的沖突。第一步,你可能從VBA中學(xué)習(xí)怎樣運行LISP語句或者從VisualLISP中學(xué)習(xí)運行傳統(tǒng)VBA的方法。誰知道下一個將會是什么?
  從哪里開始
  為了決定先學(xué)哪一個語言,讓我們做一些自我評價:如果你很好地了解了AutoCAD的命令并希望自動使用它們,那么VisualLISP將是你的首選;如果你不懂AutoCAD,但你是一名知道對象是如何工作的計算機程序員,你可以學(xué)習(xí)VBA;如果你是一名C++程序員,你可以通過學(xué)習(xí)VBA而了解對象集是怎么結(jié)合在一起的,然后花一點時間學(xué)習(xí)ObjectARX(一個DLLs結(jié)構(gòu)的C++庫,運行于AutoCAD自身相同的內(nèi)存映像),在這篇文章中沒有討論ObjectARX,是因為你必須使用外部的C++編譯器,且必須從Autodesk公司獲得開發(fā)工具包,而AutoCAD2000中直接配有VisualLISP和VBA編譯器。
  給想學(xué)習(xí)AutoCAD的人最后一點建議:
  尋找那些有范例的書和雜志。
  上網(wǎng)查詢這些內(nèi)容,甚至是例子。VisualLISP和VBA的在線幫助常令初學(xué)者感到困惑,因為一些函數(shù)從VBA中引證,而另一些從VisualLISP中引證。無論你使用哪一個語言,你都有可能有從其它語言里偶然得到幫助的好機遇,因為它們是相關(guān)的。因此我強烈推薦看一本或兩本書。你有大量選擇的自由,多存些好書。
  [編者注:有關(guān)這些內(nèi)容推薦兩本好書,BillKramer的《AutoLispTreasureChest》;BillKramerJohnGibb的《UsingVisualBasicwithAutoCAD》(第二版)]
  存在著許多選擇,每一個都有其優(yōu)點。無論你先學(xué)什么,在某一時間你應(yīng)當(dāng)學(xué)習(xí)所有的東西,為了去追尋更多的知識,這就意味著要不停的編制程序。BillCramer——有著二十多年的運用CAD/CAM/CAE系統(tǒng)的經(jīng)驗,對于代碼的更新,可到下載處下載。


久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区
欧美一区二区视频97| 国产999精品视频| 久久久久久午夜| 涩涩日韩在线| 国产精品久久久久久久久借妻| 日本久久久久久久| 国精产品一区一区三区视频 | 欧美在线影院在线视频| 国产成人精品视频ⅴa片软件竹菊| 国产精品成av人在线视午夜片 | 久久免费视频网站| 亚洲五码在线观看视频| 国产美女主播一区| 国产精品美女久久| 欧美久久久久久久久久久久久久| 久久人人爽人人爽人人片av高请| 一区二区精品视频| 成人国产一区二区| 综合久久国产| 国产女人水真多18毛片18精品| 国产精品第一区| 日韩精品一区二区三区不卡| 国产福利视频一区二区| 性色av一区二区三区在线观看| 99视频精品免费| 亚洲一区精品视频| 成人a在线视频| 一区二区三区av| 成人综合视频在线| 一区二区三区在线观看www| 国产欧美精品va在线观看| 欧美激情精品久久久久久变态| 国产日韩精品综合网站| 色综合天天狠天天透天天伊人| 国产区亚洲区欧美区| 欧美激情中文网| 国产美女精彩久久| 一区二区三区av| 久久综合色一本| 日韩人妻无码精品久久久不卡| 久久久久久一区| 欧美日韩一区二区三区电影| 国产精品日韩二区| 精品无码一区二区三区爱欲 | 日韩视频在线播放| 国产成人精品电影久久久 | 成人免费在线网址| 亚洲黄色网址在线观看| 久久免费视频1| 欧美日韩精品免费观看视一区二区| 国产精品无码电影在线观看| 国产一区国产精品| 一区二区精品在线观看| 国产高清在线一区| 男人的天堂99| 在线播放 亚洲| 九一免费在线观看| 精品91一区二区三区| 在线一区亚洲| 久久精品成人一区二区三区蜜臀| 欧美亚洲视频一区| 欧美激情乱人伦一区| 久久久久九九九| 精品一区二区视频| 五月天婷亚洲天综合网鲁鲁鲁| 日韩在线视频中文字幕| 国产欧美综合精品一区二区| 日本一区二区精品视频| 久久亚洲私人国产精品va| 成人伊人精品色xxxx视频| 日本成人黄色| 欧美区二区三区| 久久亚洲一区二区| 免费特级黄色片| 日韩在线xxx| 欧美成人免费va影院高清| 久久理论片午夜琪琪电影网| 精品视频免费观看| 日本一区视频在线观看免费| 久久这里有精品视频| 国产v综合v亚洲欧美久久| 国产美女高潮久久白浆| 欧美视频在线观看视频| 亚洲成色www久久网站| 国产精品日日做人人爱| 久久久亚洲网站| 国产一级片黄色| 日本亚洲导航| 亚洲三区四区| 精品乱码一区二区三区| 日韩视频免费大全中文字幕| 91久久久久久久久久久| 国产综合视频在线观看| 日韩区国产区| 无码人妻精品一区二区三区66| 国产精品户外野外| 精品国产一区久久久| 久久免费福利视频| 国产又粗又猛又爽又黄的网站| 日韩一二三区不卡在线视频| 亚洲视频欧美在线| 国产精品电影在线观看| 久久久久一区二区三区| 91久久国产自产拍夜夜嗨 | 国产精品久久久久77777| 久久久久亚洲精品国产| 91九色在线免费视频| 国产伦精品一区二区三区免费视频| 欧美亚洲日本网站| 视频一区视频二区视频| 亚洲午夜高清视频| 欧美激情图片区| 欧美精品在线观看| 久久久国产精品免费| 久久综合久久久久| 99久久99久久| 高清视频在线观看一区| 精品一区二区三区免费毛片| 热re99久久精品国99热蜜月| 痴汉一区二区三区| 亚洲黄色网址在线观看| 亚洲国产精品一区在线观看不卡| 久久国产精品久久久久久久久久 | 精品蜜桃传媒| 国产精品流白浆视频| 久久久久一本一区二区青青蜜月| 久久免费99精品久久久久久| 8090成年在线看片午夜| 成人在线免费观看一区| 国产精品夜间视频香蕉| 国产欧美一区二区视频| 国产一区欧美二区三区| 国产又大又长又粗又黄| 国产日产久久高清欧美一区| 国产中文字幕亚洲| 国产色一区二区三区| 国产一区二区中文字幕免费看| 狠狠色综合色区| 国产专区一区二区| 国产日韩在线亚洲字幕中文| 欧美日韩在线不卡一区| 欧美日韩精品在线一区二区 | 成人av一级片| 99在线观看| 91高清视频免费| 国产高清一区二区三区| 色婷婷综合成人| 国产精品视频播放| 成人97在线观看视频| 中文网丁香综合网| 亚洲一区二区三区欧美| 亚欧洲精品在线视频免费观看| 午夜精品一区二区三区在线视| 天天综合狠狠精品| 亚洲精品成人自拍| 日韩av一级大片| 欧美一级大片在线观看| 精品午夜一区二区三区| 国产亚洲精品网站| av在线不卡一区| 国产成人一区二| 国产精品色悠悠| 不卡av电影在线观看| 一区二区在线观看网站| 色乱码一区二区三在线看| 日韩国产在线一区| 黄色三级中文字幕| 国产精品一区二区你懂得| 久久久无码中文字幕久...| 久久久福利视频| 国产精品免费一区二区| 欧美激情中文字幕在线| 日韩av123| 蜜桃免费区二区三区| www日韩在线观看| 日韩视频在线免费观看| 精品国产乱码久久久久软件| 亚洲va码欧洲m码| 欧美变态另类刺激| 99国产盗摄| 日韩视频精品在线| 亚洲综合av影视| 欧美日韩电影一区二区三区| 波多野结衣综合网| 久久久久久中文| 欧美精品激情在线观看| 青青青青草视频| 国产噜噜噜噜噜久久久久久久久 | 欧美激情综合亚洲一二区| 日韩.欧美.亚洲| 国产视色精品亚洲一区二区| 国产国语刺激对白av不卡| 精品国产一区二区三| 欧洲精品久久| jizzjizz国产精品喷水| 日韩视频中文字幕| 亚洲一区二区在| 国产中文欧美精品| 久久国产一区二区| 欧美激情在线观看视频|