我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAD新聞

選擇AutoLISP還是VBA

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

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

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


我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

            久久久久久久一区| 日韩欧美一级二级| 播五月开心婷婷综合| 99国产精品久| 2020国产精品自拍| 亚洲成人777| 国产不卡在线视频| 在线不卡中文字幕| 亚洲免费伊人电影| 成人午夜电影网站| 欧美精品一区视频| 日韩成人免费看| 色欧美日韩亚洲| 日本一区二区三区久久久久久久久不| 日欧美一区二区| 91成人免费网站| 亚洲欧美在线视频观看| 国产成人免费视频精品含羞草妖精| 欧美性大战久久久久久久蜜臀| 欧美激情在线观看视频免费| 国产伦精品一区二区三区免费| 99久久精品情趣| 欧美韩日一区二区三区四区| 国产综合色产在线精品| 日韩一级成人av| 香港成人在线视频| 91国偷自产一区二区三区成为亚洲经典 | 欧美电视剧免费全集观看| 亚洲综合精品自拍| 色综合久久99| 亚洲欧美日韩一区二区 | 成人免费视频免费观看| 亚洲精品在线三区| 久久99国产精品久久99果冻传媒| 在线观看日韩一区| 艳妇臀荡乳欲伦亚洲一区| 波多野结衣中文字幕一区二区三区| 国产三级欧美三级日产三级99| 久久不见久久见中文字幕免费| 日韩1区2区3区| 欧美视频在线不卡| 午夜精品福利一区二区蜜股av| 欧美午夜精品一区二区蜜桃 | 亚洲欧洲在线观看av| 国产东北露脸精品视频| 久久这里只有精品首页| 国产制服丝袜一区| 久久久久高清精品| 国产成人精品免费视频网站| 国产嫩草影院久久久久| 成人精品在线视频观看| 99re6这里只有精品视频在线观看| 久久久噜噜噜久久中文字幕色伊伊| 精品一区二区三区蜜桃| 精品免费视频一区二区| 国内成人精品2018免费看| 久久综合给合久久狠狠狠97色69| 国产一级精品在线| 国产精品欧美经典| 色94色欧美sute亚洲13| 亚洲综合区在线| 777午夜精品视频在线播放| 日本伊人精品一区二区三区观看方式| 91精品国产综合久久香蕉的特点| 蜜桃av噜噜一区| 国产欧美日韩亚州综合 | 国产成人av福利| 亚洲桃色在线一区| 欧美精三区欧美精三区| 精品一区二区成人精品| 国产精品卡一卡二| 91亚洲精华国产精华精华液| 欧美成人福利视频| 国产成人午夜视频| 国产精品福利一区| 欧美剧在线免费观看网站 | 欧美电影精品一区二区| 成人黄色综合网站| 婷婷成人激情在线网| 久久亚洲影视婷婷| 色菇凉天天综合网| 日本成人在线看| 国产精品女上位| 欧美精品自拍偷拍动漫精品| 国产成人免费高清| 午夜久久久影院| 日本一区二区三区久久久久久久久不 | 日韩成人一级片| 国产精品嫩草影院av蜜臀| 欧美日韩国产欧美日美国产精品| 韩国精品久久久| 一区二区视频免费在线观看| 久久综合色一综合色88| 欧美吞精做爰啪啪高潮| 国产成人精品亚洲日本在线桃色| 亚洲成人福利片| 国产精品成人免费| 精品国产乱子伦一区| 欧美三级日韩三级| 夫妻av一区二区| 五月综合激情日本mⅴ| 中文字幕永久在线不卡| 久久综合九色综合欧美亚洲| 欧美巨大另类极品videosbest | 成人国产精品免费观看视频| 日本aⅴ免费视频一区二区三区| 亚洲欧洲日本在线| 精品国产成人系列| 91精品国产综合久久福利 | 最新日韩av在线| 欧美视频在线一区| 免费在线观看一区| 亚洲成人在线免费| 一区二区三区在线影院| 国产精品国产三级国产有无不卡| 日韩精品在线一区二区| 欧美一区二区在线免费观看| 欧美在线小视频| 91蜜桃视频在线| 91香蕉视频污| 成人av在线影院| 国产露脸91国语对白| 精品中文字幕一区二区| 日韩成人一区二区| 日本欧美加勒比视频| 丝瓜av网站精品一区二区| 亚洲一区二区影院| 亚洲国产成人高清精品| 亚洲蜜臀av乱码久久精品蜜桃| 一区精品在线播放| 亚洲欧洲av色图| 国产精品久久久久一区| 国产精品色哟哟| 国产精品不卡一区二区三区| 中文字幕av免费专区久久| 欧美国产日韩在线观看| 国产精品色哟哟| 日韩美女啊v在线免费观看| 最新成人av在线| 一区二区三区在线免费播放| 亚洲自拍偷拍麻豆| 丝袜美腿亚洲色图| 久久99久久精品| 国产精品系列在线观看| 懂色av中文一区二区三区| 成人aaaa免费全部观看| 色综合久久综合网97色综合 | 亚洲人成网站在线| 亚洲福利视频一区| 免费精品视频在线| 久久精品99国产精品日本| 国产一区美女在线| 99国产精品视频免费观看| 色婷婷激情综合| 91精品国产综合久久香蕉的特点| 日韩午夜小视频| 久久精品一区蜜桃臀影院| 中文字幕在线一区| 亚洲18影院在线观看| 精品亚洲欧美一区| 99久久综合狠狠综合久久| 欧美艳星brazzers| 精品国产麻豆免费人成网站| 国产精品国产三级国产三级人妇| 一区二区成人在线观看| 久久精品国产在热久久| 成人亚洲精品久久久久软件| 欧美在线一区二区三区| ww久久中文字幕| 亚洲精品五月天| 免费观看久久久4p| av在线不卡观看免费观看| 欧美日韩一级黄| 国产日产精品一区| 五月天丁香久久| 国产揄拍国内精品对白| 在线中文字幕一区| 久久免费看少妇高潮| 亚洲一级片在线观看| 国产一区二区免费看| 欧美亚洲禁片免费| 国产欧美日韩综合| 奇米影视一区二区三区小说| 成年人午夜久久久| 日韩无一区二区| 亚洲国产综合视频在线观看| 国产高清久久久| 欧美男人的天堂一二区| 国产精品久久久久久久久免费丝袜 | 精品国产3级a| 香蕉加勒比综合久久| 成人av午夜电影| 欧美成人伊人久久综合网| 一区二区在线观看不卡| 粉嫩av一区二区三区| 日韩三级中文字幕| 亚洲一区二区三区四区中文字幕| 大胆欧美人体老妇| 久久一留热品黄| 免费高清在线视频一区·|