|
通过粗糙度标注研究cad属性块(三)2007-10-02 14:35tag1:='范围';
$ N2 S0 i. ]0 `% I- S. d- F5 O( d; {- j! K7 P3 Z: n/ ]
prompt1:='加工范围:';
% M( C1 E" z- H
, { ?# O3 @/ evalue1:=combobox1.Text;( Y# [2 L2 I" A0 ^: o+ r% o
. t) o+ Q$ J+ `" u$ K
tag2:='加工余量';
5 x$ N% q- E, r( d: A! k- t y4 ]: e: W- T u X) w
prompt2:='加工余量:';7 X2 e' p4 A7 N. _5 _/ S
1 I4 Q; f. A( v& Y. @0 X
value2:=combobox2.Text;
* f S& I9 _$ B4 }
4 |( x; X q0 i3 e; v% [tag3:='粗糙度下限';8 s t! h# @" ~$ \ n/ \
b3 U+ W9 X L4 h1 i: ^0 pprompt3:='粗糙度下值:';
D- B) o: h: h; v0 [. W/ P. K
value3:=combobox3.Text;; x+ X( D2 B' r. E
4 P3 t8 u# m2 v0 r) _' Ctag4:='粗糙度上限';
- e! c( g' [; O Z$ A& j* [
* h4 V& R! u: d6 }* ]prompt4:='粗糙度上限值:';1 k# P3 K9 h% J/ F4 j" |' M! P3 I
& M7 B; D- b% H; c, o) ovalue4:=combobox4.Text;3 _. C) H2 D5 C; T
& x! R+ k& O4 x0 }$ Ptag5:='加工要求';
& a' j! q4 {% r# W1 h6 R1 N Y, T# R& a- ~ {
prompt5:='加工要求:';1 [9 r# D5 r/ L
/ k- a3 H( Q+ a$ K7 ^. Z
value5:=combobox5.Text;; u& Y- F6 c6 A3 z
) a8 D* m$ z& y: n; n6 Ptag6:='取样长度';: a, F# J9 P, u$ U& V( M
' S7 P4 @5 M: r4 B5 L. L$ W/ \prompt6:='取样长度:';4 ?# @; F/ `5 U7 F- }; v
8 E5 {" i; [1 L: b
value6:=combobox6.Text;1 ]) i- m: a5 ~
( ~/ `' ~1 K0 a$ atag7:='波纹长度';# ~/ x1 J- ?/ b( S( {: V/ W. G
0 _3 R9 s( O$ j
prompt7:='波纹长度:';
; O. ]0 }4 g3 A) S f8 @: ~4 i' z( t6 N$ \4 V
value7:=combobox7.Text;
* T( d, q7 L8 {- w) m8 }6 a% v& @2 P) M0 `/ h1 @$ u4 ~) M
tag8:='纹理';4 Z1 y6 S7 U' B- {- f: K) x. E1 W
% q- D/ c2 G" g' T- K6 K4 a3 t
prompt8:='加工纹理:';
" X. m$ n# f' l. k* V4 d" h t( C9 ^9 ~2 a; }
value8:=combobox8.Text;
! p- d5 c) k% D. U/ S( M
* G- D }, n0 L//tag9:='旋转角度';. a+ U2 R! @) v4 i: } H& v
4 V* n0 C* {. E" ?
//prompt9:='旋转角度:';0 A' ?/ X' r9 t( [
( F, q) c4 I6 y( z+ F. ?: e* e//value9:=edit1.Text;
A1 A! O: J: ?) p
2 u' u' F7 I" Y/ F* r! eblockobj:=caddoc.blocks.add(point1,blockname);//添加块
1 M0 V" q# t' ~) _' t! F4 o% l& Y3 Z+ A* N* T/ f
//分别为块添加属性 x# X3 ?1 a3 a2 k4 k7 T
& P9 {$ @. L. ~5 t8 g; k7 H' O) Yatt1:=blockobj.AddAttribute(height,mode,prompt1,point6,tag1,value1);. [( }* p2 v, r# H0 i8 z% q4 f
; O9 J4 v: f7 {att2:=blockobj.AddAttribute(height,mode,prompt2,point7,tag2,value2);
( K. y" {! n j; {5 N
) ^/ h# }7 P" B1 y& @1 Uatt3:=blockobj.AddAttribute(height,mode,prompt3,point8,tag3,value3);
. l* z( C! X2 D A7 `, b& S
9 k1 j$ N8 A6 h) C( a5 ?. Aatt4:=blockobj.AddAttribute(height,mode,prompt4,point9,tag4,value4);* G. a: Z& f9 x( E9 L9 g r0 S
6 L- e) a$ T' R+ k7 k" f2 `
att5:=blockobj.AddAttribute(height,mode,prompt5,point10,tag5,value5); s8 p7 p) _. m: d. g. N) K
! f' P L, W# i, I+ jatt6:=blockobj.AddAttribute(height,mode,prompt6,point11,tag6,value6);4 ^- n Q( E; W& n+ n
& E* Q% H$ m4 t7 [9 d, Matt7:=blockobj.AddAttribute(height,mode,prompt7,point12,tag7,value7);) d4 o" m' \, g
8 b7 A3 d7 I+ W+ O
att8:=blockobj.AddAttribute(height,mode,prompt8,point14,tag8,value8);
# u5 s& R0 S- i8 }! `( X' g( ^7 f1 I8 K: w
//在块中画线。3 ?8 U: T5 \( @4 o) B y$ V
/ t3 j* P& F. {; ~( |3 S. ~# Iline1:=blockobj.addline(point1,point2);
u8 L z: {4 P
) t( M" B% M& h1 T2 U; `line2:=blockobj.addline(point1,point4);0 E3 p1 M% X5 F, z9 o
9 _- ] B0 E: G; @) v' B6 _if checkbox1.Checked=true then//当相同要求时,要画圆及圆后面的那根线。8 T( C4 t$ v) {9 @! [
2 B& [. U9 T8 o6 C w' P
begin. M! h! y- j1 s
6 G$ V) v& N; I4 c
circle1:=blockobj.addcircle(point4,1.5);2 K. T8 M. ~8 v5 D8 c1 d8 A4 N$ m
# G" f8 D$ w2 V3 Cline4:=blockobj.addline(point4,point5);
7 {+ Y8 v" G, }* O5 k D
' _% g/ I# l# h! J0 |3 A3 ?8 `! c' Jend;
* ~0 M; g7 ~% z3 A
: m$ U1 A7 R. b! y. B2 F8 iif radiobutton1.Checked=true then//当“去除材料”时画三角形水平线。/ {7 M! t7 B- c# L, H
& d/ o( f, X$ ~7 z' _; \! R6 Qbegin% \- m0 x+ n9 q9 t S3 A8 N
7 l) U3 x2 x+ b' X' Z ?line3:=blockobj.addline(point2,point3);* v/ P) v: N# Y
( k9 j; @6 i9 r/ U: Z: oend;
# \% T# {3 g2 f6 Q# C6 N% A; ^! g: |- q$ \7 \5 Q
if radiobutton2.Checked=true then//当“不除材料”时画圆。 ?, u1 m. ^! q8 V: f" F
2 `; Z) a- z$ W5 Y+ N& |
begin
# U$ h4 `3 T9 B9 b, q1 ~
% B7 k* c5 W8 |$ Z3 hcircle2:=blockobj.addcircle(point13,2.89);4 v1 C' w9 C- N. p- u
) r; H3 v1 r( X( U% Y6 i* yend;
* x( P/ p4 z9 Q- b3 @" [: G* `4 \) S+ H U
//下面为当最右边三个下拉框(从上到下分别代表加工要求,取样长度,波纹长度)有一个不为空时,即有内容时要画右边的那根水平线。
L, j' l5 T) c( |* y% a2 v$ F6 m9 Y4 }5 V1 o- _
if ((combobox5.Text<>' ') or (combobox6.Text<>' ') or (combobox7.Text<>' ')) then
3 }7 s1 g% j0 L9 G& O8 F# p; d- d
, O8 |; z# i4 H: C# `; gbegin
# @ ?9 A2 l4 X3 K; C" J( @6 S7 c" q
line4:=blockobj.addline(point4,point5);
* k4 L( U; P; r( q; S
2 \' h% z! ]; Z: ^6 U$ C8 R0 ]end;
2 e$ U" u4 R0 p) K5 w4 ^) L* t1 p- @( H' b" D/ O/ X
# u2 _' {* M, F6 S" {) C$ ]: _caddoc.modelspace.InsertBlock(caddoc.utility.getpoint(,'请指定点的位置:'),blockname,1,1,1,0);//插入块,用鼠标在屏幕上点取插入点。最后三个“1”及一个“0”分别代表,在x,y,z方向上的缩放比例及块的旋转角度。在此我们不将块旋转,因而用0,经试验,当输入一个角度时不按实际角度来旋转,不知为何原因。有兴趣的可进一步研究一下,看是如何算的。
8 C7 j# I% z. f# i- w! I- b( d& Y) |" q+ W5 a' W, W
caddoc:=Unassigned;! `) l8 A7 D) f( m7 u. C
+ }- B! j2 B* [) H- w# Mcad:=Unassigned; t; p9 n: s$ r
/ l5 L w7 J5 ^" yclose;% V# n$ I' `" P2 R# [) m+ [
/ t0 v$ p7 K: V' V6 Zend;2 k0 `9 @7 m! t2 J `
# _( w. z$ a/ f
本想把编译好的也上传上来。可是找不到空间,我原来有个空间上传不上去。本例还不很完善,本例模仿华途CAD的粗糙度标注来做的。用起来没他那个好用。仅用来编程研究,有兴趣的可进一步完善更新。% B7 o3 Q) V, d M* h& J
2 P: C9 H' V* v- Q; U$ [+ D8 b下面再看图:
: b u/ m6 i% v/ {* N ?7 Q0 G0 t2 s, [! r$ I6 C
1 Z7 E) @8 t1 ~ Y9 M5 b& u8 D1 w
运行界面运行结果 |
|