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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

) p& h$ N4 N- K) N& r5 b4 vNX二次开发源码: 装配中选点,并报告父对象+ |/ a9 N! w7 v! x- U
  1. / X- |% s$ L: w8 \
  2. <P>Option Strict Off
    0 N+ c5 h& f+ P2 U7 |' d: _
  3. Imports System/ H; H; q' i& x0 @
  4. Imports NXOpen
    ( m1 L( A# s: O! B/ \
  5. Imports NXOpen.UF) a* X. o- J5 O: u# `8 r! V
  6. " L6 h- B" F( ^: _5 ~
  7. Module Module1
    : V6 e* [& m: P- P( f
  8.   v/ x6 n3 V# u) h
  9.     Dim theSession As Session = Session.GetSession()4 @  ]# P7 _' O% E9 s- x
  10.     Dim theUI As UI = UI.GetUI()
    0 q! Z: k$ R5 K) m/ k
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()/ p2 \' y3 @+ {' p/ a
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    ; A/ t  H% k8 A- o# b
  13.     Dim pickedPoint As Point
    * S1 E! p+ L3 |' l6 [. @: I- A$ t
  14.     Dim myModelingTolerance As Double2 ^, V/ o% g1 z: r

  15. 3 S0 w/ d* V% U0 |% S1 A; @# p( L
  16.     Sub Main()
    # X( b7 O4 ~3 q3 i
  17. # F1 F9 m* y$ @: T& m& l- U; r
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
    ( p9 t* n+ \$ i( V4 X! L! O+ M' |" k

  19. $ }3 L% C- f! h+ e
  20.         Dim workPart As Part = theSession.Parts.Work
    2 F% \8 _: `# \  w. F: T2 b
  21.         lw.Open()
    # G  c9 O/ ~& W8 ]& ^

  22. , Y; R; l- ]9 j: P
  23.         Dim myPointTag As Tag
    3 [+ u( Y/ h0 T5 d
  24. 7 b8 U/ Y  n( }' B& Z/ z; U$ ]
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then8 U" ^! B, r" s8 ]4 N3 X6 Z4 S
  26.             Exit Sub
    * S* i# l$ [8 w; P4 j6 @6 X" k2 b
  27.         End If
    * B& j0 ]1 S& E5 d* G
  28. $ r3 a) ^" y5 u" K' L$ z
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    # h9 v  p9 f6 G$ ~5 Y3 G  `
  30. % G+ @, w% a, D; n2 q5 d) [
  31.         AskParents(myPointTag)) U7 S; r7 ]& ~

  32. 0 S" \) N6 I5 l! X- M
  33.     End Sub
    * Y! x" B# v( a. f2 e# s: [

  34. , K7 X" J0 ?( ?: E+ C& n# S/ S
  35.     Sub AskParents(ByVal objTag As Tag)
    9 X. P" _6 ]( D7 h; E7 k! {! `
  36. % B9 x, S( G0 {5 b( y: F5 J7 E! b
  37.         Dim n_parents As Integer7 H5 \5 O4 Q- I4 S7 [8 }
  38.         Dim parentTags As Tag()4 k; G+ A' f/ {- w* k
  39.         Dim myPoint As Point
    1 ?/ Q) S: D, m! ^5 t, @- K  o
  40.         Dim myEdge As Edge$ n4 L# i3 |4 m
  41.         Dim myXform As Xform, ?3 I, V" x1 a7 q
  42.         Dim myTaggedObject As TaggedObject
    : g6 \! Z4 N- @+ c* j- N
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)1 \( }2 b( m! z' L: Y, U1 X
  44.   `2 K! p8 {% u$ X: j+ r/ c: q
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then
    " c& Y1 U% D& f8 g1 l. v* Y
  46.             myPoint = myTaggedObject' U( c. K0 N, ~. i1 E7 b& Z- M
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
    , M& e5 w1 D% v5 v/ V7 l% g
  48.             lw.WriteLine("")
    ( O& a2 J/ s. |8 \' X  D  k

  49. , u: K- `% f, W) e9 W& Z# g+ w/ A
  50.             Try
    6 m: l2 n+ ~8 Y' z" S; }- b
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    " K$ X2 G1 s3 C
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
    1 A. `/ C0 x6 |4 h$ C8 e
  53.                 For Each parentTag As Tag In parentTags
    7 B. D' B" C" y* x7 n
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)% w- i9 L0 c: ^0 K. k8 k

  55. ; Z! w& Q2 I' r; Q. H7 R  |
  56.                     AskParents(parent_object.Tag)
    & Q) f% t+ {+ H: k( D

  57. , ^3 s0 q4 f7 N
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then
    * N) y+ R) u/ c6 p
  59.                         myEdge = parent_object; p+ p6 g% x! {  `7 s) {: d
  60.                         lw.WriteLine("")
    + K1 K- P% C" @9 o. v1 T% Y
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)# @) g0 m- L- Q1 B1 R
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    + V. {, R7 z+ ]$ M1 [! ~1 x- x/ E& t
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
      a% W0 N! O# e# M; x8 e( V2 M
  64. & ?9 G% a% @$ z$ x
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag" [7 _: z+ G, F) X; i# `' T
  66.                         Dim occTags() As Tag
    4 p5 a+ q% y* }& i- S( D5 ~
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)) i/ Z& Q% X& ~5 @! R) V# K
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)- G5 r5 d1 l2 c4 X# O
  69.                         For Each temp As Tag In occTags
    ' m# t# B% u0 d& d! s; l1 B& z
  70.                             Dim myComp As Assemblies.Component
    . U0 C  R# x0 t" f7 R; s
  71.                             myComp = Utilities.NXObjectManager.Get(temp)0 ~" A) y! _( }. X6 i% K3 V# U
  72.                             Dim myCompPos As Point3d
    9 W7 Q% Z( F$ U& I9 \
  73.                             Dim myCompOrientation As Matrix3x3
    - l* i1 w) A/ @+ [
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    ; H" W1 w( q" K

  75. 2 J' C7 W' c1 [& s* `
  76.                             lw.WriteLine("")7 K5 f1 E, \# Q( p7 C7 ^
  77.                             lw.WriteLine("component name: " & myComp.Name)
    % e% t3 e' u  I8 g  R7 d
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)% u: y7 {6 n- q3 g/ b  v. b3 I
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    1 i! O! c- Z2 Y  Z: e* U7 x; S) z

  80. / @% V, K* Y9 M' m+ z3 h+ m
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then/ D6 \+ m1 g8 L
  82.                                 lw.WriteLine("** This is the component that was picked **")
    5 v& ]5 N" E0 p; A8 t
  83.                             End If1 V5 E+ d/ Q# ]( i8 {
  84. % [# |/ u' \+ y2 ~1 ]2 t2 i
  85.                             lw.WriteLine("")# ]3 z6 T5 @: x5 [
  86.                         Next; S1 [3 G. p& e2 {: \# L: q
  87. ) A9 d' g! V7 {. V6 W
  88.                         lw.WriteLine("")
    ' n# {: S! S" [8 I" m
  89.                     End If0 q) o, i/ U2 N: _3 l
  90.                 Next" o- ~% r0 U" S$ H, w# e

  91. ) ?& P6 E; P. _  L5 A$ g
  92.             CaTCh ex As Exception* ]" p& I* P$ ?
  93.                 ' NXOpen.NXException: Current object is not smart7 i  L0 }) m8 S. _4 _3 @
  94.                 lw.WriteLine(" Error: " + ex.Message)
    2 v( Z  K7 f& W& M9 L% e1 c
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    7 w( E/ ~) \9 k
  96.             End Try" U/ Y/ p) F2 G2 T% O+ i9 i2 h% A

  97. $ M! y. M. m. N7 y# `; G

  98.   T2 c3 i, W8 y3 O7 X$ W
  99.         End If2 T$ e+ ]+ l% [& u5 b* O. m# W% B

  100. / s. S, X  ^+ A. i! R- Q) c6 |, p
  101. ' x8 W! o- |& |" @
  102.     End Sub
    ) Q+ a$ J$ L* u' e
  103. - b% o, @9 x7 B5 O
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer2 f! I+ ]# s" C$ U# E; R

  105. . O( L# `" _. g0 C, T, v. Y" |0 j
  106.         Dim base_pt As Double() = New Double(2) {}
    8 W" b/ }: e4 k( }  F# F1 y
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null
    # k1 G5 V& F8 T' v+ o0 B
  108.         Dim response As Integer = 0
    & g; y! D/ |' R1 R  N
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    ' k$ ?4 U' ?) }
  110. ) C, j& C- @, R4 L  [
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    $ m8 S" A1 s" X6 C* k7 Y+ A
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    , u6 `' A9 C9 F  w2 p8 F) e# n
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    + ~+ h# X! T3 G( u, r

  114. 3 }. c8 _1 _! j: x
  115.         Dim pointLocation As Point3d! e2 T" K4 r: b- z. N1 p7 K: R
  116.         pointLocation.X = base_pt(0)
    ) z- w: R9 S1 c2 ~! [3 s' S
  117.         pointLocation.Y = base_pt(1)
    ) U7 S, A( O6 c8 m$ k& C& a
  118.         pointLocation.Z = base_pt(2)
    / ]. L6 }& B& p0 E0 [* U
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation), ^, H9 y" F, N0 g
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)+ e7 _! F$ o0 x" ~9 j6 {/ t
  121. + O; f4 m, \8 r' h  J1 a
  122.         Return response- F$ G: B3 D' s2 O( L3 T+ A; R
  123. , j1 D+ r) \/ T5 ?6 }
  124.     End Function
    / X/ [; m# o* q5 H8 p

  125.   e7 H" [; v( u# q, o  R2 V
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response
    $ u9 m0 j" G2 ]& z! \4 B

  127. 3 s% b6 q7 r! n, l/ |. m1 f
  128.         Dim selObj As TaggedObject! m. L" w* ?8 j; @  `- k% ~
  129.         Dim theUI As UI = UI.GetUI
    8 b  h1 W0 i0 ^, x$ ~8 L$ f
  130.         Dim title As String = "Select a Point"3 k. X% ~" h9 N5 \! `; R
  131.         Dim includeFeatures As Boolean = False
    % E) x  S0 m8 ]% C& U; G
  132.         Dim keepHighlighted As Boolean = False, E1 D3 y% q, O1 S
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific3 o: z, P/ {3 I7 s3 e# T2 W
  134.         Dim cursor As Point3d
    / R8 Z. E6 N7 k5 L: }  G
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    0 y' Y% m$ j" I6 \$ }& ?0 m8 l
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    3 L4 b) W% Q9 Q0 |; k
  137. : O' P  t7 C! C/ s( |. R
  138.         With selectionMask_array(0)
      c5 R* K5 m1 \
  139.             .Type = UFConstants.UF_point_type
    ' T9 K& Q; L7 V8 r: K2 l- D. i
  140.             .Subtype = UFConstants.UF_all_subtype
    . ?0 @4 _% |! e* h! K
  141.         End With1 o( i5 V  H! \3 g
  142. 6 G+ q7 v- N  g. `5 l! Q( X
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _9 a" n7 ^2 [; N! h* F
  144.          title, scope, selAction, _' n1 U% W; L# S% _$ V: p
  145.          includeFeatures, keepHighlighted, selectionMask_array, _
    * l: f; T- }5 }% Y
  146.          selobj, cursor)
    4 w2 c! J9 E# U2 H3 J6 a
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
    7 g8 E1 {. \3 [. [7 z* l' t+ {
  148.             selPoint = selObj
    * z; @9 U5 R# K2 F  i, U" O7 W5 J
  149.             Return Selection.Response.Ok
    , I( O& s  o8 Z+ l! J+ |
  150.         Else' d6 C6 T6 S7 G; A
  151.             Return Selection.Response.Cancel0 W1 N& {$ ^7 R* d$ k: l
  152.         End If: I* `- N7 ~9 S7 _6 v3 \
  153. 4 l! `7 N7 K' p8 A) G% u8 }+ O
  154.     End Function' x# n8 _$ R! W) U, J+ t, z. t
  155. 3 |: T; {0 W. U4 m/ ]" D2 V( F# r) _
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double
    7 n" x7 u5 T& O9 Y+ s, r- b

  157. ; U- G) C# }1 }1 k5 A
  158.         Dim result As Double$ `7 v0 g% V/ Y% E' b' V
  159. ) [" A" j# z* [( `
  160.         Try# u$ d" ~9 F. p5 c& x
  161.             Dim nullNXObject As NXObject = Nothing! B9 m. W' I3 y9 c8 y9 e+ d* |7 M

  162.   V+ A3 t& Z' A: C
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder
    8 }: c* M3 Z  I; _) R5 A: E! Z
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)* U9 d( ]/ v$ F. |. W7 b) @. x4 f* S
  165. 5 k$ A+ x2 T9 e+ d
  166.             measureDistanceBuilder1.InfoWindow = False
    % k' a) _4 _8 F1 w
  167. / i6 J# Z& h( p: o
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    1 z6 {) G  W  A5 m; K# k% ~+ B
  169. . N4 |  q) k5 ?) j
  170.             Dim nullUnit As Unit = Nothing# @- T1 U1 k3 d+ T

  171. 7 D% ^* P* V! |" B5 R; K1 `
  172.             Dim measureDistance1 As MeasureDistance
    ' x* S3 t! P  Y5 A) [+ m
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)5 ?2 y' W2 ]/ }% ]0 v* k

  174. # {0 A. q' X" P$ h: [/ j0 J
  175.             result = measureDistance1.Value
    ; o$ L7 s/ [/ M" e
  176. . }0 U4 a! k: ~; z# b# p  `
  177.             'measureDistance1.Information()* s% ~; v% p& C) W/ A/ Z* u

  178. ( s( M4 P/ f9 Q
  179.             measureDistance1.Dispose()
    % n5 ^! ~! v9 ?, d

  180. - ]# |1 ^; o1 X7 N  k
  181.         Catch ex As NXException
    ) I  E1 I4 m. E* M
  182.             MsgBox(ex.Message)
    " ?+ o+ I# Q! E6 p1 u1 q
  183.             Return Nothing) I2 ]6 U8 R" v; m

  184. , P( h+ Q, p2 n- B! {
  185.         End Try
    $ T7 k  d7 Z; h

  186. 4 N1 U9 N1 I* M6 t( E' U

  187. 6 ~7 l4 e$ \' M* ~" i9 `7 K
  188.         Return result( W% [. s1 C1 E! O2 \1 A
  189. 0 i& s. T) B1 m, O+ x$ g
  190.     End Function
    & d9 Y1 w3 p/ h$ [5 O3 _" D" |

  191. 6 @0 Q# |, K/ Y

  192. " j+ e' F  o" O& F* P; ^7 G! H
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer
    + E! ?( [# h; l  h  Q
  194.   w3 R+ k7 U  b
  195.         'Unloads the image when the NX session terminates
    " o+ e2 k# F; d% U) ~: f' h
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination/ p/ Q9 N3 f3 _4 `+ P) a$ G% l! t& K

  197. ; m: M3 B+ Y5 h& W
  198.     End Function* M/ x! m) t$ `* b
  199. , q* t. X2 M- _% [; s
  200. End Module7 k# b8 y0 {1 k2 F
  201. </P>
复制代码
3 w1 P( R! b/ E. F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了