• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于達(dá)索平臺(tái)CAA架構(gòu)的橋梁基礎(chǔ)BIM建模及審核工具開(kāi)發(fā)

      2021-01-25 01:16:50齊成龍
      結(jié)構(gòu)工程師 2020年6期
      關(guān)鍵詞:批量建模基礎(chǔ)

      齊成龍

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

      0 引 言

      目前基于達(dá)索軟件的BIM 設(shè)計(jì)中,大多借助EKL 腳本語(yǔ)言和action 功能,采用“骨架-模板”的建模思想[1]。這種方法雖然能夠?qū)崿F(xiàn)批量建模,但是實(shí)例化結(jié)果包含建模過(guò)程,導(dǎo)致效率低下,同時(shí)由于建模過(guò)程向所有使用者開(kāi)放,也不利于傳遞過(guò)程中的數(shù)據(jù)穩(wěn)定[2]。

      本文介紹一種不同于傳統(tǒng)方法的全新橋梁基礎(chǔ)批量建模和審核工具,該工具使用達(dá)索∕組件應(yīng)用架構(gòu)(CAA)二次開(kāi)發(fā)語(yǔ)言實(shí)現(xiàn),嵌入到達(dá)索軟件內(nèi)部,通過(guò)生成承臺(tái)和樁特征避免了工程模板的復(fù)雜內(nèi)部邏輯結(jié)構(gòu),提高了效率,同時(shí),該工具還具備批量修改模型IFC 屬性值及輸出審核結(jié)果的功能[3]。

      1 程序交互界面及操作流程設(shè)計(jì)

      根據(jù)橋梁基礎(chǔ)設(shè)計(jì)過(guò)程的需要,設(shè)計(jì)出如圖1 所示的用戶交互界面。該人機(jī)交互的基礎(chǔ)設(shè)計(jì)工具具備以下幾個(gè)特點(diǎn):①設(shè)計(jì)功能嵌入到達(dá)索裝配設(shè)計(jì)(Assembly Design)模塊中;②設(shè)計(jì)參數(shù)采用表格輸入的手段[4];③程序在批量創(chuàng)建基礎(chǔ)模型的同時(shí),自動(dòng)為IFC 屬性賦值;④承臺(tái)和樁分別作為用戶定義特征組合成最終的基礎(chǔ)模型,用戶可手動(dòng)修改這些特征結(jié)果;⑤用戶手動(dòng)修改承臺(tái)和樁特征后,程序可根據(jù)最終特征結(jié)果輸出數(shù)據(jù)表格供模型審核所用,并更新IFC屬性值。

      圖1 全橋基礎(chǔ)設(shè)計(jì)用戶交互界面Fig.1 User interface of whole bridge foundation design

      使用此工具進(jìn)行橋梁基礎(chǔ)BIM設(shè)計(jì)及審核時(shí)應(yīng)遵循以下幾個(gè)步驟。

      (1)設(shè)計(jì)準(zhǔn)備工作

      填充基礎(chǔ)信息表格,該表格存儲(chǔ)了承臺(tái)和樁在結(jié)構(gòu)尺寸、空間位置及混凝土等級(jí)方面的參數(shù)。然后,使用達(dá)索EKL 腳本語(yǔ)言生成基礎(chǔ)骨架坐標(biāo)系。

      (2)選擇用于存儲(chǔ)基礎(chǔ)骨架的幾何圖形集

      選擇幾何圖形集后,程序會(huì)自動(dòng)識(shí)別并讀入存儲(chǔ)在幾何圖形集內(nèi)的骨架坐標(biāo)系和基礎(chǔ)信息表格。

      (3)選擇用于存儲(chǔ)各基礎(chǔ)零件的父級(jí)根節(jié)點(diǎn)

      生成的橋墩基礎(chǔ)零件將附屬在該節(jié)點(diǎn)下。

      (4)生成全橋基礎(chǔ)模型

      上述所有步驟均完成后,對(duì)話框OK 按鈕即被激活,點(diǎn)擊此按鈕后生成全橋基礎(chǔ)模型,如圖2所示。

      圖2 全橋基礎(chǔ)BIM模型Fig.2 Foundation BIM model of the whole bridge

      (5)修改基礎(chǔ)模型

      雙擊承臺(tái)或樁基模型后,打開(kāi)特征修改用戶交互窗口,其中,樁特征修改界面如圖3 所示。在承臺(tái)特征交互窗口,用戶可以增加、刪除、修改一層承臺(tái)的數(shù)據(jù),并修改混凝土等級(jí);在樁基特征交互窗口,用戶可增加或刪除某根樁數(shù)據(jù),并修改混凝土等級(jí)以及樁長(zhǎng)。

      (6)基礎(chǔ)屬性批量修改及基礎(chǔ)模型審核數(shù)據(jù)輸出

      承臺(tái)和樁的部分IFC屬性如圖4所示,這兩種特征修改后,零件屬性值無(wú)法隨之自動(dòng)更新,為實(shí)現(xiàn)這種更新功能,可在圖1 所示的用戶界面點(diǎn)擊RefreshAttributes 按鈕,所有零件的IFC 屬性值根據(jù)最新的特征自動(dòng)更新。

      圖3 樁特征修改界面Fig.3 Pile feature modification UI

      圖4 承臺(tái)和樁基零件IFC屬性Fig.4 IFC attributes for platform and pile parts

      同時(shí),程序可以輸出最新的基礎(chǔ)數(shù)據(jù)表格,其中存儲(chǔ)了尺寸、位置、混凝土等級(jí),可用于BIM 建模結(jié)果審核。

      2 實(shí)現(xiàn)語(yǔ)言及模塊設(shè)計(jì)

      2.1 模塊設(shè)計(jì)

      將該設(shè)計(jì)工具劃分為3 個(gè)模塊以實(shí)現(xiàn)其功能,分別為界面模塊(UI Module)、特征模塊(Feature Module)和幾何拓?fù)淠K(Topological Module),如圖5 所示。三者的關(guān)系是:幾何拓?fù)淠K創(chuàng)建承臺(tái)和樁的幾何拓?fù)湫螤?;特征模塊生成承臺(tái)和樁特征[5],特征的三維形狀通過(guò)幾何拓?fù)淠K獲?。唤缑婺K用于建模工具條的實(shí)現(xiàn),基礎(chǔ)零件批量生成,以及特征的批量實(shí)例化和屬性修改、審核數(shù)據(jù)輸出等功能。以下將從底層開(kāi)始依次介紹各模塊的開(kāi)發(fā)流程。

      2.2 幾何拓?fù)淠K

      2.2.1 單層承臺(tái)

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

      每一個(gè)基礎(chǔ)的承臺(tái)可分為多層,其定位坐標(biāo)系位于最上層承臺(tái)頂部。每一層承臺(tái)是一個(gè)立方體,如圖6 左所示,承臺(tái)頂面到定位坐標(biāo)系原點(diǎn)有一個(gè)向下的偏移值Depth,單層承臺(tái)拓?fù)潴w創(chuàng)建流程如下:

      使用CATMathVector 類的GetDirections()和GetOrigin()方法獲取定位坐標(biāo)系的原點(diǎn)和方向向量[6],通過(guò)原點(diǎn)和方向向量之間的運(yùn)算,并結(jié)合尺寸參數(shù),創(chuàng)建iPt1-iPt4 四個(gè)點(diǎn),如圖6 右所示,并在這四個(gè)點(diǎn)的生成過(guò)程中考慮每層承臺(tái)的豎向偏移值Depth。

      圖6 單層承臺(tái)圖示Fig.6 Single-layer platform sketch

      有了iPt1-iPt4 四個(gè)點(diǎn),調(diào)用了如下CAA 內(nèi)部函數(shù):

      CATICGMSolidCuboid * CATCGMCreateSolidCuboid(CATGeoFactory* iFactory, CATTopData* iData, const CAT?MathPoint& iPt1, const CATMathPoint& iPt2, const CAT?MathPoint&iPt3,const CATMathPoint&iPt4);

      這個(gè)函數(shù)以圖6 右的iPt1-iPt4 四個(gè)點(diǎn)為輸入?yún)?shù),生成CATICGMSolidCuboid 類型的拓?fù)溥\(yùn)算器(Topological Operator),通過(guò)此拓?fù)溥\(yùn)算器創(chuàng)建立方體形狀的空間拓?fù)潴w,從而完成單層承臺(tái)幾何拓?fù)涞纳伞?/p>

      2.2.2 多層承臺(tái)組裝

      上一節(jié)介紹了如何創(chuàng)建考慮豎向偏移的單層承臺(tái),本節(jié)介紹如何組裝這些單層承臺(tái)。從上到下各單層承臺(tái)的數(shù)據(jù)依次存儲(chǔ)在一個(gè)列表(list)當(dāng)中,組裝多層承臺(tái)時(shí),在這個(gè)列表范圍內(nèi)循環(huán),流程如圖7所示。

      圖7 組裝多層承臺(tái)的流程Fig.7 Assembly process for multi-layer platform

      對(duì)于第一層承臺(tái),由于承臺(tái)頂面與定位坐標(biāo)系重合,令豎向偏移值Depth=0,調(diào)用單層承臺(tái)創(chuàng)建函數(shù),生成CATBody 類型的幾何拓?fù)?,將Depth值與當(dāng)前承臺(tái)高度相加獲取下一層承臺(tái)的豎向偏移值。如果此時(shí)處理的承臺(tái)為最后一個(gè),當(dāng)前幾何拓?fù)浼礊榉祷刂?,否則,繼續(xù)創(chuàng)建下一層承臺(tái)的幾何拓?fù)?,并與上一步獲取的拓?fù)潴w布爾合并作為新的拓?fù)潴w。

      循環(huán)操作,最終獲取合并后的各層承臺(tái)拓?fù)浣Y(jié)果。

      2.2.3 多根樁組裝

      單根樁數(shù)據(jù)存儲(chǔ)在一個(gè)名為PileStruct 的結(jié)構(gòu)體中,該結(jié)構(gòu)體包含樁的平面定位坐標(biāo)值和樁身直徑、樁長(zhǎng)等信息。

      多根樁組裝函數(shù)聲明格式如下:

      CATBody_var CreatePileBody(CATGeoFactory_var isp?GeoFac, CATTopData* iData, CATListPV iPileStructList,CATMathAxis iMathAxisTop)();

      這個(gè)函數(shù)的輸入?yún)?shù)iPileStructList 是一個(gè)PileStruct 類型的列表(list),其中存儲(chǔ)了當(dāng)前基礎(chǔ)下所有樁的數(shù)據(jù),每個(gè)列表元素代表一根樁;輸入?yún)?shù)iMathAxisTop 表示承臺(tái)底部定位坐標(biāo)系,PileStruct 結(jié)構(gòu)體中存儲(chǔ)的樁平面定位坐標(biāo)值即是相對(duì)于此坐標(biāo)系而言的。

      函數(shù)執(zhí)行流程如下:

      在列表范圍內(nèi)循環(huán),對(duì)于當(dāng)前列表元素,使用CATMathVector 類的GetDirections()和GetOrigin()方法獲取定位坐標(biāo)系的原點(diǎn)和方向向量,通過(guò)原點(diǎn)和方向向量之間的運(yùn)算,并結(jié)合樁平面定位坐標(biāo)值及樁長(zhǎng),創(chuàng)建當(dāng)前樁的上、下部頂點(diǎn)。有了單根樁的上下部頂點(diǎn)及樁身直徑,調(diào)用如下CAA內(nèi)部函數(shù)創(chuàng)建代表單根樁的圓柱形拓?fù)潴w:

      CATICGMSolidCylinder*CATCGMCreateSolidCylinder(CATGeoFactory*iFactory,CATTopData*iData,const CAT?MathPoint& iFirstPointOnAxis, const CATMathPoint& iSec?ondPointOnAxis,double iRadius);

      在循環(huán)過(guò)程中,對(duì)代表每根樁的圓柱體執(zhí)行布爾合并運(yùn)算,循環(huán)結(jié)束后完成樁的建模。

      2.3 特征模塊

      2.3.1 特征概述

      在本程序當(dāng)中,為了實(shí)現(xiàn)承臺(tái)和樁基的快速批量建模,需要將二者封裝為特征,從而保證這兩種模型的輕量化和封裝性。在達(dá)索CAA 架構(gòu)中,特征作為一種面向?qū)ο蟮哪P停?],有兩層含義:

      (1)數(shù)據(jù)模型

      特征作為一種對(duì)象,它的數(shù)據(jù)是以屬性的方式存儲(chǔ)的,特征的屬性分為兩類,數(shù)值類型的屬性,例如整型、浮點(diǎn)型數(shù)值;特征類型的屬性,也就是說(shuō)這個(gè)屬性本身也是一種特征。例如對(duì)于直線特征,它的兩個(gè)端點(diǎn)可以作為其屬性,端點(diǎn)本身也是特征。

      (2)行為模型

      每一種特征對(duì)象都包含多種與其關(guān)聯(lián)的行為,CAA 當(dāng)中使用接口來(lái)描述對(duì)象的行為。例如,在達(dá)索中創(chuàng)建一個(gè)線的特征Line3D,這個(gè)特征具備在三維空間中畫(huà)線的行為,因此,Line3D特征執(zhí)行CATILine 接口,其中包含的函數(shù)Draw()具備畫(huà)線功能。

      2.3.2 模塊架構(gòu)

      為了定義承臺(tái)和樁這兩個(gè)特征,需要擴(kuò)展三個(gè)對(duì)象:Footing,Pile,CATPrtCont。特征模塊的架構(gòu)如圖8所示。

      Footing 表示承臺(tái)對(duì)象,對(duì)其擴(kuò)展類型接口BridgeIFooting,這個(gè)接口包含一系列Get 和Set 函數(shù),這些函數(shù)的作用是獲取承臺(tái)對(duì)象的屬性值或者給承臺(tái)對(duì)象屬性賦值。同時(shí),對(duì)承臺(tái)對(duì)象擴(kuò)展CATIFmFeatureBehaviorCustomization 接口,此接口包含Build()函數(shù),其作用是,當(dāng)用戶對(duì)承臺(tái)對(duì)象執(zhí)行更新操作時(shí),調(diào)用幾何拓?fù)淠K,生成幾何拓?fù)潴w,從而實(shí)現(xiàn)幾何拓?fù)湫螤钆c特征的關(guān)聯(lián),Build()函數(shù)在運(yùn)行時(shí)需要引用類型接口的Get系列函數(shù),從而獲取特征的屬性值,作為創(chuàng)建幾何拓?fù)潴w的輸入?yún)?shù)。與承臺(tái)類似,Pile 表示樁對(duì)象,對(duì)其擴(kuò)展 BridgeIPile 類型接口以及CATIFmFeatureBehaviorCustomization 接口。

      圖8 特征模塊架構(gòu)Fig.8 Feature module framework

      CATPrtCont 是一個(gè)特征容器(Container)對(duì)象,對(duì)CATPrtCont 對(duì)象擴(kuò)展兩個(gè)工廠接口BridgeIFootingFactory 和BridgeIPileFactory,這 兩個(gè)接口分別包含CreateFooting()和CreatePile()函數(shù),分別用于實(shí)例化承臺(tái)和樁特征。這兩個(gè)函數(shù)在執(zhí)行過(guò)程中需要引用各自類型接口的Set 系列函數(shù)從而為特征屬性賦值。

      2.4 界面模塊

      界面模塊的作用是實(shí)現(xiàn)以下功能:

      將程序的各命令以菜單按鈕的形式保存在工具條當(dāng)中,并創(chuàng)建用戶交互窗口;創(chuàng)建承臺(tái)及樁特征的生成、修改命令;實(shí)現(xiàn)基礎(chǔ)批量建模、模型結(jié)果批量審核及IFC屬性修改功能。

      2.4.1 命令按鈕及用戶交互窗口

      菜單按鈕采用Add-in 的方式添加,基礎(chǔ)裝配功能和特征生成功能分別嵌入到裝配設(shè)計(jì)(Assembly Design)模塊和零件設(shè)計(jì)(Part Design)模塊中,因此,二者分別實(shí)現(xiàn)CATIAssyWork Bench Addin和CATIPrtCfg Addin接口。

      派生 CATMmrPanelStateCmd 類 ,重載GiveMyPanel()方法,將派生類與對(duì)話窗口Dialog文件關(guān)聯(lián)。重載BuildGraph()方法,通過(guò)這種方式實(shí)現(xiàn)用戶交互。

      2.4.2 特征的創(chuàng)建和修改

      CATMmrPanelStateCmd 類 的OkAction()方法,表示用戶點(diǎn)擊OK 按鈕時(shí)系統(tǒng)需要執(zhí)行的操作。重載OkAction()方法,從而實(shí)現(xiàn)了圖3 命令窗口所示的創(chuàng)建特征功能。

      圖9所示為特征的創(chuàng)建和修改流程。

      圖9 創(chuàng)建及修改特征流程Fig.9 Work flow for feature creation and modification

      在創(chuàng)建模式下,用戶點(diǎn)擊工具欄按鈕,激活CATMmrPanelStateCmd 派生類,打開(kāi)用戶交互窗口,用戶在窗口中輸入特征屬性值,點(diǎn)擊OK 按鈕以后,程序調(diào)用特征的工廠接口,創(chuàng)建特征結(jié)果并更新拓?fù)湫螤睢?/p>

      在修改模式下,當(dāng)用戶雙擊某已經(jīng)存在的特征,即激活CATIEdit接口的Activate()方法,此方法調(diào)用CATMmrPanelStateCmd 派生類的構(gòu)造函數(shù),啟動(dòng)特征修改模式,在此模式下,程序提取當(dāng)前特征的屬性值并顯示在命令交互窗口中供用戶修改,點(diǎn)擊OK按鈕后調(diào)用特征類型接口的Set系列函數(shù)更新特征屬性,完成特征修改及幾何拓?fù)涓隆?/p>

      2.4.3 基礎(chǔ)批量建模、模型結(jié)果批量審核及IFC屬性修改

      這三項(xiàng)功能在同一個(gè)用戶交互窗口中實(shí)現(xiàn)。

      批量建模流程為,通過(guò)CATICkeSheet 接口獲取結(jié)構(gòu)樹(shù)中設(shè)計(jì)表格的數(shù)據(jù),將其轉(zhuǎn)化為承臺(tái)和樁結(jié)構(gòu)體數(shù)據(jù)列表(List)。在此列表范圍內(nèi)循環(huán),由于目前達(dá)索CAA暫不支持?jǐn)U展鐵路IFC類型產(chǎn)品的生成功能,因此,對(duì)于每一個(gè)基礎(chǔ),使用CATAdpDuplicator 類對(duì)特定IFC 類型的產(chǎn)品進(jìn)行復(fù)制,生成基礎(chǔ)、承臺(tái)、樁的產(chǎn)品(Product)節(jié)點(diǎn),通過(guò)CATIPLMProducts 接口的AddProduct()方法完成產(chǎn)品的結(jié)構(gòu)樹(shù)層級(jí)關(guān)系組織[8]。

      借助特征模塊的工廠接口,在產(chǎn)品節(jié)點(diǎn)下?lián)饺氤信_(tái)和樁的特征,特征屬性從結(jié)構(gòu)體數(shù)據(jù)列表中獲取。使用CATCkeObjectAttrWriteServices 類的一系列屬性賦值方法,給產(chǎn)品節(jié)點(diǎn)的IFC 屬性賦值,屬性值可以從數(shù)據(jù)列表中計(jì)算求得,也可以通過(guò)類型接口的Get系列函數(shù)從特征結(jié)果中獲取。

      基礎(chǔ)批量建模結(jié)果的結(jié)構(gòu)樹(shù)如圖3 所示,模型結(jié)果的批量審核及修改功能都需要遍歷這種樹(shù)形結(jié)構(gòu),從而獲取所有模型并對(duì)這些模型進(jìn)一步操作,流程如圖10 所示。CATIPLMNavReference接口的ListChildren()方法可用于獲取結(jié)構(gòu)樹(shù)中某個(gè)產(chǎn)品(Product)的所有子節(jié)點(diǎn),多次遞歸使用該方法從而實(shí)現(xiàn)對(duì)結(jié)構(gòu)樹(shù)的遍歷。對(duì)于遍歷出來(lái)的每一個(gè)零件(Part)根節(jié)點(diǎn),使用CATIPart Request 和CATIMmiUseBodyContent 接 口 依 次 獲取零件中的所有的Body,以及每個(gè)Body中的所有特征,將這些特征與BridgeIFooting,BridgeIPile 類型接口進(jìn)行比較,從而識(shí)別獲取的特征。

      圖10 模型結(jié)構(gòu)樹(shù)遍歷流程Fig.10 Model tree structure navigation process

      使用類型接口Get 系列函數(shù)獲取特征的最新屬性值。對(duì)于遍歷出來(lái)的結(jié)構(gòu)樹(shù)中所有產(chǎn)品(Product)節(jié)點(diǎn),通 過(guò)CATCkeObjectAttrWrite Services 類的一系列方法,使用這些屬性值為IFC屬性賦值,從而實(shí)現(xiàn)產(chǎn)品IFC 屬性值的批量修改;使用這些特征屬性值向數(shù)據(jù)表格寫(xiě)出數(shù)據(jù),從而實(shí)現(xiàn)批量輸出模型審核數(shù)據(jù)。

      3 結(jié) 語(yǔ)

      針對(duì)既有的以工程模板和action 功能為手段的橋梁基礎(chǔ)BIM 建模方法的局限性,本文介紹了一種使用達(dá)索∕CAA 架構(gòu)開(kāi)發(fā)的橋梁基礎(chǔ)BIM 批量建模及審核工具。

      使用該工具進(jìn)行建模時(shí),程序讀取設(shè)計(jì)表格中的基礎(chǔ)尺寸及其他數(shù)據(jù),批量創(chuàng)建符合IFC 類型的產(chǎn)品(Product)節(jié)點(diǎn),向其中插入樁及承臺(tái)特征,并對(duì)產(chǎn)品的IFC 屬性賦值。用戶可單獨(dú)修改特征結(jié)果,并使用該工具根據(jù)最終的特征結(jié)果批量修改產(chǎn)品IFC 屬性值,還可以使用審核工具,以excel 表格的形式輸出總結(jié)點(diǎn)下所有基礎(chǔ)的數(shù)據(jù),為BIM建模結(jié)果審核提供便利。

      從開(kāi)發(fā)架構(gòu)的角度上講,該設(shè)計(jì)和審核工具通過(guò)界面模塊、特征模塊、幾何拓?fù)淠K三部分實(shí)現(xiàn)其功能。幾何拓?fù)淠K的作用是生成承臺(tái)和樁的CATBody 類型拓?fù)浣Y(jié)果;特征模塊將樁和承臺(tái)各自封裝為一種面向?qū)ο蟮哪P?,并調(diào)用幾何拓?fù)淠K結(jié)果實(shí)現(xiàn)特征的三維顯示;界面模塊通過(guò)調(diào)用特征模塊實(shí)現(xiàn)批量建模及模型的審核和IFC屬性修改。

      猜你喜歡
      批量建模基礎(chǔ)
      “不等式”基礎(chǔ)鞏固
      “整式”基礎(chǔ)鞏固
      批量提交在配置分發(fā)中的應(yīng)用
      聯(lián)想等效,拓展建?!浴皫щ娦∏蛟诘刃?chǎng)中做圓周運(yùn)動(dòng)”為例
      基于PSS/E的風(fēng)電場(chǎng)建模與動(dòng)態(tài)分析
      電子制作(2018年17期)2018-09-28 01:56:44
      不對(duì)稱半橋變換器的建模與仿真
      “防”“治”并舉 筑牢基礎(chǔ)
      淺議高校網(wǎng)銀批量代發(fā)
      基于AUTOIT3和VBA的POWERPOINT操作題自動(dòng)批量批改
      考慮價(jià)差和再制造率的制造/再制造混合系統(tǒng)生產(chǎn)批量研究
      前郭尔| 图们市| 彭水| 麟游县| 安义县| 陆河县| 光泽县| 阿拉善左旗| 甘德县| 揭阳市| 普定县| 娄烦县| 阜新| 贺兰县| 长岛县| 韩城市| 招远市| 九龙县| 茌平县| 吕梁市| 隆尧县| 日土县| 郴州市| 乾安县| 时尚| 西峡县| 尼玛县| 郯城县| 西昌市| 浠水县| 凤冈县| 康乐县| 肃宁县| 江城| 鄂托克旗| 麻城市| 苏尼特右旗| 陵川县| 永嘉县| 晋州市| 什邡市|