PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[二次开发源码] NX二次开发源码: 装配中选点,并报告父对象

[复制链接]

2013-11-5 17:35:29 5407 1

admin 发表于 2013-11-5 17:34:33 |阅读模式

admin 楼主

2013-11-5 17:34:33

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

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

x
1 M# U3 o; J+ m5 q
NX二次开发源码: 装配中选点,并报告父对象% B( R2 k3 E* W) C, m
  1. ) _( r: B* x. S( c
  2. <P>Option Strict Off; c, c$ {! l+ f4 q! j% V! B
  3. Imports System
    ( U: s" Z7 W/ C1 S2 J7 k+ \1 b; P
  4. Imports NXOpen
    " R5 L* f  Z! t' F  _. D6 ^; f, C. u
  5. Imports NXOpen.UF# ~1 A. V$ S3 ^1 r# ^. R1 y4 C

  6. , q/ h9 N. ~3 [# v4 K8 \
  7. Module Module18 w% H: z1 }6 _/ f1 Q3 L0 v: U

  8. : M: V4 u7 q% ?( `
  9.     Dim theSession As Session = Session.GetSession()
    5 j; P! q5 Y" g# w3 D
  10.     Dim theUI As UI = UI.GetUI(), l4 \2 o7 F& A3 s
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()- c# y5 h# p/ a/ R4 Q$ Q
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    2 Q5 _' ^" S" K: P8 p
  13.     Dim pickedPoint As Point6 V, s# j# |) Y/ c3 ?
  14.     Dim myModelingTolerance As Double6 @: o! y9 D: D) x+ L( q
  15. / J( H/ S; ?& S9 p) U5 ~
  16.     Sub Main()
    : j9 X3 o0 k: [( u) }

  17. 5 @. m- B% o- |1 U. \1 ?, ^& L
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)8 @5 A3 p4 U% i1 H- y
  19. + c! O7 i: r2 v* Q- ]7 A1 \
  20.         Dim workPart As Part = theSession.Parts.Work% N( l% B2 I" N
  21.         lw.Open()
    ( C1 Z0 |) t+ O0 c* F* W* O, ]

  22. / u! v7 u& _) s2 L* o8 M
  23.         Dim myPointTag As Tag
    ! f1 p+ |1 Z; d& y
  24. 6 X5 F5 T7 E) g* R5 s- n
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    4 U# P5 u5 B: B! ~6 M2 }8 j
  26.             Exit Sub. f% _# ~. p/ M" G1 d
  27.         End If; {# y3 e# C/ v

  28. * [, T; ?9 R2 b. J- Q: Y, s9 F3 |
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)* ~$ B% R# f! h( P: L& t! f- |
  30. " |  Q% }$ _4 O
  31.         AskParents(myPointTag)
    ! U. ]9 G; U; U% i' B- a" C  l

  32. # a. Y% d- o' ^% j5 q. w
  33.     End Sub
    . _( C/ T$ x( G" X+ h1 k
  34. 7 T  R# y& M# J+ s+ f
  35.     Sub AskParents(ByVal objTag As Tag)$ B( z% D# z5 L& C- b: s
  36. 8 N6 _! ~' j4 `  a/ m& ~
  37.         Dim n_parents As Integer0 |" V6 I" C% K0 B
  38.         Dim parentTags As Tag()2 r% d+ w+ C2 g, _1 `; _
  39.         Dim myPoint As Point# d" U' I% F8 J6 K, A$ q3 v- I* Z
  40.         Dim myEdge As Edge3 s; X3 a$ x& u, k  F& F$ {8 F+ }
  41.         Dim myXform As Xform
    2 }, g' n: w: _- K& X
  42.         Dim myTaggedObject As TaggedObject
    ) f5 K0 I. r5 L& q
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
    " i( s8 B; T8 |
  44. + B" ~$ [* c( u
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then8 \! X4 d; b8 B. j4 b" V
  46.             myPoint = myTaggedObject
    4 B. ]" m% X) ~+ P% C8 a3 w) G
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)+ ]+ z$ D1 l& w' m
  48.             lw.WriteLine("")
    * m7 i0 T$ G, m1 j: l
  49. - ~3 a- p# _6 ]+ F1 J) K1 m
  50.             Try* T1 f- a% Z8 ]% O, B* h
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    1 D- Y0 L6 V& a2 M. r
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
    ' e3 {* Q+ f& Z$ s# C1 [. b
  53.                 For Each parentTag As Tag In parentTags
    . X/ V( V8 l1 X7 p
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)+ q5 B; i6 ~1 \
  55. ( x5 Y8 D2 Q, ~5 \& \2 O# W& I) L+ B
  56.                     AskParents(parent_object.Tag)# s! A4 Z; k" D" D3 R5 v5 w
  57. " p2 d& o. u9 A) s
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then
    . R9 R1 K! I- t4 C$ O3 j; a
  59.                         myEdge = parent_object
    6 j5 x$ b( D2 W- j* d+ d
  60.                         lw.WriteLine("")
    % b  @' }) k) E3 i" ~6 T, a
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)/ S* ?8 a, b; j7 F8 o
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    9 J9 O1 _0 ]1 s! p+ B; ^4 K" L1 y
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString): y% B2 p. q0 q9 K0 R) F) l3 e" C

  64. & d* i% T5 Q9 W
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag
    6 B) Z$ P- w0 z- k  T! t% g* U" ^
  66.                         Dim occTags() As Tag. g3 M0 a; F& I6 \. E
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
    9 k& D- V/ Z! X* ]
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)5 G+ w# j% V# T! X& W5 x/ d' V& H: D& `
  69.                         For Each temp As Tag In occTags4 M8 v# v  d7 j- L( V2 b/ z
  70.                             Dim myComp As Assemblies.Component, A( N& o# h; \6 w
  71.                             myComp = Utilities.NXObjectManager.Get(temp)0 D/ p! t; `, G7 b, Q& H
  72.                             Dim myCompPos As Point3d
    * C( q* A- @9 |! y9 k, ^5 [
  73.                             Dim myCompOrientation As Matrix3x3. Y# l8 K+ s" x. R
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)7 V+ g5 M, ?# f& Q7 Z' X8 G
  75. ) M# @) W3 S8 x* o! G
  76.                             lw.WriteLine("")3 a& D+ r9 R; N
  77.                             lw.WriteLine("component name: " & myComp.Name)
    . [5 W" ~, C  Q
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    9 D7 ^' f: x- i* C+ I' r( h) `
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    7 R7 X: k' J4 g- \- H7 c0 N3 e$ c8 J
  80. 8 V# O* A" i$ m, `) u
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then  d, b& j3 T" f6 I3 E
  82.                                 lw.WriteLine("** This is the component that was picked **")
    # a2 d, ]# O' C' x& \, z2 o6 }- P1 h
  83.                             End If0 N, d- ~0 _" X# P9 y! Z# p9 |) e5 n
  84. ( N; e. m2 j+ Z8 C& j+ m+ L
  85.                             lw.WriteLine("")6 l7 m7 f- D6 h
  86.                         Next3 @1 A+ x- ]' W1 B7 w

  87. 6 }; _: K- ~& y6 r1 K0 P  i
  88.                         lw.WriteLine("")( t) ^& D2 j/ C5 _  t; P3 F
  89.                     End If
    ( Z3 ]/ _2 n% F, W3 N
  90.                 Next# J4 c! e5 k( W5 u) }  j# m

  91. , V! q. O5 P- ]9 W& x: o+ Y
  92.             CaTCh ex As Exception" `7 [0 O& }- U. f
  93.                 ' NXOpen.NXException: Current object is not smart
    3 h% x  u9 m! o& k; R& y+ p' L
  94.                 lw.WriteLine(" Error: " + ex.Message)* P' a4 z+ y( n" j" K' K! p; s1 S& d
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)$ A8 y2 Y& a) B
  96.             End Try
    5 g4 [8 G; L' r( K' ]

  97. " N! U6 l7 a; n4 p% L1 T: |  v

  98. 4 `  t: Y! W/ [3 }( c7 E8 \5 k
  99.         End If* Q( m0 X2 S+ P/ K) B; p& u# Z
  100. / [% F7 a1 K2 z/ ^* X
  101. 4 U3 m0 v" {* h4 T
  102.     End Sub  Q6 t* ~1 t2 \. ~8 |
  103. 0 m. f; r3 C1 v" R1 N! e
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer- f9 u; P4 @' b* [- `

  105. 0 ?4 S2 D) R; v. Q5 I$ M/ d
  106.         Dim base_pt As Double() = New Double(2) {}3 u, l  K; w; n) V, G* a4 ?
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null0 Y) h( ]$ p) W- J% E
  108.         Dim response As Integer = 0
    ! K, P# [. C7 H
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    4 p( q. G6 A3 `2 C3 K. K- @

  110. + i5 e' I8 b5 K6 ]
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)5 L; f6 L- ^$ B+ Q6 G0 Q, r
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    0 w+ |# e# H' Q  d6 Y4 q
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)2 C: m' f3 ~4 q( A2 z6 V
  114. - D. v' f. e- v. t& M
  115.         Dim pointLocation As Point3d
    9 Y/ H: P9 c* U) |$ Q6 y( G5 v
  116.         pointLocation.X = base_pt(0)
    & [( R1 h% }! ^
  117.         pointLocation.Y = base_pt(1)$ G. W9 w& t7 x" n5 d
  118.         pointLocation.Z = base_pt(2)
    : M$ r4 P+ W9 K4 T5 g) w
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)
    ! }8 K4 s! n: T# A# ^
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    ' ?4 k: n! g5 b# p2 j1 ?. J
  121. 8 |* d& D# ~% E' y) U
  122.         Return response0 }/ D& u0 Y. s/ s1 B5 d3 Q: m
  123. & s& k* e4 k1 T7 b/ M- y
  124.     End Function
    $ s2 U4 P4 D7 ~0 _6 k' o  y" z1 Y

  125. , h2 i' X" a' z$ z1 N9 g
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response
    6 Z% ~( N" [* N0 Y, x% y
  127. % f& n% K2 t, G
  128.         Dim selObj As TaggedObject
    ' x) W0 e3 g- `8 U, |
  129.         Dim theUI As UI = UI.GetUI) ~9 R; _* U! S! B  o7 e
  130.         Dim title As String = "Select a Point"; h1 h3 a. q+ E( H
  131.         Dim includeFeatures As Boolean = False
    $ @3 x0 H: b$ v/ ~# P7 k; f
  132.         Dim keepHighlighted As Boolean = False
    0 F2 O6 U" _. V8 n- R
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific: }& d4 a$ E/ k9 ]; ]! a
  134.         Dim cursor As Point3d
    2 U& x+ h, l4 `2 G! g$ M
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly  `( k9 I+ ]4 ?3 S1 m6 S
  136.         Dim selectionMask_array(0) As Selection.MaskTriple% r$ Z# a) T+ M; r

  137. 4 N, o/ c; }. Y& F4 T
  138.         With selectionMask_array(0)
    * ^; z0 F% z2 A  o/ ?- {
  139.             .Type = UFConstants.UF_point_type
    % v% m' W* Q2 X& [' ~
  140.             .Subtype = UFConstants.UF_all_subtype
    7 f1 _  f* V$ O7 }
  141.         End With
    ; m# Q  a" W" b+ E' w. l6 v* |  C1 P
  142.   q& X6 p% ^1 Q; x- R2 i# E6 z0 y
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    % w1 \, k/ T6 c# H
  144.          title, scope, selAction, _
    " K7 P/ r* a' B5 c& }" H" Q0 z
  145.          includeFeatures, keepHighlighted, selectionMask_array, _. T& {* p. {7 U3 [  s
  146.          selobj, cursor)0 r7 O2 B2 `% w' V
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then6 U9 h0 b1 [. ~, w8 a5 {% ~0 |. C. f
  148.             selPoint = selObj
    $ X7 Q/ C! [: @# j
  149.             Return Selection.Response.Ok
    % t4 I8 Z& z2 q/ F# D  ]
  150.         Else
    . T: U5 C' I9 n% r
  151.             Return Selection.Response.Cancel( d8 A$ B" M/ h; N! s! Y
  152.         End If  H$ A1 s/ b' _" I/ N+ g5 `: E

  153. 3 L/ K% x: u( T$ C. p
  154.     End Function/ f# V  Z/ O: Y7 b1 r
  155. ' j! H8 @; J2 F8 r4 h" w# |& a
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double! X. v9 ?1 ^, i. {
  157. ' r0 U' v$ d5 S# L8 h% W
  158.         Dim result As Double7 T, s. H2 y6 z8 Y

  159. ( N. l( }* C( J7 U: |" Z
  160.         Try
    ( d! N/ U; s0 Y8 n* j: e1 w' d
  161.             Dim nullNXObject As NXObject = Nothing$ |2 f0 p7 b: [9 v+ s
  162. % G0 Q3 H$ C. ^3 R2 _) G! L
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder: e% t; ^- H" d$ M+ Y0 P  L* x
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)
    ( V; R2 d1 m7 U+ e& L0 w5 _
  165. 9 E/ m+ O+ G  p1 `
  166.             measureDistanceBuilder1.InfoWindow = False+ B4 K& j" V: c$ A& m# y

  167. 1 c& I- g- R3 j6 L& e9 y
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    , r3 ^) i7 F7 A& `

  169. 5 i" M6 _8 \' f" w
  170.             Dim nullUnit As Unit = Nothing* r7 |# |  w+ ~7 i

  171. $ ]0 F( l; s6 I2 A5 h
  172.             Dim measureDistance1 As MeasureDistance
    , n7 k/ r: }# u* s/ Q& u
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)
    " O* d; `' _* {
  174. 7 p7 ^' {1 _- Z
  175.             result = measureDistance1.Value
    3 j3 p1 A# T8 x' ^& |3 B! l
  176. # k( v9 a) j  l
  177.             'measureDistance1.Information()
    . j9 q9 a, P' g8 u- c2 X" Y& p4 @5 j
  178.   W* O4 @0 m3 G; F7 O0 u1 h
  179.             measureDistance1.Dispose()
    4 O# A/ ^' O6 z/ o7 {$ E, |2 X4 K2 Z

  180. , J  G8 t, M( `' H
  181.         Catch ex As NXException5 s4 g: ?- w3 [  ^9 C& U5 ?
  182.             MsgBox(ex.Message)3 w& a8 ^2 |6 x
  183.             Return Nothing
    " d/ w  ~8 ~; e& q& @2 i. ^

  184. + ~$ ]/ `1 h( d7 u1 h, d; K# G
  185.         End Try
    & ~# ?9 e  X; e  l+ D! w

  186. # j: P+ A4 v" r& r

  187. " F4 `* a4 J' J2 z) z
  188.         Return result: f0 M# t" k( t7 O( F

  189. 4 m( |- P" z  ]6 }1 O7 W
  190.     End Function! p" l( \* S' a0 [3 l7 g
  191. 7 \" S6 a3 E: Z" ~( t% Q4 [: s! T' e
  192. 4 V+ o; B# s6 }
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer- e1 h6 j4 Q/ B; l1 K7 J5 E

  194. ) ?6 X% H. ^/ e; j# ^
  195.         'Unloads the image when the NX session terminates
    . X2 W4 ^5 C( Q% V( g6 z( Q
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination0 {8 n* l2 b7 }% X, w2 j

  197. / v. t! s5 s' `, ~
  198.     End Function! Z+ z4 _4 i' S: g

  199. 6 e6 O% P" n& S" q1 J
  200. End Module
    ' h* t! ?7 b9 ], ~2 x( P
  201. </P>
复制代码

; E1 [  z9 J' p; n/ m, O% {! C- I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2013-11-5 17:35:29

admin 沙发

2013-11-5 17:35:29

直接 跑下 Journal 就可以看结果了
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了