PLM之家PLMHome-工业软件践行者

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

  [复制链接]

2016-12-12 12:22:04 4198 2

2

主题

19

回帖

158

积分

注册会员

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

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

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

x
UG二次开发问题:我在建模环境下用UF_UI_select_with_single_dialog()没问题,在工程图模式下用UF_UI_select_with_single_dialog()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……
3 ?4 E% U# @2 v+ d) ~0 z2 z1 R        tag_t object,view;
9 ^7 A, |$ L: W* f3 t        char cue[] = "select object ";
% {3 _5 u: n% ^5 M6 M0 n8 ]        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART9 U. n' t3 R2 T% c% v. o
        char part_fspec [ MAX_FSPEC_SIZE+1 ];' t4 ^2 b4 P+ f
        int  response;
  K- c% R5 ~6 R6 U        double cursor[3];. _& F& o; P7 Z
        tag_t part_tag;6 C2 l! s4 K1 h- m
        CString infro;# E7 I$ @' r0 K* D- o. u( |
% |% p5 P9 Z; ^# L
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );
2 S) @2 K% K+ e" d0 y+ L        if (response == UF_UI_OBJECT_SELECTED ||. S8 q/ i- h; v) B5 X
                response == UF_UI_OBJECT_SELECTED_BY_NAME), y. }2 G3 e  G; j
        {
3 s3 t2 {+ N- ?, J# H( `                UF_DISP_set_highlight(object,0);
) g( \9 v, O1 s2 F! k6 v                UF_MODL_update();
( _' k& S- J; i( p# e2 m$ X7 \4 }        }% r$ f* s) d5 ~
static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)! U: P# {$ s! Z4 `
{  
. h" p$ F8 e7 o1 }5 g6 k5 @9 V        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
5 Z; s# F/ y* c9 \2 M- d        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)
7 e* v1 F& \7 ]; q; f. v( Q) b        {" l3 f& m' K0 X# k1 D9 j
                return (UF_UI_SEL_SUCCESS);6 }* Y  H0 Q, j: ^
        }
& b$ G3 J* Y9 B+ S: `. S3 ^) |        else" e! N. S& s* e( l# b' _3 t/ D
        {2 r( m' Y$ _" k- |/ I
                return (UF_UI_SEL_FAILURE);( u1 P6 J9 X5 K5 J% L- n
        }
8 ?1 v' A$ k0 Q& W" I% a; \}8 X' L' h: T8 H. }

- e# q) L4 `2 Q; y9 G1 U8 Q) v
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复2

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;! s3 e# f: R( C, f: Q9 @
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
' U# U' O6 L/ [  O' `  J1 K% \5 G% A# n. m) x. ~0 T

, D: x* i- C5 @/ W: I, u/ j; B' H3 ~UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象* p6 G, {3 ?  E9 @
UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象. q. e, O' G* f" z

# q$ t0 P. W1 _9 j0 }————————————————————————————————————————
% M! [. ]$ E& N, c! p8 g; Z列子选择视图里的直线边缘0 X7 I! \" }+ x
$ H& B) h- A( J4 M7 d
#include <uf_drf.h>2 C' H$ m& D2 _% P# ^7 D( u/ v( Q8 k
#include <uf_obj.h>& s" ?) Z  w+ K; X% z" L
#include <uf_curve.h>; D3 w5 d8 z; ~" R: v% B/ a. a2 l
#include <uf_csys.h>! w3 a2 X' G; v. V7 f8 D
#include <uf_modl.h>
3 D9 _+ J& ]" B5 h6 H1 ?/ z( h" ~0 |: w* G. r8 ~( f6 X6 c' V
- m' _; K: \# b
//设置选择的实体类型; [8 @0 `  q, y: O5 I  {# `- L
static int init_proc( UF_UI_selection_p_t select, void *user_data )
2 }+ r& o0 W' m. `" T{4 f% S, _! o0 R" O& O( f
  int  errorCode   = 0;
