FTN(uf5947)(matrix, &srcObj, &count, ©Flag, &layer,
, p! f* @8 o: | &curveFlag, copyedObj, NULL, &rtState);
& z# }; C' y5 ^1 R' Q' }
n\x& `5 U6 E中的©Flag设定为1,你的rtState可以为0,但对象object却没执行什么操作。
现在我想把我的object进行move(这个对象包含了blend,hole,extrude等特征操作),请问ZZZ兄有什么高招?
& H0 `# b w8 h. \\2 c% t
现在我调试的程序可以对point,curve等进行操作了,但带参数的就不行。
, r1 d0 n+ ~; u5 m\
关于平移的问题,受斑竹的启发,我调试了下面两个函数,同样可以对Object进行平移操作(只能copy
而不能进行move ).
' K4 }( v9 u' j# [+ o\
double Dxyz[3]={50,80,0}; double D_target[16];
/ v. B! C. @1 ^tag_t copy_object_id;
\
4 R) ~2 ^4 n' \\) \\. t FTN(uf5943) (Dxyz,D_target );
FTN(uf5947)(D_target,Object_selected,&one,&two,&zero,&two,©_object_id,NULL,&resp).
现在我调试我的程序发现不能进行move 操作之后,和我的同学讨论了一下,他的意见是复杂的物体带有了许多参数,如果要把带参数的整个Object进行move操作,之需要把根feature进行平移,而其他的特征会自动跟着平移.下面着段程序就是要获得根feature的操作. uf_list_p_t cmtag; int ug_type,ug_subtype;
: h Q; R) h9 nint N_features;
9 n) a$ H6 J6 i3 Y! S m/ M/ T
) C: J5 m* h4 m% M1 Ki_ret=UF_OBJ_ask_type_and_subtype (*Object_selected,&ug_type,&ug_subtype ); i_ret=UF_MODL_ask_object (ug_type,ug_subtype,&body_object ); i_ret=UF_MODL_ask_body_feats (body_object,&cmtag );
. X( U$ f4 G- [2 e
i_ret=UF_MODL_ask_list_count(cmtag,&N_features);
但进行调试时候.老是cmtag的值为空,请问斑竹对这几个函数熟悉不?
& N1 }3 x/ k8 u4 }$ M ?$ 7 y: |, D. b' ?) R
下面的这张图片是我在交互界面下进行Transform时出来的警告信息.
Knight74 wrote:
9 W; W7 @2 z! f+ s现在我调试我的程序发现不能进行move 操作之后,和我的同学讨论了一下,他的意见是复杂的物体带有了
许多参数,如果要把带参数的整个Object进行move操作,之需要把根feature进行平移,而其他的特征会自动跟着平移.下面着段程序就是要获得根feature的操作.
! _' X4 A%uf_list_p_t cmtag;
\@ d) G- F8 @- ]
int ug_type,ug_subtype; int N_features;
]% y, R- R( W/ q8 K/ a+ D U
i_ret=UF_OBJ_ask_type_and_subtype (*Object_selected,&ug_type,&ug_subtype ); i_ret=UF_MODL_ask_object (ug_type,ug_subtype,&body_object ); i_ret=UF_MODL_ask_body_feats (body_object,&cmtag ); i_ret=UF_MODL_ask_list_count(cmtag,&N_features);
\Z0 w C1 {' \\& r% T\
但进行调试时候.老是cmtag的值为空,请问斑竹对这几个函数熟悉不?
5 f, e) ~: n! c6 |) m: S* ?9 k
下面的这张图片是我在交互界面下进行Transform时出来的警告信息.
; W: ~$ o. T9 t3 e' d
. @* n- y- N6 ~1 _3 b$ I9 ^
body_object一定要初始化为NULL_TAG.
Knight74 wrote:
\ q0 N0 r2 p) d请问斑竹,知道计算两个object之间的距离函数吗?这个函数可以计算两个object之间的最短距离。 另外,感谢斑竹上面的提醒。今天有时间我把第3中在UG中平移物体的方法写上去。是通过移动特征来移动物体。
求助
$ t+ I) b6 ^8 M& d. k0 E5 u4 H' E! K. K% e3 \\
//-------------------[6] Chamfer 4 edges of block2------------------- uf_list_p_t edge_list1,edge_list2; tag_t chamfer_id,edge;
+ E& V R: `4 u! N7 a0 X/ A\
8 C4 R% d2 j4 V, e8 s4 _double end_point[3] = {0, 0,0}; double direction_z[ 3 ]= {0, 0, 1}; int dir_edge;
char * angle1=\
int subtype=1,*is_parallel=NULL;
1 g( W$ D1 {9 n1 Y& l6 W( ~8 A
UF_MODL_create_list(&edge_list1); UF_MODL_create_list(&edge_list2);
UF_MODL_ask_feat_edges (block2, &edge_list1 ); UF_MODL_ask_list_count(edge_list1,&num);
6 M/ w# l& n\! Y9 d3 ]; |% H: }8 ^
for (i=0; i UF_MODL_ask_list_item(edge_list1,i,&edge); 6 b% w% T$ F\, [0 |% K% B x) l7 G* B3 H* C( r; e+ a 3 e2 ^; N% ]: y1 b. f 9 n% w' f' X# V; a: s UF_MODL_get_curve_edge_direction (end_point,edge,&dir_edge ); UF_VEC3_is_parallel(dir_edge,direction_z,0.0001,&is_parallel); if(is_parallel) + s+ J( d4 q- U' x1 c$ ~: F/ ?/ C4 K% R6 K UF_MODL_put_list_item(edge_list2,edge); } * h/ r$ k6 c Q0 L/ \\2 l 3 L# F' r) T& O. c* @: X, d UF_MODL_delete_list(&edge_list1); 4 ^\$ ]# H! QUF_MODL_create_chamfer (subtype, \ UF_MODL_delete_list(&edge_list2); 9 ~) z. _; n4 m, N 编译错误:error C2664: 'UF_VEC3_is_parallel' : cannot convert parameter 1 from 'int' to 'const double []' 请问用UF_MODL_get_curve_edge_direction 得到的edge的方向dir_edge是何类型,是不是不能用它得到block边的方向? extern int UF_MODL_get_curve_edge_direction (double * end_point, tag_t curve_edge_eid, int * direction ); double * end_point Input : The input endpoint 1 R, h W e. m7 T6 u- q0 D; L; a0 J( X. B) t, t$ K6 e8 ~9 m5 K. L- O i7 a l# h6 G; F 3 k4 g\tag_t curve_edge_eid Input : The input curve or edge int * direction Output : Ouput direction extern void UF_VEC3_is_parallel (const double vec1[ 3 ], const double vec2[ 3 ], double tolerance, int * is_parallel ); const double vec1[ 3 ] Input 3D vector const double vec2[ 3 ] Input 3D vector double tolerance Input tolerance - k& {' R/ @6 a& S5 d8 P& }, s4 O/ [/ I5 m0 P/ Y9 ^7 ?( R\/ B( d/ b8 y: _# L1 O6 g int * is_parallel Output = 0 Vectors are not parallel = 1 Vectors are parallel \0 r2 i$ a/ H/ o9 Y# _, x. ]% r& p: x: Z. x) p 整型指针变量,取出后在UF_VEC3_is_parallel()]中如何用?得到block边的方向是否有别的函数? taiga2001 wrote: / w; {' Q/ ]8 x, t9 m! A ( U6 o' z/ p; bextern int UF_MODL_get_curve_edge_direction (double * end_point, tag_t curve_edge_eid, int * direction ); N, i1 S) _7 Odouble * end_point Input : The input endpoint tag_t curve_edge_eid Input : The input curve or edge int * direction Output : Ouput direction extern void UF_VEC3_is_parallel (const double vec1[ 3 ], const double vec2[ 3 ], double tolerance, 6 v( T* ]- z\% H5 S4 A6 h+ A' W\! P%u7 I1 e. W# L5 q2 J int * is_parallel ); H( V& l/ Q9 ], d3 q* x $ I T$ z( V5 v+ n4 X+ G, c- ^const double vec1[ 3 ] Input 3D vector const double vec2[ 3 ] Input 3D vector double tolerance Input tolerance int * is_parallel Output = 0 Vectors are not parallel \= 1 Vectors are parallel 0 {) ^8 O4 ~; K整型指针变量,取出后在UF_VEC3_is_parallel()]中如何用?得到block边的方向是否有别的函数? 第一个函数只是用来判断一个点靠近一条曲线的起点还是终点。 2 Y o6 x% H) 第二个函数要求输入两个矢量。 得到边的方向可以,先得到边的端点:用UF_MODL_ask_edge_verts() -------------------[6] Chamfer 4 edges of block2------------------- 9 t; ]\1 _% A7 V; V$ j( h\ uf_list_p_t edge_list1,edge_list2; tag_t chamfer_id,edge; double point1[ 3 ]; double point2[ 3 ]; char * angle1=\ ' \\3 X) h' O$ i/ ~9 a' m; e- f. X( V. |. Q1 W9 C; [1 \\* z }( T# K8 w* I% [0 m% ]5 u4 `$ k$ D) O int subtype=1; : T6 L5 b& D% p, O* W int vertex_count=NULL; UF_MODL_create_list(&edge_list1); ) L* \\) ^+ x( i7 I. n. U UF_MODL_create_list(&edge_list2); UF_MODL_ask_feat_edges (block2, &edge_list1 ); UF_MODL_ask_list_count(edge_list1,&num); for (i=0; i UF_MODL_ask_list_item(edge_list1,i,&edge); \& n\4 R: z$ z% Y! O V X1 ^. b* s\ UF_MODL_ask_edge_verts (edge,point1,point2,&vertex_count ); if(fabs(point1[2]-point2[2])>1) 0 V7 d' S& c2 y) c. | UF_MODL_put_list_item(edge_list2,edge); } UF_MODL_delete_list(&edge_list1); 1 ~\! q% ~/ e5 z U* U. M( S* k8 [( U* C+ ^6 n' w) g UF_MODL_create_chamfer (subtype, \ UF_MODL_delete_list(&edge_list2); 在UG中move 物体的第三中方法,通过移动特征来移动物体。 2 H c' w' q b5 f5 X' B N# V3 k0 O- \\; D* ?( n 5 J8 s* H5 Y\double real_data[2][12]={0,0,0,1,0,0,0,1,0,0,0,1,50,80,0,1,0,0,0,1,0,0,0,1}; int mode=CSYS_TO_CSYS; int N_features; ! |9 u5 ^5 F3 \\& `, X; {9 D0 X ! N8 q& ^# k7 L( V( R9 K\ char features_num[100]; uf_list_p_t cmtag; 3 Z, L0 v. O# M i_ret=UF_MODL_ask_object (ug_type,ug_subtype,&body_object ); i_ret=UF_MODL_ask_body_feats (body_object,&cmtag ); i_ret=UF_MODL_ask_list_count(cmtag,&N_features); ! F9 D* z, N, n' O9 c: j# Q# ?, R3 K- d' u1 ?! j( b6 J i_ret=UF_MODL_move_feature(cmtag,mode,real_data); 斑竹,我下面的程序是希望通过一个点,一个方向创建一个datum axis,我用 $ X( b) U\ 7 D- V- h6 H\i_ret=UF_CURVE_ask_point_data (dpoint,Datumpoint); 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库UG二次开发(3)在线全文阅读。
相关推荐: