999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

模具CAE軟件ZMold數(shù)據(jù)驅(qū)動(dòng)對(duì)話框的開發(fā)

2014-08-08 08:38:07宋剛劉永志申長雨
計(jì)算機(jī)輔助工程 2014年3期

宋剛+劉永志+申長雨

作者簡介: 宋剛(1977—),男,山東濰坊人,講師,博士研究生,研究方向?yàn)橛?jì)算機(jī)數(shù)值模擬,(Email)songgang@zzu.edu.cn0引言

ZMold是橡塑模具國家工程研究中心自主開發(fā)的注塑模具CAE軟件.[1]在研制宇航員出艙面窗過程中,通過數(shù)百次模擬面窗成型過程得出優(yōu)化的成型工藝參數(shù),ZMold軟件發(fā)揮重要作用.在開發(fā)ZMold軟件的過程中,用戶需要輸入或者選擇大量的信息,例如材料信息、求解算法參數(shù)、成型條件、有限元網(wǎng)格屬性和分析過程選擇等.這些信息還可以細(xì)分,例如單材料包含熱塑性材料、熱固性材料、冷卻液、模具材料和填充物等.這些材料所包含的信息內(nèi)容又各不相同,非常繁雜.對(duì)話框作為信息輸入的主要手段在軟件開發(fā)中被大量使用.在Windows程序中,對(duì)話框模式是最為經(jīng)典的UI設(shè)計(jì)模式之一,具有良好的用戶體驗(yàn)和快捷的操作效率.[2]在早期的ZMold開發(fā)中,對(duì)話框是在程序中固定編寫的,如果軟件需要生成新對(duì)話框或者修改原來對(duì)話框,需要開發(fā)人員對(duì)軟件源代碼進(jìn)行修改,重新編譯連接生成新的可執(zhí)行文件,過程非常費(fèi)時(shí)費(fèi)力.為滿足模具CAE分析軟件各種信息的輸入需求,使開發(fā)人員可以方便地設(shè)計(jì)所需的對(duì)話框并且不需要修改程序代碼,開發(fā)數(shù)據(jù)驅(qū)動(dòng)對(duì)話框模塊ZDialog.該模塊可以從文件讀取所需信息創(chuàng)建對(duì)話框.

創(chuàng)建數(shù)據(jù)驅(qū)動(dòng)對(duì)話框需要的信息有兩類:一類是對(duì)話框原型描述的定義文件,說明對(duì)話框包含的組件和相關(guān)邏輯,例如按鈕、編輯框和下拉框及其觸發(fā)的功能等;另一類是結(jié)果文件,記錄對(duì)話框組件的取值和用戶的輸入或選擇,由ZDialog自動(dòng)生成,并提供接口函數(shù)進(jìn)行讀寫操作以提供數(shù)據(jù)給計(jì)算模塊使用.ZDialog模塊的功能圖解見圖1.由圖1可以看出,當(dāng)軟件開發(fā)者需要新的對(duì)話框或者對(duì)已有的對(duì)話框進(jìn)行修改時(shí),只需修改定義文件,ZDialog模塊可以根據(jù)新的定義文件自動(dòng)生成新的對(duì)話框,從而增加軟件的重用性和適應(yīng)性,提高開發(fā)效率,減輕開發(fā)強(qiáng)度.

圖 1ZDialog模塊的功能圖解

Fig.1Function chart of ZDialog

1ZDialog原理

ZDialog模塊開發(fā)工具采用Microsoft VC++.利用面向?qū)ο蟮拈_發(fā)思想[3],將其主要封裝在CMoldDefine,CMoldData和從CDialog繼承的ZDialog對(duì)話框等3個(gè)類中.CMoldDefine類用來操作定義文件;CMoldData類用來操作結(jié)果數(shù)據(jù)文件;ZDialog類用來管理對(duì)話框.ZDialog類主要包含對(duì)話框組件類的數(shù)組.對(duì)話框組件類從MFC的組件類繼承而來,主要包括文本、編輯框、下拉框和列表組件等.在這些類中添加新的成員和方法以擴(kuò)充組件的狀態(tài)和操作.通過這些新的成員和方法將對(duì)話框與定義文件和數(shù)據(jù)文件緊密結(jié)合起來,實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)功能.

