国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

正則表達(dá)式技術(shù)在結(jié)構(gòu)施工圖中的應(yīng)用

2013-11-06 02:54:46辛金超
山西建筑 2013年5期
關(guān)鍵詞:施工圖圖層工程師

辛金超

(上海建筑設(shè)計(jì)研究院有限公司,上海 200041)

圖紙是工程師的語言,其中包含了大量的信息。將正則表達(dá)式技術(shù)結(jié)合到Visual LISP中,并用其處理結(jié)構(gòu)施工圖,是一個(gè)簡單便捷而又智能準(zhǔn)確的方法。使用該方法處理設(shè)計(jì)制圖時(shí)遇到的問題,可以高效、準(zhǔn)確地完成設(shè)定任務(wù),突破一些圖紙?zhí)幚頃r(shí)遇到的瓶頸,提高工作效率和繪圖質(zhì)量。

1 開發(fā)工具及正則表達(dá)式

Visual LISP(VLISP)是新一代的AutoCAD LISP語言,它增強(qiáng)并擴(kuò)展了AutoLISP[1],提供了曲線測量、反應(yīng)器及ActiveX功能,并且程序可以編譯,加快了運(yùn)行速度。對于時(shí)間緊張的工程設(shè)計(jì)人員來說,開發(fā)效率和使用效率同等重要,選擇開發(fā)效率較高的AutoLISP語言,能夠高效地完成一般開發(fā)任務(wù),非常適合開發(fā)專業(yè)性很強(qiáng)并且結(jié)合工程師切身需要的應(yīng)用程序。所謂正則表達(dá)式(Regular Expression),就是一種描述字符串結(jié)構(gòu)模式的形象化表達(dá)方法。它優(yōu)美而又功能強(qiáng)大,是計(jì)算機(jī)軟件領(lǐng)域內(nèi)的一項(xiàng)偉大發(fā)明[2]。正則表達(dá)式由“元字符”和“文字”組成,二者構(gòu)成了描述字符串結(jié)構(gòu)模式的描述語法。它能夠添加、刪除、分離、疊加、插入和修整各種類型的文本和數(shù)據(jù)[2],具有很廣泛的應(yīng)用。

2 正則表達(dá)式在VLISP中的具體實(shí)現(xiàn)

正則表達(dá)式的使用需要宿主語言,雖然VLISP暫時(shí)不支持其使用,但憑借其對ActiveX功能的支持,可以編程驅(qū)動(dòng)一些外部對象,將此功能融合到程序中。在VLISP中使用ActiveX Automation功能操作外部對象可以使用vlax-invoke-method函數(shù)調(diào)用特定對象的方法,用vlax-get-property和vlax-put-property函數(shù)獲取和設(shè)置特定對象的屬性,相對于導(dǎo)入類型庫方式來說,該方式較為節(jié)省內(nèi)存開銷[3]。VBScript在Windows系統(tǒng)中較為常用,如果只是使用VBScript的正則表達(dá)式能力,那么可以直接創(chuàng)建“VBScript.RegExp”對 象:“(setq regex(vlax-create-object"VBScript.RegExp"))”,在設(shè)置完“regex”對象的“Pattern”等屬性之后,分別執(zhí)行其“Test”“Replace”“Execute”方法可以對目標(biāo)字符串進(jìn)行“測試”“替換”“獲取子匹配”的操作。

perl的正則表達(dá)式能力很強(qiáng),基于內(nèi)建而非外部擴(kuò)展,不是通過函數(shù)方式或者面向?qū)ο蟮姆椒ㄕ{(diào)用,而是采用“=~”“!~”運(yùn)算符結(jié)合正則表達(dá)式本身所提供的各種修飾符來決定進(jìn)行何種運(yùn)算。可以在程序中使用ScriptControl對象來調(diào)用perl的語言解釋器,解析腳本語言,下面給出了主要實(shí)現(xiàn)代碼:

(setq theScriptControl(vlax-create-object"ScriptControl"))

(vlax-put-property theScriptControl"Language""PerlScript")

(vlax-invoke-method theScriptControl"ExecuteStatement"(strcat"$TagetString=""TagetString"";""$s=$TagetString=~"thePattern";"))

(vlax-invoke-method theScriptControl"eval""$s");此即結(jié)果

此方式能夠支持固定長度的反向預(yù)查,但是需要提供完整的perl風(fēng)格的匹配表達(dá)式,便于分隔符的靈活使用,例如上段代碼中,可令thePattern變量為"m/abc/"。

使用 Jscript語言時(shí)將上述代碼中的“PerlScript”替換為“JScript”,并采用如下語句:

(vlax-invoke-method theScriptControl"ExecuteStatement"(strcat"var TagetString=""TagetString"";""var thePattern=/"thePattern"/"))

(vlax-invoke-method theScriptControl"eval""thePattern.test(TagetString)");此即結(jié)果

3 正則表達(dá)式在結(jié)構(gòu)施工圖中的具體應(yīng)用

3.1 應(yīng)用平法規(guī)則提取計(jì)算信息

在平法施工圖廣泛應(yīng)用的今天,工程師經(jīng)常要與各種標(biāo)注打交道,將正則表達(dá)式用作信息提取,事半而功倍。腰筋處理是一項(xiàng)需要獲取較多信息的工作,《混凝土結(jié)構(gòu)設(shè)計(jì)規(guī)范》[4]和《高層建筑混凝土結(jié)構(gòu)技術(shù)規(guī)程》[5]對鋼筋混凝土梁(包括連梁、轉(zhuǎn)換梁)的腰筋在鋼筋直徑、面積配筋率、鋼筋豎向間距方面都有明確規(guī)定,如果梁承受扭矩的作用,還需要滿足抗扭承載力的要求。圖1給出了使用VLISP處理腰筋程序的信息獲取部分。

圖1 腰筋計(jì)算信息識別部分流程圖

3.2 快速定位需要修改的圖層

圖層名是圖紙中必然存在的字符信息,這也是將正則表達(dá)式應(yīng)用于圖紙?zhí)幚淼囊粋€(gè)現(xiàn)實(shí)基礎(chǔ)。在AutoCAD中圖層與圖層名之間具有一一對應(yīng)關(guān)系,正確識別出需要操作的圖層名稱,就正確找到了需要處理的圖層以及該圖層中的具體對象。對于圖層的選擇,常用的方法是對所選對象的圖層屬性進(jìn)行提取,但是當(dāng)我們知道圖層的命名特點(diǎn)時(shí),就可以采用正則表達(dá)式定位法對這些圖層進(jìn)行迅速準(zhǔn)確的定位。例如可以使用正則表達(dá)式“^(.*?)(下)?(模型|變形).* ”及替換為字符串“0825-$1$3”,將一些工況下的變形圖以及初始模型圖層的名稱改變。

