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

        ?

        基于CASS平臺(tái)的快捷命令定制方法研究

        2024-01-29 13:03:36于婷婷
        現(xiàn)代測(cè)繪 2023年5期
        關(guān)鍵詞:配置文件繪圖命令

        張 泳,于婷婷

        (江蘇省地質(zhì)測(cè)繪院,江蘇 南京 211102)

        0 引 言

        CASS地形地籍成圖軟件(簡(jiǎn)稱CASS)是由廣東南方數(shù)碼科技股份有限公司基于AutoCAD開(kāi)發(fā)的一款商用數(shù)字化繪圖平臺(tái),廣泛應(yīng)用于測(cè)繪、國(guó)土、規(guī)劃、市政、環(huán)保、地質(zhì)、交通、水利、電力、礦山等行業(yè)。AutoCAD是一種通過(guò)命令驅(qū)動(dòng)的計(jì)算機(jī)輔助設(shè)計(jì)平臺(tái),CASS繼承了這個(gè)特點(diǎn),繪制所有要素或進(jìn)行相關(guān)數(shù)據(jù)處理都可通過(guò)命令來(lái)實(shí)現(xiàn)。CASS系統(tǒng)內(nèi)部有一個(gè)要素代碼表,保存于INDEX.INI文件,為每一類要素都分配了一個(gè)代碼(習(xí)慣上稱為CASS碼),可以通過(guò)CASS碼的不同來(lái)區(qū)分各類要素[1]。為便于使用,CASS定制了專用的繪圖菜單,用戶通過(guò)點(diǎn)擊菜單中相應(yīng)的按鈕來(lái)完成圖形繪制。但這一操作本質(zhì)是調(diào)用了CASS的根繪圖命令「DD」,然后再自動(dòng)輸入的CASS碼來(lái)完成這一操作。用戶如果能記住CASS碼的話,就可以在命令行中直接鍵入「DD」(注:在實(shí)際操作時(shí),不需要輸入「」,此符號(hào)只用于標(biāo)識(shí)命令,下同),然后再輸入CASS碼。通過(guò)點(diǎn)擊工具面板上的繪圖菜單繪圖時(shí),簡(jiǎn)單方便,但繪圖效率較低。通過(guò)輸入根繪圖命令「DD」來(lái)繪圖時(shí),CASS碼的記憶量較大,且輸入6位CASS碼也比較耗時(shí)。為提高繪圖效率,方便用戶使用,需要基于現(xiàn)有的繪圖機(jī)制,研究一個(gè)新的命令輸入方法。

        1 AutoCAD命令別名機(jī)制介紹

        AutoCAD平臺(tái)自身也提供了一個(gè)定制快捷命令的方法,即命令別名機(jī)制??旖菝顚?duì)照表保存于ACAD.PGP中。如圖1所示,每個(gè)定義為一行,具體格式為:別名,*原命令。這種命令別名機(jī)制本質(zhì)上沒(méi)有新增命令,而只是為命令定制了一個(gè)新的別名,以達(dá)到快速輸入的效果。新的別名定制好了后,需要在命令行中輸入「REINIT」命令或重新啟動(dòng)AutoCAD來(lái)啟用此別名。如繪制圓要素時(shí),正常情況下需要輸入「CIRCLE」,如果為此命令定制了別名「C」,*CIRCLE,那么只需要在命令行中輸入「C」即可完成。顯然輸入1個(gè)字符的效率要比輸入6個(gè)字符的效率要高?;诖嗣顒e名定義機(jī)制,用戶可以根據(jù)自己繪圖習(xí)慣,定制一套屬于自己的快捷命令[2]。

        圖1 AutoCAD快捷命令對(duì)照表(部分)

        2 CASS平臺(tái)快捷命令原理分析

        雖然AutoCAD提供了一個(gè)實(shí)現(xiàn)快捷命令的機(jī)制,通過(guò)這種機(jī)制僅能對(duì)CASS平臺(tái)中的根繪圖命令「DD」進(jìn)行重新定制,但不能滿足于CASS平臺(tái)中通過(guò)快捷命令實(shí)現(xiàn)DD+CASS碼進(jìn)行繪圖的要求。

        AutoLISP是由Autodesk公司開(kāi)發(fā)的一種LISP程序語(yǔ)言,嵌入在AutoCAD內(nèi)部,可以通過(guò)此語(yǔ)言對(duì)AutoCAD的功能進(jìn)行擴(kuò)展[3-4]。通過(guò)以下代碼就可以實(shí)現(xiàn)一個(gè)新的命令「C」,此命令用于對(duì)原命令「CIRCLE」進(jìn)行重新封裝,如圖2所示。

        圖2 AutoCAD命令封裝示例

        基于此思路,就可以對(duì)CASS平臺(tái)中繪圖根命令進(jìn)行重新封裝,如通過(guò)DD+CASS碼的繪圖模式繪一個(gè)“一般房屋”時(shí),需要輸入「DD+141101」(注:實(shí)際操作時(shí)需要輸入DD后回車再輸入141101,下同),通過(guò)以下定制后,直接輸入「F」就可以實(shí)現(xiàn)此功能,定制的代碼如圖3所示。

        圖3 CASS繪圖代碼封裝示例

        定制快捷命令的目的就是為了實(shí)現(xiàn):快捷命令=DD+CASS碼。如果快捷碼定義的字符越少,那么在繪圖時(shí)輸入的字符就越少,這樣就容易提升繪圖的效率。但在實(shí)際繪圖過(guò)程中,由于地物的CASS碼較多,單字符快捷命令就不能滿足定制需求,容易產(chǎn)生重復(fù)。雖然可以通過(guò)增加快捷命令的字符個(gè)數(shù)來(lái)解決此問(wèn)題,但如果快捷命令的字符過(guò)多,也就失去了定制快捷命令的意義,因此在定制快捷命令時(shí),還必須要解決快捷命令重復(fù)的問(wèn)題。

        AutoLISP提供了initget與getkword兩個(gè)組合函數(shù),initget用于控制關(guān)鍵字輸入,而getkword用于獲取關(guān)鍵字。對(duì)于快捷命令出現(xiàn)重復(fù)時(shí),就可以通過(guò)如圖4所示方法解決此問(wèn)題。

        圖4 重復(fù)快捷命令封裝示例

        3 設(shè)計(jì)思路

        通過(guò)CASS平臺(tái)快捷命令的原理分析可知,快捷命令的本質(zhì)是通過(guò)AutoLISP語(yǔ)言用較短的命令對(duì)原命令進(jìn)行重新封裝。因此,實(shí)現(xiàn)此功能需要做到以下兩點(diǎn):① 配置文件應(yīng)方便用戶編輯,能夠自由交互;② 所有重新封裝的代碼應(yīng)通過(guò)配置文件自動(dòng)生成,無(wú)須人工干預(yù)。

        3.1 定制配置文件

        配置文件基于XML(EXtensible Markup Language)格式保存,配置中包含一個(gè)或多個(gè)快捷命令定制信息,每個(gè)快捷命令定制信息主要由名稱、代碼或命令、是否為代碼等屬性項(xiàng)構(gòu)成,各屬性項(xiàng)的詳細(xì)說(shuō)明如表1所示。

        定義配置文件的代碼如圖5所示。

        圖5 配置文件定義代碼

        3.2 配置文件的讀取與保存

        讀取配置文件時(shí),配置文件中的配置信息寫入到配置對(duì)象中,是一種XML反序列化行為。保存配置文件時(shí),配置對(duì)象中的配置信息寫入到配置文件中,是一種XML序列化行為。在.Net Framework編程框架下,可以通過(guò)System.Xml.Serialization命名空間下的XmlSerializer類實(shí)現(xiàn)XML文件的序列化與反序列化。XmlSerializer對(duì)象中的Serialize方法用于將配置對(duì)象通過(guò)文件流寫入文件,即保存配置文件。XmlSerializer對(duì)象中的Deserialize 方法用于將配置文件讀取到配置對(duì)象中,即讀取配置文件[5]。

        3.3 配置文件轉(zhuǎn)AutoLISP代碼

        快捷命令的實(shí)現(xiàn),本質(zhì)上是通過(guò)AutoLISP語(yǔ)言編寫新的命令從而實(shí)現(xiàn)對(duì)AutoCAD功能的擴(kuò)展。配置文件設(shè)置完畢后,需要通過(guò)程序化的方法將配置信息自動(dòng)轉(zhuǎn)為AutoLISP程序代碼。主要步驟如下:

        (1)讀取配置文件:通過(guò)XmlSerializer.Deserialize方法將配置文件讀取到內(nèi)存,即生成一個(gè)QuickCMDConfig類型的對(duì)象(以下簡(jiǎn)稱QuickCMDConfig對(duì)象)。

        (2)檢查配置文件:QuickCMDConfig對(duì)象中的CanDuplicate屬性用于標(biāo)識(shí)快捷命令是否允許重復(fù),如果CanDuplicate屬性為False時(shí),應(yīng)對(duì)QuickCMDConfig對(duì)象中QuickCMDList屬性中的各個(gè)快捷命令的名稱進(jìn)行重復(fù)值檢查。

        (3)QuickCMDItem對(duì)象轉(zhuǎn)AutoLISP代碼:假設(shè)QuickCMDItem對(duì)象的變量名為CMD,主要轉(zhuǎn)換代碼如圖6所示。

        圖6 轉(zhuǎn)換代碼

        (4)保存AutoLISP代碼:使用System.IO命名空間下的File對(duì)象WriteAllText方法將所有的AutoLISP代碼寫入一個(gè)以.lsp為擴(kuò)展名的文件(如:QuickCommand.lsp)。

        3.4 LISP程序加載

        為立即使用轉(zhuǎn)出的AutoLISP代碼,應(yīng)對(duì)代碼文件QuickCommand.lsp進(jìn)行加載操作。在AutoCAD中加載AutoLISP文件可以使用vl-load-all函數(shù)來(lái)實(shí)現(xiàn),此函數(shù)只有一個(gè)參數(shù),參數(shù)的內(nèi)容為AutoLISP文件的路徑,加載方法如下[6-7]:

        AcadApplication.ActiveDocument.SendCommand("(vl-load-all"c:/QuickCommand.lsp"")")

        上面的方法用于將配置生成AutoLISP代碼文件后立即加載,如果配置沒(méi)有發(fā)生變化,就不需要進(jìn)行轉(zhuǎn)換操作,此時(shí)可以AutoCAD提供的appload命令將QuickCommand.lsp添加到啟動(dòng)組中(圖7),AutoCAD啟動(dòng)時(shí)會(huì)自動(dòng)加載此文件。

        圖7 添加到啟動(dòng)組

        4 應(yīng)用示例

        在AutoCAD(CASS)平臺(tái)上,通過(guò)VB.Net編程語(yǔ)言編寫了一個(gè)新的命令Cass_QuickCMD。此命令主要有兩個(gè)功能:① 設(shè)置參數(shù)(S):用戶通過(guò)窗口化或?qū)隭LS文件的方式定制快捷命令;② 加載(D):將設(shè)置好的參數(shù)轉(zhuǎn)為AutoLISP文件并加載。

        4.1 設(shè)置參數(shù)

        通過(guò)窗口方式設(shè)置參數(shù)時(shí),需要通過(guò)Cass_QuickCMD命令的S選項(xiàng)打開(kāi)參數(shù)設(shè)置主窗口,然后對(duì)“快捷命令對(duì)照”展開(kāi)設(shè)置(圖8)。

        圖8 快捷命令配置主窗口

        用戶根據(jù)作業(yè)需要和個(gè)人的使用習(xí)慣定義對(duì)工作中需要用到的每個(gè)CASS代碼或現(xiàn)有的命令進(jìn)行重新定義(圖9)。

        圖9 快捷命令詳細(xì)定義窗口

        為便于用戶快速定義快捷命令,在參數(shù)配置窗口中同時(shí)提供了通過(guò)XLS文件的方法定義各個(gè)快捷命令(圖10)。

        圖10 在XLS文件中定義快捷命令

        4.2 加載

        快捷命令定義完成后,使用Cass_QuickCMD命令的D選項(xiàng)將參數(shù)轉(zhuǎn)為AutoLISP文件并加載到當(dāng)前AutoCAD(CASS)中。

        5 結(jié) 語(yǔ)

        本文基于CASS平臺(tái)的繪圖特性并結(jié)合AutoCAD平臺(tái)提供的二次開(kāi)發(fā)接口,開(kāi)發(fā)了一個(gè)新的工具,用于對(duì)CASS繪圖代碼進(jìn)行重新包裝,能夠簡(jiǎn)化用戶的繪圖流程,減輕用戶記憶CASS繪圖代碼的負(fù)擔(dān),從而提升生產(chǎn)效率。CASS作為測(cè)繪專業(yè)通用的繪圖平臺(tái),提供了豐富的繪圖及數(shù)據(jù)功能,本工具只是對(duì)其繪圖功能的進(jìn)一步優(yōu)化,對(duì)在CASS平臺(tái)或AutoCAD平臺(tái)進(jìn)行其他功能的二次開(kāi)發(fā)有一定的借鑒意義。

        猜你喜歡
        配置文件繪圖命令
        來(lái)自河流的你
        “禾下乘涼圖”繪圖人
        提示用戶配置文件錯(cuò)誤 這樣解決
        只聽(tīng)主人的命令
        搭建簡(jiǎn)單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機(jī)root密碼怎么辦
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        移防命令下達(dá)后
        這是人民的命令
        久久精品中文字幕大胸| 亚洲视频精品一区二区三区| 口爆吞精美臀国产在线| 亚洲av中文无码乱人伦在线观看| 40岁大乳的熟妇在线观看| 98bb国产精品视频| av永久天堂一区二区三区蜜桃| 国产一区二区三区最新地址 | 97久久精品人人做人人爽| 亚洲午夜久久久久中文字幕| 一区两区三区视频在线观看| 日本不卡在线视频二区三区| 超清精品丝袜国产自在线拍| www插插插无码视频网站| 国产熟女精品一区二区| 精品亚洲国产成人av色哟哟| 国产精品久久久久久婷婷| 久久国产热精品波多野结衣av| 久久国产女同一区二区| 日本精品一区二区三区二人码| 午夜精品久久久久久| 狠狠色狠狠色综合网老熟女| 在线视频免费自拍亚洲| 日韩人妻熟女中文字幕a美景之屋| 蜜臀av无码精品人妻色欲| 精品久久杨幂国产杨幂| 日日高潮夜夜爽高清视频| 亚洲日韩国产欧美一区二区三区| 国产一区二区三区av在线无码观看 | 美女叉开双腿让男人插| 东北熟妇露脸25分钟| 日韩一级精品亚洲一区二区精品| 亚洲一区二区三区99| 免费拍拍拍网站| 国产麻豆一精品一AV一免费软件 | 高潮内射主播自拍一区| 风流老熟女一区二区三区| 欧美日韩另类视频| av免费在线观看在线观看| 特黄 做受又硬又粗又大视频| 永久免费的av在线电影网无码|