PLM之家PLMHome-国产软件践行者

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

  [复制链接]

2016-12-12 12:22:04 4120 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()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……
6 B0 j3 R6 g" V, j5 b" I) D/ l        tag_t object,view;- r  f2 A" `6 E0 h4 ?2 a
        char cue[] = "select object ";. K& h3 }6 }, ~7 w: a8 e' d" i. i; y
        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART5 }7 n6 F/ O8 _- g, E( F
        char part_fspec [ MAX_FSPEC_SIZE+1 ];
5 U8 p6 \+ v7 S* t* A7 @+ n$ h        int  response;
( ^# c4 K7 r# H9 B+ r- ^( |6 G        double cursor[3];. _& e( S, K& b' Y& N
        tag_t part_tag;
4 T, V2 c; s% C        CString infro;
4 r; t; s9 B2 _  ?0 C* H/ L5 Q& |; i; [
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );
6 s7 ?) h2 y4 J  A7 u        if (response == UF_UI_OBJECT_SELECTED ||
5 t  E, s+ I5 X4 t/ U8 x                response == UF_UI_OBJECT_SELECTED_BY_NAME)
! p! ]+ V0 M7 k        {
" ]* V* c+ e& L, D- F& ~                UF_DISP_set_highlight(object,0);" `, x7 z5 i8 c& F) n% D% i( d- M) f
                UF_MODL_update();# C* o! C4 V; E( G) D0 C: J3 K( Y
        }9 s0 G* ?; r$ _4 j$ @% m2 E
static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
: Z- Y! S2 a: M0 H0 E5 ]{  
- u8 K; k. O- t8 X- \1 _        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};7 X( ~$ y- m( L1 R# s' s& s
        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)
+ `; j$ k* V2 h' R0 N( t, W        {
3 s5 F) X' @. B( u/ d6 V, h                return (UF_UI_SEL_SUCCESS);# P( O: X0 p( g0 E$ n# n6 K
        }; @0 Z4 f3 g: }9 L, ?3 }4 ~
        else