4 ?, w8 c. d" f) B6 x
0 {# H8 V, Y1 I* Q  int  num_triples = 1; //选择类型数量
+ g. `0 ~9 S3 A# O  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型
( j; n! m3 D9 u. G1 t2 }5 B
4 `% X0 R  i' C" F7 z/*
) f- b' i" f% D) O; CUF_UI_SEL_MASK_ENABLE_ALL 所有面具类型+ u7 ?. [$ t, y( p# w
UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的0 M' @1 p( P; ?$ I
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
. A  h% j1 D+ h6 v, M: d! PUF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
- {/ A# s5 [* BUF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定& B9 P3 m% I. `7 a. I1 c  {/ [- z
*/
" O% ~- t- D9 U, C1 nerrorCode = UF_UI_set_sel_mask(select, $ L* v8 d4 F" u! ]7 j4 f
                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,' l3 O. a& ]8 m' t$ [1 C$ @) \9 R
                                                           num_triples, mask_triples);
" n- P* `3 O; ^) sif( errorCode == 0)
! L) ]$ h- x( N) p{
# l2 `9 r$ g0 y9 ^' M! preturn UF_UI_SEL_SUCCESS;9 c, b) S9 e3 N7 r
}
0 n1 _( ^- O9 u0 n else) N6 z8 @, J+ h6 G' o) c
{
' `1 \% L6 C1 B  l" R( p' w* o. Y return UF_UI_SEL_FAILURE;, e6 k4 O7 R2 {' O- O& l3 c
}, p4 ?% g5 j! [% h5 m6 N: @  `
}
# q+ G+ Y0 F3 _7 R2 t! \, m0 V( Z! Y8 k( y4 I7 |5 W3 l% F
5 q3 Q! A; C5 _$ w; p; z  i

+ w. T* ]0 V) O5 N5 U$ y  /* TODO: Add your application code here */- O% {  ^% q, w+ r/ S" ^& }

% _& p' C* ^, q  char *message="梅雷提示!请选择视图边缘。";
- f* g( u$ u- V( i  char *title="梅雷-QQ1821117007";2 ^0 `" ?5 B# l7 u7 Z
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
: T) X- C0 y/ a4 N" E6 ~; ?  /*: ]! m6 o$ u1 K- v2 _5 v
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化
$ ?3 d# J/ o9 m; ?1 p  D   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装  T2 @. T8 }5 I9 B7 R
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分8 d& g( I- s, `5 U; L1 ^
   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC
$ o* J6 n: a9 `- P( ]) C8 n7 {( [  */
* x* f+ W0 F' Yint  response;. m- d6 m( Z! W! R; e
tag_t object_tag;
% \, g! [& x) b5 l; R* P# Y- cdouble  cursor[3]={0.0};
: k: _, l- {% }+ v' v, }% U: vtag_t view=NULL_TAG;& [' |( A  D$ m2 @5 [6 I5 J

) I  e$ G2 q, G9 M$ f0 V" @+ v. pUF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁
; E3 e4 p" S# u5 O: o8 U7 _+ ?UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
" y9 W$ d- m3 W; dUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】3 [" x6 e+ V; @% e; B! J( N
UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
) k( j; h3 w! I' `8 x1 dUF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
! o, U8 n1 ~! _/ h% }( k. ~UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁2 X$ P2 i3 _* J% r8 G! B- d

8 }5 r' }8 a: Y/ u! `) q7 ~9 G9 c1 ~* U; w) C
if (response==UF_UI_OBJECT_SELECTED) 4 ?6 W# y1 \# T: Q( |2 K  Q
{1 H8 X9 s5 Y% c8 q/ `. ~
  char view_name[132]="";
: N: n  M0 D( \( x' |3 Z" s  UF_OBJ_ask_name(view, view_name); //获得视图名称
7 L- ]8 f' @9 x0 D! [8 a# [2 W  uc1601(view_name,1);7 I" F# r' B1 H1 W! e4 I7 r' ~
}7 f$ w, m0 k! G1 n, _2 @/ ]+ F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了