青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 4424|回复: 13

如何得到一个草图内的图形?(已解决)

[复制链接]
发表于 2007-7-26 19:39 | 显示全部楼层 |阅读模式
我试了很多种方法都没法得到一个草图内的图形。不知道那位高手会的。教教小弟。谢谢了" D$ i+ |' G: r0 E0 x* e9 }: W

$ V# |( V" B' ^[ 本帖最后由 pppflak 于 2007-7-27 01:53 编辑 ]
发表于 2007-7-26 19:54 | 显示全部楼层
请再描述的详细些。
 楼主| 发表于 2007-7-26 20:00 | 显示全部楼层
我在零件中建立了一个草图。里面只画了一个矩形框。我现在希望写个程序得到里面4条线的TAG。我在之前的程序中已经能得到草图的TAG。但是用UF_OBJ_cycle_in part和UF_SKET_ask_sketch_features扫描草图得到的都是NULL_TAG。请问这个程序应该怎么写呢?谢谢。谢谢。在线等。急啊。。。9 r! h5 l8 P+ h0 z% }& f
另外。UF_FEATURE_TYPE具体包括哪些类型呢?请问在哪儿能查到?: D; x9 g, d( K7 a, j
谢谢各位大侠了
 楼主| 发表于 2007-7-26 20:30 | 显示全部楼层
以下是我写的代码。从扫描零件开始。直到读取草图内容。刚开始学习UG。程序难免繁琐混乱。望大家见谅。尽力帮帮小弟。
/ k( s4 o, V" htag_t part1;/ f$ M% l0 z- _3 l  X9 j; p1 C
UF_PART_load_status_t error_status;& m/ v. J7 h6 C# Q, F5 ^0 _
int type=UF_feature_type;
0 b$ Y) _$ r$ {: p  m4 R7 _tag_t feature=NULL_TAG;
/ q3 b2 ?+ C* atag_t * fea_tags=0;
2 q5 O/ |, ~" Q' h- E- v7 {, s2 i) pint I_count=0,feature_count;
, u! N& T% u5 X) |: |char * feature_name;: Q0 N) F" v4 _: y# S
char * feature_type;
7 r' l/ X4 G$ Z8 d, Kchar * parent_name;/ Y5 e9 Z/ B3 I5 s5 T" z/ K7 O
char main_body[20];
( p; n9 B5 ^) U% |, C& Qtag_t main_body_tag;
; e& \  y2 C4 l2 x6 Cchar msg[100];
/ L' d7 q, H; ~( m' k8 v- S4 G- vchar buffer[20];
3 b. Q- o* b1 ` part1=UF_PART_ask_nth_part(0);
  S7 l( c9 I, j4 W% U  K UF_OBJ_cycle_objs_in_part(part1,type,&feature);
4 L3 H) L5 @& H0 X- x while(feature!=NULL_TAG). i8 e2 d+ t' _5 p2 b# N3 C
{  I_count++;# O- e# [6 v9 z
  UF_OBJ_cycle_objs_in_part(part1,type,&feature);
( @- J/ Q. q5 F' ^ }. A8 D6 b9 W2 w2 f' f6 R
feature_count=I_count;+ P, D' s3 o4 e( D2 i0 v
fea_tags =new tag_t[feature_count];0 T& `* G+ g- V1 G
char* fea_names[500];
" z( Z9 G, c/ m$ Q$ I; vchar* fea_types[500];
2 P8 B& @+ k$ ~. u" Jfor(int i=0;i< feature_count;i++): _* }! T# m# G/ J7 D2 s; @
{/ P8 n6 z% W: C. U; O) u9 O
fea_names=new char[133];: W/ z+ k+ ?5 [9 K0 U4 l! j1 _
    fea_types=new char[133];5 y$ S9 J0 V- M- K8 k1 f; d
}
- _% A1 B  ~' ]7 M$ m feature=NULL_TAG;6 s" U; S. z2 G3 H" M4 _6 Z
  for (i=0;i< feature_count;i++)1 c# H+ R5 a! I8 b; [" E$ n% I
  {0 r! D3 t8 E' n8 ?. w
    UF_OBJ_cycle_objs_in_part(part1,type,&feature); + a+ i+ U6 [7 \' v" P" u
    fea_tags=feature;3 w  |; t4 r3 E: @) k
    UF_MODL_ask_feat_name(feature,&feature_name);3 _; L7 V& I, k0 L# {' U
    strcpy(fea_names,feature_name);, K$ r$ G7 C8 D
    UF_MODL_ask_feat_type(feature,&feature_type);; l! M- [0 n8 Z# z7 B; P- R
    strcpy(fea_types,feature_type);
8 O: `3 ]" K" ]& L5 p0 n    uc1601(_itoa( fea_tags, buffer, 10 ),1);! _9 ^/ Q7 p9 {8 c. D
    uc1601(fea_names,1);
4 g/ J) J$ i2 t    uc1601(fea_types,1);
  x) a, }! A" P  }
8 k6 \% H8 ^/ V" ^! ^$ L7 P//above routine gets all the features in a part, including tags,names and type.
6 q) p" ]3 u8 @for (i=0;i<feature_count;i++)! L8 g- C  {% ~6 I2 R! j
{9 s  W: B) h' a& O
if(strcmp(fea_types,"SKETCH")==0)
/ }0 i4 K9 U9 B { 3 r: S: J$ }) Z
  strcpy(main_body,fea_names);- c+ b9 O' T; c+ b
       main_body_tag=fea_tags;3 v! q  ]8 \6 Z7 x, h1 a: c
  break;% r2 q. J1 y* g$ k
}$ A2 M4 h9 o8 Q0 t( u0 a
}) t0 B. [  T* U  t6 Y" s+ s; Q. a# G
strcpy(msg,"main body is ");
0 n4 U% y/ v! z! |uc1601(strcat(msg,main_body),1);
' V+ j7 l& q6 a: H! @2 astrcpy(msg,"main body tag is ");
, V4 R$ P  `0 s# ouc1601(strcat(msg,_itoa( main_body_tag, buffer, 10 )),1);
! g! @' j/ ^( n/ P* W9 p% v5 b) I//suppose the first sketch found in the part is named main_body. which in a part only has a sketch, this points to & X+ [6 l7 o8 _$ A) k; F
the sketch. i.e. main_body_tag is the tag of the sketch.2 z" z3 c; {% a/ p6 D) Y
int count_1 = 0;  
3 r% B0 A5 V7 j/ f' [6 J1 N0 S0 ytag_t sketch_line= NULL_TAG;  ! M4 O% D& f; O/ v# O! y1 |
tag_t sketch_body_line;  
. c. m' s, H8 r4 `; F+ F' j' U6 uuf_list_t *sketch_line_list,*extrude_sket;  $ H/ i1 J. a1 [7 v; o" I6 i% Y, ^0 {
UF_MODL_create_list(&sketch_line_list);4 z2 B) f, a* \! M* ~! I8 W1 c
  
  z$ }. q) R+ iUF_OBJ_cycle_objs_in_part( main_body_tag, type, &sketch_line );  
