1247-蓋套類零件知識(shí)庫(kù)及工藝
1247-蓋套類零件知識(shí)庫(kù)及工藝,蓋套類,零件,知識(shí)庫(kù),工藝
一、設(shè)計(jì)(論文)內(nèi)容根據(jù)企業(yè)的工藝現(xiàn)狀,對(duì)減速器等產(chǎn)品中的蓋套類零件進(jìn)行工藝分析,并規(guī)范化,標(biāo)準(zhǔn)化,建立知識(shí)框架模型,確定工知識(shí)結(jié)構(gòu),根據(jù)所確定的工藝知識(shí)結(jié)構(gòu)錄入工藝知識(shí),并建庫(kù)保存。建立工藝模板時(shí),首先調(diào)用工藝模板編制模塊,根據(jù)工藝設(shè)計(jì)規(guī)則,編制典型零件的工藝規(guī)程,并以此作為工藝規(guī)程模板。二、設(shè)計(jì)(論文)依據(jù)1、輸送機(jī)工作軸上扭矩 850N·M,輸送機(jī)工作軸轉(zhuǎn)速為 80rpm。2、運(yùn)輸機(jī)連續(xù)工作,單向轉(zhuǎn)動(dòng),載荷變化不大,空載起動(dòng),減速器小批生產(chǎn),使用年限 10 年,大修期 3 年,兩班制工作,運(yùn)輸帶容許速度誤差為 5%。3、工藝決策規(guī)則的制定限制的條件為零件的總體信息,型面的特征信息,工藝常規(guī)邏輯,企業(yè)的工藝習(xí)慣等。三、技術(shù)要求1. 對(duì)蓋套類零件的工藝術(shù)語(yǔ)、工藝知識(shí)、工藝參數(shù)等進(jìn)行規(guī)范化,標(biāo)準(zhǔn)化。2、建立人機(jī)友好的工作界面,便于用戶對(duì)工藝知識(shí)的獲取、管理與維護(hù)。3、采用 Pro/E 對(duì)零件進(jìn)行三維造型。4、數(shù)據(jù)庫(kù)采用 SQL Server2000,開(kāi)發(fā)工具采用 Delphi6.0/7.0。.四.畢業(yè)設(shè)計(jì)(論文)物化成果的具體內(nèi)容及要求(具體內(nèi)容參照機(jī)械工程系畢業(yè)設(shè)計(jì)大綱及實(shí)施細(xì)則的有關(guān)要求填寫(xiě))圖紙內(nèi)容及張數(shù)減速器裝配圖 1 張(A0)零件圖 10~14 張(A3~A4)-實(shí)物內(nèi)容及要求完成滿足該系統(tǒng)要求的原型系統(tǒng)其他:1、完成設(shè)計(jì)說(shuō)明書(shū) 1 份(字?jǐn)?shù)在 2 萬(wàn)字以上) 2、軟件測(cè)試分析報(bào)告各一份。3、零件三維造型 3~5 個(gè)。4、源程序代碼 1 份。5、典型零件工藝模板 1 套。五. 畢業(yè)設(shè)計(jì)(論文)進(jìn)度計(jì)劃起訖日期 工作內(nèi)容 備 注3.31——4.13 畢業(yè)實(shí)習(xí),收集資料。4.14——4.27 資料整理,擬訂設(shè)計(jì)方案。4.28——5.31 設(shè)計(jì)傳動(dòng)系統(tǒng),建立數(shù)據(jù)庫(kù)與工藝模板,系統(tǒng)測(cè)試。6.1——6.15 編寫(xiě)設(shè)計(jì)計(jì)算說(shuō)明書(shū)。6.16——6.22 畢業(yè)設(shè)計(jì)資料審閱,修改。6.23——6.27 分小組答辯。六. 主要參考文獻(xiàn):1、王先逵.機(jī)械制造工藝學(xué).北京:機(jī)械工業(yè)出版社,1995.2、趙汝嘉.計(jì)算機(jī)輔助工藝設(shè)計(jì)(CAPP) .北京:機(jī)械工業(yè)出版社,1995.3、三味工作屋.SQL Server7.0 管理指南.北京:中國(guó)水利水電出版社,1999.4、戴曙.金屬切削機(jī)床.北京:機(jī)械工業(yè)出版社,1999.5、朱寶庫(kù).機(jī)械設(shè)計(jì).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1994.6、周開(kāi)勤.機(jī)械零件手冊(cè).北京:高等教育出版社,1989.7、李存斌.Delphi6.0 程序設(shè)計(jì)及其應(yīng)用開(kāi)發(fā).北京,中國(guó)水利水電出版社,2002.8、王細(xì)洋,王叔淳.工藝知識(shí)管理系統(tǒng)的設(shè)計(jì).計(jì)算機(jī)輔助設(shè)計(jì)與制造,1998, (4):47-50.9、恒永興,張振明,黃乃康等.CAPP 面向?qū)ο笾R(shí)庫(kù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).機(jī)械科學(xué)與技術(shù),2001,20(1):140-142.10、劉金坤,王勻,王雷剛等.基于關(guān)系型數(shù)據(jù)的專家系統(tǒng)結(jié)構(gòu)模型及實(shí)現(xiàn)技術(shù). 中國(guó)機(jī)械工程,2001,12(5):545-547.七、其他鹽城工學(xué)院機(jī)械工程系畢業(yè)設(shè)計(jì)( 論文)任務(wù)書(shū)機(jī) 械 設(shè) 計(jì) 制 造 及 其 自 動(dòng) 化 專 業(yè)設(shè)計(jì)(論文)題目 蓋套類零件知識(shí)庫(kù)及工藝模板的研究 學(xué) 生 姓 名 顧 建 軍 班 級(jí) 材 機(jī) 99班 學(xué) 號(hào) BCJ9912017 起 訖 日 期 2003.3.31-2003.6.27 指 導(dǎo) 教 師 劉 道 標(biāo) 教研室主任 系 主 任 發(fā)任務(wù)書(shū)日期 2003 年 3 月 28 日測(cè)試分析報(bào)告一引言基于 PDM 平臺(tái)的 CAPP 可以充分利用 PDM 的強(qiáng)大功能,實(shí)現(xiàn)工藝設(shè)計(jì)過(guò)程控制和并行工程。在國(guó)內(nèi)許多 CIMS 工程中,越來(lái)越多的企業(yè)開(kāi)始選擇商用PDM 軟件作為 CIMS 的集成平臺(tái)和并行工程的使用環(huán)境,開(kāi)發(fā)基于 PDM 的CAPP 系統(tǒng)必將成為一個(gè)發(fā)展趨勢(shì)。1.編寫(xiě)目的編寫(xiě)此測(cè)試報(bào)告的目的是為了保證基于 PDM 的 CAPP 系統(tǒng)的正常運(yùn)行,所以要通過(guò)測(cè)試,來(lái)發(fā)現(xiàn)錯(cuò)誤和異常情況,以保證程序在以后的運(yùn)行過(guò)程中盡可能的少出現(xiàn)故障。2.背景本此測(cè)試的是基于 PDM 的 CAPP 系統(tǒng)框架的構(gòu)建,是由鹽城工學(xué)院機(jī)械工程系教研室提出的。它是由葛友華、劉道標(biāo)、王正剛老師共同負(fù)責(zé),由本屆畢業(yè)生張健、劉忠明同學(xué)作為畢業(yè)設(shè)計(jì)的課題協(xié)同規(guī)劃和開(kāi)發(fā), 以期能建立起基于產(chǎn)品數(shù)據(jù)管理的計(jì)算機(jī)輔助工藝過(guò)程規(guī)劃的實(shí)際應(yīng)用系統(tǒng),以期能夠投入到企業(yè)的實(shí)際應(yīng)用中。由于測(cè)試環(huán)境與實(shí)際運(yùn)行環(huán)境之間可能存在著差異,所以在實(shí)際運(yùn)行過(guò)程中難免存在著不足之處,有待于進(jìn)一步的完善。3.定義CAD: 計(jì)算機(jī)輔助設(shè)計(jì),全稱為 Computer-Aided Design;CAM: 計(jì)算機(jī)輔助制造,全稱為 Computer-Aided Manufacturing;PDM: 產(chǎn)品數(shù)據(jù)管理,全稱為 Product Data Management;CAPP:計(jì)算機(jī)輔助工藝規(guī)程設(shè)計(jì),全稱為 Computer-Aided Process Planning;CIMS:計(jì)算機(jī)集成制造系統(tǒng),全稱為 Computer integrated manufacturing system。4.參考資料(1)劉道標(biāo).基于 PDM 的 CAPP 系統(tǒng)框架的研究與實(shí)現(xiàn).南京航天航空大學(xué)碩士學(xué)位論文,2002 年 12 月。(2)李善平 劉乃若 郭鳴等著.產(chǎn)品數(shù)據(jù)標(biāo)準(zhǔn)與 PDM.清華大學(xué)出版社,2002年 4 月。(3)魏志強(qiáng) 王先逵 楊志剛 吳丹. 集成制造環(huán)境下的計(jì)算機(jī)輔助工藝設(shè)計(jì)框架系統(tǒng) 2001 年 2 月 21 號(hào)。(4) 《軟件標(biāo)準(zhǔn)和指導(dǎo)性技術(shù)文件》 航空工業(yè)標(biāo)準(zhǔn) HB6465—90。二測(cè)試概要本次測(cè)試主要是對(duì)下面的程序進(jìn)行的:(1) 登陸界面的測(cè)試 測(cè)試動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù),輸入服務(wù)器名、服務(wù)器密碼;測(cè)試登陸用戶的合法性,輸入用戶名和密碼;(2) 系統(tǒng)主界面的測(cè)試測(cè)試簡(jiǎn)單的 WEB 瀏覽器能否應(yīng)用;測(cè)試各應(yīng)用模塊能否正常顯示;(3) 數(shù)據(jù)備份的測(cè)試測(cè)試數(shù)據(jù)庫(kù)中的內(nèi)容能否以文件形式保存?zhèn)浞?;?) 產(chǎn)品管理模塊的測(cè)試測(cè)試產(chǎn)品管理模塊中所有功能是否能夠正常實(shí)現(xiàn);測(cè)試產(chǎn)品管理模塊中的功能是否符合需求;(5) 工藝文件管理模塊的測(cè)試測(cè)試新建工藝、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;測(cè)試該界面中的各個(gè)子模塊是否有異常情況;(6) 工序文件管理模塊的測(cè)試(圖略)測(cè)試該模塊中新建工序文件、打開(kāi)工序文件是否正常實(shí)現(xiàn)功能;測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;(7) 工藝數(shù)據(jù)管理模塊的測(cè)試(8)測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量能否正常實(shí)現(xiàn)功能;測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;(9) 工藝設(shè)計(jì)模塊的測(cè)試測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線能否正常實(shí)現(xiàn)其功能;測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;測(cè)試結(jié)果及發(fā)現(xiàn)(1) 測(cè)試 1輸入錯(cuò)誤的數(shù)據(jù)庫(kù)服務(wù)器名稱,系統(tǒng)報(bào)錯(cuò),數(shù)據(jù)庫(kù)自動(dòng)斷開(kāi),系統(tǒng)自動(dòng)關(guān)閉。輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱,服務(wù)器密碼錯(cuò)誤,系統(tǒng)無(wú)法進(jìn)入,關(guān)閉后重新登陸。輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱和密碼,用戶名出錯(cuò)時(shí),無(wú)法登陸系統(tǒng)。輸入正確的數(shù)據(jù)庫(kù)服務(wù)器名稱和密碼,正確的用戶名,密碼錯(cuò)誤時(shí)無(wú)法登陸系統(tǒng)。通過(guò)以上測(cè)試得出結(jié)果,只有當(dāng)以上各項(xiàng)都符合時(shí),方能成功登陸本系統(tǒng)。(2) 測(cè)試 2測(cè)試主界面能否實(shí)現(xiàn)簡(jiǎn)單的 WEB 瀏覽器功能,在地址欄中輸入所要訪問(wèn)的主頁(yè)地址,測(cè)試在相應(yīng)的 WebBrower 處能否正常顯示網(wǎng)頁(yè)內(nèi)容。測(cè)試主菜單中的各個(gè)鏈接是否正常,點(diǎn)擊時(shí)能否顯示相應(yīng)的界面。通過(guò)反復(fù)的測(cè)試,發(fā)現(xiàn)了一些意想不到的問(wèn)題,尤其時(shí)在集成整個(gè)系統(tǒng)界面的時(shí)候,通過(guò)不斷的調(diào)整最終集合成主界面。(3) 測(cè)試 3測(cè)試用戶管理界面時(shí),當(dāng)姓名輸入框?yàn)榭諘r(shí),無(wú)法對(duì)登陸用戶進(jìn)行添加、修改、刪除;當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí),擁有最高權(quán)限可以對(duì)整個(gè)用戶管理界面進(jìn)行維護(hù),當(dāng)?shù)顷懹脩魹槠胀ㄓ脩艋蚬に嚾藛T時(shí),無(wú)法運(yùn)用用戶管理界面中的添加、修改、刪除按鈕進(jìn)行用戶權(quán)限管理。剛開(kāi)始時(shí),當(dāng)用戶欄為空時(shí)也可以對(duì)用戶管理界面進(jìn)行修改。(4) 測(cè)試 4測(cè)試數(shù)據(jù)備份界面時(shí),當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí)可以對(duì)基礎(chǔ)資源庫(kù)進(jìn)行數(shù)據(jù)備份,以文件形式保存到硬盤(pán)中,而當(dāng)普通用戶登陸時(shí)則沒(méi)有此權(quán)限功能。而在具體實(shí)現(xiàn)此功能時(shí),經(jīng)過(guò)反復(fù)調(diào)試后,總算實(shí)現(xiàn)了此功能。(5) 測(cè)試 5測(cè)試項(xiàng)目管理模塊時(shí),由于要實(shí)現(xiàn)通用化,所以在建立后臺(tái)數(shù)據(jù)庫(kù)時(shí)要建立關(guān)聯(lián)庫(kù),具體實(shí)現(xiàn)的時(shí)候用 SQL 查詢語(yǔ)言來(lái)實(shí)現(xiàn),當(dāng)項(xiàng)目分配完成后要進(jìn)入下一個(gè)流程,關(guān)鍵在于要實(shí)現(xiàn)如下需求,只有當(dāng)所有項(xiàng)目都分配完畢后才能進(jìn)入下一個(gè)工作流程,這就要逐一讀取數(shù)據(jù)庫(kù)中關(guān)于項(xiàng)目分配的信息,來(lái)確定是否能夠?qū)崿F(xiàn)。但由于開(kāi)發(fā)者自身?xiàng)l件的限制,導(dǎo)致后臺(tái)數(shù)據(jù)庫(kù)中的內(nèi)容不夠充實(shí),只是實(shí)現(xiàn)了一定的設(shè)計(jì)思想。(6) 測(cè)試 6測(cè)試產(chǎn)品管理模塊時(shí),首先是對(duì)產(chǎn)品設(shè)計(jì)管理界面的測(cè)試,利用樹(shù)形結(jié)構(gòu)作導(dǎo)航,利用 SQL 查詢語(yǔ)言,使左邊的產(chǎn)品或零件與右邊的詳細(xì)信息相對(duì)應(yīng),當(dāng)指針指到產(chǎn)品樹(shù)中的某一零件時(shí)就觸發(fā)事件,在右邊相應(yīng)的位置顯示所查詢到的詳細(xì)信息,如零件的總體信息、工藝信息、其它信息,還可以查看其相應(yīng)的圖形,如果在數(shù)據(jù)庫(kù)中未添加零件圖形,則要到產(chǎn)品數(shù)據(jù)管理界面提供的圖形管理處加入與零件相對(duì)應(yīng)的圖形,在測(cè)試過(guò)程中發(fā)現(xiàn)采用樹(shù)形結(jié)構(gòu)來(lái)導(dǎo)航是非常方便的,不過(guò)在維護(hù)過(guò)程中對(duì)樹(shù)形結(jié)構(gòu)管理時(shí),容易產(chǎn)生數(shù)據(jù)庫(kù)更新不足,產(chǎn)生一些意外的出錯(cuò)信息,經(jīng)過(guò)反復(fù)測(cè)試后,調(diào)整了數(shù)據(jù)庫(kù)的結(jié)構(gòu),終于實(shí)現(xiàn)了初步的功能,而工藝信息部分是通過(guò)顯示按扭來(lái)觸發(fā)事件,當(dāng)零件的工藝已經(jīng)制定好了以后,則通過(guò)查詢來(lái)檢索后臺(tái)數(shù)據(jù)庫(kù)零件工藝匯總中的關(guān)于此零件的工藝信息,如果零件的工藝未制定,則進(jìn)入新建工藝界面對(duì)零件工藝進(jìn)行編輯,而工藝設(shè)計(jì)可以運(yùn)用兩種方法,一種是基于實(shí)例的工藝生成,還有是基于模板的工藝生成,測(cè)試過(guò)程中主要是測(cè)試產(chǎn)品樹(shù)中的零件與工藝信息是否能關(guān)聯(lián),以及后臺(tái)數(shù)據(jù)庫(kù)能否正常工作,經(jīng)過(guò)修改后已經(jīng)實(shí)現(xiàn)了初步功能。(7) 測(cè)試 7測(cè)試過(guò)程中主要是對(duì)新建工藝界面、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印能否正常實(shí)現(xiàn)功能;測(cè)試該界面中的各個(gè)子模塊是否有異常情況;在測(cè)試過(guò)程中主要是要使各個(gè)界面都能實(shí)現(xiàn)其初步功能,使之不出現(xiàn)異常情況,開(kāi)始測(cè)試時(shí)總出現(xiàn)一些小錯(cuò)誤,最后在程序中加入了異常處理后在運(yùn)行時(shí)就把錯(cuò)誤給排除拉,在動(dòng)態(tài)輸入數(shù)據(jù)時(shí),可以選擇數(shù)據(jù)庫(kù)中的內(nèi)容添加到數(shù)據(jù)輸入框中,然后再通過(guò)按鈕觸發(fā)事件,保存到后臺(tái)數(shù)據(jù)庫(kù)中。通過(guò)動(dòng)態(tài)輸入的數(shù)據(jù)與保存到數(shù)據(jù)庫(kù)中的內(nèi)容相比較,最后確認(rèn)程序是否能滿足功能要求。(8) 測(cè)試 8主要是測(cè)試工序管理模塊中的界面能否達(dá)到功能要求,測(cè)試該模塊中新建工序文件、打開(kāi)工序文件是否正常實(shí)現(xiàn)功能;測(cè)試該模塊中各個(gè)功能是否正常,有無(wú)異常情況;通過(guò)在新建工序文件界面中動(dòng)態(tài)輸入數(shù)據(jù),然后以文件形式保存到電腦中,然后再通過(guò)打開(kāi)工序文件界面把剛才保存的文件打開(kāi)來(lái),查看數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)一致。如果數(shù)據(jù)不一致則說(shuō)明程序還存在著問(wèn)題,需要修改再調(diào)試,如果顯示的數(shù)據(jù)與動(dòng)態(tài)輸入的數(shù)據(jù)完全一致,說(shuō)明程序已初步實(shí)現(xiàn)了需求功能,可以對(duì)下一面進(jìn)行測(cè)試。(9) 測(cè)試 9主要是測(cè)試該模塊中典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量界面能否正常實(shí)現(xiàn)其功能,最后測(cè)試各個(gè)子界面中的按鈕等是否能實(shí)現(xiàn)其功能,有無(wú)異常情況;在測(cè)試過(guò)程中,對(duì)典型工藝數(shù)據(jù)維護(hù)界面測(cè)試主要是動(dòng)態(tài)輸入數(shù)據(jù),再點(diǎn)擊相應(yīng)的功能按鈕,查看生成的數(shù)據(jù)是否與動(dòng)態(tài)輸入的數(shù)據(jù)相一致,如果得出的結(jié)果確實(shí)如此,則說(shuō)明所編寫(xiě)的程序是正確的,反之則需要修改,再不斷調(diào)試,直到實(shí)現(xiàn)需求功能為止。(10)測(cè)試 10主要是測(cè)試該模塊中基于實(shí)例的工藝生成和基于模板的工藝生成、工藝路線能否正常實(shí)現(xiàn)其功能;測(cè)試該模塊中各界面的需求功能能否正常實(shí)現(xiàn),有無(wú)異常情況要處理;根據(jù)上面所示的界面,首先是查詢與零件相對(duì)應(yīng)的工藝,然后在網(wǎng)格中顯示出來(lái),再點(diǎn)擊導(dǎo)出工藝按鈕,把檢索到的工藝單存儲(chǔ)到臨時(shí)表中,再顯示在網(wǎng)格中,以便使用者進(jìn)行修改,直到達(dá)到要求為止,然后再存儲(chǔ)到零件工藝匯總表中,如果這一過(guò)程中輸入與輸出的數(shù)據(jù)相一致,則說(shuō)明程序已實(shí)現(xiàn)了功能需求,反之,則要進(jìn)行修改,調(diào)試直到達(dá)到要求為止。(11)測(cè)試 11主要是測(cè)試基于 WEB 的查詢模塊,點(diǎn)擊左邊的查詢按鈕,在右邊對(duì)應(yīng)的位置顯示鏈接的內(nèi)容,如果未出現(xiàn)相應(yīng)的界面,則說(shuō)明源程序還需要修改,調(diào)試,直到能滿足功能需求為止。四測(cè)試結(jié)論1.功能 1(1)能力登陸界面已具備了動(dòng)態(tài)連接數(shù)據(jù)庫(kù)的能力,以及辨別登陸用戶合法性的能力,經(jīng)過(guò)多次測(cè)試,已證明了登陸界面擁有了以上能力。(2)限制在測(cè)試過(guò)程中,發(fā)現(xiàn)了問(wèn)題,開(kāi)始時(shí)無(wú)法動(dòng)態(tài)連接遠(yuǎn)程數(shù)據(jù)庫(kù),后來(lái)通過(guò)改進(jìn),才能夠連接到遠(yuǎn)程數(shù)據(jù)庫(kù)。2.功能 2(1)能力系統(tǒng)主界面已具備作為簡(jiǎn)單的 WEB 瀏覽器的能力,能夠訪問(wèn) INTERNET,另外也達(dá)到了連接各個(gè)系統(tǒng)子模塊的能力,經(jīng)過(guò)多次測(cè)試,證明已具備了以上能力。(2)限制由于只是一個(gè)簡(jiǎn)單的 WEB 瀏覽器,所以跟 IE 相比還有一定的差距。3.功能 3(1)能力用戶管理界面已經(jīng)具備了對(duì)使用本系統(tǒng)的用戶進(jìn)行管理的能力,當(dāng)?shù)顷懹脩魹橄到y(tǒng)管理員時(shí)可以對(duì)任何用戶進(jìn)行修改其所有信息,也可以添加和刪除用戶;而當(dāng)?shù)顷懹脩魹槠胀ㄓ脩魰r(shí),則沒(méi)有權(quán)限修改用戶信息的能力。4.功能 4(1)能力數(shù)據(jù)備份界面已經(jīng)具備了對(duì)基礎(chǔ)庫(kù)以文件形式保存的能力,經(jīng)過(guò)多次測(cè)試后,已經(jīng)能夠?qū)崿F(xiàn)功能需求,能夠保存數(shù)據(jù),并能夠在系統(tǒng)中顯示以文件形式保存的數(shù)據(jù)。(2)限制由于數(shù)據(jù)本身已保存在數(shù)據(jù)庫(kù)中,以文件形式再保存、備份只是為了防止意外事故發(fā)生,導(dǎo)致數(shù)據(jù)丟失,欠缺是為能所有用到的數(shù)據(jù)庫(kù)進(jìn)行備份。5.功能 5(1)能力項(xiàng)目管理模塊主要是對(duì)通用化的項(xiàng)目進(jìn)行分配任務(wù)、編制任務(wù),經(jīng)過(guò)這一流程后,最后審核項(xiàng)目。經(jīng)過(guò)測(cè)試,證明該模塊已具備了此能力。(2)限制由于對(duì)項(xiàng)目?jī)?nèi)容及流程知道有限,導(dǎo)致建立的數(shù)據(jù)庫(kù)內(nèi)容教少,還不具備通用性,有待于改進(jìn)、提高。6.功能 6(1) 能力產(chǎn)品管理模塊主要是用來(lái)對(duì)企業(yè)中的產(chǎn)品自制件、標(biāo)準(zhǔn)件、外協(xié)件等進(jìn)行分類管理,對(duì)自制件如果未制定工藝則到相應(yīng)的新建工藝界面制定工藝,如果已經(jīng)制定則能夠顯示其工藝內(nèi)容。經(jīng)過(guò)多次測(cè)試,證明該模塊已經(jīng)具備了以上能力。(2) 限制由于設(shè)計(jì)人員水平的限制,采用樹(shù)形結(jié)構(gòu)導(dǎo)航時(shí),沒(méi)做到把樹(shù)結(jié)構(gòu)做到無(wú)窮級(jí)數(shù)展開(kāi),有待于進(jìn)一步提高。7.功能 7(1) 能力工藝文件管理模塊主要具有工藝、打開(kāi)工藝、工藝提取、工藝預(yù)覽、工藝打印的能力,經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。8. 功能 8(1) 能力工序文件管理模塊已經(jīng)具備了新建工序卡片和顯示已經(jīng)保存的工序卡片的能力,經(jīng)反復(fù)測(cè)試后,證明該模塊已經(jīng)具備了以上能力。9. 功能 9(1) 能力工藝數(shù)據(jù)管理模塊主要是對(duì)典型工藝數(shù)據(jù)維護(hù)、知識(shí)庫(kù)管理、切削用量和加工余量庫(kù)查詢。經(jīng)過(guò)多次測(cè)試后,證明該模塊已經(jīng)具備了以上能力。10.功能 10(1) 能力工藝設(shè)計(jì)管理模塊主要是實(shí)現(xiàn)基于實(shí)例的工藝生成和基于模板的實(shí)例生成、工藝路線的查詢的能力。(2)由于開(kāi)發(fā)設(shè)計(jì)時(shí)間和自身水平的限制,還未能實(shí)現(xiàn)基于特征的工藝生成的能力,有待于進(jìn)一步提高。11.功能 11(1) 能力系統(tǒng)查詢模塊主要是用來(lái)查詢基礎(chǔ)資源庫(kù)中的信息,經(jīng)過(guò)測(cè)試后已具備了此能力。(2) 限制由于開(kāi)發(fā)者本身對(duì) ACTIVEFORM 以及網(wǎng)絡(luò)發(fā)布了解不夠,還未能把用 Delphi 制作的網(wǎng)頁(yè)發(fā)布到服務(wù)器上,以達(dá)到基于 WEB 的查詢能力。五評(píng)價(jià)1.能力經(jīng)測(cè)試已證實(shí)了本軟件的能力。2. 缺陷與限制經(jīng)測(cè)試證實(shí)的軟件缺陷和限制已經(jīng)在測(cè)試結(jié)果和發(fā)現(xiàn)中交代過(guò),綜合以上的缺陷和限制,對(duì)本軟件存在著一定程度的影響。六測(cè)試總結(jié)通過(guò)此次測(cè)試,基于 PDM 的 CAPP 系統(tǒng)得到了很大的改進(jìn),但要消耗了測(cè)試人員很大的時(shí)間,設(shè)計(jì)人員更是消耗了大量的機(jī)時(shí)才使系統(tǒng)性能有了一定的提高,不過(guò)通過(guò)測(cè)試后,對(duì)于軟件本身來(lái)說(shuō)是必不可少的工作,有利于系統(tǒng)性能的改進(jìn)。unit xjgy;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, OleCtrls, VOLOVIEWXLib_TLB,Buttons, ExtCtrls,shellapi, Menus, DB, ADODB;typeTl_xjgy = class(TForm)StatusBar1: TStatusBar;Splitter2: TSplitter;Splitter1: TSplitter;SaveDialog1: TSaveDialog;ADOQuery8: TADOQuery;ADOQuery7: TADOQuery;ADOQuery6: TADOQuery;ADOQuery5: TADOQuery;ADOQuery4: TADOQuery;ADOQuery3: TADOQuery;DataSource1: TDataSource;ADOQuery2: TADOQuery;ADOQuery1: TADOQuery;PopupMenu1: TPopupMenu;N1: TMenuItem;N2: TMenuItem;Panel3: TPanel;Splitter3: TSplitter;Splitter4: TSplitter;Panel4: TPanel;Panel7: TPanel;SpeedButton2: TSpeedButton;SpeedButton1: TSpeedButton;SpeedButton5: TSpeedButton;SpeedButton4: TSpeedButton;SpeedButton6: TSpeedButton;SpeedButton3: TSpeedButton;Panel8: TPanel;AvViewX1: TAvViewX;Panel5: TPanel;Label1: TLabel;Label2: TLabel;Label3: TLabel; Edit1: TEdit;Edit2: TEdit;Edit3: TEdit;Panel6: TPanel;DBGrid1: TDBGrid;Panel2: TPanel;Panel9: TPanel;Label6: TLabel;Panel10: TPanel;Panel11: TPanel;Label7: TLabel;Label8: TLabel;Edit7: TEdit;Edit8: TEdit;Panel12: TPanel;Label4: TLabel;Label5: TLabel;Edit4: TEdit;Edit5: TEdit;Panel1: TPanel;TreeView1: TTreeView;TreeView2: TTreeView;TreeView3: TTreeView;TreeView4: TTreeView;TreeView5: TTreeView;TreeView6: TTreeView;OpenDialog1: TOpenDialog;N3: TMenuItem;N4: TMenuItem;ADOQuery9: TADOQuery;ADOQuery10: TADOQuery;Label9: TLabel;Label10: TLabel;Edit6: TEdit;Edit9: TEdit;ADOQuery8DSDesigner: TIntegerField;ADOQuery8DSDesigner2: TIntegerField;ADOQuery8DSDesigner3: TStringField;ADOQuery8DSDesigner4: TStringField;ADOQuery8DSDesigner5: TStringField;ADOQuery8DSDesigner6: TStringField;ADOQuery8DSDesigner7: TStringField;ADOQuery8DSDesigner8: TStringField;ADOQuery8DSDesigner9: TStringField; ADOQuery8DSDesigner10: TStringField;ADOQuery8DSDesigner11: TFloatField;ADOQuery8DSDesigner12: TStringField;ADOQuery8DSDesigner13: TStringField;ADOQuery8DSDesigner14: TStringField;ADOQuery8DSDesigner15: TStringField;ADOQuery8DSDesigner16: TStringField;ADOQuery8DSDesigner17: TStringField;ADOQuery8DSDesigner18: TStringField;ADOQuery8DSDesigner19: TStringField;ADOQuery8DSDesigner20: TStringField;tuxing2: TBlobField;ADOQuery2DSDesigner: TIntegerField;ADOQuery2DSDesigner2: TIntegerField;ADOQuery2DSDesigner3: TStringField;ADOQuery2DSDesigner4: TStringField;ADOQuery2DSDesigner5: TStringField;ADOQuery2DSDesigner6: TStringField;ADOQuery2DSDesigner7: TStringField;ADOQuery2DSDesigner8: TStringField;ADOQuery2DSDesigner9: TStringField;ADOQuery2DSDesigner10: TStringField;ADOQuery2DSDesigner11: TFloatField;ADOQuery2DSDesigner12: TStringField;ADOQuery2DSDesigner13: TStringField;ADOQuery2DSDesigner14: TStringField;ADOQuery2DSDesigner15: TStringField;ADOQuery2DSDesigner16: TStringField;ADOQuery2DSDesigner17: TStringField;ADOQuery2DSDesigner18: TStringField;ADOQuery2DSDesigner19: TStringField;ADOQuery2DSDesigner20: TStringField;tuxing: TBlobField;procedure FormCreate(Sender: TObject);procedure SpeedButton3Click(Sender: TObject);procedure DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);procedure TreeView1Change(Sender: TObject; Node: TTreeNode);procedure TreeView2Change(Sender: TObject; Node: TTreeNode);procedure TreeView3Change(Sender: TObject; Node: TTreeNode);procedure TreeView4Change(Sender: TObject; Node: TTreeNode);procedure TreeView5Change(Sender: TObject; Node: TTreeNode);procedure TreeView6Change(Sender: TObject; Node: TTreeNode);procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject);procedure SpeedButton6Click(Sender: TObject);procedure SpeedButton4Click(Sender: TObject);procedure SpeedButton5Click(Sender: TObject);procedure SpeedButton1Click(Sender: TObject);procedure SpeedButton2Click(Sender: TObject);procedure N3Click(Sender: TObject);procedure N4Click(Sender: TObject);private{ Private declarations }public{ Public declarations }procedure LoadgcmcTREE;procedure LoadgcnrTREE;procedure LoadjckTREE;procedure LoadjjkTREE;procedure LoaddjkTREE;procedure LoadljkTREE;end;varl_xjgy: Tl_xjgy;tup,wjj:string;implementationuses unit1;{$R *.dfm}procedure Tl_xjgy.FormCreate(Sender: TObject);vari,ss:integer;serveString: string;beginwjj:=GetCurrentDir;//下面一部分是動(dòng)態(tài)連接數(shù)據(jù)庫(kù)adoquery1.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery1.SQL.Clear;adoquery1.SQL.Add('select * from 工序名稱庫(kù)') ;adoquery1.open;adoquery2.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery2.SQL.Clear;adoquery2.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片') ;adoquery2.open;adoquery3.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery3.SQL.Clear;adoquery3.SQL.Add('select * from 工序內(nèi)容') ;adoquery3.open;adoquery4.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery4.SQL.Clear;adoquery4.SQL.Add('select * from 機(jī)床庫(kù)') ;adoquery4.open;adoquery5.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery5.SQL.Clear;adoquery5.SQL.Add('select * from 夾具庫(kù)') ;adoquery5.open;adoquery6.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery6.SQL.Clear;adoquery6.SQL.Add('select * from 刀具庫(kù)') ;adoquery6.open;adoquery7.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery7.SQL.Clear; adoquery7.SQL.Add('select * from 量具庫(kù)') ;adoquery7.open;adoquery8.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery8.SQL.Clear;adoquery8.SQL.Add('select * from 機(jī)械加工工藝過(guò)程卡片 2') ;adoquery8.open;adoquery9.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery9.SQL.Clear;adoquery9.SQL.Add('select * from 零件名稱匯總') ;adoquery9.open;adoquery10.ConnectionString:='Provider=SQLOLEDB.1;Password='+trim(form1.Edit4.Text)+';Persist Security Info=True;User ID=sa;Initial Catalog=bysjcapp;Data Source='+trim(form1.Edit3.Text)+'';adoquery10.SQL.Clear;adoquery10.SQL.Add('select * from 零件工藝匯總') ;adoquery10.open;LoadgcnrTREE;LoadjckTREE;LoadjjkTREE;LoaddjkTREE;LoadljkTREE;LoadgcmcTREE;treeview1.Visible:=true;treeview2.Visible:=false;treeview3.Visible:=false;treeview4.Visible:=false;treeview5.Visible:=false;treeview6.Visible:=false;adoquery2.First;while not adoquery2.Eof dobeginadoquery2.Delete;end; ss:=10;for i:=1 to 15 dobeginadoquery2.Append;adoquery2['工序標(biāo)志']:=ss;adoquery2.Post;ss:=ss+10;end;adoquery2.Active:=false;adoquery2.Active:=true;//改變網(wǎng)格大小dbgrid1.Columns[0].Width:=50;dbgrid1.Columns[1].Width:=100;dbgrid1.Columns[2].Width:=100;dbgrid1.Columns[3].Width:=60;dbgrid1.Columns[4].Width:=60;dbgrid1.Columns[5].Width:=70;dbgrid1.Columns[6].Width:=70;dbgrid1.Columns[7].Width:=70;dbgrid1.Columns[8].Width:=70;dbgrid1.Columns[9].Width:=60;end;procedure Tl_xjgy.LoadgcmcTREE;varRootNode, CatNode : TTreeNode;Category : string;begintreeview1.Items.Clear;RootNode := treeview1.Items.Add( nil, '工序名稱' );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;adoquery1.First;while not adoquery1.Eof dobeginCategory := adoquery1.fieldbyname('工序名稱').AsString;CatNode := treeview1.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;adoquery1.Next;end;end;procedure Tl_xjgy.LoadgcnrTREE;varRootNode, CatNode : TTreeNode;Category : string;begintreeview2.Items.Clear;RootNode := treeview2.Items.Add( nil, '工序內(nèi)容' );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;adoquery3.First;while not adoquery3.Eof dobeginCategory := adoquery3.fieldbyname('工序內(nèi)容').AsString;CatNode := treeview2.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;adoquery3.Next;end;end;procedure Tl_xjgy.LoadjckTREE;varRootNode, TipNode, CatNode : TTreeNode;ss,Category,jidian : string;begintreeview3.Items.Clear;adoquery4.First;while not adoquery4.Eof dobeginif (adoquery4['機(jī)床標(biāo)志 1']=0) and (adoquery4['機(jī)床標(biāo)志 2']=0) and (adoquery4['機(jī)床標(biāo)志 3']=0)thenbeginss:=adoquery4['機(jī)床名稱'];RootNode := treeview3.Items.Add( nil, ss );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;end;if (adoquery4['機(jī)床標(biāo)志 1']=0) and (adoquery4['機(jī)床標(biāo)志 2']=0) and (adoquery4['機(jī)床標(biāo)志 3']=1)thenbeginCategory := adoquery4.fieldbyname('機(jī)床分類').AsString;CatNode := treeview3.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;end; if (adoquery4['機(jī)床標(biāo)志 1']=1) and (adoquery4['機(jī)床標(biāo)志 2']=1) and (adoquery4['機(jī)床標(biāo)志 3']=1)thenbeginjidian := adoquery4.fieldbyname('機(jī)床型號(hào)').AsString;tipNode := treeview3.Items.addchild( catnode,jidian );tipNode.ImageIndex := 5;tipNode.SelectedIndex := 2;end;adoquery4.Next;end;end;procedure Tl_xjgy.LoadjjkTREE;varRootNode, TipNode, CatNode : TTreeNode;ss,Category,jidian : string;begintreeview4.Items.Clear;adoquery5.First;while not adoquery5.Eof dobeginif (adoquery5['夾具標(biāo)志 1']=0) and (adoquery5['夾具標(biāo)志 2']=0) and (adoquery5['夾具標(biāo)志 3']=0)thenbeginss:=adoquery5['夾具總稱'];RootNode := treeview4.Items.Add( nil, ss );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;end;if (adoquery5['夾具標(biāo)志 1']=0) and (adoquery5['夾具標(biāo)志 2']=0) and (adoquery5['夾具標(biāo)志 3']=1)thenbeginCategory := adoquery5.fieldbyname('夾具分類').AsString;CatNode := treeview4.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;end;if (adoquery5['夾具標(biāo)志 1']=1) and (adoquery5['夾具標(biāo)志 2']=1) and (adoquery5['夾具標(biāo)志 3']=1)thenbeginjidian := adoquery5.fieldbyname('夾具名稱').AsString;tipNode := treeview4.Items.addchild( catnode,jidian );tipNode.ImageIndex := 5;tipNode.SelectedIndex := 2; end;adoquery5.Next;end;end;procedure Tl_xjgy.LoaddjkTREE;varRootNode,CatNode : TTreeNode;ss,Category : string;begintreeview5.Items.Clear;adoquery6.First;while not adoquery6.Eof dobeginif (adoquery6['刀具標(biāo)志 1']=0) and (adoquery6['刀具標(biāo)志 2']=1) thenbeginss:=adoquery6['刀具名稱'];RootNode := treeview5.Items.Add( nil, ss );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;end;if (adoquery6['刀具標(biāo)志 1']=1) and (adoquery6['刀具標(biāo)志 2']=0) thenbeginCategory := adoquery6.fieldbyname('刀具規(guī)格').AsString;CatNode := treeview5.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;end;adoquery6.Next;end;end;procedure Tl_xjgy.LoadljkTREE;varRootNode, CatNode : TTreeNode;ss,Category : string;begintreeview6.Items.Clear;adoquery7.First;while not adoquery7.Eof dobeginif (adoquery7['量具標(biāo)志 1']=0) and (adoquery7['量具標(biāo)志 2']=1) thenbeginss:=adoquery7['量具名稱']; RootNode := treeview6.Items.Add( nil, ss );RootNode.ImageIndex := 0; { Specify which bitmap to use }RootNode.SelectedIndex := 0;end;if (adoquery7['量具標(biāo)志 1']=1) and (adoquery7['量具標(biāo)志 2']=0) thenbeginCategory := adoquery7.fieldbyname('量具規(guī)格').AsString;CatNode := treeview6.Items.AddChild( RootNode, Category );CatNode.ImageIndex := 5;CatNode.SelectedIndex := 2;end;adoquery7.Next;end;end;procedure Tl_xjgy.SpeedButton3Click(Sender: TObject);beginclose;end;procedure Tl_xjgy.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);beginif (DBGrid1.SelectedIndex = 1) thenbegin//調(diào)用相應(yīng)樹(shù)形結(jié)構(gòu)treeview1.Visible:=true;treeview2.Visible:=false;treeview3.Visible:=false;treeview4.Visible:=false;treeview5.Visible:=false;treeview6.Visible:=false;end;if (DBGrid1.SelectedIndex = 2) thenbegintreeview2.Visible:=true;treeview1.Visible:=false;treeview3.Visible:=false;treeview4.Visible:=false;treeview5.Visible:=false;treeview6.Visible:=false;end;if (DBGrid1.SelectedIndex = 5) thenbegin treeview3.Visible:=true;treeview2.Visible:=false;treeview1.Visible:=false;treeview4.Visible:=false;treeview5.Visible:=false;treeview6.Visible:=false;end;if (DBGrid1.SelectedIndex = 6) thenbegintreeview4.Visible:=true;treeview2.Visible:=false;treeview3.Visible:=false;treeview1.Visible:=false;treeview5.Visible:=false;treeview6.Visible:=false;end;if (DBGrid1.SelectedIndex = 7) thenbegintreeview5.Visible:=true;treeview2.Visible:=false;treeview3.Visible:=false;treeview4.Visible:=false;treeview1.Visible:=false;treeview6.Visible:=false;end;if (DBGrid1.SelectedIndex = 8) thenbegintreeview6.Visible:=true;treeview2.Visible:=false;treeview3.Visible:=false;treeview4.Visible:=false;treeview5.Visible:=false;treeview1.Visible:=false;end;end;procedure Tl_xjgy.TreeView1Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 1) thenbeginadoquery2.Edit;adoquery2['工序名稱']:=TreeView1.Selected.Text;adoquery2.Post;end; end;procedure Tl_xjgy.TreeView2Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 2) thenbeginadoquery2.Edit;adoquery2['工序內(nèi)容']:=TreeView2.Selected.Text;adoquery2.Post;end;end;procedure Tl_xjgy.TreeView3Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 5) thenbeginadoquery2.Edit;adoquery2['機(jī)床設(shè)備']:=TreeView3.Selected.Text;adoquery2.Post;end;end;procedure Tl_xjgy.TreeView4Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 6) thenbeginadoquery2.Edit;adoquery2['夾具設(shè)備']:=TreeView4.Selected.Text;adoquery2.Post;end;end;procedure Tl_xjgy.TreeView5Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 7) thenbeginadoquery2.Edit;adoquery2['刀具設(shè)備']:=TreeView5.Selected.Text;adoquery2.Post;end;end;procedure Tl_xjgy.TreeView6Change(Sender: TObject; Node: TTreeNode);beginif (DBGrid1.SelectedIndex = 8) thenbeginadoquery2.Edit;adoquery2['量具設(shè)備']:=TreeView6.Selected.Text;adoquery2.Post;end;end;procedure Tl_xjgy.N1Click(Sender: TObject);beginavviewx1.ClearMarkup ;if opendialog1.Execute thenbegintup:=opendialog1.filename;end;avviewx1.src :=tup ;if tup'')and (edit8.Text'' thenbeginavviewx1.ClearMarkup;avviewx1.Visible:=false;ShellExecute(handle,'open','acad.exe',pchar(tup),nil,SW_ShowNormal);avviewx1.Refresh;avviewx1.src:=tup;endelse showmessage('請(qǐng)加載圖形后在編輯,謝謝!');end;procedure Tl_xjgy.N4Click(Sender: TObject);begin// 圖形重新顯示avviewx1.ClearMarkup;avviewx1.Visible:=true;avviewx1.Refresh;avviewx1.src:=tup;end;end.
收藏