久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開始

搜索
查看: 3918|回復(fù): 7

AutoCAD內(nèi)常用術(shù)語的自動(dòng)標(biāo)注方法

[復(fù)制鏈接]
1#
發(fā)表于 2006-8-29 08:47:37 | 只看該作者 |倒序?yàn)g覽 |閱讀模式
摘要 [HT5SS]本文提出了一種用對(duì)話框?qū)崿F(xiàn)AutoCAD內(nèi)常用術(shù)語自動(dòng)標(biāo)注的方法。用這種方法,可方便地將各種常用術(shù)語標(biāo)注在圖中,為CAD應(yīng)用提供了方便。 0 [6 A' u2 d+ R- e0 x: {" |

一、引言

6 J0 F' c. l% S9 B9 V- ~; ]

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

! \! a1 J+ j& g) b; X6 I

. p4 w8 {9 o/ ]: K- O7 U7 x

二、原理及方法

+ r- e8 O5 S5 l# r* {

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

2 d9 a- a5 }& t& i) }5 v

  左圖就是用這種方法實(shí)現(xiàn)的。將常用詞組分類,分別存于不同的文件中。根據(jù)多選一按鈕中所驅(qū)動(dòng)的分組號(hào)分別打開不同的文件,將文件內(nèi)容讀入并顯示于列表框內(nèi),供設(shè)計(jì)人員使用。同時(shí),設(shè)有一個(gè)編輯框,可將所點(diǎn)取的詞組顯示于編輯框中,便于用戶對(duì)詞組進(jìn)行適當(dāng)?shù)男薷模鐒h除或增加字符等。這種方法有一個(gè)優(yōu)點(diǎn),用戶可十分方便地根據(jù)自己需要修改或添加詞組內(nèi)容。對(duì)話框文件及驅(qū)動(dòng)程序分別見#CAL.DCL及#CAL.LSP。

2 b" `; b3 B7 x# v2 R0 K v& u

三、程序使用方法

" S8 K0 m$ g1 f. v$ G3 U

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

9 r) }" _ d/ n

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

2 r0 E: N \ i3 ?# B- U9 [

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

. t* }) }5 o* i% D9 h) p$ ^

需要說明的是,本程序中是將文字以"HZ"字型寫到圖中,要求字體為TXT.SHX及HZTXT.SHX。若您的軟件中無這兩種字體,可將其它字體改名為該兩種字體(要求一個(gè)為英文字體,一個(gè)為中文字體),或?qū)⒊绦蛐薷臑槟哂械淖煮w。但需要注意,也許您的字體在用于設(shè)置字型時(shí)會(huì)多一個(gè)選項(xiàng),詢問是否垂直書寫文字,此時(shí),可將字型設(shè)置一句改為:(command "STYLE" "HZ" "txt,hztxt" 0 0.7 0 "n" "n" "n")即可。

5 Z( N) [6 Z: z

本程序在AutoCAD R12.0 For DOS及For WINDOWS版上均調(diào)試通過。

: `) _! C H3 S0 i0 @

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

$ u4 }% i& G2 f+ [; ]; ]# r( C

; 定義錯(cuò)誤處理子程序

2 B/ L7 I( p9 o3 k

(defun txterr(s)

5 w' T* x! f/ `$ U l

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

; h! J+ T/ M$ r$ n

(/= s "Function cancelled")

7 d9 o% g) j. w8 p* w( G

(/= s "quit / exit abort")

3 b# X! }# K3 t- G

)

7 n. v$ f" [& y/ C6 ]7 f2 B+ o

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

/ s( ]8 U- R' \- h7 p

)

- A; |: S- x4 T

(if olderr (setq *error* olderr)); 恢復(fù)原系統(tǒng)設(shè)置

6 x6 x1 d: D- E, E1 b

(if oldcmd (setvar "cmdecho" oldcmd))

3 Q! r) R* G& J

(princ)

& C: s% }: Q0 F

)

4 q* S7 k7 E, p

; 對(duì)話框顯示及驅(qū)動(dòng)程序

: w- f' ?! A: J: t {% c. Y

(defun diag ( / i)

" T2 A+ V) A' Z/ }

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

1 Y/ w& Y* b- Y1 \$ S5 R

(progn

$ y1 v+ C# j- F u) M

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

8 O' y' A; D% T5 R* B" Y2 ^0 \+ [

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

) }7 H% c: m0 \3 A+ D

