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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

, v& O. _# p$ X' P6 r# ENX二次开发源码: 装配中选点,并报告父对象- s/ H8 D+ u# V0 g! Z' H" w

  1. . v( i% E* V' W- q" O
  2. <P>Option Strict Off( M4 t# ?; F# J% ?" w
  3. Imports System) U& C6 E# }7 `. O- D
  4. Imports NXOpen
    4 r. B6 f& z  C# K* }" I
  5. Imports NXOpen.UF
    - x, E7 s% t) }- Y

  6. 3 m3 `7 R8 Y6 ]& _/ G/ v
  7. Module Module1; e9 d) M9 N1 R. K6 A1 ^

  8. , E3 |! p. ]8 H4 ^, |) u7 @
  9.     Dim theSession As Session = Session.GetSession()* I; n) H9 m* s9 J2 l3 Z
  10.     Dim theUI As UI = UI.GetUI()- R* `" v/ A% A" x: Q9 }6 N. R
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    1 Y3 k# ^$ f3 S, h+ b& Z
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    6 J% A3 N0 j% P! H# v
  13.     Dim pickedPoint As Point
    4 v& [3 X/ ^9 r+ \* ]
  14.     Dim myModelingTolerance As Double" w! p) D8 _- q) p! F8 a/ e
  15. ; l! B1 Q) {$ X$ H' U2 P0 D9 d
  16.     Sub Main()2 C6 D9 d" |* m0 _1 X

  17. 4 Q) @5 r/ r" N6 z. m7 K& n) Q/ @
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance). z5 ^5 l$ m& l% v8 V8 [

  19. 0 g, g$ M( G( c2 e( c; `
  20.         Dim workPart As Part = theSession.Parts.Work
    ' Y$ C% I6 a/ F
  21.         lw.Open()
    " n' k" Y0 `! G
  22. 3 f( q3 Q) e8 j  e3 {6 f
  23.         Dim myPointTag As Tag
    3 ]. i; f/ X7 B4 Q% W" v
  24. / |* h( i1 n& N( R) B1 M
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    5 W- [) o7 l4 J) A0 Q; j; Y7 T
  26.             Exit Sub  ]% S, H$ }) f3 h. T" W
  27.         End If7 T2 @! B, j* h

  28. ; `5 g4 s1 E$ v# T" B  h+ Z0 F0 q
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    ! P0 u# ?7 W  f; p8 Q

  30. 3 G  t& J7 V. E
  31.         AskParents(myPointTag)% t( ]6 H' U& i+ ]% f2 I
  32. 4 X% u9 s; T/ t2 t- Z5 K
  33.     End Sub0 |8 T- t# z" G' i# z# j6 T
  34. 9 H' n! @' ~) @# W( {  q
  35.     Sub AskParents(ByVal objTag As Tag)
    3 U# h& {- [! y# @& e  d$ U* e1 z! P
  36. # C+ k3 Y4 h" d( {. U! |# \
  37.         Dim n_parents As Integer
    ' |" p! O* J1 f3 i$ m
  38.         Dim parentTags As Tag()& R% W* U  \  w9 r- K
  39.         Dim myPoint As Point8 e, Y2 _# I- z- d3 {$ H4 W
  40.         Dim myEdge As Edge
    8 z3 u+ s/ f: O
  41.         Dim myXform As Xform
    " P3 r( r! p) ?
  42.         Dim myTaggedObject As TaggedObject
    4 \7 ^- d7 a3 g/ t
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
    4 w3 M! M! L0 w

  44. 0 P8 D  J6 Y( C9 K9 f" x: g3 ?
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then
    ) B, n, u( |' C0 L& ?
  46.             myPoint = myTaggedObject- M6 Z4 x- m& c* y
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
    & M& A( W3 o& s0 W( f1 T; n
  48.             lw.WriteLine("")1 w7 j$ M0 D9 f; \

  49. 4 l, r  N, a$ T) x5 m8 o
  50.             Try
    0 p" W' K, E$ R
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)4 K, Z1 Y/ s5 S+ E9 W+ ?
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)0 P; \2 R7 E1 @9 s
  53.                 For Each parentTag As Tag In parentTags" L( v4 U6 x% }' L% e
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
    4 R; j; N' ^& G6 l4 e6 ?
  55. ' d. z' m9 H, U
  56.                     AskParents(parent_object.Tag)
      {' M- L3 ]# n0 f8 m1 h
  57. ' r+ b- E/ z( N, v" u2 R/ Y
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then
    9 D5 I( Z7 Y0 Q3 ]
  59.                         myEdge = parent_object- F1 }! B. m# N
  60.                         lw.WriteLine("")
    ) e& T' y0 o* C; ], C
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)9 D& y1 Q  Z( x  G6 t
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    & L4 Q! C' `5 g7 ^' ~
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
    5 G/ h6 r% o2 K# t6 b
  64. * U  r0 U! ^" y2 _! H. C
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag
      z' i$ M5 ]4 ?# d
  66.                         Dim occTags() As Tag
    1 U8 h; l2 K! |7 t. N1 J8 r$ a, P
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags): }& e" T4 h. H2 }; s
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)
    : d. b8 V# `( J$ D( [
  69.                         For Each temp As Tag In occTags
    ' ~9 G: l( S' d5 N9 g5 ^3 Z
  70.                             Dim myComp As Assemblies.Component% V8 [- g5 P* p5 x3 j3 h0 E
  71.                             myComp = Utilities.NXObjectManager.Get(temp)  {( A9 r# n, M, Q6 f; s
  72.                             Dim myCompPos As Point3d
    * a; e9 E; I! M. Y$ R% p- F0 r
  73.                             Dim myCompOrientation As Matrix3x3
    9 [' w, d8 `5 ^: o% y( w" n
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    7 U( P+ {; j/ \1 [* x4 `2 w
  75. / [% I3 R6 L- b3 r  i1 b
  76.                             lw.WriteLine("")
    # ~% a/ p. J+ I: X
  77.                             lw.WriteLine("component name: " & myComp.Name)' k) W& x" C/ J0 T6 Y
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)& D1 L9 p* A6 I3 R% m; V0 I
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    , U/ ^5 d0 T$ ~4 ?
  80. ( Y! i5 u' Z. ], _9 A7 ^
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then+ J+ q5 {" m0 {
  82.                                 lw.WriteLine("** This is the component that was picked **")/ k+ P$ S$ I) B
  83.                             End If& ?5 f8 T  N- m

  84. : p' V" x/ k. k, x
  85.                             lw.WriteLine("")
    " s8 \- x$ B" C3 N
  86.                         Next
    $ j' s- z" I/ I- H5 `4 r& ?
  87. 4 w, Z" O# |4 C! Q6 a
  88.                         lw.WriteLine("")& J8 a3 V1 d% {6 w  r. D, m2 |0 }
  89.                     End If
    % G* I% z. `, H2 x) Q8 f  @" n
  90.                 Next
    3 w  k; O$ t' ]0 W  c% M- e

  91. 7 ^% d6 g. Q- W- [0 F
  92.             CaTCh ex As Exception( n: @9 q# B/ L2 V
  93.                 ' NXOpen.NXException: Current object is not smart1 n4 V' \( o+ c- r! }
  94.                 lw.WriteLine(" Error: " + ex.Message)% O: ^* s7 y* g
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    ( e4 n5 ]5 s5 e1 D
  96.             End Try; R+ p5 b  b& W$ _% G& w

  97. 6 K2 s. p5 D: ]7 v% y8 Q7 [4 B7 u

  98. ! }) Y" T. \# }" }+ M3 O  e
  99.         End If7 j, H* r* V+ R. P. N

  100. - `) R) O! y1 `0 ^

  101. ' |7 W/ f, W+ N* L% T+ U! v
  102.     End Sub2 o! H; `# K) z  J, C

  103. ; d9 p1 e4 K+ K, u4 P) z
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer1 z' g8 w7 L. e7 p. w

  105. . @; p2 N% m2 F2 a% Y* N
  106.         Dim base_pt As Double() = New Double(2) {}
    ) @" O* {7 p/ u& g
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null& W6 ?. n* z# h3 B; p
  108.         Dim response As Integer = 0* d/ N0 R# r1 o3 T+ |- u* S
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt7 Q5 N: }- D: A7 n

  110. / @$ E- K: v+ u6 K
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    + U7 \- M/ T* S  U
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    9 D4 g* u1 H  U$ d& r
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    , E" W3 V6 ~# O+ l1 m  p
  114. 4 u! A8 E; j# B5 O. k# Z5 f
  115.         Dim pointLocation As Point3d! [. b- P" s" S" f' I
  116.         pointLocation.X = base_pt(0)4 X" j7 v4 T, ^( S5 z/ m
  117.         pointLocation.Y = base_pt(1)0 y- x- w+ X& z! w. Z: V& ~# b
  118.         pointLocation.Z = base_pt(2)4 M8 Y, p) d# [) |
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)& z: X1 R6 [9 z% F9 ]+ y5 d
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    ! S" H# F- O! @( Y( b

  121. 3 u8 ], \4 C/ S, q
  122.         Return response
    1 v' |2 q6 \  q
  123. / E( X9 F2 w$ Y6 R4 P6 i; A& O
  124.     End Function
    2 D5 `4 S/ m3 g
  125. " P& z+ A3 m( {, Y# P1 [
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response' B, o# ]. t+ R' S' x. y

  127. # m8 a( B/ x/ D7 [2 ?) f! @
  128.         Dim selObj As TaggedObject/ Q& a  k* S9 c& Y
  129.         Dim theUI As UI = UI.GetUI3 z$ o# I8 j8 U$ @6 r% s
  130.         Dim title As String = "Select a Point"1 ]1 Z! f9 r% c$ X" N/ V  \! i8 T
  131.         Dim includeFeatures As Boolean = False  f$ x( _  w" N  o% R5 [: z7 ]& c
  132.         Dim keepHighlighted As Boolean = False
    + ]# B. W' I& G: P' W
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    ) {1 T7 W5 C( I9 I8 Q8 S
  134.         Dim cursor As Point3d) g' S5 u! K# Z7 g2 t  I
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    ; Y/ ~& X) ]3 V5 Y( s
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    8 o3 e) T* W- s. O
  137. # V  v) v0 T2 P& K& u* c
  138.         With selectionMask_array(0)
    " ^6 F9 f" n( h' s
  139.             .Type = UFConstants.UF_point_type
    4 z$ M+ g; S* W" `
  140.             .Subtype = UFConstants.UF_all_subtype
    ) O5 A  j- m! j; O
  141.         End With
    . Z4 U) s$ S% Y. L
  142. 0 v, {& X+ @$ ^) @. _; C
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    4 u. @3 A" f( D/ u1 T) [$ Q
  144.          title, scope, selAction, _9 c( }. a8 i6 o) Z' e! e  T
  145.          includeFeatures, keepHighlighted, selectionMask_array, _
    # `& k" W. ]$ _5 [+ D
  146.          selobj, cursor)1 c1 B" L3 C1 P/ J; m
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
    1 j) j  w  x8 @' e8 V
  148.             selPoint = selObj4 f6 Q- m0 y: c2 E" b9 f
  149.             Return Selection.Response.Ok1 k/ f1 r! F4 [9 D! @0 t9 V, L
  150.         Else$ Z" `! n  d- O- c6 H, T
  151.             Return Selection.Response.Cancel7 a; _+ b  x0 ^0 b) y# n
  152.         End If
    + \+ C9 e' D" V2 N2 B' V! n
  153. 4 K3 H- @4 u# l' m# E, f5 g
  154.     End Function
    # G  ~1 M; O# C7 s- ?' U
  155. 8 I" t5 z* j$ E! ?
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double, L! m5 @7 M& j# W+ ^

  157. : D  E# D% B4 f# ^
  158.         Dim result As Double
    9 }% l: f& ?- W2 b/ `: x, U

  159. * S; A2 F5 g; M
  160.         Try4 t5 g, k; s) Q* r6 I# P
  161.             Dim nullNXObject As NXObject = Nothing
    / g* l# Z7 c4 i* Q

  162. 3 |) b% q; H* g; b" ?  r
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder( L; l- `  z) q; g( D3 U( T
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject), Y5 N# v  y; }+ I
  165. ' M0 f' b7 l$ O; Y
  166.             measureDistanceBuilder1.InfoWindow = False
    ! ?/ E1 r# o' G* K$ B1 F

  167. 2 V% h8 K0 O. M3 Z9 v0 g* L
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum, |" s* c5 L  |& R0 O! A

  169. % X- s/ {) U. _$ c( a
  170.             Dim nullUnit As Unit = Nothing
    . @( g, }2 W7 q  `
  171. 3 e0 {# b1 x' g. I
  172.             Dim measureDistance1 As MeasureDistance
    ) k- ?1 }2 G/ g8 M
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)( x5 k; d! y+ ^, s5 c# g7 c

  174. ) E. a' \$ b' H4 f+ j* ]( c
  175.             result = measureDistance1.Value
    2 E/ |9 Y  `" X: L7 {7 d
  176. , V" j# M, y' z" s9 w6 d
  177.             'measureDistance1.Information()
    ) ~* Q4 [6 U" L! Y! l
  178. - e' N& i2 O9 O- x7 t7 P- [
  179.             measureDistance1.Dispose()
    ' Z' j' S  j: C7 N1 }) z

  180. : ^, U- H+ J  |0 `4 Q5 W
  181.         Catch ex As NXException- N' r" h% b+ S+ Q
  182.             MsgBox(ex.Message)% _" h5 T/ W  T$ \( K2 ^) {
  183.             Return Nothing
    0 m1 w: e0 E# m- b- v

  184. % A+ f( }5 W" m' {
  185.         End Try) h; e; N4 U8 v

  186. 5 F% M: x4 i8 g1 b5 p9 ~

  187. 9 h) t1 g9 c, y# ]' a9 ^: }! ~+ T
  188.         Return result1 U1 K, }/ b" Y" C0 S  T* X
  189. 5 i8 M6 z4 q/ j5 }+ C* C) g4 w
  190.     End Function* _; g4 t1 p; I, Y
  191. ) A6 v/ C8 D  E; x) [3 T. \  s: M

  192. + M8 g* m; c9 w3 b* \
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer( e; W6 i7 ]' c: ?

  194. " X0 g% i# j( }0 r) `  N
  195.         'Unloads the image when the NX session terminates
    0 ~& I3 G% q- T9 l
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination! B; {. Q+ d+ x# a( R2 D3 `# M, s
  197. & F, v: [2 W7 m$ o3 ~5 s
  198.     End Function
    % Y2 J- P( Y# h5 R7 w

  199. $ R6 v4 t! v1 o
  200. End Module# p; o7 x1 c5 ]  Q6 q( `: W/ e0 m
  201. </P>
复制代码

+ M( m4 k+ C! G9 L, m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了