已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計(論文) 第一章 傳統(tǒng)沖模標(biāo)準(zhǔn)件的繪制與采用標(biāo)準(zhǔn)件庫繪制的比較模具是典型的技術(shù)密集型產(chǎn)品,其結(jié)構(gòu)復(fù)雜,設(shè)計、制造難度高,周期長。為了表達(dá)模具結(jié)構(gòu),設(shè)計人員必須花費(fèi)大量時間來繪制模架、頂桿、滑塊等結(jié)構(gòu)相對穩(wěn)定的零部件。據(jù)統(tǒng)計,平均每套模具中有40-60%的零部件為標(biāo)準(zhǔn)件或具有一定的固定結(jié)構(gòu);因此,抽取零部件的標(biāo)準(zhǔn)件結(jié)構(gòu),選定尺寸系列優(yōu)先值,建立標(biāo)準(zhǔn)模架和標(biāo)準(zhǔn)件庫,對于快速繪制模具裝配圖及拆分零件圖,縮短設(shè)計周期具有重要的意義。傳統(tǒng)的實(shí)現(xiàn)手段是在CAD中建立圖塊,這種方法雖然簡單,但是工作量特別大,因?yàn)槊糠N標(biāo)準(zhǔn)件因其參數(shù)的變化又可以畫出很多個零件,如果按傳統(tǒng)方法建圖塊的話,顯然需要很多時間,而且所建圖塊的儲存又要占用很多空間。這與減少計算機(jī)資源浪費(fèi),提高工作效率是矛盾的。因此我們必須尋找一種更好的方法來解決這個問題,即通過參數(shù)化編程,對CAD進(jìn)行二次開發(fā),建立沖模標(biāo)準(zhǔn)件庫。這種方法只需對每種標(biāo)準(zhǔn)件編程,根據(jù)其選擇的不同參數(shù),計算機(jī)會自動生成相應(yīng)的零件圖塊,而且在生成的過程中還可選擇其放大或縮小的系數(shù)與旋轉(zhuǎn)的角度??梢娕c傳統(tǒng)方法比較,確實(shí)可以提高設(shè)計者的工作效率,而且更人性化,更符合當(dāng)前模具設(shè)計的需要。 第2章 冷沖壓模具標(biāo)準(zhǔn)件庫產(chǎn)生的背景、意義及實(shí)現(xiàn)方法沖模標(biāo)準(zhǔn)件庫一般包括國家標(biāo)準(zhǔn)中規(guī)定的標(biāo)準(zhǔn)件和企業(yè)為了設(shè)計、制造方便而自己定義的標(biāo)準(zhǔn)件(也就是所謂的廠標(biāo))。由于冷沖壓的許多突出的優(yōu)點(diǎn),在機(jī)械制造、電子電器等各行各業(yè)中,都得到了廣泛的應(yīng)用,但沖壓加工中所用的模具結(jié)構(gòu)一般比較復(fù)雜,設(shè)計周期長、成本高,單件、小批量生產(chǎn)采用沖壓工藝受到了一定的限制,不能適應(yīng)當(dāng)前社會的需求。另外,在AutoCAD中繪制模具裝配圖是一項(xiàng)繁瑣的工作,由于冷沖壓模具零部件眾多且重復(fù)率較高,故繪圖時存在許多重復(fù)性的工作,像模具的一些標(biāo)準(zhǔn)件,如模柄、模具卸料螺釘?shù)壤L圖非常費(fèi)事。為了提高繪圖效率,開發(fā)冷沖壓模具標(biāo)準(zhǔn)件庫是必要的。同時由于計算機(jī)以運(yùn)算速度快、存儲量大、重復(fù)勞動耐力強(qiáng)、精確度高等方面見長,而人卻以學(xué)習(xí)、分析、判斷、決策等能力為優(yōu),因此在冷沖壓模具標(biāo)準(zhǔn)件庫過程中,人機(jī)特性的互補(bǔ)關(guān)系得到了最好的體現(xiàn),同時也反映“計算機(jī)輔助”這一概念的真正含義所在。人機(jī)特性的良好發(fā)揮,又賦予冷沖壓模具CAD無限的生命力。設(shè)計速度的大幅度提高,使模具設(shè)計與制造的周期縮短;同時使設(shè)計人員從繁重的繪圖工作中解脫出來,有更多的時間和精力從事創(chuàng)新工作。這也恰好滿足了目前用戶提出的“短交貨期” 、“高精度” 、“低成本”的迫切要求?;谝陨线@些,通過采用VBA對AutoCAD2008進(jìn)行二次開發(fā),使用ADO的方法來存取Access2003數(shù)據(jù)庫,實(shí)現(xiàn)零件庫的建立。在繪圖過程中可通過在菜單中點(diǎn)選再在其彈出的面板中輸入主要參數(shù)的方式選用零件,形象直觀,大大簡化設(shè)計繪圖,減少工作量,提高工作效率,從而滿足生產(chǎn)的需要。 第3章 沖壓模具標(biāo)準(zhǔn)件庫的組成與實(shí)現(xiàn)3.1 編程思路在AutoCAD 2008環(huán)境下,實(shí)現(xiàn)參數(shù)化編程,關(guān)鍵是將零件按一定的標(biāo)準(zhǔn)分類(本課題用圖2的分類),再將零件的各個參數(shù)存在特定的數(shù)據(jù)庫中(本課題采用Access 2003),在使用時,通過程序的檢索和排錯,然后在AutoCAD 2008環(huán)境下,按照已給定的參數(shù)將模具標(biāo)準(zhǔn)件按設(shè)計者的要求繪在指定的位置。為了設(shè)計者的使用方便,采用對話框的編輯框來輸入?yún)?shù),同時在對話框中的預(yù)覽框里用wmf格式的圖形顯示設(shè)計者所選用的標(biāo)準(zhǔn)件的形狀,以防設(shè)計者選擇錯誤。其程序框圖如圖1。 圖(1)3.2 菜單的規(guī)劃常用軟件中菜單的結(jié)構(gòu)一般為樹狀結(jié)構(gòu),即目錄下包含有主菜單,主菜單下又包含有子菜單。冷沖壓模具的零部件種類較多,其分類見圖3??筛鶕?jù)圖3的分類設(shè)置主菜單及其子菜單。圖2是已建立完成的菜單的一部分。每一個人的工作習(xí)慣和喜好會有所不同,所以規(guī)劃菜單時應(yīng)將自己認(rèn)為重要和常用的零部件放在前面,也可以將菜單依其功能或某個標(biāo)準(zhǔn)劃分為幾大主菜單,然后在細(xì)分一些子菜單。到此為止,規(guī)劃的菜單僅是一個停留在紙上的藍(lán)圖,尚須制作圖庫、編寫程序,方能實(shí)現(xiàn)其真正的功能。圖(2)3.3 預(yù)覽用標(biāo)準(zhǔn)件圖庫的建立建立專用的文件夾,與規(guī)劃的菜單名稱一一對應(yīng),以便于識別,將搜集整理的零部件圖形資料在AutoCAD中以1:1的比例繪出,并以參數(shù)標(biāo)注,繪制完一個圖形后輸入“ZOOM”命令,然后輸入選項(xiàng)“E”將圖形放大至全屏幕,這樣做的目的是在將來預(yù)覽顯示時圖形清晰并可充滿整個預(yù)覽框,然后在“文件”菜單下選擇“輸出”命令,選擇其保存路徑和其文件名稱,再按要求選擇剛才所畫的圖形,然后按ENTER鍵至該命令結(jié)束。該命令可清理掉一些不必要的外部引用及其關(guān)聯(lián),可大大減少文件所占容量,到此已將文件保存到相應(yīng)的文件夾中,其所取的文件名應(yīng)易于互相區(qū)分,能夠體現(xiàn)出其含義。 圖(3)3.4 建立Access零件數(shù)據(jù)庫在Access2003中建立每種標(biāo)準(zhǔn)件的參數(shù)表及其屬性表,并保存在相應(yīng)的文件夾下面。屬性表字段有型號、名稱、材質(zhì)、公差、熱處理、產(chǎn)品等級及技術(shù)條件等,其中“GB/JB”作為檢索主鍵。如圖4。 圖(4)3.5 編寫程序并連接數(shù)據(jù)庫3.5.1 VBA概論由于本課題采用VBA編程,故對VBA作一簡介如下:所謂VBA就是Visual Basic for Application的簡稱。由于它是一個引入了對象的程序設(shè)計環(huán)境,為用戶提供類似Visual Basic(VB)語言所擁有的功能,所以后續(xù)潛力無窮。一般說來,VBA和VB的主要差異類似AutoLISP與LISP間的差異,就是:VBA可以執(zhí)行并存取AutoCAD環(huán)境的所有資源。此外,VBA可以整合其他具有VBA能力的應(yīng)用程序。這使的AutoCAD可以成為其他應(yīng)用程序(如Word或Excel)的Automation控制器。從運(yùn)作上來看,VBA通過AutoCAD ActiveX Automation接口將信息傳送給AutoCAD。而AutoCAD VBA也允許VBA環(huán)境與AutoCAD同時執(zhí)行并通過ActiveX Automation接口提供AutoCAD的程序。如此,AutoCAD、ActiveX Automation與VBA的結(jié)合方式,提供了功能極強(qiáng)大的接口,不僅可以操作AutoCAD的內(nèi)部對象件,更可以在其他的應(yīng)用程序之間傳送或接收數(shù)據(jù)。3.5.2 用VBA編程并連接數(shù)據(jù)庫由于本課題采用的是Access建的數(shù)據(jù)庫,故ODBC的設(shè)定為:driver=Microsoft Access Driver(*.mdb)dbp=Full Database Path本課題將使用ADO的方法來存取數(shù)據(jù)庫,Microsoft ActiveX DataObjects(ADO)能夠編寫出可通過OLE DB對在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)進(jìn)行存取和操作的應(yīng)用程序。其主要優(yōu)點(diǎn)是:易于使用、高速、低內(nèi)存支出與占用磁盤空間較少。ADO支持適用于客戶端/服務(wù)器端與Web端等應(yīng)用程序的主要功能。ADO是一個對象模型,它結(jié)合了OLE DB易于使用的的特性以及在諸如RemoteData Objects(RDO)和Data Access Objects(DAO)的模型中容易找到的通用特性。更重要的是:ADO包含了所有可以被OLE DB標(biāo)準(zhǔn)接口描述的數(shù)據(jù)類型。換句話說,ADO對象模型具有可擴(kuò)展性,它不需要對自己的組件做任何工作,只要通過一般的ADO程序設(shè)計接口,就可以可視化地處理所有的事,即使那些記錄信息的格式是從來沒有見過的。另外,ADO在實(shí)際運(yùn)行中也得到了很高的評價,如內(nèi)存覆蓋、線程安全、分散式事務(wù)支持,還可以執(zhí)行Web的遠(yuǎn)程數(shù)據(jù)存?。ɡ鏏DO同時具有遠(yuǎn)程數(shù)據(jù)服務(wù)(RDS)功能,通過RDS,可以在一次往返過程中執(zhí)行將數(shù)據(jù)從服務(wù)器移動到用戶端應(yīng)用程序或Web網(wǎng)頁,在客戶端對數(shù)據(jù)進(jìn)行處理然后將更新結(jié)果返回服務(wù)器的操作)。作為Microsoft UDA策略的一部分,ADO還試圖成為跨平臺數(shù)據(jù)存取的標(biāo)準(zhǔn)模型。同時ADO也集中了RDO和DAO所有最好的特性,并將它們重新組織在一個同樣可以提供對事件充分支持,但略微有點(diǎn)不同的對象模型中。編程將主要分四個模塊,分別是main模塊、block模塊、insert模塊和create模塊。其中main模塊的主要功能是連接或釋放數(shù)據(jù)庫,調(diào)用和關(guān)閉相關(guān)窗體以及調(diào)用其他模塊等。block模塊的主要功能是定義主視圖塊和側(cè)視圖塊。insert模塊的主要功能是插入所畫的標(biāo)準(zhǔn)件視圖圖塊。create模塊的功能是標(biāo)準(zhǔn)件的繪制程序。窗體主要有兩個,第一個窗體是讓用戶選擇標(biāo)準(zhǔn)件類型并伴隨著相關(guān)標(biāo)準(zhǔn)件的圖形預(yù)覽。第二個窗體是提示用戶輸入所選標(biāo)準(zhǔn)件的型號、名稱、材質(zhì)、公差、熱處理、產(chǎn)品等級及技術(shù)條件等屬性,輸入主要可變參數(shù)及選擇所需視圖,同時也伴隨著圖形預(yù)覽。當(dāng)所輸入的不是數(shù)字或者輸入的數(shù)字不在允許的范圍內(nèi)時,第二個窗體會彈出警告提示。兩個主要窗體如圖5。3.6 編寫菜單程序3.6.1 AutoCAD菜單的運(yùn)作 AutoCAD系統(tǒng)的基礎(chǔ)菜單文件放在AutoCAD安裝目錄下的SUPPORT子目錄中,共有五個文件。無論是AutoCAD系統(tǒng)的基礎(chǔ)菜單,還是附加(局部)菜單或是用戶自已定制的菜單,都是由.mnu/.mnc/.mns/.mnr/.mnl這五個文件組成。這五個文件組成了一個菜單的整體,但也并不是每一個菜單都包括全部的這五個文件。五個文件在菜單中起著各自的作用,但其作用是有主次之分的,其生成過程有也主從之分。要使用好菜單,必須明白這五個文件相互之間的關(guān)系和在菜單的調(diào)用過程中各自所起的作用。.mnu是模板菜單文件,除了.mnl文件外,其余三個文件最初都源出自于它。AutoCAD調(diào)用時自動對它進(jìn)行編譯,產(chǎn)生對應(yīng)的.mnc和.mnr文件以及.mns文件。.mnc是.mnu文件編譯后的版本,實(shí)際上.mnc文件是AutoCAD真正直接執(zhí)行的菜單文件。.mnr也是在.mnu文件編譯時產(chǎn)生,它存放著菜單所使用的位圖之類的菜單資源。最初的.mns文件也是.mnu文件被編譯時由AutoCAD自動產(chǎn)生的,它的基本內(nèi)容和.mnu文件類似,只是少了有關(guān)的說明和注釋行。在.mnu文件被編譯時,.mns文件和.mnc文件的菜單內(nèi)容是一致的,但如果在AutoCAD的操作中,用戶對菜單的作了更改,這些改動都記錄在.mns文件中,所以.mns文件對應(yīng)的是AutoCAD系統(tǒng)中當(dāng)前菜單的內(nèi)容。.mnl文件在內(nèi)容上相對獨(dú)立一些,它包含由菜單所使用的AutoLISP表達(dá)式,如各種命令簡化指令的定義,還有層排序、指定層這樣的LISP程序。當(dāng)加載一個菜單文件時,如果系統(tǒng)中存在與菜單文件同名的.mnl文件,則這個.mnl文件也會被加載。3.6.2 冷沖模標(biāo)準(zhǔn)件庫菜單的制作要實(shí)現(xiàn)模具零部件菜單的建立,必須在AutoCAD的菜單文件ACAD.MNU中加入一些程序,ACAD.MNU文件包含了AutoCAD菜單的全部功能選項(xiàng),所謂中文的AutoCAD也就是將該文件中的一些菜單名改為中文而已。該文件位于AutoCAD文件夾的SUPPORT目錄下,在記事本中打開該文件,將該文件中的POP11HELP(POP后的數(shù)字表示下拉菜單的序號)菜單改為POP12HELP,然后在POP10WINDOW與POP12HELP之間插入自己的POP11,在其下輸入程序即可實(shí)現(xiàn)編制菜單的目的。以下以導(dǎo)柱為例說明:ID_Guide_pillars 導(dǎo)柱(&Z) CC_(commandvbaloadGUIDE_PILLARS);(command-vbarunguide_pillarsType);這個語法的意思就是說:先使用VBALOAD指令來加載這個VBA程序,最后再使用-VBARUN指令(即執(zhí)行VBARUN指令的行功能)來執(zhí)行這個VBA程序。其中,GUIDE_PILLAR為VBA程序文件名稱;而guide_pillarsType則為可激發(fā)該程序的模塊名稱。 圖(5)3.7 菜單的加載及調(diào)試3.7.1 何時用menu,何時用menuload加載菜單? AutoCAD加載菜單有兩個命令:menu和menuload。何時使用menu,何時使用nenuload?首先必須明白AutoCAD菜單是有等級之分的,分為基礎(chǔ)菜單和局部(或稱附加)菜單。 顧名思義,基礎(chǔ)菜單是AutoCAD使用是菜單的基礎(chǔ),在AutoCAD中同時只能使用一個菜單文件作為基礎(chǔ)菜單,acad.mnu是安裝時缺省的基礎(chǔ)菜單。menu命令專用于更換或重新加載一個基礎(chǔ)菜單,AutoCAD啟動時缺省的基礎(chǔ)菜單是上一次通過menu命令調(diào)入的菜單。 局部菜單和基礎(chǔ)菜單在文件體系上沒有區(qū)別。在基礎(chǔ)菜單之上,可以在下拉菜單中附加上額外的菜單項(xiàng),這種可附加的菜單就可稱作為局部菜單。局部菜單使用menuload命令加載。Menuload命令從下拉菜單中也可以調(diào)用,方法是:“Tools menu(工具)”“Customize Menus(定制菜單)”。用menuload可以同時加載多個菜單文件。 對于現(xiàn)有的下拉菜單項(xiàng),都可以在進(jìn)入“Menu Customization(菜單定制)”界面后,選“Menu Bar(菜單條)”來進(jìn)行“Remove(移除)”或“Insert(插入)”。 Menuload加載的局部菜單可以用menuunload命令將其卸載。而用menu命令加載的基礎(chǔ)菜單只能由下一個menu命令加載來替換。 3.7.2 如何使對于菜單的改動得以固定和保存?AutoCAD加載菜單缺省的過程是這樣的:菜單命令發(fā)出后,AutoCAD首先加載指定菜單名的.mnc文件;如果.mnc不存在,則尋找同名的.mns文件,將其編譯成.mnc文件并完成加載;如果同名的.mnc和.mns文件都不存在,則尋找.mnu文件并完成編譯和加載。根據(jù)菜單加載的過程可以采取如下措施: 1.如果對菜單模板文件.mnu進(jìn)行了修改,并要讓改動起作用,就必須在啟動AutoCAD系統(tǒng)前將.mns和.mnc文件刪除,或是重新加載.mnu模板菜單文件。加載.mnu文件應(yīng)注意的是:在調(diào)入菜單的對話框中將文件類型改為“Menu template(*.mnu)”而不是缺省的“Menu files(*.mnc;*.mns)”,這樣才能選擇.mnu文件。 2.如果在AutoCAD中,用AutoCAD的功能對菜單進(jìn)行了修改,這些變化自動記錄在.mns文件中,為了使修改得以固定,在刪除.mns文件之前,應(yīng)將修改的內(nèi)容移到.mnu文件的相應(yīng)部位中,并將.mnu文件備份下來。如果這些改動是在基礎(chǔ)菜單acad.mnu中,則應(yīng)在AutoCAD重新安裝后,用改動過的acad.mnu去覆蓋AutoCAD原始的acad.mnu,并刪除掉已存在的acad.mnc和acad.mns文件。 3.如果在AutoCAD啟動后對菜單進(jìn)行了修改,想要取消這些修改,恢復(fù)啟動前的菜單狀態(tài),可以用menu命令,調(diào)入acad.mnu菜單模板文件3.7.3 新菜單的調(diào)試運(yùn)行在AutoCAD狀態(tài)下輸入命令MENU,可為AutoCAD裝入剛完成的菜單文件,完成后即可見到如上面的模具零件庫菜單項(xiàng),點(diǎn)選其下的選項(xiàng)即可選用所需的零部件。第4章 實(shí)例源程序說明以導(dǎo)柱各模塊和窗體源程序?yàn)槔f明冷沖壓模具標(biāo)準(zhǔn)件庫的程序編制過程4.1 main模塊源程序Public conn As New ADODB.Connection 定義新連接Public cmd As New ADODB.Command 定義指令Public rs As New ADODB.Recordset, rs2 As New ADODB.Recordset 定義兩個記錄集Public gb As String gb變量來儲存型號Public exitf1, exitf2 As Boolean 用來判斷是否要退出程序用來判斷是否要主視圖還是側(cè)視圖Public mainview As Boolean, sideview As Boolean 定義主視圖塊和側(cè)視圖塊Public mainblock As AcadBlock, sideblock As AcadBlock定義主視圖塊名稱和側(cè)視圖塊名稱Public mainblockname As String, sideblockname As String Public blength As Double 將導(dǎo)柱長度存與blength變量中Public mn As String 儲存類似“M?”的導(dǎo)柱類型Public Sub guide_pillarsType() 設(shè)定導(dǎo)柱的Access數(shù)據(jù)庫類型及文件路徑 driver = Microsoft Access Driver (*.mdb) dbq = d:/畢業(yè)設(shè)計/導(dǎo)向零件/導(dǎo)柱/guide_pillars.mdb 連接至數(shù)據(jù)庫 conn.Open driver= & driver & ;dbq= & dbq 設(shè)定SQL指令 Set cmd.ActiveConnection = conn cmd.CommandText = SELECT * from type operate in table type 經(jīng)過已定義的SQL來獲取記錄組(列表) rs.CursorLocation = adUseClient rs.Open cmd, , adOpenStatic, adLockBatchOptimistic 調(diào)用選擇型號窗體 UserForm1.Show If exitf1 Then 如果單擊“取消”按鈕就跳出程序 rs.Close 關(guān)閉記錄組以放釋內(nèi)存 conn.Close Exit Sub End If 調(diào)用選擇詳細(xì)規(guī)格窗體 UserForm2.Show If exitf2 Then 如果單擊“取消”按鈕就跳出程序 rs.Close 關(guān)閉記錄組以放釋內(nèi)存 conn.Close Exit Sub End If 根據(jù)選擇來建立導(dǎo)柱圖塊 Block.DefineBlock rs.Close 關(guān)閉數(shù)據(jù)庫的記錄組和連接 conn.Close ThisDrawing.Regen acActiveViewport 重新產(chǎn)生圖形End Sub4.2 insert模塊源程序Public Sub Insert() 將圖塊插入到模型空間中 Dim blkRefObj As AcadBlockReference Dim insertPt As Variant Dim xscale As Double, yscale As Double Dim rotangle As Double Const pi = 3.1415926536 If mainview = True Then insertPt = ThisDrawing.Utility.GetPoint(, 主視圖的插入點(diǎn):) 預(yù)設(shè)X與Y方向的縮放比例系數(shù)與旋轉(zhuǎn)角度 xscale = 1: yscale = 1: rotangle = 0 On Error Resume Next 如果發(fā)生錯誤就使用默認(rèn)值 xscale = ThisDrawing.Utility.GetReal(X 軸縮放比例系數(shù):) yscale = ThisDrawing.Utility.GetReal(Y 軸縮放比例系數(shù):) rotangle = ThisDrawing.Utility.GetReal(旋轉(zhuǎn)角度:) / 180 * pi Set blkRefObj = ThisDrawing.ModelSpace.InsertBlock(insertPt, mainblockname, xscale, yscale, 1#, rotangle) End If If sideview = True Then insertPt = ThisDrawing.Utility.GetPoint(, 側(cè)視圖的插入點(diǎn):) xscale = 1: yscale = 1: rotangle = 0 On Error Resume Next xscale = ThisDrawing.Utility.GetReal(X 軸縮放比例系數(shù):) yscale = ThisDrawing.Utility.GetReal(Y 軸縮放比例系數(shù):) rotangle = ThisDrawing.Utility.GetReal(旋轉(zhuǎn)角度:) / 180 * pi Set blkRefObj = ThisDrawing.ModelSpace.InsertBlock(insertPt, sideblockname, xscale, yscale, 1#, rotangle)End IfEnd Sub4.3 block模塊源程序Public Sub DefineBlock() 定義導(dǎo)柱圖塊 Dim insertPt(0 To 2) As Double If mainview = True Then 定義主視圖圖塊名稱 mainblockname = bbm & rs(0) & mn End If If sideview = True Then 定義側(cè)視圖圖塊名稱 sideblockname = bbs & rs(0) & mn End If insertPt(0) = 0: insertPt(1) = 0: insertPt(2) = 0 建立導(dǎo)柱圖塊 If (mainblockname ) Then Set mainblock = ThisDrawing.Blocks.Add(insertPt, mainblockname) End If If (sideblockname ) Then Set sideblock = ThisDrawing.Blocks.Add(insertPt, sideblockname) End If Select Case rs(0) 建立因選擇不同的導(dǎo)柱而執(zhí)行不同的導(dǎo)柱圖塊畫出 Case JB76451 CreateGuide_pillars.JB76451 Case JB76452 CreateGuide_pillars.JB76452 End SelectEnd Sub4.4 create 模塊源程序Public Sub JB76451() Dim util As Object Set util = ThisDrawing.Utility 定義一個utility來建立點(diǎn) Dim mblockf, sblockf As Boolean 定義一個flag來判別圖塊是否存在 mblockf = False sblockf = False 如果圖塊名稱存在就跳過建立圖塊的程序 Dim iblock As Integer iblock = ThisDrawing.Blocks.Count Do While (iblock 0) If ThisDrawing.Blocks.Item(iblock - 1).name = bbmjb76451 & mn Then blockf = True End If If ThisDrawing.Blocks.Item(iblock - 1).name = bbsjb76451 & mn Then blockf = True End If iblock = iblock - 1 Loop 定義導(dǎo)柱的設(shè)計參數(shù)Dim d, d1, d2, l1, r, L As DoubleL = blength get other parameters from database, some need simple change d = rs2(d) d1 = rs2(d1) d2 = rs2(d2) l1 = rs2(l1) r = rs2(r) 畫出主視圖的導(dǎo)柱圖塊 If (mainview = True) And (mblockf = False) Then 定義一些必要的點(diǎn)變體 Dim bp, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15 As Variant 定義畫圖所需的線對象 Dim ln1, ln2, ln3, ln4, ln5, ln6, ln7, ln8, ln9 As AcadLine 定義畫圖所需的弧對象 Dim a1 As AcadArc 定義一些畫弧所需臨時變體 Dim arc1_angs, arc1_ange As Double 定義一些畫點(diǎn)所需臨時變體 Dim bpx, bpy, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, p5x, p5y, p6x, p6y As Double Dim p7x, p7y, p8x, p8y, p9x, p9y, p10x, p10y, p11x, p11y, p12x, p12y, p13x, p13y, p14x, p14y, p15x, p15y As Double 計算需要的坐標(biāo)點(diǎn) bpx = 0#: bpy = 0# p1x = bpx: p1y = bpy + d2 / 2 p2x = bpx + 5: p2y = p1y p3x = p2x: p3y = d / 2 - 0.5 p4x = p3x + 2: p4y = p3y p5x = p4x: p5y = d / 2 p6x = bpx + L - r: p6y = p5y p7x = p6x: p7y = p6y - r p8x = p7x + r: p8y = p7y p9x = p8x: p9y = bpy p10x = bpx + 7: p10y = bpy p11x = bpx + 5: p11y = bpy p12x = bpx + l1: p12y = p5y p13x = p12x: p13y = bpy p14x = bpx - 2: p14y = bpy p15x = p9x + 2: p15y = bpy 建立點(diǎn) util.CreateTypedArray bp, vbDouble, bpx, bpy, 0 util.CreateTypedArray p1, vbDouble, p1x, p1y, 0 util.CreateTypedArray p2, vbDouble, p2x, p2y, 0 util.CreateTypedArray p3, vbDouble, p3x, p3y, 0 util.CreateTypedArray p4, vbDouble, p4x, p4y, 0 util.CreateTypedArray p5, vbDouble, p5x, p5y, 0 util.CreateTypedArray p6, vbDouble, p6x, p6y, 0 util.CreateTypedArray p7, vbDouble, p7x, p7y, 0 util.CreateTypedArray p8, vbDouble, p8x, p8y, 0 util.CreateTypedArray p9, vbDouble, p9x, p9y, 0 util.CreateTypedArray p10, vbDouble, p10x, p10y, 0 util.CreateTypedArray p11, vbDouble, p11x, p11y, 0 util.CreateTypedArray p12, vbDouble, p12x, p12y, 0 util.CreateTypedArray p13, vbDouble, p13x, p13y, 0 util.CreateTypedArray p14, vbDouble, p14x, p14y, 0 util.CreateTypedArray p15, vbDouble, p15x, p15y, 0 畫出導(dǎo)柱中的線段 Set ln1 = mainblock.AddLine(bp, p1) Set ln2 = mainblock.AddLine(p1, p2) Set ln3 = mainblock.AddLine(p2, p11) Set ln4 = mainblock.AddLine(p3, p4) Set ln5 = mainblock.AddLine(p5, p10) Set ln6 = mainblock.AddLine(p12, p13) Set ln7 = mainblock.AddLine(p5, p6) Set ln8 = mainblock.AddLine(p8, p9) arc1_angs = ThisDrawing.Utility.AngleFromXAxis(p7, p8) 計算弧的起始角 arc1_ange = ThisDrawing.Utility.AngleFromXAxis(p7, p6) 計算弧的終止角 Set a1 = mainblock.AddArc(p7, r, arc1_angs, arc1_ange) 畫出弧 鏡像半個導(dǎo)柱 Dim acadent As AcadEntity 定義一個圖素 For Each acadent In mainblock 逐一鏡像導(dǎo)柱的每一個像素 acadent.Mirror bp, p9 Next acadent Set ln9 = mainblock.AddLine(p14, p15) 畫出一條中心線 ln9.Color = acMagenta 改變中心線的顏色End If 畫出導(dǎo)柱的側(cè)視圖塊 If (sideview = True) And (sblockf = False) Then Dim center, pt1, pt2, pt3, pt4 As Variant 定義需要的點(diǎn) Dim line1, line2 As AcadLine 定義兩條線 Dim circ1 As AcadCircle 定義一圓 定義一些變體來建立點(diǎn) Dim centerx, centery, pt1x, pt1y, pt2x, pt2y, pt3x, pt3y, pt4x, pt4y As Double 計算出所需的坐標(biāo)點(diǎn) centerx = 0#: centery = 0# pt1x = centerx - d2 / 2 - 2: pt1y = centery pt2x = centerx + d2 / 2 + 2: pt2y = centery pt3x = centerx: pt3y = centery + d2 / 2 + 2 pt4x = centerx: pt4y = centery - d2 / 2 - 2 建立點(diǎn) util.CreateTypedArray center, vbDouble, centerx, centery, 0 util.CreateTypedArray pt1, vbDouble, pt1x, pt1y, 0 util.CreateTypedArray pt2, vbDouble, pt2x, pt2y, 0 util.CreateTypedArray pt3, vbDouble, pt3x, pt3y, 0 util.CreateTypedArray pt4, vbDouble, pt4x, pt4y, 0 畫出一些線,并設(shè)定其中之一的顏色為magenta Set line1 = sideblock.AddLine(pt1, pt2) Set line2 = sideblock.AddLine(pt3, pt4) line1.Color = acMagenta line2.Color = acMagenta 畫出圓 Set circ1 = sideblock.AddCircle(center, d2 / 2) End If 產(chǎn)生圖形 ThisDrawing.Regen acActiveViewport InsertGuide_pillars.Insert 插入導(dǎo)柱圖塊 End SubPublic Sub JB76452() Dim util As Object Set util = ThisDrawing.Utility Dim mblockf, sblockf As Boolean mblockf = False sblockf = False Dim iblock As Integer iblock = ThisDrawing.Blocks.Count Do While (iblock 0) If ThisDrawing.Blocks.Item(iblock - 1).name = bbmjb76452 & mn Then blockf = True End If If ThisDrawing.Blocks.Item(iblock - 1).name = bbsjb76452 & mn Then blockf = True End If iblock = iblock - 1 Loop Dim d, d1, d2, l1, r, L As Double L = blength get other parameters from database, some need simple change d = rs2(d) d1 = rs2(d1) d2 = rs2(d2) l1 = rs2(l1) r = rs2(r) If (mainview = True) And (mblockf = False) Then Dim bp, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, cenPt1, cenPt2 As Variant Dim ln1, ln2, ln3, ln4, ln5, ln6, ln7, ln8, ln9, ln10 As AcadLine Dim a1, a2, a3 As AcadArc Dim arc1_angs, arc1_ange, arc2_angs, arc2_ange, arc3_angs, arc3_ange As Double Dim bpx, bpy, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, p5x, p5y, p6x, p6y, p7x, p7y, p8x, p8y, p9x, p9y As Double Dim p10x, p10y, p11x, p11y, p12
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年外匯交易居間服務(wù)合同
- 2025年季度活動的混合贈與協(xié)議
- 基于2025年度業(yè)績預(yù)期的租賃合同標(biāo)的修訂2篇
- 二零二五版存貨擔(dān)保協(xié)議書范本3篇
- 二零二五版貨運(yùn)物流車輛掛靠及新能源推廣合同3篇
- 二零二五賓館客房使用權(quán)及股權(quán)收益權(quán)轉(zhuǎn)讓合同3篇
- 2025年雙磨頭側(cè)角刃磨床行業(yè)深度研究分析報告
- 2025殘疾人無障礙信息服務(wù)平臺建設(shè)與運(yùn)營合同3篇
- 2025年風(fēng)力發(fā)電施工作業(yè)擔(dān)保人信用保證協(xié)議3篇
- 二零二五年度二手房出售協(xié)議書模板含房產(chǎn)交易稅費(fèi)計算器3篇
- GB/T 16895.3-2024低壓電氣裝置第5-54部分:電氣設(shè)備的選擇和安裝接地配置和保護(hù)導(dǎo)體
- GJB9001C質(zhì)量管理體系要求-培訓(xùn)專題培訓(xùn)課件
- 二手車車主寄售協(xié)議書范文范本
- 窗簾采購?fù)稑?biāo)方案(技術(shù)方案)
- 基于學(xué)習(xí)任務(wù)群的小學(xué)語文單元整體教學(xué)設(shè)計策略的探究
- 人教版高中物理必修一同步課時作業(yè)(全冊)
- 食堂油鍋起火演練方案及流程
- 《呼吸衰竭的治療》
- 2024年度醫(yī)患溝通課件
- 2024年中考政治總復(fù)習(xí)初中道德與法治知識點(diǎn)總結(jié)(重點(diǎn)標(biāo)記版)
- 2024年手術(shù)室的應(yīng)急預(yù)案
評論
0/150
提交評論