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

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

  [复制链接]

2016-12-12 12:22:04 4160 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()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……1 s: l; u5 T: O( ~" F' |% c
        tag_t object,view;( L2 a/ {& ^* U, @% `7 Q, _. R# l
        char cue[] = "select object ";
9 \& ]# \1 o3 X1 z& n5 ]- _/ p9 Y        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART) m4 Q9 G) e& f+ v
        char part_fspec [ MAX_FSPEC_SIZE+1 ];4 t) l  }( [% A2 M+ h4 R% R
        int  response;! o: ~* _; H/ b2 w0 q
        double cursor[3];
  j$ F4 C9 K6 ?# v        tag_t part_tag;
" r+ L0 [/ v  T. L) A9 ~        CString infro;
7 H% ^) [. ^6 w7 I4 T$ g( H
* |- y) K4 I1 x3 y; W) K. G2 Z* t* J        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );) t, j  ]- ?2 S. q" E1 u+ T
        if (response == UF_UI_OBJECT_SELECTED ||
9 ?4 a+ c( [3 ^  C                response == UF_UI_OBJECT_SELECTED_BY_NAME)
! [' r* \3 F# E# b        {
' \- U* u9 w% N; u6 b                UF_DISP_set_highlight(object,0);
; S5 ~& L' N' s. @4 K' w6 J                UF_MODL_update();8 K+ e9 i% b2 i& P, N: K. z: g
        }
+ ]1 |% \/ x" h+ W' J) ustatic int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
0 K1 C7 l: c' F7 k' N% `{  
; d3 M; m+ [4 V! x: y        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
7 J* W0 O/ |1 o        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)* E0 \5 z6 Y) K. b) o
        {
, @& W. y. D3 K/ L5 W: V                return (UF_UI_SEL_SUCCESS);8 [4 `/ V# c1 ]9 v
        }
' Z; M; b; g2 `' U% c$ c  I4 T* S0 X        else3 g0 a" z+ E- p6 s4 Y
        {9 Z1 P9 M! s% ^" ~8 E( O
                return (UF_UI_SEL_FAILURE);
5 h% d4 R! i: K# S        }
- Z* `, l) {* ]: o. o}
! o1 ^: H+ Q, _" S2 M$ t$ ^2 p" [4 v8 D9 q
上海点团信息科技有限公司,承接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;
, S. v  `/ G) v# B3 k$ n9 I* LUF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view6 W5 z$ o1 R8 F5 L
! }7 U4 d+ o* D% V
0 ~' c* Q3 _$ B9 c7 _
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象6 n4 K/ s% p; `, U+ c1 R
UF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象
4 Y9 A9 ?# M3 K; ]" v1 u6 f, J! U
————————————————————————————————————————4 u* T$ @! k$ G) j* w; L
列子选择视图里的直线边缘
+ g' W  |. Y2 [
  s8 C0 D8 f& i* T& A& S#include <uf_drf.h>; V7 X5 C6 y! T% j% O# b
#include <uf_obj.h>' W) D& q3 K) ]% h& _" q( W
#include <uf_curve.h>9 U' n7 ~- ~( I& H
#include <uf_csys.h>
4 K; O" R: d+ `$ t#include <uf_modl.h>
3 A+ P) I& z3 U: d
; l* I( [1 {/ g7 X: S6 ]! N; L' a: ^+ E9 r% ~( x
//设置选择的实体类型
/ q- j6 V1 r. Ystatic int init_proc( UF_UI_selection_p_t select, void *user_data )/ |2 f; B- s# P% ^) ^8 u4 Z
{
6 q1 h$ o6 p* G% N  int  errorCode   = 0;
* x3 ~: q* D/ m2 l; H+ }
8 R6 q3 H$ N* A' T  int  num_triples = 1; //选择类型数量; o! L- ]- `. S8 ]/ [7 |: b
  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型
& w& f% M; x1 D
% I7 F) F! B1 Z9 @( _# \8 [/*
% V9 V4 x. |2 V( Z3 c8 w& ~UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型
' b* l( Z$ n" G8 \! A/ @3 YUF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的  D. a1 L9 r. P$ `3 S0 a
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定8 q$ I$ r: E  K
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定6 ~; Y; F+ Y+ E, u
UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定( G" W. D. Z8 L9 s
*/- B! q  O" k( A- `9 E7 T
errorCode = UF_UI_set_sel_mask(select,
" m7 m4 M) m/ n0 |# Q$ g/ b% q7 R. [                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
1 [  c+ t$ |* X2 f' d+ n! E                                                           num_triples, mask_triples);& f, L& a2 Z2 j4 l2 }- @- W: x
if( errorCode == 0)( U! F. C% C) j3 n
{: H6 M/ S1 B! `6 S4 X- T3 q
return UF_UI_SEL_SUCCESS;
" @9 T0 ~8 F( H6 @% a9 O* O" K}
4 T; o/ t/ l9 Q" v' ]5 b5 C1 x! @ else
0 ^2 f$ Y% @; C{, G% p5 _$ ]% O4 B* X% }
return UF_UI_SEL_FAILURE;
- @# ]- Q1 N+ j2 e; ]8 a}; O1 r) C& J0 d8 N$ z
}
/ U" q5 G: t% @& I1 B  L/ p, p+ W% |

/ V. t( `5 }4 R2 F6 V
/ k( f! W: m& X  /* TODO: Add your application code here */
% p+ o5 E. M4 b4 _
- N' ], b2 ?, w9 f! w) i$ Z  char *message="梅雷提示!请选择视图边缘。";
% @. {& D9 I# W% E  char *title="梅雷-QQ1821117007";( M6 Q, e& C% _: u8 s3 X" D
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围/ h; B# P* t! ]! ]9 A# S
  /*; {- L. }% B) z- o# G2 s1 W# K
   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化' h2 P, j& n8 T
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装
; H) W- S/ A0 O2 m" T, k2 U8 @   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分0 i' c/ X2 q) r9 x; X5 ~/ P, m# ~
   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC  ?! ]( O$ g# f( k1 F  i
  */
- c5 \" g4 a. m8 Oint  response;
* `: R/ [) J6 `+ ?7 p. G! Z4 ?: Ltag_t object_tag;
5 C0 F9 z" Y# T1 b9 L- q" rdouble  cursor[3]={0.0};) d% d  }. U$ U+ H/ _- _
tag_t view=NULL_TAG;
5 I7 W$ l1 j9 p6 c" h$ O( N
1 U5 ?$ i! e. P' HUF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁2 J8 j: m) _$ y# v! c
UF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
! X, r+ `* o& W4 B6 v" s1 s- KUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
4 `+ Z! _' I  K/ O8 R' CUF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
! x  Y# R; Y$ L' z. @UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示8 C# G5 z- e- o8 G) p4 B
UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁% Q0 w, B& X4 Z. {9 G2 X6 `5 G

2 W- ~  {$ ?0 s* f- T  a# z  c2 Q) ^( `5 z
if (response==UF_UI_OBJECT_SELECTED)
0 p! M) J2 Z+ U' s7 b. b{
8 u: @' r1 ^/ M3 s  char view_name[132]="";; K$ w7 l2 K% j0 D; y
  UF_OBJ_ask_name(view, view_name); //获得视图名称
% M) h( d9 B- x( D+ v4 z) B  uc1601(view_name,1);2 [. Z/ j( [; r' L2 {* S
}; N+ o8 o  \4 z% H9 a  B5 m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了