亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于達(dá)索CAA架構(gòu)的橋梁缺口BIM設(shè)計(jì)程序開發(fā)

        2020-12-16 09:10:06齊成龍
        結(jié)構(gòu)工程師 2020年5期
        關(guān)鍵詞:線位缺口鼠標(biāo)

        齊成龍

        (中國鐵路設(shè)計(jì)集團(tuán)有限公司,天津300308)

        0 引 言

        BIM 技術(shù)的發(fā)展促進(jìn)了其在鐵路工程領(lǐng)域的廣泛應(yīng)用。在傳統(tǒng)二維環(huán)境下進(jìn)行鐵路工程設(shè)計(jì)時,橋梁缺口設(shè)計(jì)是依靠工程師對平、縱斷面圖紙中的地形、線位、平立交進(jìn)行綜合分析完成的,存在效率低下的缺陷。

        針對這一問題,為了降低軟件開發(fā)難度,提高開發(fā)效率[1],本文充分利用現(xiàn)有三維設(shè)計(jì)軟件的強(qiáng)大參數(shù)化建模功能[2],使用達(dá)索/組件應(yīng)用架構(gòu)(CAA)語言,開發(fā)出一款嵌入到達(dá)索軟件內(nèi)部的橋梁缺口正向設(shè)計(jì)程序。本程序使設(shè)計(jì)人員能夠在三維交互操作環(huán)境下協(xié)同考慮地形、平立交、空間線位等因素完成全線所有橋梁缺口的一體化設(shè)計(jì),大幅提高了設(shè)計(jì)效率。

        1 程序特性及流程設(shè)計(jì)

        該人機(jī)交互的橋位缺口設(shè)計(jì)工具具備以下幾個特點(diǎn):①嵌入到達(dá)索零件設(shè)計(jì)(Part Design)模塊中[3],如圖1 所示;②程序根據(jù)缺口設(shè)計(jì)表格中的內(nèi)容生成虛擬的空間缺口平面,用戶可沿空間線位手動拖動這些虛擬平面;③用戶對虛擬平面的手動拖動過程結(jié)束后,程序自動更新缺口設(shè)計(jì)表格的里程值,并生成最新的空間平面。

        圖1 功能按鈕位置Fig.1 Location of functional button

        本程序的工作流程如圖2 所示。其中的“拖動單獨(dú)缺口平面”操作,僅表示計(jì)算機(jī)可以識別的微小鼠標(biāo)位置移動,對該操作執(zhí)行循環(huán)可用于表示用戶對虛擬橋梁缺口平面的連續(xù)手動拖動。

        圖2 工作流程設(shè)計(jì)Fig.2 Workflow design

        用戶交互界面如圖3 所示。程序運(yùn)行前,初步擬定缺口里程表,程序根據(jù)其中存儲的里程值自動生成可供用戶手動拖動的臨時顯示平面[4]。

        選擇需要修改位置的缺口,所選擇的平面會隨用戶鼠標(biāo)位置沿空間線位移動。當(dāng)用戶在三維環(huán)境下將其移動至所需位置后,右鍵單擊,當(dāng)前缺口操作過程結(jié)束。

        圖3 用戶交互界面Fig.3 User interface

        程序運(yùn)行結(jié)束時,在Result 幾何圖形集內(nèi)生成反應(yīng)最新設(shè)計(jì)結(jié)果的所有橋梁缺口平面,同時,缺口里程表格的內(nèi)容也被更新。

        2 二次開發(fā)策略和思路

        本文將從模塊設(shè)計(jì)的角度介紹此橋梁缺口設(shè)計(jì)工具的開發(fā)策略和思路,該橋梁缺口設(shè)計(jì)工具包含如圖4 所示的數(shù)據(jù)存儲模塊、組件模塊和界面模塊三個部分。

        圖4 模塊設(shè)計(jì)Fig.4 Module design

        其中,數(shù)據(jù)存儲模塊相當(dāng)于程序的全局變量,存儲了斷鏈表信息;同時,由于本程序的運(yùn)行是一個交互過程,還包含了對用戶當(dāng)前正在編輯的橋梁缺口信息的存儲;本模塊的第三部分是全線所有橋梁的缺口信息,是程序運(yùn)行和用戶交互的最終結(jié)果。

        組件模塊定義了BridgeBoundary 和Bridge SingleBoundary兩個組件;

        界面模塊的作用是綜合運(yùn)用數(shù)據(jù)存儲模塊開發(fā)出來的數(shù)據(jù)結(jié)構(gòu)以及組件模塊開發(fā)出來的接口,實(shí)現(xiàn)用戶操作流程。

        以下各節(jié)將依次對這些模塊進(jìn)行詳細(xì)的介紹。

        3 數(shù)據(jù)存儲模塊

        斷鏈表信息和全線橋梁缺口信息均使用CAA 自帶的不定長數(shù)組類型 ListPV 存儲[5],數(shù)組元素的類型以結(jié)構(gòu)體的形式表達(dá),在這些結(jié)構(gòu)體中,分別以數(shù)值和字符串類型的成員變量表示里程、長度或里程字頭等信息。

        當(dāng)前缺口信息使用若干個單獨(dú)的數(shù)值和字符串類型變量表示。

        4 組件模塊

        4.1 BridgeSingleBoundary組件

        每座橋梁包含大里程和小里程共兩個缺口,該組件用于存儲一個單獨(dú)橋梁缺口的信息,并輔助用戶交互操作和臨時顯示。

        橋梁缺口在程序運(yùn)行過程中使用了CAA 的ISO(Interactive Set of Objects)臨時顯示機(jī)制。

        ISO 從本質(zhì)上說是一個組件包,一個程序在運(yùn)行過程中只存在唯一的一個ISO 類型對象。當(dāng)把其他組件放入ISO 組件包以后,用戶就可以看到這些組件包含的CATRep 類型臨時顯示對象,并能對其交互操作,但前提條件是這些組件必須實(shí)現(xiàn)CATI3DVisu接口,并在此接口中定義一個能夠返回CATRep 類型對象的方法。因此,為了實(shí)現(xiàn)用戶對橋梁缺口的編輯,需要借助ISO對象。

        BridgeSingleBoundary 組件架構(gòu)如圖5 所示。類型接口BridgeISingleBoundary 通過Get 系列函數(shù)獲取組件屬性值,例如平面線位、空間線位、斷鏈表、橋梁編號、名義里程、投影面等,通過Set 系列函數(shù)為組件屬性賦值。

        BridgeESingleBoundaryVisu 是組件的一個擴(kuò)展類,該類執(zhí)行CATI3DGeoVisu接口,此擴(kuò)展類提供BuildRep()方法,用于生成CAT3DCustomRep類型的幾何體。

        BridgeESingleBoundaryCreateInstance 是組件的一個擴(kuò)展類,該類執(zhí)行CATICreateInstance 接口,此擴(kuò)展類提供的CreateInstance()方法用于組件實(shí)例化。

        圖5 BridgeSingleBoundary組件架構(gòu)Fig.5 BridgeSingleBoundary component structure

        BridgeESingleBoundaryGeoEvents 是組件的一個擴(kuò)展類,該類執(zhí)行CATIModelEvents 接口。當(dāng)在ISO 中添加組件或者更新組件時,CATISO 對象向CATVisManager 對象發(fā)出CATCreate 訊號,CATVisManager 對象收到此訊號后通知ISO 對象臨時顯示出組件的幾何形狀。而CATIModel Events 接口的實(shí)現(xiàn)正是CATISO 對象發(fā)出訊號的前提條件。

        4.2 BridgeBoundary組件

        一條空間線位包含多座橋梁,該組件用于表達(dá)一條空間線位上所有橋梁的缺口信息,其架構(gòu)如圖6所示。

        圖6 BridgeBoundary組件架構(gòu)Fig.6 BridgeBoundary component structure

        組件本身執(zhí)行其類型接口BridgeIBoundary,該接口的Get、Set 系列函數(shù)用于獲取屬性值以及為屬性賦值,其中的GetSingleBoundaryElements()函數(shù)用于獲取全線所有橋梁缺口對象,每一個對象都以BridgeSingleBoundary類型的組件表達(dá)。

        BridgeEBoundaryCreateInstance 是組件的一個擴(kuò)展類,其提供的CreateInstance()方法用于組件實(shí)例化。

        5 界面模塊

        界面模塊的作用是綜合運(yùn)用數(shù)據(jù)存儲模塊以及組件模塊實(shí)現(xiàn)用戶操作流程。具體包括:添加工具條,實(shí)現(xiàn)用戶交互窗口,顯示臨時缺口對象,拖動缺口臨時顯示平面,保存用戶交互結(jié)果。本節(jié)將依次介紹這些內(nèi)容。

        5.1 添加工具條

        工具條采用Add-in 的方式添加,由于該程序嵌入到零件設(shè)計(jì)(Assembly Design)模塊,因此,需要實(shí)現(xiàn)CATIPrtCfgAddin接口[6]。

        5.2 用戶交互窗口

        首先創(chuàng)建用戶交互窗口Dialog 文件,再通過對 CATMmrPanelStateCmd 類的派生、重載GiveMyPanel()方法,使派生類與用戶交互對話窗口Dialog 文件關(guān)聯(lián)。重載BuildGraph()方法,從而完成傳統(tǒng)交互窗口無法實(shí)現(xiàn)的對話流程操作。

        BuildGraph()方法通過命令狀態(tài)(Command State)和代理(Agent)兩個關(guān)鍵元素實(shí)現(xiàn)用戶與界面的交互響應(yīng)。代理分為三種:CATDialogAgent代理用來獲取界面控件響應(yīng);CATPathElement Agent 繼承自CATDialogAgent,用于獲取鼠標(biāo)下的對象路徑,并存儲該路徑值;CATIndicationAgent繼承自CATDialogAgent,該代理表示鼠標(biāo)所在的空間位置。

        5.3 橋梁邊界臨時對象的顯示

        BridgeSingleBoundary 作為組件模塊的一個重要成員,用于臨時顯示橋梁缺口[7]。

        如圖7 所示,用戶選擇幾何圖形集后,程序提取其中的骨架元素、橋梁缺口數(shù)據(jù)表、斷鏈表,處理后轉(zhuǎn)化為內(nèi)部數(shù)據(jù)格式,繼而執(zhí)行CATInstantiate Component()方法,實(shí)例化BridgeBoundary組件。

        圖7 橋梁邊界臨時對象顯示流程Fig.7 Visualization workflow of bridge boundary temporary components

        BridgeBoundary組件代表一條線位上所有橋梁的缺口平面,每一個單獨(dú)的缺口平面屬于Bridge SingleBoundary 組件類型。實(shí)例化出來的Bridge Boundary 組件通過 GetSingleBoundaryElements()方法獲取它包含的所有單獨(dú)缺口對象。AddElement()方法把這些單獨(dú)缺口放入ISO 組件包中,從而實(shí)現(xiàn)了缺口平面的臨時顯示。

        5.4 橋梁缺口平面的用戶交互操作

        用于表示鼠標(biāo)位置的代理CATIndication Agent 包含一個屬性ProjectPlane,它的作用如圖8所示。用戶所能看到的鼠標(biāo)位置是相對于顯示器平面的,而它的真實(shí)位置位于代理的投影面上,將視點(diǎn)和鼠標(biāo)連成直線,該直線與投影面的交點(diǎn)P2即是鼠標(biāo)在三維空間中的真實(shí)位置[8]。

        圖8 橋梁缺口平面用戶交互操作示意圖Fig.8 Interactive operation figure for boundary plane

        從BridgeISingleBoundary 類型接口的Set系列函數(shù)可以看出,代表橋梁單獨(dú)缺口的組件BridgeSingleBoundary 包含幾個關(guān)鍵屬性:平面線位、空間線位、里程值。要想實(shí)現(xiàn)橋梁缺口臨時顯示平面在被選中以后隨鼠標(biāo)移動,其前提是這三個屬性被重新賦值,由于平面和空間線位與鼠標(biāo)位置無關(guān),所以實(shí)現(xiàn)此操作的關(guān)鍵就是在鼠標(biāo)移動過程中實(shí)時更新橋梁單獨(dú)缺口組件的里程屬性值。

        假設(shè)用戶手動選擇的橋梁缺口平面初始位于P1 點(diǎn),程序通過其類型接口的GetProjectPlane()方法獲取一個通過P1 點(diǎn)并與水平線位相切的豎直面,并將這個豎直面賦予CATIndicationAgent 代理的ProjectPlane屬性,作為投影面。

        在鼠標(biāo)移動過程中,P2 點(diǎn)隨之在投影面的范圍內(nèi)移動,使用CATIndicationAgent 代理的GetValue()方法獲取一個以 CATMathPoint2D 表示的P2,再轉(zhuǎn)化為CATMathPoint類型。

        以P2 為輸入?yún)?shù)使用SetOrigin()方法,以投影面的法向量和豎直向量為輸入?yún)?shù)使用SetVectors()方法,創(chuàng)建一個通過P2點(diǎn)并與投影面垂直的CATMathPlane 類型的豎直面。使用CATCGMCreateIntersect()命令生成豎直面與水平線位的交點(diǎn)集,并根據(jù)與P2距離最小的原則獲取P3點(diǎn)。

        借助 CATCGMCreateTopSplitWire()命令,使用P3點(diǎn)切割水平線位,GetLength()命令能夠測量出作為切割結(jié)果的線位長度,此長度即是P3點(diǎn)的實(shí)際里程值,也就是單獨(dú)缺口組件的里程屬性。

        使用ISO 組件包的UpdateElement()方法,根據(jù)BridgeSingleBoundary 橋梁缺口組件的最新里程屬性值,將當(dāng)前正在拖動的橋梁缺口臨時顯示平面更新至最新的位置。通過這種方法,實(shí)現(xiàn)了對單獨(dú)橋梁缺口平面的選擇、拖動。

        5.5 保存用戶交互結(jié)果

        每完成一個橋梁缺口的修改,數(shù)據(jù)存儲模塊中的全線橋梁缺口信息不定長數(shù)組Boundary ResultInfoList即隨之更新,當(dāng)用戶完成對全線所有橋梁缺口的交互操作后,BoundaryResultInfoList就存儲了最終的設(shè)計(jì)成果。

        OK 按鈕被點(diǎn)擊后,程序?qū)oundary ResultInfoList代表的所有橋梁缺口循環(huán)操作,流程如圖9所示。首先,從結(jié)構(gòu)體中獲取缺口里程值,使用CATCGMCreateComputePointOnWire()命令,以此實(shí)際里程值為輸入?yún)?shù)生成平面線位點(diǎn)1,以及與其沿線位相距1cm 的平面線位點(diǎn)2,以平面線位點(diǎn)1 和豎直向量為輸入?yún)?shù),使用CATCGMCreateTopLineFromDirection()命令生成豎直線,再使用 CATCGMCreateTopIntersect()命令生成此豎直線與空間線位的交點(diǎn),此交點(diǎn)即是當(dāng)前橋梁缺口在空間線位上的對應(yīng)點(diǎn)。

        圖9 用戶交互結(jié)果保存流程Fig.9 Save workflow for interactive results

        點(diǎn)1 和點(diǎn)2 的連線可近似作為平面線位在點(diǎn)1 的水平切線,以此切線為法向,結(jié)合當(dāng)前橋梁缺口在空間線位上的對應(yīng)點(diǎn),生成CATMathPlane 類型的橋梁缺口平面,依次通過CATCGMCreate TopSkin()和InstantiateDatum()命令將此平面轉(zhuǎn)化為特征。這樣就完成了當(dāng)前循環(huán)體內(nèi)的橋梁缺口特征平面建模。循環(huán)結(jié)束后,程序即生成了全線所有橋梁缺口平面特征。

        6 結(jié) 語

        本文介紹了一種通過達(dá)索/CAA 二次開發(fā)實(shí)現(xiàn)的全線橋梁缺口BIM設(shè)計(jì)程序。該人機(jī)交互的程序能夠根據(jù)缺口設(shè)計(jì)表格中的內(nèi)容生成虛擬的空間缺口平面,用戶在三維環(huán)境下沿空間線位手動拖動這些平面進(jìn)行全線橋梁缺口設(shè)計(jì),設(shè)計(jì)過程結(jié)束后,程序根據(jù)用戶操作結(jié)果自動更新缺口設(shè)計(jì)表格,并在最終缺口位置生成空間平面特征結(jié)果。

        本文繼而從數(shù)據(jù)存儲模塊、組件模塊和界面模塊三個方面介紹了程序開發(fā)策略和思路。

        數(shù)據(jù)存儲模塊由若干個全局變量組成,這些變量分別用于存儲斷鏈表信息、當(dāng)前正在編輯的橋梁缺口對象信息以及全線所有橋梁的缺口信息。

        組件模塊定義了BridgeSingleBoundary 和BridgeBoundary 兩個組件:前者表達(dá)一個單獨(dú)橋梁缺口,并賦予其用戶交互操作和臨時顯示的功能;后者用于存儲一條空間線位上所有橋梁的缺口信息。本文從組件實(shí)現(xiàn)的接口和繼承層次關(guān)系出發(fā),對這兩個組件進(jìn)行了詳細(xì)的介紹。

        界面模塊的作用是綜合運(yùn)用數(shù)據(jù)存儲模塊開發(fā)出來的數(shù)據(jù)結(jié)構(gòu),以及組件模塊開發(fā)出來的接口,實(shí)現(xiàn)用戶交互操作。

        猜你喜歡
        線位缺口鼠標(biāo)
        兩港快線下鹽公路至白玉蘭大道的線位方案研究
        河南科技(2021年14期)2021-11-28 04:29:15
        必須堵上尾款欠薪“缺口”
        堵缺口
        Progress in Neural NLP: Modeling, Learning, and Reasoning
        Engineering(2020年3期)2020-09-14 03:42:00
        淺析水文地質(zhì)條件對某高速公路路線選擇的影響
        人民交通(2019年21期)2019-12-11 10:01:05
        區(qū)域過河咽喉通道選線優(yōu)化研究
        ——以濟(jì)南齊魯大道北延工程為例
        我國醫(yī)學(xué)物理師缺口巨大
        2015年乙烯進(jìn)口關(guān)稅下調(diào)至1%補(bǔ)充國內(nèi)需求缺口
        中國氯堿(2014年12期)2014-02-28 01:05:10
        武廣客運(yùn)專線長沙南站配套軌道交通線位銜接方案研究
        45歲的鼠標(biāo)
        曰韩无码无遮挡a级毛片| 美女被插到高潮嗷嗷叫| 精品一区二区三区亚洲综合| 国产特级毛片aaaaaa高潮流水| 亚洲av永久无码精品| 日韩我不卡| 亚洲精品区二区三区蜜桃| 久久夜色国产精品噜噜亚洲av | 久久精品人成免费| 狼色在线精品影视免费播放| 欧美性猛交xxxx乱大交蜜桃| 西西人体大胆视频无码| 亚洲最大不卡av网站| 免费观看mv大片高清| 国外精品视频在线观看免费| 中文人妻AV高清一区二区| 青青草视频视频在线观看| 欧美人与善在线com| 嗯啊哦快使劲呻吟高潮视频| 久久久99精品视频| 成h视频在线观看免费| 亚洲精品乱码久久久久久中文字幕| 欧美性猛交xxxx黑人| 精品理论一区二区三区| av在线免费观看网站,| 97人妻精品一区二区三区| 亚洲国产成人久久一区www妖精 | 中国少妇×xxxx性裸交| 性色av 一区二区三区| 亚洲色欲色欲大片WWW无码| 九九精品国产亚洲av日韩| 日本肥老妇色xxxxx日本老妇| 国产AV无码专区亚洲AⅤ| 久久伊人中文字幕有码久久国产| 森中文字幕一区二区三区免费| 久久久久久国产精品mv| 久久精品国产免费观看99| 日本久久久精品免费免费理论| 精品人妻av区乱码| 亚洲欧美成人a∨| 久久久成人av毛片免费观看|