(mapcar 'add_list txt_tb

: |3 q9 L, w2 r$ H4 x

)

3 \) R: Z' y) }1 b9 f& b

(end_list)

- J, {' L2 o9 {5 I3 E# M1 H9 j; x

(setq i 1)

% Q8 n6 P/ o% u7 J# M

(repeat nn;點(diǎn)取詞組分類項(xiàng)后的操作

9 X3 _: O0 N6 c

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

4 f+ y1 M+ ?( y* U u

(setq i (1+ i))

! f- C3 n) i$ R& @) t. L. t

)

1 u/ \. ?4 c7 [7 l$ D2 Z" f. @

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

0 B' a) X* N& E3 N" X

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

% U7 J5 V0 j+ e3 k0 J) `9 M) x

)

; ?/ f( b8 o: y8 N) X" E: z

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

& X* T, I& V2 y& i$ v( F

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

, Q# }7 b+ w7 C; U: T4 s8 F

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

' g7 W3 h& X/ J% A

(start_dialog)

' f) q* x! a2 u" `; J

)

7 G0 O( ^. a5 v+ O& i% P

(prompt "\n無法顯示對(duì)話框FILETEXT! 請(qǐng)檢查對(duì)話框內(nèi)容!")

6 U+ J( T! o' b" k1 o

)

. o* s, v2 w0 m0 p/ ]

)

7 w9 S" a: {1 h3 k) S& `

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

$ O, H3 u# t) `# v) C) r) B# Y

)

; {% E* w0 w8 O3 r; J

)

' w& I5 \) ?8 \( D

; 初始化程序, 把第1個(gè)分組項(xiàng)中的詞組讀入表txt_tb中

6 T$ _; ^! j0 f- |/ }

(defun init( / fname fp txt1)

* |+ ^3 @0 o7 d+ |$ S) X

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

* q( w" \7 Y/ }% `( v* D; M

(if (not fname)

" L6 `" v. ^$ V/ W9 j! B

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

' `) i1 C% D. V* L: |, R

)

9 x* w+ K: j c# Q3 I

(setq fp (open fname "r"))

9 y: P, h- m2 d6 n5 t1 H! I

(setq txt_tb '())

3 Z6 A3 N# r- E

(while (setq txt1 (read_line fp))

1 b, T3 `. t1 V- \/ @

(setq txt_tb (cons txt1 txt_tb))

$ {4 V8 P) T5 k- a- |

)

9 V" l, D) v6 @6 h c5 e

(close fp)

# c. }/ g6 N0 R9 P- ~7 K# @# V q

(setq txt_tb (reverse txt_tb))

2 C+ F2 P/ C* l' r3 w1 n

(setq old_nn 1);記錄索引號(hào)

, |3 ^/ m2 z% ]: J$ A( c3 }

)

8 d) g4 u% M% F* x \$ ~

; 更換列表框內(nèi)詞組顯示內(nèi)容

/ c3 ^9 y) C$ L, \ ^9 y

(defun wr_txt ( / fname fname1 fp txt1 i)

3 P' L( M3 A. c1 q

(setq i 1)

- ?6 ]% q7 o B$ C" S- D8 _! a

(while (<= i nn); 判別哪個(gè)詞組項(xiàng)被點(diǎn)中

5 r# \- P# c) }- B( w4 |

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

8 J3 m8 v" w# {% b" \

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

+ Y8 h" a. Q$ J7 W/ w |7 G

i nn

" {4 |* k) ?8 [2 C3 u+ r

)

; [, R( Z$ \, I* l- u; q$ V4 w. I4 X

)

- ^) U1 Y8 D \ ^) |

(setq i (1+ i))

4 w' u2 o {1 ]7 }% Q! ]! |

)

; n7 i: L& H7 U, @

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

6 v+ B6 F" }0 n; L4 ?$ L9 r

(progn

4 N9 \" H4 X* |1 ^

(setq old_nn (atoi (substr fname1 5)));記錄索引號(hào)

% H) P4 j/ @5 ~, E/ p9 s* A0 }% J

(setq fp (open fname "r"))

, ~3 } J! H! w

(setq txt_tb '())

, S9 e0 L/ F @4 j$ e

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

+ Y0 D. n: a+ ]. Y1 W

(setq txt_tb (cons txt1 txt_tb))

5 q1 M- I! p8 ?3 L

)

4 ^. l/ H0 x4 ?4 F5 o

(close fp)

9 G* i6 G* |5 Q& g1 r+ s& U- A

(setq txt_tb (reverse txt_tb))

7 T0 n) f) p. S

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

! U1 i3 a3 d# F! P5 j

(mapcar 'add_list txt_tb)

) w6 R+ _* `3 U2 H) N& {: f! E# B

(end_list)

+ [9 ~, O6 j) x- J7 O2 C

) ; progn

, l4 e# b" \4 F8 b+ |

(progn

& N& {: ?9 E4 F- L8 m+ y

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

" t# b+ V* f/ c0 ?% b4 z* U, J

(set_tile (strcat "c" (itoa old_nn)) "1");恢復(fù)原記錄號(hào)

; o G& }* e; F2 B

)

5 w( H/ u' Q- {! W9 U

) ; if

) X9 o8 E! H; K# s

)

