七七影院色七七_免费观看欧美a一级黄片_亚洲综合久久久久久中文字幕_国产999999在线视频免费观看,国产小视频无码,国产精品亚洲日日摸夜夜添,女人高潮潮叫免费网站,久久影院国产精品,日韩成人在线影院,欧美囗交XX×BBB视频,色在线综合高清

機械社區(qū)

標題: AutoCAD內常用術語的自動標注方法 [打印本頁]

作者: arkv2006    時間: 2006-8-29 08:47
標題: AutoCAD內常用術語的自動標注方法
摘要 [HT5SS]本文提出了一種用對話框實現AutoCAD內常用術語自動標注的方法,。用這種方法,可方便地將各種常用術語標注在圖中,為CAD應用提供了方便。 0 @) ~: m* e+ S( V$ w4 Y2 b% |

一、引言

+ b8 V7 v7 C1 A; A n2 o! W1 I

  漢字的標注在CAD設計制圖中是一個重要的部分,,也是一個較為繁瑣,、困難的部分,。目前,,在AutoCAD內漢字的輸入大多采用拼音方式,,對拼音不熟悉的人來說漢字的輸入就很困難。如果能將設計中常用的文字術語直觀地顯示出來供設計人員調用,,將會極大地提高工作效率,。本文就此進行研究,提出了一種用對話框(下圖)將常用術語顯示并供調用的方法,,同時給出了源程序,,供大家參考。該程序已應用于我院的實際生產中,。

: a5 n- F5 ]) x/ L- Q' ]* t, ^( h

1 G1 r! o0 p3 `6 z5 J

二,、原理及方法

& |9 {% A. z4 s. x

  AutoCAD對話框結構包含有多種構件,如edit_box(編輯框),、list_box(列表框),、radio_button(多選一按鈕)等,利用這些工具,,可以開發(fā)出界面友好的實用程序,。

) r( S% R$ ]; L9 w6 J. Q4 A

  左圖就是用這種方法實現的。將常用詞組分類,,分別存于不同的文件中,。根據多選一按鈕中所驅動的分組號分別打開不同的文件,將文件內容讀入并顯示于列表框內,,供設計人員使用,。同時,設有一個編輯框,,可將所點取的詞組顯示于編輯框中,,便于用戶對詞組進行適當的修改,如刪除或增加字符等,。這種方法有一個優(yōu)點,,用戶可十分方便地根據自己需要修改或添加詞組內容。對話框文件及驅動程序分別見#CAL.DCL及#CAL.LSP,。

. a% Q8 U/ h8 W: P) J" j

三,、程序使用方法

/ C4 u6 K# Z+ k0 x

先用WPS、EDIT等編輯程序分類建立詞組庫(注意,,需要存成純文本格式),,每個詞組占一行。程序要求將"常用術語",、"圖紙名稱",、"房間名稱"等各分類所對應的詞組庫文件名分別為$TXT1.DAT,、$TXT2.DAT、$TXT3.DAT厖,。除第一個文件不能少外,,其它文件可空缺,但當點取該分類項時,,系統會提示有關文件不存在的信息,。

0 V) P& [0 T' @5 j/ D9 c# }9 ?

然后將所建立的詞組庫文件及所提供的程序#TXT.LSP和對話框文件#TXT.DCL拷貝到AutoCAD所能找到的目錄(環(huán)境變量ACAD所設置的任一目錄如ACAD\SUPPORT或當前目錄)中,在Command:命令下鍵入(LOAD "#TXT")進行程序的加載,,即可象其它AutoCAD內部命令一樣使用#TXT了,。也可在所使用的菜單文件(如ACAD.MNU)中的下拉式菜單或屏幕菜單部分加上下面一行:[常用詞組]^C^C^P(if (null c:#txt) (load"#txt")) #txt以后可直接從菜單中驅動該程序。

9 R8 X: b* G e) W

在COMMAND:狀態(tài)下,,鍵入#TXT后,,系統彈出一個對話框,根據需要點取所需的詞組類別,,再從列表框內選擇所需詞組,。所點取的詞組會在編輯框[所選詞組]中顯示。用戶可以在此對詞組進行必要的修改,,點�,。跲K]后,根據提示輸入字高及起點即可把詞組寫到圖中,。

$ m# _# V8 m% Z% k: F

需要說明的是,,本程序中是將文字以"HZ"字型寫到圖中,要求字體為TXT.SHX及HZTXT.SHX,。若您的軟件中無這兩種字體,,可將其它字體改名為該兩種字體(要求一個為英文字體,一個為中文字體),,或將程序修改為您所具有的字體,。但需要注意,也許您的字體在用于設置字型時會多一個選項,,詢問是否垂直書寫文字,,此時,可將字型設置一句改為:(command "STYLE" "HZ" "txt,hztxt" 0 0.7 0 "n" "n" "n")即可,。

t1 P' s( |3 U1 w4 [& v0 {

本程序在AutoCAD R12.0 For DOS及For WINDOWS版上均調試通過,。

. k+ J0 V- n) Q

(defun c:#txt ( / oldcmd olderr ok txt_tb txt dcl_id sty fp nn ht pt txterr diag init wr_txt old_nn)

1 c8 o; z3 \4 y* m5 k. P* y* d

; 定義錯誤處理子程序

( d* ?* q$ M) h9 J

(defun txterr(s)

8 r, Y r0 p1 H7 K7 \

(if (and (/= s "console break")

! c; M% F* L5 T k

(/= s "Function cancelled")

2 S$ R" p5 D8 D

(/= s "quit / exit abort")

0 F7 u" C |& H0 F

)

/ P* g0 p9 @4 P& i

(princ (strcat "\nError:" s))

' ^+ y3 l( {1 N d% F

)

# o% G& j7 |: p W9 [

(if olderr (setq *error* olderr)); 恢復原系統設置

F) i% H; A- T5 F* c

(if oldcmd (setvar "cmdecho" oldcmd))

: E: F" |+ R& `) o6 g. M

