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

?

基于Lisp的自動圖框繪制和輸出管理技術(shù)研究

2019-02-27 08:07唐爭氣庾榮樹
城市勘測 2019年1期
關(guān)鍵詞:圖幅界限繪制

唐爭氣,庾榮樹

(1.湖南城市學(xué)院市政與測繪工程學(xué)院,湖南 益陽 413000; 2.上海遠(yuǎn)通路橋工程有限公司,上海 200000)

1 引 言

CAD圖形是工程勘察設(shè)計中最常用的圖形,為提高工作效率和加強輸出文件的管理,其自動分析圖幅與圖框繪制和打印輸出管理十分重要。Lisp是ListProcessor(表處理程序)的縮寫,主要用于人工智能(AI)領(lǐng)域。AutoLISP是人工智能語言CommonLISP的簡化版本,AutoLISP嚴(yán)格遵循其語法和慣例,但又添加了許多針對AutoCAD的功能。借助AutoLISP,用戶可以用適合編寫圖形應(yīng)用程序的高級語言來編寫宏程序和函數(shù),并開發(fā)各種軟件包。AutoLISP易于使用,并且非常靈活,多年來一直是自定義AutoCAD的標(biāo)準(zhǔn),作為開發(fā)工具。另外,VisualLISP提供了用AutoLISP編寫的獨立應(yīng)用程序的工具。對一般的AutoCAD用戶來說,Lisp/Vlisp是進行AutoCAD二次開發(fā)的首選語言。但Lisp/Vlisp使用的對話框編程語言DCL和PDB沒有一個可視化的編程環(huán)境,主要依靠開發(fā)者手工寫入代碼,且與Lisp/Vlisp的數(shù)據(jù)交換和相互控制實現(xiàn)起來比較麻煩,難于掌握。而OpenDCL是一款可視化的對話框制作工具,并且是一款完全免費的開源軟件,起源于3rdDay軟件公司著名的商業(yè)軟件ObjectDCL,兩者都是同一個作者開發(fā)出來的,功能基本一樣,他們的目標(biāo)正是要取代原有的DCL語言。

本文以勘察設(shè)計圖的比例尺進行自動分析標(biāo)準(zhǔn)圖紙大小或自定義大小、圖框整飾為目標(biāo),設(shè)計了分幅圖框繪制和打印輸出管理技術(shù)流程,并使用LISP語言編程實現(xiàn)。通過實際工程檢驗,結(jié)果表明該技術(shù)大大提高了圖框繪制和出圖的效率。

2 自動圖框繪制和輸出管理技術(shù)流程

自動圖框繪制和輸出管理技術(shù)流程如圖1所示:首先用OpenDCL進行界面設(shè)計,包括常用的參數(shù)信息設(shè)置;自動提取圖幅信息,根據(jù)需要出圖比例,自動分析推算出標(biāo)準(zhǔn)圖紙大小或自定義大小以及縱橫向布局的圖框角點坐標(biāo)的算法,從而確定分幅圖框以及角圖章繪制和打印預(yù)覽和輸出。使用LISP語言編程實現(xiàn)自動繪制出合適圖框和自動填寫工程名稱、圖名和人員等圖幅屬性信息、計算出相應(yīng)的數(shù)據(jù)輸出。可根據(jù)預(yù)覽圖框生成,看是否生成,達(dá)到要求后,可添加出圖說明,并打印生成pdf圖紙并分類管理。

圖1 主要技術(shù)流程

3 關(guān)鍵技術(shù)與解決方法

3.1 參數(shù)信息設(shè)置

圖框自動繪制需要填寫工程名稱、坐標(biāo)系、圖名和人員等圖幅屬性信息以及單位名稱、資質(zhì)、等級等數(shù)據(jù)信息。考慮到程序的通用性,程序記錄這些信息作為配置文件加以保存,在程序退出后自動保存到配置文件中。

3.2 分析圖框包含內(nèi)容的圖形界限

分析圖形界限是程序設(shè)計的第一步,分析出準(zhǔn)確的信息后才能順利地完成接下來的步驟。分析圖框包含內(nèi)容的圖形界限可能是整個圖形界限或者需要套圖框的部分圖形元素的范圍。通過前面兩種情況構(gòu)造選擇集,通過遍歷所有圖形對象的最小包圍矩形,并獲得選擇集中所有對象的最小包圍矩形,從而獲取圖框內(nèi)的西南角和東北角坐標(biāo),即圖框的圖形界限。Lisp提供了CAD圖形元素的最小包圍矩形的函數(shù)vla-getboundingbox,部分代碼如下:

(defun getboundboxXY(obj/x y)

(vla-getboundingbox obj 'x 'y)

(mapcar 'vlax-safearray->list(list x y))

)

3.3 根據(jù)比例尺自動選取圖幅大小

選取比例尺從而確定圖幅是至關(guān)重要的,本文的比例尺是要實現(xiàn)根據(jù)合適的比例尺所選圖框自動分析。除了一般的比例尺,此設(shè)計加入了自定義比例尺,增加了很大的調(diào)節(jié)性。一個合適的圖紙大小與方向?qū)τ趫D幅繪制圖框的美觀性具有很高的要求。除了圖紙一般為A1,A2,A3,A4等以外,也考慮了測繪用的50cm*50cm或50cm*40cm矩形圖框,同時也加入了自定義圖紙大小,根據(jù)圖幅的要求,選出最適合的圖紙所需大小。在這里需考慮角圖章和圖外框的圖紙寬度,由圖框包含內(nèi)容的圖形界限的縱向和橫向長度和比例尺,從而確定圖幅大小。本程序?qū)崿F(xiàn)了強制圖框選擇和自動分析圖框。實現(xiàn)的主要算法如下:

