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

[二次开发源码] NX二次开发源码分享: 获取当前Reference Component的通用方法

[复制链接]

2018-1-10 17:48:41 2289 0

admin 发表于 2018-1-10 17:48:41 |阅读模式

admin 楼主

2018-1-10 17:48:41

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

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

x

; s. W: S6 J; t9 w, F1 I, P: p0 R/ g$ N/ O! q' q
NX二次开发源码分享: 获取当前Reference Component的通用方法& c5 C+ w7 a0 P3 t

, ~" h/ Q9 [: d4 g" i
/ w# E1 |( o9 K* F
3 H6 ^) S9 M$ R2 v+ S: g, F: P
/ `; a( h0 M3 x, N
' j4 ~# ~# d$ y2 `[mw_shl_code=c,true]static logical attribute_exists(Component cmpnt, char *title)
4 u7 k0 l" f8 y, u{
9 w/ D3 m/ J% P5 {9 Q1 \' e( U8 P# t  M. Y$ m$ y
//  The traditional method of asking for all of the components recursively//  does not work if you are looking for reference-only components,//  because they are not retured when you ask for the children.////  Also, asking for the AssembliesGeneralPropertiesBuilder.ReferenceComponent //  Property  does not work in versions earlier than NX12.////  The workaround is to cycle for components the old-fashioned way,//  and then ask whether each one has the REFERENCE_COMPONENT attribute.////  If you have multiple occurrences of a given component in the assembly,//  each one will be reported.. o& ]) U0 N1 M4 ~  e) d
   
! E5 ^8 W% e6 s7 i    logical6 \" a. X2 i! W) T5 N0 {6 X
        hasRefAttr = FALSE;7 H  E* M) L. l! |% r
" s: y+ g3 }1 o7 U1 V
    hasRefAttr = cmpnt.HasUserAttribute(RO, NXObject::AttributeTypeAny, -1);- _- s# |9 Z; W/ L/ ?* U6 K
, ]+ x3 m" l* h: [
    if(hasRefAttr == TRUE)
3 M2 Q+ m' X: w1 o% s- O    {
! Q3 H! Q; m9 t3 E        return TRUE;" o4 \0 x" b/ R
    }
+ l0 @4 x8 {' T2 Z) ?. B
4 t7 h* A5 g, P    return FALSE;
6 o. V3 s7 b0 ], V$ I# N1 U. M! w; D1 @$ |& m) I9 [
}
" o# P' S$ D. s" u1 \! T& r  s* h' ~: W: b
static tag_t ask_next_of_type(tag_t part, int type, tag_t object)9 }' Q( t6 c/ |6 O+ K
{0 X5 O. Z+ t: P: g! U
    UF_CALL(UF_OBJ_cycle_objs_in_part(part, type, &object));* R0 `% ]3 A4 u) v% P4 |; _
    return (object);
  R/ g" Y" r" D6 N4 R3 l+ C4 ]}
+ a+ T: y3 F1 `1 a
9 \/ s9 X' T: u/ h7 Jstatic void do_it(void). x; H, `6 S: |" L8 D
{9 R/ m: a: y9 O9 c; w3 Q
    // Assumes that the display part is the top of the assembly: q: A( v$ ~0 j) `( U5 C' W" h. H

0 y! |  L- f8 L) i    tag_t$ a$ \. U0 j# v) X- @9 a
        dispPart = UF_PART_ask_display_part();
" \# b& y7 T8 ~
& s0 z# C* I: z+ _$ r. K    if(NULL_TAG == dispPart) ! `0 n( g7 E* |+ W% ]! n
    {
8 e5 a5 q9 s; q2 E& b        ECHO("Program requires an active displayed part");- }9 U+ D* n0 _& T- U" {
        return;1 G* g5 ?* ~7 Z" k0 |8 f
    }
& |  A; }; Z3 P' X& Y
! E3 Z( }% B& [/ @    tag_t
4 z6 X0 Z, j5 |; j/ x        compTag = NULL_TAG;
* h/ |9 T4 l4 M) r* K) M8 s' d. S1 f5 ]5 y9 ]
    while((compTag = ask_next_of_type(dispPart, UF_component_type, compTag)) != NULL_TAG)) M) Z7 N0 v- u9 b7 N' t+ l  ?  B6 j
    {( [* A, Z* Q1 r
        char
! J) p7 ]* L! D' p            msg[512] = {""},
( b* i. Y- c8 o/ _) ]7 n; J# e: l            fSpec[256] = {""};
' |' s8 g8 X  V$ e1 }: r9 F) ]$ V) R0 h
            tag_t
! l; A, B# [  U/ G                protoPart = UF_ASSEM_ask_prototype_of_occ(compTag);% @; L* t( |( @$ c$ \

: Y8 w& w+ A$ l- b; e7 Y            UF_CALL(UF_PART_ask_part_name(protoPart, fSpec));3 F6 ]( C; T2 w/ b, C; D

( p7 q" N  ?6 r; ^6 u; S: s            // uncomment to see all component names:
- A# g  N! b8 E7 S8 N5 P2 L* B. G* ]            //sprintf(msg, "Component Part: %s\n", fSpec);8 d5 e6 l6 O6 M
            //ECHO(msg);
  b8 R$ e4 B* R7 d/ W* G8 i5 ]' c  A  n/ O" @. J, e
            Component *theComponent = (Component *)NXObjectManager::Get(compTag);4 n5 V" m. P* e! }" f% J
            if (attribute_exists(*theComponent, RO))4 ], o% A; A3 l' E) ]/ h2 d
            {
' I& W2 E1 |/ o* Y% J4 i; E  N                sprintf(msg, "**** Reference-Only Component: %s\n", fSpec);$ T6 F1 u2 ~4 |3 p9 J
                ECHO(msg);& n: B4 m3 `0 ?: l- w, r' G7 t
            }
5 Q% s7 U$ l7 ~# }: }  S    }
# Y9 _/ y7 M% Q6 Y' b}[/mw_shl_code]7 A; u6 ?- @. S% k( v
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了