(princ)

2 |. _3 N4 B- X! |

)

5 d+ a+ ]. E6 N. ]

; 對話框顯示及驅動程序

3 A1 n$ y j; q9 v+ O

(defun diag ( / i)

2 F0 y7 C; Y5 Z) g9 q1 I2 O

(if (> (setq dcl_id (load_dialog "#txt")) 0);加載對話框文件

9 d7 I4 `* X& J9 F, H8 U

(progn

. b3 k/ H S! T4 }: M' x) h

(if (new_dialog "filetext" dcl [JX*6]id); 顯示對話框

8 ]7 @; ~% n; z( s$ Z$ v# S2 o: W

(progn start_list "what"),;將詞組顯示到列表框內

' F+ k, O/ [7 T8 q- a

(mapcar 'add_list txt_tb

* k0 d* \7 x5 S& j+ X: \; A3 c

)

( R7 Z# @! `" g# V" ]: D x2 l

(end_list)

* b& V' W2 v" Y' O% Y% y4 J

(setq i 1)

+ o3 `+ F% w+ p9 g0 j5 c

(repeat nn,;點取詞組分類項后的操作

# l9 G$ u* L' S3 `0 t

(action_tile (strcat "c" (itoa i)) "(wr_txt)")

* e1 {# H5 `" X

(setq i (1+ i))

7 g+ K! P; Z1 E4 K

)

* K8 w( F; q. E9 Y9 Y- u

(action_tile "what" "(setq i (atoi $value));選中詞組

" t4 T$ X# K; }7 G# Y

(setq txt (nth i txt_tb))(set_tile \"sel_ok\" txt)"

3 `& @* Z h" n9 O

)

6 n! `: \/ `4 Q' Z/ ]( M

(action_tile "sel_ok" "(setq txt $value)")

& K3 Y/ R) s+ `" W

(action_tile "accept" "(setq ok T)(done_dialog 1)(unload_dialog dcl_id)")

, ?) h! n! n* i1 G

(action_tile "cancel" "(unload_dialog dcl_id)")

z/ Y3 M6 B* |/ v

(start_dialog)

1 Q5 Z1 _) N8 D* C$ v5 N) ]9 C

)

6 Z$ y+ k2 q1 X

