PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

4 e! B( {- R1 O$ bNX二次开发源码: 装配中选点,并报告父对象
: d: ?7 I. r; F8 W7 |
  1. 6 X8 `8 e( C, W, w  C: b
  2. <P>Option Strict Off
    * J/ h1 L. K9 I9 P* y
  3. Imports System
    6 u6 L$ p0 S4 e9 C! \4 F
  4. Imports NXOpen
    0 t9 c, g9 b: `& a
  5. Imports NXOpen.UF
    8 L1 p- \) f+ T  ?

  6. 4 J4 A; v1 `! H1 o3 D
  7. Module Module1) n9 a0 U; U' B- q' B

  8. . r$ D# O6 Z3 A  A" c
  9.     Dim theSession As Session = Session.GetSession()$ g2 t$ u2 [# H8 w; G* w9 Z: M
  10.     Dim theUI As UI = UI.GetUI()* v( K# Z" Y, M5 D' s8 T% H
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    : x4 Q) I6 N. G/ v( i$ Z5 R
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    ) `0 ^3 }" g5 @
  13.     Dim pickedPoint As Point! f0 k% w, l; i$ m9 a
  14.     Dim myModelingTolerance As Double8 D9 x% |7 N% [- B( T; z

  15. * v/ j5 J% w9 r& R1 v3 d0 W3 ~
  16.     Sub Main()
    9 ^" |+ o0 K' @9 G% [+ b$ b
  17. % ?2 n! V- d  j0 |& X1 P" M
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
    ' |" w; g! [  I0 B  y  e. ]

  19. # S; S# ~0 s5 }, S
  20.         Dim workPart As Part = theSession.Parts.Work" N( n6 \- H- v8 \
  21.         lw.Open()
    & ?& d+ i# u8 z; |: n1 ~4 ]

  22. 2 u2 i* S# }- a  L9 C+ u, V0 a
  23.         Dim myPointTag As Tag/ ^( |: d4 d/ n  B+ F  c' q

  24. ; Z7 |$ {) z( q0 ~2 }- s
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    - k* ?6 [# n4 P& y
  26.             Exit Sub- I1 H/ ~# P) b$ j/ S
  27.         End If
    # q# _; P0 |9 f- T
  28. . h! q7 k0 r% d; a# Z# Z
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)6 e+ }+ T( U( R7 M
  30. ) f5 P7 j1 m  p- r5 E
  31.         AskParents(myPointTag)
    . A( }0 N* o  u* M9 q6 F( X

  32. $ ]. L* G2 K0 b
  33.     End Sub
    / g# f2 d: J5 J( T' I  w

  34. - q0 @2 H- g" ?, P
  35.     Sub AskParents(ByVal objTag As Tag)/ L) p8 `9 [, Y/ N& U

  36. 6 _# G5 U+ m: `3 m" c4 l
  37.         Dim n_parents As Integer
    ) K  S. ?; p- v- A5 d$ w! E) @
  38.         Dim parentTags As Tag()
    + ~; k2 l: }2 W' p- Q+ l+ I5 z" t& r! U+ c
  39.         Dim myPoint As Point
    * i2 _2 ~* u7 {2 U: i/ k; ?
  40.         Dim myEdge As Edge1 G8 E" h. M8 a3 J( U' q+ d
  41.         Dim myXform As Xform
    . Q4 |" k4 h& @: [, t
  42.         Dim myTaggedObject As TaggedObject& y6 y  u$ F0 X9 V6 l
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)/ n  R8 o( h" \/ D8 y
  44. + T: O1 C3 b: A9 q+ ^
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then/ ^! h/ a  d. x5 e& o; |
  46.             myPoint = myTaggedObject. n' e! \( \, I& z& d+ U* s
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)+ ]! y6 J) E) j' V* J
  48.             lw.WriteLine("")
    2 @/ N6 x( B0 U1 p/ \8 X
  49. 2 S# z8 H' `' h  {5 `# c, Q2 i
  50.             Try
    9 F4 a. i$ p5 f" {
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    ' n2 |8 B6 K% I2 e2 q" p- b
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)( T# }- s6 |- y( r
  53.                 For Each parentTag As Tag In parentTags
    ' X* F: }! Z; Y, \; |% c
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
      M9 ~) k. u& p4 P2 C9 ]) Z" D
  55. ( m) a, k2 F- [; k1 Y8 I4 G
  56.                     AskParents(parent_object.Tag)/ A, V# u& A  q/ q* U2 M+ i( ~

  57. 7 _5 R+ B6 N- K  g( A8 e6 s; k
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then! p" [9 f; b% b+ l2 v
  59.                         myEdge = parent_object
    6 A  h3 R' |# k# k4 T
  60.                         lw.WriteLine("")
    & K1 |, r$ G2 F& X& u
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)
    9 m, _+ D5 g+ f+ U+ w* s9 L) q
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    2 {6 ^  i5 v/ |" s
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)6 T; l/ b5 K# E* p% k1 I

  64. & y5 M: E4 i4 c" ~8 W# O
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag1 _, `2 P2 [' B9 w
  66.                         Dim occTags() As Tag
    0 \$ q* Z* Y% |# }) B
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)# T8 \7 o* F; e0 {- v$ }) J
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)
    / ]% E) B. y4 p) \4 J
  69.                         For Each temp As Tag In occTags
    ' Q( o+ I. P& Z6 L; F- j% r
  70.                             Dim myComp As Assemblies.Component
    0 b8 m, |- `3 c0 ~! H: I( M
  71.                             myComp = Utilities.NXObjectManager.Get(temp)! t) M1 o* l9 _& I& _# @
  72.                             Dim myCompPos As Point3d
    2 d4 ^5 P2 w, y2 ~$ ^! @! i: Q
  73.                             Dim myCompOrientation As Matrix3x3# i: n& H8 _, p) ]
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)2 C' l- E& ^2 k$ A4 ~3 X: h1 ]/ H

  75. % {* ~& }( w# c" w, @; e, J+ W
  76.                             lw.WriteLine("")
    8 T" h6 f- U% N' |
  77.                             lw.WriteLine("component name: " & myComp.Name)' Z1 p& U: F- w0 e7 T9 J( w
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    ' o. q: C1 k$ A+ _6 X' u
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    " d- l2 h* L' ]; C4 e- p
  80. / I- b) A2 J4 {
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then+ G9 `0 x' Y; P0 w/ |
  82.                                 lw.WriteLine("** This is the component that was picked **")
    + u3 Q6 r; N, j' @0 H
  83.                             End If7 F  z+ U; f$ a# Y' P7 L

  84. ( h1 |4 M. \( U
  85.                             lw.WriteLine("")
    1 ~9 B( i/ [; \, A3 m4 K# A
  86.                         Next. A4 V! t3 F4 ?  v
  87. 6 G4 `% q9 z$ W$ L( N7 Y* J
  88.                         lw.WriteLine("")
    8 }% a  A, x& T0 s% }0 R) [/ L) }
  89.                     End If
    5 }0 C, |, ?9 d( s6 ]
  90.                 Next# S5 f4 V3 s! u) `- r

  91. ! O+ Y7 t& p- }4 ^
  92.             CaTCh ex As Exception
    2 _8 ~/ N) Y( v7 c7 p) D8 y
  93.                 ' NXOpen.NXException: Current object is not smart. w' X4 [2 ~" ?/ l0 [# v1 l
  94.                 lw.WriteLine(" Error: " + ex.Message)8 A' d$ i% c$ m1 z! D0 P) d& p5 a
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    1 K# j5 \1 ~' b* `' ~3 Q, f7 X3 c7 j( t
  96.             End Try, l0 Y  k/ c3 `% B/ E. Z4 P8 E

  97. $ N. \7 ~, M& h7 V

  98. 4 j+ T. Y9 }. g* r1 U* J
  99.         End If
    1 N- A: V. w0 ~4 }# X3 Y
  100. ( j# u8 T7 F2 u3 `5 W7 M- `

  101. " C$ B! D% l' h: l3 J1 f. ~
  102.     End Sub
    ! ]6 q# |9 c2 m. x* f' ?
  103. , T' Z0 ~5 N# Q. h2 s
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
    / P1 ]8 g$ G$ d- u. H5 P* k

  105. " A& m, W' ~/ E0 w* S+ e+ ]
  106.         Dim base_pt As Double() = New Double(2) {}5 u  T! V# W9 A" ^8 f& V7 w
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null! r$ b# k' L% X4 z* }# [
  108.         Dim response As Integer = 0' }2 P) X+ S3 z" i8 t. J, S& Q7 y
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    - g3 g/ ]) h8 Q1 P
  110. # ^( }* w; \& |% [5 ?0 C! ~* n
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    4 n" p" c4 c/ J, m* {
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)# T8 ?8 N$ ^) q/ `
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    % h9 `) p1 I$ j, f& e/ d

  114. . y  v$ [) @" W0 ?; y) o$ j: j/ h
  115.         Dim pointLocation As Point3d
    * s4 y" w5 K  z0 I
  116.         pointLocation.X = base_pt(0)
    7 B& {- G  e! d9 o- U# s+ v
  117.         pointLocation.Y = base_pt(1)
    4 O; l5 K; V* C# F) r( P* c
  118.         pointLocation.Z = base_pt(2), v4 D3 a  i; f
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)+ s, Z/ T( s, M8 x: I& ^
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible): s4 @, F. V/ U' D& c8 l
  121. , L% K5 S. w' j3 w
  122.         Return response8 m% r/ @) r" y6 W; o- Z4 }3 t

  123. ' Q* ]4 T2 b% ?( b
  124.     End Function
    ! J' _' ~! x7 t* y: T7 i

  125. 7 f  [/ v* l9 Y, G2 O- m! ~+ l
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response7 u/ p' X  X0 M$ p8 e7 \6 Z) D. b% g
  127. 6 i4 V# k8 j  L- G
  128.         Dim selObj As TaggedObject
    0 ]& p+ x, j% m
  129.         Dim theUI As UI = UI.GetUI
    - r- j7 M/ {1 l+ G7 d0 p
  130.         Dim title As String = "Select a Point"* s4 {9 @0 w8 K4 V( _
  131.         Dim includeFeatures As Boolean = False
    - Y9 h. W" A% {7 k! {
  132.         Dim keepHighlighted As Boolean = False
    / ?+ V- }7 X" G* q/ w5 J
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific" @0 H: F( B& e! y$ D
  134.         Dim cursor As Point3d+ J& R6 f7 _6 e) B  i
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    0 J$ Q# }! r4 p4 `
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    7 _3 Z3 d+ m1 A4 |

  137. & V* \7 [0 b3 o- V; B6 V
  138.         With selectionMask_array(0)+ b! O& N: g& q
  139.             .Type = UFConstants.UF_point_type" b: [) P) M9 E/ P4 j) k
  140.             .Subtype = UFConstants.UF_all_subtype1 N6 k* M8 K  \. D
  141.         End With
    + a' R  t% R7 u7 c9 Z: V* E

  142. 3 _# h  z" s  p; w/ u1 r
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _% p% p- z) o" R; {6 v- [% K
  144.          title, scope, selAction, _! S) j, P3 \* j7 U% r
  145.          includeFeatures, keepHighlighted, selectionMask_array, _
    ) S- Q, Y; x$ A4 |  o% l
  146.          selobj, cursor)! d6 U6 q  Z* O- D. I
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then' G2 O) w/ C. Y# A8 ?/ z8 L
  148.             selPoint = selObj
    ( s& Q( a+ C% v1 p9 Q" R
  149.             Return Selection.Response.Ok1 g8 y8 X9 n' F/ o+ v; T
  150.         Else
    / g+ L( W7 @: W- m
  151.             Return Selection.Response.Cancel) @9 r0 l# B% ?
  152.         End If
    4 N3 n- X" P7 o

  153. ) _" ^: R4 J! b6 W$ ^% _  o7 O- d( q
  154.     End Function
    " I; ~; ~: w6 J. S+ Y6 ^% M

  155. " d5 G$ P2 D/ ?* _/ F8 f
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double% y4 h) ~# U, s9 u0 O5 B+ L$ n
  157. 3 @& ?1 o% x+ l8 d
  158.         Dim result As Double. N' z- Y/ T/ H6 W! L* g' |' K4 p
  159. ' `1 n+ ~/ H; c
  160.         Try
    . b+ a4 z7 F% R6 }* A- Z5 _& ~
  161.             Dim nullNXObject As NXObject = Nothing
    + ^5 A# A7 d  c* e- k

  162. 7 k) v- w3 Y3 F8 w* l" f/ W
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder
    ' Q5 [4 s' N3 `# |! ]$ }
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)# d! `& Q  s6 C. ~
  165. 3 P; Q$ V( |4 \
  166.             measureDistanceBuilder1.InfoWindow = False1 M# l. f4 d  |1 h2 R7 W
  167. # _% l$ S, X' W0 r$ D
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    3 }* _, ?" B) g9 z+ v) A

  169. ) f$ g0 W* k' Q) J5 h
  170.             Dim nullUnit As Unit = Nothing
    * d: G( R" i4 N6 }4 O, F% x+ ?
  171.   X5 k4 X  i: N3 R. |, F1 O
  172.             Dim measureDistance1 As MeasureDistance
    % x3 ?, N  y; m; m
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)  c$ j: k. L0 l: k

  174. 4 p9 J" k7 m, x: w1 s1 C
  175.             result = measureDistance1.Value
    - K& D2 r/ |. t$ F. }- d5 m  k
  176. 6 H$ W8 w: Z( D2 t& \% u' d  ]
  177.             'measureDistance1.Information()
    ' U; r+ h$ S+ Z2 }+ _/ ~( a

  178. " @! L. X( @. i3 Z% H: G( i
  179.             measureDistance1.Dispose()
    * N$ h  }! ^% U  ?+ \; @: C- q' V
  180. ( {7 [$ ?* ~  l# [0 c( P  R' R* u+ T2 j- R
  181.         Catch ex As NXException1 G8 V$ u* _  _  v
  182.             MsgBox(ex.Message)
    , l; I4 x4 N  T6 L" d& [: {$ s
  183.             Return Nothing
    $ r6 G. L. T8 d9 c8 B. Y& w

  184. 6 Z$ e- C  }( M& Z% C  L
  185.         End Try; l- J* K0 C/ \' |1 \
  186. 6 `' k- j' y% z5 p7 V; j
  187. 2 p( h( y/ Q3 e( m2 ?+ z
  188.         Return result
    ( S; n7 I  k& j5 o2 \' c
  189. 6 n+ `# \$ s( ?2 b0 w" ?* F
  190.     End Function! _3 f" J9 w* S, m& V$ V7 k
  191. ) A, y" j$ F- \4 w3 x& w

  192. 2 V! f3 a- S: J9 S, j
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer5 |3 K. V$ s1 E
  194. $ M. Q! ?! |7 k4 D+ j
  195.         'Unloads the image when the NX session terminates' o7 ?, D; ~* D' U, D0 x
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
    ! i- \$ a/ v7 @3 H+ e

  197. ; T% `& p! ~( a1 Z# Q
  198.     End Function
    " [) v. h( G0 N& n- ^
  199. ; V$ N# _7 q% A( Q( a$ j
  200. End Module
    * r2 ~' L3 E/ M0 [2 ^! N& d% }
  201. </P>
复制代码

8 [. L* z2 l+ |1 b
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了