查看: 4568|回复: 2

[求助] 工程图模式下用UF_UI_select_with_single_dialog()选不中?

 火 [复制链接]

2

主题

19

回帖

158

积分

注册会员

积分
158
发表于 2015-12-3 13:55:58 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×
UG二次开发问题:我在建模环境下用UF_UI_select_with_single_dialog()没问题,在工程图模式下用UF_UI_select_with_single_dialog()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……
' @' ~4 a& n( o& H! c9 M        tag_t object,view;$ b% T! c; P0 p: Y! ?8 z# X$ y; k
        char cue[] = "select object ";  p, n* j7 ~+ G2 u4 U$ ~
        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART% s8 m* v2 v2 r: D. p6 |
        char part_fspec [ MAX_FSPEC_SIZE+1 ];
5 L8 `( J: X* k+ C        int  response;; y' v5 n1 }+ U% u: o
        double cursor[3];5 \/ |8 R$ ?; U% j- P0 C
        tag_t part_tag;. z9 ?. o: ]! _/ h! Q8 ~: _* w: f
        CString infro;  d* Y4 R& ~/ }6 B9 y, W
# o9 ]7 @1 g1 P6 C- E
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );0 H" L7 _, K7 ?8 S) \9 g8 Q
        if (response == UF_UI_OBJECT_SELECTED ||
  f; Z- h7 @: M, q7 p! i2 b8 B                response == UF_UI_OBJECT_SELECTED_BY_NAME); r& B+ c) q# B2 P8 n$ R
        {# F' X: O4 Q  `
                UF_DISP_set_highlight(object,0);( K' \+ `) k7 F$ O6 }$ o, v$ [% F
                UF_MODL_update();
; R, M: G$ C+ p9 B. y# H9 P( S        }5 w/ J- a* |# e$ P* A* D+ ?  Q9 u4 v
static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)# H% Q3 p' K" K: q% l: D( O) X6 N$ I
{  8 R: \  K7 u) t. a0 q/ O. h3 I
        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
" \1 D+ U; C+ h- p7 Z8 H2 ]        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)
7 C2 q, t6 m* N( m        {4 S" z; F  G2 B
                return (UF_UI_SEL_SUCCESS);
2 z  W) E8 v. K        }0 I# }9 j2 H' U6 v" l& H3 C5 }: V
        else  k$ z; o- t/ E! q7 Q& k
        {5 Z  v% W- ]9 I+ w6 s! I
                return (UF_UI_SEL_FAILURE);
1 N0 Y2 a# ]1 b* P        }
3 g2 }+ V3 T2 U}
0 }0 ]2 {; u( k" `9 X
- T& S+ q1 ^5 Z! I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

2

主题

19

回帖

158

积分

注册会员

积分
158
 楼主| 发表于 2015-12-3 14:36:31 | 显示全部楼层
难道我过滤错了?没人回答?……。自己顶下啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

8

主题

10

回帖

146

积分

注册会员

积分
146
QQ
发表于 2016-12-12 12:22:04 | 显示全部楼层
int viewview=1;
; e' ?# }2 c% P6 I3 }9 xUF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
, J3 v; e! s$ a
5 N2 K1 W! o+ Z: M- f% ?, D+ O6 G# g. z, K; O' s
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
  W& k8 ^  m7 c0 uUF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象8 ~3 D/ m4 M) [* o$ V9 k: i9 M
0 x% [! u- z# C/ a3 l* q. |
————————————————————————————————————————
# w$ J3 l& u# @) _" ?3 d5 ^列子选择视图里的直线边缘
! w/ i: ]  B3 a. h9 z& p9 Y/ u
#include <uf_drf.h>
( x9 m, P( V4 Y3 k: d" ^#include <uf_obj.h>+ Y* f9 g' w( k, j9 ^/ j
#include <uf_curve.h>
3 y9 K0 ^% U# X7 Y& T( b: I1 ^#include <uf_csys.h>. c3 s4 F% f) |$ F7 g3 t. D$ _
#include <uf_modl.h>
. e, |1 D/ y+ u& D' O7 F
  H5 m+ n( C5 S4 i% D9 D% P
& j0 C) i) d& u+ i; n+ s//设置选择的实体类型
! A' m: h7 V! }. J8 xstatic int init_proc( UF_UI_selection_p_t select, void *user_data )7 u& r! P* Z7 w8 ]& k( Y5 B
{; m7 Y$ q! g( `" F5 D# U
  int  errorCode   = 0;
# ?3 l  t+ T9 ]! s/ o' T& P4 a! a( X7 W2 V" c# X3 p1 p* j5 d
  int  num_triples = 1; //选择类型数量
" F8 D( q; A! q6 c' ]  o  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型
  ]0 G+ B: Z6 Q) m1 W6 m: r) ~: r0 ~5 J3 k
/*0 n4 P5 X4 F7 @) O& j6 F
UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型
6 ^' Z. m- X: S4 v! U9 EUF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的
& I) E. p  J7 a, A! E, D& gUF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定$ Z* s$ t8 U& C2 d- e& R7 D
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
4 D6 W6 P: @) mUF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定( x' l) \! o8 a4 X4 \
*/0 g9 q/ ~1 Q% F7 L: ]. y9 ~
errorCode = UF_UI_set_sel_mask(select,
! r$ h4 ?& b& M# |) I2 |                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
2 t$ n- o, R  X" ]& @  e                                                           num_triples, mask_triples);7 b. r2 P3 M9 y! L4 X+ `7 p2 ]
if( errorCode == 0)8 |* q5 [( {) b1 C# U
{
+ o6 ?/ Y7 B) H7 i+ ]return UF_UI_SEL_SUCCESS;) C8 H3 F: k7 r
}( ?! l6 G( o7 P8 p/ K
else
- |) q7 c' s& w6 B{4 k& D. |7 W& q, P
return UF_UI_SEL_FAILURE;1 o4 x$ _5 s) F  p  `0 y
}
' L( {: _# _2 T* Y! m- G! x}
4 V$ ^% U0 p, \* ^  O8 i3 O$ m
2 d$ [  f5 R8 i( [. Y& o% B# D4 \. q$ @, c/ F) {7 S6 m1 M

$ P1 S7 f  U9 z9 s6 a8 w  /* TODO: Add your application code here */
. [; ?7 h/ d4 G7 X. O) F  L
: |$ c2 m) t3 ], S6 G/ J$ W5 S  char *message="梅雷提示!请选择视图边缘。";* S: L/ K# G8 U! r
  char *title="梅雷-QQ1821117007";
9 M% c, v7 J1 z, L& ~( n  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
$ d1 p0 t5 {6 _6 M( l  /*
0 F5 O/ s" Q6 f   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化2 S( o0 L9 R; d4 H  y5 o) u
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装
0 l1 Z% ^9 L: F, P& t   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
3 b& c4 y8 T/ @1 ^# d! g7 P3 Q! d   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC; B" \* Y' m) I8 c/ i" Z5 W) b( T3 l
  */
9 p  p7 N3 ^4 V6 @8 Sint  response;
5 g. A4 m2 w. t- t! ntag_t object_tag;
$ c; G# [  h2 e  r  y. g8 U5 S+ mdouble  cursor[3]={0.0};
! c& i5 V5 ]+ F( J( @+ B& otag_t view=NULL_TAG;& _! x- d' v+ j

) u% Y' [# _( l7 E7 E% t) ?UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁4 {7 n. i# u! l1 i" N
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
2 {! E$ F  ~" |* n' O! Z, @0 e' WUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
5 z0 X: x2 [  m+ K" _UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象). X0 l/ h; N, W/ B
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
8 C  d9 L$ Y+ LUF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁: Y& S2 L  E1 d6 y; N$ u& T2 Z
  c! H! d4 }2 _* M: a. L; N+ i! r
% u$ d2 c) ?$ O! X/ O  U
if (response==UF_UI_OBJECT_SELECTED)
3 J- n! s7 Z0 }6 L( O, K{1 S# y, c! K1 w% N% T$ ?+ [
  char view_name[132]="";
  z/ \2 M' ?9 }* u8 X1 O6 G  UF_OBJ_ask_name(view, view_name); //获得视图名称4 v/ N! }9 M) l3 A+ ~8 b
  uc1601(view_name,1);# g2 Q0 {" t1 ?& u0 B$ q+ D4 m, O
}
- ?9 A1 O  t9 I4 `" \* L
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部