(prompt "\n無法顯示對話框FILETEXT! 請檢查對話框內容!")

5 k( F4 i$ V. [; m) Q! A% s" P

)

, J3 G% Y% h2 {2 c- J7 o0 E: O4 c

)

- x6 b ]/ }9 h! W h2 W3 {

(prompt "\n無法加載對話框文件#TXT.DCL! 請檢查文件是否存在及路徑是否正確!")

% T d, ?/ M* J* g( Q

)

& V! l; ~2 d! ]2 A

)

7 C6 d2 q0 M" w$ c6 O. O$ u

; 初始化程序, 把第1個分組項中的詞組讀入表txt_tb中

2 X' H; B8 e. j: r9 S$ j

(defun init( / fname fp txt1)

) c7 A$ o" C5 l% ?

(setq fname (findfile "$txt1.dat"))

/ D# o$ Y+ A, t7 D8 r/ i

(if (not fname)

+ w! i. R' J2 E1 y3 V& z

(progn (princ "\n文件 $TXT1.DAT 不存在 !") (exit)) ; 文件不存在, 則退出

8 }$ A/ ~* ~) i s# N9 O) r

)

0 ^$ q- _- F+ t1 F6 ~

(setq fp (open fname "r"))

: [9 F" o9 l1 G! J! W5 G+ h

(setq txt_tb '())

" g0 n# Z+ V! @- Y

(while (setq txt1 (read_line fp))

- K- h3 Z4 D0 R7 g3 @: [

(setq txt_tb (cons txt1 txt_tb))

3 q; m3 W1 h% v) G& N8 K" _

)

' ?# E' A3 z- {/ a8 t$ Y8 m/ v

(close fp)

. j; m$ g; s" h5 e

(setq txt_tb (reverse txt_tb))

( X, E/ r6 }% t6 f4 q" D, F) R

(setq old_nn 1),;記錄索引號

- c/ M1 z0 w/ V+ d5 m" E0 z

)

$ V' x4 ]8 n; v6 T

; 更換列表框內詞組顯示內容

4 s' \" A. j' l8 W; N1 K

(defun wr_txt ( / fname fname1 fp txt1 i)

& T2 r: `+ P6 R. {5 _! w) N1 k

(setq i 1)

: }* `" w& v6 B

(while (<= i nn); 判別哪個詞組項被點中

4 C% F0 u* a4 W5 u; Q6 v5 t) U: x6 I

(if (= (get_tile (strcat "c" (itoa i))) "1")

- Y# f2 e6 s( w

(setq fname1 (strcat "$txt" (itoa i) ".dat")

4 }) R* c: P# E- _! c) G' O0 K

i nn

% ~7 \3 Y0 r# o

)

0 x1 e* K/ H0 m

)

( ^* r* b4 C% v" q

(setq i (1+ i))

7 |8 J. `+ g, P; {

)

3 ]& f" e* J* l% y, `+ S+ M

(if (setq fname (findfile fname1)); 查找文件是否存在

2 t% e. |! k1 t) |' V

(progn

$ I& o- Q+ M+ U; A1 G

(setq old_nn (atoi (substr fname1 5))),;記錄索引號

* K* i: M, E3 ?5 T: v

(setq fp (open fname "r"))

$ O& G% `! [' Z+ S7 r, }8 y/ n

(setq txt_tb '())

7 j8 h' K6 j6 o' V2 D; U

(while (setq txt1 (read_line fp));依次讀出各詞組

1 {+ v9 J& G# d5 p* v& D

(setq txt_tb (cons txt1 txt_tb))

8 c4 ~7 u9 s) Q; F- a

)

* D7 n! [1 F S" {4 U! B1 ?$ }, _* f

(close fp)

% o/ b/ Y% R" g6 {2 M8 `8 g- u+ N% h

(setq txt_tb (reverse txt_tb))

* g6 {- J6 D* P9 {

(start_list "what"),;在列表框內顯示詞組內容

; I `7 h, S1 J0 e4 b7 j

(mapcar 'add_list txt_tb)

7 {* r: B1 l) w" l- t: b

(end_list)

5 b' k! C% K5 J: a- ?+ ~" ?' W

) ; progn

1 j& C4 a$ m- T: j5 S! U

(progn

4 q# O H0 g# M# T3 `

(alert (strcat "文件" fname1 "不存在!"))

: ^$ [$ }6 r) K. e$ m( L u {) d

(set_tile (strcat "c" (itoa old_nn)) "1"),;恢復原記錄號

8 x0 A& D' L! L

)

4 y ^' l/ b: N$ a

) ; if

* Z! B x8 l$ y

)

' ^3 g, V$ L6 Z$ I3 g7 ]

; 主程序開始

4 d% w3 g, S7 [! z9 i

(setq olderr *error*

7 g/ t# \) U Y( H8 g

*error* txterr

3 n1 I" L8 t; ~; }0 V

oldcmd (getvar "cmdecho")

6 F$ M1 g* Z0 l4 G+ u

)

6 v; j; M' D( t3 Z( B" R

(setvar "cmdecho" 0) ; 命令不回顯

* R. A F. ~/ U

(setq nn 9) ; 詞組分類數

7 w9 ?# ~. O4 N# ~# s/ [" \+ W9 c

(init) ; 初始化

3 h3 ^3 g* t" R9 V5 o2 O- F- T

(diag) ; 驅動對話框

# k5 c$ g6 b( u o

(if (and ok txt)

; z- @. K8 n5 n4 Q$ h/ j

(progn

6 k1 i7 S" d$ O# i

(if (or (= (setq sty (tblsearch "STYLE" "HZ")) nil); "HZ"字型是否存在

) F: G$ F: _) H! A

(/= (cdr (assoc 40 sty)) 0) ; 字高是否為定值

: w M& T' f7 D. i8 D/ ]: R

(/=(getvar "TEXTSTYLE") "HZ"); 當前字型是否為"HZ"

; t; Q5 v2 {# ^* ^

)

* \; \& \; Z, u: B: k: u

(command "STYLE" "HZ" "txt,hztxt" 0 0.7 0 "n" "n") ; 設置"HZ"字型

, \) E& b9 i8 v& ~

)

3 s: y+ x# @5 x# i

(initget (+ 2 4));下面的輸入值要求大于0

7 U9 |' g0 t6 L. G5 D

(setq ht (getreal "\n請輸入字高<500>:"))

7 D" o9 B# {. V9 ~, q* Q( w3 p

(if (not ht) (setq ht 500))

1 g) Z$ D, b! O7 u+ [3 x

(setq pt (getpoint "\n請點取文字起點:"))

6 ^# \6 }0 N) k. d

(command "text" pt ht 0 txt)

5 e5 O9 _* b: | S- w

)

0 Z; E; G" j* L

)

8 ~' H2 B3 [, d7 n5 o

(setq *error* olderr),;恢復原設置

& R* d1 j# S S& s3 s# q/ L) ^

(setvar "cmdecho" oldcmd)

8 y8 }3 o: r: N8 C& T9 F