(cond

((or

(>maxdisxy(/a0x(/1000.0 blc)))

(>mindisxy(/a0y(/1000.0 blc)))

)

(progn

(dcl-Control-SetText tukuanhz/Form1/ComboBox1"自定義")

(setq tuhao_inx 5)

(setq curtuhao "自定義")

(dcl_Control_SetEnabled tukuanhz/Form1/TextBox5 T)

(dcl_Control_SetEnabled tukuanhz/Form1/TextBox6 T)

(dcl-Control-SetText

tukuanhz/Form1/TextBox5

(rtos(+(/maxdisxy(/blc 1000.0)) 20.0) 2 0)

)

;圖紙毫米

(setq hxiangz(+(/mindisxy(/blc 1000.0)) 20.0))

(if(>hxiangz 120.0)

hxiangz

(+hxiangz 120.0)

)

(dcl-Control-SetText

tukuanhz/Form1/TextBox6

(rtos hxiangz 2 0)

)

)

)

)

3.4 圖紙方向的選擇和定位

本文所設(shè)計的程序把圖幅自動放置于圖框正中間,根據(jù)上下左右方向的長度自動選出圖框是橫向還是縱向,也可以選擇把所繪制圖紙放置于哪個位置。實現(xiàn)的主要算法算法如下:

(if(=curPaper_value "縱向")

(setq x0

(list

(-

(/(+xx1 xx2)2.00)

(*(/(atof(dcl_Control_GetText tukuanhz/Form1/TextBox6)) 2)

blkkuan

)

)

(-

(/(+yy1 yy2) 2.00)

(*(/(atof(dcl_Control_GetText tukuanhz/Form1/TextBox5)) 2)

blkkuan

)

(*25.0 blkkuan)

)

)

)

(setq x0

(list

(-

(/(+xx1 xx2) 2.00)

(*(/(atof(dcl_Control_GetText tukuanhz/Form1/TextBox5)) 2)

blkkuan

)

)

(-

(/(+yy1 yy2) 2.00)

(*(/(atof(dcl_Control_GetText tukuanhz/Form1/TextBox6)) 2)

blkkuan

)

(*25.0 blkkuan)

)

)

)

)

3.5 添加出圖說明與打印輸出管理

出圖說明是出圖必不可少的,本文所說的出圖說明,會自動放置于合適的位置,與圖幅大小的選擇完美搭配。打印輸出的格式是pdf文件,同時自動生成到指定文件夾。pdf文件是很穩(wěn)定的一個格式文件,不能隨意改動且不會導(dǎo)致原來正確的數(shù)據(jù)、圖框發(fā)生損失或改變。這對于成果出圖的管理很有幫助。

(if(member "pdfFactory Pro" (fsxm-printers))

(setq print-name "pdfFactory Pro")

(dcl-MessageBox "請安裝pdfFactory Pro打印機" "提示")

)

(command "plot" "y";詳細(xì)配置

"";默認(rèn)模型空間

print-name;打印機名稱

paper-z;紙張大小類型

"m";毫米單位

pp-ll;打印方向p豎向l橫向

"";上下顛倒打印

"w";窗口模式

paper-min ;打印范圍角點

paper-max ;打印范圍角點

"f" ;打印比例布滿

"c" ;打印偏移 居中

"";默認(rèn)是否按樣式 打印

"." ;默認(rèn)打印樣式表.表示無

"";默認(rèn)是否打印線寬

"";默認(rèn)著色打印設(shè)置

"y";默認(rèn)是否打印到文件

"y";默認(rèn)是否保存對頁面設(shè)置的修改

"y";是否繼續(xù)打印

""

)

4 程序?qū)崿F(xiàn)與實例分析

程序編寫完成后,用VLISP進行編譯后生成vlx文件。在打開的一個利用南方CASS的土方網(wǎng)格計算圖的CAD中的命令行輸入“appload”加載程序:“tukuanhz.vlx”,輸入tukuanhz命令,界面如圖2所示。

圖2 程序界面

填寫相應(yīng)信息后,點擊圖框繪制。成果如圖3所示。

圖3 根據(jù)圖幅自動繪制圖框

5 結(jié) 語

本文提出的自動分析圖幅與圖框的自動生成與打印輸出管理技術(shù),用Lisp語言編寫實現(xiàn)了這些功能的算法。簡單有效地提高了圖幅圖框生成的效率性和美觀性,并實現(xiàn)打印生成pdf文件。通過實現(xiàn)檢驗,此程序大大地提高了工作效率、圖框繪制的效率性和科學(xué)性。

猜你喜歡
圖幅界限繪制
界限
基于ArcEngine自動生成1∶5萬地形圖標(biāo)準(zhǔn)分幅圖框
間隙
破次元
超萌小鹿課程表
看看德國人的家庭界限感
放學(xué)后
基于Arcpy的地形圖接圖表快速生成方法
基于EXCEL的地形圖圖幅號轉(zhuǎn)換查詢方法
在轉(zhuǎn)變中繪制新藍(lán)圖