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

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

admin 楼主

2013-11-5 17:34:33

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

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

x
/ p9 W8 }9 u' b4 h' Q
NX二次开发源码: 装配中选点,并报告父对象7 I4 s( o; r1 C) o7 E3 ~) H- d$ O
  1. ) a" ?" X0 i+ y! g2 A6 ?
  2. <P>Option Strict Off/ o: `* M: A- Q+ P' d
  3. Imports System% o/ r& D7 `$ o# S4 ]& Y% F
  4. Imports NXOpen. q6 f% n* K& w: t& m$ w
  5. Imports NXOpen.UF9 D+ d: x6 {+ {
  6. " ^5 l% M1 `* K3 C+ x, l) C
  7. Module Module1
    4 f  m' n* c( y! ~

  8. 1 }6 L5 e) c  i# h+ H+ W9 t
  9.     Dim theSession As Session = Session.GetSession(), i* P! Z6 V" |1 k' \
  10.     Dim theUI As UI = UI.GetUI()0 k$ F' V  B7 Z7 U3 q/ [
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    6 @6 w9 P6 [( h- @6 |0 x
  12.     Dim lw As ListingWindow = theSession.ListingWindow
    7 X% O2 B5 l0 Z" e
  13.     Dim pickedPoint As Point; o7 c1 w' G: y- b+ n
  14.     Dim myModelingTolerance As Double
    5 R7 q' R* U/ p4 R/ [

  15. 9 z2 [3 u# w+ H
  16.     Sub Main()1 k8 ^% q- G" e' m
  17. ' Y9 o  t4 ~2 B; s
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)4 p. X+ i5 p/ n# [+ l9 B
  19. 8 E! E4 ]. k' ]4 j, {% f$ o& F
  20.         Dim workPart As Part = theSession.Parts.Work
    , k; q0 S$ f  w3 t
  21.         lw.Open()
    ! T3 B3 X# B' m- f0 u  Z' d8 ~% G

  22. ( e, l& Z0 \2 q: Q
  23.         Dim myPointTag As Tag
    1 q! V- x$ W4 p/ z& e
  24. ( |; q% @% D  E
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then. ]3 Z( p* H+ i' q  V8 l
  26.             Exit Sub
    + I" v; c, s. R3 O$ U& c) z% N' G  L
  27.         End If5 V, n. e0 R# |# o
  28. 3 J, ^, G' t2 \4 c6 z
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
      h' Y( X4 P* ?) l3 q/ B

  30. : h# `, {3 [! m" j1 s9 P
  31.         AskParents(myPointTag)( n  i0 ~* l* U
  32. 5 T7 u$ {" y) r( ]2 o
  33.     End Sub/ Y  [- C- Q( s: J, X1 e& K
  34. # ]5 h; F7 U& F4 F
  35.     Sub AskParents(ByVal objTag As Tag)
    : p+ t* V4 [; Q
  36. # a. ~+ y7 W5 ?3 M9 y) y% Z
  37.         Dim n_parents As Integer/ s! \! {% I+ h0 f
  38.         Dim parentTags As Tag()6 W; N4 N7 O7 [! h
  39.         Dim myPoint As Point
    ! B+ z8 O; U. u4 f" G7 e
  40.         Dim myEdge As Edge
    3 k2 ?# J" D0 M8 r& v3 V
  41.         Dim myXform As Xform
    & T; `6 w0 I8 y/ C& z# l
  42.         Dim myTaggedObject As TaggedObject
    6 |! p# [7 Y) Z  P8 u. _
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)- p" @  K4 F1 ]& k( B& i
  44. , J: M5 |* l$ B# k( R# k7 V  E& u
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then
    # v/ a( q1 P. ^6 `# j5 D
  46.             myPoint = myTaggedObject
    $ Y- M  G& n0 f
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)9 Y6 }2 X. K' k" U; u4 F2 [6 n
  48.             lw.WriteLine("")
      K3 @& W3 _% n: O9 ]
  49. & ^/ m7 ]7 u( b3 V& A% f8 ?
  50.             Try# G) ^3 K; r" J) w
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)7 w* @* J( U  v9 [; y7 z/ W% i
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)
    7 N- b" |- I' \/ ^3 }
  53.                 For Each parentTag As Tag In parentTags
    9 z/ i/ D7 t3 Y/ J, \" l+ I
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag); ?* k  q3 D/ y) f  I
  55. : E/ d0 ]6 l6 F" q  J
  56.                     AskParents(parent_object.Tag); G9 i0 L/ X1 ~4 J

  57. : u; Z0 u' g' A
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then' V  i8 G: {7 K9 Q: J, j; ]! {
  59.                         myEdge = parent_object% [3 @6 E- A; _7 i; W
  60.                         lw.WriteLine("")
    $ H9 n7 s3 x" x! c2 b: l; z- V- O  X9 C
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)
    1 V1 m! j& [% B$ [( S
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
    1 y6 z8 e- a  A+ E% d4 [' O
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)) f8 @/ ~! q) M+ y
  64. 5 Q9 S2 `- @1 I9 e/ W4 T2 a5 t& r) f, {
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag' _$ T9 m/ U  l8 m7 B
  66.                         Dim occTags() As Tag
    $ t: f+ m& G' J* n
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
    8 \* u3 Y$ s% y" P+ r
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString)0 T3 t: E1 m6 X+ K3 \; G+ U8 x
  69.                         For Each temp As Tag In occTags
    ( i' G& e( b1 R
  70.                             Dim myComp As Assemblies.Component
    % {: B- i" ~! L# O) b1 @9 z
  71.                             myComp = Utilities.NXObjectManager.Get(temp)
    " e' e3 [& \- S
  72.                             Dim myCompPos As Point3d7 Y5 W% N6 l# ]- P  I3 g
  73.                             Dim myCompOrientation As Matrix3x37 X9 ]( ^* r4 y6 s0 D
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)+ ^' Z. {  t! ]$ }7 z
  75. 3 G7 j; l6 K% H, n9 v/ X, E
  76.                             lw.WriteLine("")# T9 T0 Q, U" e. s+ O" t% x. A
  77.                             lw.WriteLine("component name: " & myComp.Name)
    ( a; i7 L3 W: m* ]
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)- u3 s  X3 g  m2 o  W. i
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)6 a! ^# P' X/ b9 D5 ~& ^, @
  80. + u1 B& @" A; j4 c; m
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then/ o, N; O. _/ ]4 x3 \
  82.                                 lw.WriteLine("** This is the component that was picked **")+ b+ [6 \* Y$ ]3 F+ q8 k; t; g
  83.                             End If. C/ }( X: l6 a0 e( ~
  84. " x, w* `, h0 ]4 m7 j
  85.                             lw.WriteLine("")& F4 x' @* U, n
  86.                         Next$ R# _+ d* F  }. j  ]; @: F& H# ?
  87. / P; t' V* F, b  `# V! g
  88.                         lw.WriteLine(""); i9 l4 }' C+ i! n
  89.                     End If$ X0 i$ m/ {, t, s
  90.                 Next
    ! G" e1 U  O" h: H& f; W/ q5 A' H, Y

  91. . I) `4 W' _. {  Y1 w# z
  92.             CaTCh ex As Exception8 q  I1 Q% M" `- }
  93.                 ' NXOpen.NXException: Current object is not smart
    8 w; H& z7 C; I" \/ t6 u9 v4 _
  94.                 lw.WriteLine(" Error: " + ex.Message)
    + L! r6 Z1 b& B
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    / y7 F' T/ a% l1 e4 D9 m
  96.             End Try. O- `. h% w$ d: u8 E& ~6 w
  97. ) G8 [; \, S6 F6 a, x2 ]  Q( E  p
  98. 1 U% a1 L  v) f2 c) O9 f2 f2 P
  99.         End If& ^/ H' _+ {! ?4 H! Z

  100. 7 h: I, j; ?0 P6 n' _% t
  101. ( h% g/ X. ]4 ^% m6 H6 G9 |+ n
  102.     End Sub7 r6 `% |5 w! C* `& u' B

  103. $ g7 O7 n$ i5 J9 g
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer2 c8 _0 g) R. _+ N; j+ K
  105. * K( O! i1 |% ~) a* J' o
  106.         Dim base_pt As Double() = New Double(2) {}
    $ a3 T5 N8 K7 H6 e$ \
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null8 B$ C" _7 u: h0 B, O+ g4 \
  108.         Dim response As Integer = 01 u# u1 T- m6 W$ F
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
    " y. Q1 q* ^# E6 L: e

  110. * {; S- {" p2 S% I/ p, ?# T
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)4 ?7 i& _$ z) j9 @
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)! I  g6 a3 f# j( R7 ], f( r. v
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    + E% I  D5 X, ~, i/ Q

  114. % r/ R6 b% _; [# w9 U
  115.         Dim pointLocation As Point3d- e- x# D1 K1 `4 u* F
  116.         pointLocation.X = base_pt(0)$ I2 T2 l5 ^( y. E
  117.         pointLocation.Y = base_pt(1): t9 q3 f" d& J! `/ n' C
  118.         pointLocation.Z = base_pt(2)
    # x! m, z0 [, s
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)" s  v) P' J$ x; L' Y3 c
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)8 n/ d) E% h, R
  121. . u5 B4 K6 W7 A
  122.         Return response' p1 }! y) Y8 O9 z

  123.   ^" A- q3 G' x+ I5 b$ {* u
  124.     End Function+ ?! }, ?" |; E  o
  125. & w3 \% W. _0 }5 K6 A
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response* D9 t! A3 y! r  x- |0 p
  127.   e$ J3 {3 ?! h0 L9 n. i) s
  128.         Dim selObj As TaggedObject' q# |1 `% h- N. b2 d8 a0 ~
  129.         Dim theUI As UI = UI.GetUI9 R$ G% k) E3 y
  130.         Dim title As String = "Select a Point"
    . O5 i8 A1 R) s# S1 b
  131.         Dim includeFeatures As Boolean = False
    $ r9 Q' m8 o, P0 \7 Q# R( X
  132.         Dim keepHighlighted As Boolean = False
    6 p# k3 P7 |; {2 u# d  ]0 }9 A
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
    9 W& V9 N7 J. ?
  134.         Dim cursor As Point3d
    , B+ f- E2 ^: [
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
    & R8 d5 J5 e; ~; H, ]& A& I5 u4 X. k
  136.         Dim selectionMask_array(0) As Selection.MaskTriple! k) R1 n  X0 [: i2 I$ E
  137. 5 O7 L3 E% F# d' ?8 Q+ e0 }
  138.         With selectionMask_array(0)
    / c; A# G; x: f5 R  x
  139.             .Type = UFConstants.UF_point_type
    . ~% M8 o/ f3 O$ j( \# D
  140.             .Subtype = UFConstants.UF_all_subtype
    - j) l) `& y  @+ C, R/ {; w/ G
  141.         End With
    , l: f' e8 V% H) l; b

  142.   u! d1 C( B! ]8 w% h
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
    % F4 r  d- w3 s. l. m5 K- |) Y, {
  144.          title, scope, selAction, _7 v) g  U' V$ Q: J
  145.          includeFeatures, keepHighlighted, selectionMask_array, _$ ~9 k, b, \& T7 O
  146.          selobj, cursor)
    2 g- U! d7 L' A& R+ @
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then* F! X9 Q% T  ^" S; j% B2 R# T  c9 U- P
  148.             selPoint = selObj
      C2 g$ z  E! K! u3 K
  149.             Return Selection.Response.Ok
    0 m  d  [* V9 a- |" a/ W! {
  150.         Else
    % j! w! r0 k8 d- d
  151.             Return Selection.Response.Cancel- _( T0 c0 k$ G: H
  152.         End If
    5 e' H+ E+ Z1 V$ d) }
  153. 8 f% e7 h* ^3 c8 w' b. X6 H. Y0 w
  154.     End Function; Y# t! a3 K/ N
  155. 4 d' R' o" x" w, x- H
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double: J$ |6 s, h+ ]6 d9 ^$ ~* W% z

  157. $ ~# H. M/ P2 _8 i$ ^
  158.         Dim result As Double
    $ f( O* P3 W) ^. |* ^
  159. - ?* t. p0 a1 S9 _8 [7 O$ p
  160.         Try
    " a; j" M- }$ x3 L- E
  161.             Dim nullNXObject As NXObject = Nothing
    9 j: }4 `$ D6 c
  162. ; k9 C  B* M7 D: u
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder- g6 i! ~6 j: S+ n& {% _' u+ B/ U
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)0 B7 Y# N% @0 A% X8 Y* O. E9 n& S

  165. ! j6 N$ `! \, x0 r& s
  166.             measureDistanceBuilder1.InfoWindow = False: A7 i3 Y0 K: \9 B' ^. W
  167. # f& Q* w7 ~) D1 ~  i- ]
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    0 H" W) ^. q$ U) e

  169. & i+ N' ^' r5 W# z' n
  170.             Dim nullUnit As Unit = Nothing
    2 n+ r1 ^) {9 K9 g% @3 Q$ D* o

  171. " P: n9 A7 L. L1 P& n5 I' y- h4 z: x8 Q
  172.             Dim measureDistance1 As MeasureDistance* [1 n9 P5 ]# n! w1 ?
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)  e) K6 A( J- s+ E" Y8 s9 \4 y

  174. ; ^. Y$ Y; [% \8 N  V
  175.             result = measureDistance1.Value. l# z  B/ V0 w4 H! C; A/ D
  176. 1 {/ @' z' e+ H0 ]" i! ?. r* K7 n
  177.             'measureDistance1.Information()2 e9 r* P; E% Q0 o5 m( O

  178. 0 `' c; S! p( b, F+ G% ~. L
  179.             measureDistance1.Dispose()8 d$ t, m; W7 [

  180. " Z7 q" i$ N( f
  181.         Catch ex As NXException$ d% f6 f1 }: ?( L7 |, y( c
  182.             MsgBox(ex.Message)% n' K# a# X9 s; q' ^* i2 d8 U6 x
  183.             Return Nothing; C. R7 a% H) d8 K
  184. 8 [6 e( W5 G: u# y* P7 k: z
  185.         End Try) y/ ^) G8 C. B% m% f1 D

  186. ! p$ c7 l# ]" `- {8 ~1 ~
  187.   W( b& r: _& p( J
  188.         Return result& D% k4 T5 r( X2 @2 E

  189. 9 E  c" v8 o, z3 p4 p/ ]# @. g
  190.     End Function
    ' B" @" F9 v0 F* e% _) Z

  191. 6 a5 g) D. X0 Q4 }/ ~: d+ N

  192. ' ^: k7 b% P( S- r( u. N- l1 N
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer
    # W, x7 j6 Z+ E6 d
  194. 9 w* U* T3 n7 C7 H1 f# I2 v
  195.         'Unloads the image when the NX session terminates4 f; M3 P: o1 V
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination+ u% j0 o) F8 b; |' P: ?0 Y
  197. 4 m& h! d4 \% V$ X
  198.     End Function
    * R/ n! V% q9 _

  199. , v6 E8 |+ Y+ w
  200. End Module- ]: _" ?! T; U% m6 l# @
  201. </P>
复制代码

. v9 J4 m; N3 D3 d1 m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了