亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用Python語言實現(xiàn)集中監(jiān)測CAD施工圖輔助設(shè)計

        2019-12-11 06:20:58
        鐵路通信信號工程技術(shù) 2019年11期
        關(guān)鍵詞:輔助設(shè)計數(shù)據(jù)文件調(diào)用

        劉 娜

        (北京全路通信信號研究設(shè)計院集團有限公司,北京 100070)

        1 背景概況

        當前最為廣泛應用的AutoCAD二次開發(fā)語言有:LISP、C、VBA語言等。LISP語言因為可以直接調(diào)用AutoCAD的命令,因此在CAD輔助軟件設(shè)計中被應用的最廣泛。

        但LISP語言的缺點也比較明顯,大致列舉如下:

        1) 功能比較單一,綜合處理能力差;

        2) 解釋執(zhí)行,程序運行速度慢;

        3) 缺乏很好的保護機制,源程序保密性差;

        4) 不能直接訪問硬件設(shè)備、進行二進制文件的讀寫。

        由于集中監(jiān)測系統(tǒng)所有采集內(nèi)容都來自外部輸入,具備采集內(nèi)容靈活多樣,輸入數(shù)據(jù)龐大,數(shù)據(jù)處理復雜等特點,因此作為集中監(jiān)測輔助工程設(shè)計工具的開發(fā)語言一定要在靈活性,以及處理龐大復雜數(shù)據(jù)方面具有絕對的優(yōu)勢。

        基于這個考慮,尋找一種更為簡潔,功能更全面,可讀性更強的語言,可以調(diào)用AutoCAD的命令,從而實現(xiàn)CAD的輔助設(shè)計。

        2 Python語言優(yōu)勢分析

        Python是面向?qū)ο蟮某绦蛟O(shè)計語言,比傳統(tǒng)結(jié)構(gòu)化的語言更適合于大型軟件的開發(fā),實現(xiàn)高度抽象的數(shù)據(jù)模型。作為腳本語言,它具有許多高級數(shù)據(jù)類型,如列表、字典、元組等,比系統(tǒng)語言更容易實現(xiàn)復雜的數(shù)據(jù)結(jié)構(gòu).由于腳本語言的膠合性,使它易于利用已有組件實現(xiàn)系統(tǒng)的功能。

        得力于Python豐富的內(nèi)建模塊和三方模塊,Python可通過在Unix或Windows上調(diào)用系統(tǒng)語言C/C++的擴展模塊,或利用已有函數(shù)包來提高大量數(shù)據(jù)處理的運行速度。

        綜合分析,Python腳本語言在CAD二次開發(fā)方面有如下優(yōu)勢。

        語法簡潔:Python有相對較少的關(guān)鍵字,結(jié)構(gòu)簡單,有一個明確定義的語法,學習起來更加容易。

        易于閱讀:Python代碼定義的更清晰,它采用強制縮進的方式使得代碼具有極佳的可讀性。

        具有豐富的庫:Python的最大優(yōu)勢是它具有豐富的庫,且是跨平臺的。Python標準庫很龐大。它可以幫助你處理各種工作,包括文檔生成、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、電子郵件、XML、HTML、WAV文件、圖形用戶界面(GUI)和其他與系統(tǒng)有關(guān)的操作。當然,也包括調(diào)用AutoCAD的命令,實現(xiàn)輔助工具開發(fā)功能。

        可擴展:如果需要一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,可以把部分程序用C或C++編寫,然后在Python程序中使用。

        面向?qū)ο螅篜ython既支持面向過程的編程,也支持面向?qū)ο蟮木幊?。在“面向過程”的語言中,程序是由過程或僅僅是可重用代碼的函數(shù)構(gòu)建起來的。在“面向?qū)ο蟆钡恼Z言中,程序是由數(shù)據(jù)和功能組合而成的對象構(gòu)建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現(xiàn)面向?qū)ο缶幊獭?/p>

        3 AutoCAD命令調(diào)用實現(xiàn)

        上文提到Python語言有著豐富的庫,因此它也具有控制AutoCAD的庫,即pyautocad模塊。pyautocad包可以對任何版本的AutoCAD軟件進行操作,實際上接口都是一樣的。連接CAD的代碼如下。

        1.from pyautocad import APoint

        2.

        3.class AutoCadOperations(object):

        4. def draw_text(self, point, text_content):

        5. self.acad.model.AddText(text_content, p,font_size)

        6. def open_acad_template(self, acad_ fi le):

        7. self.acad.app.documents.open(join_path('acad_ fi les', acad_ fi le))

        8. def close_current_acad_ fi le(self):

        9. self.acad.doc.close()

        作為AutoCAD的基本控制模塊,AutoCadOperations定義了:

        draw_text - 將文本寫入到當前打開的Auto-CAD文件,輸入?yún)?shù)寫入的坐標、文本內(nèi)容、對齊方式和文本大小。

        open_acad_template - 打開AutoCAD文件,輸入?yún)?shù)為要打開的文件路徑。

        get_all_text_dicts - 獲取所有文本及其內(nèi)容的字典。

        close_current_acad_file - 關(guān)閉當前的AutoCAD文件。

        該控制模塊的基本調(diào)用如下所示。

        1.def write_acad_file(self, source_content, out_fi le):

        2. file_num = len(source_content) / one_file_column_num + 1

        3. for fi le_index in range(0, fi le_num):

        4. self.acad_operations.open_acad_template(self.acad_ fi le)

        5. for table_index, first_start_point in

        enumerate(self.table_start_points):

        6. point_list = self.generate_point_lists(first_start_point)

        7. for column_index in range(len(point_list)):

        8. source_index = table_index * self.table_set_num + column_index + file_index *one_ fi le_column_num

        9. self.acad_operations.save_acad_file(generate_ fi le_name(out_ fi le, fi le_index))

        10. self.acad_operations.close_current_acad_if le()

        4 實現(xiàn)監(jiān)測施工圖輔助設(shè)計

        采用模塊化的設(shè)計思路,實現(xiàn)集中監(jiān)測施工圖輔助設(shè)計工具的開發(fā),將軟件系統(tǒng)劃分為任務調(diào)度、數(shù)據(jù)提取、數(shù)據(jù)寫入、數(shù)據(jù)分析、AutoCAD控制、車站配置等6個模塊。

        系統(tǒng)架構(gòu)如圖1所示。

        圖1 系統(tǒng)架構(gòu)圖Fig.1 System architecture diagram

        1) 任務調(diào)度模塊

        任務調(diào)度模塊主要負責根據(jù)軟件處理流程,完成各模塊間的調(diào)用。通過python中concurrent.futures庫實現(xiàn)多張AutoCAD圖的并行快速生成。

        2) 車站配置模塊

        車站配置模塊主要負責配置各車站基礎(chǔ)情況,便于根據(jù)車站基礎(chǔ)情況制定相應的采集內(nèi)容,調(diào)用相應的CAD模板文件。如車站類型、信號機類型、轉(zhuǎn)轍機類型、軌道電路類型、聯(lián)鎖制式、列控制式等,并根據(jù)采集內(nèi)容合理分配機柜布置、組合柜布置等。

        3)數(shù)據(jù)分析模塊

        數(shù)據(jù)分析模塊定義了[需要寫需要分析的類型]所需要進行的數(shù)據(jù)分析底層方法實現(xiàn),包括讀取txt數(shù)據(jù)內(nèi)容,源數(shù)據(jù)處理,歸并提取信息并寫入python字典的功能。

        4)AutoCAD控制模塊

        根據(jù)前面數(shù)據(jù)分析模塊獲得的各最終txt數(shù)據(jù)文件,選擇打開各個CAD模板,利用Python文件調(diào)用CAD命令,將這些數(shù)據(jù)文件寫入CAD模板,自動繪制集中監(jiān)測施工設(shè)計圖紙。

        5)數(shù)據(jù)提取模塊

        數(shù)據(jù)提取模塊主要負責根據(jù)車站配置通過AutoCAD控制模塊來讀取計算機聯(lián)鎖系統(tǒng)、列控系統(tǒng)、智能電源屏系統(tǒng)等外部輸入信息,如分線盤的定義、組合架的分配等信息。這些信息決定了集中監(jiān)測采集點的位置信息,因此是集中監(jiān)測工程圖紙的重要輸入來源。數(shù)據(jù)提取模塊的輸出結(jié)果是相對應的txt源文件,主要用來作為數(shù)據(jù)寫入模塊的數(shù)據(jù)源和事后審查。

        6) 數(shù)據(jù)寫入模塊

        數(shù)據(jù)寫入模塊根據(jù)前面數(shù)據(jù)提取模塊獲得的源txt數(shù)據(jù)文件,調(diào)用AutoCAD控制模塊。選擇打開相應CAD模板,根據(jù)車站配置模塊的信息,將這些數(shù)據(jù)文件寫入CAD模板,完成自動繪制集中監(jiān)測施工設(shè)計圖紙。

        根據(jù)上述模塊定義,該軟件的流程如圖2所示。

        軟件流程可以概括為兩個步驟。

        首先,基于集中監(jiān)測采集設(shè)計的輸入圖紙,如聯(lián)鎖圖紙、區(qū)間列控圖紙等,根據(jù)車站的配置信息,軟件程序進行數(shù)據(jù)提取,再將提取出來的數(shù)據(jù)進行提煉和數(shù)據(jù)轉(zhuǎn)換,從而得到監(jiān)測采集需要的中間數(shù)據(jù)文件。

        圖2 軟件流程圖Fig.2 Software flow diagram

        然后,讀取這些數(shù)據(jù)文件,根據(jù)AutoCAD模版的格式需要,進一步調(diào)整數(shù)據(jù)內(nèi)容,寫入到python的列表。打開AutoCAD模板文件,進行寫入操作,從而得到最終需要的成果文件,完成輔助設(shè)計流程。

        5 結(jié)語

        利用面向?qū)ο蟮哪_本語言Python對鐵路信號工程計算機輔助設(shè)計CAD進行二次開發(fā),在實現(xiàn)大型的、結(jié)構(gòu)復雜、運算速度高的科學計算軟件方面有較大的優(yōu)勢,利用Python語言作為集中監(jiān)測系統(tǒng)施工圖輔助設(shè)計工具的開發(fā)工具,可滿足集中監(jiān)測系統(tǒng)采集內(nèi)容靈活多樣、輸入數(shù)據(jù)龐大,數(shù)據(jù)處理復雜的特點,可根據(jù)各站場基本情況不同,進行定制化分析處理,大大的提高了輔助設(shè)計工作的效率和準確性。

        猜你喜歡
        輔助設(shè)計數(shù)據(jù)文件調(diào)用
        基于圖形特征識別技術(shù)的電碼化輔助設(shè)計軟件開發(fā)與應用
        核電項目物項調(diào)用管理的應用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        試驗顯示方案輔助設(shè)計軟件的設(shè)計與實現(xiàn)
        數(shù)據(jù)文件恢復專題問答
        數(shù)據(jù)文件安全管控技術(shù)的研究與實現(xiàn)
        三維“廠房CAD”輔助設(shè)計系統(tǒng)開發(fā)研究
        SQL數(shù)據(jù)文件恢復工具
        一種道路視野育區(qū)的全車輔助設(shè)計
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        国产亚洲av综合人人澡精品| 国产精品久久久久影院嫩草| 丰满女人又爽又紧又丰满| 国产午夜精品久久久久99| 亚洲香蕉av一区二区蜜桃| 免费人妻精品一区二区三区 | 久久久精品人妻一区二区三区妖精| 美女mm131爽爽爽| 99久久综合精品五月天| 免费看国产成年无码av| 日韩精品一区二区三区四区视频| 亚洲成a人一区二区三区久久| 国产区女主播在线观看 | 中国农村妇女hdxxxx| 亚洲国产麻豆综合一区| 精选二区在线观看视频| 美女露出奶头扒开内裤的视频| 无码国产精品一区二区av| 好屌草这里只有精品| 任你躁欧美一级在线精品免费| 一区二区三区精彩视频在线观看| 成人av综合资源在线| 国产乱妇无码大片在线观看| 性一交一乱一伦a片| 国产亚洲精品hd网站| 亚洲一区二区视频免费看| 国产av一区二区三区性入口| 中文字幕无线码| 亚洲另类欧美综合久久图片区 | 成人影院视频在线免费观看| 高h纯肉无码视频在线观看| 又黄又爽又色又刺激的视频| 亚洲美女国产精品久久久久久久久| 97人妻精品一区二区三区免费| 日本免费视频| 四虎影视4hu4虎成人| 日韩熟妇精品视频一区二区| 日韩一级精品亚洲一区二区精品| 午夜视频在线观看视频在线播放 | 人妻少妇精品视频一区二区三区| 9丨精品国产高清自在线看|