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

?

VisualLISP語(yǔ)言在供水工程CAD制圖中的應(yīng)用

2018-10-21 13:40:20蘇亞楠
科技信息·中旬刊 2018年7期
關(guān)鍵詞:二次開發(fā)

蘇亞楠

摘要:VisualLISP作為AutoCAD內(nèi)嵌的計(jì)算機(jī)語(yǔ)言,是進(jìn)行AutoCAD二次開發(fā)的重要工具,利用VisualLISP編寫具有針對(duì)性的實(shí)用軟件,可替代設(shè)計(jì)人員完成大量重復(fù)性工作,達(dá)到提高制圖效率的目的。在簡(jiǎn)述AutoCAD各種二次開發(fā)接口的基礎(chǔ)上,著重介紹了如何利用VisualLISP擴(kuò)展AutoCAD的功能。

關(guān)鍵詞:VisualLISP;AutoCAD;二次開發(fā)

VisualLISP language applications in water supply engineering CAD drawing

Su Ya-nan

(Tianjin Municipal Water-conservancy Survey and Design Institute,Tianjin 300204,China)

Abstract:VisualLISP as an embedded AutoCAD computer language,is an important tool for AutoCAD second development,VisualLISP prepared by the utility software,can replace designers to complete a large number of repetitive work,to improve drawing efficiency. Based on introduction of AutoCAD secondary development interface,mainly introduces how to use VisualLISP to extend the function of AutoCAD

Keywords:VisualLISP AutoCAD Secondary development

AutoCAD是供水工程制圖中普遍采用的計(jì)算機(jī)輔助設(shè)計(jì)軟件,該軟件使得工程繪圖的速度和質(zhì)量都的得到了很大的提升。但是供水工程制圖中存在大量的重復(fù)性工作,例如管線坐標(biāo)、高程、轉(zhuǎn)點(diǎn)、管材及樁號(hào)等信息的標(biāo)注。AutoCAD對(duì)于上述重復(fù)性工作來(lái)說,自動(dòng)化程度較低,使得工程勘查設(shè)計(jì)人員將大量的時(shí)間都花費(fèi)在繁瑣的繪圖中。針對(duì)以上問題,雖然很多軟件廠商也開發(fā)了相應(yīng)的專業(yè)軟件,但由于這些軟件要考慮各設(shè)計(jì)單位的通用性,很難滿足工程制圖中的一些具體要求,使用具有局限性。因此設(shè)計(jì)人員如能掌握AutoCAD二次開發(fā)軟件,編寫具有針對(duì)性的實(shí)用軟件,可極大的提高其繪圖效率。

目前AutoCAD系統(tǒng)為用戶提供了VisualLISP、AutoCAD Development System(C)、ObjectARX(C++)及 VBA等多種二次開發(fā)接口,其中VisualLISP作為默認(rèn)的代碼編輯工具在AutoCAD2000中已經(jīng)被完整地集成到系統(tǒng)中,開發(fā)者可以直接使用AutoCAD中的對(duì)象和反應(yīng)器,進(jìn)行底層的開發(fā)。通過有色代碼編輯器和完善的調(diào)試工具,使開發(fā)人員很容易創(chuàng)建和分析LISP程序的運(yùn)行情況。本文主要介紹利用VisualLISP對(duì)AutoCAD進(jìn)行二次開發(fā)的過程。

AutoCAD二次開發(fā)主要是根據(jù)供水工程制圖的流程,利用VisualLISP編寫AutoCAD繪圖命令,自動(dòng)完成圖紙數(shù)據(jù)的提取、計(jì)算及輸出,最大程度的實(shí)現(xiàn)自動(dòng)化制圖。具體內(nèi)容如下:

1、子模塊功能規(guī)劃

根據(jù)供水工程一般設(shè)計(jì)過程,需首先完成平面布置及初步管材劃分,而后根據(jù)平面布置成果進(jìn)行縱斷面布置,并進(jìn)一步細(xì)化管材劃分,待平面及縱斷面布置全部完成后,分別進(jìn)行相應(yīng)標(biāo)注工作。