首先創(chuàng)建CMoldDefine定義文件對(duì)象,依照定義文件格式讀取數(shù)據(jù)文件,從而創(chuàng)建CMoldData對(duì)象;然后利用CMoldDefine類的實(shí)例生成ZDialog對(duì)象的對(duì)話框組件對(duì)象的數(shù)組,利用CMoldData對(duì)象給這些組件對(duì)象賦值,在ZDialog::OnInitDialog中創(chuàng)建這些組件.此時(shí),調(diào)用ZDialog::DoModal方法就可以顯示對(duì)話框.同時(shí),利用消息映射編寫統(tǒng)一的事件函數(shù),左鍵單擊處理用戶對(duì)這些組件的操作.編寫ZDialog::DoDataExchange函數(shù)進(jìn)行數(shù)據(jù)交換.[4]在用戶關(guān)閉對(duì)話框時(shí),可將更新后的數(shù)據(jù)寫入結(jié)果數(shù)據(jù)文件中,下次打開對(duì)話框便是更新后的數(shù)據(jù).

如何開發(fā)合適的對(duì)話框定義文件是實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)對(duì)話框的關(guān)鍵所在,也是研究的重點(diǎn).

2對(duì)話框定義文件

ZDialog模塊的核心是對(duì)話框定義文件的實(shí)現(xiàn).在定義文件中提出CDST,CODE和DATA等數(shù)據(jù)結(jié)構(gòu).CDST是CODE的集合,CODE是一組相關(guān)組件的有機(jī)結(jié)合;每個(gè)CDST對(duì)應(yīng)一個(gè)對(duì)話框.CODE包含若干個(gè)DATA.DATA可以理解為一個(gè)組件,例如按鈕、單選框、復(fù)選框和文本框等.定義文件還用到關(guān)鍵詞UION,CDDP和REPT等.CDST書寫格式為

CDST n1 "description" // n1為CDST的ID.

{ CODE c1 "code description"

{

DATA 1

{ "Option description" }

DATA 2

{ "Button description" }

DATA 3

{ "description 1" v1

"description 2" v2

}

DATA 4

{ "String" }

DATA 5

{ "description" "format" "unit"

minv maxv

}

REPT

}

CODE c2 "code description"

{

}

… //還可以添加若干CODE

UION { CODE ID list }

CDDP c1

{ {n1 v1 c1 c2 c3 …}

}

CDDP cn

{ {n2 v2 c4 …}

}

… //可以繼續(xù)添加CDDP

}

說明:CDST以“CDST n1 "description"”作為開始,其中CDST為關(guān)鍵詞,n1為CDST的ID,"description"為CDST的描述.CDST下面的內(nèi)容使用“{ }”括起來.在定義文件中包含若干個(gè)CDST的定義.一個(gè)CDST中包含若干CODE,CODE也有ID及描述,是組成CDST的核心部分.每一個(gè)CODE里面包含若干個(gè)DATA.基本的5種DATA的類型定義見表1,可以根據(jù)實(shí)際的需要進(jìn)行擴(kuò)展.

表 1DATA組件中的數(shù)據(jù)類型

Tab.1Data types of DATA component名稱標(biāo)志格式說明復(fù)選框1DATA1

{ "Option description" }選中為1,不選為0按鈕2DATA2

{"Button description" }按下為1,否則為0下拉框3DATA3

{"description 1" v1

"description 2" v2

}選中第1項(xiàng)取v1值,選中第2項(xiàng)取v2,依此類推.字符串4DATA4

{ "String" }數(shù)值5DATA5

{"description" "format"

"unit"

minv maxv

}描述,數(shù)據(jù)格式,單位

取值下限和上限

