查看: 4275|回复: 2

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

  [复制链接]

2

主题

19

回帖

158

积分

注册会员

积分
158
发表于 2015-12-3 13:55:58 | 显示全部楼层 |阅读模式

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

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

×
UG二次开发问题:我在建模环境下用UF_UI_select_with_single_dialog()没问题,在工程图模式下用UF_UI_select_with_single_dialog()却选不中点线面,是什么原因??困挠了好多天,请大神帮忙解决一下,非常感谢。……! S: f2 j1 U- U' k! Q9 C
        tag_t object,view;
/ X6 [9 D. w9 f; g  G- A& A. s: z        char cue[] = "select object ";
$ e" p" ?" C* `, W( d" ?        int scope = UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY,UF_UI_SEL_SCOPE_WORK_PART" W1 y* m4 e3 ~
        char part_fspec [ MAX_FSPEC_SIZE+1 ];
# q9 Z$ `1 l( n! v; W  E        int  response;0 S* i/ }0 o. `, g" Y/ c
        double cursor[3];
# C0 }3 j, Z9 l- J# [        tag_t part_tag;1 R7 Z- X+ N: K1 h! h9 p1 \# R- b
        CString infro;. {; O0 m0 y' a/ j* T  C
/ v0 p! d3 `! w8 |+ ~
        UF_UI_select_with_single_dialog(cue,"select the edge",scope, UF_UI_sel_edge, NULL, &response, &object, cursor, &view );
5 U- T: H( f( ~8 y9 M        if (response == UF_UI_OBJECT_SELECTED ||
/ K+ r8 s; o" {4 I) z                response == UF_UI_OBJECT_SELECTED_BY_NAME)) Z; ]+ x4 \1 c( E; G
        {
* w  {+ {) ^9 G$ f; \3 \                UF_DISP_set_highlight(object,0);
- d; I, W7 r; @5 c8 n# p' n: ^                UF_MODL_update();
6 w5 {4 R% V' ~! y3 J3 q# j        }+ G. J* a3 N$ e- G2 C
static int UF_UI_sel_edge(UF_UI_selection_p_t select, void * user_data), U6 l0 Q0 w0 v- H
{  
8 H# X2 e* t2 W( H        UF_UI_mask_t  mask_triples[] = {UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE};
4 K. L  v5 S, T6 V        if (UF_CALL(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,1,mask_triples))==0)6 G! a; s" ^* `& T4 i: t0 \7 t; V
        {+ l- ^4 }6 ~2 E; j: g2 e6 `
                return (UF_UI_SEL_SUCCESS);
7 Y$ ~  o' G) {7 y$ G& z8 p" F        }
# `8 R* t8 a& r' w/ D4 q* K        else: G" ~$ C; C- L, l' ^8 z2 C5 N
        {! f! r4 s' A$ s7 ?  K: y* Y$ q
                return (UF_UI_SEL_FAILURE);
) K' {& D' ~/ b! x" w: h/ M        }
3 V/ U& h1 v! h- D" I}. x! E7 j, I* w( N0 I+ t6 ~) x

8 h; Q" c' W; U+ n
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

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;( H+ T9 @& @5 L4 w2 h
UF_UI_ask_cursor_view(&viewview);//获得你选择的视图范围类型0 = Any view,1 = Work view
( K7 q0 O: J/ @) W7 K3 R; T1 Z4 s/ t7 I3 j+ V+ F
( ]5 Y; }2 o; Y  C6 P: s( r
UF_UI_set_cursor_view(0);//可以选择“图纸上视图”里的对象
9 ?' X) G( L: E9 r. X/ uUF_UI_set_cursor_view(1);//可以选择“工作视图”里的对象+ Y" h* ~8 W' N8 ~, T$ ^

6 q; Q! B7 i' P3 v: p9 h8 c' {————————————————————————————————————————* ^7 B* M+ p6 d; o* N& \% W
列子选择视图里的直线边缘
! d; t. J& r- A' W
2 O$ U3 e0 ~2 J) `) |) A+ l  h#include <uf_drf.h>) u" n& s  v5 [* V6 [
#include <uf_obj.h>
6 e7 R5 x' Q5 Z1 W; u#include <uf_curve.h>
/ ~  O8 p3 c0 D8 \( h: ^#include <uf_csys.h>' a' l: X0 w! u  q- ~& }' s- |
#include <uf_modl.h>
) e6 j) x, |2 I) [4 J$ m
1 [$ @: y. {% V6 f& Q9 W6 F( h! h8 M2 O2 ?6 s5 F
//设置选择的实体类型
% F  |4 z3 C3 U: Q: H# h7 ystatic int init_proc( UF_UI_selection_p_t select, void *user_data )( A* H6 @' p7 S1 A3 O& [
{/ F5 Q  v3 P5 m- K
  int  errorCode   = 0;
; [  H. u- |+ U+ s, v5 i( F" f1 Y9 w0 }# I
  int  num_triples = 1; //选择类型数量
+ V5 _8 h- h& z  UF_UI_mask_t mask_triples[] = {UF_solid_type,UF_solid_edge_subtype,2};//选择类型
; ]' p$ a6 [2 v5 m  |/ m2 s: _9 g1 K4 C& V$ A
/** @* S1 c/ D' ?2 C6 c
UF_UI_SEL_MASK_ENABLE_ALL 所有面具类型. ^) B& n& Y0 b
UF_UI_SEL_MASK_ENABLE_SPECIFIC  面具使特定的: r* m! B8 ^9 ?0 d$ ?! ~
UF_UI_SEL_MASK_DISABLE_SPECIFIC 面具禁用特定
( X9 h, |4 {8 ?' iUF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC 面具清晰和启用特定
3 Z" G+ [& s( l& {UF_UI_SEL_MASK_ALL_AND_DISABLE_SPECIFIC 面具和禁用特定- ]# K+ a4 Q2 ]6 h) W8 F
*/
9 y9 i4 y3 L: l, ierrorCode = UF_UI_set_sel_mask(select, 2 I: N3 d0 V$ g& f
                                UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,9 e+ N( ^, b4 \8 Q
                                                           num_triples, mask_triples);( p$ v) Q0 J- y. P. l, T8 @
if( errorCode == 0)
" p! i0 ?" h' z2 ^+ x{
& P7 n8 X% B* e: c' \6 N  areturn UF_UI_SEL_SUCCESS;3 F* ]% j. R! K( K# Y
}. ^- N# ]4 U; {4 s2 m% F% a' M
else
+ N  u8 N5 i4 b{
/ K1 E9 r. N7 t" S return UF_UI_SEL_FAILURE;& y! c, M/ v% _
}
/ ?( [5 L) z6 _2 Q$ l8 }}) C2 e6 D! W  g0 e+ `0 M8 u

* S4 P0 p) `& C# y6 J# k
% ?6 e7 j$ s* T, t, }2 c' t* a' r! M9 T! d
  /* TODO: Add your application code here */7 T: c5 O' {. m1 I/ B, i# W( {
) D; S; X6 o' [* \8 Y& _
  char *message="梅雷提示!请选择视图边缘。";
' N/ B: S9 u' j( a2 ~  char *title="梅雷-QQ1821117007";/ g' w$ l; c2 i/ J! H% l
  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//选取范围
9 g8 E# Y8 o' b% ?2 ^1 P  /*
5 \. m( X# {' f% b1 i* W& v3 e   scope=UF_UI_SEL_SCOPE_NO_CHANGE;         //选取范围没有变化& y( X7 K( A: _+ ^7 i
   scope=UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;   //选取范围在组装) Z4 ?+ }; t! S+ O1 H2 c5 m3 ]( X
   scope=UF_UI_SEL_SCOPE_WORK_PART;         //选取范围是工作部分
: J. y& r) j6 i0 D' u   scope=UF_UI_SEL_SCOPE_WORK_PART_AND_OCC; //选取范围是工作部分和OCC
: j/ e: B0 U" }* o  */
- F& |: {' h* ?, n/ [; uint  response;5 O: ]3 t4 J* W1 k) E& d9 l
tag_t object_tag;% Z; ~! P% U3 A$ o7 k$ Z
double  cursor[3]={0.0};! L" @; y$ Z) s* {3 H
tag_t view=NULL_TAG;
8 Y( R0 P0 g6 A+ e  ]! U  V" Y- L3 P
UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM);加锁
% V" i, {& M* ]9 K  K  i1 [! vUF_UI_set_cursor_view(0);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
* ?, F9 i3 \8 w3 iUF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框】9 S2 N0 U* g4 f* {* g( T( x
UF_UI_set_cursor_view(1);//0 = Any view,1 = Work view (0可以选择“图纸上视图”里的对象)
( ]( [2 `" S+ ~2 yUF_DISP_set_highlight(object_tag,0); //1高亮显示 0不高亮显示7 @: W& b+ M& s2 N
UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);//解锁7 o! z; d" e* B; c9 i3 e7 R' y& c
. L2 D/ g" y: E' {8 Q% M3 b2 l7 b& D
% S4 u: a) c" l* r& X
if (response==UF_UI_OBJECT_SELECTED)
0 s# D# j, b- y{
( f5 R+ ]; o9 T" F4 m  char view_name[132]="";  d+ k' [. Q: {, j# e3 a  c0 S
  UF_OBJ_ask_name(view, view_name); //获得视图名称3 E  b4 E" K" }
  uc1601(view_name,1);
7 W% H4 y) ^4 E2 E# [, M}  ?- |2 q5 r4 [
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部