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 5427 1

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

admin 楼主

2013-11-5 17:34:33

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

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

x
9 g4 R) b/ R' i  o; ?5 X6 o/ S
NX二次开发源码: 装配中选点,并报告父对象
- h  w$ l* v. o8 z. v4 e

  1. 3 n% a8 R8 O& o, [" [% |* e
  2. <P>Option Strict Off: Y% t0 k. N9 y9 Z3 U6 M' @# g. F
  3. Imports System/ {5 z, z  D6 B% X$ K* h0 r- o; l
  4. Imports NXOpen2 R3 ?0 ]" j$ R- |
  5. Imports NXOpen.UF
    0 b/ W- n! Z8 O, m! p) B. P

  6. 6 q, ]8 l6 b# H/ k6 V  x  V* C
  7. Module Module1
      n/ e* q4 \/ I5 }

  8. 0 W( ?& v, s* c8 z* W/ c, e3 a
  9.     Dim theSession As Session = Session.GetSession()
    9 E, v3 J! J& d* Q# F
  10.     Dim theUI As UI = UI.GetUI()
    " C+ ~! x) G2 n' o% K! Z
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    1 s/ U2 |& L  d; e! h" {
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    * l3 B4 c7 c, T: n: c8 a
  13.     Dim pickedPoint As Point
    6 p, b6 c3 y4 Z, A, j
  14.     Dim myModelingTolerance As Double
    4 m+ J' t0 k) a1 z' |) i
  15.   J& b8 `' m) h( X4 N
  16.     Sub Main()* J8 [) f1 _: s
  17. / E0 e$ y: B* B* ?! i7 A& y
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)- w6 x" l; f9 \( m

  19. ' l/ W* S8 b7 o+ [
  20.         Dim workPart As Part = theSession.Parts.Work
    0 x9 M! V# ~4 \7 o. x& G
  21.         lw.Open()# s1 E/ u7 y0 x! ?5 M

  22. 3 a5 Q* w% J/ s# W4 l
  23.         Dim myPointTag As Tag
    ) v% j- H, h* B

  24. ' E  \3 H) t9 L- C( t
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then) e9 B0 n! L% r2 C8 _
  26.             Exit Sub) p" G, G& W6 g
  27.         End If
    4 K$ W2 H; K+ j: M) @

  28. 0 [+ w( _5 C% X7 t. M! {2 I: k
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    % {+ y1 ], D! b  O
  30. / c) E: K' @" i/ S
  31.         AskParents(myPointTag)7 N$ w/ B) C' ]) `+ S  r4 l

  32. ) C3 I% s3 O6 c' `; ~; R
  33.     End Sub
    , \/ n) p# a- c& ~: y) g5 u

  34. % Y+ E" _' T3 \6 O6 n7 y7 E
  35.     Sub AskParents(ByVal objTag As Tag)
    1 }& C* S& O1 g! t# g

  36. 1 E. L# c: G& [& n& ]
  37.         Dim n_parents As Integer
    1 T/ F$ d4 [6 m3 u2 [! d3 D$ F% Q
  38.         Dim parentTags As Tag()+ T' h# w' w% J+ v8 S
  39.         Dim myPoint As Point
      w1 g: ]: P8 ~- C+ X/ e+ Y8 j% V7 P
  40.         Dim myEdge As Edge, Q+ F) [" x7 h5 Q1 A  `
  41.         Dim myXform As Xform
    5 i8 k, K( U" H  ]! Y
  42.         Dim myTaggedObject As TaggedObject. E, W3 I% d7 k+ j: w# K5 N
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
    1 |- {8 U$ C$ A9 X  B. I# g
  44. 0 ^% }: R' c6 e1 C: s
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then+ P6 v' U8 D8 [$ d1 g; G
  46.             myPoint = myTaggedObject) Y5 y* Q4 Q' \/ p* }
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
    1 h. i% Q4 c/ ?; L+ f' f; m
  48.             lw.WriteLine("")9 [" L: y4 m% C6 A

  49. # r$ S( w3 ^( ~6 ]. u
  50.             Try, l5 N" A3 L# f- t" }
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    8 q9 \. f7 M( {1 S! O
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
    6 A$ h1 L) _8 s: K
  53.                 For Each parentTag As Tag In parentTags5 r! |1 `- K  \# k
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
    ( z( q, G4 }4 ?# e/ K3 S

  55. $ r+ y' F' ?* A, X- P! P
  56.                     AskParents(parent_object.Tag)
    4 {" p' g7 c& w" n

  57. 0 H: m4 v( L5 q
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then# m2 y2 H7 ~* c4 i! k( E" ~$ v
  59.                         myEdge = parent_object
    ( l$ q; M6 D  U
  60.                         lw.WriteLine("")
    ; c( ?- X6 ^8 E2 o
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)
    ( P$ a2 r) x. ^2 M  x% [: X
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    & [; w9 ^# W# B# x
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)7 K& k8 g+ \9 N% \7 L2 p
  64. 6 S* V+ @! ?: S
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag/ Q# H; Y( r5 W' c2 D3 P
  66.                         Dim occTags() As Tag, r) K! h3 a% E9 k3 s7 B" @
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)' j! I- J) J3 }0 Y8 K; y
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)
    ( S0 [$ L  Z) g( k( T8 \, u' F
  69.                         For Each temp As Tag In occTags& u( F1 `, z! {6 E" G4 X6 ]! L5 |( m+ r
  70.                             Dim myComp As Assemblies.Component
    4 m- m% H+ e$ K# ^* ?* C5 I
  71.                             myComp = Utilities.NXObjectManager.Get(temp); P: T+ O( k* m5 B1 Y6 l3 C$ f0 Z$ Z
  72.                             Dim myCompPos As Point3d
    ) D" s- X. w; [8 t
  73.                             Dim myCompOrientation As Matrix3x3
    3 a# i7 r( |7 t  k% R
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    % E$ }9 N8 W7 b: J
  75. 4 B) z5 F( o8 A' Z  n* Z
  76.                             lw.WriteLine("")
    8 ^6 s' `  Q" P* e" g4 C1 }
  77.                             lw.WriteLine("component name: " & myComp.Name)
    ( r4 }8 @5 Q8 \: ^. @
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    , @; L& w7 R$ t
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    3 n5 ?4 L. \0 T- `3 `
  80. 1 k) }0 ?7 c7 U  x) g  T) q; J, q8 C3 g
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then
    8 {' [3 T; C( f8 o! o
  82.                                 lw.WriteLine("** This is the component that was picked **")" b/ ]' _- i* d$ C8 u$ `
  83.                             End If  A- V- u; t8 G3 L* C( w# b8 h
  84. 8 k) d3 _: y4 I" V9 ^8 D, W
  85.                             lw.WriteLine("")
    3 j; q# F. E6 c: L7 S3 A7 P
  86.                         Next
    0 v. h. \! t( a& G
  87. : u0 b7 U& X6 ~0 t' a: }# B
  88.                         lw.WriteLine("")1 ^. l9 y8 Z0 u0 p& e7 c+ _
  89.                     End If
    # i# P3 }; {* u6 X/ u4 v' q6 b
  90.                 Next
    1 \2 I* _: q: X# t. M  z. T

  91. * x1 t) a+ a1 q; ~  Y% O
  92.             CaTCh ex As Exception+ e$ O2 s; i9 v, M) Z
  93.                 ' NXOpen.NXException: Current object is not smart
    6 y, I3 \: W4 _- f; J; E! y
  94.                 lw.WriteLine(" Error: " + ex.Message)
    + X9 P  p9 N4 q1 E
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    $ O2 N! B3 p; U7 A9 q' F
  96.             End Try, g/ ]( Z( W+ z8 {, D' n9 L" K
  97. 9 v" K8 m0 z7 S9 X7 [( l
  98. 1 m# H' G9 U9 V% \- z
  99.         End If
    . e. J) u" _9 N3 P0 l

  100. & r. {- @/ h5 C% ^# C9 W

  101. + B6 v( n* F2 B, h* S) ?5 R9 ?
  102.     End Sub
    & q" j3 a( a+ P) J3 u' q& F( X
  103. $ |4 W; t# R: c, t: V  f
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer7 P& o2 t5 T% _: r" p
  105. " G$ X6 ^* ]0 Y% |
  106.         Dim base_pt As Double() = New Double(2) {}+ A% b' M9 u7 C0 G
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null
    & |$ V. C8 ^6 B0 |% y# V7 b
  108.         Dim response As Integer = 0
    & n) h( @$ X) Y% D/ ?3 F; Y
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    * B! @. G& t2 P1 v5 e0 p
  110.   p1 V# y: a3 e6 B5 ~" W4 F
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    3 ?% _0 `* M, F' A
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)( B! w9 J% G. m
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    " T+ R5 b) X: M% Y$ _

  114. : _: G! E- y0 D# B6 ?
  115.         Dim pointLocation As Point3d" `( O4 R! q6 Z$ |2 U+ h0 p0 B& |# T
  116.         pointLocation.X = base_pt(0)  {8 B' X9 W% t- ^" P
  117.         pointLocation.Y = base_pt(1)2 |. W9 m) t8 w' b7 q1 n+ h0 O: e
  118.         pointLocation.Z = base_pt(2)& i6 q& R8 E: ~
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)
    9 F. Q! c/ S1 b; F
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)6 v8 {% `/ q5 c6 l; L  }

  121. - B' ~4 ?2 x$ P( ]. y
  122.         Return response1 d8 Q! a# A$ x9 p+ o' V
  123. 0 F/ t1 h6 W+ n
  124.     End Function9 c; u4 S( E, _
  125. ! ^# A, O2 @: f9 t5 p8 F$ Z2 M
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response
    , s2 Z/ l# G8 j1 @1 g  q1 Z

  127. 1 g6 S$ n+ s! _3 L6 ^: |
  128.         Dim selObj As TaggedObject
    $ Y; [" K8 P9 g. c$ X2 J4 ^
  129.         Dim theUI As UI = UI.GetUI
    / P* V0 x" i6 K
  130.         Dim title As String = "Select a Point"
    ' ^" ~- V0 j; C1 F0 h% ^
  131.         Dim includeFeatures As Boolean = False
    4 T# Z# y# I0 n2 Y# _0 q3 F$ n
  132.         Dim keepHighlighted As Boolean = False$ C0 ^6 c, @& F9 h- K7 @
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    ( q7 C0 ?; b8 F5 q: h
  134.         Dim cursor As Point3d
    8 \8 Q1 h! L5 W3 H' P
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    7 A! N. D5 Y: x: t* E5 M! E1 K
  136.         Dim selectionMask_array(0) As Selection.MaskTriple' I7 X( W$ F  j4 [1 v

  137. * l  L( X0 W9 I( k7 @
  138.         With selectionMask_array(0)$ Z! Z; {- @! O3 j; X4 ~# _
  139.             .Type = UFConstants.UF_point_type
    & y; _7 ]3 b. O+ N7 l- `) v
  140.             .Subtype = UFConstants.UF_all_subtype6 S8 V; P% v7 K' n3 y4 j7 g
  141.         End With0 R; L1 p: N" W! K4 ^5 O% J7 t

  142. & ^$ m( B$ n2 k! C
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    . x) G7 A  d8 w7 j9 U9 d9 z
  144.          title, scope, selAction, _
    5 o7 `. W& K2 n( [% z, I
  145.          includeFeatures, keepHighlighted, selectionMask_array, _4 l$ l4 q; F0 _) I
  146.          selobj, cursor)
    5 L- P. A( b3 d# l
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
    % G4 O& Q0 t3 e! j
  148.             selPoint = selObj
    . v9 b( R: I& f( ]/ c
  149.             Return Selection.Response.Ok
    / R: J9 j. `) r- g. |
  150.         Else: K! j! q; N! R1 n, w4 K: C0 V5 y
  151.             Return Selection.Response.Cancel
    7 S- U7 \( L" V2 E9 {
  152.         End If
    ) U% i0 y2 r( a1 @) v& w7 @7 ^5 M
  153. 6 }6 @8 x) m2 W- A" i
  154.     End Function" c( s3 }& f) ?# T  z' N" t
  155. $ i4 g) o6 O& i( ]: J
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double' v2 P) g- W, Z5 [

  157. ) N6 ~! w+ c/ S: m7 k
  158.         Dim result As Double4 k, @8 X2 r; i( X
  159. 4 x( ~) W2 P. U; |  k
  160.         Try
    - _- G8 R9 P. z7 m7 Q
  161.             Dim nullNXObject As NXObject = Nothing3 l# k8 M  v! F7 G. f
  162. ) M" D2 f$ c% j4 `/ i6 ]
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder
    6 {4 w! L/ Z) W, |  ^) v- {" i
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)7 D* G% h1 Y( m. M8 Y, O5 D
  165. : |* h- N0 a7 |) i% d: m) a
  166.             measureDistanceBuilder1.InfoWindow = False# \5 F% ~* _& p+ I+ U

  167. & F9 P$ |* u* [/ ?5 \
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    ! f& ?  g$ t; e1 V' X- b# g
  169. . ^0 ^" _: e( Q$ S
  170.             Dim nullUnit As Unit = Nothing5 k6 V& S0 Y8 O9 O+ i+ {

  171. ! m2 K. }& J8 \7 e6 N
  172.             Dim measureDistance1 As MeasureDistance
    * |7 K& l- O- e0 U  X
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)
    & |4 g7 i% c. x% F' x

  174.   d- W; ?) a& M) d& u
  175.             result = measureDistance1.Value
    7 W# ^7 v  b- {0 z1 @

  176. 5 B# l3 I% Z9 P. r6 N; O1 ]
  177.             'measureDistance1.Information()
    3 j* k( ^# \: [) W% b

  178. . i$ t- t, {3 I+ q+ L
  179.             measureDistance1.Dispose()8 {5 R' y! F2 t5 s

  180. - B) F% c. j* `* i0 K8 S
  181.         Catch ex As NXException
    7 F- |+ F5 W; i0 u
  182.             MsgBox(ex.Message)) i6 C! s0 w* Z7 E$ d
  183.             Return Nothing
    3 H( F8 n1 D5 }+ R) C: K8 p
  184. % @  _8 y* M% V
  185.         End Try1 z/ X0 N7 L  y  _" {" K: E  A: A

  186. 4 \3 H# A( _8 a$ O! _
  187. 3 u. P) _  V- q5 Y+ N
  188.         Return result: O5 l4 K+ [& _
  189.   G1 X3 W3 [1 s/ Q9 ?! V0 P& H2 Y9 a
  190.     End Function& B# _1 c: s* Q) E1 k) O0 @2 l

  191. 5 |; l4 l7 G8 j7 q5 \4 b6 n& H& o$ x

  192. , n+ z, C- A: F; \5 J
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer& \; A- l8 V9 L+ r' q- C

  194. 9 ?  K  o; A, a' J6 U
  195.         'Unloads the image when the NX session terminates
    3 S. @" c- s# `4 e: o+ K- z
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination& J6 K% \7 a" m' q6 |
  197. 5 v% i% H9 B# o5 D
  198.     End Function
    8 I, c/ \- |' X2 i" d
  199. 8 H! z. _2 f9 Y( z: m4 b4 ?
  200. End Module
    9 K4 Q, b& w2 E& q
  201. </P>
复制代码
$ R" ?, v$ ~9 \. W; l" ]% k, }( W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了