|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
' P7 V/ Y) Y2 {& f- NNX二次开发源码: 装配中选点,并报告父对象" B& _$ ]! D, K6 h0 \9 @) u8 m
- ! h, }0 j t- r
- <P>Option Strict Off
& C9 A1 U5 o' G9 {; u d - Imports System5 @4 B! C, ]/ f- w3 ]
- Imports NXOpen
, r \7 R3 E1 m9 w8 `3 z - Imports NXOpen.UF
{6 I# d* i; t/ U. I -
/ o$ G! O. `2 P - Module Module1% V/ U! C- v$ z/ I! R" W1 C$ F2 A
-
4 U# _5 F, U; n' O( l - Dim theSession As Session = Session.GetSession()" x) Q# K% [) ~: |1 x2 w# Z( ]3 \
- Dim theUI As UI = UI.GetUI()
/ N. z3 R" F7 k0 k/ f$ H% I - Dim theUfSession As UFSession = UFSession.GetUFSession()' K/ Q1 e! c3 i
- Dim lw As ListingWindow = theSession.ListingWindow
0 @8 `; d; b% u( P4 {8 T% R - Dim pickedPoint As Point
4 l6 {2 m0 l/ H8 _7 B - Dim myModelingTolerance As Double
/ X% ^; m, t, t2 y+ P6 k6 j d1 ? - ! { h% i: m* y; t6 I! w
- Sub Main()
% z$ S8 `" n" c N - 8 A6 L n( R, w( F9 e
- theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)
! B* E9 @$ j7 R9 u$ r -
9 T y* t; x; \* D( a2 I" z6 g - Dim workPart As Part = theSession.Parts.Work
! O4 m$ c! \* C- o0 { - lw.Open(): S8 N! m- W6 {
- 1 S" e9 K1 I5 Z- i! D `2 J
- Dim myPointTag As Tag
2 C% b" T+ k: e0 x; G - & S9 q% ~9 k* Y$ l) X
- If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
* P! a0 x5 L9 q" H! K, Q4 y - Exit Sub# s; L Y- H# j: r
- End If8 B' h# h( K% D- }0 y
-
% B" s6 s" K3 Y: u& R4 b5 D( k - lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)
7 U: v z2 O0 S5 ~0 W. O6 [ - ' @1 R: j F4 r! _* h# d1 K
- AskParents(myPointTag)
, m @* o8 z! P& Y -
/ c, { S8 S2 T - End Sub* o( K6 s! l- M6 Q' {& F
-
3 @! j% w0 J1 e* N8 S5 S - Sub AskParents(ByVal objTag As Tag)9 \3 y# g/ z1 L6 w% H
- / B8 F* b- o, a+ b! D2 R1 V8 e$ P* _
- Dim n_parents As Integer1 U% f& O" B$ H9 T- O# c+ X
- Dim parentTags As Tag()
N3 A2 y3 b7 J/ Q9 m9 d2 Z& @ - Dim myPoint As Point
5 y- c4 ] [+ N' K - Dim myEdge As Edge. f* J( v6 ?9 N; {& m
- Dim myXform As Xform
2 P. v; `+ i1 Z) h3 } - Dim myTaggedObject As TaggedObject5 A. x3 ]# x* {$ B1 W
- myTaggedObject = Utilities.NXObjectManager.Get(objTag)
9 o, l1 }' ^! |: [2 e J -
; `$ f j! _7 y+ d A6 b6 y& C - If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then
; V" _1 H3 ]; I# Q - myPoint = myTaggedObject2 Z2 a+ U, `0 T4 U
- lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)
# A( E9 \/ p" t5 u- s - lw.WriteLine("")
) |4 | ], ]$ j" @- R6 L+ L - % h- L6 \, D; A
- Try, r( ~, T6 {: o! R
- theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)4 G7 E6 [9 A: a& f; t
- lw.WriteLine("num parents: " & n_parents.ToString)8 c* e$ }/ S+ _
- For Each parentTag As Tag In parentTags
( d% S w: z/ t+ \ - Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)
+ n" ]6 ^1 v& h* G7 }9 r! U( R -
% T0 G; i7 N( C - AskParents(parent_object.Tag)
7 s5 @1 _" e5 Z, {0 ?1 r8 E - 1 o( V6 Z0 p* R2 H/ \6 K( m
- If parent_object.ToString.ToLower.Contains("edge") Then2 m, t6 R* B& S0 Q) L: [% R
- myEdge = parent_object
8 W, q$ h/ _" J - lw.WriteLine("")' R6 B2 F2 x$ {. J' R$ N6 i
- lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)5 F* F' `# k( {, p
- lw.WriteLine("edge length: " & myEdge.GetLength.ToString)
0 l" M D0 P4 ~ - lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)/ y9 D+ ?' f/ c3 L' f- i x; s
-
$ r$ b2 M7 b6 H - Dim partTag As Tag = myEdge.OwningPart.Tag" s9 \# V. Y; n, z. ^" a4 P! m* U. N5 i
- Dim occTags() As Tag
6 K- D7 `) a# V' X9 l/ W, M* n - theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
( m% x! e# l$ V2 g9 U - lw.WriteLine("number of occurences: " & occTags.Length.ToString)3 m8 Q! r3 j- R6 P7 k, k% i
- For Each temp As Tag In occTags
) X% V% v, s4 m ^. m5 |; l - Dim myComp As Assemblies.Component! J' n5 m4 G7 R& I7 Y5 I
- myComp = Utilities.NXObjectManager.Get(temp)2 o: b, j, ]* A/ K4 ^
- Dim myCompPos As Point3d9 d8 [5 v+ F* v6 T" l! ~& F) I+ D
- Dim myCompOrientation As Matrix3x32 m% k; Z4 E( W& }; \& Q) j
- myComp.GetPosition(myCompPos, myCompOrientation)) j$ ]9 w9 B% Y1 o% y- ~" V% M
-
0 [2 w" o# k# E - lw.WriteLine("")1 Z5 P& I# ~9 |
- lw.WriteLine("component name: " & myComp.Name)6 l' B* z: y$ F
- lw.WriteLine("component display name: " & myComp.DisplayName)
! r r8 p N. a; h) b2 M - lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)9 {5 \$ |: b x+ |' l
- 9 D% W7 ?3 H0 k( T- Z5 Y. v6 B
- If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then, r' e$ ~, F; D3 e( T/ |, G
- lw.WriteLine("** This is the component that was picked **")
0 l! h- D: D, {* k8 X2 G8 t# \ - End If
$ r# r5 T% F& Y1 j' t T8 Q- Y/ b$ L - : Y6 H0 H6 t, f& v) f3 s
- lw.WriteLine("")
6 ?: m5 g$ U l" f5 Z7 n - Next
$ w& V+ ~3 a# K* S -
3 a6 y: G: W6 Q9 R& I& F' P - lw.WriteLine("")
: s2 a$ a4 K( G" t' ^ d: e - End If$ W: V! D$ _4 r0 X3 [; p
- Next
$ o; B1 [4 Y/ O. u( \/ T( a -
) o; o7 Y4 B" Y6 b7 R+ @ - CaTCh ex As Exception
% W T8 _; a% g4 g- N- @1 u% p - ' NXOpen.NXException: Current object is not smart" g- y3 R/ c* P; h& S" q% H
- lw.WriteLine(" Error: " + ex.Message)$ n c0 h$ g0 n# o# y# _
- lw.WriteLine(" " & myTaggedObject.GetType.ToString)
" y4 K1 ^7 m8 n) S - End Try2 O4 _% N2 M* v& U( u
-
, J+ K# ]8 \% E/ S -
) p+ v( u0 Z7 Y1 l - End If$ n$ g; l* C/ X7 z" N" c; x5 L9 g
-
2 x& P+ _/ f* V! ~7 z% M -
/ n$ L/ M$ c' c: s, {9 { - End Sub
3 B- R) {2 [" k3 ?4 P -
% F; |0 w0 d4 r - Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
, B; M. r5 {* ]4 @+ h/ r - ) B2 F Y# a. n) z0 z6 y
- Dim base_pt As Double() = New Double(2) {}
0 S( o; i5 n& h- P - 'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null( n" `3 {6 t4 n1 t5 d4 P; l6 G
- Dim response As Integer = 0
/ H6 w. v4 T+ d2 n( t' T - Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt
4 u: P& `/ N2 B7 S -
! h6 p3 W. [4 _+ m4 k - theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)& s* N( L; ~! L3 l
- theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response)5 L7 n# t+ s; v. m7 U: m5 m
- theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
9 h% a) ~3 \* W) r# p# M! p! l - 4 X3 d' y0 a8 F+ r6 j5 Y, q
- Dim pointLocation As Point3d" K* }/ g# i( E7 E& \
- pointLocation.X = base_pt(0). f7 z: t3 w+ x$ v* M
- pointLocation.Y = base_pt(1), ?1 m- h8 x% F% R B$ e% C
- pointLocation.Z = base_pt(2): [: j# y* `$ K# ]( U" `' h/ Q
- pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation)/ @" H+ u) S: J4 [3 E: |( `
- 'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
& \( |! f* z) n H3 r' @ - 3 i6 V) C" R$ |" e3 W
- Return response
_0 x7 X7 @9 m @ -
3 q; y% e# q1 P: @% F7 G9 R - End Function+ m0 G4 P x) l$ l; x( N& \
- " S% l! G7 u" g+ g( }3 v
- Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response1 \1 Z- {1 L8 I/ v8 @" s4 }3 |& J
-
7 }: a& W& J/ b \ - Dim selObj As TaggedObject
% m' N: _# a! I5 V - Dim theUI As UI = UI.GetUI) c1 T+ e+ n4 P5 w4 C, k7 V& E
- Dim title As String = "Select a Point"
3 v! o/ |3 n) T* H - Dim includeFeatures As Boolean = False+ u2 N- u3 {: ?3 R
- Dim keepHighlighted As Boolean = False
/ ^4 O" `% M4 ]" ~) U - Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific" ~# k( p4 l+ C# q
- Dim cursor As Point3d
6 I" W) K' s5 R9 d8 |1 Q+ ^ - Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
/ {& W0 `# N( H; X, ^ - Dim selectionMask_array(0) As Selection.MaskTriple: b6 d& F& V: j
- . M" h9 u0 i4 q# Z: b( z
- With selectionMask_array(0)6 c9 Y0 o5 i/ n# N
- .Type = UFConstants.UF_point_type: F( N, N- G9 C/ \8 X0 K
- .Subtype = UFConstants.UF_all_subtype& g1 l6 B* ]# `! L( U
- End With
* d5 f3 r" V0 v$ J -
; ^: ?( e; L/ m' m: _! @ M - Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _; \2 v+ b6 t4 G( ]2 L
- title, scope, selAction, _
0 J6 N3 ]" w7 X- g - includeFeatures, keepHighlighted, selectionMask_array, _
5 P# r" O7 P" s( O# D1 @' w - selobj, cursor)' V9 F, `8 n8 X+ Q/ Q Z* y; M) Z
- If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
' q! m! \- _& ]" z6 C' b - selPoint = selObj
3 |% k) m: Q: \1 }5 V. @+ F$ q - Return Selection.Response.Ok5 N0 l/ L0 m8 g; U) z
- Else" f) q+ @' x8 X, x/ t- N7 k/ w
- Return Selection.Response.Cancel. W. O1 N3 m" J1 ?4 D
- End If, J9 ?0 a+ M9 o1 z# ?
- * |' L- t6 H' Q$ x. k
- End Function
: ^/ Q& K! _ r- n7 Z7 z& n - 3 J* n# I) m* U3 w9 \5 t2 b
- Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double
9 K2 K. Z8 _4 A' B) P# K$ j8 @6 u - 0 e0 w( b: [8 B- e. Y3 @5 ~
- Dim result As Double
' r% J6 ?" e, p" I" E8 w6 h6 w0 f; z - 4 m1 ?0 G9 u4 K2 Q/ {" I! x
- Try# Z& S9 u* P7 {) `$ r {7 M: {
- Dim nullNXObject As NXObject = Nothing
4 a8 }+ J% I( H -
, O8 {, G: X+ R - Dim measureDistanceBuilder1 As MeasureDistanceBuilder# V3 M5 h5 r- i4 o( G1 ]
- measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject)7 } g8 F2 _6 Y- }6 k
-
! T& g7 t6 R1 ~' j1 `" {* }+ j - measureDistanceBuilder1.InfoWindow = False
' w' z- W$ ]' _ b -
. j% r B! h$ i# q$ E - measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum9 v; Y) g) H* @
-
2 p+ A1 u# Y8 h n" H1 n - Dim nullUnit As Unit = Nothing1 `' y8 {( D- f: y) G6 C+ R9 B4 d
-
5 k2 t/ O) J8 ~6 ^7 }* ?- c. J - Dim measureDistance1 As MeasureDistance# J# B6 k* Y0 `3 }0 F7 T1 M
- measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2). I1 [# w! E( m9 @
-
) f! |9 ?8 @% r) x( z" m - result = measureDistance1.Value/ ]4 m$ |( Z2 P1 H3 X5 j
-
' v9 z: I. r$ T4 C& E - 'measureDistance1.Information() K3 t3 m' ^! z4 p9 }* z) G
-
5 V9 d: L+ n0 X - measureDistance1.Dispose()) B p. Y. d! {: T8 M) c9 J2 Y% w4 O
-
' ?+ N$ S0 f# u6 P - Catch ex As NXException
, n) ]& c$ @ ~, Q" K3 ^0 S; }9 Y - MsgBox(ex.Message)( r A" L5 b* Z, P' p+ O( [9 j
- Return Nothing3 M, g& C9 D6 f& n) B2 A" t
- " i. j: }5 W3 V' D4 q. L9 W) u
- End Try
! _9 x$ x! B# n+ a5 q! v - # ^6 W l3 {5 v6 ?7 N" Q/ ~
-
$ K6 s( @/ o: V7 v' @) o - Return result
5 ]: `' `0 I+ y" K6 R( z) n, W -
9 e& |' ~+ A- |; V7 P - End Function
0 W1 m3 M) X1 K# N) B/ E -
8 ^+ k5 v2 ]* L, A# z4 n -
! F2 T: k+ m) ]* z" m% S7 i - Public Function GetUnloadOption(ByVal dummy As String) As Integer
, n! J/ Z" r. ~ - y8 z6 E, M( M6 q/ Z
- 'Unloads the image when the NX session terminates
6 a+ u; b' o6 T - GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination' U, R9 o7 D/ ~7 k6 F2 a
- * Z" J; [! C# L' ?/ k" \; n
- End Function
8 ~ e/ j0 Q# R7 O q. q6 f/ @ -
. T: g `: X0 O3 j. F4 D7 n - End Module5 f- L9 U' p+ A* v
- </P>
复制代码 / q# k( U2 E9 U" l/ |( n$ b2 ]
|
|