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

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

  [复制链接]

2016-12-12 12:22:04 4115 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()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……/ S, F7 c0 w& ^' J
        tag_t object,view;1 }! D4 Y8 j0 u) F; f
        char cue[] = "select object ";
5 g  l. w( u; Q( k        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART" P, g  F; h/ r# @. F" `
        char part_fspec [ MAX_FSPEC_SIZE+1 ];! P7 f7 `* T& R' t! z5 E( E6 j- A
        int  response;
. Q2 H( G3 B% k; q* ~        double cursor[3];1 `0 @# P  R- s: n. h% o
        tag_t part_tag;
5 f& v" {5 m" G/ j        CString infro;+ V8 y+ X; b) C/ V* Z- l# n7 C

6 r8 b, G# l& d# x- u        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );/ A. z$ f0 T! Q! z5 l$ ^3 d* T
        if (response == UF_UI_OBJECT_SELECTED ||$ m  o+ F: I! q( Y  C5 X
                response == UF_UI_OBJECT_SELECTED_BY_NAME)" d6 r4 Q" t+ i3 o! T
        {7 H" w: m- ^& v( v' D8 q
                UF_DISP_set_highlight(object,0);
# c  V: \7 ~" E6 W2 D                UF_MODL_update();
9 S4 w$ T+ n/ L  C% u: v/ j* K+ L5 `        }
% Q8 E; G' W( a: ?static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data)
" g/ S& c. Z! q, ]- E" F. ?6 u2 s{  
" p0 N5 z9 q3 s1 M' m        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
6 j% Z9 X% B- a, y& G6 F        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)( Q( Q6 X$ D! P
        {
) _' }2 h$ ^; W& @8 O                return (UF_UI_SEL_SUCCESS);
: e& p: V, [7 q2 |. N: Y6 ?3 G        }
/ ~: }; y8 r! N% c4 R, D        else& _/ e& @: Z+ @4 K+ B
        {9 A6 A8 \- A9 a' ]9 W8 C2 Z! w
                return (UF_UI_SEL_FAILURE);
  v& d, G. o/ H2 q8 ]        }
& Z  o8 u4 S3 S9 H}
3 {6 J! R  h$ r4 w4 I8 |( e% f* C
上海点团信息科技有限公司,承接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;
- E; _+ q  ?: x8 B6 ?UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
! n# m1 e9 a2 K$ {
+ E  x1 k( c. J1 o. Y9 Z7 T6 X- B+ k6 z) M  a" \2 [2 D
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
. k# Q0 _2 e% M/ zUF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象0 O; D. D  [0 B' L, k9 B6 F
5 e3 |. H7 K9 O. M
————————————————————————————————————————! P$ t) l% R4 F* ]) Y6 |* t- V
列子选择视图里的直线边缘: T: @7 J+ F5 y8 s

0 c% c* T& U" ?; @#include <uf_drf.h>
- d% s5 `" v7 d3 J#include <uf_obj.h>
9 d  T* E2 l: y7 y* h( c#include <uf_curve.h>: E; e) @& J8 r9 H2 S
#include <uf_csys.h>
5 j5 _$ o- R8 s" }5 s#include <uf_modl.h>
1 @- }5 V, D0 _, ^$ d& `; p/ f( e" A9 d0 u4 V6 ]
$ C3 N( w/ I, o$ W0 j# Z3 y9 S$ ]
//设置选择的实体类型$ ^3 z' {6 {9 G) e, Y
static int init_proc( UF_UI_selection_p_t select, void *user_data ); G1 b3 Q9 f' L  H
{
' o- `2 `! F6 S' D" M  int  errorCode   = 0;. Z7 ]$ a4 |  t' D+ i7 k
5 }7 @* o# A0 ~3 P. L
  int  num_triples = 1; //选择类型数量
0 d: H! F( j1 y, L! p8 d  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型% Z. @5 B1 e( c  t3 s* N

( t5 g% g8 `: S7 F% p5 U7 x/*. M1 `) p% a- l8 q
UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型
& _4 P4 Y7 Z# ^+ A$ q5 V$ {UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的  d3 G. ?) Y: N6 n
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
( V! b4 _. ]5 w' M+ RUF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
7 ]/ C" R+ Q8 L0 ^UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定; @) e1 l2 Z- r' ^
*/
2 S. t* G! R8 S9 S. \4 [5 cerrorCode = UF_UI_set_sel_mask(select,
7 e/ e" B$ @; d2 s3 B1 @                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1 J" J2 v- G+ Z8 P/ e* V
                                                           num_triples, mask_triples);. t/ s% U' d, }9 E
if( errorCode == 0), ^% f/ B* B+ h! P& p
{
, k% e) Y$ \3 h- R- [/ ]- F5 preturn UF_UI_SEL_SUCCESS;
: `% t" b6 z" e3 E& h}
! x! E  t0 _5 e* }! ~3 A else- s6 |% s" h7 j; ~
{
1 p9 g3 y7 I4 m* t6 `, w& a8 A return UF_UI_SEL_FAILURE;, y( |" U* x* f6 \
}4 X9 E. f5 Z+ H3 B7 i6 c+ Y
}0 }# h8 D/ ~. z! {) L+ X% T! O1 l
% @( ]; W2 }9 l+ l( o

; V" r1 {3 m2 n7 d- ?# b1 ?9 @5 }: x1 ?! h1 D, h; t
  /* TODO: Add your application code here */, d$ \& e- S7 t! ], W$ i
8 b4 }3 F& C, @
  char *message="梅雷提示!请选择视图边缘。";
: E4 c6 P4 U% }3 ?0 c1 c0 A! ?  char *title="梅雷-QQ1821117007";% G: e" ~8 e/ h3 t
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围) s/ `# k. Y4 `  B
  /*
1 u. _& D# c5 P, s   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化) m5 @3 s. z# ?6 d% |8 q
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装
6 |  v# _; A. U2 l/ A   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分( z  j& A7 E1 p: v/ G! H
   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC9 v3 o5 O/ M9 ~) i1 \! r
  */. I$ e7 |4 L6 G( @/ Q. i' x0 \2 T
int  response;2 j1 K/ Z" b; C5 I* L
tag_t object_tag;
2 B0 C. E6 p% V) ^, U1 W/ b" Rdouble  cursor[3]={0.0};, w% e4 _5 a" j, k) F5 w/ }% i
tag_t view=NULL_TAG;
- |+ L8 d5 j! q7 g3 U, \
5 u' o1 @5 ^* M* _8 h" ?UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁
3 h, O: _, _, u9 o6 jUF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
. S% ], B" S+ V) `9 t- ~) HUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】
( _( v9 F5 Y, H- F; iUF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)( p% l/ M( q3 e% g; w) X$ D8 v
UF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示
) g: `5 L% v7 ZUF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁
; F3 I2 n- g, t0 A1 [+ r4 s  d, l, ~1 f2 H, o. z0 E# Q8 X
0 k! ~9 x) m: u9 {6 o
if (response==UF_UI_OBJECT_SELECTED) 6 Y. j: C. c3 W. z& y$ e& P4 g$ Q
{0 [) u' s' \  L
  char view_name[132]="";+ P) G1 U& R9 y4 k; p
  UF_OBJ_ask_name(view, view_name); //获得视图名称
2 I7 S0 x8 K, L) `6 Q- ]  uc1601(view_name,1);
6 }, y# ^) m0 `0 p$ N" F}/ k& F& k  _0 Y1 m' ~, y+ \  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二次开发专题模块培训报名开始啦

    我知道了