马上注册,结交更多好友,享用更多功能,让你轻松玩转磨削论坛
您需要 登录 才可以下载或查看,没有账号?注册会员
×
四、注释生成实例与程序
/ T; E9 Y- `7 k+ c K6 |
. f( ?" A( y; ^: @9 f8 b' n 在TOOLKIT中,注释是以文本行(Note Line)为最小的存储单元的,不同的文本行组成一个注释块(Note Data),对于这些注释块,调用函数ProDtlnoteCreate()就可以生成注释,并在图纸的任何位置处显示出来。对于显示的字符可以通过设置不同的参数来改变它的颜色,字体以及倾斜度。实例中,通过调用用户自定义的注释生成函数UsrNoteCreate(),在图纸上生成轴的技术要求等信息。具体函数如下: ; t9 \: B4 u3 |5 D2 F+ M- m
' i( P! Z2 l ]$ t4 h2 P) c" [ UsrNoteCreate() { ProDtlnote note;ProDtlnotetextHeightSet(text, height); ProDtlnotetextWidthSet(text, -1.0); ProDtlnotetextSlantSet(text, 0.0); //设置注释字体的高、宽、倾斜度ProDtlnotetextThicknessSet(text, 0.0);//设置字体粗细ProStringToWstring(font,襢ont?; ProDtlnotetextFontSet(text, font); //设置字体类型ProStringToWstring(wstr, note_text); //note_text中存储需要显示的字符串ProDtlnotetextStringSet(text, wstr); ProDtlnotelineAlloc(&line); ProDtlnotelineTextAdd(line, text); //为文本行分配存储空间ProDtlnotedataAlloc(drawing, &ndata); ProDtlnotedataLineAdd(ndata, line);//为⑹头峙淇占洌?⒓尤胛谋拘? ProDtlnotedataAngleSet(ndata, angle) ; ProDtlattachAlloc(PRO_DTLATTACHTYPE_FREE,NULL, pos_note, NULL, &attach); ProDtlnotedataAttachmentSet(ndata, attach); ProDtlattachAlloc(PRO_DTLATTACHTYPE_PARAMETRIC, NULL, NULL, surf_sel, &leader); ProDtlnotedataLeaderAdd(ndata, leader); ProDtlnoteCreate(drawing, NULL, ndata,¬e); ProDtlnoteShow(¬e);//最终生成注释,并显示其中的字符串ProDtlnotedataFree(ndata);//释放前面所分配的内存空间Return();} ) B H- J: Q* @8 l1 ~, T2 n1 z9 X2 w
3 T4 j5 M; C/ R' v3 J4 x
五、其他特殊符号的生成方法 $ h- Z! l+ j2 t. Q+ t5 V) j
: R$ R; c$ W+ h& @
TOOLKIT提供了最基本的二维图形生成函数ProDtlentityCreate(),它的生成方法和文本注释的生成方法类似。通过调用圆弧初始化函数ProArcdataInit()或者直线初始化函数ProLinedataInit(),可以很容易地画出直线或者圆弧曲线。以圆弧生成为例,程序如下:
7 Z0 F \9 k- P; t4 ^9 c1 P* x5 b
6 \: {8 l! v C% ~ UsrCircleentityCreate() { ProVector start_pos,end_pos; double start_angle, end_angle,start_angle ,end_angle ; ProDtlentitydataAlloc(drawing, &edata);//分配图元存储空间ProCurvedataAlloc(&curve); //分配圆弧存储空间ProArcdataInit(start_pos,end_pos,center,start_angle,end_angle,radius,curve);//圆弧的初始化:设置起点,终点,起始角度,中止角度以及半径ProDtlentitydataCurveSet(edata, curve); entity_color.method = PRO_COLOR_METHOD_TYPE; entity_color.value.type = color; ProDtlentitydataColorSet(edata, &entity_color);//设置圆弧的线型颜色ProDtlentityCreate(drawing, NULL, edata, entity);//生成圆弧ProDtlentitydataFree(edata);//释放内存空间return(); } # y( I4 `4 T* q: P9 p
( N4 f5 P+ m9 q
借助于以上图形生成函数,可以生成一些特殊符号或者简单的剖面图形。在实例中,应用这种方法来实现粗糙度、同轴度及平行度等的标注。
8 n+ f( K1 e+ |9 Z2 u
+ t5 m' j; d* `' p
. J+ ~7 L9 w$ H0 B7 l( f
* D$ [0 a: o2 t0 p+ ]0 Z; o+ B |