999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

AUTOLISP實(shí)現(xiàn)SCS編碼與南方CASS編碼的轉(zhuǎn)換

2016-08-22 10:21:58陳培龍
地球 2016年4期

■陳培龍

(漳州市測(cè)繪設(shè)計(jì)研究院福建漳州363000)

AUTOLISP實(shí)現(xiàn)SCS編碼與南方CASS編碼的轉(zhuǎn)換

■陳培龍

(漳州市測(cè)繪設(shè)計(jì)研究院福建漳州363000)

地形圖的編碼在各種軟件中存在的方式各不一樣,由于地形圖成圖軟件的更換,地形圖編碼也需要進(jìn)行轉(zhuǎn)換。本文主要論述利用Autolisp語(yǔ)言進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)SCS地形圖編碼轉(zhuǎn)換到南方CASS地形圖編碼的一種方法。

SCS編碼 CASS編碼 編碼轉(zhuǎn)換

1 引言

近年來(lái)隨著計(jì)算機(jī)技術(shù)的進(jìn)步,測(cè)繪行業(yè)的計(jì)算機(jī)參與也在發(fā)生著日新月異的變化,特別是隨著Autocad軟件的更新,各種成圖軟件的發(fā)展變得更加快速。筆者所在單位一直在使用廣州SCS成圖軟件,但隨著SCS軟件停止更新以及南方CASS的普及和發(fā)展,在去年筆者的單位也對(duì)成圖軟件進(jìn)行了全面的更新。由于兩種軟件的編碼方式存在較大的差異,地形圖地物編碼在軟件中存在的方式和編碼采用的規(guī)范,都存在較大的區(qū)別,造成大量已有圖形需要由SCS編碼格式轉(zhuǎn)換為南方CASS格式。限于文章篇幅,本文主要講述如何使用Autolisp程序語(yǔ)言,實(shí)現(xiàn)SCS圖形中的建筑物批量轉(zhuǎn)換成南方CASS編碼。

2 SCS編碼與CASS編碼的區(qū)別

SCS中建筑物的編碼存儲(chǔ)于建筑輪廓線的厚度值屬性中,建筑物的層數(shù)僅依靠對(duì)應(yīng)的文字來(lái)體現(xiàn),在編碼中無(wú)法直接識(shí)別。通過(guò)查詢建筑物輪廓線的圖元組碼可以發(fā)現(xiàn)其厚度值存儲(chǔ)于39組碼中,譬如磚的編碼為2110300,則其對(duì)應(yīng)的建筑物輪廓線的組碼可以查詢到(39.2110300)的屬性(如圖1)。南方CASS的編碼方式與SCS有較大的區(qū)別,在南方CASS中建筑物的編碼也是存儲(chǔ)建筑物輪廓線中,但區(qū)別于SCS的是南方CASS編碼不是存儲(chǔ)于厚度值中,而是存儲(chǔ)于一個(gè)名為SOUTH的擴(kuò)展屬性組中。該屬性組不僅保存了建筑物的編碼,而且存儲(chǔ)了該建筑物的層數(shù)(地上建筑層數(shù)為正值,地下為負(fù)值)。譬如砼的編碼為141111,層數(shù)為1,則其對(duì)應(yīng)的建筑物輪廓線的Cad組碼可以查詢到(~3(SOUTH(1000.141111) (1040.1.0))))(如圖2)。兩種編碼方式存在較大的不同,SCS直接存儲(chǔ)于厚度值中,能夠非常方便的進(jìn)行修改,但是也比較容易出錯(cuò);比如在縮放圖形的過(guò)程中,編碼值也會(huì)隨之變換;CASS的編碼方式只能通過(guò)特定的程序進(jìn)行讀取和修改,易用性較差,但是不會(huì)引起誤操作,安全性高很多,而且在編碼中直接存了建筑物層數(shù),在后期如果需要對(duì)地形圖的建筑物面積進(jìn)行計(jì)算時(shí),能夠非常方便的使用。

