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

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

  [复制链接]

2016-12-12 12:22:04 4199 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()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……
! Q7 `( ^- Q0 u- w- u, Y        tag_t object,view;" S0 p' c7 y( X  q2 R
        char cue[] = "select object ";$ ~8 f- @. s1 l- W8 i( ]! Y. W
        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART
: j$ m" h: G, w8 P$ ]3 l; g  B3 R& z        char part_fspec [ MAX_FSPEC_SIZE+1 ];
! {' c% V8 T! j: k! E6 @6 s        int  response;, L. G+ q7 e8 X9 U# k- I
        double cursor[3];" ^% L) M; f2 K% k- q/ U
        tag_t part_tag;' u: N( U; h- o3 H/ [" |; }
        CString infro;& B+ S4 ]' Z: ^( E  v- I/ ~* _( r
) w9 q2 t. O  l0 B
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );: v% B" E+ Z8 q1 E) m* ~7 o
        if (response == UF_UI_OBJECT_SELECTED ||
& Z' U, l5 H6 c2 ~, R+ v: p                response == UF_UI_OBJECT_SELECTED_BY_NAME)6 P4 c5 K! ?- L" b1 x
        {
  l' n* q) k8 Z) r; R. w3 E                UF_DISP_set_highlight(object,0);
: L+ R+ s) _; U$ G4 p                UF_MODL_update();
9 y& ]  e4 }+ P7 q        }
8 X4 B& L' Z+ f6 m! d+ Estatic int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)7 l" P6 i/ t- p; H: K
{  
- W( x8 R4 _$ |; f5 w* o2 @' e: F, c        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
' `8 V1 Y1 z! i9 |$ g( c' }& m! W        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0); T( m+ c3 w+ M$ _  k( V
        {9 ^8 F+ {  w: j3 ]% H! X! T, ^9 W
                return (UF_UI_SEL_SUCCESS);) T! m6 i( n3 i2 e6 [
        }1 i& M/ `7 Q* C. F% s: B) D0 N9 @
        else" E* V$ O: ]$ H5 i+ }& u$ s: X/ b
        {
- I8 D% i6 v/ @" S$ U. [                return (UF_UI_SEL_FAILURE);- |0 g$ n& ~) [1 b5 y
        }
9 V" H# m/ [% U6 Z/ Z  {6 \}0 W' E  v# a2 J& v* x

  [2 Y+ X8 F; K& t6 K, E# h  Z4 z
上海点团信息科技有限公司,承接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;5 s8 O, n/ P( D% q5 D2 z+ R- r" ?
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
1 N$ T; w; y  j3 O& K; b8 G% e+ w
$ ?% U2 ~" u% w5 u) c" V! \) W9 X( x# k! b5 b/ B) t
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象  Y* ?* J5 V$ i5 g) g
UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象7 q0 E$ U7 R! H5 n' ]
! q8 g- Y0 y2 G' _7 L
————————————————————————————————————————: C4 D$ b& I  q/ x# L- K
列子选择视图里的直线边缘5 A8 d! o! q4 D. A8 m1 @

& W( q1 J' F; O: o6 s; C4 ~1 T3 m#include <uf_drf.h>
$ Z9 Q. O& D1 i$ K3 h#include <uf_obj.h>  j& z3 X- ]/ I4 U
#include <uf_curve.h>- g& {1 @8 v; ~
#include <uf_csys.h>
% V$ q! k; k2 e5 ^4 F/ D#include <uf_modl.h>2 H; [: t' V; _0 p/ v4 B

& I9 M5 g7 `: R( W' [: i* S
8 ^( H# l$ `9 u8 k//设置选择的实体类型
0 R: C+ H& X4 K" {; n' gstatic int init_proc( UF_UI_selection_p_t select, void *user_data )
/ M6 T& s/ t  q# f3 E/ ?: m{
5 T3 j% A1 c6 f6 y  int  errorCode   = 0;
* B( D" _# {6 W' ?0 t4 C5 M, v3 v0 g  H# a  w- W  ]' U/ {$ a1 G
  int  num_triples = 1; //选择类型数量
0 y. s0 r) [) R0 x- R  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型% `0 ~$ {$ \$ R
5 C8 X* _$ y9 n+ M
/*
, w+ F) a- w* m: mUF_UI_SEL_MASK_ENABLE_ALL 所有面具类型
- q1 B7 }# V0 b8 G! XUF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的
! {% t  U3 R& v3 a5 a' w8 D0 ?  N* }UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定8 a8 \& N: [% ~5 z. }7 J  y2 [
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
/ _* H  h: A8 ]UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定
: J+ m+ t( B0 A*/
; c/ T0 _9 N, y5 q/ v( G; s# \( ZerrorCode = UF_UI_set_sel_mask(select,
  ^* }; b( Y$ H+ k, x                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,/ h( L+ ]2 G# [$ S
                                                           num_triples, mask_triples);4 Q% _5 M5 J' V4 W  x1 e3 ]
if( errorCode == 0): M; ]9 N9 u8 c' A4 [$ k
{
# h# G3 ]9 E$ f! O6 ~! V: T3 x* y! o- freturn UF_UI_SEL_SUCCESS;
( G8 s( g- i* O}
7 H7 S5 U: c, }% l else. A- l- i! C7 {- m$ g
{
( c8 o% o% p/ e- e+ k& r! a return UF_UI_SEL_FAILURE;% Q, n6 t4 v6 Z! H# L3 s
}. @7 I$ y- v% v, g* |4 }, B
}
' s! m/ M" |8 v, v2 x% I; S
& l! \/ i1 a: W! J6 T7 w9 f  [/ Y( A5 E5 _+ Q, S

# T; u  t, |. G" D+ b- J  /* TODO: Add your application code here */
  U) v$ {1 O1 J
8 i& k1 P' Q& F. m- D$ {2 ^: U  char *message="梅雷提示!请选择视图边缘。";: z; [  n; f+ r9 z; @* m7 n
  char *title="梅雷-QQ1821117007";
8 @  `7 |3 U. \' U3 N; w. y9 H  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围' q% E* Q: Q+ ?9 Y
  /*
8 C& X. o6 t3 B4 f. v- @/ V   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化
) f. T% v2 X- `& w, S' _   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装/ i7 S2 Q3 o6 h/ L! c3 e
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
! H, |0 N/ \( H" d- r; ]2 B   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC
- @% _8 L0 K$ E% L' d  */
; I4 k* f+ y; aint  response;# ]5 r% Q" h' ?( u3 O" S; U
tag_t object_tag;& C7 \$ v0 B) Y
double  cursor[3]={0.0};6 O$ d# Y* H& i" O1 m, i2 y$ O
tag_t view=NULL_TAG;
- t' n( r0 @- y) h& b' W: m! n2 P8 a2 g$ T; e+ q  X4 h0 W
UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁
. O7 m  |( V% z& a. ?! JUF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
9 m- F- n2 N! t! RUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】: w0 H! ^0 p/ C$ y, [3 l0 w
UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)4 q' `$ p" J/ @+ n, u: W
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
4 C$ S6 a# A4 q# Z( t& i1 R0 BUF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁6 }+ i% ^; m' e" m5 Q' K" A, p1 o
) v( H! p$ H0 k! l- Q, C( l

6 B1 ~- {% v! Zif (response==UF_UI_OBJECT_SELECTED)
+ J/ [9 j; U9 p6 q% e6 _{
0 h6 b& q, x( {  char view_name[132]="";; ~4 w6 ?0 C4 b/ |; h' l8 v8 k
  UF_OBJ_ask_name(view, view_name); //获得视图名称7 X5 J' }5 }: X) E3 p8 b. @
  uc1601(view_name,1);
! Z+ |! u+ Y; Q- A7 J* I}
: l9 G! O! K: V+ I9 q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了