|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
4 G5 O0 Z5 G7 H! K- O( XNX二次开发源码: 装配中选点,并报告父对象
8 t6 c+ H) t( j5 @1 u$ L- 0 I0 T7 H8 n+ X& k. q6 g* d
- <P>Option Strict Off5 p, ^, J" Q) @/ k( m
- Imports System
% r' @( t! s! n( p; ~ - Imports NXOpen% k9 ~6 x, u: L
- Imports NXOpen.UF
! o; ~( v& r3 h# P) i4 ? - ' T8 ~- I" b- c! ]8 B; i& E0 L2 V
- Module Module19 w! u- X1 H$ f F
- " u8 S6 O5 k: ]/ O, P' A
- Dim theSession As Session = Session.GetSession()- o' y1 E4 N; r/ i) e
- Dim theUI As UI = UI.GetUI()" F8 w' |/ R0 x
- Dim theUfSession As UFSession = UFSession.GetUFSession()
- q# \ P0 q h - Dim lw As ListingWindow = theSession.ListingWindow
2 D/ \* W& q N6 e/ k! y. F! t0 } - Dim pickedPoint As Point
# o$ g5 @' s) L& H, Z/ x- `# o+ @ - Dim myModelingTolerance As Double* S/ N4 e+ M4 L' _+ _* T
- a2 |2 l& B( D2 F% p
- Sub Main()
8 i% z# [% L4 o- K -
0 b5 A# E1 Y ^- z - theUfSession.Modl.AskDistanceTolerance(myModelingTolerance)' J1 J; e& T3 }- A: l, }
- v" f8 G1 D3 A$ ]; V D% x
- Dim workPart As Part = theSession.Parts.Work
) A) x. s3 N0 H! F+ O1 u: B/ _ - lw.Open()0 C/ A4 J) _, T0 z
- * X( k5 x$ v. P$ H P$ e# U
- Dim myPointTag As Tag
0 g5 L! C# [7 m+ `$ [- h - , x6 S3 ?1 x# `
- If Not select_point("Select Point", myPointTag) = UFConstants.UF_UI_OK Then
& T) S o+ _3 R# S - Exit Sub
' y' \! `0 U/ \; B, B: ? - End If
" E( J$ y" w9 n! d8 ~9 j$ n' Z -
/ o/ j4 G+ A# ?, i - lw.WriteLine("pickedPoint: " & pickedPoint.Coordinates.ToString)! a9 @; q/ S( Y5 W. B; }* s3 L
- + p3 N: D+ p# n8 d
- AskParents(myPointTag)
3 f; p2 Z! W& |( p3 w c4 j! g5 @ -
* m8 `. S3 E! g - End Sub
& |. t3 m4 d; N/ i8 p - 3 o' e6 _& b2 L. ~+ P
- Sub AskParents(ByVal objTag As Tag) B: Y5 {6 X& t2 X- g4 O
-
" A2 h. Z# n0 C) A! ^$ V5 r - Dim n_parents As Integer
% [( F" K$ E$ Q6 Y3 A - Dim parentTags As Tag()
~( Y9 p. e6 g; k" B1 L7 q9 P9 J - Dim myPoint As Point
8 ~/ K# B* Y. j# S% i: f9 B, [ - Dim myEdge As Edge
- d& ~; F# n* d - Dim myXform As Xform
3 g8 J$ n/ W: H" a - Dim myTaggedObject As TaggedObject+ V& Z+ R9 Z5 Z( G. Z$ q& s7 e2 q
- myTaggedObject = Utilities.NXObjectManager.Get(objTag)
! N; M' f1 ~: a! K -
7 _( F w3 ^! \* m9 M, s' K, M, _ - If myTaggedObject.GetType.ToString.ToLower.Contains("point") Then3 r. e9 D- u0 O
- myPoint = myTaggedObject- c6 R6 ]9 A0 N& ?! T
- lw.WriteLine("the tagged object: " & myTaggedObject.GetType.ToString)3 }6 W2 G- d, A' V
- lw.WriteLine("")
& x; k& c5 M1 _' o - 1 I6 U: f( K- o4 Y# g! `4 i: \
- Try
; R0 N: {' n( g2 x0 a - theUfSession.So.AskParents(objTag, UFConstants.UF_SO_ASK_ALL_PARENTS, n_parents, parentTags)
' y8 b/ X3 t, }9 O- D5 X6 O' L - lw.WriteLine("num parents: " & n_parents.ToString)
0 ]7 L/ k1 B/ A - For Each parentTag As Tag In parentTags
9 }* K( D+ [/ V. ]# g, m8 S - Dim parent_object As TaggedObject = Utilities.NXObjectManager.Get(parentTag)/ m% ], D- E: t5 _ }, {
-
& I/ [0 F6 u# r: C) G7 ~5 r - AskParents(parent_object.Tag)
. M q+ t( b% O1 H/ { -
6 }: M6 P4 O/ ~; g - If parent_object.ToString.ToLower.Contains("edge") Then) _5 s4 S! s7 e8 W' k. F7 \0 s
- myEdge = parent_object
) y5 F1 e7 b9 M- d' d& F, U4 H# B - lw.WriteLine("")( g1 b2 t+ `5 u. o+ y' _
- lw.WriteLine("edge type: " & myEdge.SolidEdgeType.ToString)
! W7 j! ^# Z, W: g. \8 e" Q/ X - lw.WriteLine("edge length: " & myEdge.GetLength.ToString)3 k* B' q9 l( J; i5 C1 G' c# L
- lw.WriteLine("edge owning part: " & myEdge.OwningPart.FullPath.ToString)
3 ?" {1 d% b' P" j0 A( B) k9 D - / Z. O9 T5 M/ V: A6 q8 B
- Dim partTag As Tag = myEdge.OwningPart.Tag
+ a- C5 k; p: t+ v - Dim occTags() As Tag
) \% n0 w8 W# {8 q# L" ^ I" U - theUfSession.Assem.AskOccsOfPart(Tag.Null, partTag, occTags)
+ B$ U/ W0 {$ b: V$ v - lw.WriteLine("number of occurences: " & occTags.Length.ToString)
7 r& G! ` G5 n - For Each temp As Tag In occTags# g3 ?' k# q/ L( W7 k
- Dim myComp As Assemblies.Component$ v& o9 z9 b& ~+ A; Z
- myComp = Utilities.NXObjectManager.Get(temp)2 w V( [/ g$ E4 G
- Dim myCompPos As Point3d
' k) a; E8 p, J' ^ - Dim myCompOrientation As Matrix3x3" T. W$ r6 Q; t( q
- myComp.GetPosition(myCompPos, myCompOrientation): C" l) [5 Y+ H. D P
-
* N. s: u# g4 _ y. N - lw.WriteLine("")
* K7 M- b' T8 f - lw.WriteLine("component name: " & myComp.Name)
, A. P( C9 z" g9 x" L; U2 G+ p - lw.WriteLine("component display name: " & myComp.DisplayName)' @& X% j& Y% a. t( Q
- lw.WriteLine("distance from picked point: " & MeasureDistance(pickedPoint, myComp).ToString)
o! X0 e$ s: x" \% M$ c' I - ; b4 D, [6 C, R, y# Z
- If MeasureDistance(pickedPoint, myComp) < myModelingTolerance Then3 v5 R% \6 Q/ T+ i% D+ g4 T
- lw.WriteLine("** This is the component that was picked **")! }- e2 B m9 ^; i: N
- End If
2 \8 y. S; [* r1 j0 h -
2 l0 E9 t- b/ t - lw.WriteLine("")
G( o$ h$ v' q - Next
$ k" e6 e! f4 v. P0 s8 O -
9 a. l9 d- ^* e' K8 Y5 C3 ^ - lw.WriteLine("")
* R8 v2 [/ a2 R( x - End If, W4 ~! l+ O- t, h0 I
- Next
" W! T2 |' g# R: _8 k - 2 A/ h2 U; z( q
- CaTCh ex As Exception R+ S8 Y0 s9 Y5 Z% g. A* Q5 `
- ' NXOpen.NXException: Current object is not smart. V* {' Q5 _' W7 C ]
- lw.WriteLine(" Error: " + ex.Message)! Z" l8 C+ j n! k9 |. O6 \0 X! a( F; ?
- lw.WriteLine(" " & myTaggedObject.GetType.ToString)
3 h& e3 d1 R$ T, Q - End Try4 X. G5 I8 `% _
- 1 p6 E+ H! G* T$ |* {0 [
-
" i% S: p" N% _ - End If+ B) p+ A6 q! B% ]$ ]: ?
- + h. W d+ f0 W& ^6 C! U, _
-
8 S* T) |+ d- L+ a# g" w; Y9 j - End Sub
" D" H" j: g; ?# ]& D -
: {" j0 |' e, p0 ^9 @6 ? - Function select_point(ByVal cue As String, ByRef pt_tag As Tag) As Integer
- O" _: I8 f2 g Y& [0 { -
6 X. D, Y1 O# S9 n( e - Dim base_pt As Double() = New Double(2) {}
4 v$ J N! n/ m/ }; o" r - 'Dim point_tag As NXOpen.Tag = NXOpen.Tag.Null" s$ `7 l* g! k; {; Q+ C( h$ W. j5 x
- Dim response As Integer = 04 v+ s! c. P. y- K7 g0 \
- Dim base_method As UFUi.PointBaseMethod = UFUi.PointBaseMethod.PointEndPt+ S T8 e& }0 I e! _- E) L; N1 {5 H
-
- Q! Y4 n9 |; {( u+ ?8 K - theUfSession.Ui.LockUGAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
' U1 `! j& D5 S2 { - theUfSession.Ui.PointConstruct(cue, base_method, pt_tag, base_pt, response): V+ j' @& Y; g7 f
- theUfSession.Ui.UnlockUgAccess(NXOpen.UF.UFConstants.UF_UI_FROM_CUSTOM)
. ]& o" X+ a9 J1 W -
- y2 W) k6 G3 @# V; h* |$ F% o' w& O6 C - Dim pointLocation As Point3d5 T/ E; z2 u% @2 @, ?; a
- pointLocation.X = base_pt(0)
. M9 e5 `; m. I) j) y2 L# ?( h4 k2 o. `* d - pointLocation.Y = base_pt(1)6 p% P8 X0 N O! b- _, @9 z1 f2 p- Z- p
- pointLocation.Z = base_pt(2)
) F5 }7 _% [4 T! k4 f7 A# n) w - pickedPoint = theSession.Parts.Display.Points.CreatePoint(pointLocation); H# ?. B- c* v7 R; w
- 'pickedPoint.SetVisibility(SmartObject.VisibilityOption.Visible)
& s C* K- l0 ^! a% m6 z - 9 u$ r4 a: [2 D, v5 W: g
- Return response
% a' i4 q) N3 E& ^' ~! T -
9 d& v7 n! J" T7 D4 C0 w& W7 y& r: { - End Function' c3 Q, \/ t% G! l5 ~; }
-
" ?7 E8 E6 q- b' r1 B7 f0 k5 o9 m$ ^ - Function SelectPointObject(ByVal prompt As String, ByRef selPoint As Point) As Selection.Response
& B* P) w! h! `& h$ C, V* U -
2 i* c5 ^( g7 j* Z4 T6 F+ o - Dim selObj As TaggedObject2 ]$ Z5 @( @# J7 i' D) U/ E4 w& H; X
- Dim theUI As UI = UI.GetUI
$ s2 k/ l6 T3 K" \0 S: O2 n - Dim title As String = "Select a Point"# |' | }: H4 C$ S% ~4 q+ C: I
- Dim includeFeatures As Boolean = False
' S/ k1 G7 J D1 b# z; o) n - Dim keepHighlighted As Boolean = False
# H0 |% d. N% Q9 d - Dim selAction As Selection.SelectionAction = Selection.SelectionAction.ClearAndEnableSpecific
: g# I7 B' F) Z0 P! q G - Dim cursor As Point3d0 ^! e% |8 v2 F3 M9 r* X
- Dim scope As Selection.SelectionScope = Selection.SelectionScope.AnyInAssembly
, ^ K# M+ @$ w# X6 G' K8 C: I# B* p7 x - Dim selectionMask_array(0) As Selection.MaskTriple
& f6 f, s% t7 L! B _; Q# i+ A5 N -
! `- z/ s: {2 ^% n2 E9 x/ n8 g - With selectionMask_array(0)
) \& c! o3 n5 ?. s( g2 e' v M5 b - .Type = UFConstants.UF_point_type! {6 W/ ?& m0 p% ?3 N
- .Subtype = UFConstants.UF_all_subtype/ T! A4 N4 c x6 z* W, c9 B3 x) M
- End With2 ^9 _- `! Y$ J! w: k
- 4 b ]. Q c4 U5 s% t
- Dim resp As Selection.Response = theUI.SelectionManager.SelectTaggedObject(prompt, _
5 Z4 V+ D- L8 W7 _0 D) q - title, scope, selAction, _1 S' A; M, D6 D' Z% X8 P+ s5 ~
- includeFeatures, keepHighlighted, selectionMask_array, _2 p: ?8 Y! Z+ r* M
- selobj, cursor)
' q9 B$ Q% n/ x3 h; n) V1 \! { - If resp = Selection.Response.ObjectSelected OrElse resp = Selection.Response.ObjectSelectedByName Then
" V6 N7 I, W( k$ Q - selPoint = selObj
$ o* |! Z& G6 F( v: a5 G - Return Selection.Response.Ok
' T" A! D9 Q3 ` - Else g4 o* L! i) B1 K+ n
- Return Selection.Response.Cancel
6 `% M1 a& e& q) V0 }" C5 M - End If F9 ~1 R k( {8 c: v
- 3 j3 L7 M9 y3 W5 {# o- A
- End Function
, F b& u* m9 \, I7 r -
7 r7 L+ ~% t0 N3 y, ?( Y - Function MeasureDistance(ByVal obj1 As DisplayableObject, ByVal obj2 As DisplayableObject) As Double0 c: A8 a a/ h* o' k
- # C9 U1 W. [3 p$ U# R+ \2 a/ W3 H! q
- Dim result As Double3 a* D4 X% l) J5 }
-
" w; S' U' _. x2 O! r+ K+ ^; R - Try
! j1 Y. s# |, X* h" L% [ - Dim nullNXObject As NXObject = Nothing
4 g! z( z8 a- A& ~( M$ A4 t/ \9 v -
: ]! P* }# s% K9 q- R - Dim measureDistanceBuilder1 As MeasureDistanceBuilder
) ?0 t/ O1 F6 L - measureDistanceBuilder1 = theSession.Parts.Display.MeasureManager.CreateMeasureDistanceBuilder(nullNXObject) f; d' j1 y8 l
- # m1 f- C/ r# |* S- c, B, a; I
- measureDistanceBuilder1.InfoWindow = False$ ]0 M! E* t8 \3 _
- % b% Y( F/ G) v( n/ f8 f( k
- measureDistanceBuilder1.Mtype = MeasureDistanceBuilder.MeasureType.Minimum
0 Y0 l6 t* w' a7 @1 g& C; M" ^ -
9 z1 O/ H/ m3 x3 w. E/ H* B - Dim nullUnit As Unit = Nothing V) M0 q) K/ J# Y @9 x9 C
- + R \- Z. N# b, i% T6 X A. Z; ]
- Dim measureDistance1 As MeasureDistance
, l3 q# b# c0 k9 T. S' r! p7 e - measureDistance1 = theSession.Parts.Display.MeasureManager.NewDistance(nullUnit, MeasureManager.MeasureType.Minimum, obj1, obj2)! _0 {7 T9 G- \* e. ^( M- o2 v: M
- 2 K! g4 o6 ~4 x: o. a! N1 q
- result = measureDistance1.Value6 k/ k N" i9 y2 S2 g
-
+ X$ U/ h, f: H9 f" _3 b- n& j n - 'measureDistance1.Information()6 Y6 j0 h" O% r* O
- ! L# _/ a7 n! W8 g V
- measureDistance1.Dispose()* F2 M- O, ?% j- a5 W# l
- 5 r0 r- K6 V5 Z0 H! j
- Catch ex As NXException
' M3 ~2 c8 z; _2 h# b7 y! {* U) ^; C2 L: @: K - MsgBox(ex.Message)8 D' q: d3 Q& C$ h) H- F- [
- Return Nothing
$ C* p* l/ J/ H' Q, G& W - , n, E: [( Z- q3 P3 o
- End Try7 k) Y3 y! X( i0 o
- & [ [0 L H% D. v/ I: c
- * s3 H0 M( X% N+ @- K% r
- Return result
/ q9 o1 p" |# B) |- a5 @ -
+ x: {; D% h( c: F/ [6 U. m - End Function- M( p+ p( C& G0 E: h; B. p
- / g. n: l3 N2 s+ a) M6 D
- , x' ^6 d7 i& R! M( ~3 K
- Public Function GetUnloadOption(ByVal dummy As String) As Integer; d3 h# a: V" Y, g F8 |
- 3 f" v% E7 J4 X% `4 J$ _8 U
- 'Unloads the image when the NX session terminates
' q6 q) U) [* u* \ - GetUnloadOption = NXOpen.Session.LibraryUnloadOption.AtTermination, z2 g" p$ y ^$ H2 M8 c* ?
- 4 {+ @ [8 Y3 o; ~
- End Function
. ]0 R) s; p% L+ _ -
9 D2 [2 g |) y' y& o$ s - End Module
" o8 C7 M9 [2 \9 O, \4 b6 ^! x - </P>
复制代码
" ~! D4 e, u4 g$ J3 y, L0 P1 @ |
|