• 
    

    
    

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

      ?

      Staad.Pro支座反力讀取程序開發(fā)及應(yīng)用

      2022-04-16 06:23:34胡合江
      科技創(chuàng)新與應(yīng)用 2022年9期
      關(guān)鍵詞:命令支座程序

      程 浩,胡合江,余 巍

      (中國電力工程顧問集團中南電力設(shè)計院有限公司,湖北 武漢 430071)

      目前,隨著BIM技術(shù)的迅速普及,廣大設(shè)計企業(yè)對正向設(shè)計方法的探索不斷深入,各軟件之間設(shè)計信息和數(shù)據(jù)傳輸?shù)男枨笠搽S之不斷增加。結(jié)合前述原因,在Staad.Pro軟件完成上部結(jié)構(gòu)的內(nèi)力分析之后接續(xù)基礎(chǔ)設(shè)計的需求顯得日益迫切,而其中的關(guān)鍵在于支座反力的讀取。由于Staad.Pro軟件的模型文件和內(nèi)力結(jié)果文件都是公開的,其輸入命令流和輸出結(jié)果的格式也有相關(guān)的說明,因此可以考慮編寫程序完成這一過程,國內(nèi)已有不少相關(guān)的研究:胡小龍等[6]基于Staad.Pro軟件的計算結(jié)果編寫相關(guān)的計算程序,以完成鍋爐爐架及變電構(gòu)架的設(shè)計;喬愛科等[7]利用VC++和AutoCAD二次開發(fā)工具ARX編制了自動化的可視化后處理應(yīng)用軟件,可提取Staad.Pro軟件計算模型的數(shù)據(jù),擴展了其后處理功能;魏亮等[8]介紹了一些Staad.Pro軟件二次開發(fā)的經(jīng)驗,并對開發(fā)過程中存儲、查詢數(shù)據(jù)的2種方案的效率進行比較;李金光等[9]介紹了基于Staad.Pro軟件開發(fā)的3個輔助程序,提高了工作效率;葉蔥蔥[10]使用VB對Staad.Pro軟件進行二次開發(fā),完成了輸煤棧橋混凝土構(gòu)件和基礎(chǔ)設(shè)計的程序。從以上研究中可知,對Staad.Pro軟件進行二次開發(fā)以讀取支座反力是一種簡便可行的方法,本文將對一些相關(guān)問題進行討論。

      1 Staad.Pro輸入和輸出文件的解析

      Staad.Pro的輸入文件為*.std格式,輸出結(jié)果文件為*.anl格式,都可直接采用記事本打開查看,可以比較方便地分析其內(nèi)容的組織和格式,編寫相應(yīng)的代碼以獲取需要的內(nèi)容,文獻[8]介紹了一些讀取這兩個文件的基本要點。對于支座反力而言,需要從*.std文件中讀取支座坐標(biāo)以及荷載工況等,從*.anl文件中讀取各支座在各工況下的反力值,為保證程序能夠正確穩(wěn)定的讀取,還有以下需要注意的問題:

      (1)Staad.Pro默認在輸出文件中打印輸入文件中的所有內(nèi)容,因此在一般情況下,僅需從*.anl文件中就可讀取到所有的信息。當(dāng)在輸入命令流中使用SET ECHO OFF命令時,自該命令之后的內(nèi)容將不再輸出文件中打印,對于此種情況,需考慮同時從*.std文件中讀取部分信息。

      (2)Staad.Pro默認采用Y軸作為豎向軸,但也提供了SET Z UP命令將Z軸作為豎向軸,因此在讀取過程中必須檢測輸入文件中是否存在此命令,以正確判斷支座反力的方向。

      (3)需要在命令流中添加PRINT SUPPORT REACTIONS命令才能將支座反力輸出到*.anl文件中,當(dāng)輸入命令流中不存在此命令時,需要提示用戶進行操作。此外,PRINT ANALYSIS RESULTS也能達到同樣的目的,但它是PRINT SUPPORT REAC TIONS、PRINT MEMBER FORCES以及PRINT JOINT DISPLACEMENTS三個命令之和,當(dāng)只需要輸出支座反力而不需要其他結(jié)果時,此命令將導(dǎo)致*.anl文件較大,對文件讀取速度有較大的影響,應(yīng)盡量避免。

      (4)Staad.Pro可通過命令流控制所需要輸出的荷載工況和支座。對于荷載工況,可以采用LOAD LIST即“有效荷載”命令控制輸出的荷載工況,Staad.Pro將僅輸出在LOAD LIST之后所列出的荷載工況。對于支座反力同理,在PRINT SUPPORT REACTIONS命令之后添加LIST,可以僅輸出其后所列出的支座的反力。因此,從輸出文件中并不一定能獲取所有的支座反力,在出現(xiàn)此情況時對用戶發(fā)出提示是比較有必要的。在輸出文件的PROBLEM STATISTICS項中列出了項目的總體信息,如圖1所示,可以獲取到當(dāng)前項目中的支座及荷載工況的數(shù)量,便于與實際讀取到的數(shù)量進行比較。

      圖1 輸出文件中的PROBLEM STATISTICS項

      (5)部分命令流有簡寫的方式,如PRINT SUPPORT REACTIONS簡寫為PRI SUP REA,PRINT ANALYSIS RESULTS簡寫為PRI ANA RES,更多簡寫的命令可查詢Staad.Pro的相關(guān)技術(shù)說明,讀取過程中需要對完整和簡寫的情況均進行識別。

      (6)支座反力輸出的單位和格式。支座反力輸出內(nèi)容的示例,如圖2所示。首行的“-UNIT KN METE”列出了支座反力的單位。Staad.Pro中長度和力的單位見表1和表2,在讀取或后續(xù)的輸出過程中需注意進行轉(zhuǎn)換。從圖2中可見,支座反力在輸出文件中是依次按節(jié)點和工況順序輸出的,不同的支座之間沒有其他標(biāo)記,只在每個支座首行的開頭列出了支座編號。此外,當(dāng)支座反力的輸出結(jié)果跨越多頁時,在每頁的開頭都將重新列出表頭,即圖2中方框內(nèi)的部分,在讀取的過程中應(yīng)予以忽略。

      表2 Staad.Pro命令流中的力單位

      圖2 輸出文件中的支座反力

      表1 Staad.Pro命令流中的長度單位

      2 開發(fā)實現(xiàn)

      如前所述,*.std和*.anl的文件格式都是公開的,因此一般的開發(fā)語言都能夠直接讀取其中的信息,本文以C#為例介紹支座反力的讀取方式。

      其中金錢是一塊塊脊柱骨,外圓內(nèi)空,如同一枚枚金錢。所謂釣蟾就是將丹田之氣,過海底上脊椎,撐命門,入玄關(guān)。因為入海底之下有尾閭下關(guān),這關(guān)口是真氣極不容易過的,所以叫釣蟾!”

      (1)文件內(nèi)容的讀取。C#提供了StreamReader類用于讀取文本文件,為方便后續(xù)的查找操作,可采用逐行讀取的方式,對于讀取到的每一行內(nèi)容,調(diào)用string類的ToUpper方法將其統(tǒng)一轉(zhuǎn)換成大寫,再將其存儲到List集合當(dāng)中。通過StreamReader對象的EndOfStream屬性判斷是否讀取到文件末尾,在到達末尾位置后,使用Close方法關(guān)閉文件。

      (2)關(guān)鍵信息的提取。提取關(guān)鍵信息的主要過程就是對文件的查找和搜索過程,一般這些關(guān)鍵內(nèi)容都是隨著某些關(guān)鍵字一起出現(xiàn),如“NUMBER OF SUPPORTS”等,因此首先需要找到關(guān)鍵字所在的位置,再獲取相關(guān)的內(nèi)容。還有部分關(guān)鍵信息具有特定的格式,如支座反力的首行數(shù)據(jù)以支座編號開始,后續(xù)為工況編號以及6個內(nèi)力數(shù)據(jù),中間由一個或多個空格分隔,而其它行只有工況編號以及6個內(nèi)力。C#提供了正則表達式Regex類,可以用于查找和匹配具有特定字符或格式的字符串,對于需要的信息,在了解其關(guān)鍵字和格式之后即可編寫出用于匹配的模式,如對于支座數(shù)量的獲取可以采用匹配模式:NUMBERs+OFs+SUPPORTSs+[1-9]d*,對于支座反力的首行采用匹配模式:^s+[1-9]d*s+[1-9]d*(s+(-?d+)(.d+)?){6}$等,在獲取匹配的內(nèi)容之后,再進行字符串的分割和提取操作即可得到所需要的內(nèi)容。

      (3)數(shù)據(jù)的存儲。文獻[8]通過將數(shù)組和散列表對比,發(fā)現(xiàn)使用散列表來存儲數(shù)據(jù)的效率遠高于數(shù)組。C#中的Dictionary容器即是一種散列表,因此適合用來存儲支座反力。首先構(gòu)建由節(jié)點號、荷載工況號和支座反力組成的JointLoad類來存儲一個支座在一個工況下的支座反力;然后建立以荷載工況號為key,JointLoad為value的Dictionary,用于存儲一個支座在多個工況下的反力;再建立以支座節(jié)點號為key,Dictionary為value的Dictionary>,用于存儲所有的支座反力。這樣即可實現(xiàn)對任意支座在任意工況下反力的快速查找。

      對于支座反力的讀取和輸出往往有獲取其極值或排序等其它操作,一種比較方便的方式是利用C#面向?qū)ο蟮奶匦?,?chuàng)建繼承于Dictionary>的SupportReaction類,將排序、獲取極值等方法或?qū)傩苑旁诖祟愔?,這樣既可以簡化代碼,程序結(jié)構(gòu)也更加清晰,便于擴展功能。

      3 應(yīng)用案例

      圖3為某工程500 kV變電構(gòu)架,其上部結(jié)構(gòu)采用Staad.Pro進行內(nèi)力分析,在桿件截面設(shè)計完成之后,基礎(chǔ)采用基于Revit開發(fā)的變電構(gòu)支架基礎(chǔ)設(shè)計程序進行三維正向設(shè)計,基礎(chǔ)采用天然基礎(chǔ)。

      圖3 某500 kV變電構(gòu)架

      在基礎(chǔ)設(shè)計過程中需要輸入柱腳的設(shè)計荷載,程序雖然提供了荷載輸入的功能,但是因柱腳和荷載工況較多,需要設(shè)計人員在Staad.Pro軟件中篩選部分荷載工況之后再輸入到軟件當(dāng)中,這往往會耗費較多的時間,且存在遺漏最不利工況的可能。程序在后續(xù)開發(fā)過程中引入了本文上述介紹的方法,提供了從Staad.Pro讀取上部結(jié)構(gòu)荷載的功能,在上部結(jié)構(gòu)設(shè)計完成之后,直接從輸出文件中讀取支座反力,再經(jīng)必要的設(shè)置和調(diào)整,即可獲取基礎(chǔ)的設(shè)計荷載。

      如圖4所示,對于荷載工況,Staad.Pro本身只進行單工況和組合工況的區(qū)分,對于組合工況則并不區(qū)分具體的類型,也不區(qū)分是否為地震工況,在設(shè)置導(dǎo)入的荷載工況時,程序可對荷載工況的類型進行初步判斷,并可由用戶進行調(diào)整。

      圖4 Staad.Pro荷載工況導(dǎo)入設(shè)置界面

      導(dǎo)入之后的基礎(chǔ)設(shè)計荷載如圖5所示,其中荷載作用點標(biāo)高可從支座的坐標(biāo)中讀取以作為默認值,也可由用戶進行修改。此后,基礎(chǔ)設(shè)計程序即可使用導(dǎo)入的荷載完成基礎(chǔ)計算及后續(xù)設(shè)計過程。

      圖5 導(dǎo)入后的基礎(chǔ)設(shè)計荷載

      本工程通過在基礎(chǔ)設(shè)計程序中引入支座反力讀取的模塊,實現(xiàn)了從Staad.Pro上部結(jié)構(gòu)計算到基礎(chǔ)設(shè)計荷載輸入的接口,簡化了人工篩選及輸入荷載工況的過程,提高了基礎(chǔ)設(shè)計程序的便利性和設(shè)計工作效率。

      4 結(jié)論

      本文介紹了通過讀取Staad.Pro輸入和輸出文件以獲取支座反力的一些要點,指出了在解析文件格式過程中的一些關(guān)鍵問題;并以C#語言為例,介紹了讀取支座反力的具體方法;最后通過在程序開發(fā)以及實際工程中的應(yīng)用,驗證了其在基礎(chǔ)設(shè)計過程中的可行性及便利性。

      猜你喜歡
      命令支座程序
      只聽主人的命令
      改性橡膠隔震支座抗拉性能試驗研究*
      基于ANSYS-UM聯(lián)合仿真的減振支座減隔振性能研究
      試論我國未決羈押程序的立法完善
      移防命令下達后
      “程序猿”的生活什么樣
      英國與歐盟正式啟動“離婚”程序程序
      這是人民的命令
      創(chuàng)衛(wèi)暗訪程序有待改進
      基于減隔震設(shè)計連續(xù)梁橋支座的選擇
      新绛县| 潮州市| 渝中区| 宁德市| 安岳县| 丹江口市| 石门县| 调兵山市| 吉木萨尔县| 扎囊县| 大新县| 扬中市| 镇原县| 巨野县| 读书| 绥芬河市| 凤山市| 邵阳县| 闸北区| 昆明市| 通化县| 沁水县| 大田县| 南溪县| 宜川县| 专栏| 社会| 伽师县| 广河县| 廊坊市| 海林市| 瑞安市| 鄂托克前旗| 双江| 永川市| 海安县| 休宁县| 平度市| 安国市| 成都市| 陆良县|