1 s- c; Q! q' c8 `$ K4 K        {
  g. }9 }0 d+ Y! {# I6 j" K9 s                return (UF_UI_SEL_FAILURE);
$ I; A4 u: Q0 E        }
; O3 w6 |' G% v) A5 N8 {- c}
1 u( {$ j, {; n  @; P  K3 v/ X/ l2 {. u4 C0 X; W7 A( a# Y6 ?
上海点团信息科技有限公司,承接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;( d6 v4 v5 Z- I' q3 U$ G% H
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
0 ~' e; u" F) W6 s3 j
+ K% \% v& ~2 E# v8 g2 G+ M8 r% y- w) J& Y: `
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象5 K' X! M$ W, n6 `  }
UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象* H$ f0 o9 Q8 T0 a- j( d& ]( e

/ W: j4 g6 N; F( `; p————————————————————————————————————————
; O# Q1 [1 d7 X9 k0 Y列子选择视图里的直线边缘
! V7 }0 Q9 i" ?& U/ I
+ F% T+ Y* [1 D#include <uf_drf.h>' A/ ^* E/ N8 s, x8 C- s" V; Y' M
#include <uf_obj.h>" W( k  w& Q4 ?. J
#include <uf_curve.h>, q7 C/ s7 f9 e/ X1 k) f' F( d
#include <uf_csys.h>
0 x/ V& [, _9 d, A3 E9 ?#include <uf_modl.h>
/ D8 L! }/ h7 v- S2 ?/ {  T, J
" z; ], y$ P! l# H" {1 W6 d7 ?
6 l( ^( U% t* s4 E: v/ o7 I/ ?//设置选择的实体类型
3 f5 H, U3 @/ d9 |0 vstatic int init_proc( UF_UI_selection_p_t select, void *user_data )# @2 i5 L8 i$ c; w+ ]
{  P9 V( t# C$ j9 ]$ v. x# o1 P! g
  int  errorCode   = 0;
( n- P2 d. r: @2 Q* `
9 ?) F9 g6 I. ~+ N1 c2 F! i9 `" h  int  num_triples = 1; //选择类型数量, G( @9 o: `: i8 v$ W
  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型
: a* j( I1 J% I' y9 T
+ y% B0 E1 h4 X: g( j" d/*7 `$ Z$ Y( M. e8 l- k
UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型: j; Z4 F: K, L& S7 f1 ?# ]" N
UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的1 F1 v6 z( ]/ ?5 h! W
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
$ z* }! _: \  \UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定  c  R+ D3 ~( U/ I9 r
UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定% a7 F0 D, P3 K! h3 D
*/
8 i& d; y; t; Q% ]& Y5 j6 @errorCode = UF_UI_set_sel_mask(select,
& m+ ]* @) V1 L8 J                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,! v  [/ _4 |% e- s! k
                                                           num_triples, mask_triples);2 N$ U/ q: ]$ b( i$ }
if( errorCode == 0)
$ T: o, ?& k3 u7 W{
% D1 T  |; B" h" `- F% K) Mreturn UF_UI_SEL_SUCCESS;4 ~- q8 ], S3 V  ]2 j+ t2 ?
}3 \% n5 k% L' r+ o5 e) d
else0 z/ T$ e& d* E7 h3 e2 n/ _
{
# y* M- G0 {4 C8 C! `, a return UF_UI_SEL_FAILURE;
+ I  [9 N( B& N8 N) h}: o1 }( d0 G; v
}, {1 k. D& i; h- |  j
- t& _# N8 C& f7 x+ E8 k4 q
" \% g" Q; j, i

5 m. a& Y; D" V$ f' M) P7 U6 G1 p5 i6 a  /* TODO: Add your application code here */" s& r6 F' s3 v; T  @) U4 J& I
1 b2 B8 A6 E! ]: g) U9 z& _
  char *message="梅雷提示!请选择视图边缘。";( Y" S- g" P' `8 \
  char *title="梅雷-QQ1821117007";4 @* k3 j  X% ?1 l
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
& ~2 g3 \# K) c. e( Y' {: _; C  /*3 Q! Q6 }+ i$ e; b: A& @8 R" n4 K4 Z
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化$ D' D/ p- m% g. D! U% u3 w+ k/ M
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装6 W0 Q4 s3 t: ^6 u; t
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分7 ]; l# g6 b' i+ d( K4 k
   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC4 q7 g2 P- O" d
  */
# p2 b0 \8 `) }int  response;
1 j3 W% _0 {* \, U# q1 D1 Ztag_t object_tag;
# f" P' g& O/ O+ _6 x% g, P2 jdouble  cursor[3]={0.0};
- `& p- ?% P6 j9 o' f: s/ ptag_t view=NULL_TAG;2 ]- Q4 r. ]. P* g8 H! V
* u$ M# A7 G$ U: @/ Z/ s
UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁+ G- |7 D* Z* s  o* w
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)  y. y, ]' G/ ^
UF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
, _4 r$ j# a$ c" ]UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
: z( Z7 k5 H3 w0 K' j, fUF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
5 w5 k/ P, I) o" J2 RUF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁
; p, N7 w6 W1 p4 ]: j( e3 {6 g
5 F! p+ v, \7 j. r7 x! V7 B# L& p" w5 e
if (response==UF_UI_OBJECT_SELECTED) 1 J3 v: ~! h) ]
{
0 M" _3 Q0 u: ^/ v  char view_name[132]="";
9 J+ @, ~4 A! d3 C  UF_OBJ_ask_name(view, view_name); //获得视图名称. J" B* r& w, S* c+ W) g0 q
  uc1601(view_name,1);- V$ F3 t4 X! p( t) A
}
1 ~- e" t4 B" h2 l; w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了