養(yǎng)成良好的AutoLISP書寫習慣_第1頁
養(yǎng)成良好的AutoLISP書寫習慣_第2頁
養(yǎng)成良好的AutoLISP書寫習慣_第3頁
養(yǎng)成良好的AutoLISP書寫習慣_第4頁
養(yǎng)成良好的AutoLISP書寫習慣_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、養(yǎng)成良好的AutoLISP書寫習慣眾所周知,Lisp是一種表結(jié)構(gòu)語言,括號必須成對出現(xiàn),在調(diào)試時往往為遺漏了一個括號大費周折,所以,養(yǎng)成一個好的編程習慣是學好Lisp所必須的。 選擇一個較好的編輯器,這是一個基本條件,建議使用Visual Lisp編輯器或Lisplink等專用編輯器,此類編輯器可以對函數(shù)突出顯示。 按Lisp(DCL)專有格式書寫,并經(jīng)常對程序進行“格式化”,及時發(fā)現(xiàn)語法錯誤,并有利于調(diào)試是查找錯誤。 使用自定義函數(shù),并輔助以適當?shù)米⑨?,在較大程序中按功能使用自定義函數(shù)可以使得程序條理化。autolisp的入門教程autolisp函數(shù)!Lisp是一門歷史悠久的語言,全名叫LI

2、St Processor,也就是“表處理語言”,它是由John McCarthy于1958年就開始設(shè)計的一門語言。和Lisp同時期甚至更晚出現(xiàn)的許多語言如Algo等如今大多已經(jīng)消亡,又或者僅僅在一些特定的場合有一些微不足道的用途,到現(xiàn)在還廣為人知的恐怕只剩下了Fortran和COBOL。但唯獨Lisp,不但沒有隨著時間而衰退,反倒是一次又一次的煥發(fā)出了青春,從Lisp分支出來的Scheme、ML等語言在很多場合的火爆程度甚至超過了許多老牌明星。那么這顆常青樹永葆青春的奧秘究竟在哪里呢?如果你只接觸過C/C+、Pascal這些“過程式語言”的話,Lisp可能會讓你覺得十分不同尋常,首先吸引你眼球

3、(或者說讓你覺得混亂的)一定是Lisp程序中異常多的括號,當然從現(xiàn)在的角度來講,這種設(shè)計的確對程序員不大友好,不過考慮到五六十年代的計算機處理能力,簡化語言本身的設(shè)計在那時算得上是當務(wù)之急了。Lisp的基本語法很簡單,它甚至沒有保留字(有些語言學家可能對這一點有異議,別怕,我聽你們的),它只有兩種基本的數(shù)據(jù),僅有一種基本的語法結(jié)構(gòu)就是表達式,而這些表達式同時也就是程序結(jié)構(gòu),但是正如規(guī)則最簡單的圍棋卻有著最為復(fù)雜的變化一樣,Lisp使用最基本的語言結(jié)構(gòu)定義卻可以完成其它語言難于實現(xiàn)的、最復(fù)雜的功能。廢話少說,現(xiàn)在我們就來看看Lisp語言中的基本元素。Lisp的表達式是一個原子(atom)或表(l

4、ist),原子(atom)是一個字母序列,如abc;表是由零個或多個表達式組成的序列,表達式之間用空格分隔開,放入一對括號中,如:abc()(abc xyz)(a b (c) d)最后一個表是由四個元素構(gòu)成的,其中第三個元素本身也是一個表。正如算數(shù)表達式1+1有值2一樣,Lisp中的表達式也有值,如果表達式e得出值v,我們說e返回v。如果一個表達式是一個表,那么我們把表中的第一個元素叫做操作符,其余的元素叫做自變量。正如歐幾里德的幾何世界中有五個公理一樣,我們在這里給出Lisp世界中的7個公理(基本操作符):(quote x)返回x,我們簡記為x (atom x)當x是一個原子或者空表時返回原

