羅鎮(zhèn)泉 張冠楠 黃錦濤
(上海船舶研究設(shè)計(jì)院,上海201203)
NAPA BASIC在NAPA STEEL結(jié)構(gòu)快速建模中的應(yīng)用
羅鎮(zhèn)泉 張冠楠 黃錦濤
(上海船舶研究設(shè)計(jì)院,上海201203)
利用NAPA軟件提供的NAPA BASIC語(yǔ)言編寫(xiě)的宏,可以快速并準(zhǔn)確地完成一些NAPA STEEL船體結(jié)構(gòu)建模工作,可以節(jié)省很多人力并提高效率。通過(guò)總結(jié)船體結(jié)構(gòu)詳細(xì)設(shè)計(jì)經(jīng)驗(yàn),提出了幾項(xiàng)典型的利用NAPA BASIC宏語(yǔ)言實(shí)現(xiàn)部分船體結(jié)構(gòu)快速建模的案例:一鍵寫(xiě)入常用的開(kāi)孔和型材定義;自動(dòng)計(jì)算出尾部分段指定肋板上所有減輕孔的大小及中心位置,使其滿足設(shè)計(jì)要求,并將其定義寫(xiě)入STDEF表中;自動(dòng)完成雙層底指定肋板的定義,并將其寫(xiě)入STR表中等。
NAPA;NAPA BASIC;建模;NAPA STEEL
Abstract:In NAPA STEEL some modeling tasks could be done accurately and quickly by using macros developed with NAPA BASIC,which may save a lot of man work and improve efficiency.With summaries on structure detail design experience,several typical applications for quick NAPA STEEL structure modeling using NAPA BASIC macros had been introduced.The applications included functions such as writing the definition of OPENINGS and PROFILES with one button,automatically calculating the size and position of openings on the appointed stern floor which could fulfill the rule requirement and be written to the STDEF table,automatically defining double bottom floors and writing the definition into the STR table and so on.
Keywords:NAPA;NAPA BASIC;modeling;NAPA STEEL
NAPA STEEL是NAPA軟件用于三維結(jié)構(gòu)建模的一個(gè)模塊,在船體結(jié)構(gòu)基本設(shè)計(jì)及詳細(xì)設(shè)計(jì)的初步階段可以快速直觀地表達(dá)出船體的三維結(jié)構(gòu),并在較短時(shí)間內(nèi)完成精確的結(jié)構(gòu)重量重心位置統(tǒng)計(jì)。另外該軟件還可以批量生成二維圖紙,使得船舶設(shè)計(jì)的效率大大提高。
NAPA BASIC作為NAPA軟件自帶的二次開(kāi)發(fā)語(yǔ)言,可以實(shí)現(xiàn)功能定制[1],如船體結(jié)構(gòu)的參數(shù)化建模[2],加快NAPA STEEL船體結(jié)構(gòu)模型的建模速度。本文通過(guò)以下幾個(gè)案例詳細(xì)介紹如何利用NAPA BASIC來(lái)提高船體結(jié)構(gòu)建模的效率:
1)為解決建模伊始常用型材和開(kāi)孔快速定義的問(wèn)題,通過(guò)預(yù)先寫(xiě)好的常用型材和開(kāi)孔的宏定義語(yǔ)言,實(shí)現(xiàn)一鍵寫(xiě)入常用的開(kāi)孔和型材定義;
2)為解決尾部分段肋板上開(kāi)孔大小及開(kāi)孔位置需手動(dòng)計(jì)算及定義繁瑣且效率低下的問(wèn)題,通過(guò)宏語(yǔ)言自動(dòng)計(jì)算出尾部分段指定肋板上所有減輕孔的大小及中心位置,使其滿足設(shè)計(jì)要求,并將其定義寫(xiě)入STDEF表中;
3)以雙層底肋板建模為例,解決類(lèi)似船體結(jié)構(gòu)的SURFACE OBJECT快速定義的問(wèn)題,介紹了如何通過(guò)NAPA BASIC自動(dòng)完成雙層底指定肋板的定義,并將其寫(xiě)入STR表中。
NAPA BASIC宏接口是NAPA軟件為了提升設(shè)計(jì)者的設(shè)計(jì)效率而提供的一種二次開(kāi)發(fā)手段,通常在 TEXT 編輯器中編輯[3]。
在NAPA BASIC的宏中,一般包括以下兩種類(lèi)型的語(yǔ)句:NAPA命令;NAPA BASIC命令(或語(yǔ)句)[4]。NAPA 命令如 SO、GEN、UNS、!TYPE。 NAPA BASIC命令(或語(yǔ)句)包括一些特定的函數(shù),如對(duì)字符串的操作函數(shù) LEN()、SBS()、CNC()等,再如對(duì) NAPA數(shù)據(jù)庫(kù)中表格的操作函數(shù)TP.READ ()、TP.NLN()、TP.ASSIGN()等,當(dāng)然也包括與其他語(yǔ)言類(lèi)似的流控制語(yǔ)句:如@IF...@ENDIF,@FOR...@NEXT等。
一般常用的主要的數(shù)據(jù)類(lèi)型包括數(shù)值型(A NUMERICAL VALUE)或字符串型(A STRING (TEXT)VALUE)[4]。 對(duì)變量的賦值方法,主要有以下兩種:
1)在宏運(yùn)行過(guò)程中對(duì)變量賦值:用“@”標(biāo)記,如@A=5。
2)提示用戶輸入變量的值:如果是數(shù)值型,則以三個(gè)點(diǎn)表示,如@A=...GIVE THE VALUE OF A;如果是字符串型,則以四個(gè)點(diǎn)表示,如@A=....GIVE THE VALUE OF A。
另外可用類(lèi)似@A=ARR(3)的語(yǔ)句定義數(shù)組類(lèi)型,其中 ARR(1)、ARR(2)、ARR(3)分別代表數(shù)組元素的數(shù)據(jù)類(lèi)型為INTEGER、REAL、STRING。
在宏中用于注釋的語(yǔ)句用 “@@”標(biāo)記,如@@THIS IS A COMMENT。
因?yàn)镹APA BASIC在TEXT編輯器中調(diào)試及運(yùn)行,而NAPA軟件給予的調(diào)試工具有限,所以可以在宏編寫(xiě)中間插入諸如!TYPE、@AP.TYPE、!VAR LIST等命令,列出需要調(diào)試或檢驗(yàn)的結(jié)果。這樣可以檢驗(yàn)宏編寫(xiě)是否出現(xiàn)錯(cuò)誤。
本節(jié)通過(guò)以下三個(gè)宏案例詳細(xì)地介紹了在船體結(jié)構(gòu)建模過(guò)程中碰到的一些問(wèn)題,以及如何利用NAPA BASIC來(lái)解決這些問(wèn)題以提高船體結(jié)構(gòu)建模效率的思路和方法,以及最終的運(yùn)行結(jié)果。
2.1.1 宏編寫(xiě)的背景
雖然NAPA STEEL內(nèi)部擁有標(biāo)準(zhǔn)的型材庫(kù)和開(kāi)孔庫(kù),但仍然需要用戶在特定的項(xiàng)目建模開(kāi)始之前,手動(dòng)定義“TAB*PROFILES”和“TAB*OPENINGS”,以便在定義STDEF表格的時(shí)候?qū)ζ溥M(jìn)行引用。因這些內(nèi)容對(duì)于不同的項(xiàng)目來(lái)說(shuō),共性比較大,故可以在建模之初,先行一次性導(dǎo)入常用的型材和開(kāi)孔的定義。
2.1.2 宏的實(shí)現(xiàn)方法
利用TAB命令進(jìn)入TAB模塊,將“TAB*PROFILES”或“TAB*OPENINGS”讀入工作區(qū)之后,利用SEL和DEF命令組合,可以將PROFIES或OPENINGS的定義通過(guò)預(yù)設(shè)的宏自動(dòng)寫(xiě)入NAPA數(shù)據(jù)庫(kù)中,實(shí)現(xiàn)PROFIES或OPENINGS的自動(dòng)定義。
核心代碼如下:
1)對(duì)PROFILES的定義
2)對(duì)OPENINGS的定義
2.1.3 宏運(yùn)行結(jié)果
運(yùn)行結(jié)果如圖1和圖2所示。
圖1 宏運(yùn)行后TAB*PROFILES表示意
圖2 宏運(yùn)行后TAB*OPENINGS表示意
2.1.4 注意要點(diǎn)
為了防止運(yùn)行宏寫(xiě)入型材或開(kāi)孔的時(shí)候,因?yàn)楸砀裰幸呀?jīng)存在同樣的定義而出錯(cuò),可以在新定義的開(kāi)孔或型材前加上特定的前綴加以區(qū)別。如表中已存在HP140X9,再寫(xiě)入同樣的定義會(huì)出錯(cuò);那么在批量寫(xiě)入的定義中統(tǒng)一加上前綴,如AFT_HP140X9,則可以避免錯(cuò)誤的發(fā)生。
2.2.1 宏編寫(xiě)的背景
根據(jù)規(guī)范要求[5],在雙層底肋板上的開(kāi)孔高度應(yīng)不大于該處雙層底高度的50%。在設(shè)計(jì)過(guò)程中,在尾部肋板上的減輕孔的開(kāi)孔大小也參照此條,一般不超過(guò)該處肋板高度的一半。
如果手動(dòng)定義這些開(kāi)孔,則首先需要選定一個(gè)肋位,在這個(gè)肋位的肋板上依次量取每個(gè)扶強(qiáng)材間距位置處肋板的高度,然后手動(dòng)計(jì)算出需要的減輕孔大小,以及布置的高度。如果尾部肋板有10個(gè)肋位,而每個(gè)肋位需要開(kāi)4個(gè)開(kāi)孔,則需要重復(fù)上述工作40次,比較費(fèi)時(shí)。
利用NAPA BASIC語(yǔ)言,可以通過(guò)循環(huán)語(yǔ)句@FOR...@NEXT,對(duì)所有肋位的每一個(gè)扶強(qiáng)材間距進(jìn)行循環(huán)考察,自動(dòng)獲取肋板高度,并自動(dòng)計(jì)算出所需要的減輕孔大小,以及布置的高度。這樣可以避免許多的重復(fù)勞動(dòng),極大地提高了效率。
2.2.2 宏主過(guò)程的實(shí)現(xiàn)方法
1)首先利用DEF命令進(jìn)入NAPA STEEL的DEF模塊,提示用戶輸入指定格式的字符串 (即定義OPENING的肋位范圍),如 “#0#4”,然后利用如PARSE、SBS、CNC等字符串操作函數(shù)將其解析成一個(gè)由FRAME0到FRAME4的肋位線名稱組成的數(shù)組,再通過(guò)GEN命令,生成這些肋位線的CURVE對(duì)象。如以下語(yǔ)句可以生成FR0處的肋位線FRAME0:
GEN FRAME0 HULL/X=FMT(XFR(0))
2)針對(duì)每檔肋位線,通過(guò)POINT命令,根據(jù)給定的每檔扶強(qiáng)材位置處的Y坐標(biāo)獲得該點(diǎn)處船殼的Z坐標(biāo)。如以下語(yǔ)句可以得到FRAME0上,第J個(gè)扶強(qiáng)材處的Z坐標(biāo):
POINT(FRAME0,2,XFR(J,3),1,3)
其中:XFR 函數(shù)格式為 XFR (FRAME,S),S 可以是以下幾種參數(shù):1=FRAMES,2=WEBS,3=LONGITUDINALS,4=VERTICALS。
3)提示用戶輸入尾部平臺(tái)的高度PLAT,PLAT與船殼的Z坐標(biāo)之差即肋板的高度。
@GOSUB ADDHOLE
(子過(guò)程的實(shí)現(xiàn)方法參見(jiàn)2.2.3)
5)回到DEF模塊下,用UNS命令從NAPA數(shù)據(jù)庫(kù)中刪除新建的肋位線對(duì)象。如以下語(yǔ)句可以刪除肋位線FRAME0:
UNS FRAME0
2.2.3 宏子過(guò)程的實(shí)現(xiàn)方法
1)首先利用@LABEL語(yǔ)句標(biāo)記子過(guò)程的開(kāi)始,并用@RETURN語(yǔ)句標(biāo)記子過(guò)程的結(jié)束。代碼如下:
@LABEL ADDHOLE
@RETURN
正確的監(jiān)測(cè)分析方法是獲得準(zhǔn)確結(jié)果的關(guān)鍵因素之一。每一種監(jiān)測(cè)分析方法的靈敏度和準(zhǔn)確度要能滿足要求,方法成熟,抗干擾能力強(qiáng),操作簡(jiǎn)便。在常規(guī)監(jiān)測(cè)中,分光光度法用得較多,可測(cè)定多種金屬和非金屬離子或化合物;原子吸收法主要用于多種微量、痕量金屬元素的測(cè)定;容量法主要用于DO、COD、BOD5等的測(cè)定。審核時(shí)主要關(guān)注一些新監(jiān)測(cè)標(biāo)準(zhǔn)和方法有沒(méi)有進(jìn)行及時(shí)更新。
2)通過(guò)以下算法,根據(jù)肋板高度值得到減輕孔的開(kāi)孔大小和減輕孔中心的高度。此處HFLOOR(K)為數(shù)組HFLOOR第K個(gè)元素的值,即某位置的肋板高度,而VZ為減輕孔中心的高度,HOLEH為減輕孔的開(kāi)孔大小。
@VZ=PLAT-INT (HFLOOR (K)*1 000/100)*50/1 000
@HOLEH=INT (HFLOOR (K)*1 000/200)*100
需要注意的是,NAPA中單位為m,而減輕孔的開(kāi)孔大小一般是整百mm,而減輕孔中心的高度為整五十mm,故需要運(yùn)用以上的換算方法。
3)進(jìn)入STDEF模塊,將需要編輯的STDEF表格(名稱以變量表示,可以在宏內(nèi)設(shè)定,也可以提示用戶進(jìn)行輸入)讀入工作區(qū),然后用SEL和DEF命令將開(kāi)孔定義寫(xiě)入當(dāng)前表格。如以下代碼可以在A.FLOOR0表中寫(xiě)入內(nèi)容:
2.2.4 宏運(yùn)行結(jié)果
運(yùn)行結(jié)果如圖3和圖4所示。
圖3 宏運(yùn)行后STDEF表示意
圖4 宏運(yùn)行后肋板上開(kāi)孔及加筋示意
2.2.5 注意要點(diǎn)
1)在宏編寫(xiě)的過(guò)程中,需要特別注意NAPA BASIC函數(shù)的參數(shù)傳遞。因?yàn)楹瘮?shù)參數(shù)較多,如果對(duì)參數(shù)的含義理解不正確,可能導(dǎo)致結(jié)果謬誤。如POINT函數(shù)格式如下:
POINT (CURVE,AXIS,Q,N,QAXIS), 包 含 的參數(shù)有5個(gè),而實(shí)際使用中5個(gè)參數(shù)又不是必須傳遞的。 如以下兩條語(yǔ)句 @P=POINT (‘FRF’,3,4),@Y=COORD (‘FRF’,2,P) 和以下一條語(yǔ)句 @Y=POINT(‘FRF’,3,4,1,2)是等效的。 這個(gè)在實(shí)際的應(yīng)用中需要逐步的摸索。
2)因?yàn)樵谖膊糠侄卫甙迳系拈_(kāi)孔基本上最小是400 mm直徑,然后從400 mm×500 mm開(kāi)始依次根據(jù)肋板的高度增加而增大,所以在宏代碼中,需要對(duì)于肋板高度進(jìn)行判斷,如果小于800 mm,那么此處不開(kāi)孔,如果處于800 mm~1 000 mm,開(kāi)的是400 mm×500 mm的孔,以此類(lèi)推。
2.3.1 宏編寫(xiě)的背景
在NAPA STEEL船體結(jié)構(gòu)建模過(guò)程中,因?yàn)椴煌呶惶幚甙宓亩x語(yǔ)句基本一樣,可以用循環(huán)語(yǔ)句來(lái)批量定義這些肋板。
2.3.2 宏的實(shí)現(xiàn)方法
1)首先提示用戶輸入內(nèi)底板SO對(duì)象名(如@UP),以及起始結(jié)束的肋位和定義的步長(zhǎng)(如STA、EN、STEP)。利用循環(huán)語(yǔ)句可以一次性完成該范圍內(nèi)的肋板的定義。主要代碼如下:
其中PREFIX是指定的肋板命名前綴。
2)利用STR命令進(jìn)入STR模塊,將目標(biāo)表格讀入工作區(qū)(如@TAB),再利用SEL和DEF命令將定義好的肋板一次性寫(xiě)入到目標(biāo)表格中。主要代碼如下:
2.3.3 宏運(yùn)行結(jié)果
根據(jù)用戶給定的變量值,如@UP=“C.BOTM”,@STA =55,@EN =100,@STEP =2,@PREFIX =“C.FLOOR”,@TAB=“FLOOR” 可以得到運(yùn)行結(jié)果如圖5所示。
圖5 宏運(yùn)行后STR表示意
本文通過(guò)幾個(gè)案例詳細(xì)地介紹了如何利用NAPA BASIC語(yǔ)言編寫(xiě)一些能實(shí)現(xiàn)NAPA STEEL船體結(jié)構(gòu)快速建模的宏,并介紹了宏編制的思路和方法。
船體結(jié)構(gòu)建模是一項(xiàng)復(fù)雜的工作,只有在不斷的實(shí)踐過(guò)程中,才能總結(jié)出規(guī)律性的東西,并將有一定規(guī)律性的重復(fù)工作交給宏來(lái)完成。希望本文能給予經(jīng)常使用NAPA STEEL軟件進(jìn)行船體結(jié)構(gòu)建模,并想通過(guò)NAPA BASIC進(jìn)行二次開(kāi)發(fā)加快工作效率的讀者一些借鑒和啟發(fā)。
[1]盛慶武.工程船船體濕表面網(wǎng)格NAPA軟件自動(dòng)生成技術(shù)[J].船舶,2010(6):53-57.
[2]管義鋒,王劍.基于NAPA Steel的船體結(jié)構(gòu)參數(shù)化建模研究[J].船舶工程,2009(5):37-39.
[3]周煜.宏在NAPA船舶完整穩(wěn)性校核中的應(yīng)用[J].廣東造船,2014(6):48-49.
[4]NAPA.NAPA for Design Manuals[G].2013.
[5]中國(guó)船級(jí)社.鋼質(zhì)海船入級(jí)規(guī)范[S].2015.
Application of NAPA BASIC in NAPA STEEL Structure Quick Modeling
LUO Zhen-quan ZHANG Guan-nan HUANG Jin-tao
(Shanghai Merchant Ship Design and Research Institute,Shanghai 201203,China)
U662.9
A
1001-4624(2017)01-0075-04
2016-09-30;
2017-04-15
羅鎮(zhèn)泉(1987—),男,工程師,從事船舶結(jié)構(gòu)設(shè)計(jì)工作。
張冠楠(1987—),男,工程師,從事船舶結(jié)構(gòu)設(shè)計(jì)工作。
黃錦濤(1985—),男,工程師,從事船舶結(jié)構(gòu)設(shè)計(jì)工作。