(princ)

9 k6 _& B g2 V1 C' E: V

)

Y9 B7 T! X! _: A6 T( v

// #txt.dcl

# l9 i( X! o x

// 供#txt.lsp調用

+ ?8 m2 o, U7 x" F& ? n6 c9 j

filetext : dialog { // 對話框名稱

% a. S0 e1 [5 J# P a8 Q

label = "常用詞組"; // 對話框標識

# `0 _; Z" k8 L0 N# K x# X$ {, F

: row {

0 A+ J! b X1 K

: boxed_column {

4 t4 u6 _. W$ M* W! V. p p; s

label = " 索 引 ";

7 R! W$ N) J) _. D K2 y

: radio_button {

) l+ u& {8 C n4 {

label = "常用術語"; // 多選一按鈕

- L+ m/ \5 B" g' `" e p) _

key = "c1";

, t, G2 o2 Y# e9 u9 O$ C

value = "1"; // 初始值為"1", 表示選中

) D1 X, L/ G8 m5 [$ o9 G5 o6 D

}

& Y) I2 ^% M! |: k. I! O: X, H8 ]

: radio_button {

8 K7 `9 ~ |* m s2 i) F: |

label = "圖紙名稱";

c; `, W' m$ x

key = "c2";

# \1 X( @! v: ?% S& q. h3 q

}

0 }8 \7 U; f9 g6 w3 _

