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

?

AutoCAD二次開發(fā)案例——結(jié)構(gòu)面赤平極射投影圖

2015-01-12 09:02:00李保代波
重慶建筑 2015年11期
關(guān)鍵詞:投影圖大圓產(chǎn)狀

李保,代波

(重慶市地質(zhì)災(zāi)害防治工程勘查設(shè)計院,重慶 400700)

0 前言

我們的巖土工程勘察設(shè)計工作圖件多離不開AutoCAD制圖軟件,但工作中常常需要繪制一些特殊的圖件,這些特征圖件若在AutoCAD中手工繪制,將是一件費時費力的事情,但AutoCAD提供了程序應(yīng)用界面,用戶可以利用許多編程語言編制自己需要的程序在AutoCAD中執(zhí)行,以提高用戶的工作效率。

AutoLISP是為擴展和自定義AutoCAD功能而設(shè)計的一種編程語言,它的程序編制過程十分簡單、而且直接,可以不需要專門的編程界面,以文本文件的形式,在記事本中就可以直接編輯;而其程序的加載也十分簡單,只需把編制好的程序直接用鼠標(biāo)托拽入AutoCAD窗口界面中,也可通過其它方式自動加載進(jìn)AutoCAD中,加載后就可以象使用AutoCAD的內(nèi)部命令一樣,輸入定義的命令名,直接執(zhí)行。

結(jié)構(gòu)面赤平極射投影圖是巖土工程勘察中對巖質(zhì)邊坡穩(wěn)定性進(jìn)行分析的基本圖件,若是采用手工繪制,將是件非常費時費力的事情,本文運用AutoLISP語言編制的自動成圖程序,采用在AutoCAD窗口的命令欄,交互輸入結(jié)構(gòu)面參數(shù)而直接生成結(jié)構(gòu)面赤平極射投影圖,其做圖方法簡單、直接,大大提高工作效率。

1 赤平極射投影圖原理[5]

赤平極射投影是解析平面和直線的空間關(guān)系的一種圖解方法,在巖體工程研究中,利用赤平極射投影來表示巖體中各結(jié)構(gòu)面和臨空面的方向和角度,以及它們之間的角距,可以在投影圖上簡便地確定它們的夾角和組合關(guān)系,確定巖體的結(jié)構(gòu)特征,完全用圖解的方法代替繁雜的公式演算,既簡便迅速,也比較形象直觀。

在赤平極射投影圖上,外圓為赤道大圓,代表赤道平面(既水平面),其上、下、左、右分別代表北(N)、南(S)、西(W)、東(E)方位,并按360°方位角分度。各結(jié)構(gòu)面投影在赤道大圓上反映為一條圓弧線:弧線與赤道大圓兩側(cè)交點的連線為大圓的一條直徑,代表了結(jié)構(gòu)面的走向;弧線彎曲方向代表結(jié)構(gòu)面的傾向;弧線中點距大圓圓心的距離代表了結(jié)構(gòu)面的傾角,弧線中點距圓心越近、傾角越大(通過圓心,傾角為90°),弧線中點距圓心越遠(yuǎn)、傾角越?。ㄍㄟ^大圓,傾角為0°)。

弧線中點距大圓圓心的距離計算公式為:

ox=r×tan(π/4-Φ/2)

式中:ox——弧線中點至圓心距離;

r——赤道大圓半徑(本程序設(shè)置大圓半徑為25mm);

Φ——結(jié)構(gòu)面傾角。

結(jié)構(gòu)面產(chǎn)狀的表達(dá)式為:傾向∠傾角,

例如:結(jié)構(gòu)面產(chǎn)狀為58°∠32°其赤平極射投影圖見圖1。

圖1 產(chǎn)狀為58°∠32°結(jié)構(gòu)面赤平極射投影圖

其中:NWSE為赤道大圓(本程序設(shè)定半徑為25mm),AXB為結(jié)構(gòu)面的投影圓?。óa(chǎn)狀為58°∠32°),AB為結(jié)構(gòu)面的走向直徑(走向為328°-148°),XO的指向代表結(jié)構(gòu)面的傾向(58°),X點距離圓心O點的距離為13.86mm代表傾角的大小(32°)。

2 程序編制思路

程序在執(zhí)行的過程中采用交互方式,以便在AutoCAD的命令欄中輸入相關(guān)參數(shù)。

