PLM之家PLMHome-工业软件与AI结合践行者

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

  [复制链接]

2016-12-12 12:22:04 4200 2

丿僦湜灬禧歡沵 发表于 2015-12-3 13:55:58 |阅读模式

丿僦湜灬禧歡沵 楼主

2015-12-3 13:55:58

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

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

x
UG二次开发问题:我在建模环境下用UF_UI_select_with_single_dialog()没问题,在工程图模式下用UF_UI_select_with_single_dialog()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……" |/ G1 H0 D  I5 t
        tag_t object,view;
7 a/ h" {: f% m, l        char cue[] = "select object ";
! L( {2 M' N5 f; q9 X# F  U        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART
) Z+ a8 X; d8 A        char part_fspec [ MAX_FSPEC_SIZE+1 ];
7 \4 Q) I2 ], k. [& n: o4 X% y        int  response;
; U* g- P& U8 k        double cursor[3];; F5 Z. z1 w7 i, O+ s$ }/ ~4 C' f
        tag_t part_tag;! |- s* O3 p* j/ Q' \9 I
        CString infro;
& Q+ _/ J! d7 ]+ T! p# o
! j& r: Z2 Q8 g        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );5 j6 G7 Y2 m; A* r) |
        if (response == UF_UI_OBJECT_SELECTED ||/ g" ?4 D/ r# V. J0 J* Q3 H/ X! L' e& X
                response == UF_UI_OBJECT_SELECTED_BY_NAME)
