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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

4 ~$ x& ~1 z& a/ \% N1 c. M5 ~NX二次开发源码: 装配中选点,并报告父对象
- F3 H, F( W% ^3 P& r  j

  1.   z  e& p. X# u: I+ i
  2. <P>Option Strict Off
    8 G. j) K$ `* d9 K8 B
  3. Imports System2 p) |( t. u( c( T6 V, E
  4. Imports NXOpen5 G8 Z+ I$ I7 C2 u
  5. Imports NXOpen.UF: l$ s! b: i( K; r1 T0 w3 v2 c

  6. + [/ F& _0 L* c' [- k7 M
  7. Module Module1
    2 U6 l6 q6 Y& }6 h4 i

  8. ! q. U; e; T" \1 e
  9.     Dim theSession As Session = Session.GetSession()/ o" N; N0 \, `
  10.     Dim theUI As UI = UI.GetUI()( z$ q8 Y9 ~' l9 M7 d4 i! t
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    3 l2 j' d  n5 `) t# J- s( g* l% w
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    1 }5 S" Y( h5 M1 C+ E7 J8 i0 @
  13.     Dim pickedPoint As Point* U7 ?9 g& c8 z. b. C
  14.     Dim myModelingTolerance As Double
    , \, }0 Z+ g1 t$ b& R# K: j
  15. ; R2 z+ z" b$ u8 B7 V/ W
  16.     Sub Main()+ @' A. B) Y' s9 E3 Q- m7 [
  17. 4 k/ j: I$ Q- o6 B/ s1 v4 k/ D
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)" a/ Y8 x8 @. I1 P
  19. $ P2 V  e% z: p' i9 b
  20.         Dim workPart As Part = theSession.Parts.Work
    2 A- m6 E& o4 y( ^9 K( _6 R
  21.         lw.Open()* q/ n/ o% O) u' Y
  22. & f6 A3 l7 K. |# I+ y
  23.         Dim myPointTag As Tag
    6 y0 m- B. i1 }  K/ |/ l$ h' v& P

  24. ! ^- \  C7 U+ q3 V5 ~5 J
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then& g" ^* k# F2 J8 X* [
  26.             Exit Sub
    " y- f+ T7 f7 R4 I" e# d: K
  27.         End If! A8 v  C5 @# {" [& ]; t+ J. e$ F' O

  28. & L9 Y( T+ _2 c( Q2 T
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    * S; c5 t# E  O" {: ]3 F4 K
  30. 0 m& t& x0 o4 t% B8 r
  31.         AskParents(myPointTag)0 c" ^7 u4 F* C, D; D( m

  32. 3 k1 n3 D; g, W- v5 z
  33.     End Sub
    % y( u8 B0 H# H- D1 i

  34. ; G# l* J! B( i* H) V( l, I4 {
  35.     Sub AskParents(ByVal objTag As Tag)
    4 r% ~  C% U5 x  v) t3 [2 c

  36. 3 K1 x& |# D! W0 m- m: M
  37.         Dim n_parents As Integer! [/ C; ~* g2 o( H$ ?% u" U
  38.         Dim parentTags As Tag()' E( v& F" o- p1 m$ j* N# B/ N
  39.         Dim myPoint As Point+ e1 l5 b' \5 ?3 M+ i$ B
  40.         Dim myEdge As Edge" g& H) z, j& a* w1 N
  41.         Dim myXform As Xform
      H+ }( }7 z4 f' h% B6 M" H
  42.         Dim myTaggedObject As TaggedObject
    ' o: b+ h$ T1 z% v( Y9 K5 |
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
    9 }2 h5 R0 I$ n' ~5 h, g
  44. ( U8 l) X( G4 |' l; W  u
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then
    5 s/ V- Y7 H; Z) ~9 p
  46.             myPoint = myTaggedObject) L9 ~% U. d* d1 E( b
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
    & X' K, n  ?1 t
  48.             lw.WriteLine("")
    , w+ o. f9 o4 W! f( _5 i3 X

  49. : k$ s4 F: @/ q- }" n% t/ @
  50.             Try
    ) V" w3 }$ B9 \& f/ q
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
      V# k8 l) I6 I% x6 x
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
      j0 K6 }: j( `. F% {3 m+ t) j
  53.                 For Each parentTag As Tag In parentTags
    0 {) Y4 h$ P# V8 Z$ i1 N
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)6 @, b# ?0 _: S; l/ m3 Z
  55. $ I) q' |0 @) n4 U+ s* T
  56.                     AskParents(parent_object.Tag)6 N( P2 t1 G6 V" p
  57. $ C5 @+ P5 y" G7 [& E
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then6 E# b& f: N) j2 c( T! J
  59.                         myEdge = parent_object  N% _, k& F# c+ t
  60.                         lw.WriteLine("")4 Z( u; f8 E7 ^2 l# T
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)
    " k( K) J# B- g9 U
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)7 |+ n% ], I4 a4 S$ F8 ^' Z1 c
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString), J# L2 C2 o; m9 J1 Z$ E* J) {; I
  64. ) g! f( @$ V' x$ m
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag1 ?9 U$ H, C$ \
  66.                         Dim occTags() As Tag, Z9 }; s- G* ~" }7 C! Q
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)- x9 z2 U3 t- l) s$ |
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)& P: o, d, u0 M/ {! d# u3 I6 I1 M
  69.                         For Each temp As Tag In occTags
    7 b4 _9 R7 D' Y, i" k7 z( l- d
  70.                             Dim myComp As Assemblies.Component' B) O5 {0 w9 i+ l* ]$ ]( k
  71.                             myComp = Utilities.NXObjectManager.Get(temp)
    / F, ]  @+ r+ x
  72.                             Dim myCompPos As Point3d
    + `" p7 ?" T. U$ G  f
  73.                             Dim myCompOrientation As Matrix3x3! a. t/ B/ A7 W' k  P
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    6 R0 F& n1 L% l) b
  75. 3 C. h2 h1 E1 `, ^4 f" ]
  76.                             lw.WriteLine("")7 i  T* G$ E, Y9 }% A
  77.                             lw.WriteLine("component name: " & myComp.Name)3 j( E& H0 `  }
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    - G! @9 B) b, |$ Y2 g* R
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
    1 i3 y6 }3 E$ Z; M9 m
  80. # ]& H* X, c: ~/ d; w: u8 r& \, z
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then
    & |' t9 G4 d  g5 x7 ^$ f
  82.                                 lw.WriteLine("** This is the component that was picked **")
    ! n" x# {. g* ~, j) _7 t2 x
  83.                             End If
    6 J; c. _+ p8 ^5 g
  84. " e9 }$ y( c4 l9 h# x
  85.                             lw.WriteLine("")
    ; b: R% M- E2 j) ]6 L
  86.                         Next2 _, {  k) u% a, t! s! G& G

  87. $ b) z8 e7 x. X  V
  88.                         lw.WriteLine("")- {4 B! @7 M$ Z' M$ F
  89.                     End If
    % o- w" N( ?& e
  90.                 Next
    9 K" r$ N: N: V
  91. : [$ K3 ~" I$ Q, B! J
  92.             CaTCh ex As Exception$ s- R) P0 Q( u' S
  93.                 ' NXOpen.NXException: Current object is not smart& _1 p  |$ z  _7 p  B
  94.                 lw.WriteLine(" Error: " + ex.Message)
    ' j1 D* T8 R' X6 V
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)- Q* ^# j2 d, y3 F8 j$ o
  96.             End Try; m- k/ r1 I* R% R

  97. 8 F) f" i. |: Q" Y

  98. " N+ A$ I7 N" `$ p
  99.         End If
    2 l$ Y, \9 h: e% }. b6 u

  100. # R( {  n" a- W! P5 ^

  101. ' u5 b8 L$ @9 X: i
  102.     End Sub& l% [: X+ c; h/ A: T

  103.   m  t/ k8 w- _& j, c- @
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
    % B1 [* _* a3 p
  105. & `) E( x" T, A* N) C3 Z! D! t
  106.         Dim base_pt As Double() = New Double(2) {}
    / y. q% Z" x8 p" ]( }
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null
    ! v. I8 e5 W1 j* T; P$ d
  108.         Dim response As Integer = 03 g! h; K  e7 j' }9 s
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt; ?2 j8 A; _  J) t

  110. 2 y7 X; K. E+ ]2 ]+ l( b. c$ w
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)2 d% q% ]" y# v! l6 E
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    # p6 s) g& A- }* ~$ T
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    * w* L, j8 @6 f7 [. }0 {' M

  114. % V$ I; x5 }' O, B% E
  115.         Dim pointLocation As Point3d
    . p: v$ K; B2 r! V% C
  116.         pointLocation.X = base_pt(0)
    , v. Q7 J. c/ D- J  v) b& S; b
  117.         pointLocation.Y = base_pt(1)6 d* }; q, Z8 F: T- ~/ _
  118.         pointLocation.Z = base_pt(2)
    ! j3 s" l' x6 w5 C
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)
    " S7 W7 d( S6 K7 [1 p
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)$ R' p; B' R$ @  S5 }. q
  121. $ P5 z$ I" j/ m* ^1 n7 E3 T3 J  K  U
  122.         Return response
    $ @% n" T. l- G* X0 z0 o
  123. 2 [& r: d) O$ e  ?( R4 g
  124.     End Function  q6 i# M& w& M, C
  125. : f! y/ D) V0 B# p! z
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response" t- d( A6 n& H' |3 M
  127. , ]7 P) R& o5 R. [
  128.         Dim selObj As TaggedObject1 A- z! W1 ^5 D8 a7 f0 c
  129.         Dim theUI As UI = UI.GetUI8 \( ]+ [$ ~6 t' c3 ~0 ]
  130.         Dim title As String = "Select a Point"9 N6 A  C7 U; R1 ?
  131.         Dim includeFeatures As Boolean = False
    8 \8 m5 G8 M% e5 S/ Y  Q7 U
  132.         Dim keepHighlighted As Boolean = False9 }3 o9 v- h. i: |# O" b
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    ( ?0 B4 H1 f  |3 Q; v8 Z
  134.         Dim cursor As Point3d
    / D5 E+ k) M; w% w
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    8 `; V- D: o) B, |
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    # b0 k3 ~  S# t1 E1 n
  137. 3 j/ H! ~& q. C  F
  138.         With selectionMask_array(0). x. N: l6 Z2 {) N2 n
  139.             .Type = UFConstants.UF_point_type
    : Q4 S) v3 P$ X. d) W# U
  140.             .Subtype = UFConstants.UF_all_subtype
    , Y. y9 a8 |6 }2 j
  141.         End With
    . E# E0 F& f, c) U5 G

  142. 2 X" c- f* g; A& w3 r7 }
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _# K2 V8 ]: E% C- e, u
  144.          title, scope, selAction, _4 b: M- h" L2 l6 {+ u( V
  145.          includeFeatures, keepHighlighted, selectionMask_array, _+ D& x/ |) B' p2 L7 }# |
  146.          selobj, cursor)1 G* l1 D* U" d5 l
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then* c' s( s6 [/ v8 F+ W
  148.             selPoint = selObj0 `; ]  Q; h; W, j8 o+ V9 c$ m3 b
  149.             Return Selection.Response.Ok7 q6 f1 N: H% a8 M
  150.         Else  T, e8 I( ~/ l0 @/ t
  151.             Return Selection.Response.Cancel$ E; a+ b/ B2 R7 T' f2 }4 h8 g
  152.         End If! A* Q; [" {0 [5 [: c+ b* X( X! P

  153. * m/ P3 ]' c& I6 R
  154.     End Function9 v: c9 _  t, h/ j$ h% S

  155. 2 g8 t- ?6 o4 h2 c
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double
    1 B  E) z8 C0 \: f# E# D
  157. " t% n7 h# G/ x" U
  158.         Dim result As Double- L$ s" r% C/ q' H+ H0 i
  159. 1 t: B$ B- _5 s
  160.         Try9 D' K+ d$ |; d4 c+ H
  161.             Dim nullNXObject As NXObject = Nothing
    + m: N9 E# x. P, S

  162. ! A0 {( U9 I9 L: U/ \
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder( C) _1 Z$ f2 m' ]/ p
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)
    3 g) o6 ^# W9 z! l

  165. 6 A$ W$ }6 q" i- l
  166.             measureDistanceBuilder1.InfoWindow = False
    / w! o$ L$ {( J% I7 l, O5 x
  167. : M! o9 N% D' D# R/ j; q) z9 O
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum  D; z- E6 v% r: a; B8 J

  169. ! g8 X! h$ a3 H3 r/ ~  d8 W0 i
  170.             Dim nullUnit As Unit = Nothing  z( l! m4 G: c. Z

  171. : s, X" [1 k8 P5 g
  172.             Dim measureDistance1 As MeasureDistance
    # m) ^2 K! y+ L4 C& {$ @
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)
    # {" d" [  m* r* F( {3 o8 U# U
  174.   q2 v) r! `3 R! W9 s# c# L
  175.             result = measureDistance1.Value
    " ~% Y; o" q) }1 }. F5 P0 q# h

  176. ' H* s8 F$ i4 C# G0 ]  q$ O& A
  177.             'measureDistance1.Information()$ \2 Z; d3 T( q1 g. X

  178. 7 F1 i9 _' @" R5 O, y$ g
  179.             measureDistance1.Dispose()
    % S( {2 A/ ^5 P; F7 N2 a
  180. $ i8 T0 C+ f9 R
  181.         Catch ex As NXException/ ~* x9 k- [0 e( P: u' t0 @
  182.             MsgBox(ex.Message)
    5 l7 z8 |; J$ J1 U" N1 r& R
  183.             Return Nothing* ~% [5 Z" `- m  V/ J5 J

  184. * ~) B( y* W+ \# ]( b% M( x$ F
  185.         End Try
    3 a1 D, H4 L" H
  186. 3 ~8 }- s# J+ ^

  187. 4 G4 [% n& @  V7 t
  188.         Return result, @. ^$ |# G& g9 {' M, S' ~5 {+ y5 `
  189. ; Y2 c# [8 i" V
  190.     End Function$ M7 \. T1 [' k+ l- c/ _

  191. 5 V, _( ]# h9 a& W' H

  192. 7 a/ [' Y& z8 N$ k
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer
    : b' e- i  [& }9 l. @. ~
  194. 9 t3 X  M  x. l* f# ]( G' I5 e3 u2 B
  195.         'Unloads the image when the NX session terminates  j" T+ Z/ ^9 y) r" ~
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
    6 g2 w$ S8 W$ i: o# M3 }) l
  197. ' C( R  ]& u3 W  j" x/ V3 M
  198.     End Function8 y7 e: d. t/ J8 c. o3 e

  199. & T! H& [. i1 x$ T
  200. End Module% j1 ~) @/ H# P  I( t7 _
  201. </P>
复制代码

+ E; p# D+ j- w/ ~' M6 s' Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了