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

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

  [复制链接]

2016-12-12 12:22:04 4197 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()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……) U+ K% ]: M( H, g1 \; K# \2 l, ]
        tag_t object,view;
" ?" F& K/ \) g5 r; Q        char cue[] = "select object ";
& ~! w5 {9 P& x3 c. B! ]        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART
. F" }3 x! b5 V        char part_fspec [ MAX_FSPEC_SIZE+1 ];
' M/ \1 S( d* S/ k. Z: ~        int  response;9 r1 V" ]" @  _8 _2 }8 W$ |
        double cursor[3];
" I9 y- N6 ], L! n9 H' [0 ^  `0 f        tag_t part_tag;, H! M7 r% y" ~
        CString infro;# V$ ~$ h- V7 k2 s
( ^6 M, z( c' H+ w; i# I
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );
" {8 l: i- a4 o( ?' n0 g        if (response == UF_UI_OBJECT_SELECTED ||- ]5 G) U7 g0 o7 Y( }; @
                response == UF_UI_OBJECT_SELECTED_BY_NAME)
! ^5 \# _; Y% B' P1 S" f        {
# f1 X( z& }3 \                UF_DISP_set_highlight(object,0);
8 P$ @, h! K# G' H4 A1 i5 A                UF_MODL_update();
2 }7 K; F  n# t# E% s$ X        }
. p! \: C* E/ g, O, E. M- dstatic int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
4 _1 t  h3 r2 G4 ^7 C{  
/ @% l" e8 L, l+ ?* O' o, w        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};( D% H0 Z  W) v+ `0 b& {
        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)1 }1 c! j; o5 \/ V
        {
4 {! _& D) \) O2 A+ x( Y                return (UF_UI_SEL_SUCCESS);8 Z; v! e9 C# `  S3 l
        }
/ m# U$ D1 [! N. ~5 F% P6 _% r7 \        else2 Y/ ~6 S, k# l" b6 W
        {
% M; h! w4 `3 K" c: ~                return (UF_UI_SEL_FAILURE);% {6 |8 o' ]1 b/ U% N3 E1 X
        }
5 v# ~5 ^$ _3 P$ B' y+ Z8 |}
) i* r8 n! `  x6 C2 ~. M9 g9 n9 X- p$ ^5 H8 z$ L* ?6 V4 `
上海点团信息科技有限公司,承接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;
# u- c( `5 E& l2 M* f" i# BUF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
% b6 a7 S& V3 X" T, m. M2 i
( T" O" v$ p9 i% y5 h' ~
% p  [# {! T" \UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
" F2 Y, t, K! V/ o, V. W$ JUF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象6 h$ b; C- R# U8 M# s

2 f8 Y" e5 Z' T# h6 b————————————————————————————————————————: N7 a2 ^6 I7 h7 }8 ?% O
列子选择视图里的直线边缘' @- T' \9 _) S& f
- I1 K9 s7 `. d4 {) A1 G
#include <uf_drf.h>
& g+ h; ^6 E* X) T( T#include <uf_obj.h>
& N6 [9 e$ K6 c#include <uf_curve.h>4 @- t# b( g! c; s6 I! [
#include <uf_csys.h>$ m6 _6 G8 B' ?# _7 [. m
#include <uf_modl.h>: t1 K$ r4 _$ b) @' C$ K
3 }) `) w& S2 U4 I9 M
0 U9 y3 a, e5 h0 r
//设置选择的实体类型& w) R6 H+ K6 l2 R
static int init_proc( UF_UI_selection_p_t select, void *user_data )
/ [4 g5 q% w/ b; `: K) O{
  H9 R5 f' F- n) B  int  errorCode   = 0;7 ^  ~" z& P8 N1 d1 f+ Z
# i* Q9 E# _, h) H) M+ v6 C
  int  num_triples = 1; //选择类型数量
) W2 y: |( x( R' Q  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型! N6 \! H( H- x

) Y3 ~9 v0 n1 A/ U0 r& t/*
+ s' l  w$ W5 A1 Z% q1 G) sUF_UI_SEL_MASK_ENABLE_ALL 所有面具类型! a" w9 _7 M) ?) ~$ Q
UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的0 ~$ U) p( `1 ]+ O
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
+ G; P8 |0 q4 p$ U/ }* eUF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定: j6 K8 k1 e" K
UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定
+ v7 {5 y% n4 Y6 w" q# G7 i/ h+ f*/+ ~  X8 k7 V6 ~% l
errorCode = UF_UI_set_sel_mask(select, 4 a2 A& @3 J; s' I7 T
                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
: n: N( u0 k& r                                                           num_triples, mask_triples);
, a4 P  R# I: n. \% @if( errorCode == 0)" _4 j1 t3 w# C; y% e
{
' `, v% p8 e5 y* X, S/ `return UF_UI_SEL_SUCCESS;
+ B, [6 {( w, {3 q; O& [}
3 B& T# p) q) }! `. g2 k0 o else
  L: a0 z% `8 H- f* ]; ]{' r7 {% |* p; m& t- t# E
return UF_UI_SEL_FAILURE;) ^/ h/ n: G6 ?/ f3 b* j
}# p& ^$ e7 |) o" }8 p; u
}8 U( |6 j% U. ^) ?6 q# `

* Z3 F% L8 p% H, m" M# r
* w5 M* s( o) ?+ O4 D6 r$ {# U- _- [5 k
  /* TODO: Add your application code here */# A: L# ?) u& S: ~% N' }
2 N% u# l$ o1 a$ t* @( o8 J
  char *message="梅雷提示!请选择视图边缘。";
( a* ]0 |( v& Z1 u/ P% O9 l  char *title="梅雷-QQ1821117007";
! J) a* |6 m( y, v$ ^0 H' h+ M" x: I  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围+ M% ^. F% B& l1 r
  /*9 z' [- C" V2 r. |( L5 e
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化6 W* d3 e2 N0 G5 w
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装# W0 G$ c; q9 [1 X  u/ ~* y
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
8 m$ ~6 b, D' Q" k5 b, G0 k  w   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC
7 w4 c5 Y: H$ e0 a9 D  */
0 X! z& W+ j* x# l' nint  response;* i: u7 ^1 C/ n* p* k
tag_t object_tag;
8 A1 f+ S6 G7 N- s- H8 E1 b9 ?double  cursor[3]={0.0};. D. R6 W8 B: A. K$ L# l) X
tag_t view=NULL_TAG;  a/ D1 |) l% t8 @# R

- a: w# I/ b* e$ h1 mUF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁! @% G2 w8 J; o8 p7 _5 G" E
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
/ S2 U+ s. x: J) f2 s* Y. Y& S; N4 RUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
- a% G+ c4 N1 @UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
/ s$ E5 o2 ]. p# ^5 fUF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
2 |6 L( x" @" ?( i. S. v& aUF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁" ], z1 |, Z0 i, R, o2 \% o

4 w4 t7 p7 S- [! V3 W! n7 G( B! y% g% ~
if (response==UF_UI_OBJECT_SELECTED)
1 w7 f5 _3 d9 X/ `{
  _" r' Z* n0 h6 C  K  char view_name[132]="";8 U, g9 F  N# T8 F1 d- d1 L
  UF_OBJ_ask_name(view, view_name); //获得视图名称: [( E4 r4 B: `( A
  uc1601(view_name,1);6 }8 u2 `" ]/ I3 d: d- s* L
}$ N+ ?: t  P. `- Z: J2 j
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了