6 x4 w, ^8 R3 s$ W* p# C: Y6 G

; 主程序開始

' x; ~3 M2 W0 X, B5 h3 I

(setq olderr *error*

% J7 ~0 M5 w6 x9 Z

*error* txterr

0 h. |: |9 O6 v% T$ v! l6 H

oldcmd (getvar "cmdecho")

# {; u: H1 G. g* O

)

3 T5 w1 s7 Z; c: k D/ f

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

3 \, Z# F1 |9 w) a9 d' p

(setq nn 9) ; 詞組分類數(shù)

/ N3 h, Q8 [( r+ n1 ~! m

(init) ; 初始化

8 d! r, d. N7 ^$ q

(diag) ; 驅(qū)動(dòng)對(duì)話框

( m0 Z4 V) E8 z4 o' ]) p+ L0 t7 p! N5 z

(if (and ok txt)

. {* G0 L3 V; L0 S9 p

(progn

# U' a" b5 f! G, j7 d

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

; d$ @5 X4 k# u) C+ D: v( S Q: B

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

6 f" l0 A) U7 d

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

6 I9 J @2 D8 j* R

)

* Z( d2 Q8 F' A3 o+ h

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

% W2 _: |9 z# k8 I/ k. e/ Q, g& T5 C* f

)

P" A% N8 _2 _

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

/ d, Q7 h. G. v4 u

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

7 n7 Y* W" i. b& ^4 E* ~" J

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

* L0 J) r7 s2 }, ^$ r. e; a

(setq pt (getpoint "\n請(qǐng)點(diǎn)取文字起點(diǎn):"))

4 j3 \ ~( {" @: n

(command "text" pt ht 0 txt)

2 ~" Z8 J9 j3 o% [

)

5 p, f; I6 t* z1 Z) y4 f

)

& w0 [* S+ }1 N0 Z- ]

(setq *error* olderr);恢復(fù)原設(shè)置

" Z3 Z K n4 q" K5 k- V' p! F5 \) ~

(setvar "cmdecho" oldcmd)

! X8 W K4 W7 D+ @. y

(princ)

( M w; f3 r g9 p2 A% y/ j) s* J

)

! i* x1 l! d+ z

// #txt.dcl

6 X) \8 H' f5 C. Q% _9 D

// 供#txt.lsp調(diào)用

# ~& {( [8 ] P. F

