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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

; i0 w  ~4 }. K9 ^NX二次开发源码: 装配中选点,并报告父对象
' ^1 Y! A, p0 X" n. w+ ]2 o

  1. . D- N  ]8 q0 `+ H+ {7 A+ E! P2 |
  2. <P>Option Strict Off! q+ ?" H" I& ?* B; e2 t+ B
  3. Imports System
    ! N( Y" X0 ~! W) G: e1 ~+ T
  4. Imports NXOpen
    , S7 \1 i7 u& y. h  S
  5. Imports NXOpen.UF* _$ y. M5 Y# A- h* c* t

  6. + E$ }# W: Z. r/ L9 Q1 ]; \
  7. Module Module1
    4 Q: i4 e/ q4 ?) j

  8. $ U, o5 V! ?. |; Y, V
  9.     Dim theSession As Session = Session.GetSession()( Q- q1 d4 L9 L- ?1 Y) m
  10.     Dim theUI As UI = UI.GetUI()
    6 h2 P. Y% r6 z+ H& d6 t, L) R5 y* S
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession(): p2 G; ]8 ?- C* J" ]2 _. U
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    ; p7 w  U: ?/ u: S
  13.     Dim pickedPoint As Point0 c' x$ ^7 f: f0 `( i) t  N
  14.     Dim myModelingTolerance As Double, |* k1 W0 |/ a) n' X

  15. . Y2 [1 e. {. j* ~
  16.     Sub Main()
    : q# o. w9 V, }- \: Q9 p

  17. ; b# l. X  f) A- Q4 ^8 a1 f. X
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
    2 y. f; l1 s: P5 b% l0 k* P1 {
  19. * `+ q1 j7 }' e2 h0 h: E! i5 G! w
  20.         Dim workPart As Part = theSession.Parts.Work$ }8 b. x# `# q& }! ]! ^
  21.         lw.Open()( s; L  t5 o: N+ v6 y
  22. 1 ?4 ^" _2 e; p. U9 l
  23.         Dim myPointTag As Tag( B% \0 S$ z1 v! C# I
  24. 8 R) a6 T7 T" n0 R4 \$ A; D0 {
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    - ?8 p% I1 S( P' n% a/ @
  26.             Exit Sub
      D- ~& ^. J$ q! C  ^$ ]9 X2 v8 g
  27.         End If0 X& B- x( q, ~9 F' T  m

  28. - e2 [% V" ^5 V
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    $ U4 T: {6 t: n! z

  30. . e) @) D& `  |& t5 {$ x3 f
  31.         AskParents(myPointTag)
    " g7 I' w' F4 G" ~! e

  32. 9 r6 o& j& }0 ]1 q
  33.     End Sub
    5 b; ?. n+ A" `4 ~/ j- Y( X/ r3 X% A
  34. $ u! [: p. T! U2 A$ [" o
  35.     Sub AskParents(ByVal objTag As Tag). H4 Z  g7 q* `/ u
  36. 5 o- s7 z% ^6 j; r$ g7 q
  37.         Dim n_parents As Integer
    * ?( a3 |8 I: g  [% I
  38.         Dim parentTags As Tag()
    8 b' L9 a4 P9 G8 u5 S8 b, u+ j
  39.         Dim myPoint As Point
    % E' b  c7 |% y/ Q3 j) C1 u) h8 V
  40.         Dim myEdge As Edge, L( o5 h% ?: p9 F' |
  41.         Dim myXform As Xform
    $ W2 a- ?6 T3 R6 B# B, n
  42.         Dim myTaggedObject As TaggedObject
    ) t, C/ n7 I- d  V
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)$ [6 ]$ R6 f' d$ X8 F# \
  44. , Y+ g$ T# P( u+ p7 J  w
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then; T4 h: c5 I+ X/ `5 M4 e4 \
  46.             myPoint = myTaggedObject% `$ U% T+ P. C- w; ~, I. w
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)( ?7 a2 C/ V- D: Z% t. ~" i4 `  w' M
  48.             lw.WriteLine("")0 A3 w& r4 @1 _" S( c5 p

  49. * f5 Z! a6 _# }, Y* j  h4 v$ G
  50.             Try
    # G7 u) Z2 M! W  j/ m8 S
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    5 e# i* e* j& }4 R: ^0 v
  52.                 lw.WriteLine("num parents: " & n_parents.ToString); N  m/ x- P4 h
  53.                 For Each parentTag As Tag In parentTags
      i7 z" s4 L3 L& s% E
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
    ' g) m+ H) M0 u. v

  55. ( u5 |0 C9 R  ~1 ?
  56.                     AskParents(parent_object.Tag)
    3 A1 A, c! L2 j/ i
  57. - \4 A) c& V% A& [" d- e8 f
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then8 `$ o0 h' Q2 d" h) N. o
  59.                         myEdge = parent_object
    % y1 t4 ^1 {% u
  60.                         lw.WriteLine("")
    9 `9 j  B* D2 ^% K: ?; P. a
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString). `& A* I  t# N4 Z) R, b8 q
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)5 i7 y$ [& |& B5 a3 D. O  A( y
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
    $ d% D) I' K" n) L

  64. $ z* ?$ ?" @$ a
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag6 j& c; q! F6 D( B$ s- z
  66.                         Dim occTags() As Tag+ _' r) z$ L+ q0 [* W' h
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)6 M4 M, Q8 b: D; v8 n; R; Y
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)
    $ H3 Z% z' z' a9 Z- I
  69.                         For Each temp As Tag In occTags8 S( w  Z6 C7 q' L$ R# e
  70.                             Dim myComp As Assemblies.Component
    . [) {* ?5 C7 I1 Q
  71.                             myComp = Utilities.NXObjectManager.Get(temp)9 O# D9 E/ S0 E  _1 X( p" _
  72.                             Dim myCompPos As Point3d) F- X; l5 V2 `
  73.                             Dim myCompOrientation As Matrix3x3
    + W$ Y7 D/ t1 @- s; d  T! _
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)" I" l, u/ o6 s+ @/ Z* M

  75. ! E- ^: ~) m2 i7 d& V9 `  X
  76.                             lw.WriteLine("")
    ) Y  [1 \# V. n& N' ~  d
  77.                             lw.WriteLine("component name: " & myComp.Name)4 J( t6 w9 H7 W) i" O
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    4 X- s3 g* C- U: q6 j4 f
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)  f" S0 x) I) ^
  80. ) E8 a' A8 x: h# I# I8 U( [' Q2 f
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then, Z; ~* M: @% ~6 z) j1 ]( V( g4 o
  82.                                 lw.WriteLine("** This is the component that was picked **")0 |& F+ |* S3 Y- G
  83.                             End If1 d* w9 r' o7 m9 v) X% q% X
  84. ' s. N0 h: |. M$ @# m2 \
  85.                             lw.WriteLine("")) O% p$ w' a6 K7 A5 G" {+ Y
  86.                         Next
    & \8 Y4 E+ M; K

  87. # n: R7 [# j2 H2 @. ?' G
  88.                         lw.WriteLine("")1 {, \4 k$ E4 s, ~" T! G+ P; S
  89.                     End If
    - ?" ~1 P6 l! K$ u6 r0 Q
  90.                 Next
    1 e  F8 g0 M# z2 j
  91. % u- R/ [% Q4 o" ~, M; w. i. N- y
  92.             CaTCh ex As Exception
    1 x% `" W- H0 J# y+ z0 @* S& q
  93.                 ' NXOpen.NXException: Current object is not smart  |9 [- x/ o1 w6 O% U
  94.                 lw.WriteLine(" Error: " + ex.Message)
    5 Q( {( t0 L- x9 Y; u( j% O
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    9 l% m  }& s: B" \) m  v8 I
  96.             End Try
    ) j4 Z8 N+ U- J. P
  97.   U) }" ^* X  k6 h0 d
  98. / B. F' D$ H0 E  _+ }7 z
  99.         End If- C; w% H/ l' y: D9 I4 A
  100. ' B5 c! R% j) ^- A: P3 \" f

  101. , X% m$ C; X. }5 i$ @/ N( R
  102.     End Sub, ?* D7 X* p0 M5 E% P; W6 a
  103. ( D$ n9 M5 p2 r
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
    / Q! z8 L1 F% ]
  105. . E' b% ?% R* U" P: l' g# j/ Z
  106.         Dim base_pt As Double() = New Double(2) {}& h# ~  Q5 E/ I! p& f0 Z# R# S
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null4 F% b4 @4 b2 m" L2 i) u
  108.         Dim response As Integer = 0' V! Q; M8 E! ~+ W* c
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    - K) B* _1 Q. P5 e+ q

  110. 8 g4 S- s' {, s3 ~/ `0 d3 s/ p0 @1 j
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)3 d# b) T+ S6 Y. q3 l# Y7 D
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    ; h1 O* z5 p$ }( K/ E, D/ V, \; e, p
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    9 d; p; ^1 M* l

  114. * Z2 x3 }' e+ b/ ?# \5 p; W) {
  115.         Dim pointLocation As Point3d/ o; l# B6 p7 Z: Q3 Z5 H
  116.         pointLocation.X = base_pt(0)
    . f( T7 q# r# X& }- u/ a
  117.         pointLocation.Y = base_pt(1)
    ) U: d- G( U5 Y% x
  118.         pointLocation.Z = base_pt(2)  K: p" i) O1 f0 y; d5 T8 ^" P
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)2 P- j; M1 p+ U0 Z, C- i
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    & s3 W' j  F" _; X; \

  121. ' S' Z2 m6 h7 w7 E
  122.         Return response
    : R: T7 |6 ~, {. x+ V4 I

  123. 9 i4 G$ t- H: e) ], ~: I2 Z; Z0 _3 o
  124.     End Function
    & ^9 k0 V: E- i; T; u
  125. 8 V, p) h# |! r& Y
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response+ n$ c: ~: F: c" I8 x! g
  127. $ L/ w+ e" x0 i' l2 ]
  128.         Dim selObj As TaggedObject
    ( l- ?! @8 d6 M; q' W4 i% g
  129.         Dim theUI As UI = UI.GetUI
    ; J2 [8 ~4 y2 x+ o7 `5 \
  130.         Dim title As String = "Select a Point"
    . }1 [# V) b* X# L) o
  131.         Dim includeFeatures As Boolean = False
    2 A2 G2 L. x# [' \0 {1 X8 |3 {0 q
  132.         Dim keepHighlighted As Boolean = False
    6 P; t/ H* H" O" P( o$ j, k
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    , G/ H6 J& }% @" F8 L! w2 T9 K7 W
  134.         Dim cursor As Point3d* p( P) Z3 z% u' _  f
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly) q% X! N" G9 `& f
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    : d9 t3 f! o) c6 p5 b5 g

  137. * T2 v; M) {# Y
  138.         With selectionMask_array(0)
    6 p5 m) R$ L, x3 b, U
  139.             .Type = UFConstants.UF_point_type
    % x% J* a/ V9 |7 p# O0 ]
  140.             .Subtype = UFConstants.UF_all_subtype
    3 l6 }9 f6 A6 F( j
  141.         End With# b6 A) w  r5 ]5 @+ H' O' a+ K1 {' P
  142. : C( a  _4 Q6 d3 q8 ?  X
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _% _( T& ]5 j4 c5 l) k" s1 e7 L
  144.          title, scope, selAction, _
    ; c9 C. Q; u" {; @: y
  145.          includeFeatures, keepHighlighted, selectionMask_array, _
    - j- ?% _, b; Q! B
  146.          selobj, cursor)2 H, G; k: ]( q/ [( t2 h# |9 k: f
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
    - ?' o! J' w" p: h3 h. q
  148.             selPoint = selObj  j# v7 [5 r8 E4 o# I
  149.             Return Selection.Response.Ok$ p% U" @! z0 n7 m
  150.         Else! g, ^, E4 i( ?
  151.             Return Selection.Response.Cancel
    9 `9 S) V* F0 [" L1 E5 `5 t4 e
  152.         End If
    . `8 Q: t% E3 ?8 I

  153. " y8 y' o: k+ O5 ~9 U
  154.     End Function+ z/ C4 }4 x/ M

  155. 4 Z. ]9 |6 k8 W+ o1 i2 F( ]' O
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double# H1 D5 P9 S1 t. h+ D% h

  157. $ U/ j* b1 h& D9 H5 E, i
  158.         Dim result As Double
    5 E. Z+ M8 ^1 r8 t
  159. + E1 R' r0 X  ]$ n" M# j
  160.         Try
    & b- g; V9 ]3 x' t; \
  161.             Dim nullNXObject As NXObject = Nothing
    . R: H, x9 x5 t- Z

  162. * v. b2 R6 H8 i7 e* @
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder
    ' z' e- f2 t. q! x8 L( x3 S
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)) ]$ Y' E% n: B- r% l
  165.   b0 K* I, Q2 H3 S- l4 G: m, `# A
  166.             measureDistanceBuilder1.InfoWindow = False
    * o4 Y& t6 H+ {' Z6 D; n  F. L
  167. " V2 n3 o; y0 \! b" G3 @' ?& b
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    2 L/ ]6 n+ E4 ]' i

  169. # A7 E1 a8 \2 l6 T) b; B( {. {
  170.             Dim nullUnit As Unit = Nothing) q4 u& \) i- V6 q
  171. & N' p' X& y5 j) W7 V
  172.             Dim measureDistance1 As MeasureDistance& W$ \! N$ Y+ q7 Y' _
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)0 V, R- j8 b/ o: F7 J
  174. ) M' K0 I' }9 B% u- I# `! ~
  175.             result = measureDistance1.Value. y8 V* t  G3 o

  176. 9 }5 A+ `4 C' G/ L. Q4 H
  177.             'measureDistance1.Information()
      z% X1 `9 L; _2 B8 y/ `# d
  178. ! j* j; D( t, s: ?
  179.             measureDistance1.Dispose()
    / V  S- T0 y( v6 X
  180. / f5 [& d/ V" s2 M
  181.         Catch ex As NXException* w& e6 \/ Q% ^/ _
  182.             MsgBox(ex.Message)+ c/ p6 i9 ?7 K9 t! Q5 d2 {  c
  183.             Return Nothing
    : {( B: \8 [& P( k' z0 D$ I# l

  184. ! n: y! o6 ]5 b4 q
  185.         End Try$ G* `' P  w; Q

  186. 3 d( p" P( F% X+ Z  a" R# s& }
  187. 2 o  B6 ]8 B, X2 K4 O
  188.         Return result
    0 h% H& l" R; C5 S5 O1 h

  189. + C2 p) F! |" h  r8 }) E
  190.     End Function, M+ F) D* [/ S% h% |% p: y+ X

  191. ! }* `% Q4 Y  g1 C9 Z- _! e

  192. $ J; w) t3 b/ V" D* }2 G4 A+ o
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer
    ) Q1 D' F& ]: L

  194. / ^( p0 n5 |; k1 U2 h, D& D. |
  195.         'Unloads the image when the NX session terminates7 [5 r% q) w2 R: Q% Z. t
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
    " b' @0 {( g% \7 j

  197. ( h" q/ H% V9 P
  198.     End Function
    7 Y: o9 E& F0 T4 Q. i& A1 f. J
  199. % w9 C+ C' t# e6 `2 G( }
  200. End Module
    2 d% Y2 ?- {# D6 s% r! |
  201. </P>
复制代码
, p! i5 H' t; V* u7 F# w5 y* V
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了