2 C# L- \" ^. u3 ]7 d8 {        {
* n2 S% y2 [4 j0 e) i; m                UF_DISP_set_highlight(object,0);/ _: ?* ]2 a- P
                UF_MODL_update();2 K2 b& `& ?7 s( x7 m3 W  r7 Q; X
        }
  k9 h) C; \* k; j* Hstatic int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
8 B8 j/ y# ]5 @% D8 @{  
" K- R( `* A0 o5 i  P        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
! C7 D; H  M  I/ n$ a4 R        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)- m$ i( D# j4 s( T
        {5 L, p8 [5 ~1 Z8 c3 O* w. n6 ]
                return (UF_UI_SEL_SUCCESS);
( M! z8 a* R5 ^% s        }3 v$ D( S: O; [  z
        else
* r* S5 w& o: k" G4 A& i) t        {
6 n0 {( j, @" s4 D$ v                return (UF_UI_SEL_FAILURE);
& u/ O2 S+ O9 i7 l        }
8 N0 ]; i  l" F. R2 V9 x}
2 N' a' {! |( b/ y- [( i3 V
) A# C6 h  n& K- _& |4 K
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

丿僦湜灬禧歡沵 发表于 2015-12-3 14:36:31

丿僦湜灬禧歡沵 沙发

2015-12-3 14:36:31

难道我过滤错了?没人回答?……。自己顶下啊
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

15757753770 发表于 2016-12-12 12:22:04

15757753770 板凳

2016-12-12 12:22:04

int viewview=1;6 I& R" R# O7 v" @- T
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view7 f" t2 B& }  s/ @9 n3 C$ t
- G# _5 ?( w; X* |' Z- v9 a% ~
! y, t7 T+ j2 a" S
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
) N) w" d, u2 \- K+ R6 x6 q7 {UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象
: B2 {8 J& o, i/ E+ \- j7 V4 [7 k/ X; m3 k) A
————————————————————————————————————————' o# l9 E; [7 G# I3 @2 H% M# T
列子选择视图里的直线边缘1 S5 r8 n& E$ f3 M( h
; @. \. D) [5 A7 Y: I& o
#include <uf_drf.h>
! c" _- [+ N8 B- U( E# A; s. R* a#include <uf_obj.h>, h& I% U  C0 f6 _; U8 s" K
#include <uf_curve.h>- J. x: c- j5 i4 l4 V' o" v
#include <uf_csys.h>
, a1 c$ ?- K. n; R#include <uf_modl.h>
4 l. W. n  H4 S
/ F5 X( s) B, t- M+ |3 \  O
7 ^+ k1 B! H3 C4 G9 c/ S: C//设置选择的实体类型; l% Z* ^- K, ?; T2 B
static int init_proc( UF_UI_selection_p_t select, void *user_data )
8 b0 ?$ b, c' h& N) R% u4 o{
9 N$ \; l' ]  t  k4 e" \5 a  int  errorCode   = 0;
1 O/ ^, F: ^$ O, [( p, }; H
0 R. ^2 p6 P4 l4 y- Q5 m9 H  int  num_triples = 1; //选择类型数量
& u* `/ |. a1 g4 f4 x5 `  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型9 ~- R( t3 M/ h3 Z

, Q) a+ P& ^8 U6 G$ G; d0 p/*
7 X3 C+ _0 t1 {6 x, |- EUF_UI_SEL_MASK_ENABLE_ALL 所有面具类型6 H* @0 J- f4 w% O
UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的5 \' W/ ?. g. A  x  e
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
! T- ^. y, u% G: X2 v) dUF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
) B& D  J! d" G. bUF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定
/ k3 M/ q" J% W/ d1 _" V5 {, D*/' F6 Z4 O' B! d3 a
errorCode = UF_UI_set_sel_mask(select, ' l. }) J5 H, P2 C  l+ m/ u  R
                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,  h. y( y- v  X; [, @
                                                           num_triples, mask_triples);, E' Y* S6 ?+ N
if( errorCode == 0)
( }8 i1 x, i8 V/ a, O/ g: _. C{
. Q1 S2 w9 F3 X8 b8 ~9 b- ^return UF_UI_SEL_SUCCESS;
  ]) K' y3 R& D# U7 V}, V; q0 U: k& P: A# I6 f8 v
else- r7 {2 `( d9 [, {- s/ F
{# p! U$ @( r& W) n7 @) a2 i9 y8 |
return UF_UI_SEL_FAILURE;
5 H/ h) d7 g0 b# U5 b}3 j8 u4 l) C% Y2 g
}& e; O4 T" N  w! ~! Y' N

9 P0 M& I, w" q% r' e- X; |# J- _! `, U' S
/ p# L' ]# g) r/ v& E" R: o0 H. G
  /* TODO: Add your application code here */
" R& c# H2 v5 p* E. p% p
7 m7 I3 \. v. h  char *message="梅雷提示!请选择视图边缘。";2 n$ i5 H3 x/ V6 X% Z' j; e9 }
  char *title="梅雷-QQ1821117007";
' [  D) k! q1 c: j  F3 ?: K* z  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
$ _5 n1 k! I% p. r# G  /*( G0 g8 j3 Q, s0 A- ~8 n
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化
6 [! z. s! w9 Y* `  V   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装
5 W. r2 ]. W+ X   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
6 l7 O4 e5 y9 Q1 F5 @. @3 W   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC" A: ^+ C- X8 v' a
  */
  ]( E: T9 z3 r9 eint  response;
8 d. q5 v+ v4 @: j" d5 stag_t object_tag;* [, p, P& r+ f( N1 r
double  cursor[3]={0.0};
9 X2 [8 j" E$ w* @1 w* Y  ^tag_t view=NULL_TAG;
/ N! S2 x0 n' F
/ a. i0 {* b, X; @$ D5 kUF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁: Z7 H5 U+ E+ t+ E9 \. L9 t/ q
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
/ N- E$ q# X0 [- QUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
( m- ?) |9 k2 T) K0 |) ~UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)" k( o+ }2 D% q8 [; x
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示0 \7 q0 L2 f' r3 O" H1 y
UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁
  w+ X" y: w  g- ^' _. \7 l/ ]5 D+ a' \( X

  N5 L4 g8 X6 c$ aif (response==UF_UI_OBJECT_SELECTED)
( H% s1 D2 n: H+ B$ q$ e+ X7 K# S' S0 c{
; s! B! j7 G1 F# K) g" J  char view_name[132]="";
, f! Z6 T: J8 T. m4 C! s- ?( c  UF_OBJ_ask_name(view, view_name); //获得视图名称
/ o) Y7 o; [8 G# E8 f  uc1601(view_name,1);: W7 N' V9 y% q; [$ f
}% e. ^6 b7 T7 b! Q$ r
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了