# e) |4 ^( A+ U- Swhile ( sketch_line!= NULL_TAG )  9 e5 q9 d; {9 ?/ O
{  7 {9 Q! V! y# x; u5 U5 v* x0 Q
     count_1++;  
& _4 y# T5 |: b8 ^/ w/ R8 o  I/ h     UF_OBJ_cycle_objs_in_part( main_body_tag, type, &sketch_line );  
' V8 J3 @( _6 m# n. ?     if(count_1==33)  & C2 z2 w$ E0 X% M' Q
    {  " [/ u' C4 ]6 K' A8 J. c5 T( ~6 d, O
  
7 `, d  {; T8 D% W          UF_MODL_ask_feat_body(sketch_line,&sketch_body_line);
! P2 Q7 c* |6 ?. H. @! E$ k( M' w          UF_DISP_set_highlight(sketch_line,1);  7 ~5 y" ~" w! T+ a  K
         UF_MODL_put_list_item(sketch_line_list,sketch_body_line);
) M  T7 `" P9 V& L  M6 z   UF_MODL_ask_list_item(sketch_line_list,0,&list_item);1 e1 ^8 ]0 y9 B/ E! M
   }   
8 k2 ~7 l3 S! o3 J4 I}  
7 B6 ?+ [1 a& S//here this part of the progrom was supposed to get the features in a sketch and put into list,sketch_line_list.
发表于 2007-9-7 11:05 | 显示全部楼层
11111111111
发表于 2007-9-14 03:04 | 显示全部楼层
看看
发表于 2008-7-4 13:21 | 显示全部楼层

DDDDDD

我是新手,看不懂
发表于 2008-12-24 11:11 | 显示全部楼层
thanks
发表于 2009-5-24 10:11 | 显示全部楼层
不知道LZ是怎么解决的啊,$ ~  [8 {" I- d( |+ n+ s" w: h- m

1 t; j/ n  @' Z( R3 g% K* b$ j/ q遍历完了得到的是整个 part 文件里的 tag ,如何区分出草图里的 tag呢
' C7 X- f( W' K- ^) s
7 @- w0 N& A3 _1 T: G& m/ e* M. K. Z. W
我现在只想用下草图里的 特征标识做下拉伸,! k5 {3 x5 w/ t- h0 N
+ A2 |4 A' ^/ \
求教...
回复 支持 反对

使用道具 举报

发表于 2009-5-24 10:26 | 显示全部楼层
UF_OBJ_cycle_objs_in_part( main_body_tag, type, &sketch_line );  
5 D9 w, m5 p1 Z6 i- Q  z7 @; |  [# c. ]
UF_OBJ_cycle_objs_in_part()第一个参数不用非得是 .prt文件的 tag吗,可以用草图的tag吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-7-5 23:19 , Processed in 0.274002 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表