其中,平面圖中需進(jìn)行轉(zhuǎn)點(diǎn)坐標(biāo)、轉(zhuǎn)點(diǎn)樁號(hào)、轉(zhuǎn)角角度、整公里樁號(hào)及管材標(biāo)注。縱斷圖需進(jìn)行地面高程、管中心線高程、管材分段樁號(hào)、管材分段長(zhǎng)度、轉(zhuǎn)角編號(hào)、轉(zhuǎn)角樁號(hào)及閘閥的標(biāo)注。根據(jù)以上制圖內(nèi)容可劃分為6個(gè)子模塊,各模塊功能分述如下:

(1)平面圖轉(zhuǎn)點(diǎn)標(biāo)注模塊

該模塊主要完成對(duì)平面圖中各轉(zhuǎn)點(diǎn)進(jìn)行編號(hào),同時(shí)從圖中讀取各轉(zhuǎn)點(diǎn)坐標(biāo),根據(jù)轉(zhuǎn)點(diǎn)坐標(biāo)完成樁號(hào)及轉(zhuǎn)角角度計(jì)算,在完成上述工作后,在平面圖中自動(dòng)完成標(biāo)注工作。

(2)平面圖管材標(biāo)注模塊

該模塊主要根據(jù)管材變化情況自動(dòng)完成起點(diǎn)、終點(diǎn)樁號(hào)的計(jì)算和標(biāo)注,同時(shí)根據(jù)選定的線型完成管線及接口的繪制。

(3)平面圖整樁號(hào)標(biāo)注模塊

該模塊主要根據(jù)管道布置自動(dòng)完成整樁號(hào)點(diǎn)的坐標(biāo)計(jì)算,并進(jìn)行樁號(hào)標(biāo)注。

(4)縱斷面圖管材標(biāo)注模塊

該模塊根據(jù)平面圖的管材信息自動(dòng)完成縱斷面圖管材的劃分,并進(jìn)行劃分點(diǎn)的地面高程、管中心線高程、樁號(hào)及劃分段長(zhǎng)度的計(jì)算與標(biāo)注。

(5)縱斷面圖轉(zhuǎn)點(diǎn)標(biāo)注模塊

該模塊根據(jù)平面圖的轉(zhuǎn)點(diǎn)信息,自動(dòng)完成縱斷面圖的轉(zhuǎn)點(diǎn)編號(hào)及樁號(hào)的標(biāo)注。

(6)縱斷面圖閘閥標(biāo)注模塊

該模塊根據(jù)用戶確定的閘閥位置,自動(dòng)在縱斷面圖中完成閘閥的繪制,并完成閘閥的編號(hào)及樁號(hào)標(biāo)注。

2、子模塊功能實(shí)現(xiàn)

在實(shí)現(xiàn)模塊功能之前,應(yīng)首先完成各個(gè)模塊的程序流程圖,現(xiàn)以整樁號(hào)標(biāo)注模塊為例說明功能實(shí)現(xiàn)的過程。該模塊的流程見圖1,主程序部分源代碼及注釋如下:

首先通過setq語(yǔ)句對(duì)本模塊涉及的輸出精度、字號(hào)及輸出位置等參數(shù)進(jìn)行初始化。

而后通過命令行文本提示用戶在平面圖中選取多段線,并輸入起始樁號(hào)及終止樁號(hào)。通過entget語(yǔ)句得到相應(yīng)多段線圖元;通過length語(yǔ)句得到該圖元所包含的折點(diǎn)數(shù)。

(setq pt_lst(mapcar 'cdr(vl-remove-if-not '(lambda(x)(=(car x)10))(entget en))));

(setq number(length pt_lst));

判斷終止樁號(hào)是否在線路范圍內(nèi),如超出則通過fix語(yǔ)句將線路末端的整數(shù)樁號(hào)做為終止樁號(hào)。