filetext : dialog { // 對(duì)話框名稱

0 n9 ~+ g& r" X8 W( X$ o% v

label = "常用詞組"; // 對(duì)話框標(biāo)識(shí)

9 ^" m6 n& B% o7 q% R) @

: row {

W+ e( Q; s. q( S

: boxed_column {

2 v. Z1 v- Z1 s# D9 n

label = " 索 引 ";

7 T6 T4 m" [ ^# Z: G

: radio_button {

6 R' n5 Q* X# a r. d8 C

label = "常用術(shù)語"; // 多選一按鈕

- L( E3 K4 m7 h p% b

key = "c1";

7 K, t; j0 B2 ?# V* D: B

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

- T3 X" Y, F% H& {& h

}

. Y4 b3 m2 ^: a. }+ V* O2 n' F

: radio_button {

+ B9 K! r! Y- ?2 O' S& [! V `7 x& S1 c

label = "圖紙名稱";

- r9 D2 Q+ M& I; O

key = "c2";

1 I" k& T4 J6 M9 e9 }7 z, K6 O; W

}

- d3 r" J6 ?+ T1 e$ W) n: j

: radio_button {

8 w: F" E/ Y9 g) i/ v

label = "房間名稱";

* F, G- e; F2 Y$ E# S4 z; q+ s

key = "c3";

6 R9 b+ h8 c8 b) p/ o

}

2 Y8 e% A8 r5 k

: radio_button {

1 C; U7 P( B9 v5 s

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

' J' S7 H3 m' c1 T# p3 o

key = "c4";

$ @. f9 p3 v- A8 k

}

2 v, s \7 C7 Z

: radio_button {

! ]* ~7 ?0 o: H2 p+ s, A

label = "管材配件";

+ {4 n4 S+ t) D

key = "c5";

- e3 j" Z, k0 v

}

: J: C/ [5 V& ?+ m

: radio_button {

6 P: p7 B1 j- t

label = "器材儀表";

1 s2 e6 u% C% O5 }" h' t. v2 K) d, u

key = "c6";

1 F* U7 Z# C3 `8 n q" d" f( I

}

" o) _7 U: x3 v4 y" `/ z, J; d

: radio_button {

7 z( }. K. d- q! @% U( z

label = "常用設(shè)備";

|& ?& ^( r3 R0 p2 K9 c& R. c) w2 {

key = "c7";

9 r0 Q! j; U8 z- J9 l' D# I

}

5 z; Z9 l( ?4 C& X. U2 l! @9 g

: radio_button {

- r- O. J5 ]( k0 M2 w+ }" M

label = "構(gòu)筑物";

& H- a3 n: J1 f; H8 y

key = "c8";

- @6 x+ I7 P+ e& K: y: I

}

1 i. a' Q6 u% O! N

: radio_button {

0 u4 \! Y" X: }! ^ O

label = "其它";

' V3 ?8 h( q9 _

key = "c9";

4 k' G; n4 ~0 w9 N9 ?

}

, |) ~/ S1 o4 @! M0 H

}

" D- U+ p9 `. [( r H

: list_box {

& J* G! O5 u& K: s0 \

label = "詞組內(nèi)容";

) ?# @4 i( P0 w

key = "what";

2 Q* s, Q$ ^7 i: Z+ u: Z: M

height = 15;

0 }% l n0 t% o3 V+ r* I5 z

width = 26;

0 q! I9 _; j- N0 V& B

allow_accept = true; // 可雙擊鼠標(biāo)選取

" m( |, K7 ^3 F2 T

}

: h b' d% X# H$ @1 R$ w# h! y

}

3 ~' a/ x }0 _" C2 \+ s+ P

spacer_1;

3 ?" a/ y, H! ?& }$ W$ q7 Q

: edit_box {// 編輯框

9 [- v9 N. q8 S, n

label = "所選詞組:";

! W2 Q K: ^$ k6 E

key = "sel_ok";

3 v; h; i7 ^/ ?* h. x! o. t

}

) {4 j) n8 ]8 r9 o$ W" C6 R5 i/ u

spacer_1;// 增加間距

( T9 J2 ], a; O/ E O# Y

ok_cancel;

+ Q' _8 [" m5 j* ?/ ?+ ?, _+ s

}

回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2010-1-22 11:01:09 | 只看該作者
就是啊,有點(diǎn)過于專業(yè)了,能不能淺顯易懂的講解一下,謝謝
3#
發(fā)表于 2010-8-3 19:09:08 | 只看該作者
有點(diǎn)過于專業(yè)了,能不能淺顯易懂的講解一下
4#
發(fā)表于 2010-9-29 10:44:49 | 只看該作者
程序設(shè)計(jì)專用詞匯。使用者不用看
5#
發(fā)表于 2010-9-29 20:33:09 | 只看該作者
這個(gè)不太懂,如果解決完,可以共同探討一下嗎?
6#
發(fā)表于 2010-9-29 20:59:32 | 只看該作者
不太懂啊·············
7#
發(fā)表于 2010-10-17 23:45:11 | 只看該作者
有對(duì)話框,挺高級(jí)的,不過這是機(jī)械社區(qū),樓主是搞建筑滴
8#
發(fā)表于 2012-5-30 11:12:57 | 只看該作者
這個(gè)很專業(yè)啊。。。。謝謝!

本版積分規(guī)則

Archiver|手機(jī)版|小黑屋|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2025-7-19 21:00 , Processed in 0.062412 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復(fù) 返回頂部 返回列表