5、子t,否則返回空表()。在Lisp中我們習慣用原子t表示真,而用空表()表示假。 (atom a)t (atom (a b c)() (atom ()t現(xiàn)在我們有了第一個需要求出自變量值的操作符,讓我們來看看quote操作符的作用通過引用(quote)一個表,我們避免它被求值。一個未被引用的表達式作為自變量,atom將其視為代碼,例如: (atom (atom a)t反之一個被引用的表僅僅被視為表 (atom (atom a)()引用看上去有些奇怪,因為你很難在其它語言中找到類似的概念,但正是這一特征構(gòu)成了Lisp最為與眾不同的特點代碼和數(shù)據(jù)使用相同的結(jié)構(gòu)來表示,而我們用quote來區(qū)分它們。

6、 (eq x y)當x和y的值相同或者同為空表時返回t,否則返回空表() (eq a a)t (eq a b)() (eq () ()t 例如:我們有時想捕捉任意兩點的中點,而不只是一條線上的中點,用系統(tǒng)自己的捕捉中點(它要有輔助線)就不行了,我們可以參考“捕捉虛中點.lsp”程序來實現(xiàn)。除程序中的語句要學外,動畫中的自動找到所有的全局變量并把它們改為局部變量的方法很有用!動畫中先畫了一個六邊形,再畫一個圓與它內(nèi)接,圓心就是捕捉虛中點!AutoLisp 概述AutoLisp的數(shù)據(jù)類型,它有10種數(shù)據(jù)類型,常見的有五種: 整型 INT實數(shù)型REAL符號型SYM 字符串 STR表LISP 在Aut

7、oLisp中,最基本的數(shù)據(jù)類型稱為符號表達式,也稱為S-表達式,它是原子和點對的總稱,點對通常表示為表。 原子是一個一般符號系列,有兩種類型的原子,一種稱為數(shù)子原子(簡稱“數(shù)”),AutoLIsp可處理整數(shù)和實數(shù),其它不是“數(shù)”原子稱為非數(shù)字原子,它包括符號原子(或稱為文字原子)和串原子。 注意:0.4不能寫成.4。 符號原子的大小寫是等效的。 符號原子可以包含下列字符以外的任何可打印字符。 正反括號用于定義表 句號用于作點對 分號用于注釋的開始 用作QUOTE函數(shù)的簡寫 雙引號用作字符串常數(shù)的定界符 符號原子的長度沒有限制,且所有的字符都是有意義的,但盡量不要超過6個字符。 約束是一對符號和

8、值,當將一個值賦給符號時,就說符號被約束到那個值。值(而不是符號)決定所代表信息的類型,故一個符號可以接受任何類型的值,其初始值為nil. 在AutoLisp中,有兩個特殊的符號原子,即T和nil. 字符串的個數(shù)(不包括定界符)稱為字符串的長度。字符串可以是任意長度,它們的存儲空間是動態(tài)分配的,但字符串常量的最大長度不超過100,長度為0字符串稱為空串。 可以用“nnn”的方式表示字符,其中nnn為八進制。 e Esc n 換行 r 回車t 制表符(Tab節(jié)) 點對是由一個左括號,后接一個S表達式和空格再接一個句點和空格和一個右括號。 表是指放在一對相匹配的左右括號中的元素有序集合。表中的項稱

9、為表的元素,表中的元素可以是任意類型的S表達式,序號0到n1。如果嵌套,0層,1層. 表的長度,頂層元素的個數(shù)。 只有nil是表()又是原子。 表有兩種類型:標準表,引用表。 引用表是在表的前面冠以引用符號(或Quote)對該表不求值。 標準表:第一個元素的值必須是一個合法的已經(jīng)存在的AutoLisp函數(shù)定義,后跟調(diào)用該函數(shù)的參數(shù)。 AutoLisp采用”前綴表示法“即把運算符放在操作數(shù)之前,而不是中間,并把運算符(函數(shù)名)和操作數(shù)(調(diào)用函數(shù)的參數(shù))用圓括號括起來,以表的方式表示。 一個完整的AutoLisp程序往往是由一系列按順序排列的S-表達式組成的。 如: (defunplus (x y

10、) (+ ( + x y) x) (SetQ a 2.0) (SetQ b 2.0) (plus a b) 一個S表達式可以分多行寫,一行也可以寫多個表達式。 注釋以分號開始,并在一行的末尾結(jié)束,AutoLisp的求值器忽略注釋。 AutoLisp是一種求值型語言,求值程序第一次碰到一個求值代碼塊時,整個塊被轉(zhuǎn)換成壓宿代碼,如果程序中再次碰到那個塊,只是簡單的運行它。 求值過程: 1,整形,實數(shù),字符串,文件指針,系統(tǒng)內(nèi)部函數(shù),以及兩個特殊的符號原子,對它們求值就是它們本身。 2,符號原子是以當前的約束值作為它們的求值。 3,表是根據(jù)它的第一個元素的數(shù)據(jù)類型進行求值的。 (1)第一個元素的值為

11、表,該表就假定為用戶定義的函數(shù)。 (2)如果表的第一個元素的求值結(jié)果為一個內(nèi)部函數(shù),則剩余元素作為參數(shù)傳給該函數(shù),并執(zhí)行該函數(shù)的代碼,由函數(shù)的類型確定是否對傳給它的參數(shù)進行求值。輸入距離Lisp語言中輸入距離的函數(shù)為getdist,但我們有時需要輸入負值,有時需要在輸入距離的同時得到角度,使用getdist函數(shù)就顯得無能為力,這時,我們可以靈活使用其它交互輸入函數(shù)如getpoint、getcorner等,通過計算得到我們所需要的值。 例1是一段輸入長度的同時得到默認角度的代碼,使用getpoint函數(shù)。*;例1(setq pt0(getpoint n直線基點: ) pt1(getpoint p

12、t0 n直線長度: ) ;長度及角度可用鍵盤或鼠標定位 dst(distance pt0 pt1) ;計算長度 ang(angle pt0 pt1) ;計算默認角度 ang1 (getangle pt0 (strcat n直線方向: )* 例2是可以按陣列方式輸入行列間距的代碼,輸入距離為正值,修改部分代碼可輸入負值,使用getcorner函數(shù),同時使用initget的控制位128。*;例2(defun lc_dist () (initget 128) ;允許任意輸入 (setq disr (getpoint n指定單位單元或輸入行間距: ) (if (= (type disr) LIST)

13、;鼠標輸入 (progn (initget 1) (setq dis (getcorner disr n指定對角點: ) ;鼠標輸入對角 disc (abs (- (car dis) (car disr) ;正值行距 disr (abs (- (cadr dis) (cadr disr) ;正值列距 ) ;計算行列間距 ) (if (= (type disr) STR) ;鍵盤輸入行距 (if (setq dis (distof disr) ;判斷輸入的是否距離 (progn (initget 6) (setq disc (getdist n輸入列間距: ) ;輸入列距 ) (progn ;鍵

14、盤輸入格式不符返回 (princ n需要正數(shù)值或兩個二維角點。) (lc_dist) ) ) (progn ;空輸入返回 (princ n需要正數(shù)值或兩個二維角點。) (lc_dist) ) ) )AutoCAD中特定角度及長度捕捉的實現(xiàn)方法一、引言 在AutoCAD中的角度捕捉只有當正交狀態(tài)打開時的直和水平方向,對于其他特殊角度無能為力;另外,其網(wǎng)點捕捉也是相對于X軸和Y軸,無法實現(xiàn)其他方向的特殊長度捕捉,給繪圖帶來極大的不方便。 在應(yīng)用 AutoCAD 進行設(shè)計制圖的操作中, LINE 和POLYLINE 是使用頻率最高的兩個命令, 經(jīng)常要遇到在某些特定角度上繪制特定長度的簡單線或復(fù)合線的

15、情況,因而實現(xiàn)這兩個捕捉對提高AutoCAD 作圖效率很有實用價值。二、方法原理 所謂角度捕捉,是指當十字光標在某一角度的一定范圍內(nèi)選取一點時,該點自動落在該角度線上;當我們設(shè)定捕捉角度為時,將會以基準點作為原點、自X軸正方向出發(fā),將整個屏幕劃分為360/個區(qū)間,則NX角度就是角度捕捉線,其中,0N360/,360/表示不大于360/的整數(shù)。 所謂長度捕捉,是在角度捕捉的基礎(chǔ)上,在某一角度線上有一系列捕捉點,該系列點離基準點的距離為捕捉長度的正整數(shù)倍,當選取直線上的一點時,落點自動落到離其最近的捕捉點上。實現(xiàn)特定角度和長度捕捉的關(guān)鍵點是:當十字光標(即十字交*線)移動時,程序要隨時跟蹤其交*點

16、的位置,并將該位置與用戶所設(shè)定的捕捉角度與長度對應(yīng)起來,從而計算出在該角度上的落點。 以下舉例說明該兩個捕捉的實現(xiàn)過程: 假定捕捉角度為=30,捕捉長度為L。 當十字光標在任意的某一區(qū)間內(nèi)移動時,比如在第5區(qū)間(120150 )內(nèi)移動時,此時,落點只能在120或150線上(該線在圖中并不直接顯示),該兩根角度線的中心線為135。當十字光標的中心點處在120135之間時, 則落點應(yīng)在120線上,該落點的具體位置為由十字光標的中心點向120線作垂線來獲得,其交點D(稱為垂點)即為落點,為直觀起見,此時由基準點(此處為O點)向落點作一橡筋拖曳線,該橡筋拖曳線隨十字光標的移動而相應(yīng)移動,顯示出拖動過程

17、(見圖1);同樣,當十字光標的中心點處在135150之間時,則落點應(yīng)在150線上,并顯示相應(yīng)的橡筋拖曳線。該橡筋拖曳線并不是真正的線段, 只是用XOR墨水繪制的一個向量,當用XOR墨水重新繪制一遍該向量時,該向量將從屏幕上消失,這就是本程序?qū)崿F(xiàn)光標拖動的原理。 落點落在某一捕捉角度線上時,還得落在捕捉長度L 的整數(shù)倍的點(稱為捕捉點)上,還是針對圖1,其垂點必然處于某兩個捕捉點A與B之間,設(shè)A與B的中點為C,當D處于A與C之間時,落點應(yīng)為A;當D處于C與B之間時,落點應(yīng)為B (見圖1)。其中: - - OA = n XL ; OB = (n + 1) XL n: 非負整數(shù)。 L: 捕捉長度。

18、此時,程序通過一定的操作將在屏幕的最上面的坐標提示行準確地顯示落點相對基準點的偏移長度和偏移角度。用戶可以滑動鼠標準確捕捉到目標點。 至此,已實現(xiàn)某些特定角度及長度的捕捉。為了滿足在程序執(zhí)行過程中能隨時更改捕捉角度和捕捉長度的需要,本程序還增加了相應(yīng)的模塊;另外,本程序中嵌入了窗口放縮功能模塊,通過點取下拉菜單中窗口及漫游子菜單,方便了各種作圖的需要。三、源程序清單 ; OS.LSP源程序 ;err(),出錯處理子程序 (defun err ( msg) (if (/= msg Function cancelled) (princ(strcat nError: msg) ;打印錯誤內(nèi)容 ) ;

19、for if (setq *error* olderr) (setvar cmdecho scmd) (setvar osmode cosmode) (setvar coords ccoords) (princ nnt -多謝使用角度捕捉2.0版,程序非正常結(jié)束-!n) (princ) ) ;for defun err ; ant(),設(shè)定捕捉角度子程序 (defun ant ( / ang0 ang1 ) (setq ang0 (* an0 (/ 180 pi) ) (princ (strcat n請輸入捕捉角度:_) (INITGET 4) (setq ang1 (getreal) (if

20、 (not (null ang1) (setq an0 (* ang1 (/ pi 180) ) (princ n F2/F3/F4/F5/ESC/Return /下一點:) ) ;for defun ant ; leng(),設(shè)定捕捉長度距離子程序 (defun leng ( / leng0 leng1 ) (setq leng0 len0) (princ (strcat n 請輸入捕捉長度距離:_) (INITGET 4) (setq leng1 (getreal) (if (not (null leng1) (setq len0 leng1 ) ) (princ n F2/F3/F4/F

21、5/ESC/Return /下一點:) ) ;for defun lent ; field(),判斷十字光標所在區(qū)間,并投影到相應(yīng)的捕捉角度線上 (defun field ( ps pe ang0 / ang1 n ) (setq ang1 (angle ps pe) (setq n (fix (+ ( / ang1 ang0) 0.5) (setq ang2 (* ang0 n) );for defun ; endp(), 十字光標投影到相應(yīng)的捕捉角度上后,以用戶設(shè)定的長度 ; 捕捉計算落點 (defun endp ( ps pe ang0 / p1 p2 p3 p4 dis ) (setq

22、 p1 ps p2 (polar ps ang0 1) p3 pe p4 (polar pe (+ ang0 (/ pi 2) 1) ) (setq pend (inters p1 p2 p3 p4 nil) (setq dis (distance ps pe) (if ( / = len0 0) (setq dist (* (fix (+ (/ dis len0) 0.5) len0) ;else (setq dist dis) ) ;for if (setq pend (polar ps ang0 dist) ) ;for defun endp ; drag(), 對上一次顯示的拖曳線進行

23、或操作,使其從屏幕上消失, ; 并繪制下一次拖曳線 (defun drag ( pold1 pold2 pold3 / ) (if ( / = b2 4) (progn (grdraw pold1 pold2 -1 0) (grdraw pold2 pold3 -1 0) ) ) ;for if (grdraw pstart pend -1 0) (grdraw pend pframe -1 0) ) ;for defun drag ; coord(), 在屏幕的最上一行的坐標欄顯示長度和角度 (defun coord ( / str leng1 leng0 ang0) (setq ang0

24、(* ang2 (/ 180 pi) ) (setq str (strcat (rtos dist) (rtos ang0) (grtext -2 str) ) ;for defun coord ; init(), 對程序進行初始化 (defun init ( / ) (setq scmd (getvar cmdecho);保留原命令回顯方式 (setq ccoords (getvar coords);保留原坐標顯示方式 (setq cosmode (getvar osmode) (setq olderr *error* *error* err) ;出錯處理 (setvar cmdecho 0

25、);不回顯 (setvar coords 0) ;不顯示坐標 (setvar osmode 0 ) ;取消捕捉 (setq b 0 b1 0 c (0 0) ) (setq pstart (getpoint n 請輸入直線第一點:) (if (or (null an0 ) ( an0 0) (not (numberp an0) (progn (setq an0 (/ pi 6) (ant) ) ) ; for if (if (or (null len0 ) (= (distance plast pframe) 0.1) (progn (drag pstart polde plast) (set

26、q plast pframe polde pend) ) ;for progn ) ;for if ) ;for progn ) ;for cond1 ( (= b 3);用鼠標在屏幕上點取一點時 (progn (setq pframe (cadr a) (field pstart pframe an0) (endp pstart pframe ang2) (if (= (distance plast pframe) 0.1) (progn (grdraw pstart polde -1 0) (setq plast pframe polde pend) ) ;for progn ) ;for

27、 if ) ;for progn ) ;for cond1 (= b 2);鍵盤輸入 (progn (setq c1 (cadr a) (cond (= c1 138) (ant) ;F2 (= c1 139) (leng) ;F3 (= c1 140) ;F4 (progn (setq b2 4) (commandzoom 0.7x) ) ) ;for (= c1 140) (= c1 141) ;F5 (progn (setq b2 4) (commandzoom 1.4x) ) ) ;for (= c1 141) (= c1 13) (home) (= c1 27) (home) (T

28、(princ n 未定義的鍵) ) ;for cond (princ n F2/F3/F4/F5/ESC/Return /下一點:) );for progn );for (cond (= b 2) (= b 4);點取下拉菜單時 (progn (setq c1 (cadr a) (princ n) (cond (= c1 6005) (progn (commandzoom w) (princ n 第一角點:) (command pause) (princ n 第二角點:) (command pause) ) ) ;for (= c1 6005) (= c1 6007) (commandzoom

29、 p ) (= c1 6008) (commandzoom a ) (= c1 6011) (progn (commandpan) (princ n 第一參考點:) (command pause) (princ n 第二參考點:) command pause) ) ) ;for (= c1 6011) ;else (T (princ n 未定義的菜單) ) ;for cond (princ n F2/F3/F4/F5/ESC/Return /下一點:) ) ;FOR PROGN ) ;for (cond (= b 4) (T (home) ) ;for else ) ;for cond ) ;

30、for progn ) ;for while ) ;for defun pull ; draw() , 繪制直線子程序 (defun draw ( / ) (while (/= b1 1) (progn (if (= b 3) (progn (commandline pstart pend ) (princ n F2/F3/F4/F5/ESC/Return /下一點:) (setq b 0 b1 1) (setq pstart pend) );for progn ); for if (pull) ) ;for progn ) ;for while (grdraw pstart pend -1

31、0) (grdraw pend pframe -1 0) ) ;for defun draw ;主程序 (defun c: os ( / b b1 b2 c pstart pend pframe plast ang2 dist scmd ccoords olderr cosmode ) ; an0 len0 are defined out program (init) (draw) (princ n) (commandredraw) (setq *error* olderr) (setvar cmdecho scmd) (setvar osmode cosmode) (setvar coord

32、s ccoords) (princ nnt -角度捕捉2.0版-n) (princ nnt*寧波大學建筑設(shè)計研究院-程建華,1996*n) (princ) ) ;for defun os 四、程序的安裝與使用 1. 程序的安裝 以下三種裝載方式,用戶任選一種即可: 在AutoCAD環(huán)境下,將OS.LSP拷至當前目錄,再執(zhí)行(LOADOS)即可裝載OS.LSP。也可先將OS.LSP拷至ACADSUPPORT子目錄下,再在ACADSUPPORTACADR12.LSP或ACADR13.LSP中加入下面一句語句實現(xiàn)啟動AutoCAD時自動裝載: (AUTOLOAD OS (OS) 也可將OS.LSP拷

33、至ACADSUPPORT子目錄下,在ACADSUPPORT子目錄下的菜單文件ACAD.MNU中的合適位置加上下面的一句語句,即可直接在菜單中點取角度捕捉操作: 角度捕捉cc(loadc:/acad/support/os.lsp) os 2. 程序的使用 在一幅圖中第一次使用該程序時,需要用戶輸入捕捉角度和捕捉長度,第二次調(diào)用本程序時,程序可自動采用上一次最后設(shè)定的捕捉角度和長度作為默認值。然后,程序需要用戶選擇輸入一點作為基準點,此時命令行提示: F2/F3/F4/F5/ESC/Return /下一點: 用戶根據(jù)該提示可任選其中的一種操作,具體解釋如下: 按F2鍵重新設(shè)定捕捉角度; 按F3鍵重

34、新設(shè)定捕捉長度; 按F4鍵窗口縮小0.7倍; 按F5鍵窗口放大1.4倍; 按ESC鍵、回車鍵、鼠標右鍵均可結(jié)束操作,退出程序; 選取下一點,移動十字光標鍵,此時在屏幕的最上面的一行的坐標提示欄準確地顯示出按用戶設(shè)定的捕捉角度和長度所取得的落點相對于基準點的偏移角度和長度,滑動十字光標鍵直至用戶尋找到所需要的下一點并按下鼠標左鍵,命令行重又出現(xiàn)上面的提示行,并進行下一輪循環(huán); 另外,用戶還可以點取View菜單下的Zoom菜單中的Zoom Window 、Zoom Previous、Zoom All等三個子項實現(xiàn)窗口放縮和Pan菜單實現(xiàn)屏幕漫游; 對于其他操作,用戶均可按屏幕命令行的中文提示方便地進行操作。在非漢化AutoCAD 中運行本程序時,只需將程序中有關(guān)的中文提示行改成英文提示即可。 另外,由于不同的機型在AutoCAD環(huán)境下鍵盤返回碼可能稍有區(qū)別,所以要求用戶在應(yīng)用本程序之前對自己的機器鍵盤返回碼按如下方法作一次核實: 在AutoCAD命令狀態(tài)下輸入(grread)并回車,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論