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

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

admin 楼主

2013-11-5 17:34:33

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

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

x
. `2 E* i4 c8 w5 Y2 \* `: j0 M
NX二次开发源码: 装配中选点,并报告父对象2 p! _9 P7 [; k5 D

  1. " ?: q0 v" R7 P. d9 n' y  z
  2. <P>Option Strict Off$ Z2 _4 D2 d7 q, X- V7 H
  3. Imports System
    : x" m1 C& i6 Y; }
  4. Imports NXOpen
    + b5 [+ i; j+ ]7 z! D
  5. Imports NXOpen.UF! N0 w1 ]0 m( E! J8 `3 K

  6. 2 z) k+ ^7 X+ r, H8 K
  7. Module Module18 M0 a" R) q& U. p8 T' [/ O

  8. + L2 D( ?/ V$ m
  9.     Dim theSession As Session = Session.GetSession()
    6 ^3 x$ a$ i: o: Z- d
  10.     Dim theUI As UI = UI.GetUI()
    : \# k8 E3 t- m3 l
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()! h2 X" F* C! [2 j* j% M9 r4 O. u
  12.     Dim lw As ListingWindow = theSession.ListingWindow& Q1 M" A. b0 ]9 t$ j/ d& D" X
  13.     Dim pickedPoint As Point# j) D& n; M2 d4 ?4 P
  14.     Dim myModelingTolerance As Double
    8 S% y' ?$ v, q9 j( ^3 H) a9 j

  15. 6 m  r, a$ @0 `, U/ M3 N+ ~
  16.     Sub Main()6 k9 i8 ]- B; E0 |0 N6 M. P

  17. & U0 f1 p4 k4 g' [
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)' k; O/ P, s& g$ d7 w1 ?( a

  19. . j0 L' a0 ]3 v! V
  20.         Dim workPart As Part = theSession.Parts.Work
    $ P. E5 {+ ~+ N' w7 \4 [( D: z
  21.         lw.Open()# k/ \7 |( W" P& J% O/ u% L2 S
  22. * p4 j$ ?( k3 @3 N+ }( H
  23.         Dim myPointTag As Tag9 g. d$ L8 L- U1 |
  24. $ e# d7 v" P2 z/ F4 j
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
    1 S8 e; _" g# f; B
  26.             Exit Sub
    " a. A3 Q  x8 D
  27.         End If
    6 H0 J6 e5 P! v- Y$ C
  28. ) q5 z3 g( n. h& U. G
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
    6 b7 z. C! `! r# c
  30. ! k6 C" b9 z$ Q# f/ F* I
  31.         AskParents(myPointTag)# Z" t! {# t& O. u
  32. 1 ]; @0 [" ?; u
  33.     End Sub
    5 h& b0 J: z% k+ V6 Q8 L4 }1 Z
  34. 9 r  @3 ?4 A& \. F8 E( F7 e' t
  35.     Sub AskParents(ByVal objTag As Tag)& \6 {. Z. p7 x" ^% J; X! G5 a6 d
  36. ' c0 ^" y: F6 L8 B4 O& f
  37.         Dim n_parents As Integer
    : o" h& R3 s& o  A' x( W
  38.         Dim parentTags As Tag()
    + v3 _; n5 ?% o" `; A, j" Y& N: t
  39.         Dim myPoint As Point! ~7 f5 N: q6 K% V' x% D- @0 y
  40.         Dim myEdge As Edge4 V; [# n' X/ N" Y" r
  41.         Dim myXform As Xform+ i$ E- k4 j3 w
  42.         Dim myTaggedObject As TaggedObject4 a" }7 p7 g$ `5 ^
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
    + a$ k% p; f( U% D7 J2 v2 p9 @

  44. 5 [0 S" Y0 j# u4 |+ G: W+ f
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then" ?3 R0 p$ d# N( v% q
  46.             myPoint = myTaggedObject& Q; t, j" S+ n- I# r6 c. K  z
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
    $ i( J" e/ X$ g$ I
  48.             lw.WriteLine("")) M( c  X% o0 s5 E' D
  49. ! {0 Q* \5 E8 n( d) \
  50.             Try
    $ D- B9 A1 A+ l, h* o$ u
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)0 C7 F  v+ D5 W1 q
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
    ! \* n0 K" u) ]; J
  53.                 For Each parentTag As Tag In parentTags9 ~" K& v: ~4 b$ I4 ?
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
    0 L2 w7 t  K) t8 H6 X
  55. 6 L* m0 B- a# [" _3 x2 c0 ?
  56.                     AskParents(parent_object.Tag)8 ~( J' H, r; ?5 N" [: P
  57. ' m! L. W2 d# v
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then
    1 w. X2 [5 X% k/ Q* q- ?( e
  59.                         myEdge = parent_object3 ]+ _) D9 \9 d; s2 `$ M
  60.                         lw.WriteLine("")# x" Z$ }4 M+ O2 X1 e
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)) h/ H# Q! M" \/ c
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)" u' J" t7 o& ]3 W5 j
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)  d3 C: O5 d, a1 m& }  @; k

  64. , M% _- @" \& O1 I! w7 L$ @
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag
    ! x, k" e+ }5 R( k. N- ]
  66.                         Dim occTags() As Tag
    ; X5 Y! X$ k: R$ j3 S9 ~
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)6 u4 M# E( g3 z2 [* w% o
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)) o, H! v, O  u/ j3 J
  69.                         For Each temp As Tag In occTags
    4 p+ U8 L$ q, _1 q0 ]' m: W
  70.                             Dim myComp As Assemblies.Component
    ; S0 W2 r5 c5 {# Q
  71.                             myComp = Utilities.NXObjectManager.Get(temp)
    2 o. p$ v% m9 e' V+ o8 J
  72.                             Dim myCompPos As Point3d0 [: w/ h6 I" ?: \, z" F2 ?0 y  B
  73.                             Dim myCompOrientation As Matrix3x3
    4 E" `, T9 Y2 f5 X+ |, v, H2 F
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)) P7 @. Q# Z1 l7 y
  75. 0 I8 m2 }2 T) Y0 y
  76.                             lw.WriteLine("")8 m: e) I2 B+ O) e) Q: ]( q
  77.                             lw.WriteLine("component name: " & myComp.Name)6 Y/ r$ V  @  ?1 e& A% J
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)
    . l; @) Z. n5 d$ N- H' r
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)# {8 o# r* A5 Q
  80. - j/ F3 E) x3 r
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then
    2 |! w1 D6 w) d4 X2 [1 l6 a- [
  82.                                 lw.WriteLine("** This is the component that was picked **")5 j$ J5 u  X# F( K' p" j$ e$ q
  83.                             End If/ I5 O4 t9 B+ G+ G7 i

  84. ' i& @3 D6 c$ x* w, Y. F0 _
  85.                             lw.WriteLine("")
    : V. ]' E( s+ v- ]% j
  86.                         Next
    4 O( G; D8 u1 ^! v5 Z* V1 X

  87. " P! N, a, b8 _' ^0 [6 j
  88.                         lw.WriteLine("")
    6 o4 G! ]1 ~( u0 ~
  89.                     End If& L) T1 ?+ i, l/ A/ b5 J( Y7 s4 ^
  90.                 Next; ?8 s' [9 S* U! G! r( ?3 O% j' ^+ x
  91. . m( q2 [+ L, ]1 B& i* E, }
  92.             CaTCh ex As Exception
    # }6 V" Q& s. D) g0 a
  93.                 ' NXOpen.NXException: Current object is not smart
    ( z# L& R7 B7 C  ?  f  ]7 @
  94.                 lw.WriteLine(" Error: " + ex.Message)' x0 U+ z3 \/ g! Y, Y
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)* X5 L% M) x" A' t" w' W% Y( H
  96.             End Try0 N) O- F; k# s/ ]# C, V3 a( X1 F
  97. 8 D9 _2 M! ~9 {, T, S' a
  98. 7 f; _# E0 ]- \) P8 L/ V0 t2 I1 |5 G
  99.         End If- ?! ^& N4 U7 b) t+ O, }9 m
  100. - ~0 Z& k: \3 o8 o" \& f5 P

  101. ( b1 b- G% k4 Q, C. @# A& X
  102.     End Sub$ ~3 ]/ Q( z" c" [! @* d
  103. 9 }5 K) H+ G% m+ @0 a6 d' Z
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer6 ?7 O6 J# m9 d9 h( R# \$ s% o
  105. 6 j- u1 Q" h) ]$ S* m. B% [
  106.         Dim base_pt As Double() = New Double(2) {}) X( s7 L$ H& M" M
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null6 _) @; J+ p" u% [0 `7 l8 @
  108.         Dim response As Integer = 0( ^* x# \  N8 \
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt& L- Q7 E+ s2 ^6 D: S

  110. 7 ~9 y& a' a( V; i& [
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    9 L/ V3 {+ d+ L7 h
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)
    7 \" V( {* E" B% E
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)9 H4 B# G$ d, K9 Q2 F

  114. , d  \* h7 O7 \5 E" b2 Q
  115.         Dim pointLocation As Point3d
    * V1 T$ C) |# k' [% `; b' H; p+ `
  116.         pointLocation.X = base_pt(0)) ]% b9 i9 l' d7 h; W9 W% F8 H
  117.         pointLocation.Y = base_pt(1)3 z4 ]# D3 ^- l6 n3 Y8 ]
  118.         pointLocation.Z = base_pt(2)7 X5 y" v4 R+ N3 e
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)) K# H+ ]& t9 N
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    - T* F8 W$ l2 \, H" J2 U" S

  121. ( X2 i" V9 [  H0 C/ R, a. o
  122.         Return response
    . ~3 S; \% w0 i

  123. 1 o( B2 ~# k5 P2 x1 X' ~
  124.     End Function( [5 P3 Z! v( Z; f7 L* K
  125. 5 P/ }3 g- J) l
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response4 Z/ L, P8 z5 {6 }6 _# s

  127. : S& q. U$ i8 F
  128.         Dim selObj As TaggedObject
    * s1 ~4 ?( G0 c, \4 s* ~0 N2 R9 S
  129.         Dim theUI As UI = UI.GetUI
    2 z+ v: Q, {8 Z% i
  130.         Dim title As String = "Select a Point"6 P- @! V( A9 R! ~' z9 G' P% {
  131.         Dim includeFeatures As Boolean = False
    1 o! {; I6 [* U: U3 \
  132.         Dim keepHighlighted As Boolean = False
    # m6 J+ V, _1 M5 Y( W9 i4 G
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    % {% m7 [( o" ~% ?$ S' \
  134.         Dim cursor As Point3d$ }* s$ v% y# k. M  K1 [7 N9 T) C' a4 v! o
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly6 |. r6 g8 W2 b* v/ D- x. p5 {
  136.         Dim selectionMask_array(0) As Selection.MaskTriple. \/ P6 g6 X2 w# {4 \. i

  137. ) C, z( j( w7 o- z# w0 T
  138.         With selectionMask_array(0)
    * U0 G$ }6 K$ n' u$ V. S
  139.             .Type = UFConstants.UF_point_type
    ' B  U. m& H9 s2 r3 v# ]
  140.             .Subtype = UFConstants.UF_all_subtype
    - P! F6 m) q9 {" v; q3 s! M
  141.         End With- v% Z$ C: s1 ]$ E& B5 F6 k3 V
  142. 7 R1 g8 q" O- Q& e& l8 N
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    / {  ~8 F2 M- `7 m7 b
  144.          title, scope, selAction, _: e) V; f4 L( Y; B9 R/ y/ I! h
  145.          includeFeatures, keepHighlighted, selectionMask_array, _8 f1 x* Z( R% w! ^! L: P) X
  146.          selobj, cursor)
    2 u2 @1 r- I5 v* J
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then: r4 [, q' d- O; Y* T5 h/ r
  148.             selPoint = selObj  F1 L+ F% Y8 ~+ R7 |, |$ O. N
  149.             Return Selection.Response.Ok( Q3 k: Q( i+ o$ d) [
  150.         Else
    % S, w, A6 ^4 H3 W( o% c
  151.             Return Selection.Response.Cancel; C  W2 H0 k5 u" W* x
  152.         End If: U, h* F$ K. n4 A  t+ l% {3 V

  153. 9 y2 ~! q, v% e' K; g9 A, M
  154.     End Function% @  ^# v1 Q0 f" b
  155. 5 D. ?$ T* Z- p8 d
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double' A$ t6 w8 j, ^, y
  157. ' E, J. g. O# s+ w
  158.         Dim result As Double
    " l' K4 V& s$ y
  159. 2 @" h9 u. x' ?  ]1 q7 T
  160.         Try
    7 N2 |0 p' r0 A! e
  161.             Dim nullNXObject As NXObject = Nothing
    / o  u' Y: ]$ f/ o1 y) g% E3 o
  162. 6 X* R7 O; e6 n0 d4 c9 q0 Q
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder" L7 L: W7 _) Y% B! Y# E6 \, P
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)
    4 Z( M( M, m% C: Z1 D
  165. ( O# h: e/ ?8 p* f$ l& i
  166.             measureDistanceBuilder1.InfoWindow = False1 ^' X( j& D3 h; l( C
  167. : h: y& G! d# Y" m3 H
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    $ S# z: ]3 D0 p' |* \5 I

  169. * K' ]& Q, L) `
  170.             Dim nullUnit As Unit = Nothing
    : c; c; \6 x0 J+ j6 r4 D* t
  171. 7 Z. f# |$ T! {% k% h5 F% L
  172.             Dim measureDistance1 As MeasureDistance
    6 q" y5 Z- s9 r& I6 {* q4 w% y
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)
    2 Z/ k5 E; o0 d1 D2 f1 @3 ^
  174. 5 s; f/ I8 o% ?6 O+ F( K+ Y
  175.             result = measureDistance1.Value
    , C- {& x' R) U

  176. " O* F# Y' K, B/ d- ^
  177.             'measureDistance1.Information()
    % [  e7 a( M+ Q& N, H# C
  178. , n4 h, y8 C( J' Z. i( _# Y6 O% h
  179.             measureDistance1.Dispose()
    $ I) U( s( k9 r9 }% ]1 e2 Z

  180. / \1 q: _1 G  r( c% I, g
  181.         Catch ex As NXException
    0 }1 U6 b1 Y% i' n1 C# x
  182.             MsgBox(ex.Message)
    6 R3 k) e9 @& u( a6 T+ d1 O0 ~. r
  183.             Return Nothing5 n; U: }+ h# y
  184. 3 A5 P4 m3 s9 n6 h' O  N  I
  185.         End Try
    9 e6 e2 b5 D( O+ G; r
  186. 8 P5 r9 q- [. |

  187. 5 g" f6 x) R/ X' f) ~+ N+ i8 H0 m
  188.         Return result
    # q7 i4 f# S* D
  189. ; T' x0 ?* ~9 \
  190.     End Function1 [6 }  o7 U, a+ X& T& l  P  ~* z

  191. 2 m. M, A* K0 a7 M% {

  192. ( W. |  W. `* B2 \4 }
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer% N' ^) W0 o' P
  194. : @) p1 l6 T3 m, L" c4 y
  195.         'Unloads the image when the NX session terminates0 }+ P! \8 Z9 m' a. S7 I
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination8 l/ D: G7 n8 l# S' U- x4 i) q
  197. 7 b3 Q0 v3 J+ y# D6 z% z1 E/ e7 l
  198.     End Function
    ! ^- i3 }7 e8 @( p7 h, p

  199. " \2 J+ N9 h% Z! i8 _
  200. End Module: {" n* w3 b( l0 v, i) h4 [3 Q
  201. </P>
复制代码
5 n9 R, t% Y% T( S3 U% s4 O1 ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了