: radio_button {

2 q Y! _- p2 e

label = "房間名稱";

. s7 z# [3 n0 i$ c: @

key = "c3";

3 J$ \! g3 U2 h

}

( M0 U% t7 v7 m# w. K* v

: radio_button {

9 E C4 S. N& K/ v

label = "衛(wèi)生器具";

. n3 M, m8 r- R

key = "c4";

% H- x+ k; `1 T" t4 s0 g

}

/ S5 T& @3 E( o! _) o

: radio_button {

) l+ p# K. i. c& ^' [2 h2 q* w

label = "管材配件";

1 ^) u y4 V2 w' z% ^

key = "c5";

0 d" f) f* f: G$ P

}

. Z3 p0 s' S# O- Z7 K R# C0 ~

: radio_button {

# [6 j' N# N6 r; \6 K

label = "器材儀表";

0 k" B [' E& O

key = "c6";

6 v8 u7 S M1 t2 V% h* _

}

8 t' l9 q" N% j# A5 f' e( h7 A8 g

: radio_button {

' {9 @7 @; K0 X& D! ]6 N

label = "常用設備";

* @8 Y9 a' w* q% b

key = "c7";

# ]9 g: o5 ^' T! ]

}

" o9 b7 _+ e) }+ f+ m

: radio_button {

2 I9 f8 k# b/ V) s. u

label = "構筑物";

: X+ H# X7 t) b' h7 l$ ^

key = "c8";

+ H' G- a' x: E" w. ?4 I

}

0 Z. X& I R& y$ I0 ]" J

: radio_button {

) W( L5 Z( l' O/ y, L

label = "其它";

, e' S# l; ^/ B' [4 }

key = "c9";

) N% M# t# H( F0 S, A

}

: M A1 J5 F' d% {

}

: w+ b s! e6 y2 i( \

: list_box {

4 q& N7 N1 s1 w( ~7 ^8 i4 A& ^

label = "詞組內容";

. }) w3 @+ l B! N# W

key = "what";

( ^) N& \* T7 U% e. N2 ~* b

height = 15;

1 s/ g6 L2 R3 L/ ]/ L; |! T- n5 w

width = 26;

- r6 N3 x h( v N/ S

allow_accept = true; // 可雙擊鼠標選取

" r) r+ C- V r& g F8 k1 I

}

/ T8 M! {8 F$ \0 a B4 A

}

9 g6 u$ L+ W5 P& [/ b

spacer_1;

% u' W* U! ]4 W) ~

: edit_box {// 編輯框

# L1 x& Y; Z$ {: @

label = "所選詞組:";

% F; C# u8 _5 x* ?

key = "sel_ok";

9 `7 _6 Z" I& D% Q( j! ^- a

}

* I# W6 X8 b# [: U" d9 i. Z* l* |

spacer_1;// 增加間距

3 U& b. ^2 ?% b( M% i3 J( V7 R) L/ ~

ok_cancel;

% H" H9 ~) M' }+ ^; a

}


作者: 昊令天下    時間: 2010-1-22 11:01
就是啊,,有點過于專業(yè)了,能不能淺顯易懂的講解一下,,謝謝
作者: monkeyzxp    時間: 2010-8-3 19:09
有點過于專業(yè)了,,能不能淺顯易懂的講解一下
作者: 文章aa    時間: 2010-9-29 10:44
程序設計專用詞匯。使用者不用看
作者: 隨風求學    時間: 2010-9-29 20:33
這個不太懂,,如果解決完,,可以共同探討一下嗎?
作者: 英武殿大學士    時間: 2010-9-29 20:59
不太懂啊·············
作者: jsj306    時間: 2010-10-17 23:45
有對話框,,挺高級的,,不過這是機械社區(qū),樓主是搞建筑滴
作者: janbo    時間: 2012-5-30 11:12
這個很專業(yè)啊,。,。。,。謝謝,!




歡迎光臨 機械社區(qū) (http://97307.cn/) Powered by Discuz! X3.4