3.3 快速切換到所需布局

在處理施工圖時(shí)往往會遇到布局很多的情況,使用AutoCAD自帶的滾動(dòng)條來切換效率不是很高,若中間出現(xiàn)錯(cuò)誤點(diǎn)擊,則更增加了使用者的等待時(shí)間,若能首先準(zhǔn)確方便地定位到某布局之后一次性切換,這無疑會給圖紙查看帶來便利?;诖四康模谱髁斯δ芎瘮?shù),用戶可以輸入相對模糊的正則匹配條件,程序會將匹配的結(jié)果按照標(biāo)簽的排列順序列出,供用戶二次選擇,最后切換至指定布局。

4 結(jié)語

AutoLISP非常適合開發(fā)專業(yè)性很強(qiáng)并且符合工程師切身需要的應(yīng)用程序,它能夠結(jié)合工程師對CAD系統(tǒng)的使用經(jīng)驗(yàn),具有很高的開發(fā)效率。正則表達(dá)式是一種面向?qū)嵺`的思想和方法,實(shí)實(shí)在在地提高了使用者的實(shí)戰(zhàn)能力。通過VLISP中提供的ActiveX方法,將正則表達(dá)式功能結(jié)合到程序當(dāng)中,一方面提高了程序設(shè)計(jì)的效率,間接地節(jié)省了工程師的時(shí)間;另一方面,提供給工程師在CAD中直接使用正則表達(dá)式的接口,促進(jìn)了制圖效率效果的改善。

[1] Autodesk Inc.Introduction[EB/OL].http://exchange.autodesk.com/autocad/enu/online-help/search # WSfacf1429558a55de1-a7524c1004e616f8b-5bb9.htm.

[2] Jeffrey E.F.Friedl.精通正則表達(dá)式[M].第 3版.余 晟,譯.北京:電子工業(yè)出版社,2012:2.

[3] Autodesk Inc.Using ActiveX without Importing a Type Library[EB/OL].http://exchange.autodesk.com/autocad/enu/online-help/search#WS73099cc142f4875516d84be10ebc87a53f-7bcb.htm.

[4] GB 50010-2010,混凝土結(jié)構(gòu)設(shè)計(jì)規(guī)范[S].

[5] JGJ 3-2010,高層建筑混凝土結(jié)構(gòu)技術(shù)規(guī)程[S].

猜你喜歡
施工圖圖層工程師
《機(jī)械工程師》征訂啟事
大題小做,施工圖是一個(gè)建筑項(xiàng)目的縮影
Kenoteq的工程師研發(fā)環(huán)保磚塊
英語文摘(2021年10期)2021-11-22 08:02:40
探討輸變電工程施工圖預(yù)算管理與控制
探討輸變電工程施工圖預(yù)算管理與控制
青年工程師
安徽建筑(2020年4期)2020-05-23 01:37:12
巧用混合圖層 制作抽象動(dòng)感森林
圖層法在地理區(qū)域圖讀圖中的應(yīng)用
工程師變成“資本家”
淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
河南科技(2014年6期)2014-04-04 08:00:42
武宁县| 县级市| 武夷山市| 福泉市| 通城县| 土默特右旗| 阜城县| 桑日县| 河源市| 上饶市| 维西| 四川省| 吴堡县| 杭锦后旗| 会理县| 石首市| 九龙县| 新源县| 平罗县| 岢岚县| 永和县| 天镇县| 中超| 新源县| 嘉禾县| 安乡县| 青浦区| 尖扎县| 盐亭县| 巴彦县| 手游| 谢通门县| 弥勒县| 通榆县| 罗城| 孟州市| 拉萨市| 任丘市| 连城县| 诸暨市| 青州市|