由于成圖平臺(tái)的更換,大量的地形圖需要由SCS編碼轉(zhuǎn)換為南方CASS編碼,對(duì)于明確對(duì)應(yīng)的編碼只需根據(jù)編碼值批量轉(zhuǎn)換即可,但是建筑物中,由于SCS的編碼中沒(méi)有表示建筑物的層數(shù),所以無(wú)法直接轉(zhuǎn)換為對(duì)應(yīng)的南方CASS編碼,人工操作只能一個(gè)一個(gè)進(jìn)行,過(guò)程繁瑣而且耗費(fèi)大量的人力,出錯(cuò)率很高。故筆者使用LISP語(yǔ)言編寫(xiě)了一個(gè)程序,能夠直接根據(jù)建筑物輪廓線識(shí)別其對(duì)應(yīng)的文字注記從而分辨出該建筑物層數(shù),并直接根據(jù)南方CASS編碼的結(jié)構(gòu)模式,寫(xiě)入對(duì)應(yīng)的南方CASS編碼,從而實(shí)現(xiàn)兩種編碼的轉(zhuǎn)換。

圖1 SCS編碼的CAD組碼

圖2 CASS編碼的CAD組碼

3 基本流程

在圖形轉(zhuǎn)換前,先將需要轉(zhuǎn)換的建筑物注記文字圖層修改為建筑物標(biāo)注圖層,選取JMD圖層中所有閉合的建筑物輪廓線,然后一一讀取多段線的端點(diǎn)坐標(biāo),組成一個(gè)列表,再根據(jù)這個(gè)表使用SSGET函數(shù)分別選取多段線內(nèi)的注記文字,然后根據(jù)文字中的內(nèi)容識(shí)別出該建筑物的層數(shù)。然后構(gòu)建類(lèi)似于(~3(SOUTH(1000.141121) (1040.2.0))))格式的編碼值,將其存入該建筑物輪廓線中,實(shí)現(xiàn)編碼的轉(zhuǎn)換。

4 開(kāi)發(fā)思路及程序?qū)崿F(xiàn)

4.1批量歸層建筑文字

由于時(shí)間跨度較多,地形圖上的很多數(shù)據(jù)并不是非常的規(guī)范,建筑物文字注記的圖層也比較多而且比較亂。由于識(shí)別建筑物層數(shù)主要的依據(jù)就是建筑的文字注記,因此為確保建筑物輪廓線與其文字注記的一一對(duì)應(yīng)關(guān)系,首先需要把建筑物注記文字都?xì)w類(lèi)到相同的圖層中,命名該圖層為建筑物標(biāo)注圖層。在編碼轉(zhuǎn)換的過(guò)程中,只需搜索圖面上文字基點(diǎn)在建筑物輪廓線內(nèi)并且在建筑物標(biāo)注圖層內(nèi)的文字進(jìn)行分析即可,大大提高程序的準(zhǔn)確性和執(zhí)行速度。為了快速的實(shí)現(xiàn)文字的圖層歸類(lèi),筆者提供了jjgc命令,程序首先讀取一個(gè)預(yù)先編輯好的對(duì)照文件,程序自動(dòng)搜索文本中定義的文字,并將其歸類(lèi)入文本的設(shè)定好的圖層中。

4.2自動(dòng)生成南方CASS編碼

程序運(yùn)行前,先根據(jù)南方CASS編碼規(guī)則,創(chuàng)建一個(gè)列表如下:

(("砼"141111)("磚"141121)("鐵"141131)("鋼"141141)(" 木"141151)("混"141161)("簡(jiǎn) "141200)("建"141300)("破" 141400)))

表中存儲(chǔ)了各種建筑物材質(zhì)及對(duì)應(yīng)的南方CASS編碼。執(zhí)行時(shí),根據(jù)建筑物輪廓線一一搜索在線內(nèi)且圖層為建筑物標(biāo)注圖層的文字,將這些文字圖元放入一個(gè)選擇集中。當(dāng)選擇集的數(shù)目為0或者大于1時(shí),將該輪廓線放入無(wú)法識(shí)別的建筑物輪廓線圖層中;如果選擇集的數(shù)目為1,程序就將其作為該輪廓線的文字標(biāo)注進(jìn)行編碼匹配。匹配時(shí)首先使用Substr函數(shù),截取注記的第一個(gè)文字,并在列表中搜索相應(yīng)的編碼,根據(jù)返回的值,構(gòu)建一個(gè)類(lèi)似于(~3 (SOUTH(1000.141121)(1040.2.0))))格式的列表,使用Append函數(shù)將該屬性加入到建筑物輪廓線中,最后將該文字放入JMD圖層并將其與建筑物輪廓線使用Group命令編組,即可實(shí)現(xiàn)編碼的自動(dòng)轉(zhuǎn)換。

主要代碼如下:

(defun c:crsx(/wlist listcz ss i en)

(if(not(tblsearch"layer""識(shí)別后的房屋注記"))(command"lay~er""n""識(shí)別后的房屋注記"""));如果不存在圖層則新建識(shí)別后的房屋注記圖層

(if(not(tblsearch"layer""無(wú)法識(shí)別"))(command"layer""n""無(wú)法識(shí)別"""));如果不存在圖層則新建無(wú)法識(shí)別圖層

(setq oldpk(getvar"PICKSTYLE")(setvar"PICKSTYLE"0) (vl~load~com)

(regapp"SOUTH")(setq wlist'())

(setq listcz'(("砼"141111)("磚"141121)("鐵"141131)("鋼" 141141)("木"141151)("混"141161)("簡(jiǎn)"141200)("建"141300)(" 破"141400)));創(chuàng)建建筑物注記文字及南方CASS編碼對(duì)照列表

(setq ss(ssget"x"'((~4.""))));選取閉合的建筑物輪廓線

(if ss(prong(setq i 0)

(repeat(sslength ss);對(duì)每個(gè)建筑物輪廓線一一處理

(setq en(Vlax~Ename~>Vla~Object(ssname ss i)))

(setq listzb(Vlax~Get en'Coordinates))(setq j 0)(setq listzbx'())

(while(

(setq listzbx(append listzbx(list(list(nth j listzb)(nth(+j 1)listzb))) ))

(if(="AcDb2dPolyline"(Vlax~Get en'ObjectName))(setq j(1+j)));構(gòu)建坐標(biāo)表

(setq j(+j 2)))

(setq ss1(ssget"cp"listzbx'((0."TEXT")(8."建筑物標(biāo)注圖層") )));選擇輪廓線內(nèi)的文字

(setq ss2(ssadd))

(if ss1(fenxiwenzi)(command"change"ss"p""la""無(wú)法識(shí)別" ""));如果建筑物輪廓線內(nèi)有建筑物標(biāo)注文字則進(jìn)行識(shí)別,否則將建筑物輪廓線放入無(wú)法識(shí)別圖層

(setq i(1+i)))))(setvar"PICKSTYLE"oldpk)

(defun fenxiwenzi();開(kāi)始建筑物材質(zhì)、層數(shù)識(shí)別

(setq cengshu"1")

(setq nr(cdr(assoc 1(entget(ssname ss1 0)))))

(if(=(strlen nr)2)(setq caizhi(substr nr 1 2)));識(shí)別材質(zhì)

(if(=(strlen nr)3)(progn(setq caizhi(substr nr 1 2))(setq cengshu (substr nr 3 1))));識(shí)別層數(shù)

(if(>(strlen nr)3)(progn(setq caizhi(substr nr 1 2))

(if(and(>(ascii(substr nr 4 1))47)(<(ascii(substr nr 4 1))59))

(setq cengshu(substr nr 3 2))

(setq cengshu(substr nr 3 1)))))

(if(assoc caizhi listcz)(progn

(setq listkzsx(list~3(list"SOUTH"(cons 1000(itoa(nth 0(cdr (assoc caizhi listcz)))))(cons 1040(atof cengshu)))));根據(jù)材質(zhì)從列表中找到對(duì)應(yīng)的南方CASS編碼

(setq endata(entget(ssname ss i)))

(setq ss2(ssadd(ssname ss i)ss2))

(setq endata(append endata(list listkzsx)))

(entmod endata);將建筑輪廓線加入南方CASS編碼

(if(/=cengshu"1")(progn

(command"layer""s""識(shí)別后的房屋注記""");將識(shí)別的文字注記修改圖層

(setq enwz(ssname ss1 0))

(setq endatawz(entget enwz))

(setq ptwz(polar(polar(cdr(assoc 10 endatawz))0 0.7232)(/pi 2) 0.25))

(setq oldys(getvar"textstyle"))

(setvar"textstyle""細(xì)等線體")

(command"text""j""mr"ptwz"0.5"""caizhi);生成南方格式的文字注記

(wenzisx(entlast))(setq ss2(ssadd(entlast)ss2))(setvar"textstyle" oldys)

(setq oldys(getvar"textstyle"))(setvar"textstyle""正等線體")

(command"text""j""ml"(polar ptwz 0 0.25)"0.4"""cengshu) (wenzisx(entlast))

(setq ss2(ssadd(entlast)ss2))(setvar"textstyle"oldys))

(prong(command"layer""s""識(shí)別后的房屋注記""")

(setq enwz(ssname ss1 0))(setq endatawz(entget enwz))

(setq ptwz(polar(polar(cdr(assoc 10 endatawz))0 0.7232)(/pi 2) 0.25))

(setq oldys(getvar"textstyle"))(setvar"textstyle""細(xì)等線體")

(command"text""j""mr"ptwz"0.5"""caizhi)(wenzisx(entlast))

(setq ss2(ssadd(entlast)ss2))(setvar"textstyle"oldys)))

(command"group""c""*"""ss2"");將文字注記及輪廓線編組

(command"erase"(ssname ss1 0)""))))

(defun wenzisx(enwzsx)(setq endatawzsx(entget enwzsx))

(setq listwzsx(list~3(list"SOUTH"(cons 1000"141111~1"))));將建筑文字注記加入南方CASS編碼

(setq endatawzsx(append endatawzsx(list listwzsx)))(entmod endatawzsx))

5 結(jié)語(yǔ)

通過(guò)筆者的方法,能夠?qū)崿F(xiàn)地形圖SCS編碼與南方CASS編碼的快速轉(zhuǎn)換。由于兩種編碼方式的不同,在地形圖轉(zhuǎn)換時(shí)會(huì)產(chǎn)生大量的需要人工干預(yù)的工作。通過(guò)本文描述的辦法,能夠快速、準(zhǔn)確的將地形圖的建筑編碼轉(zhuǎn)換為南方CASS編碼,轉(zhuǎn)換的速度快、準(zhǔn)確率高,大大提高了工作效率,節(jié)省了人力物力。

[1]AutoCAD 2004幫助:開(kāi)發(fā)者文檔 [R].

[2]任航科.LISP語(yǔ)言在測(cè)繪作業(yè)中的應(yīng)用 [J].城市勘測(cè),2011(1):110~112.

[3]朱虹.淺談Autocad與一些常用軟件的結(jié)合運(yùn)用 [J].科技轉(zhuǎn)讓集錦,2010(2).

P694[文獻(xiàn)碼]B

1000~405X(2016)~4~476~2

主站蜘蛛池模板: 手机看片1024久久精品你懂的| 男女精品视频| 亚洲精品卡2卡3卡4卡5卡区| 亚洲第一网站男人都懂| 亚洲欧美自拍一区| 欧美天天干| 国产精品久久久精品三级| 在线看国产精品| 露脸国产精品自产在线播| 国产成人精品男人的天堂| 91国内视频在线观看| 欧美精品影院| 亚洲一区二区在线无码| 国产亚洲精品97在线观看| 午夜视频日本| 国产精品一区二区在线播放| 国产亚洲欧美在线中文bt天堂 | www.狠狠| 操国产美女| 黄色一及毛片| 日韩无码视频专区| 黄色一及毛片| 日韩无码精品人妻| 国产高颜值露脸在线观看| 亚洲一区黄色| 亚洲欧美日韩另类在线一| 国产成人h在线观看网站站| 免费观看国产小粉嫩喷水| 亚洲制服丝袜第一页| 美女国产在线| 欧美亚洲网| 亚州AV秘 一区二区三区| 激情乱人伦| 国产成人无码久久久久毛片| 一区二区影院| 欧美一区二区啪啪| 国产精品久久久免费视频| 欧美精品亚洲日韩a| 亚洲欧美h| 免费va国产在线观看| 成人免费一级片| 狠狠色丁香婷婷综合| 国产JIZzJIzz视频全部免费| 国产无码精品在线| 热这里只有精品国产热门精品| 亚洲天堂网站在线| 一级毛片在线免费视频| 美臀人妻中出中文字幕在线| 999在线免费视频| 国产精品自在线拍国产电影 | 日韩福利在线观看| 久久国产亚洲偷自| 另类欧美日韩| 久996视频精品免费观看| 9丨情侣偷在线精品国产| 国产chinese男男gay视频网| 在线播放国产99re| 国产精选小视频在线观看| 亚洲天堂首页| 久久 午夜福利 张柏芝| 国产亚洲精品自在久久不卡| 免费a在线观看播放| 一级做a爰片久久免费| 亚洲精品你懂的| 91福利免费视频| 91亚洲精品国产自在现线| 天天综合亚洲| 久久久久免费看成人影片| 国产剧情一区二区| 欧美一级专区免费大片| 欧美一区二区福利视频| 国产毛片不卡| 亚洲精品少妇熟女| 久久婷婷国产综合尤物精品| 国产高清自拍视频| 亚洲中字无码AV电影在线观看| 97av视频在线观看| 亚洲日韩精品伊甸| 亚洲va在线观看| 亚洲无码高清视频在线观看| 婷婷中文在线| 在线国产毛片|