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

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

admin 楼主

2013-11-5 17:34:33

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

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

x

. a3 l# R+ r6 R6 r$ \NX二次开发源码: 装配中选点,并报告父对象
% x( r$ J% k7 w1 W# [7 j

  1. " Z6 |* h' @; Q% Y' H" P5 t* H
  2. <P>Option Strict Off5 \% {' H. _# F8 v
  3. Imports System
      Q" o  y( S3 m: k, G# ]: b
  4. Imports NXOpen: F3 E7 b, m7 P. H) h+ k2 R* ]2 g* d
  5. Imports NXOpen.UF+ i4 ]1 }/ N/ a7 Y0 w  e' H
  6. , D, t( R$ j/ w- R% \9 C
  7. Module Module18 |  K% ?. o; n4 m8 f6 r
  8. ) l* q" @7 `0 n
  9.     Dim theSession As Session = Session.GetSession()) ?4 b# Y. L  r3 y
  10.     Dim theUI As UI = UI.GetUI()
    ' m  M7 r! g0 I1 P' [
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()$ j  b% v; q7 |
  12.     Dim lw As ListingWindow = theSession.ListingWindow& L! S& i6 |. c. B
  13.     Dim pickedPoint As Point
    $ C7 u3 h# w+ g% C. B' n: _0 `' l  w
  14.     Dim myModelingTolerance As Double
    3 W( w2 }- s/ k- |. f; S2 D% J

  15.   v! {  z4 z( Z1 r( t6 e" m
  16.     Sub Main()
    9 k$ ?. w4 R% v

  17. 7 T  ]6 m7 [, m5 k  C0 s* h  F5 c" t
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
    6 |5 g# t7 S: G4 P) e! n
  19. 4 i, o) N4 a+ _! X' d
  20.         Dim workPart As Part = theSession.Parts.Work6 Q  [1 G. W3 X
  21.         lw.Open()6 S, i( d# A7 `% h0 N

  22. / f/ |- i7 d& S) l" f, }- C
  23.         Dim myPointTag As Tag6 [! ~  f/ }4 q2 S, k0 X

  24. 8 L* ]) z& V4 L
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    ; n  W7 _4 ]# a9 P% a
  26.             Exit Sub: I4 n7 Q0 E3 Q; S8 {5 z
  27.         End If
    , |, V# d* _- r. y0 B$ h

  28. # _! Q; u5 E2 M- f8 R/ j
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    9 J# p8 _# T  a7 b
  30. . T  }8 e6 |5 h$ y' ]1 \  P
  31.         AskParents(myPointTag)
    / J- ^* H, Q9 [3 m  [! a; r3 `  X
  32. 1 j9 S; L0 x& c' D/ ?
  33.     End Sub1 z) e- x. e8 @- }

  34. : P7 p& }: ^! b& C& U: q% {- b5 B  g
  35.     Sub AskParents(ByVal objTag As Tag)
    . o& X- o! W  H" p7 @$ p
  36. ( y0 I) o+ @0 m" v1 J, [# a8 M
  37.         Dim n_parents As Integer
    / e  Q& e0 Z1 h
  38.         Dim parentTags As Tag()0 q& M  O4 x" n& n& [3 u- z
  39.         Dim myPoint As Point7 E" f& s7 R' T" k) t+ h+ h
  40.         Dim myEdge As Edge
    9 s2 \9 o8 q( F8 }5 b
  41.         Dim myXform As Xform
    1 ]9 s. N) K1 N
  42.         Dim myTaggedObject As TaggedObject  v5 Q+ S6 H6 y
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)) Y, U1 c, {8 A! S$ N+ y
  44. 3 m. w3 Z  r  a/ n
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then3 h! ?; T+ O5 N( g
  46.             myPoint = myTaggedObject
    : k) ^) ~# t6 r
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)) N% L/ ]- K1 T2 g& C* ?9 P
  48.             lw.WriteLine("")3 T0 V9 j+ a4 k8 y! v
  49. - d- \9 K  B3 W. o
  50.             Try3 K6 f$ l% I- R* R: M) N( f8 Z9 T
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)+ i2 R. [% T7 ~$ L
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)" q0 D/ R( U+ K- `9 k
  53.                 For Each parentTag As Tag In parentTags
    7 H, n$ J8 C( y  k0 O
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)8 i3 V8 q, M' h
  55. 1 N6 r2 }  \' ]0 @  r
  56.                     AskParents(parent_object.Tag)
    2 T3 f0 ~3 K4 {+ t% e% q

  57. ( ^" M. {# B! ^! ^& i* S4 v
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then4 _$ K, w( R8 g% \* K$ h
  59.                         myEdge = parent_object
    2 |" E: ~% N8 ]# u; f
  60.                         lw.WriteLine("")/ o# S) H1 q  g" ~  ]
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)- X/ }& H/ |; X( n. a
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    7 c- R$ i& p7 K% h, I0 a
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
    . v! {+ o* D( w  S8 w
  64. ( T* `/ g* I9 Q6 T  W: r) w
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag% H  r0 y, F# y1 l' N
  66.                         Dim occTags() As Tag
    ' m& b( y/ n  J. _; k1 H
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)! p) X( p4 `& n. m1 W) b
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString). [; d" ]& ~" l- J
  69.                         For Each temp As Tag In occTags8 [- ~) e' l; s; J/ M
  70.                             Dim myComp As Assemblies.Component
    ; X3 V- @8 e( b9 }1 K
  71.                             myComp = Utilities.NXObjectManager.Get(temp)
    4 l* V3 X" t' ~9 H% T
  72.                             Dim myCompPos As Point3d1 F* `: g; K6 [% b
  73.                             Dim myCompOrientation As Matrix3x3
    ( w' F, O. y9 a# c, \3 X* t
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    ! T- n: o2 J  @' y9 n
  75. 7 Z& ?, Q! k& O2 J, i: i) E, P$ }5 C& w
  76.                             lw.WriteLine(""); u" v: ~, @2 P" }2 \! O
  77.                             lw.WriteLine("component name: " & myComp.Name)9 O5 b( M- m" y. H/ t, \3 G3 @
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)7 k9 D% Q! U  u/ H; |; _& I- [
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)( V1 l' m/ O' X( Q
  80. / `" z7 e- W: s3 j1 Y+ S1 B; m
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then6 U# E5 X- f$ a" K& P1 l& ~
  82.                                 lw.WriteLine("** This is the component that was picked **")2 [# D3 u" G7 p, Y
  83.                             End If
    ( K4 H4 ?: P: z- W  S2 \
  84. ( t0 z: @4 D7 G+ |2 C$ s
  85.                             lw.WriteLine(""); D* V7 h+ q: S) F3 t+ k
  86.                         Next
    3 f8 T9 R! [8 u6 K5 o9 U
  87. 8 ^+ \; F1 Q+ ^8 p
  88.                         lw.WriteLine("")
    & [( j' n5 K; V! r: H" c8 ^
  89.                     End If% R# Y; c0 I0 d& j: E
  90.                 Next0 Y3 T5 j5 f- ~/ K/ X; A
  91.   X+ b: u+ f; m8 N
  92.             CaTCh ex As Exception
    $ \! A  o6 V9 |8 Y5 A% a5 O
  93.                 ' NXOpen.NXException: Current object is not smart
    0 [) b0 e& h& v0 {
  94.                 lw.WriteLine(" Error: " + ex.Message)
    4 Y: t2 d1 u& U, Y  a4 u( H
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)3 T% P+ g$ u8 H, l' I8 ^' H
  96.             End Try
    " O1 q% `0 m  _/ |

  97. ! l5 ]' ~  f3 A. N( p

  98. 2 B  b8 f% L2 e' W% ?- R4 w9 a
  99.         End If
    * x: E9 f% g- z+ ]

  100. . d- y. `0 h3 {) u) `! m

  101. 8 g8 k. B$ k2 r6 A
  102.     End Sub3 p/ ^/ H$ l; A3 v
  103. 4 d2 B6 h8 b' Y+ i6 ^# C  I
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
    3 q9 k1 H: Y, \# j+ l: x  i' w- Z; }0 Q

  105. 4 O4 O/ @. X! ^, s# p
  106.         Dim base_pt As Double() = New Double(2) {}/ g1 B: h, {( [! F. c# P
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null, f" d: r+ N0 M$ e, j2 Y; {! N
  108.         Dim response As Integer = 0" `4 x  G6 r7 _& H  t& Q  |
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt2 o3 C0 M1 p3 z: I. |/ _
  110. $ q9 W) K9 ?: |- {  q
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)/ k2 \2 T8 z- f7 w+ C4 A* r* @& d
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)0 z6 a: X! H- A' d7 c0 F9 U  b
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    2 u) i% S" @! p2 p8 H0 c" u
  114. ( z. [, W  [8 _
  115.         Dim pointLocation As Point3d
    . K: t$ k/ h  ]4 _; k! O
  116.         pointLocation.X = base_pt(0)
    8 B+ x, r# t3 X% b
  117.         pointLocation.Y = base_pt(1)4 r: o4 `( c( v& ?6 n7 A4 B$ b
  118.         pointLocation.Z = base_pt(2)
    " Y0 N1 q# j1 C7 X" w6 [/ b: ]  l2 G
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)
    ( p3 D2 L+ b8 ^5 Q- y  [2 ]
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    & f2 C8 l# b& U$ ?1 I. _$ w7 U7 F9 p  t- r

  121. ' F' f: ~$ y" W' [: X
  122.         Return response% p( E2 k* ^: e$ P: J7 Z

  123. : m( P9 _* l6 [2 f- g# I
  124.     End Function
    & E4 _5 ~" e- X4 y$ [

  125. 3 s: n5 |$ X" U) p5 _
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response
    ! }& X. h6 v& L  g" @0 K9 R4 l3 h4 y% \
  127. . q* ^* |: v. E) ]+ K0 y
  128.         Dim selObj As TaggedObject
    5 C9 a7 ^1 q& |2 a* S5 O: K
  129.         Dim theUI As UI = UI.GetUI
    ; @0 R; v8 A# S+ v- I
  130.         Dim title As String = "Select a Point"
    * U8 H  g1 ]2 @) Z9 y4 @- d/ Y
  131.         Dim includeFeatures As Boolean = False% z+ I: r# [4 @6 R8 U; m$ `
  132.         Dim keepHighlighted As Boolean = False1 P2 Z( I! ~' \7 b/ B' s2 V2 k' s
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific- @* s: ]5 M9 R! J9 {0 O
  134.         Dim cursor As Point3d# A% n4 i" Y2 u7 Q$ e- ?2 M
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly( ?% D( G" |0 _- T' O+ u3 [
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    # @4 F2 v7 I- {% ~2 i
  137. 1 n! ]8 d0 |% @$ ?( l: k8 C
  138.         With selectionMask_array(0); l9 L# s) L% J
  139.             .Type = UFConstants.UF_point_type
    , j) [9 [$ \0 A0 b: C2 P4 {
  140.             .Subtype = UFConstants.UF_all_subtype6 ?) P2 t% H. o; ~
  141.         End With
    : D3 a: d& |0 K3 W6 {
  142. $ [9 F7 w6 l# [( B
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    ' a; x* D* r" u* T, E4 H- ^9 M
  144.          title, scope, selAction, _
    3 m' d$ ], B8 I; s8 ?: r  D
  145.          includeFeatures, keepHighlighted, selectionMask_array, _
      Z4 O, M, T  B! ^& c: @: H# K, Y2 V
  146.          selobj, cursor)
    ( w& q1 G  s/ y' w: y3 Z1 g
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
    & H" O. T1 k* ~/ |
  148.             selPoint = selObj7 t" N" _: ]! V& l6 @
  149.             Return Selection.Response.Ok
    ( L, O- H+ n; L' Y# s
  150.         Else) A1 j1 x6 M( ^2 G4 ?* S6 u1 W
  151.             Return Selection.Response.Cancel
    . M" |9 ]3 c0 q  S! |0 U  w
  152.         End If
    # N( A) q  [: l5 x2 d

  153. , ?) u: [/ m, ^3 ]8 V
  154.     End Function
    + [+ @& o7 B$ K4 r

  155. 9 N! n0 f$ }& H: x0 |
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double6 F; F& D: k  V5 V  _8 r
  157. % r9 u6 |" @6 l
  158.         Dim result As Double
    9 ?0 j* b2 B5 X  W9 r

  159. / A- g- S! [6 q7 @; s; o: K
  160.         Try
    $ V' E' ~1 o) |. y6 J* n
  161.             Dim nullNXObject As NXObject = Nothing6 v1 {% T- [8 B+ g" i0 S
  162. 2 s: R- k' G; B5 _2 ~
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder& b, j) I1 w$ I4 w8 Y" l
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)) \& p) b6 r) F
  165. 0 e! K# {) ?- |, f
  166.             measureDistanceBuilder1.InfoWindow = False8 s2 P& l* y1 x' B+ X% o! c
  167. + Y& s( p7 b% p) l) p$ P
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    ' _2 |' k* j8 [2 N3 O
  169. 3 I. a8 n& q1 U% w  m' \0 k
  170.             Dim nullUnit As Unit = Nothing" W) S% V1 i3 e# H
  171. 8 R* r; S* \+ u/ m% i
  172.             Dim measureDistance1 As MeasureDistance
    6 [/ y4 @# ~- c
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)* K- z8 A5 ~2 Y5 e, F  |

  174. - P6 [9 s+ P/ _7 n9 _& C( r
  175.             result = measureDistance1.Value
    / G8 {4 ~7 V1 [1 s$ T. V  E% l
  176. & R, U5 h( Y0 i7 ^: A/ z# m
  177.             'measureDistance1.Information()
    ) A6 @4 K4 ~) j- m+ c

  178. 1 b% K$ r% b: E% u2 v, T2 t. k" a
  179.             measureDistance1.Dispose()- J( |: a- ^9 U7 t5 V9 v1 g

  180. ) ^9 p% i$ h6 g( _- L
  181.         Catch ex As NXException
    / m! V: B" _# q. d9 M- e
  182.             MsgBox(ex.Message)
    0 a5 W' s# `! K: r
  183.             Return Nothing) ~; D4 `9 E8 Q( R! A  c
  184. * p  ^* I3 \4 @4 y$ ?) Q" M5 }3 S
  185.         End Try% D. ]  S# B- g: s: b  x) S8 s  N

  186. # r. x9 Z/ o3 p9 _

  187. - O* |9 f# N" c6 X$ Q
  188.         Return result9 g6 W/ A7 K3 x- E6 y

  189. % y2 _4 y( U3 y5 k' [
  190.     End Function
    ! x" i  I7 o( @. V& }$ {
  191. % [7 d, ?/ ?1 e0 L' J4 K
  192. 8 W5 k  v1 V; U2 M9 p3 g
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer
    3 e. o( ~5 E' }5 r2 Z
  194. 3 q' ~" [- f" ~- C; q/ q
  195.         'Unloads the image when the NX session terminates# s& e+ d" l+ D% a, C) G5 P
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination1 i8 k5 v3 y; A3 q# W9 S

  197. 5 h' Z1 a! O* g  v1 A# k, g: ?
  198.     End Function" }+ m  {7 m5 X9 G* Z# p  ~/ ~

  199. 5 h$ J) ~% q# t5 E/ N! |( E: \" h
  200. End Module
    * @3 s. r! P: t% _" A3 X
  201. </P>
复制代码
/ c$ v, y2 H) e$ ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了