REPT關(guān)鍵詞如果在CODE結(jié)尾出現(xiàn),表示該CODE是一個(gè)表格類型的CODE,要求CODE中的DATA全部為數(shù)值.

UION關(guān)鍵詞用來表示CDST對(duì)話框的風(fēng)格.UION以各CODE上下依次排列的形式出現(xiàn),可以定義另外的對(duì)話框風(fēng)格,例如標(biāo)簽頁形式的對(duì)話框.

CDDP用來定義在用戶改變CODE值時(shí)應(yīng)觸發(fā)的相應(yīng)操作.CDDP以關(guān)鍵字CDDP開始,后面緊跟CODE的ID,表明哪個(gè)CODE的值發(fā)生改變會(huì)觸發(fā)該CDDP.一個(gè)CDDP的內(nèi)容包括至少一個(gè){n1 v1 c1 c2 c3…}的內(nèi)容,表示當(dāng)CODE的第n1個(gè)值等于v1時(shí),會(huì)觸發(fā)CODE c1 c2 c3…,從而引起相應(yīng)的操作.CDDP主要用在選中下拉列表框某一項(xiàng)或者某個(gè)選擇框被選中時(shí)以及某個(gè)按鈕被點(diǎn)擊時(shí)所引起的響應(yīng).

3數(shù)據(jù)驅(qū)動(dòng)實(shí)例

以一個(gè)完整的CDST例子演示生成的對(duì)話框隨數(shù)據(jù)定義文件的改動(dòng)而動(dòng)態(tài)改變.

CDST 50000 "冷卻計(jì)算參數(shù)"

{ CODE 50010 "計(jì)算幾何體影響的方法"

{ DATA 3 //下拉列表框

{ "Ideal" 1

"Parameter" 2

}

}

CODE 50011 "值"

{ DATA 5 //一個(gè)數(shù)值編輯框

{ "" "%d" "[4:10000]" 4 10000 }

}

CODE 50020 "只是一個(gè)演示"

{ DATA 5

{ "模溫收斂公差" "%.10Lg" ""

0.00001 0.5

}

DATA 5

{ "最大模溫迭代次數(shù)" "%d" ""

10 10000

}

REPT //表示是一個(gè)2列的表格

}

UION { 50020 50010 }

CDDP 50010

{

{ 1 3 50011 }

}

}

根據(jù)CDST 50000生成的對(duì)話框見圖2.對(duì)話框主要由CODE 50020(表格)和CODE 50010(一個(gè)下拉框)組成.圖2顯示選中下拉框第二項(xiàng)的情況.根據(jù)CDDP 50010可知,當(dāng)選中下拉框50010時(shí)右邊會(huì)出現(xiàn)編輯框50011.

圖 2根據(jù)CDST 50000生成的對(duì)話框

Fig.2Dialog box generated by CDST 50000

將該CDST 50000稍加修改,添加一個(gè)新的CODE.

CODE 50030

{ DATA 2 //按鈕

{ "Set…" }

}

將CDDP 50010修改為:

CDDP 50010

{

{ 1 3 50030 }

}

添加新的CDDP 50030

CDDP 50030

{

{ 1 1 50020

50011 }

}修改后的CDST 50000生成圖3所示的對(duì)話框.與圖2相比,選中下拉框第二項(xiàng)的時(shí)候,編輯框變成由CODE 50030定義的按鈕,通過定義CDDP 50030,點(diǎn)擊該按鈕彈出由表格CODE 50020和編輯框CODE 50011組成的一個(gè)新對(duì)話框,可以進(jìn)行信息輸入.

圖 3修改后的CDST 50000生成對(duì)話框

Fig.3Dialog box generated by modified CDST 50000

通過演示可以清楚地看到數(shù)據(jù)驅(qū)動(dòng)對(duì)話框的優(yōu)點(diǎn):不用修改程序文件,只需要修改定義文件就可以產(chǎn)生各種不同的對(duì)話框,從而達(dá)到軟件重用的目的.

4結(jié)束語

