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

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

admin 楼主

2013-11-5 17:34:33

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

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

x
: k4 Z% w+ r; j7 \, i+ O2 V. _
NX二次开发源码: 装配中选点,并报告父对象  X8 R- T+ f: }  g0 E6 A8 N+ V
  1. / J% d, W0 t1 Z! J, d3 W
  2. <P>Option Strict Off
    1 }% w8 l$ ?+ t- _- ^6 s! `% e( v
  3. Imports System
    2 N! x' S' o, C' X$ r
  4. Imports NXOpen5 W! j: g/ m7 Z5 H! I+ d
  5. Imports NXOpen.UF
    ( s4 l, y& I  {+ L# x  R2 i
  6. 7 H; E& u9 ?+ l8 b! H2 d4 W- x. ^! ?
  7. Module Module1
    - G6 t, {( U5 U$ a% h/ |! `0 d
  8. : I7 ]2 |% a) ~4 l
  9.     Dim theSession As Session = Session.GetSession()2 {0 P: C# N) d
  10.     Dim theUI As UI = UI.GetUI()1 _$ ]* z8 J. \! Y* k5 x* T" ]
  11.     Dim theUfSession As UFSession = UFSession.GetUFSession()
    1 A) D4 X; B5 ~- K, j- M
  12.     Dim lw As ListingWindow = theSession.ListingWindow4 t& I) A& G, f
  13.     Dim pickedPoint As Point
    " C& y2 ]1 M& ?* S6 g* U
  14.     Dim myModelingTolerance As Double
    % I( j: x6 ?/ B" _8 l+ a- s) d

  15. : Q" j' d! s1 M/ i/ k
  16.     Sub Main()
    # d& {) I' B6 h: H" w5 @

  17. " h, j1 D3 w) R: {& c+ A4 K0 k
  18.         theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
    1 _6 P2 p5 [0 c7 o" I! a0 J

  19. 1 ]9 e6 c) {8 K0 S# d7 @& w
  20.         Dim workPart As Part = theSession.Parts.Work
    % y- d, ]3 h: u# N, [  y
  21.         lw.Open()
    : N9 H, A( W0 |! v$ W8 ~( L

  22. * \9 s3 D* S% ?9 [8 w
  23.         Dim myPointTag As Tag
    5 _  g- C+ {! Z

  24. ! w# w- ]- \  o
  25.         If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then( J6 H% E) v9 B8 u9 ]6 \$ f
  26.             Exit Sub* v/ C, Q3 P: H0 Y$ `
  27.         End If+ F6 y5 r. n+ a& k- h5 G) s; b

  28. $ u7 a* _8 y$ d$ A- ^2 F( {
  29.         lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)+ P  a0 v& R* v. u' L0 y

  30. / t% F' Y/ D3 S6 A/ l' w
  31.         AskParents(myPointTag)6 L) ~. e& i8 {9 p
  32.   B$ A( ^0 a5 b' d4 q5 \
  33.     End Sub8 n9 Y! k5 v! h# }7 A  F
  34. 1 t6 A) Z2 J. @
  35.     Sub AskParents(ByVal objTag As Tag)
    ) k8 Q& X3 d9 L- z

  36. + u5 i) w' V2 \) ~& ^6 b( g/ k+ i
  37.         Dim n_parents As Integer) e0 }" J2 t! l3 m* O0 G
  38.         Dim parentTags As Tag()9 r+ E/ H. ^$ P2 x. ^, b0 C
  39.         Dim myPoint As Point3 R5 `  J. a) z
  40.         Dim myEdge As Edge' W8 H2 a' U( r: x$ X; i2 J4 n% I$ h2 P
  41.         Dim myXform As Xform/ [. i; H, g/ n) e; _' y
  42.         Dim myTaggedObject As TaggedObject6 Z, X$ I- r! v  T/ S$ i
  43.         myTaggedObject = Utilities.NXObjectManager.Get(objTag)
      t% f$ F) z5 Q4 r. z

  44. & n! H0 Q; c, F- D0 g
  45.         If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then) }0 W4 v! L; `& N  G* b1 I" ]9 h
  46.             myPoint = myTaggedObject/ k: c1 ?" @$ e* V
  47.             lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)3 x+ E7 e. x  a- c- m# P
  48.             lw.WriteLine("")0 Z. o7 U- n  L* X' s

  49. 0 s" L8 H" s* ~  L  z# `) c
  50.             Try
    5 C. W% u' J5 r& Y. A9 \
  51.                 theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
    4 C  Y4 j) U* K  Q# F
  52.                 lw.WriteLine("num parents: " & n_parents.ToString)% d: r% S( M7 o7 l3 M$ N& [* ^
  53.                 For Each parentTag As Tag In parentTags
    2 {1 u( Y# t- ~' Z7 ^2 v
  54.                     Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)5 y$ U6 ]& K. e" |1 r. V: ~

  55. ) x! d2 ~! c/ q7 e4 A
  56.                     AskParents(parent_object.Tag)
    # ~0 A) H# w9 G! K! a, T

  57. 9 j* e# ~  U: D
  58.                     If parent_object.ToString.ToLower.Contains("edge") Then
    ; ~5 m. U( `3 ^$ n2 x5 A& `/ h* r
  59.                         myEdge = parent_object2 v' i' O8 X. \( `6 |6 k) h
  60.                         lw.WriteLine("")& `* o' M* t; P! X/ V$ c9 b# k
  61.                         lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)6 N0 B5 P# t9 n8 X% g5 l# ~
  62.                         lw.WriteLine("edge length: " & myEdge.GetLength.ToString)' M& L- ]5 [/ V5 |2 P( c
  63.                         lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
    * c' t  T! R' s% y: @6 {# s

  64. * c9 N; H1 m- s+ ]1 K
  65.                         Dim partTag As Tag = myEdge.OwningPart.Tag. a2 D8 \0 W' [$ |6 ~9 j
  66.                         Dim occTags() As Tag# v$ k. L: T# H; I$ T* [
  67.                         theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
    ! Y. ~( D- Y! u* Z3 a
  68.                         lw.WriteLine("number of occurences: " & occTags.Length.ToString): S& F( K# x: d& I( Y3 C
  69.                         For Each temp As Tag In occTags3 _1 [  C& s2 g& L/ ^9 F
  70.                             Dim myComp As Assemblies.Component
    2 [$ Q1 M* M# ^4 [: k" f
  71.                             myComp = Utilities.NXObjectManager.Get(temp)
    : S7 ~& G  B( |. N6 o/ s
  72.                             Dim myCompPos As Point3d) C1 I3 v5 K+ P& ~) q3 O) s% l- N
  73.                             Dim myCompOrientation As Matrix3x3" S" X4 e# l: d% ?( d8 g! Y) F
  74.                             myComp.GetPosition(myCompPos, myCompOrientation)
    $ i/ K: T" A3 L* ]

  75. 3 B+ U0 S" u) k) `; V+ \
  76.                             lw.WriteLine("")
      E' r' _2 p+ r; {0 |1 [" V: c
  77.                             lw.WriteLine("component name: " & myComp.Name)6 q: }, S% D3 W4 g6 s4 v! B. F
  78.                             lw.WriteLine("component display name: " & myComp.DisplayName)4 l" ~8 ], [6 I0 R9 S
  79.                             lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)7 ^3 J! ]) B+ B
  80. 8 {' Y- t/ u# J* N0 Z6 b8 x" S7 a
  81.                             If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then
    8 o2 z1 J, ^' a7 {" x6 J; Y
  82.                                 lw.WriteLine("** This is the component that was picked **")
    % S3 e1 A" @; m+ u- M  f% J
  83.                             End If, t/ @1 f! `7 h. ?: x( L& ^

  84. 4 b7 z& W) ~+ I' S2 ~8 D
  85.                             lw.WriteLine("")
    - G, ]0 O7 H) E" }3 j
  86.                         Next
    , g1 n+ {; x$ |  t
  87. ) @2 S; A0 z. l
  88.                         lw.WriteLine("")
    # ]2 h& S+ u* e/ ?( \
  89.                     End If
    1 u) r# X  @$ |. C7 W  x" D
  90.                 Next8 w0 i3 b# L4 s( ]1 Z
  91. ! L( V" N9 E5 Q. e6 F
  92.             CaTCh ex As Exception
    , m" M# _! B9 S9 W
  93.                 ' NXOpen.NXException: Current object is not smart" D  E9 V2 f4 h
  94.                 lw.WriteLine(" Error: " + ex.Message)
    1 o+ b* s" R0 e5 l$ A) \9 S
  95.                 lw.WriteLine("    " & myTaggedObject.GetType.ToString)
    ' E! i$ I1 D6 a+ T7 ~; S3 r  C% d* \, R
  96.             End Try
    / b5 Y& }( g  A9 p6 n! p. ^. F

  97. ; m7 Y, t( a4 l9 J; j
  98. " l+ [, @/ B6 T$ R. ~% L
  99.         End If% _) d* G2 w5 [3 p

  100. : S' J% l0 p+ w* c

  101. 8 g$ Z0 D9 {7 T8 ^8 N  Y5 C& Q. j0 V
  102.     End Sub
    7 V; M4 C  w3 t. \8 w

  103. % X0 R! y3 y/ K4 h
  104.     Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer& F( w6 @, ^' K# R! D% B- g8 F7 [4 I, A
  105. ( A! b3 F1 \( c1 E2 j$ M
  106.         Dim base_pt As Double() = New Double(2) {}' h2 u' i4 P9 {. T1 q- a  G3 g
  107.         'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null
    , N- A6 [2 t8 Y/ L0 [
  108.         Dim response As Integer = 00 B. |  O' p( d9 G* J/ e/ \9 ]
  109.         Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt5 A: ^: q; C- d- D& }5 K
  110. 8 h9 O1 H4 g) n
  111.         theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
    : @3 N4 C. ^7 L! Z& w
  112.         theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)% Q: W" V3 k; ?% I1 r# g. V$ B
  113.         theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)& Z0 a# b* \; E
  114. 0 u: Y: q2 H) Z7 v0 a8 U# d
  115.         Dim pointLocation As Point3d' N2 i( V8 t) _% z3 r+ N7 t
  116.         pointLocation.X = base_pt(0)
    : i4 K+ M' j  X
  117.         pointLocation.Y = base_pt(1)) F/ |% n# {& b) k
  118.         pointLocation.Z = base_pt(2)$ `4 M( N8 z6 X: Z. i  [' S4 P! C% r
  119.         pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)
    5 U# z' @% g+ g
  120.         'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
    1 O: [  t7 u/ c9 `1 I/ m

  121. 2 V6 c5 B3 s! g  f3 V$ z* q# X
  122.         Return response
    " E. Y1 L2 y: n5 _/ W' P! I4 N

  123. 4 M9 V, n2 J, K. V3 i3 A0 o1 [
  124.     End Function2 o& s; L5 ?9 ]6 v

  125. 3 Z) I  h4 m8 |9 C( v  Q
  126.     Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response- v6 |9 V' \  l+ ^& |- i/ K) j
  127. 3 q; v, ?5 p/ b0 z$ p
  128.         Dim selObj As TaggedObject8 m6 L" G# T2 w- o3 A/ ~
  129.         Dim theUI As UI = UI.GetUI
    8 U  M$ _4 A' L/ u4 n, \3 U* Z8 S
  130.         Dim title As String = "Select a Point"
    $ U/ N% P5 x; n
  131.         Dim includeFeatures As Boolean = False* b0 k5 E1 Q& P  @5 s
  132.         Dim keepHighlighted As Boolean = False
    5 T+ l) S) d4 n0 w
  133.         Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific: L! J' \, U. A' v; a) b' W4 f
  134.         Dim cursor As Point3d5 p) S. ]3 ~; N8 o7 B. {) r
  135.         Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly  u. h. n* w" l" q+ {6 e( w
  136.         Dim selectionMask_array(0) As Selection.MaskTriple
    ) H) Y9 F# B5 @3 Q7 F
  137. : A9 `1 C. O: Q. ?- a( y) I4 ?) {; |" B
  138.         With selectionMask_array(0)
    ) F& ~" u( v. F* T' U+ V, ?" |
  139.             .Type = UFConstants.UF_point_type
    8 d+ q# y0 A+ v& b. v% Z3 Y3 ~: P
  140.             .Subtype = UFConstants.UF_all_subtype
    6 K& w7 Y4 T6 \0 s
  141.         End With) v/ U9 _3 d2 k7 A1 U, r

  142. - ]% a2 x- _" ^+ v
  143.         Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _+ t, G, ]: D# \/ D: i6 A
  144.          title, scope, selAction, _
    5 u* _" d- l4 {/ w2 _* Y7 P2 C& R- I; y
  145.          includeFeatures, keepHighlighted, selectionMask_array, _9 A( @/ u8 w$ [3 x  {9 d
  146.          selobj, cursor)# q3 q: F0 V6 ~7 R" C3 N+ l0 }6 z
  147.         If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then/ ~+ b0 O6 U+ C8 _; \3 e9 Y
  148.             selPoint = selObj/ B7 F/ g+ i# V$ b
  149.             Return Selection.Response.Ok
    ' z, S) m& |9 C+ p# L
  150.         Else
      l  ^7 ^: N9 _% Y" k3 \
  151.             Return Selection.Response.Cancel9 w" H$ ~1 Q$ T# V4 C$ X
  152.         End If' H$ e# @9 f( u9 {8 D/ b
  153. / a: T" Q6 Y) I8 M
  154.     End Function6 \, g! Y1 D" F

  155. 8 C+ q( c& _# s+ C: c3 t
  156.     Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double( [1 S* i" k( _+ D7 F
  157. : h/ ^9 f1 T5 _6 ^) P( N
  158.         Dim result As Double
    * {$ H; M* }( f1 S8 E

  159. ; v3 p2 C! t& \4 X4 j
  160.         Try
    3 k' _! R; t/ V8 J& n' H
  161.             Dim nullNXObject As NXObject = Nothing
    * w# S- U4 T3 t% c

  162. / p$ Z/ N/ [  ~+ I1 [% [
  163.             Dim measureDistanceBuilder1 As MeasureDistanceBuilder4 Y' h1 G  [  `* u
  164.             measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject); s& D1 k, q* t1 g

  165. 8 w8 }2 r+ D4 z. k
  166.             measureDistanceBuilder1.InfoWindow = False
    ; I1 Z0 E; X8 f& w
  167. # v6 |5 i% R0 V8 b" y, t! ~6 ]& A" f
  168.             measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
    & H5 W4 ~. e- N. A1 k5 r7 E
  169. 2 ]! h* M4 Q) q
  170.             Dim nullUnit As Unit = Nothing# y' C( r$ i. c) i0 @' b8 |

  171. ( I; L$ w1 B, M8 U
  172.             Dim measureDistance1 As MeasureDistance$ J: Y# v! _: o; B( @4 a0 x; r# `
  173.             measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)# U) ]8 |5 b, S1 @4 y  h2 q6 T, [

  174. 6 Y1 U( N) g0 M% A1 j* q
  175.             result = measureDistance1.Value* W/ ~# c6 M6 W) N  p) G% A

  176. 4 ~6 E, x4 q, n) a8 n
  177.             'measureDistance1.Information()5 {% R+ K3 e6 r
  178. 0 C. i! Q5 m2 f% J% |& a+ P
  179.             measureDistance1.Dispose()( L% O: a' a* N! {( f# d
  180. ' r' g! \  t8 t% c3 K& ?1 Z
  181.         Catch ex As NXException
    " T9 x' o5 S# Q% t# R$ f) L
  182.             MsgBox(ex.Message)
    4 M- D' e& c. |3 Q; ~
  183.             Return Nothing$ E2 p' r# _: }1 b; |. J

  184. 8 N2 u6 g2 ~6 U" R1 \# }6 F
  185.         End Try" H9 w5 Z& v- p% N: W
  186. & T( T, {) m/ ]) g3 }  B
  187. + ]* b( N$ u+ E
  188.         Return result
    + C: q( ^4 p6 w' n, y/ y! b3 B

  189. : v: M; @5 E* w% G4 A
  190.     End Function
    9 ?* [! o" z* u: M7 m
  191. 5 R' d& c* F2 \7 ]3 T% Z( U

  192. " K) `8 W, F- |9 w3 Q- L2 S
  193.     Public Function GetUnloadOption(ByVal dummy As String) As Integer) G$ V1 T* h# ?0 X+ I, F7 y
  194. : p) x2 m% i& J& V% t; z2 S% F
  195.         'Unloads the image when the NX session terminates
      N3 e+ \" q  |6 ]$ Q+ h( ]
  196.         GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination
    # m7 U" P( ?8 f2 x: g- F
  197. 3 J: n- _8 [7 C
  198.     End Function
      U* m! A* x1 g& b: v

  199. 6 W$ _5 a" e5 \* k! {
  200. End Module
    : U  f) q9 b, g0 E* H0 H: m0 `
  201. </P>
复制代码

( c6 o4 `0 b; [9 }! c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了