首先為編制的程序定義一個命令名稱,以便在AutoCAD的命令欄直接輸入命令名,既可執(zhí)行本程序。

程序執(zhí)行后,第一步,在指定位置處自動畫出大圓,并在大圓相應(yīng)位置標(biāo)注出北(N)、南(S)、西(W)、東(E)及圓心,在大圓下部標(biāo)注圖件名稱。

第二步,在命令欄中輸入結(jié)構(gòu)面的產(chǎn)狀參數(shù),每輸入一條結(jié)構(gòu)面參數(shù),就在大圓中自動畫出一條結(jié)構(gòu)面圓弧,循環(huán)直至全部結(jié)構(gòu)面參數(shù)輸入完成。

第三步,結(jié)束程序,完成赤平極射投影圖。

3 程序編制詳解

本程序使用AutoLISP語言編制,可以用文本文件(.txt)直接編輯,編輯完成后直接保存,將文件的后輟.txt直接改成.lsp既可。

在AutoLISP程序中,可以加入中文注釋,用以解釋某段語句的含義,便于其它人或以后修改時明白語句的內(nèi)容,注釋方式為:以半角分號作為注釋的分隔符,分號之后的內(nèi)容即為注釋,注釋可以單獨一行,也可以附在某語句后,而在程序運行時,注釋部分的內(nèi)容不參與程序的運行。

(1)首先為程序定義一個命令名稱[1](定義的名稱不能與AutoCAD內(nèi)部命令重名,以免引起程序執(zhí)行錯誤),在AutoCAD的命令欄直接輸入定義的命令名,既可執(zhí)行本程序,本程序命令名稱定義為:CPTYT。語句如下:

(/oce1 oce2 oce3 oce4 oce5 p1 pz1 R fn1 n1 n2 qxc qxp qx qjp qj pt1 pt2 pt3 a1 str);定義本程序命令名稱為CPTYT,括號中為定義本程序中所用到的所有變量名稱。

(2)定義在AutoCAD中執(zhí)行返回操作時,本程序返回時的起點,語句如下:

(command"undo""be")

(3)保存系統(tǒng)原變量值(以便結(jié)束本程序后恢復(fù)系統(tǒng)變量環(huán)境),并按本程序的運行要求修改為新的系統(tǒng)變量值[2],語句如下:

(setq oce1(getvar"cmdecho");保存命令響應(yīng)原變量值。

oce2(getvar"OSNAPCOORD");保存坐標(biāo)數(shù)據(jù)優(yōu)先級原變量值。

oce3(getvar"OSMODE");保存捕捉原變量值。

oce4(getvar"ANGDIR");保存角度正方向原變量值。

oce5(getvar"ANGBASE"));保存基準(zhǔn)角度原變量值。

(setvar"cmdecho"0);關(guān)閉命令響應(yīng)。

(setvar"OSNAPCOORD"1);坐標(biāo)數(shù)據(jù)優(yōu)先級設(shè)為:鍵盤輸入替代對象捕捉設(shè)置。

(setvar"OSMODE"7095);改變捕捉模式。

(setvar"ANGDIR"0);角度正方向為逆時針。

(setvar"ANGBASE"0);基準(zhǔn)角度東方為0。

(4)定義一個字體樣式、并設(shè)置為當(dāng)前字體樣式,新建一個圖層、并設(shè)置為當(dāng)前圖層(以免與其它內(nèi)容混在一個圖層上),語句如下:

(if(=(Tblsearch"style""BG_ST")nil)

(command"-style""BG_ST""宋體"00.80"n""n"));定義一個文字樣式,樣式名稱為“BG_ST”,采用宋體,寬高比為0.8。

(command"textstyle""BG_ST");設(shè)置當(dāng)前字體樣式為“BG_ST”。

(If(=(Tblsearch"layer""結(jié)構(gòu)面")nil)

(command"-layer""n""結(jié)構(gòu)面""c"7"結(jié)構(gòu)面""s""結(jié)構(gòu)面"""));定義一個新圖層,圖層名稱為“結(jié)構(gòu)面”,顏色用7號(白色)。

(command"-layer""c"7"結(jié)構(gòu)面""s""結(jié)構(gòu)面""");設(shè)置“結(jié)構(gòu)面”為當(dāng)前圖層。