為提高軟件開發(fā)效率、降低開發(fā)成本,軟件開發(fā)者一直在尋求好的開發(fā)方法.其中,軟件重用技術(shù)擔(dān)負(fù)重要作用.本文提出的數(shù)據(jù)驅(qū)動(dòng)對(duì)話框軟件重用技術(shù)不僅可以提高軟件重用程度、減少工作量,而且可以方便地維護(hù)和擴(kuò)充系統(tǒng),使系統(tǒng)具有很好的可維護(hù)性.在開發(fā)CAE軟件ZMold的實(shí)踐中已經(jīng)證明該方法是行之有效的軟件可重用開發(fā)技術(shù).參考文獻(xiàn):

[1]陳靜波, 劉春太, 王利霞, 等. 注射模ZMold軟件的開發(fā)與應(yīng)用[J]. 模具工業(yè), 1997, 23(11): 912.

CHEN Jingbo, LIU Chuntai, WANG Lixia, et al. ZMold software development and application of injection mold[J]. Die & Mould Industry, 1997, 23(11): 912.

[2]黃方榮. 未來的Web重要交互模式——對(duì)話框[J]. 程序員, 2006(12): 6566.

HUANG Fangrong. Future Web interactive mode: dialog[J]. Programmer, 2006(12): 6566.

[3]BARNES B H, BOLLINGER T B. Making reuse cost effective[J]. IEEE Software, 1991(1): 1324.

[4]侯俊杰. 深入淺出MFC[M].

主站蜘蛛池模板: 日韩欧美在线观看| 亚洲无码视频喷水| 国产午夜人做人免费视频中文| 成人福利在线视频| 69免费在线视频| 99久久精品无码专区免费| 亚瑟天堂久久一区二区影院| 亚洲精品福利网站| 亚洲成av人无码综合在线观看| 一级黄色网站在线免费看| 亚洲无码37.| 日本伊人色综合网| 中文字幕在线观看日本| 性视频一区| 欧美黄网在线| 97在线国产视频| 成人综合在线观看| 欧美亚洲网| 国产网友愉拍精品视频| 国产精品一区在线观看你懂的| 在线国产毛片手机小视频 | 伊人久久青草青青综合| 欧美日韩国产在线人| 国产在线观看一区精品| 国产激情影院| 91国内视频在线观看| 99热最新网址| 人妻无码中文字幕第一区| 国内精品伊人久久久久7777人| 先锋资源久久| 一级毛片在线播放免费观看| 色综合热无码热国产| 免费精品一区二区h| av尤物免费在线观看| 亚洲国产中文精品va在线播放 | 久久久黄色片| 综合久久久久久久综合网| 久久6免费视频| 91精品福利自产拍在线观看| 2021天堂在线亚洲精品专区| 最新亚洲av女人的天堂| 久久国产精品77777| 99热精品久久| 日韩在线观看网站| 999精品视频在线| 久久精品嫩草研究院| 东京热av无码电影一区二区| 在线观看国产精美视频| 亚洲精品片911| 日韩欧美中文字幕一本| 国产情侣一区二区三区| 欧美国产视频| 欧美激情成人网| 国产视频a| 国产草草影院18成年视频| 亚洲天堂视频在线播放| 色婷婷电影网| 国产高清精品在线91| JIZZ亚洲国产| 日韩精品一区二区三区swag| 欧美综合激情| 日韩在线播放欧美字幕| 亚洲天堂2014| 99激情网| 国产一级片网址| 视频国产精品丝袜第一页| 欧美国产日韩另类| 国产精品性| 日韩东京热无码人妻| 亚洲人成网站18禁动漫无码| 四虎永久在线精品影院| 97色伦色在线综合视频| 91精品在线视频观看| 免费人成网站在线观看欧美| 免费无码又爽又黄又刺激网站| 久久综合五月婷婷| 国产精品一区不卡| 国内精品视频区在线2021| 国产精品久久久久婷婷五月| 一本大道东京热无码av| 欧美亚洲日韩不卡在线在线观看| 亚洲国产精品美女|