(while(> pd_number 1)

(setq now_cd(sqrt(+(expt x_cd 2)(expt y_cd 2))))

(setq q_zh(+ q_zh now_cd))

(setq pd_number(1- pd_number))

(setq pd_lst(cdr pd_lst)))

(if(> end_zh q_zh)(setq end_zh(*(fix(/ q_zh 500))500)));

計(jì)算各折點(diǎn)距離,找到首個(gè)整數(shù)樁號(hào)位置,并進(jìn)行相應(yīng)標(biāo)注。

;如果當(dāng)前折點(diǎn)的累積長(zhǎng)度小于整數(shù)樁號(hào)則繼續(xù)尋找下一個(gè)折點(diǎn)

(if(< q_zh begin_zh)

(progn(setq now_cd(sqrt(+(expt x_cd 2)(expt y_cd 2))))

(setq q_zh(+ q_zh now_cd)))

;如果當(dāng)前折點(diǎn)的累積長(zhǎng)度大于整數(shù)樁號(hào)則計(jì)算整數(shù)樁號(hào)點(diǎn)坐標(biāo),并對(duì)輸出結(jié)果進(jìn)行格式化后,通過command語(yǔ)句調(diào)用AutoCAD命令進(jìn)行標(biāo)注。在進(jìn)行標(biāo)注前需使用setvar命令設(shè)置AutoCAD系統(tǒng)變量值來(lái)關(guān)閉繪圖捕捉。

;計(jì)算坐標(biāo)

(progn(setq xl(atan(- point_y point_old_y)(- point_x point_old_x)))

(setq biaodian_x(+ point_x(*(cos xl)(- begin_zh q_zh))))

(setq biaodian_y(+ point_y(*(sin xl)(- begin_zh q_zh))))

(if(= weizhi 1)(setq line_xl(- xl 1.5708))(setq line_xl(+ xl 1.5708))) (下轉(zhuǎn)第頁(yè))

(上接第頁(yè))

;格式化輸出結(jié)果

(setq zh_int(fix(/ begin_zh 1000)))

(setq zh_float(- begin_zh(* zh_int 1000)))

(if(>= zh_float 100)(setq fh "+"))

(if(and(< zh_float 100)(>= zh_float 10))(setq fh "+0"))

(if(and(< zh_float 10)(>= zh_float 0))(setq fh "+00"))

;關(guān)閉繪圖捕捉后調(diào)用CAD命令進(jìn)行標(biāo)注

(setvar "osmode"(logior(getvar "osmode")16384));

(command "line" line1 line2 "")

(command "text" text_zb heg jd out_zh)

將源代碼保存為L(zhǎng)SP文件后,在AutoCAD環(huán)境中調(diào)入上述文件即可根據(jù)設(shè)計(jì)人員確定的管線布置,完成特定區(qū)間的整樁號(hào)標(biāo)注。由于篇幅所限,對(duì)其他模塊流程不再介紹。

3工程實(shí)例

在南水北調(diào)中線天津市內(nèi)配套寧漢供水工程中設(shè)計(jì)人員使用本套VisualLISP工程制圖插件進(jìn)行輔助制圖。該工程管線長(zhǎng)度約50km,采用雙排管道輸水。共需繪制管道平面布置圖及管道縱斷面圖約100張,圖紙中涉及大量數(shù)據(jù)標(biāo)注工作。在使用過程中根據(jù)設(shè)計(jì)人員的反饋意見,對(duì)部分功能進(jìn)行了補(bǔ)充及調(diào)整。主要包括以下幾點(diǎn):

(1)為便于對(duì)圖紙內(nèi)容進(jìn)行管理,通過調(diào)用AutoCAD中l(wèi)ayer命令,將各插件的輸出成果分別繪制在不同的圖層內(nèi)。

(2)由于平面圖中的線路及縱斷面圖中的地面線與管中心線均為多段線,設(shè)計(jì)人員在工程布置過程中需經(jīng)常對(duì)上述多段線進(jìn)行分?jǐn)嗉昂喜ⅲ纱嗽斐啥喽尉€方向與線路方向不一致的問題,為此另外編寫了可對(duì)多段線方向進(jìn)行調(diào)整的程序。

(3)在設(shè)計(jì)過程中,經(jīng)常需要測(cè)量線路中特定點(diǎn)的樁號(hào)及特定樁號(hào)的位置,為此分別編寫了平面圖及縱斷面圖單點(diǎn)標(biāo)注程序,以滿足需要。

通過使用本套制圖插件,極大提高了設(shè)計(jì)人員的制圖效率。由于本套插件可實(shí)現(xiàn)數(shù)據(jù)自動(dòng)采集、計(jì)算及輸出,因此基本避免了圖紙中出現(xiàn)計(jì)算及量測(cè)錯(cuò)誤的可能性。由于本套插件編寫時(shí)間較倉(cāng)促,故未進(jìn)行圖形化交互設(shè)計(jì),且與AutoCAD結(jié)合程度較低,在今后可進(jìn)一步優(yōu)化人機(jī)交互界面,使程序應(yīng)用更加便捷。

4、結(jié)語(yǔ)

利用VisualLISP語(yǔ)言,設(shè)計(jì)人員可根據(jù)自身需要開發(fā)出有針對(duì)性的插件,如本次編寫過程中除上述主功能模塊外,還根據(jù)實(shí)際情況編寫了多段線方向調(diào)整、平面圖單點(diǎn)標(biāo)注及縱斷面單點(diǎn)標(biāo)注等輔助性模塊,進(jìn)一步提高了制圖效率。同時(shí),VisualLISP語(yǔ)言還可形成圖形化界面,使用戶得到更友好的人機(jī)交互。

由于VisualLISP是一種嵌于AutoCAD內(nèi)部的計(jì)算機(jī)語(yǔ)言,具備與其他高級(jí)語(yǔ)言基本相同的結(jié)構(gòu)與功能。同時(shí),通過利用與AutoCAD之間良好的通訊能力,使其具有其他高級(jí)語(yǔ)言所沒有的制圖能力。應(yīng)用VisualLISP對(duì)AutoCAD進(jìn)行二次開發(fā),可大大提高繪圖的效率,是值得設(shè)計(jì)人員深入學(xué)習(xí)和掌握的一種計(jì)算機(jī)語(yǔ)言。

猜你喜歡
二次開發(fā)
淺談基于Revit平臺(tái)的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
基于C#的AutoCAD建筑構(gòu)件庫(kù)二次開發(fā)
江西建材(2018年2期)2018-04-14 08:01:14
西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
基于全站儀二次開發(fā)的覆冰厚度測(cè)量與實(shí)現(xiàn)
Micaps3.2 版本二次開發(fā)入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
基于VB的ANSYS二次開發(fā)在變壓器抗短路性能分析中的應(yīng)用
基于CATIA的橡皮囊成形毛料展開的二次開發(fā)
ANSYS Workbench二次開發(fā)在汽車穩(wěn)定桿CAE分析中的應(yīng)用
汽車零部件(2014年5期)2014-11-11 12:24:32
巴彦县| 莱州市| 诸暨市| 万年县| 郯城县| 郧西县| 大石桥市| 沙湾县| 沁水县| 中超| 宜丰县| 定边县| 晴隆县| 宝清县| 武义县| 舒城县| 芜湖县| 昌图县| 长丰县| 扎兰屯市| 金门县| 南宫市| 石林| 澜沧| 鹿邑县| 马鞍山市| 高阳县| 思茅市| 土默特右旗| 关岭| 南城县| 富源县| 平潭县| 镇雄县| 邢台市| 遂溪县| 西乡县| 岢岚县| 漳州市| 金山区| 井陉县|