(5)用鼠標(biāo)在AutoCAD中指定赤平極射投影圖的繪制位置[4](大圓圓心的位置),并設(shè)置大圓的半徑,語句如下:

(setq p1(getpoint" 請指定繪圖基點:");等待用鼠標(biāo)在AutoCAD中指定大圓圓心的位置。

pz1(polar p1035);計算結(jié)構(gòu)面的注釋位置。

R 25);設(shè)置大圓半徑為25mm。

(6)繪制大圓[3],標(biāo)注北(N)、南(S)、西(W)、東(E),并標(biāo)注圖名,語句如下:

(command"zoom""w"(polar p1(*pi 0.5)40)(polar p1(*pi 1.5)50));根據(jù)指定的基點縮放窗口至合適位置及大小。

(command"line"(polar p1 pi 2.5)(polar p102.5)"");畫圓心處短橫線。

(command"line"(polar p1(*pi 0.5)2.5)(polar p1(*pi 1.5)2.5)"");畫圓心處短豎線。

(command"line"(polar p1025)(polar p1026.5)"");畫大圓東標(biāo)注短線。

(command"line"(polar p1(*pi 0.5)25)(polar p1(*pi 0.5)26.5)"");畫大圓北標(biāo)注短線。

(command"line"(polar p1 pi 25)(polar p1 pi 26.5)"");畫大圓西標(biāo)注短線。

(command"line"(polar p1(*pi 1.5)25)(polar p1(*pi 1.5)26.5)"");畫大圓南標(biāo)注短線。

(command"circle"p1 R);畫出大圓。

(command"text""ml"(polar p1028)2.50"E");標(biāo)注大圓東。

(command"text""bc"(polar p1(*pi 0.5)28)2.50"N");標(biāo)注大圓北。

(command"text""mr"(polar p1 pi 28)2.50"W");標(biāo)注大圓西。

(command"text""tc"(polar p1(*pi 1.5)28)2.50"S");標(biāo)注大圓南。

(command"text""m"(polar p1(*pi 1.5)38)3.20"結(jié)構(gòu)面赤平極射投影圖");在大圓的下方,標(biāo)注圖名。

(7)在命令欄輸入結(jié)構(gòu)面的產(chǎn)狀參數(shù)(傾向、傾角),控制傾向為0~360°之間、并為整數(shù),控制傾角為0~90°之間、并為整數(shù),輸入一條結(jié)構(gòu)面參數(shù)、畫出一條結(jié)構(gòu)面弧線、并用文字標(biāo)注出序號及其產(chǎn)狀,并循環(huán)至全部結(jié)構(gòu)面輸入完成[1],語句如下:

(setq n11 n2888)(while(=n2888);循環(huán)繪制圓弧及結(jié)構(gòu)面注釋起點。

以下內(nèi)容為等待輸入結(jié)構(gòu)面傾向,并控制傾向范圍為0~360°之間,且為整數(shù)。

(setq qxc 888)(while(=qxc 888)(if(not(setq qxp(getint" 輸入結(jié)構(gòu)面傾向<退出>:")))

(setq qxc 886))(if(=qxc 886)(setq qxc 886)(cond((

(setq qxc 888)(princ"--傾向數(shù)值太小,重新輸入--"))

((>qxp 360)(setq qxc 888)(princ"--傾向數(shù)值太大,重新輸入--"))

(t(setq qxc 880)))))

(if(=qxc 880)(setq qx(/(*(-90 qxp)PI)180)))

以下內(nèi)容為等待輸入結(jié)構(gòu)面傾角,并控制傾角范圍為0~90度之間,且為整數(shù)。

(if(=qxc 886)(setq qxc 886)(setq qxc 888))

(while(=qxc 888)(if(not(setq qjp(getint" 輸入結(jié)構(gòu)面傾角<退出>:")))

(setq qxc 886))(if(=qxc 886)(setq qxc 886)(cond((

(setq qxc 888)(princ"--傾角數(shù)值太小,重新輸入--"))

((>qjp 90)(setq qxc 888)

(princ"--傾角數(shù)值太大,重新輸入--"))

(t(setq qxc 880)))))

(if(=qxc 880)(setq qj(/(*qjp PI)180)))

以下內(nèi)容為:根據(jù)輸入的結(jié)構(gòu)面產(chǎn)狀參數(shù),計算出圓弧的位置坐標(biāo),并畫出結(jié)構(gòu)面圓弧,在弧線的中心點標(biāo)注結(jié)構(gòu)面序號。

以下內(nèi)容為:將輸入的結(jié)構(gòu)面序號及其產(chǎn)狀內(nèi)容,用文字標(biāo)注在大圓的右側(cè)。

(cond((=qxc 880)

(progn

(setq str(strcat(itoa n1)".結(jié)構(gòu)面產(chǎn)狀:"(itoa qxp)"°∠"

(itoa qjp)"°"))(command"text""tl"pz12.80 str)

(setq n1(1+n1)pz1(polar pz1(*pi 1.5)6)

n2888)))(t(progn(setq n2886)))));循環(huán)繪制圓弧及結(jié)構(gòu)面注釋終點。

(8)恢復(fù)系統(tǒng)變量值,還原系統(tǒng)環(huán)境,語句如下:

(setvar"cmdecho"oce1);恢復(fù)命令響應(yīng)。

(setvar"OSNAPCOORD"oce2);恢復(fù)坐標(biāo)數(shù)據(jù)優(yōu)先級設(shè)置。

(setvar"OSMODE"oce3);恢復(fù)捕捉模式。

(setvar"ANGDIR"oce4);恢復(fù)角度正方向。

(setvar"ANGBASE"oce5);恢復(fù)基準(zhǔn)角度。

(9)定義在AutoCAD中執(zhí)行返回操作時,本程序返回時的終點,語句如下:

(command"undo""e")

(10)結(jié)束本程序的運行,語句如下:

(princ))

4 程序加載及運行實例

假設(shè)一個巖質(zhì)邊坡有如下幾組結(jié)構(gòu)面(結(jié)構(gòu)面產(chǎn)狀見表1),使用本程序成圖的過程如下。

表1 結(jié)構(gòu)面產(chǎn)狀參數(shù)表

(1)加載程序

最簡單的加載方式:將程序文件直接托拽入AutoCAD窗口中,即可加載。在命令欄最后若顯示“C:CPTYT”,即表明程序加載成功,見圖2。

圖2 程序加載示意圖

(2)運行程序

在命令欄直接輸入定義的命令名“CPTYT”,按回車鍵,即運行本程序,同時在命令欄會提示“請指定繪圖基點”。

此時程序等待用戶輸入繪圖基點位置,用戶用鼠標(biāo)在AutoCAD窗口中點擊某位置后,程序會將此位置作為大圓的圓心,開始自動繪制完成大圓,標(biāo)注圓心十字短線、北南西東方位、圖件名稱等,并以該點作為中心縮放窗口中內(nèi)容至合適大小,同時在命令欄會提示“輸入結(jié)構(gòu)面傾向”,見圖3。

圖3 程序運行示意圖(1)

接著,用戶在命令欄輸入第一條結(jié)構(gòu)面的傾向“127”并回車后,命令欄會繼續(xù)提示“輸入結(jié)構(gòu)面傾角”,用戶在命令欄輸入第一條結(jié)構(gòu)面的傾角“68”并回車后,程序會自動繪制出該結(jié)構(gòu)面的圓弧線,且在圖的右側(cè)會用文字注釋該結(jié)構(gòu)面的序號及產(chǎn)狀,同時命令欄會繼續(xù)提示“輸入結(jié)構(gòu)面傾向”……,見圖4。

圖4 程序運行示意圖(2)

用戶根據(jù)命令欄的提示,依次循環(huán)輸入第二條至第五條的結(jié)構(gòu)面傾向、傾角,待第五條結(jié)構(gòu)面的傾角“23”輸入并回車后,命令欄仍會繼續(xù)提示“輸入結(jié)構(gòu)面傾向”,而此時全部結(jié)構(gòu)面的傾向及傾角參數(shù)都已經(jīng)輸入完成,不再需要輸入,則直接按回車鍵,本程序執(zhí)行結(jié)束并退出,最終完成后的結(jié)構(gòu)面赤平極射投影圖,見圖5。

圖5 完成的結(jié)構(gòu)面赤平極射投影圖

5 邊坡穩(wěn)定性分析實例[5]

以上述的結(jié)構(gòu)面赤平極射投影圖為例,通過各結(jié)構(gòu)面圓弧的位置關(guān)系(圖6),可以對邊坡的穩(wěn)定性做出分析如下:

圖6 邊坡結(jié)構(gòu)面穩(wěn)定性分析圖

(1)2號巖層面圓弧與1號邊坡面圓弧方向一致,說明邊坡為順向坡,同時2號巖層面圓弧在1號邊坡面圓弧的外側(cè)(圖6中豎向陰影部分),說明層面傾角小于邊坡的坡角,即本邊坡類型為順向坡,且處于外傾臨空狀態(tài),容易沿巖層面發(fā)生整體性下滑,邊坡不穩(wěn)定。

(2)3號及4號兩組裂隙面圓弧與1號邊坡面圓弧大角度相交,說明本兩組裂隙面與邊坡面為切向關(guān)系,邊坡不會沿該兩組裂隙面發(fā)生滑動。

(3)5號裂隙面圓弧與1號邊坡面圓弧方向相反,說明本組裂隙面與邊坡面為反向關(guān)系,邊坡不會沿該組裂隙面發(fā)生滑動。

(4)1號、2號、3號、4號圓弧線組面的梯形區(qū)域(圖6中格子陰影部分)處于1號邊坡圓弧形的外側(cè),說明由這4組結(jié)構(gòu)面組成的契形巖體,傾向與邊坡方向一致,該部分巖體會發(fā)生掉塊,影響邊坡穩(wěn)定。

綜上,本邊坡類型為順向坡,會發(fā)生兩種形式的破壞,一種是會沿層面發(fā)生整體滑動,另一種是會發(fā)生小規(guī)模的掉塊現(xiàn)象,邊坡處于不穩(wěn)定狀態(tài)。

6 結(jié)束語

采用AutoLISP語言對AutoCAD進(jìn)行二次開發(fā)編制的應(yīng)用程序,具有簡單、易用的特點,在AutoCAD中運行穩(wěn)定、可靠,且與外部文件可進(jìn)行數(shù)據(jù)交換,同時配合DCL對話框可實現(xiàn)許多CAD復(fù)雜功能,而各行業(yè)都有其特有的制圖方法及所需的繪圖功能,這些功能不可能由AutoCAD直接提供,了解掌握Auto-CAD的二次開發(fā)技術(shù),將會給自己的工作提供極大地幫助。

[1]藍(lán)屹生.Auto LISP學(xué)習(xí)引導(dǎo)[M].北京:中國鐵道出版社,2003:40-42,184-186.

[2][美]斯特爾曼,[美]克里希南.精通中文AutoCAD 2000[M]王淇,譯.北京:機械工業(yè)出版社,2000:798-814.

[3]Ralph Grabowski.AutoCAD2000命令參考手冊[M].倪偉英,譯.北京:機械工業(yè)出版社,2000:64-65.

[4]Sham Tickoo.AutoCAD2000高級用戶指南[M].潘宏,譯,北京:機械工業(yè)出版社,2000:915-918.

[5]孫玉科,古迅.赤平極射投影圖在巖體工程地質(zhì)力學(xué)中的應(yīng)用[M].北京:科學(xué)出版社,1980:10-12,62-70.

猜你喜歡
投影圖大圓產(chǎn)狀
基于產(chǎn)狀Fisher分布的巖石節(jié)理最小樣本容量確定方法
基于分裂狀態(tài)的規(guī)范偽括號多項式計算方法
畫大圓
幼兒100(2021年38期)2021-12-23 08:38:22
淺談砂巖儲層的巖石學(xué)特征
激電聯(lián)合剖面在判斷矽卡巖型礦床礦體產(chǎn)狀中的應(yīng)用
赤平投影法在邊坡穩(wěn)定性分析中的應(yīng)用
填數(shù)
填數(shù)
Wendt操作對紐結(jié)和鏈環(huán)影響的若干規(guī)律
圖解荒料率測試投影圖及制作方法
吉安市| 湾仔区| 休宁县| 贵溪市| 汤原县| 巧家县| 建湖县| 德江县| 洞头县| 永平县| 安新县| 宁都县| 叙永县| 绥江县| 安顺市| 金昌市| 宕昌县| 宁陕县| 襄垣县| 大同县| 阜康市| 余庆县| 瑞昌市| 琼中| 南澳县| 上高县| 兴安盟| 略阳县| 永新县| 伊宁市| 临颍县| 松阳县| 景洪市| 旅游| 乾安县| 宜昌市| 漾濞| 曲周县| 深水埗区| 疏勒县| 嵩明县|