diff --git a/AssemblyTiers2.vb b/AssemblyTiers2.vb new file mode 100644 index 0000000000000000000000000000000000000000..94273769bd9a5a8ec8f3cbd8119efa18fe61e305 --- /dev/null +++ b/AssemblyTiers2.vb @@ -0,0 +1,1673 @@ +Imports Microsoft.VisualBasic + +Public Class AssemblyTiers2 + + Public intStep As Integer + Public dCollSens As Double + Public intParts As Integer + Public primaryFasteners As New Collection + Public secondaryFasteners As New Collection + Public cAllProducts As New Collection + Public cRelevantProducts As New Collection + Public cBaseProducts As New Collection + Public aRemovalDistances() As Single + Public aAssemblyBoundaries(5) As Double + Public aPartBBGlob() As Single + Public aInitPos() As Double + Public sChosenDirection As String + Public oList As Variant + + + Sub CatMain() + + 'On Error Resume Next + + Debug.Print "========================================================" + + Dim document As ProductDocument + Set document = CATIA.ActiveDocument + + 'Extraction of all "leaf" products to cAllProducts + ExtractProducts document.Product + + 'Collection of "leaf" Products (without nested Products) + Set oInstances = cAllProducts + Dim i As Integer + Dim outputText As String + + intParts = oInstances.Count + outputText = "This assembly contains " + CStr(oInstances.Count) + " parts" + vbNewLine + MsgBox outputText + + 'Select the assembly's base components + 'Declare selection + Dim oSel As Selection + Dim baseSel As Object 'to deal with restricted function problem + Set oSel = CATIA.ActiveDocument.Selection + Set baseSel = oSel + 'Create an array for CATParts + ReDim strArray(0) + strArray(0) = "Part" + 'Display a messagebox prompting the user to select CATIA parts + MsgBox "Please select the assembly's base components" + sStatus = baseSel.SelectElement3(strArray, "Select parts", False, CATMultiSelTriggWhenUserValidatesSelection, False) + + For i = 1 To baseSel.Count + cBaseProducts.Add baseSel.Item(i).LeafProduct + Debug.Print "Added base component: " & baseSel.Item(i).LeafProduct.Name + Next + + oSel.Clear + baseSel.Clear + + 'Collision parameters + intStep = 1 + dCollSens = 1 + CollisionParams.Show + Debug.Print "Step = " + CStr(intStep) + Debug.Print "Sensitivity = " + CStr(dCollSens) + + 'Separation of components + DeactivateFasteners document.Product + + 'Display the number of relevant parts + outputText = CStr(cRelevantProducts.Count) + " parts are considered in precedence graph generation" + MsgBox outputText + + 'Distances from global axis system origin to assembly boundary (along global axis) + aAssemblyBoundaries(0) = 0# 'max_X + aAssemblyBoundaries(1) = 0# 'min_X + aAssemblyBoundaries(2) = 0# 'max_Y + aAssemblyBoundaries(3) = 0# 'min_Y + aAssemblyBoundaries(4) = 0# 'max_Z + aAssemblyBoundaries(5) = 0# 'min_Z + + 'Global coordinates, of which at least one has to be exceeded by the part origin, for that part to be "disassembled" + 'in global axis directions + ReDim aRemovalDistances(cRelevantProducts.Count - 1, 5) + aRemovalDistances(0, 0) = 0# 'X_pos + aRemovalDistances(0, 1) = 0# 'X_neg + aRemovalDistances(0, 2) = 0# 'Y_pos + aRemovalDistances(0, 3) = 0# 'Y_neg + aRemovalDistances(0, 4) = 0# 'Z_pos + aRemovalDistances(0, 5) = 0# 'Z_neg + + 'Store information about secondary BB (6 distances to boundary planes from part origin along global x/y/z directions) - used to define aRemovalDistances + 'Secondary BB: faces parallel to global origin planes and defined by outermost corner points of local BB of this part + ReDim aPartBBGlob(cRelevantProducts.Count - 1, 5) + aPartBBGlob(0, 0) = 0# 'x_part_glob_pos + aPartBBGlob(0, 1) = 0# 'x_part_glob_neg + aPartBBGlob(0, 2) = 0# 'y_part_glob_pos + aPartBBGlob(0, 3) = 0# 'y_part_glob_neg + aPartBBGlob(0, 4) = 0# 'z_part_glob_pos + aPartBBGlob(0, 5) = 0# 'z_part_glob_neg + + Dim BBStartTime As Double + BBStartTime = Timer + + 'This is used to check whether a product must be moved in current iteration + ReDim bMoveable(cRelevantProducts.Count - 1) As Boolean + + For i = 1 To cRelevantProducts.Count + + '########## this won't work if part document name is not = part number ###### + Dim partI As Part + Dim prodI As Product + Set prodI = cRelevantProducts.Item(i) + Dim docName As String + docName = prodI.PartNumber + ".CATPart" + Debug.Print ">>> " & docName & " <<<" + GenerateBoundingBox CATIA.Documents.Item(docName), prodI, i + '############################################################################ + + 'Determine assembly 's limits + ' Dim partI As Part + ' Dim prodI As Product + ' Set prodI = cRelevantProducts.Item(i) + ' Dim docName As String + ' docName = prodI.PartNumber + ".CATPart" + ' Dim oPartDoc As PartDocument + ' Dim sPartPath As String + ' sPartPath = prodI.GetMasterShapeRepresentationPathName + ' Set oPartDoc = CATIA.Documents.Read(sPartPath) + ' Debug.Print ">>> " & docName & " <<<" + 'CATIA.Documents.Item(docName) + ' GenerateBoundingBox oPartDoc, prodI, i + + 'Base component is in cRelevantProducts, but not moveable + If productIsInCollection(prodI, cBaseProducts) Then + bMoveable(i - 1) = False + Else + bMoveable(i - 1) = True + End If + + Next i + + Dim BBSecondsElapsed As Double + BBSecondsElapsed = Round(Timer - BBStartTime, 2) + MsgBox "Bounding box calculation took " & CStr(BBSecondsElapsed) & " seconds" + + MsgBox "Assembly Boundaries: " & vbNewLine & + "max_X = " & aAssemblyBoundaries(0) & vbNewLine & + "min_X = " & aAssemblyBoundaries(1) & vbNewLine & + "max_Y = " & aAssemblyBoundaries(2) & vbNewLine & + "min_Y = " & aAssemblyBoundaries(3) & vbNewLine & + "max_Z = " & aAssemblyBoundaries(4) & vbNewLine & + "min_Z = " & aAssemblyBoundaries(5) + + 'After the aAssemblyBoundaries and aPartBBGlob are calculated, define aRemovalDistances + For i = 0 To cRelevantProducts.Count - 1 + aRemovalDistances(i, 0) = aAssemblyBoundaries(0) - aPartBBGlob(i, 1) + aRemovalDistances(i, 1) = aAssemblyBoundaries(1) - aPartBBGlob(i, 0) + aRemovalDistances(i, 2) = aAssemblyBoundaries(2) - aPartBBGlob(i, 3) + aRemovalDistances(i, 3) = aAssemblyBoundaries(3) - aPartBBGlob(i, 2) + aRemovalDistances(i, 4) = aAssemblyBoundaries(4) - aPartBBGlob(i, 5) + aRemovalDistances(i, 5) = aAssemblyBoundaries(5) - aPartBBGlob(i, 4) + Next i + + MsgBox "Removal distances for " & cRelevantProducts.Item(1).PartNumber & ":" & vbNewLine & + "X_pos = " & aRemovalDistances(0, 0) & vbNewLine & + "X_neg = " & aRemovalDistances(0, 1) & vbNewLine & + "Y_pos = " & aRemovalDistances(0, 2) & vbNewLine & + "Y_neg = " & aRemovalDistances(0, 3) & vbNewLine & + "Z_pos = " & aRemovalDistances(0, 4) & vbNewLine & + "Z_neg = " & aRemovalDistances(0, 5) + + '#################### Main algorithm ########################## + Dim intI As Integer 'total number of components in the scene minus base parts + Dim intJ As Integer 'number of primary directions (default: global + local) + Dim intTier As Integer 'number of current assembly tier + Dim int_i As Integer 'product index in cRelevantProducts + Dim int_i_cycle As Integer 'product counter + Dim int_j As Integer 'primary direction index 1..12 + Dim int_k As Integer 'secondary direction index 1..10 + Dim total_coll As Long 'counter of total collision detections + Dim cDeactivated As New Collection 'really deactivated products + Dim cVirtual As New Collection 'these funny green parts + Dim precedenceMatrix() As Single + ReDim disassDir(cRelevantProducts.Count - 1, 11) + ReDim aTiers(cRelevantProducts.Count - 1) As Integer + ReDim aInitPos(cRelevantProducts.Count - 1, 11) 'remember initial positions of the products + ReDim bInitPosRecorded(cRelevantProducts.Count - 1) As Boolean + ReDim precedenceMatrix(cRelevantProducts.Count - 1, cRelevantProducts.Count - 1) + ReDim bDeactivated(cRelevantProducts.Count - 1) As Boolean + + intI = cRelevantProducts.Count 'the index of base components will be simply skipped (cRelevantProducts includes cBaseProducts, unlike in the paper!) + intJ = 6 'number of disassembly directions (6 - only global axes, 12 - including local axes) + intTier = 1 'counts current disassembly tier (lower number means earlier disassembly possible) - this gets reversed in the end + int_i = 1 'index of current part in collection of relevant products + int_i_cycle = 1 'counter for the current tier iteration + int_j = 1 'index of disassembly direction + int_j_temp = 0 'used to display movement direction once + total_coll = 0 + + 'map indices to directions (careful, starts from 0 here, but the paper and moveProduct uses 1 as start) + Dim d1 + Set d1 = CreateObject("Scripting.Dictionary") + d1.Add 0, "Global X+" + d1.Add 1, "Global Y+" + d1.Add 2, "Global Z+" + d1.Add 3, "Global X-" + d1.Add 4, "Global Y-" + d1.Add 5, "Global Z-" + d1.Add 6, "Local X+" + d1.Add 7, "Local Y+" + d1.Add 8, "Local Z+" + d1.Add 9, "Local X-" + d1.Add 10, "Local Y-" + d1.Add 11, "Local Z-" + + 'access the clash technology object + Dim cClashes As Clashes + Set cClashes = CATIA.ActiveDocument.Product.GetTechnologicalObject("Clashes") + 'access the groups technology object + Dim cGroups As Groups + Set cGroups = CATIA.ActiveDocument.Product.GetTechnologicalObject("Groups") + + 'calculate initial clashes (due to imprecise modelling or STEP file export...) +' Dim cInitClashes As New Collection +' Dim oInitClash 'As Clash +' 'Set oInitClash = cInitClashes.Add +' oInitClash.ComputationType = catClashComputationTypeBetweenAll +' oInitClash.Compute +' Dim cInitConflicts As Conflicts +' Set cInitConflicts = oInitClash.Conflicts +' Dim numConfl As Integer +' Dim numClashes As Integer +' numClashes = 0 +' For numConfl = 1 To cInitConflicts.Count +' If cInitConflicts.Item(numConfl).Type = catConflictTypeClash Then +' cInitClashes.Add cInitConflicts.Item(numConfl) +' numClashes = numClashes + 1 +' End If +' Next numConfl +' MsgBox CStr(numClashes) & " clashes were detected in the original model." + + Dim StartTime As Double + StartTime = Timer + + Do + + 'Processing next Product + Dim product1 As Product + Set product1 = cRelevantProducts.Item(int_i) + Debug.Print "Processing " & product1.Name & " [tier=" & intTier & ", i_cycle=" & int_i_cycle & ", I=" & intI & "]" + + 'Skip not moveable products + If Not bMoveable(int_i - 1) Then + 'the part is a base component or deactivated + GoTo entry0 + End If + + 'Remember initial position P_i (initPos) + Dim initPos(11) + Dim oPosition1 As Object + Set oPosition1 = product1.Position + oPosition1.GetComponents initPos + If bInitPosRecorded(int_i - 1) = False Then + Dim ip As Integer + For ip = 0 To 11 + aInitPos(int_i - 1, ip) = initPos(ip) + Next ip + bInitPosRecorded(int_i - 1) = True + End If + + 'For each product, determine whether it is a base product, deactivated or virtual + ' Dim bBaseProduct As Boolean + ' bBaseProduct = productIsInCollection(product1, cBaseProducts) + ' Dim bDeactivated As Boolean + ' bDeactivated = productIsInCollection(product1, cDeactivated) + ' Dim bVirtual As Boolean + ' bVirtual = productIsInCollection(product1, cVirtual) + + 'Group that includes our product (needed for collision detection between two selections or groups) + Dim group1 As Group + Set group1 = cGroups.Add + group1.AddExplicit product1 + + 'Create a Group of Products that this product shouldn't collide with + Dim group2 As Group + Set group2 = cGroups.Add + Dim iStaticProduct As Integer + For iStaticProduct = 1 To cRelevantProducts.Count + If iStaticProduct <> int_i And Not bDeactivated(iStaticProduct - 1) Then + group2.AddExplicit cRelevantProducts.Item(iStaticProduct) + End If + Next iStaticProduct + + Do +entry1: + 'Movement step in a given direction + + 'If it is a movable part (not base component or already deactivated or "virtual" part from higher tier)... + If bMoveable(int_i - 1) = True Then + + 'move component intStep distance in int_j direction + moveProduct product1, int_j, True + + 'display current disassembly direction once it changes + If int_j <> int_j_temp Then + Debug.Print "[" & d1.Item(int_j - 1) & "]" + int_j_temp = int_j + End If + + 'collision detection + If collisionDetected(cClashes, group1, group2) Then + + 'check for collisions with higher tier + Dim detConflicts As Conflicts + Set detConflicts = cClashes.Item(cClashes.Count).Conflicts + + If detConflicts.Count > 0 Then + + Dim oConflict1 As Conflict + Dim ic As Integer + + For ic = 1 To detConflicts.Count + + Set oConflict1 = detConflicts.Item(ic) + oConflict1.Status = catConflictStatusRelevant + + If oConflict1.Type = catConflictTypeClash Then + + If oConflict1.Value < -dCollSens Then + + Dim secProduct As Product + 'get the product we collided with + Set secProduct = oConflict1.SecondProduct + + 'find the tier of the second product + Dim dummyProd As Product + Dim iIndex As Integer + iIndex = 0 + For Each dummyProd In cRelevantProducts + If dummyProd.Name = secProduct.Name Then + Exit For + End If + iIndex = iIndex + 1 + Next dummyProd + Dim secTier As Integer + secTier = aTiers(iIndex) + + 'as soon as secTier is not the direct higher tier, no reason to move further + If secTier < intTier - 1 Then + GoTo exit1 + End If + + 'if the disassembly tier is 1 lower (attention: tiers get reversed in the end to the assembly tiers!) + If secTier = intTier - 1 And Not (secTier = 0 And intTier = 1) Then + + Debug.Print "Collision with higher tier: " & oConflict1.FirstProduct.Name & " - " & oConflict1.SecondProduct.Name & " = " & oConflict1.Value + + 'record precedence relation, because secProduct is an obstacle in the way of the current product + precedenceMatrix(int_i - 1, iIndex) = 1 + + 'move the product through the "virtual" part from higher tier + GoTo entry1 + + End If + + End If 'deeper than dCollSens + + End If 'clash + + Next ic 'next conflict + + End If +exit1: + 'move product to initial position + Dim oPosition3 As Object + Set oPosition3 = product1.Position + oPosition3.SetComponents initPos + 'take next direction + int_j = int_j + 1 + 'if not all directions are checked for this product... + If int_j <= intJ Then + 'continue movement in primary directions (movement loop) + Else + 'all directions were checked + total_coll = total_coll + intJ + Debug.Print "Disassembly trials: " & total_coll + int_i = int_i + 1 + int_i_cycle = int_i_cycle + 1 + int_j = 1 + int_j_temp = 0 + + 'if active products remain in this cycle... + If int_i_cycle <= intI - cBaseProducts.Count Then + 'process next product in this cycle + Exit Do + Else + 'all components in this cycle were checked + Dim p As Integer + Dim intItemp As Integer + intItemp = intI + 'record tiers + For p = 1 To cRelevantProducts.Count + If productIsInCollection(cRelevantProducts.Item(p), cBaseProducts) Then + 'base product always has tier 0 (doesn't get reversed) + aTiers(p - 1) = 0 + Else + 'not a base product + 'product has valid disass. directions and has no tier recorded yet + If productHasValidDisassDir(p, disassDir) And Not aTiers(p - 1) > 0 Then + 'save tier + aTiers(p - 1) = intTier + 'decrease the counter of active products in assembly + intI = intI - 1 + 'change visuals for "virtual" products + Dim virtSelection As Selection + Set virtSelection = document.Selection + virtSelection.Clear + virtSelection.Add cRelevantProducts.Item(p) + Set visProperties1 = virtSelection.VisProperties + visProperties1.SetRealColor 80, 255, 160, 1 + virtSelection.Clear + 'remember virtual green products + 'cVirtual.Add cRelevantProducts.Item(p) + 'fix position + bMoveable(p - 1) = False + End If + 'product from higher tier + If productHasValidDisassDir(p, disassDir) And aTiers(p - 1) = intTier - 1 Then + 'deactivate + Dim selection2 As Selection + Set selection2 = CATIA.ActiveDocument.Selection + selection2.Clear + selection2.Add cRelevantProducts.Item(p) + CATIA.StartCommand("Activate / Deactivate Component") + selection2.Clear + cDeactivated.Add cRelevantProducts.Item(p) + bDeactivated(p - 1) = True + End If + End If + Next p + + 'Notify the user if no parts could be disassembled in this tier + If intI = intItemp Then + Debug.Print "WARNING! No parts could be removed during this cycle." & vbNewLine & "This is usually due to inaccuracies in modelling (e.g. collisions in initial assembly)." + GoTo exitCD + End If + + 'recalculate assembly boundaries and removal distances + RecalculateRemovalDistances cRelevantProducts, cDeactivated + + 'if there are still parts to disassemble... + If intI > cBaseProducts.Count Then + 'increment tier + intTier = intTier + 1 + 'process next cycle of products + int_i = 1 + int_i_cycle = 1 + Exit Do + Else + 'all parts were disassembled + 'end collision detection algorithm + GoTo exitCD + End If + End If + End If + Else + 'no collisions after the movement step + 'check whether part reached final position + If productReachedFinalPosition(product1, int_i) Then + 'store valid disassembly direction + disassDir(int_i - 1, int_j - 1) = 1 + GoTo exit1 + Else + 'continue movement in primary directions (movement loop) + End If + End If + Else +entry0: + 'the part is a base component or deactivated + Debug.Print "Skipping " + product1.Name + " (base component or deactivated)" + int_i = int_i + 1 + 'process next product + Exit Do + End If + Loop 'movement loop + Loop 'product loop + +exitCD: + + Dim SecondsElapsed As Double + SecondsElapsed = Round(Timer - StartTime, 2) + MsgBox "Collision detection algorithm finished execution after " & CStr(SecondsElapsed) & " seconds" + + 'Return products to their initial positions, activate them + Dim p1 As Integer + For p1 = 1 To cRelevantProducts.Count + If Not productIsInCollection(cRelevantProducts.Item(p1), cBaseProducts) Then + Dim oPosition4 As Object + Set oPosition4 = cRelevantProducts.Item(p1).Position + Dim aPos(11) + For comp = 0 To 11 + aPos(comp) = aInitPos(p1 - 1, comp) + Next comp + oPosition4.SetComponents aPos + Dim selection4 As Selection + Set selection4 = CATIA.ActiveDocument.Selection + selection4.Clear + selection4.Add cRelevantProducts.Item(p1) + CATIA.StartCommand("Activate / Deactivate Component") + selection4.Clear + End If + Next p1 + + 'Select a single extraction direction in case there are multiple + Dim d2 + Set d2 = CreateObject("Scripting.Dictionary") + d2.Add "Global X+", 0 + d2.Add "Global Y+", 1 + d2.Add "Global Z+", 2 + d2.Add "Global X-", 3 + d2.Add "Global Y-", 4 + d2.Add "Global Z-", 5 + d2.Add "Local X+", 6 + d2.Add "Local Y+", 7 + d2.Add "Local Z+", 8 + d2.Add "Local X-", 9 + d2.Add "Local Y-", 10 + d2.Add "Local Z-", 11 + 'Inverse axis indices + Dim d3 + Set d3 = CreateObject("Scripting.Dictionary") + d3.Add 0, 3 + d3.Add 1, 4 + d3.Add 2, 5 + d3.Add 3, 0 + d3.Add 4, 1 + d3.Add 5, 2 + d3.Add 6, 9 + d3.Add 7, 10 + d3.Add 8, 11 + d3.Add 9, 6 + d3.Add 10, 7 + d3.Add 11, 8 + For int_i = 0 To cRelevantProducts.Count - 1 + Dim sum As Integer + sum = 0 + For intAxis = 0 To intJ - 1 + sum = sum + disassDir(int_i, intAxis) + Next intAxis + 'Only for products with multiple extraction directions + If sum > 1 Then + 'Add options to ComboBox + For intAxis = 0 To intJ - 1 + If disassDir(int_i, intAxis) = 1 Then + ExtractionDirection.ComboBox1.AddItem d1.Item(intAxis) + End If + Next intAxis + 'Highlight the product in CATIA + Dim selection5 As Selection + Set selection5 = CATIA.ActiveDocument.Selection + selection5.Clear + selection5.Add cRelevantProducts.Item(int_i + 1) + 'Show dialog + ExtractionDirection.Show + selection5.Clear + 'Translate chosen axis name back into index 0..11 + Dim iChosenDir As Integer + iChosenDir = d2.Item(sChosenDirection) + 'Set all other disassembly directions to 0 + For intAxis = 0 To intJ - 1 + If intAxis = iChosenDir Then + disassDir(int_i, intAxis) = 1 + Else + disassDir(int_i, intAxis) = 0 + End If + Next intAxis + End If + 'Reverse tier values + Dim intMaxTier As Integer + intMaxTier = intTier + If aTiers(int_i) <> 0 Then + aTiers(int_i) = intMaxTier + 1 - aTiers(int_i) + End If + 'Reverse disassembly axis (assembly axis = -disass. axis) + For intAxis = 0 To intJ - 1 + If disassDir(int_i, intAxis) = 1 Then + disassDir(int_i, intAxis) = 0 + disassDir(int_i, d3.Item(intAxis)) = 1 + Exit For + End If + Next intAxis + Next int_i + + 'Association of components belonging to sequential tiers + + Dim cClashes1 As Clashes + Dim oClash1 'As Clash + Set oClash1 = cClashes.Add + oClash1.ComputationType = catClashComputationTypeBetweenAll + oClash1.Compute + Dim cInitConflicts As Conflicts + Set cInitConflicts = oClash1.Conflicts + Dim initConfl As Conflict + Dim nConfl As Integer + nConfl = 0 + For Each initConfl In cInitConflicts + Dim firstIndex As Integer + Dim secondIndex As Integer + firstIndex = GetProductIndex(initConfl.FirstProduct, cRelevantProducts) + secondIndex = GetProductIndex(initConfl.SecondProduct, cRelevantProducts) + If aTiers(firstIndex) = aTiers(secondIndex) - 1 Then + precedenceMatrix(firstIndex, secondIndex) = 1 + End If + If aTiers(secondIndex) = aTiers(firstIndex) - 1 Then + precedenceMatrix(secondIndex, firstIndex) = 1 + End If + Next initConfl + +' For int_i = 1 To cRelevantProducts.Count +' Dim bNoContacts As Boolean +' bNoContacts = True +' 'loop over components from previous tier +' For int_j = 1 To cRelevantProducts.Count +' If aTiers(int_j - 1) = aTiers(int_i - 1) - 1 And aTiers(int_i - 1) <> 0 Then +' 'Test for contact +' 'define two groups +' Dim group11 As Group +' Dim group21 As Group +' Set group11 = cGroups.Add +' Set group21 = cGroups.Add +' group11.AddExplicit cRelevantProducts.Item(int_i) +' group21.AddExplicit cRelevantProducts.Item(int_j) +' 'create a new clash analysis +' Dim oClash 'As Clash +' Set oClash = cClashes.Add +' oClash.ComputationType = catClashComputationTypeBetweenTwo +' oClash.FirstGroup = group11 +' oClash.SecondGroup = group21 +' oClash.InterferenceType = catClashInterferenceTypeContact +' oClash.Compute +' Dim cConflicts As Conflicts +' Set cConflicts = oClash.Conflicts +' If cConflicts.Count > 0 Then +' precedenceMatrix(int_j - 1, int_i - 1) = 1 +' bNoContacts = False +' End If +' End If +' Next int_j +' Next int_i + + 'Export data to Excel + Set objExcel = CreateObject("Excel.Application") + objExcel.Visible = True + objExcel.Workbooks.Add + objExcel.ActiveWorkbook.Sheets.Add.Name = "Precedence Matrix" + Set objSheet1 = objExcel.ActiveWorkbook.Worksheets(2) + objSheet1.Name = "Assembly Directions" + Set objSheet2 = objExcel.ActiveWorkbook.Worksheets(1) + + 'Assembly directions + objSheet1.Cells(1, 1).Value = "Product" + objSheet1.Cells(1, 2).Value = "+X" + objSheet1.Cells(1, 3).Value = "+Y" + objSheet1.Cells(1, 4).Value = "+Z" + objSheet1.Cells(1, 5).Value = "-X" + objSheet1.Cells(1, 6).Value = "-Y" + objSheet1.Cells(1, 7).Value = "-Z" + objSheet1.Cells(1, 8).Value = "Assembly Tier" + For int_i = 1 To cRelevantProducts.Count + objSheet1.Cells(int_i + 1, 1).Value = cRelevantProducts.Item(int_i).Name + For intAxis = 0 To intJ - 1 + objSheet1.Cells(int_i + 1, 2 + intAxis).Value = disassDir(int_i - 1, intAxis) + Next intAxis + objSheet1.Cells(int_i + 1, intJ + 2).Value = aTiers(int_i - 1) + Next int_i + + 'Precedence relations + For int_i = 1 To cRelevantProducts.Count + For int_j = 1 To cRelevantProducts.Count + objSheet2.Cells(int_i, int_j).Value = precedenceMatrix(int_i - 1, int_j - 1) + Next int_j + Next int_i + + End Sub + Sub ExtractProducts(oCurrentProduct As Product) + + Dim oCurrentTreeNode As Product + Dim i As Integer + + For i = 1 To oCurrentProduct.Products.Count + Set oCurrentTreeNode = oCurrentProduct.Products.Item(i) + + 'recursive + If oCurrentTreeNode.Products.Count > 0 Then + ExtractProducts oCurrentTreeNode + Else + Debug.Print oCurrentTreeNode.PartNumber & " (" & oCurrentTreeNode.Name & ") is a leaf product" + 'remove special characters from the part number + Dim newPartNo As String + Dim newCharacter As String + newCharacter = " " + newPartNo = oCurrentTreeNode.PartNumber + newPartNo = Replace(newPartNo, "<", newCharacter) + newPartNo = Replace(newPartNo, ">", newCharacter) + newPartNo = Replace(newPartNo, "/", newCharacter) + oCurrentTreeNode.PartNumber = newPartNo + cAllProducts.Add oCurrentTreeNode + End If + + Next + + End Sub + + Sub GetNextNode(oCurrentProduct As Product) + + Dim oCurrentTreeNode As Product + Dim i As Integer + + For i = 1 To oCurrentProduct.Products.Count + Set oCurrentTreeNode = oCurrentProduct.Products.Item(i) + + If IsPart(oCurrentTreeNode) = True Then + MsgBox oCurrentTreeNode.PartNumber & " is a part" + ElseIf IsProduct(oCurrentTreeNode) = True Then + MsgBox oCurrentTreeNode.PartNumber & " is a product" + Else + MsgBox oCurrentTreeNode.PartNumber & " is a component" + End If + + 'recursive + If oCurrentTreeNode.Products.Count > 0 Then + GetNextNode oCurrentTreeNode + End If + + Next + + End Sub + + Function IsPart(objCurrentProduct As Product) As Boolean + + Dim oTestPart As PartDocument + + Set oTestPart = Nothing + + On Error Resume Next + + Set oTestPart = CATIA.Documents.Item(objCurrentProduct.PartNumber & ".CATPart") + + If Not oTestPart Is Nothing Then + IsPart = True + Else + IsPart = False + End If + + End Function + + Function IsProduct(objCurrentProduct As Product) As Boolean + + Dim oTestProduct As ProductDocument + + Set oTestProduct = Nothing + + On Error Resume Next + + Set oTestProduct = CATIA.Documents.Item(objCurrentProduct.PartNumber & ".CATProduct") + + If Not oTestProduct Is Nothing Then + IsProduct = True + Else + IsProduct = False + End If + + End Function + + Function DeactivateFasteners(objProduct As Product) + + Dim objParts As New Collection + 'On the top level of product tree + 'Set objParts = objProduct.Products + 'Recursive + Set objParts = cAllProducts + Dim i As Integer + Dim selection1 As Selection + Set selection1 = CATIA.ActiveDocument.Selection + selection1.Clear + + Dim intFasteners As Integer + intFasteners = 0 + + For i = 1 To objParts.Count + Dim sName As String + Dim prod As Product + Dim primFastSize As Integer + + Set prod = objParts.Item(i) + sName = LCase(prod.PartNumber) + 'Debug.Print sName + If InStr(sName, "bolt") > 0 Then + Debug.Print(prod.Name + " was identified as a bolt") + selection1.Add prod + + primaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "screw") Or InStr(sName, "schraube") > 0 Then + Debug.Print(prod.Name + " was identified as a screw") + selection1.Add prod + + primaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "clip") > 0 Then + Debug.Print(prod.Name + " was identified as a clip") + selection1.Add prod + + primaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "wedge") > 0 Then + Debug.Print(prod.Name + " was identified as a wedge") + selection1.Add prod + + primaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "pin") > 0 Then + Debug.Print(prod.Name + " was identified as a pin") + selection1.Add prod + + primaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "nut") > 0 Then + Debug.Print(prod.Name + " was identified as a nut") + selection1.Add prod + + secondaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "washer") > 0 Then + Debug.Print(prod.Name + " was identified as a washer") + selection1.Add prod + + secondaryFasteners.Add prod + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear + intFasteners = intFasteners + 1 + Else + cRelevantProducts.Add prod + End If + Next + + 'CATIA.StartCommand ("Activate / Deactivate Component") + Debug.Print "Deactivated " + CStr(intFasteners) + " fasteners" + intParts = intParts - intFasteners + Debug.Print CStr(intParts) + " parts to assemble" + MsgBox "Fasteners are deacivated. Press OK to proceed." + +End Function + + Function GenerateBoundingBox(partDocument1 As PartDocument, objProduct As Product, i As Integer) + 'Processes a single part to extract its origin XYZ, min/max X/Y/Z + + CATIA.DisplayFileAlerts = False + + 'Declare variables + Dim axis + Dim remake + Dim part1 As Part + Dim axisref As Object + Dim shapeFactory1 As ShapeFactory + Dim hybridShapeFactory1 As hybridShapeFactory + Dim sStatus As String + Dim hybridShapeD1, hybridShapeD2, hybridShapeD3 As HybridShapeDirection + Default Dim, a1, a2, a3, a4, a5, a6 'To change the offsets of the box + Dim bodies1 As Bodies + Dim body1 As Body + Dim reference1 As Reference + Dim HybridShapeExtremum1, HybridShapeExtremum2, HybridShapeExtremum3 As HybridShapeExtremum + Dim HybridShapeExtremum4, HybridShapeExtremum5, HybridShapeExtremum6 As HybridShapeExtremum + Dim originCoord(2) + Dim faceSel As Object + + 'Check whether we are processing a Part + If (InStr(partDocument1.Name, ".CATPart")) <> 0 Then + Set part1 = partDocument1.Part + Set hybridShapeFactory1 = part1.hybridShapeFactory + + Dim axiscoord(2) + Dim axissyst + + Dim axisSystem As axisSystem + Set axisSystem = part1.AxisSystems.Item(1) + + Set axissyst = axisSystem + Set axisref = axisSystem + + ref_name_systaxis = axissyst.Name + + axissyst.IsCurrent = 1 + axissyst.Name = "BBoxAxis" + axname = axissyst.Name + + 'Get Product's Position (rotation and translation) + '(for now: relative to the parent product!) + Dim PositionArray(11) + Dim oPosition As Object + Set oPosition = objProduct.Position + oPosition.GetComponents PositionArray + + Dim originpoint As HybridShapePointCoord + axissyst.GetOrigin originCoord + 'MsgBox "X0 = " & CStr(originCoord(0)) & vbNewLine & "Y0 = " & CStr(originCoord(1)) & vbNewLine & "Z0 = " & CStr(originCoord(2)) + + Set originpoint = hybridShapeFactory1.AddNewPointCoord(originCoord(0), originCoord(1), originCoord(2)) + Set axisref = part1.CreateReferenceFromObject(originpoint) + axissyst.GetXAxis axiscoord + Set hybridShapeD1 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + axissyst.GetYAxis axiscoord + Set hybridShapeD2 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + axissyst.GetZAxis axiscoord + Set hybridShapeD3 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + + 'hybridShapeD1&2 are not set yet, but used for line creation (from origin of the axis system) + Dim Plane_line_1 As HybridShapeLinePtDir + Set Plane_line_1 = hybridShapeFactory1.AddNewLinePtDir(originpoint, hybridShapeD1, 0, 0, False) + Dim Plane_line_2 As HybridShapeLinePtDir + Set Plane_line_2 = hybridShapeFactory1.AddNewLinePtDir(originpoint, hybridShapeD2, 0, 0, False) + + Dim oBodies As Bodies + Set oBodies = part1.Bodies + + 'J is defined to make unique names for Axis and the Body for the bounding box + Dim j As Integer + j = oBodies.Count + + 'Add new Body "Bounding Box."j to the Bodies of the current Part + Set bodies1 = part1.Bodies + Set body1 = bodies1.Add() + body1.Name = "Bounding Box." & j + + Set hybridBodies1 = body1.HybridBodies + Dim hybridBody1 As HybridBody + Set hybridBody1 = hybridBodies1.Add + hybridBody1.Name = "definition_points" + + + 'Pick a face of the part to use for HybridShapeExtract + Set faceSel = CATIA.ActiveDocument.Selection + faceSel.Clear + 'The current Part is added to the selection + faceSel.Add part1 + 'The selection gets rewritten by all the Faces of the selected part ("sel") + faceSel.Search "Type=Face,sel" + + Debug.Print "Selected faces: " & CStr(faceSel.Count) + + 'Need to check whether Extract crashes given this face and try the next one + Dim f As Integer + For f = 1 To faceSel.Count + + 'On Error GoTo ContinueFaceLoop + + Set reference1 = faceSel.Item(f).Value + Debug.Print TypeName(reference1) + + Dim hybridShapeExtract1 As HybridShapeExtract + Set hybridShapeExtract1 = hybridShapeFactory1.AddNewExtract(reference1) + hybridShapeExtract1.PropagationType = 1 'point continuity + hybridShapeExtract1.ComplementaryExtract = False + hybridShapeExtract1.IsFederated = False + Set reference1 = hybridShapeExtract1 + + 'Create the 6 Extrenum items for the Solid/Surf. May not be single points, will be solved with next points + Set HybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD1, 1) + Set HybridShapeExtremum2 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD1, 0) + Set HybridShapeExtremum3 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD2, 1) + Set HybridShapeExtremum4 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD2, 0) + Set HybridShapeExtremum5 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD3, 1) + Set HybridShapeExtremum6 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD3, 0) + + ' Creates Geometrical Set under the Solid, to contain the construction elements + + Dim hybridBody2 As HybridBody + Set hybridBody2 = hybridBodies1.Item("definition_points") + + hybridBody2.AppendHybridShape HybridShapeExtremum1 + part1.InWorkObject = HybridShapeExtremum1 + HybridShapeExtremum1.Name = "max_X" + hybridBody2.AppendHybridShape HybridShapeExtremum2 + part1.InWorkObject = HybridShapeExtremum2 + HybridShapeExtremum2.Name = "min_X" + hybridBody2.AppendHybridShape HybridShapeExtremum3 + part1.InWorkObject = HybridShapeExtremum3 + HybridShapeExtremum3.Name = "max_Y" + hybridBody2.AppendHybridShape HybridShapeExtremum4 + part1.InWorkObject = HybridShapeExtremum4 + HybridShapeExtremum4.Name = "min_Y" + hybridBody2.AppendHybridShape HybridShapeExtremum5 + part1.InWorkObject = HybridShapeExtremum5 + HybridShapeExtremum5.Name = "max_Z" + hybridBody2.AppendHybridShape HybridShapeExtremum6 + part1.InWorkObject = HybridShapeExtremum6 + HybridShapeExtremum6.Name = "min_Z" + + part1.UpdateObject HybridShapeExtremum1 + part1.UpdateObject HybridShapeExtremum2 + part1.UpdateObject HybridShapeExtremum3 + part1.UpdateObject HybridShapeExtremum4 + part1.UpdateObject HybridShapeExtremum5 + part1.UpdateObject HybridShapeExtremum6 + + 'part1.Update + + ' Creates a 6 single points using the Extrenums as refs, so if the Extrenum was a line or surf, you can still offset planes to these points + + Dim Ref1 As Reference + Set Ref1 = part1.CreateReferenceFromObject(HybridShapeExtremum1) + Dim Point1 As HybridShapePointCoord + Set Point1 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref1) + hybridBody2.AppendHybridShape Point1 + Set point_ref11 = part1.CreateReferenceFromObject(Point1) + + Dim Ref2 As Reference + Set Ref2 = part1.CreateReferenceFromObject(HybridShapeExtremum2) + Dim Point2 As HybridShapePointCoord + Set Point2 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref2) + hybridBody2.AppendHybridShape Point2 + Set point_ref12 = part1.CreateReferenceFromObject(Point2) + + Dim Ref3 As Reference + Set Ref3 = part1.CreateReferenceFromObject(HybridShapeExtremum3) + Dim Point3 As HybridShapePointCoord + Set Point3 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref3) + hybridBody2.AppendHybridShape Point3 + Set point_ref13 = part1.CreateReferenceFromObject(Point3) + + Dim Ref4 As Reference + Set Ref4 = part1.CreateReferenceFromObject(HybridShapeExtremum4) + Dim Point4 As HybridShapePointCoord + Set Point4 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref4) + hybridBody2.AppendHybridShape Point4 + Set point_ref14 = part1.CreateReferenceFromObject(Point4) + + Dim Ref5 As Reference + Set Ref5 = part1.CreateReferenceFromObject(HybridShapeExtremum5) + Dim Point5 As HybridShapePointCoord + Set Point5 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref5) + hybridBody2.AppendHybridShape Point5 + Set point_ref5 = part1.CreateReferenceFromObject(Point5) + + Dim Ref6 As Reference + Set Ref6 = part1.CreateReferenceFromObject(HybridShapeExtremum6) + Dim Point6 As HybridShapePointCoord + Set Point6 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref6) + hybridBody2.AppendHybridShape Point6 + Set point_ref6 = part1.CreateReferenceFromObject(Point6) + + part1.UpdateObject Point1 + part1.UpdateObject Point2 + part1.UpdateObject Point3 + part1.UpdateObject Point4 + part1.UpdateObject Point5 + part1.UpdateObject Point6 + + 'part1.Update + + axissyst.IsCurrent = 1 + + 'Read extremum coordinates + Dim coord(2) As Variant + Dim absCoord(2) As Variant + + Dim TheSPAWorkbench As Workbench + Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") + + Dim TheMeasurable + + Debug.Print "Extremum coordinates in the local Axis System:" + + 'Transform local extrema coordinates into global coordinates and update aAssemblyBoundaries + + 'Distances to Part Bounding Box faces in local coordinates + ReDim aBBDistances(5) As Double + '8 corner points of the Part Bounding Box (BB) in local coordinates (8x3 array) + ReDim aBBCornersLocal(7, 2) As Double + + 'max_X_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref11) + TheMeasurable.GetPoint coord + aBBDistances(0) = coord(0) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point1.Name & " (" & Ref1.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'min_X_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref12) + TheMeasurable.GetPoint coord + aBBDistances(1) = coord(0) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point2.Name & " (" & Ref2.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'max_Y_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref13) + TheMeasurable.GetPoint coord + aBBDistances(2) = coord(1) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point3.Name & " (" & Ref3.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'min_Y_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref14) + TheMeasurable.GetPoint coord + aBBDistances(3) = coord(1) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point4.Name & " (" & Ref4.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'max_Z_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref5) + TheMeasurable.GetPoint coord + aBBDistances(4) = coord(2) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point5.Name & " (" & Ref5.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'min_Z_loc + Set TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref6) + TheMeasurable.GetPoint coord + aBBDistances(5) = coord(2) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print Point6.Name & " (" & Ref6.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]" + + 'Generate 8 corner points (local coordinates) to the aBBCornersLocal + Dim m, n, k, c As Integer + c = 0 + For m = 0 To 1 + For n = 2 To 3 + For k = 4 To 5 + aBBCornersLocal(c, 0) = aBBDistances(m) + aBBCornersLocal(c, 1) = aBBDistances(n) + aBBCornersLocal(c, 2) = aBBDistances(k) + 'Transform corner point into global coordinates + coord(0) = aBBCornersLocal(c, 0) + coord(1) = aBBCornersLocal(c, 1) + coord(2) = aBBCornersLocal(c, 2) + Call Coord_Transform(coord, absCoord, objProduct, True) + 'Record values to aPartBBGlob + Dim CCC(2) As Double 'Corner Coordinates in axis system Congruent to global but in the part's origin + CCC(0) = absCoord(0) - PositionArray(9) + CCC(1) = absCoord(1) - PositionArray(10) + CCC(2) = absCoord(2) - PositionArray(11) + If CCC(0) > aPartBBGlob(i - 1, 0) Then + aPartBBGlob(i - 1, 0) = CCC(0) + End If + If CCC(0) < aPartBBGlob(i - 1, 1) Then + aPartBBGlob(i - 1, 1) = CCC(0) + End If + If CCC(1) > aPartBBGlob(i - 1, 2) Then + aPartBBGlob(i - 1, 2) = CCC(1) + End If + If CCC(1) < aPartBBGlob(i - 1, 3) Then + aPartBBGlob(i - 1, 3) = CCC(1) + End If + If CCC(2) > aPartBBGlob(i - 1, 4) Then + aPartBBGlob(i - 1, 4) = CCC(2) + End If + If CCC(2) < aPartBBGlob(i - 1, 5) Then + aPartBBGlob(i - 1, 5) = CCC(2) + End If + 'Update aAssemblyBoundaries (global) + If absCoord(0) > aAssemblyBoundaries(0) Then + aAssemblyBoundaries(0) = absCoord(0) + End If + If absCoord(0) < aAssemblyBoundaries(1) Then + aAssemblyBoundaries(1) = absCoord(0) + End If + If absCoord(1) > aAssemblyBoundaries(2) Then + aAssemblyBoundaries(2) = absCoord(1) + End If + If absCoord(1) < aAssemblyBoundaries(3) Then + aAssemblyBoundaries(3) = absCoord(1) + End If + If absCoord(2) > aAssemblyBoundaries(4) Then + aAssemblyBoundaries(4) = absCoord(2) + End If + If absCoord(2) < aAssemblyBoundaries(5) Then + aAssemblyBoundaries(5) = absCoord(2) + End If + c = c + 1 + Next k + Next n + Next m + + part1.Update + + Exit For + + 'ContinueFaceLoop: + + Next f + + Else + MsgBox "The active document must be a CATPart" + End If + + End Function + + Sub RecalculateRemovalDistances(cRelProd As Collection, cDeact As Collection) + + ReDim aRemovalDistances(cRelProd.Count - 1, 5) + Dim i As Integer + Dim relProd As Product + 'assure that the origin is inside the BB of assembly + aAssemblyBoundaries(0) = 0# + aAssemblyBoundaries(1) = 0# + aAssemblyBoundaries(2) = 0# + aAssemblyBoundaries(3) = 0# + aAssemblyBoundaries(4) = 0# + aAssemblyBoundaries(5) = 0# + + For i = 0 To cRelProd.Count - 1 + Set relProd = cRelProd.Item(i + 1) + If Not productIsInCollection(relProd, cDeact) Then + If aInitPos(i, 9) + aPartBBGlob(i, 0) > aAssemblyBoundaries(0) Then + aAssemblyBoundaries(0) = aInitPos(i, 9) + aPartBBGlob(i, 0) + End If + If aInitPos(i, 9) + aPartBBGlob(i, 1) < aAssemblyBoundaries(1) Then + aAssemblyBoundaries(1) = aInitPos(i, 9) + aPartBBGlob(i, 1) + End If + If aInitPos(i, 10) + aPartBBGlob(i, 2) > aAssemblyBoundaries(2) Then + aAssemblyBoundaries(2) = aInitPos(i, 10) + aPartBBGlob(i, 2) + End If + If aInitPos(i, 10) + aPartBBGlob(i, 3) < aAssemblyBoundaries(3) Then + aAssemblyBoundaries(3) = aInitPos(i, 10) + aPartBBGlob(i, 3) + End If + If aInitPos(i, 11) + aPartBBGlob(i, 4) > aAssemblyBoundaries(4) Then + aAssemblyBoundaries(4) = aInitPos(i, 11) + aPartBBGlob(i, 4) + End If + If aInitPos(i, 11) + aPartBBGlob(i, 5) < aAssemblyBoundaries(5) Then + aAssemblyBoundaries(5) = aInitPos(i, 11) + aPartBBGlob(i, 5) + End If + End If + Next i + + For i = 0 To cRelProd.Count - 1 + Set relProd = cRelProd.Item(i + 1) + If Not productIsInCollection(relProd, cDeact) Then + aRemovalDistances(i, 0) = aAssemblyBoundaries(0) - aPartBBGlob(i, 1) + aRemovalDistances(i, 1) = aAssemblyBoundaries(1) - aPartBBGlob(i, 0) + aRemovalDistances(i, 2) = aAssemblyBoundaries(2) - aPartBBGlob(i, 3) + aRemovalDistances(i, 3) = aAssemblyBoundaries(3) - aPartBBGlob(i, 2) + aRemovalDistances(i, 4) = aAssemblyBoundaries(4) - aPartBBGlob(i, 5) + aRemovalDistances(i, 5) = aAssemblyBoundaries(5) - aPartBBGlob(i, 4) + End If + Next i + + End Sub + + Public Function ArrayLen(a As Variant) As Integer + If IsEmpty(a) Then + ArrayLen = 0 + Else + ArrayLen = UBound(a) - LBound(a) + 1 + End If + End Function + + Function Det3x3(dX11 As Double, dX12 As Double, dX13 As Double, + dX21 As Double, dX22 As Double, dX23 As Double, + dX31 As Double, dX32 As Double, dX33 As Double) As Double + '*********************************************** + '* + '* 3x3 matrix determinant calculation (direct) + '* + '*********************************************** + + Det3x3 = dX11 * dX22 * dX33 + dX12 * dX23 * dX31 + dX21 * dX32 * dX13 - + dX13 * dX22 * dX31 - dX12 * dX21 * dX33 - dX23 * dX32 * dX11 + End Function + Function Inv3x3(dX11 As Double, dX12 As Double, dX13 As Double, + dX21 As Double, dX22 As Double, dX23 As Double, + dX31 As Double, dX32 As Double, dX33 As Double, aInv() As Double) As Boolean + '*********************************************** + '* + '* 3x3 matrix inverse calculation (direct) + '* + '*********************************************** + Dim dDet As Double + + ReDim aInv(8) + + Inv3x3 = False + + dDet = Det3x3(dX11, dX12, dX13, dX21, dX22, dX23, dX31, dX32, dX33) + If dDet = 0 Then Exit Function + + aInv(0) = (dX22 * dX33 - dX23 * dX32) / Abs(dDet) + aInv(1) = (dX13 * dX32 - dX12 * dX33) / Abs(dDet) + aInv(2) = (dX12 * dX23 - dX13 * dX22) / Abs(dDet) + aInv(3) = (dX23 * dX31 - dX21 * dX33) / Abs(dDet) + aInv(4) = (dX11 * dX33 - dX13 * dX31) / Abs(dDet) + aInv(5) = (dX13 * dX21 - dX11 * dX23) / Abs(dDet) + aInv(6) = (dX21 * dX32 - dX22 * dX31) / Abs(dDet) + aInv(7) = (dX12 * dX31 - dX11 * dX32) / Abs(dDet) + aInv(8) = (dX11 * dX22 - dX12 * dX21) / Abs(dDet) + + Inv3x3 = True + + End Function + Sub Coord_Transform(aRel() As Variant, aAbs() As Variant, oProduct As Product, bRecursively As Boolean) + + Dim vProduct As Object, vCoord(11) + Dim oFatherProduct As Product + Dim aInv() As Double + + 'Exit condition, empty object + If oProduct Is Nothing Then Exit Sub + + 'Redim absolute coords matrix + On Error Resume Next + ReDim aAbs(2) + On Error GoTo 0 + + 'Calculate product coordinates + Set vProduct = oProduct + vProduct.Position.GetComponents vCoord + + 'Calculate inverse matrix + If Inv3x3(CDbl(vCoord(0)), CDbl(vCoord(1)), CDbl(vCoord(2)), + CDbl(vCoord(3)), CDbl(vCoord(4)), CDbl(vCoord(5)), + CDbl(vCoord(6)), CDbl(vCoord(7)), CDbl(vCoord(8)), aInv) Then + Else + 'MsgBox "Error, degenerate transformation", vbOKOnly + Exit Sub + End If + + 'Calculate transformation + aAbs(0) = vCoord(9) + aInv(0) * aRel(0) + aInv(1) * aRel(1) + aInv(2) * aRel(2) + aAbs(1) = vCoord(10) + aInv(3) * aRel(0) + aInv(4) * aRel(1) + aInv(5) * aRel(2) + aAbs(2) = vCoord(11) + aInv(6) * aRel(0) + aInv(7) * aRel(1) + aInv(8) * aRel(2) + + 'If recursive option sepecified, search for parents and applies the transformation again + If bRecursively Then + + 'Try to assign parent + Set oFatherProduct = Nothing + On Error Resume Next + Set oFatherProduct = oProduct.Parent.Parent + On Error GoTo 0 + + 'If OK, recalculate coords + If oFatherProduct Is Nothing Then + Else + If oFatherProduct.PartNumber + ".CATProduct" = CATIA.ActiveDocument.Name Then + aRel(0) = aAbs(0) + aRel(1) = aAbs(1) + aRel(2) = aAbs(2) + Coord_Transform aRel, aAbs, oFatherProduct, False + Else + aRel(0) = aAbs(0) + aRel(1) = aAbs(1) + aRel(2) = aAbs(2) + Coord_Transform aRel, aAbs, oFatherProduct, True + End If + End If + + End If + + End Sub + + Function productIsInCollection(objProd As Product, prodColl As Collection) As Boolean + Dim dummyObj As Product + productIsInCollection = False + For Each dummyObj In prodColl + If dummyObj.Name = objProd.Name Then + productIsInCollection = True + Exit For + End If + Next + End Function + + Sub moveProduct(objProd As Product, intDir As Integer, bPositive As Boolean) + Dim intS As Integer + If bPositive = True Then + intS = intStep + Else + intS = -intStep + End If + Dim moveArray(11) + moveArray(0) = 1 + moveArray(1) = 0 + moveArray(2) = 0 + moveArray(3) = 0 + moveArray(4) = 1 + moveArray(5) = 0 + moveArray(6) = 0 + moveArray(7) = 0 + moveArray(8) = 1 + moveArray(9) = 0 + moveArray(10) = 0 + moveArray(11) = 0 + + Dim axisArray(11) + + 'movement along global axis + If intDir < 7 Then + 'Attention: for now it is assumed that all products are on the top level of specification tree + If intDir = 1 Then + moveArray(9) = intS + End If + If intDir = 2 Then + moveArray(10) = intS + End If + If intDir = 3 Then + moveArray(11) = intS + End If + If intDir = 4 Then + moveArray(9) = -intS + End If + If intDir = 5 Then + moveArray(10) = -intS + End If + If intDir = 6 Then + moveArray(11) = -intS + End If + Else 'movement along local axis + Dim oPosition As Object + Set oPosition = objProd.Position + oPosition.GetComponents axisArray + If intDir = 7 Then + moveArray(9) = axisArray(0) * intS + moveArray(10) = axisArray(1) * intS + moveArray(11) = axisArray(2) * intS + End If + If intDir = 8 Then + moveArray(9) = axisArray(3) * intS + moveArray(10) = axisArray(4) * intS + moveArray(11) = axisArray(5) * intS + End If + If intDir = 9 Then + moveArray(9) = axisArray(6) * intS + moveArray(10) = axisArray(7) * intS + moveArray(11) = axisArray(8) * intS + End If + If intDir = 10 Then + moveArray(9) = -axisArray(0) * intS + moveArray(10) = -axisArray(1) * intS + moveArray(11) = -axisArray(2) * intS + End If + If intDir = 11 Then + moveArray(9) = -axisArray(3) * intS + moveArray(10) = -axisArray(4) * intS + moveArray(11) = -axisArray(5) * intS + End If + If intDir = 12 Then + moveArray(9) = -axisArray(6) * intS + moveArray(10) = -axisArray(7) * intS + moveArray(11) = -axisArray(8) * intS + End If + End If + Set prod1nd = objProd + prod1nd.Move.Apply moveArray + +End Sub + + Function collisionDetected(cClashes As Clashes, group1 As Group, group2 As Group) As Boolean + 'cRelevantProducts As Collection, cDeactivated As Collection + + collisionDetected = False + + 'define two groups + ' Dim group1 As Group + 'Dim group2 As Group + ' Set group1 = cGroups.Add + 'Set group2 = cGroups.Add + ' group1.AddExplicit product1 + ' Dim relevantProduct As Product + ' For Each relevantProduct In cRelevantProducts + ' If Not relevantProduct.Name = product1.Name And Not productIsInCollection(relevantProduct, cDeactivated) Then + ' group2.AddExplicit relevantProduct + ' End If + ' Next relevantProduct + 'create a new clash analysis + Dim oClash 'As Clash + Set oClash = cClashes.Add + oClash.ComputationType = catClashComputationTypeBetweenTwo + oClash.FirstGroup = group1 + oClash.SecondGroup = group2 + oClash.InterferenceType = catClashInterferenceTypeClearance + 'oClash.Clearance = dCollSens + oClash.Compute + Dim cConflicts As Conflicts + Set cConflicts = oClash.Conflicts + If cConflicts.Count > 0 Then + 'MsgBox "Detected a collision: " & product1.Name + 'If at least one conflict value exceeds the collision sensitivity, it is a collision + Dim oConflict As Conflict + Dim c As Integer + For c = 1 To cConflicts.Count + Set oConflict = cConflicts.Item(c) + oConflict.Status = catConflictStatusRelevant + If oConflict.Type = catConflictTypeClash Then + If oConflict.Value < -dCollSens Then + collisionDetected = True + Debug.Print "Clash detected: " & oConflict.FirstProduct.Name & " - " & oConflict.SecondProduct.Name & " = " & oConflict.Value + Exit For + End If + End If + Next c + End If + End Function + + Function productReachedFinalPosition(objProd As Product, i1 As Integer) As Boolean + productReachedFinalPosition = False + Dim posArray(11) + Dim oPosition As Object + Set oPosition = objProd.Position + oPosition.GetComponents posArray + If posArray(9) > aRemovalDistances(i1 - 1, 0) Then + productReachedFinalPosition = True + 'MsgBox "X+ removal distance reached by " & objProd.Name + End If + If posArray(9) < aRemovalDistances(i1 - 1, 1) Then + productReachedFinalPosition = True + 'MsgBox "X- removal distance reached by " & objProd.Name + End If + If posArray(10) > aRemovalDistances(i1 - 1, 2) Then + productReachedFinalPosition = True + 'MsgBox "Y+ removal distance reached by " & objProd.Name + End If + If posArray(10) < aRemovalDistances(i1 - 1, 3) Then + productReachedFinalPosition = True + 'MsgBox "Y- removal distance reached by " & objProd.Name + End If + If posArray(11) > aRemovalDistances(i1 - 1, 4) Then + productReachedFinalPosition = True + 'MsgBox "Z+ removal distance reached by " & objProd.Name + End If + If posArray(11) < aRemovalDistances(i1 - 1, 5) Then + productReachedFinalPosition = True + 'MsgBox "Z- removal distance reached by " & objProd.Name + End If + End Function + + Function productHasValidDisassDir(i1 As Integer, disassDir() As Variant) As Boolean + productHasValidDisassDir = False + Dim j As Integer + For j = 0 To 11 + If disassDir(i1 - 1, j) = 1 Then + productHasValidDisassDir = True + Exit For + End If + Next j + End Function + + Function Tree(s1, q) + + For Each s2 In s1.Products + Tree s2, q + Next + + Set parentAssy = s1.Parent.Parent + + If StrComp(TypeName(parentAssy), "Product") = 0 Then + parentAssy.ReferenceProduct.Products.Item(s1.Name).Name = CStr(s1.PartNumber) & CStr("." & q) + q = q + 1 + End If + + End Function + + Private Sub RenameSingleLevel(ByRef oCurrentProd As Product) + + On Error Resume Next + + 'More declarations + Dim ItemToRename As Product + Dim ToRenamePartNumber As String + Dim lNumberOfItems As Long + Dim RenameArray(2000) As String + Dim i As Integer + Dim j As Integer + Dim k As Integer + +Set oCurrentProd = oCurrentProd.ReferenceProduct 'You have to work with the "ReferenceProduct" object +lNumberOfItems = oCurrentProd.Products.Count + + 'For i = 1 To lNumberOfItems 'Clear out the rename array + ' RenameArray(i) = "" 'Don't know if this is necessary + 'Next + + 'Run through this loop once, to set everything to a dummy name, to avoid naming conflicts + For i = 1 To lNumberOfItems 'Cycle through the assembly's children + Set ItemToRename = oCurrentProd.Products.Item(i) 'Declare which item we are working on + + ToRenamePartNumber = ItemToRename.PartNumber 'Get the Part Number + 'ToRenamePartNumber = ItemToRename.DescriptionRef 'Toggle these two lines for testing + + RenameArray(i) = ToRenamePartNumber 'Building the list of part names for the numbering loop + + k = 0 'Numbering Loop + For j = 1 To i 'This loop checks and sets the instance number + If RenameArray(j) = ToRenamePartNumber Then + k = k + 1 + End If + Next + CATIA.StatusBar = ItemToRename.Name & " > " & ToRenamePartNumber & "." & k + 'MsgBox ItemToRename.Name & " / " & ToRenamePartNumber & "." & k 'This line is for testing only + ItemToRename.Name = ToRenamePartNumber & "TEMP." & k 'Set the new instance name, to a TEMP dummy value + + Next + + 'Run through this loop to set the name finally, then the recursion call + For i = 1 To lNumberOfItems + Set ItemToRename = oCurrentProd.Products.Item(i) + + ToRenamePartNumber = ItemToRename.PartNumber 'Toggle these two lines for testing + 'ToRenamePartNumber = ItemToRename.DescriptionRef 'Toggle these two lines for testing + + RenameArray(i) = ToRenamePartNumber + + k = 0 + For j = 1 To i + If RenameArray(j) = ToRenamePartNumber Then + k = k + 1 + End If + Next + + CATIA.StatusBar = ItemToRename.Name & " > " & ToRenamePartNumber & "." & k + 'MsgBox ItemToRename.Name & " / " & ToRenamePartNumber & "." & k 'For testing + + ItemToRename.Name = ToRenamePartNumber & "." & k 'Set the new instance name final + + If ItemToRename.Products.Count <> 0 Then 'Recursive Call for version 0.1.2 + If oList.exists(ItemToRename.PartNumber) Then GoTo Finish + If ItemToRename.PartNumber = ItemToRename.ReferenceProduct.Parent.Product.PartNumber Then oList.Add ItemToRename.PartNumber, 1 + Call RenameSingleLevel(ItemToRename) + End If + +Finish: + Next + + End Sub + + Function GetProductIndex(objProd As Product, cProds As Collection) As Integer + Dim produkt As Product + Dim intAns As Integer + intAns = 0 + For Each produkt In cProds + If produkt.Name = objProd.Name Then + GetProductIndex = intAns + Exit Function + End If + intAns = intAns + 1 + Next produkt + End Function + + + + +End Class diff --git a/CatiaNetTest.sln b/CatiaNetTest.sln new file mode 100644 index 0000000000000000000000000000000000000000..f2f5145d6ae63621a841a95efb652bb308e7c0de --- /dev/null +++ b/CatiaNetTest.sln @@ -0,0 +1,24 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "CatiaNetTest", "CatiaNetTest\CatiaNetTest.vbproj", "{BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{B80168DE-DFE2-413B-ABF4-882E20B80DE9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CatiaNetTest/App.config b/CatiaNetTest/App.config new file mode 100644 index 0000000000000000000000000000000000000000..2ae8254d305bb019047d91b8db81c8dca76b56c8 --- /dev/null +++ b/CatiaNetTest/App.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/CatiaNetTest/AssemblyTiers2.vb b/CatiaNetTest/AssemblyTiers2.vb new file mode 100644 index 0000000000000000000000000000000000000000..cebb6ced9cd570b74a8235c31d4810b5e4b5d276 --- /dev/null +++ b/CatiaNetTest/AssemblyTiers2.vb @@ -0,0 +1,1677 @@ +Imports System +Imports HybridShapeTypeLib +Imports INFITF +Imports MECMOD +Imports NavigatorTypeLib +Imports ProductStructureTypeLib +Imports SPATypeLib + +Public Class AssemblyTiers2 + + Public intStep As Integer + Public dCollSens As Double + Public intParts As Integer + Public primaryFasteners As Collection + Public secondaryFasteners As Collection + Public cAllProducts As Collection + Public cRelevantProducts As Collection + Public cBaseProducts As Collection + Public aRemovalDistances() As Single + Public aAssemblyBoundaries(5) As Double + Public aPartBBGlob() As Single + Public aInitPos() As Double + Public sChosenDirection As String + Public oList As Object + + + Sub CatMain(CATIA As INFITF.Application) + + 'On Error Resume Next + + Debug.Print("========================================================") + + Dim document As ProductDocument + document = CATIA.ActiveDocument + + 'Extraction of all "leaf" products to cAllProducts + ExtractProducts(document.Product) + + 'Collection of "leaf" Products (without nested Products) + Dim oInstances() As Product + oInstances = cAllProducts + Dim i As Integer + Dim outputText As String + + intParts = oInstances.Count + outputText = "This assembly contains " + CStr(oInstances.Count) + " parts" + vbNewLine + MsgBox(outputText) + + 'Select the assembly's base components + 'Declare selection + Dim oSel As Selection + Dim baseSel As Object 'to deal with restricted function problem + oSel = CATIA.ActiveDocument.Selection + baseSel = oSel + 'Create an array for CATParts + Dim strArray(0) + strArray(0) = "Part" + 'Display a messagebox prompting the user to select CATIA parts + MsgBox("Please select the assembly's base components") + sStatus = baseSel.SelectElement3(strArray, "Select parts", False, CATMultiSelTriggWhenUserValidatesSelection, False) + + For i = 1 To baseSel.Count + cBaseProducts.Add(baseSel.Item(i).LeafProduct) + Debug.Print("Added base component: " & baseSel.Item(i).LeafProduct.Name) + Next + + oSel.Clear() + baseSel.Clear + + 'Collision parameters + intStep = 1 + dCollSens = 1 + CollisionParams.Show + Debug.Print("Step = " + CStr(intStep)) + Debug.Print("Sensitivity = " + CStr(dCollSens)) + + 'Separation of components + DeactivateFasteners(document.Product) + + 'Display the number of relevant parts + outputText = CStr(cRelevantProducts.Count) + " parts are considered in precedence graph generation" + MsgBox(outputText) + + 'Distances from global axis system origin to assembly boundary (along global axis) + aAssemblyBoundaries(0) = 0# 'max_X + aAssemblyBoundaries(1) = 0# 'min_X + aAssemblyBoundaries(2) = 0# 'max_Y + aAssemblyBoundaries(3) = 0# 'min_Y + aAssemblyBoundaries(4) = 0# 'max_Z + aAssemblyBoundaries(5) = 0# 'min_Z + + 'Global coordinates, of which at least one has to be exceeded by the part origin, for that part to be "disassembled" + 'in global axis directions + Dim aRemovalDistances(cRelevantProducts.Count - 1, 5) + aRemovalDistances(0, 0) = 0# 'X_pos + aRemovalDistances(0, 1) = 0# 'X_neg + aRemovalDistances(0, 2) = 0# 'Y_pos + aRemovalDistances(0, 3) = 0# 'Y_neg + aRemovalDistances(0, 4) = 0# 'Z_pos + aRemovalDistances(0, 5) = 0# 'Z_neg + + 'Store information about secondary BB (6 distances to boundary planes from part origin along global x/y/z directions) - used to define aRemovalDistances + 'Secondary BB: faces parallel to global origin planes and defined by outermost corner points of local BB of this part + Dim aPartBBGlob(cRelevantProducts.Count - 1, 5) + aPartBBGlob(0, 0) = 0# 'x_part_glob_pos + aPartBBGlob(0, 1) = 0# 'x_part_glob_neg + aPartBBGlob(0, 2) = 0# 'y_part_glob_pos + aPartBBGlob(0, 3) = 0# 'y_part_glob_neg + aPartBBGlob(0, 4) = 0# 'z_part_glob_pos + aPartBBGlob(0, 5) = 0# 'z_part_glob_neg + + Dim BBStartTime As Double + BBStartTime = Timer + + 'This is used to check whether a product must be moved in current iteration + Dim bMoveable(cRelevantProducts.Count - 1) As Boolean + + For i = 1 To cRelevantProducts.Count + + '########## this won't work if part document name is not = part number ###### + Dim partI As Part + Dim prodI As Product + prodI = cRelevantProducts.Item(i) + Dim docName As String + docName = prodI.PartNumber + ".CATPart" + Debug.Print(">>> " & docName & " <<<") + GenerateBoundingBox(CATIA.Documents.Item(docName), prodI, i) + '############################################################################ + + 'Determine assembly 's limits + ' Dim partI As Part + ' Dim prodI As Product + ' prodI = cRelevantProducts.Item(i) + ' Dim docName As String + ' docName = prodI.PartNumber + ".CATPart" + ' Dim oPartDoc As PartDocument + ' Dim sPartPath As String + ' sPartPath = prodI.GetMasterShapeRepresentationPathName + ' oPartDoc = CATIA.Documents.Read(sPartPath) + ' Debug.Print ">>> " & docName & " <<<" + 'CATIA.Documents.Item(docName) + ' GenerateBoundingBox oPartDoc, prodI, i + + 'Base component is in cRelevantProducts, but not moveable + If productIsInCollection(prodI, cBaseProducts) Then + bMoveable(i - 1) = False + Else + bMoveable(i - 1) = True + End If + + Next i + + Dim BBSecondsElapsed As Double + BBSecondsElapsed = Round(Timer - BBStartTime, 2) + MsgBox("Bounding box calculation took " & CStr(BBSecondsElapsed) & " seconds") + + MsgBox("Assembly Boundaries: " & vbNewLine & + "max_X = " & aAssemblyBoundaries(0) & vbNewLine & + "min_X = " & aAssemblyBoundaries(1) & vbNewLine & + "max_Y = " & aAssemblyBoundaries(2) & vbNewLine & + "min_Y = " & aAssemblyBoundaries(3) & vbNewLine & + "max_Z = " & aAssemblyBoundaries(4) & vbNewLine & + "min_Z = " & aAssemblyBoundaries(5)) + + 'After the aAssemblyBoundaries and aPartBBGlob are calculated, define aRemovalDistances + For i = 0 To cRelevantProducts.Count - 1 + aRemovalDistances(i, 0) = aAssemblyBoundaries(0) - aPartBBGlob(i, 1) + aRemovalDistances(i, 1) = aAssemblyBoundaries(1) - aPartBBGlob(i, 0) + aRemovalDistances(i, 2) = aAssemblyBoundaries(2) - aPartBBGlob(i, 3) + aRemovalDistances(i, 3) = aAssemblyBoundaries(3) - aPartBBGlob(i, 2) + aRemovalDistances(i, 4) = aAssemblyBoundaries(4) - aPartBBGlob(i, 5) + aRemovalDistances(i, 5) = aAssemblyBoundaries(5) - aPartBBGlob(i, 4) + Next i + + MsgBox("Removal distances for " & cRelevantProducts.Item(1).PartNumber & ":" & vbNewLine & + "X_pos = " & aRemovalDistances(0, 0) & vbNewLine & + "X_neg = " & aRemovalDistances(0, 1) & vbNewLine & + "Y_pos = " & aRemovalDistances(0, 2) & vbNewLine & + "Y_neg = " & aRemovalDistances(0, 3) & vbNewLine & + "Z_pos = " & aRemovalDistances(0, 4) & vbNewLine & + "Z_neg = " & aRemovalDistances(0, 5)) + + '#################### Main algorithm ########################## + Dim intI As Integer 'total number of components in the scene minus base parts + Dim intJ As Integer 'number of primary directions (default: global + local) + Dim intTier As Integer 'number of current assembly tier + Dim int_i As Integer 'product index in cRelevantProducts + Dim int_i_cycle As Integer 'product counter + Dim int_j As Integer 'primary direction index 1..12 + Dim int_k As Integer 'secondary direction index 1..10 + Dim total_coll As Long 'counter of total collision detections + Dim cDeactivated As Collection 'really deactivated products + Dim cVirtual As Collection 'these funny green parts + Dim precedenceMatrix() As Single + Dim disassDir(cRelevantProducts.Count - 1, 11) + Dim aTiers(cRelevantProducts.Count - 1) As Integer + Dim aInitPos(cRelevantProducts.Count - 1, 11) 'remember initial positions of the products + Dim bInitPosRecorded(cRelevantProducts.Count - 1) As Boolean + Dim precedenceMatrix(cRelevantProducts.Count - 1, cRelevantProducts.Count - 1) + Dim bDeactivated(cRelevantProducts.Count - 1) As Boolean + + intI = cRelevantProducts.Count 'the index of base components will be simply skipped (cRelevantProducts includes cBaseProducts, unlike in the paper!) + intJ = 6 'number of disassembly directions (6 - only global axes, 12 - including local axes) + intTier = 1 'counts current disassembly tier (lower number means earlier disassembly possible) - this gets reversed in the end + int_i = 1 'index of current part in collection of relevant products + int_i_cycle = 1 'counter for the current tier iteration + int_j = 1 'index of disassembly direction + int_j_temp = 0 'used to display movement direction once + total_coll = 0 + + 'map indices to directions (careful, starts from 0 here, but the paper and moveProduct uses 1 as start) + Dim d1 + d1 = CreateObject("Scripting.Dictionary") + d1.Add(0, "Global X+") + d1.Add(1, "Global Y+") + d1.Add(2, "Global Z+") + d1.Add(3, "Global X-") + d1.Add(4, "Global Y-") + d1.Add(5, "Global Z-") + d1.Add(6, "Local X+") + d1.Add(7, "Local Y+") + d1.Add(8, "Local Z+") + d1.Add(9, "Local X-") + d1.Add(10, "Local Y-") + d1.Add(11, "Local Z-") + + 'access the clash technology object + Dim cClashes As Clashes + cClashes = CATIA.ActiveDocument.Product.GetTechnologicalObject("Clashes") + 'access the groups technology object + Dim cGroups As Groups + cGroups = CATIA.ActiveDocument.Product.GetTechnologicalObject("Groups") + + 'calculate initial clashes (due to imprecise modelling or STEP file export...) + ' Dim cInitClashes AsCollection + ' Dim oInitClash 'As Clash + ' ' oInitClash = cInitClashes.Add + ' oInitClash.ComputationType = catClashComputationTypeBetweenAll + ' oInitClash.Compute + ' Dim cInitConflicts As Conflicts + ' cInitConflicts = oInitClash.Conflicts + ' Dim numConfl As Integer + ' Dim numClashes As Integer + ' numClashes = 0 + ' For numConfl = 1 To cInitConflicts.Count + ' If cInitConflicts.Item(numConfl).Type = catConflictTypeClash Then + ' cInitClashes.Add cInitConflicts.Item(numConfl) + ' numClashes = numClashes + 1 + ' End If + ' Next numConfl + ' MsgBox CStr(numClashes) & " clashes were detected in the original model." + + Dim StartTime As Double + StartTime = Timer + + Do + + 'Processing next Product + Dim product1 As Product + product1 = cRelevantProducts.Item(int_i) + Debug.Print("Processing " & product1.Name & " [tier=" & intTier & ", i_cycle=" & int_i_cycle & ", I=" & intI & "]") + + 'Skip not moveable products + If Not bMoveable(int_i - 1) Then + 'the part is a base component or deactivated + GoTo entry0 + End If + + 'Remember initial position P_i (initPos) + Dim initPos(11) + Dim oPosition1 As Object + oPosition1 = product1.Position + oPosition1.GetComponents(initPos) + If bInitPosRecorded(int_i - 1) = False Then + Dim ip As Integer + For ip = 0 To 11 + aInitPos(int_i - 1, ip) = initPos(ip) + Next ip + bInitPosRecorded(int_i - 1) = True + End If + + 'For each product, determine whether it is a base product, deactivated or virtual + ' Dim bBaseProduct As Boolean + ' bBaseProduct = productIsInCollection(product1, cBaseProducts) + ' Dim bDeactivated As Boolean + ' bDeactivated = productIsInCollection(product1, cDeactivated) + ' Dim bVirtual As Boolean + ' bVirtual = productIsInCollection(product1, cVirtual) + + 'Group that includes our product (needed for collision detection between two selections or groups) + Dim group1 As Group + group1 = cGroups.Add + group1.AddExplicit(product1) + + 'Create a Group of Products that this product shouldn't collide with + Dim group2 As Group + group2 = cGroups.Add + Dim iStaticProduct As Integer + For iStaticProduct = 1 To cRelevantProducts.Count + If iStaticProduct <> int_i And Not bDeactivated(iStaticProduct - 1) Then + group2.AddExplicit(cRelevantProducts.Item(iStaticProduct)) + End If + Next iStaticProduct + + Do +entry1: + 'Movement step in a given direction + + 'If it is a movable part (not base component or already deactivated or "virtual" part from higher tier)... + If bMoveable(int_i - 1) = True Then + + 'move component intStep distance in int_j direction + moveProduct(product1, int_j, True) + + 'display current disassembly direction once it changes + If int_j <> int_j_temp Then + Debug.Print("[" & d1.Item(int_j - 1) & "]") + int_j_temp = int_j + End If + + 'collision detection + If collisionDetected(cClashes, group1, group2) Then + + 'check for collisions with higher tier + Dim detConflicts As Conflicts + detConflicts = cClashes.Item(cClashes.Count).Conflicts + + If detConflicts.Count > 0 Then + + Dim oConflict1 As Conflict + Dim ic As Integer + + For ic = 1 To detConflicts.Count + + oConflict1 = detConflicts.Item(ic) + oConflict1.Status = catConflictStatusRelevant + + If oConflict1.Type = catConflictTypeClash Then + + If oConflict1.Value < -dCollSens Then + + Dim secProduct As Product + 'get the product we collided with + secProduct = oConflict1.SecondProduct + + 'find the tier of the second product + Dim dummyProd As Product + Dim iIndex As Integer + iIndex = 0 + For Each dummyProd In cRelevantProducts + If dummyProd.Name = secProduct.Name Then + Exit For + End If + iIndex = iIndex + 1 + Next dummyProd + Dim secTier As Integer + secTier = aTiers(iIndex) + + 'as soon as secTier is not the direct higher tier, no reason to move further + If secTier < intTier - 1 Then + GoTo exit1 + End If + + 'if the disassembly tier is 1 lower (attention: tiers get reversed in the end to the assembly tiers!) + If secTier = intTier - 1 And Not (secTier = 0 And intTier = 1) Then + + Debug.Print("Collision with higher tier: " & oConflict1.FirstProduct.Name & " - " & oConflict1.SecondProduct.Name & " = " & oConflict1.Value) + + 'record precedence relation, because secProduct is an obstacle in the way of the current product + precedenceMatrix(int_i - 1, iIndex) = 1 + + 'move the product through the "virtual" part from higher tier + GoTo entry1 + + End If + + End If 'deeper than dCollSens + + End If 'clash + + Next ic 'next conflict + + End If +exit1: + 'move product to initial position + Dim oPosition3 As Object + oPosition3 = product1.Position + oPosition3.SetComponents(initPos) + 'take next direction + int_j = int_j + 1 + 'if not all directions are checked for this product... + If int_j <= intJ Then + 'continue movement in primary directions (movement loop) + Else + 'all directions were checked + total_coll = total_coll + intJ + Debug.Print("Disassembly trials: " & total_coll) + int_i = int_i + 1 + int_i_cycle = int_i_cycle + 1 + int_j = 1 + int_j_temp = 0 + + 'if active products remain in this cycle... + If int_i_cycle <= intI - cBaseProducts.Count Then + 'process next product in this cycle + Exit Do + Else + 'all components in this cycle were checked + Dim p As Integer + Dim intItemp As Integer + intItemp = intI + 'record tiers + For p = 1 To cRelevantProducts.Count + If productIsInCollection(cRelevantProducts.Item(p), cBaseProducts) Then + 'base product always has tier 0 (doesn't get reversed) + aTiers(p - 1) = 0 + Else + 'not a base product + 'product has valid disass. directions and has no tier recorded yet + If productHasValidDisassDir(p, disassDir) And Not aTiers(p - 1) > 0 Then + 'save tier + aTiers(p - 1) = intTier + 'decrease the counter of active products in assembly + intI = intI - 1 + 'change visuals for "virtual" products + Dim virtSelection As Selection + virtSelection = document.Selection + virtSelection.Clear() + virtSelection.Add(cRelevantProducts.Item(p)) + visProperties1 = virtSelection.VisProperties + visProperties1.SetRealColor(80, 255, 160, 1) + virtSelection.Clear() + 'remember virtual green products + 'cVirtual.Add cRelevantProducts.Item(p) + 'fix position + bMoveable(p - 1) = False + End If + 'product from higher tier + If productHasValidDisassDir(p, disassDir) And aTiers(p - 1) = intTier - 1 Then + 'deactivate + Dim selection2 As Selection + selection2 = CATIA.ActiveDocument.Selection + selection2.Clear() + selection2.Add(cRelevantProducts.Item(p)) + CATIA.StartCommand("Activate / Deactivate Component") + selection2.Clear() + cDeactivated.Add(cRelevantProducts.Item(p)) + bDeactivated(p - 1) = True + End If + End If + Next p + + 'Notify the user if no parts could be disassembled in this tier + If intI = intItemp Then + Debug.Print("WARNING! No parts could be removed during this cycle." & vbNewLine & "This is usually due to inaccuracies in modelling (e.g. collisions in initial assembly).") + GoTo exitCD + End If + + 'recalculate assembly boundaries and removal distances + RecalculateRemovalDistances(cRelevantProducts, cDeactivated) + + 'if there are still parts to disassemble... + If intI > cBaseProducts.Count Then + 'increment tier + intTier = intTier + 1 + 'process next cycle of products + int_i = 1 + int_i_cycle = 1 + Exit Do + Else + 'all parts were disassembled + 'end collision detection algorithm + GoTo exitCD + End If + End If + End If + Else + 'no collisions after the movement step + 'check whether part reached final position + If productReachedFinalPosition(product1, int_i) Then + 'store valid disassembly direction + disassDir(int_i - 1, int_j - 1) = 1 + GoTo exit1 + Else + 'continue movement in primary directions (movement loop) + End If + End If + Else +entry0: + 'the part is a base component or deactivated + Debug.Print("Skipping " + product1.Name + " (base component or deactivated)") + int_i = int_i + 1 + 'process next product + Exit Do + End If + Loop 'movement loop + Loop 'product loop + +exitCD: + + Dim SecondsElapsed As Double + SecondsElapsed = Round(Timer - StartTime, 2) + MsgBox("Collision detection algorithm finished execution after " & CStr(SecondsElapsed) & " seconds") + + 'Return products to their initial positions, activate them + Dim p1 As Integer + For p1 = 1 To cRelevantProducts.Count + If Not productIsInCollection(cRelevantProducts.Item(p1), cBaseProducts) Then + Dim oPosition4 As Object + oPosition4 = cRelevantProducts.Item(p1).Position + Dim aPos(11) + For comp = 0 To 11 + aPos(comp) = aInitPos(p1 - 1, comp) + Next comp + oPosition4.SetComponents(aPos) + Dim selection4 As Selection + selection4 = CATIA.ActiveDocument.Selection + selection4.Clear() + selection4.Add(cRelevantProducts.Item(p1)) + CATIA.StartCommand("Activate / Deactivate Component") + selection4.Clear() + End If + Next p1 + + 'Select a single extraction direction in case there are multiple + Dim d2 + d2 = CreateObject("Scripting.Dictionary") + d2.Add("Global X+", 0) + d2.Add("Global Y+", 1) + d2.Add("Global Z+", 2) + d2.Add("Global X-", 3) + d2.Add("Global Y-", 4) + d2.Add("Global Z-", 5) + d2.Add("Local X+", 6) + d2.Add("Local Y+", 7) + d2.Add("Local Z+", 8) + d2.Add("Local X-", 9) + d2.Add("Local Y-", 10) + d2.Add("Local Z-", 11) + 'Inverse axis indices + Dim d3 + d3 = CreateObject("Scripting.Dictionary") + d3.Add(0, 3) + d3.Add(1, 4) + d3.Add(2, 5) + d3.Add(3, 0) + d3.Add(4, 1) + d3.Add(5, 2) + d3.Add(6, 9) + d3.Add(7, 10) + d3.Add(8, 11) + d3.Add(9, 6) + d3.Add(10, 7) + d3.Add(11, 8) + For int_i = 0 To cRelevantProducts.Count - 1 + Dim sum As Integer + sum = 0 + For intAxis = 0 To intJ - 1 + sum = sum + disassDir(int_i, intAxis) + Next intAxis + 'Only for products with multiple extraction directions + If sum > 1 Then + 'Add options to ComboBox + For intAxis = 0 To intJ - 1 + If disassDir(int_i, intAxis) = 1 Then + ExtractionDirection.ComboBox1.AddItem(d1.Item(intAxis)) + End If + Next intAxis + 'Highlight the product in CATIA + Dim selection5 As Selection + selection5 = CATIA.ActiveDocument.Selection + selection5.Clear() + selection5.Add(cRelevantProducts.Item(int_i + 1)) + 'Show dialog + ExtractionDirection.Show + selection5.Clear() + 'Translate chosen axis name back into index 0..11 + Dim iChosenDir As Integer + iChosenDir = d2.Item(sChosenDirection) + 'Set all other disassembly directions to 0 + For intAxis = 0 To intJ - 1 + If intAxis = iChosenDir Then + disassDir(int_i, intAxis) = 1 + Else + disassDir(int_i, intAxis) = 0 + End If + Next intAxis + End If + 'Reverse tier values + Dim intMaxTier As Integer + intMaxTier = intTier + If aTiers(int_i) <> 0 Then + aTiers(int_i) = intMaxTier + 1 - aTiers(int_i) + End If + 'Reverse disassembly axis (assembly axis = -disass. axis) + For intAxis = 0 To intJ - 1 + If disassDir(int_i, intAxis) = 1 Then + disassDir(int_i, intAxis) = 0 + disassDir(int_i, d3.Item(intAxis)) = 1 + Exit For + End If + Next intAxis + Next int_i + + 'Association of components belonging to sequential tiers + + Dim cClashes1 As Clashes + Dim oClash1 'As Clash + oClash1 = cClashes.Add + oClash1.ComputationType = catClashComputationTypeBetweenAll + oClash1.Compute + Dim cInitConflicts As Conflicts + cInitConflicts = oClash1.Conflicts + Dim initConfl As Conflict + Dim nConfl As Integer + nConfl = 0 + For Each initConfl In cInitConflicts + Dim firstIndex As Integer + Dim secondIndex As Integer + firstIndex = GetProductIndex(initConfl.FirstProduct, cRelevantProducts) + secondIndex = GetProductIndex(initConfl.SecondProduct, cRelevantProducts) + If aTiers(firstIndex) = aTiers(secondIndex) - 1 Then + precedenceMatrix(firstIndex, secondIndex) = 1 + End If + If aTiers(secondIndex) = aTiers(firstIndex) - 1 Then + precedenceMatrix(secondIndex, firstIndex) = 1 + End If + Next initConfl + + ' For int_i = 1 To cRelevantProducts.Count + ' Dim bNoContacts As Boolean + ' bNoContacts = True + ' 'loop over components from previous tier + ' For int_j = 1 To cRelevantProducts.Count + ' If aTiers(int_j - 1) = aTiers(int_i - 1) - 1 And aTiers(int_i - 1) <> 0 Then + ' 'Test for contact + ' 'define two groups + ' Dim group11 As Group + ' Dim group21 As Group + ' group11 = cGroups.Add + ' group21 = cGroups.Add + ' group11.AddExplicit cRelevantProducts.Item(int_i) + ' group21.AddExplicit cRelevantProducts.Item(int_j) + ' 'create a new clash analysis + ' Dim oClash 'As Clash + ' oClash = cClashes.Add + ' oClash.ComputationType = catClashComputationTypeBetweenTwo + ' oClash.FirstGroup = group11 + ' oClash.SecondGroup = group21 + ' oClash.InterferenceType = catClashInterferenceTypeContact + ' oClash.Compute + ' Dim cConflicts As Conflicts + ' cConflicts = oClash.Conflicts + ' If cConflicts.Count > 0 Then + ' precedenceMatrix(int_j - 1, int_i - 1) = 1 + ' bNoContacts = False + ' End If + ' End If + ' Next int_j + ' Next int_i + + 'Export data to Excel + objExcel = CreateObject("Excel.Application") + objExcel.Visible = True + objExcel.Workbooks.Add + objExcel.ActiveWorkbook.Sheets.Add.Name = "Precedence Matrix" + objSheet1 = objExcel.ActiveWorkbook.Worksheets(2) + objSheet1.Name = "Assembly Directions" + objSheet2 = objExcel.ActiveWorkbook.Worksheets(1) + + 'Assembly directions + objSheet1.Cells(1, 1).Value = "Product" + objSheet1.Cells(1, 2).Value = "+X" + objSheet1.Cells(1, 3).Value = "+Y" + objSheet1.Cells(1, 4).Value = "+Z" + objSheet1.Cells(1, 5).Value = "-X" + objSheet1.Cells(1, 6).Value = "-Y" + objSheet1.Cells(1, 7).Value = "-Z" + objSheet1.Cells(1, 8).Value = "Assembly Tier" + For int_i = 1 To cRelevantProducts.Count + objSheet1.Cells(int_i + 1, 1).Value = cRelevantProducts.Item(int_i).Name + For intAxis = 0 To intJ - 1 + objSheet1.Cells(int_i + 1, 2 + intAxis).Value = disassDir(int_i - 1, intAxis) + Next intAxis + objSheet1.Cells(int_i + 1, intJ + 2).Value = aTiers(int_i - 1) + Next int_i + + 'Precedence relations + For int_i = 1 To cRelevantProducts.Count + For int_j = 1 To cRelevantProducts.Count + objSheet2.Cells(int_i, int_j).Value = precedenceMatrix(int_i - 1, int_j - 1) + Next int_j + Next int_i + + End Sub + Sub ExtractProducts(oCurrentProduct As Product) + + Dim oCurrentTreeNode As Product + Dim i As Integer + + For i = 1 To oCurrentProduct.Products.Count + oCurrentTreeNode = oCurrentProduct.Products.Item(i) + + 'recursive + If oCurrentTreeNode.Products.Count > 0 Then + ExtractProducts(oCurrentTreeNode) + Else + Debug.Print(oCurrentTreeNode.PartNumber & " (" & oCurrentTreeNode.Name & ") is a leaf product") + 'remove special characters from the part number + Dim newPartNo As String + Dim newCharacter As String + newCharacter = " " + newPartNo = oCurrentTreeNode.PartNumber + newPartNo = Replace(newPartNo, "<", newCharacter) + newPartNo = Replace(newPartNo, ">", newCharacter) + newPartNo = Replace(newPartNo, "/", newCharacter) + oCurrentTreeNode.PartNumber = newPartNo + cAllProducts.Add(oCurrentTreeNode) + End If + + Next + + End Sub + + Sub GetNextNode(oCurrentProduct As Product) + + Dim oCurrentTreeNode As Product + Dim i As Integer + + For i = 1 To oCurrentProduct.Products.Count + oCurrentTreeNode = oCurrentProduct.Products.Item(i) + + If IsPart(oCurrentTreeNode) = True Then + MsgBox(oCurrentTreeNode.PartNumber & " is a part") + ElseIf IsProduct(oCurrentTreeNode) = True Then + MsgBox(oCurrentTreeNode.PartNumber & " is a product") + Else + MsgBox(oCurrentTreeNode.PartNumber & " is a component") + End If + + 'recursive + If oCurrentTreeNode.Products.Count > 0 Then + GetNextNode(oCurrentTreeNode) + End If + + Next + + End Sub + + Function IsPart(objCurrentProduct As Product) As Boolean + + Dim oTestPart As PartDocument + + oTestPart = Nothing + + On Error Resume Next + + oTestPart = CATIA.Documents.Item(objCurrentProduct.PartNumber & ".CATPart") + + If Not oTestPart Is Nothing Then + IsPart = True + Else + IsPart = False + End If + + End Function + + Function IsProduct(objCurrentProduct As Product) As Boolean + + Dim oTestProduct As ProductDocument + + oTestProduct = Nothing + + On Error Resume Next + + oTestProduct = CATIA.Documents.Item(objCurrentProduct.PartNumber & ".CATProduct") + + If Not oTestProduct Is Nothing Then + IsProduct = True + Else + IsProduct = False + End If + + End Function + + Function DeactivateFasteners(objProduct As Product) + + Dim objParts AsCollection + 'On the top level of product tree + ' objParts = objProduct.Products + 'Recursive + objParts = cAllProducts + Dim i As Integer + Dim selection1 As Selection + selection1 = CATIA.ActiveDocument.Selection + selection1.Clear() + + Dim intFasteners As Integer + intFasteners = 0 + + For i = 1 To objParts.Count + Dim sName As String + Dim prod As Product + Dim primFastSize As Integer + + prod = objParts.Item(i) + sName = LCase(prod.PartNumber) + 'Debug.Print sName + If InStr(sName, "bolt") > 0 Then + Debug.Print(prod.Name + " was identified as a bolt") + selection1.Add(prod) + + primaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "screw") Or InStr(sName, "schraube") > 0 Then + Debug.Print(prod.Name + " was identified as a screw") + selection1.Add(prod) + + primaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "clip") > 0 Then + Debug.Print(prod.Name + " was identified as a clip") + selection1.Add(prod) + + primaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "wedge") > 0 Then + Debug.Print(prod.Name + " was identified as a wedge") + selection1.Add(prod) + + primaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "pin") > 0 Then + Debug.Print(prod.Name + " was identified as a pin") + selection1.Add(prod) + + primaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "nut") > 0 Then + Debug.Print(prod.Name + " was identified as a nut") + selection1.Add(prod) + + secondaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + ElseIf InStr(sName, "washer") > 0 Then + Debug.Print(prod.Name + " was identified as a washer") + selection1.Add(prod) + + secondaryFasteners.Add(prod) + + CATIA.StartCommand("Activate / Deactivate Component") + selection1.Clear() + intFasteners = intFasteners + 1 + Else + cRelevantProducts.Add(prod) + End If + Next + + 'CATIA.StartCommand ("Activate / Deactivate Component") + Debug.Print("Deactivated " + CStr(intFasteners) + " fasteners") + intParts = intParts - intFasteners + Debug.Print(CStr(intParts) + " parts to assemble") + MsgBox("Fasteners are deacivated. Press OK to proceed.") + + End Function + + Function GenerateBoundingBox(partDocument1 As PartDocument, objProduct As Product, i As Integer) + 'Processes a single part to extract its origin XYZ, min/max X/Y/Z + + CATIA.DisplayFileAlerts = False + + 'Declare variables + Dim axis + Dim remake + Dim part1 As Part + Dim axisref As Object + Dim shapeFactory1 As ShapeFactory + Dim hybridShapeFactory1 As HybridShapeFactory + Dim sStatus As String + Dim hybridShapeD1, hybridShapeD2, hybridShapeD3 As HybridShapeDirection + Default Dim, a1, a2, a3, a4, a5, a6 'To change the offsets of the box + Dim bodies1 As Bodies + Dim body1 As Body + Dim reference1 As Reference + Dim HybridShapeExtremum1, HybridShapeExtremum2, HybridShapeExtremum3 As HybridShapeExtremum + Dim HybridShapeExtremum4, HybridShapeExtremum5, HybridShapeExtremum6 As HybridShapeExtremum + Dim originCoord(2) + Dim faceSel As Object + + 'Check whether we are processing a Part + If (InStr(partDocument1.Name, ".CATPart")) <> 0 Then + part1 = partDocument1.Part + hybridShapeFactory1 = part1.HybridShapeFactory + + Dim axiscoord(2) + Dim axissyst + + Dim axisSystem As AxisSystem + axisSystem = part1.AxisSystems.Item(1) + + axissyst = axisSystem + axisref = axisSystem + + ref_name_systaxis = axissyst.Name + + axissyst.IsCurrent = 1 + axissyst.Name = "BBoxAxis" + axname = axissyst.Name + + 'Get Product's Position (rotation and translation) + '(for now: relative to the parent product!) + Dim PositionArray(11) + Dim oPosition As Object + oPosition = objProduct.Position + oPosition.GetComponents(PositionArray) + + Dim originpoint As HybridShapePointCoord + axissyst.GetOrigin(originCoord) + 'MsgBox "X0 = " & CStr(originCoord(0)) & vbNewLine & "Y0 = " & CStr(originCoord(1)) & vbNewLine & "Z0 = " & CStr(originCoord(2)) + + originpoint = hybridShapeFactory1.AddNewPointCoord(originCoord(0), originCoord(1), originCoord(2)) + axisref = part1.CreateReferenceFromObject(originpoint) + axissyst.GetXAxis(axiscoord) + hybridShapeD1 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + axissyst.GetYAxis(axiscoord) + hybridShapeD2 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + axissyst.GetZAxis(axiscoord) + hybridShapeD3 = hybridShapeFactory1.AddNewDirectionByCoord(axiscoord(0), axiscoord(1), axiscoord(2)) + + 'hybridShapeD1&2 are not set yet, but used for line creation (from origin of the axis system) + Dim Plane_line_1 As HybridShapeLinePtDir + Plane_line_1 = hybridShapeFactory1.AddNewLinePtDir(originpoint, hybridShapeD1, 0, 0, False) + Dim Plane_line_2 As HybridShapeLinePtDir + Plane_line_2 = hybridShapeFactory1.AddNewLinePtDir(originpoint, hybridShapeD2, 0, 0, False) + + Dim oBodies As Bodies + oBodies = part1.Bodies + + 'J is defined to make unique names for Axis and the Body for the bounding box + Dim j As Integer + j = oBodies.Count + + 'Add new Body "Bounding Box."j to the Bodies of the current Part + bodies1 = part1.Bodies + body1 = bodies1.Add() + body1.Name = "Bounding Box." & j + + hybridBodies1 = body1.HybridBodies + Dim hybridBody1 As HybridBody + hybridBody1 = hybridBodies1.Add + hybridBody1.Name = "definition_points" + + + 'Pick a face of the part to use for HybridShapeExtract + faceSel = CATIA.ActiveDocument.Selection + faceSel.Clear + 'The current Part is added to the selection + faceSel.Add(part1) + 'The selection gets rewritten by all the Faces of the selected part ("sel") + faceSel.Search("Type=Face,sel") + + Debug.Print("Selected faces: " & CStr(faceSel.Count)) + + 'Need to check whether Extract crashes given this face and try the next one + Dim f As Integer + For f = 1 To faceSel.Count + + 'On Error GoTo ContinueFaceLoop + + reference1 = faceSel.Item(f).Value + Debug.Print(TypeName(reference1)) + + Dim hybridShapeExtract1 As HybridShapeExtract + hybridShapeExtract1 = hybridShapeFactory1.AddNewExtract(reference1) + hybridShapeExtract1.PropagationType = 1 'point continuity + hybridShapeExtract1.ComplementaryExtract = False + hybridShapeExtract1.IsFederated = False + reference1 = hybridShapeExtract1 + + 'Create the 6 Extrenum items for the Solid/Surf. May not be single points, will be solved with next points + HybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD1, 1) + HybridShapeExtremum2 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD1, 0) + HybridShapeExtremum3 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD2, 1) + HybridShapeExtremum4 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD2, 0) + HybridShapeExtremum5 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD3, 1) + HybridShapeExtremum6 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeD3, 0) + + ' Creates Geometrical Set under the Solid, to contain the construction elements + + Dim hybridBody2 As HybridBody + hybridBody2 = hybridBodies1.Item("definition_points") + + hybridBody2.AppendHybridShape(HybridShapeExtremum1) + part1.InWorkObject = HybridShapeExtremum1 + HybridShapeExtremum1.Name = "max_X" + hybridBody2.AppendHybridShape(HybridShapeExtremum2) + part1.InWorkObject = HybridShapeExtremum2 + HybridShapeExtremum2.Name = "min_X" + hybridBody2.AppendHybridShape(HybridShapeExtremum3) + part1.InWorkObject = HybridShapeExtremum3 + HybridShapeExtremum3.Name = "max_Y" + hybridBody2.AppendHybridShape(HybridShapeExtremum4) + part1.InWorkObject = HybridShapeExtremum4 + HybridShapeExtremum4.Name = "min_Y" + hybridBody2.AppendHybridShape(HybridShapeExtremum5) + part1.InWorkObject = HybridShapeExtremum5 + HybridShapeExtremum5.Name = "max_Z" + hybridBody2.AppendHybridShape(HybridShapeExtremum6) + part1.InWorkObject = HybridShapeExtremum6 + HybridShapeExtremum6.Name = "min_Z" + + part1.UpdateObject(HybridShapeExtremum1) + part1.UpdateObject(HybridShapeExtremum2) + part1.UpdateObject(HybridShapeExtremum3) + part1.UpdateObject(HybridShapeExtremum4) + part1.UpdateObject(HybridShapeExtremum5) + part1.UpdateObject(HybridShapeExtremum6) + + 'part1.Update + + ' Creates a 6 single points using the Extrenums as refs, so if the Extrenum was a line or surf, you can still off planes to these points + + Dim Ref1 As Reference + Ref1 = part1.CreateReferenceFromObject(HybridShapeExtremum1) + Dim Point1 As HybridShapePointCoord + Point1 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref1) + hybridBody2.AppendHybridShape(Point1) + point_ref11 = part1.CreateReferenceFromObject(Point1) + + Dim Ref2 As Reference + Ref2 = part1.CreateReferenceFromObject(HybridShapeExtremum2) + Dim Point2 As HybridShapePointCoord + Point2 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref2) + hybridBody2.AppendHybridShape(Point2) + point_ref12 = part1.CreateReferenceFromObject(Point2) + + Dim Ref3 As Reference + Ref3 = part1.CreateReferenceFromObject(HybridShapeExtremum3) + Dim Point3 As HybridShapePointCoord + Point3 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref3) + hybridBody2.AppendHybridShape(Point3) + point_ref13 = part1.CreateReferenceFromObject(Point3) + + Dim Ref4 As Reference + Ref4 = part1.CreateReferenceFromObject(HybridShapeExtremum4) + Dim Point4 As HybridShapePointCoord + Point4 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref4) + hybridBody2.AppendHybridShape(Point4) + point_ref14 = part1.CreateReferenceFromObject(Point4) + + Dim Ref5 As Reference + Ref5 = part1.CreateReferenceFromObject(HybridShapeExtremum5) + Dim Point5 As HybridShapePointCoord + Point5 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref5) + hybridBody2.AppendHybridShape(Point5) + point_ref5 = part1.CreateReferenceFromObject(Point5) + + Dim Ref6 As Reference + Ref6 = part1.CreateReferenceFromObject(HybridShapeExtremum6) + Dim Point6 As HybridShapePointCoord + Point6 = hybridShapeFactory1.AddNewPointCoordWithReference(0, 0, 0, Ref6) + hybridBody2.AppendHybridShape(Point6) + point_ref6 = part1.CreateReferenceFromObject(Point6) + + part1.UpdateObject(Point1) + part1.UpdateObject(Point2) + part1.UpdateObject(Point3) + part1.UpdateObject(Point4) + part1.UpdateObject(Point5) + part1.UpdateObject(Point6) + + 'part1.Update + + axissyst.IsCurrent = 1 + + 'Read extremum coordinates + Dim coord(2) As Object + Dim absCoord(2) As Object + + Dim TheSPAWorkbench As Workbench + TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") + + Dim TheMeasurable + + Debug.Print("Extremum coordinates in the local Axis System:") + + 'Transform local extrema coordinates into global coordinates and update aAssemblyBoundaries + + 'Distances to Part Bounding Box faces in local coordinates + Dim aBBDistances(5) As Double + '8 corner points of the Part Bounding Box (BB) in local coordinates (8x3 array) + Dim aBBCornersLocal(7, 2) As Double + + 'max_X_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref11) + TheMeasurable.GetPoint(coord) + aBBDistances(0) = coord(0) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point1.Name & " (" & Ref1.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'min_X_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref12) + TheMeasurable.GetPoint(coord) + aBBDistances(1) = coord(0) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point2.Name & " (" & Ref2.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'max_Y_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref13) + TheMeasurable.GetPoint(coord) + aBBDistances(2) = coord(1) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point3.Name & " (" & Ref3.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'min_Y_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref14) + TheMeasurable.GetPoint(coord) + aBBDistances(3) = coord(1) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point4.Name & " (" & Ref4.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'max_Z_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref5) + TheMeasurable.GetPoint(coord) + aBBDistances(4) = coord(2) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point5.Name & " (" & Ref5.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'min_Z_loc + TheMeasurable = TheSPAWorkbench.GetMeasurable(point_ref6) + TheMeasurable.GetPoint(coord) + aBBDistances(5) = coord(2) + Call Coord_Transform(coord, absCoord, objProduct, True) + Debug.Print(Point6.Name & " (" & Ref6.DisplayName & "): [" & absCoord(0) & " " & absCoord(1) & " " & absCoord(2) & "]") + + 'Generate 8 corner points (local coordinates) to the aBBCornersLocal + Dim m, n, k, c As Integer + c = 0 + For m = 0 To 1 + For n = 2 To 3 + For k = 4 To 5 + aBBCornersLocal(c, 0) = aBBDistances(m) + aBBCornersLocal(c, 1) = aBBDistances(n) + aBBCornersLocal(c, 2) = aBBDistances(k) + 'Transform corner point into global coordinates + coord(0) = aBBCornersLocal(c, 0) + coord(1) = aBBCornersLocal(c, 1) + coord(2) = aBBCornersLocal(c, 2) + Call Coord_Transform(coord, absCoord, objProduct, True) + 'Record values to aPartBBGlob + Dim CCC(2) As Double 'Corner Coordinates in axis system Congruent to global but in the part's origin + CCC(0) = absCoord(0) - PositionArray(9) + CCC(1) = absCoord(1) - PositionArray(10) + CCC(2) = absCoord(2) - PositionArray(11) + If CCC(0) > aPartBBGlob(i - 1, 0) Then + aPartBBGlob(i - 1, 0) = CCC(0) + End If + If CCC(0) < aPartBBGlob(i - 1, 1) Then + aPartBBGlob(i - 1, 1) = CCC(0) + End If + If CCC(1) > aPartBBGlob(i - 1, 2) Then + aPartBBGlob(i - 1, 2) = CCC(1) + End If + If CCC(1) < aPartBBGlob(i - 1, 3) Then + aPartBBGlob(i - 1, 3) = CCC(1) + End If + If CCC(2) > aPartBBGlob(i - 1, 4) Then + aPartBBGlob(i - 1, 4) = CCC(2) + End If + If CCC(2) < aPartBBGlob(i - 1, 5) Then + aPartBBGlob(i - 1, 5) = CCC(2) + End If + 'Update aAssemblyBoundaries (global) + If absCoord(0) > aAssemblyBoundaries(0) Then + aAssemblyBoundaries(0) = absCoord(0) + End If + If absCoord(0) < aAssemblyBoundaries(1) Then + aAssemblyBoundaries(1) = absCoord(0) + End If + If absCoord(1) > aAssemblyBoundaries(2) Then + aAssemblyBoundaries(2) = absCoord(1) + End If + If absCoord(1) < aAssemblyBoundaries(3) Then + aAssemblyBoundaries(3) = absCoord(1) + End If + If absCoord(2) > aAssemblyBoundaries(4) Then + aAssemblyBoundaries(4) = absCoord(2) + End If + If absCoord(2) < aAssemblyBoundaries(5) Then + aAssemblyBoundaries(5) = absCoord(2) + End If + c = c + 1 + Next k + Next n + Next m + + part1.Update + + Exit For + + 'ContinueFaceLoop: + + Next f + + Else + MsgBox("The active document must be a CATPart") + End If + + End Function + + Sub RecalculateRemovalDistances(cRelProd As Collection, cDeact As Collection) + + Dim aRemovalDistances(cRelProd.Count - 1, 5) + Dim i As Integer + Dim relProd As Product + 'assure that the origin is inside the BB of assembly + aAssemblyBoundaries(0) = 0# + aAssemblyBoundaries(1) = 0# + aAssemblyBoundaries(2) = 0# + aAssemblyBoundaries(3) = 0# + aAssemblyBoundaries(4) = 0# + aAssemblyBoundaries(5) = 0# + + For i = 0 To cRelProd.Count - 1 + relProd = cRelProd.Item(i + 1) + If Not productIsInCollection(relProd, cDeact) Then + If aInitPos(i, 9) + aPartBBGlob(i, 0) > aAssemblyBoundaries(0) Then + aAssemblyBoundaries(0) = aInitPos(i, 9) + aPartBBGlob(i, 0) + End If + If aInitPos(i, 9) + aPartBBGlob(i, 1) < aAssemblyBoundaries(1) Then + aAssemblyBoundaries(1) = aInitPos(i, 9) + aPartBBGlob(i, 1) + End If + If aInitPos(i, 10) + aPartBBGlob(i, 2) > aAssemblyBoundaries(2) Then + aAssemblyBoundaries(2) = aInitPos(i, 10) + aPartBBGlob(i, 2) + End If + If aInitPos(i, 10) + aPartBBGlob(i, 3) < aAssemblyBoundaries(3) Then + aAssemblyBoundaries(3) = aInitPos(i, 10) + aPartBBGlob(i, 3) + End If + If aInitPos(i, 11) + aPartBBGlob(i, 4) > aAssemblyBoundaries(4) Then + aAssemblyBoundaries(4) = aInitPos(i, 11) + aPartBBGlob(i, 4) + End If + If aInitPos(i, 11) + aPartBBGlob(i, 5) < aAssemblyBoundaries(5) Then + aAssemblyBoundaries(5) = aInitPos(i, 11) + aPartBBGlob(i, 5) + End If + End If + Next i + + For i = 0 To cRelProd.Count - 1 + relProd = cRelProd.Item(i + 1) + If Not productIsInCollection(relProd, cDeact) Then + aRemovalDistances(i, 0) = aAssemblyBoundaries(0) - aPartBBGlob(i, 1) + aRemovalDistances(i, 1) = aAssemblyBoundaries(1) - aPartBBGlob(i, 0) + aRemovalDistances(i, 2) = aAssemblyBoundaries(2) - aPartBBGlob(i, 3) + aRemovalDistances(i, 3) = aAssemblyBoundaries(3) - aPartBBGlob(i, 2) + aRemovalDistances(i, 4) = aAssemblyBoundaries(4) - aPartBBGlob(i, 5) + aRemovalDistances(i, 5) = aAssemblyBoundaries(5) - aPartBBGlob(i, 4) + End If + Next i + + End Sub + + Public Function ArrayLen(a As Object) As Integer + If IsEmpty(a) Then + ArrayLen = 0 + Else + ArrayLen = UBound(a) - LBound(a) + 1 + End If + End Function + + Function Det3x3(dX11 As Double, dX12 As Double, dX13 As Double, + dX21 As Double, dX22 As Double, dX23 As Double, + dX31 As Double, dX32 As Double, dX33 As Double) As Double + '*********************************************** + '* + '* 3x3 matrix determinant calculation (direct) + '* + '*********************************************** + + Det3x3 = dX11 * dX22 * dX33 + dX12 * dX23 * dX31 + dX21 * dX32 * dX13 - + dX13 * dX22 * dX31 - dX12 * dX21 * dX33 - dX23 * dX32 * dX11 + End Function + Function Inv3x3(dX11 As Double, dX12 As Double, dX13 As Double, + dX21 As Double, dX22 As Double, dX23 As Double, + dX31 As Double, dX32 As Double, dX33 As Double, aInv() As Double) As Boolean + '*********************************************** + '* + '* 3x3 matrix inverse calculation (direct) + '* + '*********************************************** + Dim dDet As Double + + Dim aInv(8) + + Inv3x3 = False + + dDet = Det3x3(dX11, dX12, dX13, dX21, dX22, dX23, dX31, dX32, dX33) + If dDet = 0 Then Exit Function + + aInv(0) = (dX22 * dX33 - dX23 * dX32) / Abs(dDet) + aInv(1) = (dX13 * dX32 - dX12 * dX33) / Abs(dDet) + aInv(2) = (dX12 * dX23 - dX13 * dX22) / Abs(dDet) + aInv(3) = (dX23 * dX31 - dX21 * dX33) / Abs(dDet) + aInv(4) = (dX11 * dX33 - dX13 * dX31) / Abs(dDet) + aInv(5) = (dX13 * dX21 - dX11 * dX23) / Abs(dDet) + aInv(6) = (dX21 * dX32 - dX22 * dX31) / Abs(dDet) + aInv(7) = (dX12 * dX31 - dX11 * dX32) / Abs(dDet) + aInv(8) = (dX11 * dX22 - dX12 * dX21) / Abs(dDet) + + Inv3x3 = True + + End Function + Sub Coord_Transform(aRel() As Object, aAbs() As Object, oProduct As Product, bRecursively As Boolean) + + Dim vProduct As Object, vCoord(11) + Dim oFatherProduct As Product + Dim aInv() As Double + + 'Exit condition, empty object + If oProduct Is Nothing Then Exit Sub + + 'Redim absolute coords matrix + On Error Resume Next + Dim aAbs(2) + On Error GoTo 0 + + 'Calculate product coordinates + vProduct = oProduct + vProduct.Position.GetComponents(vCoord) + + 'Calculate inverse matrix + If Inv3x3(CDbl(vCoord(0)), CDbl(vCoord(1)), CDbl(vCoord(2)), + CDbl(vCoord(3)), CDbl(vCoord(4)), CDbl(vCoord(5)), + CDbl(vCoord(6)), CDbl(vCoord(7)), CDbl(vCoord(8)), aInv) Then + Else + 'MsgBox "Error, degenerate transformation", vbOKOnly + Exit Sub + End If + + 'Calculate transformation + aAbs(0) = vCoord(9) + aInv(0) * aRel(0) + aInv(1) * aRel(1) + aInv(2) * aRel(2) + aAbs(1) = vCoord(10) + aInv(3) * aRel(0) + aInv(4) * aRel(1) + aInv(5) * aRel(2) + aAbs(2) = vCoord(11) + aInv(6) * aRel(0) + aInv(7) * aRel(1) + aInv(8) * aRel(2) + + 'If recursive option sepecified, search for parents and applies the transformation again + If bRecursively Then + + 'Try to assign parent + oFatherProduct = Nothing + On Error Resume Next + oFatherProduct = oProduct.Parent.Parent + On Error GoTo 0 + + 'If OK, recalculate coords + If oFatherProduct Is Nothing Then + Else + If oFatherProduct.PartNumber + ".CATProduct" = CATIA.ActiveDocument.Name Then + aRel(0) = aAbs(0) + aRel(1) = aAbs(1) + aRel(2) = aAbs(2) + Coord_Transform(aRel, aAbs, oFatherProduct, False) + Else + aRel(0) = aAbs(0) + aRel(1) = aAbs(1) + aRel(2) = aAbs(2) + Coord_Transform(aRel, aAbs, oFatherProduct, True) + End If + End If + + End If + + End Sub + + Function productIsInCollection(objProd As Product, prodColl As Collection) As Boolean + Dim dummyObj As Product + productIsInCollection = False + For Each dummyObj In prodColl + If dummyObj.Name = objProd.Name Then + productIsInCollection = True + Exit For + End If + Next + End Function + + Sub moveProduct(objProd As Product, intDir As Integer, bPositive As Boolean) + Dim intS As Integer + If bPositive = True Then + intS = intStep + Else + intS = -intStep + End If + Dim moveArray(11) + moveArray(0) = 1 + moveArray(1) = 0 + moveArray(2) = 0 + moveArray(3) = 0 + moveArray(4) = 1 + moveArray(5) = 0 + moveArray(6) = 0 + moveArray(7) = 0 + moveArray(8) = 1 + moveArray(9) = 0 + moveArray(10) = 0 + moveArray(11) = 0 + + Dim axisArray(11) + + 'movement along global axis + If intDir < 7 Then + 'Attention: for now it is assumed that all products are on the top level of specification tree + If intDir = 1 Then + moveArray(9) = intS + End If + If intDir = 2 Then + moveArray(10) = intS + End If + If intDir = 3 Then + moveArray(11) = intS + End If + If intDir = 4 Then + moveArray(9) = -intS + End If + If intDir = 5 Then + moveArray(10) = -intS + End If + If intDir = 6 Then + moveArray(11) = -intS + End If + Else 'movement along local axis + Dim oPosition As Object + oPosition = objProd.Position + oPosition.GetComponents(axisArray) + If intDir = 7 Then + moveArray(9) = axisArray(0) * intS + moveArray(10) = axisArray(1) * intS + moveArray(11) = axisArray(2) * intS + End If + If intDir = 8 Then + moveArray(9) = axisArray(3) * intS + moveArray(10) = axisArray(4) * intS + moveArray(11) = axisArray(5) * intS + End If + If intDir = 9 Then + moveArray(9) = axisArray(6) * intS + moveArray(10) = axisArray(7) * intS + moveArray(11) = axisArray(8) * intS + End If + If intDir = 10 Then + moveArray(9) = -axisArray(0) * intS + moveArray(10) = -axisArray(1) * intS + moveArray(11) = -axisArray(2) * intS + End If + If intDir = 11 Then + moveArray(9) = -axisArray(3) * intS + moveArray(10) = -axisArray(4) * intS + moveArray(11) = -axisArray(5) * intS + End If + If intDir = 12 Then + moveArray(9) = -axisArray(6) * intS + moveArray(10) = -axisArray(7) * intS + moveArray(11) = -axisArray(8) * intS + End If + End If + prod1nd = objProd + prod1nd.Move.Apply(moveArray) + + End Sub + + Function collisionDetected(cClashes As Clashes, group1 As Group, group2 As Group) As Boolean + 'cRelevantProducts As Collection, cDeactivated As Collection + + collisionDetected = False + + 'define two groups + ' Dim group1 As Group + 'Dim group2 As Group + ' group1 = cGroups.Add + ' group2 = cGroups.Add + ' group1.AddExplicit product1 + ' Dim relevantProduct As Product + ' For Each relevantProduct In cRelevantProducts + ' If Not relevantProduct.Name = product1.Name And Not productIsInCollection(relevantProduct, cDeactivated) Then + ' group2.AddExplicit relevantProduct + ' End If + ' Next relevantProduct + 'create a new clash analysis + Dim oClash 'As Clash + oClash = cClashes.Add + oClash.ComputationType = catClashComputationTypeBetweenTwo + oClash.FirstGroup = group1 + oClash.SecondGroup = group2 + oClash.InterferenceType = catClashInterferenceTypeClearance + 'oClash.Clearance = dCollSens + oClash.Compute + Dim cConflicts As Conflicts + cConflicts = oClash.Conflicts + If cConflicts.Count > 0 Then + 'MsgBox "Detected a collision: " & product1.Name + 'If at least one conflict value exceeds the collision sensitivity, it is a collision + Dim oConflict As Conflict + Dim c As Integer + For c = 1 To cConflicts.Count + oConflict = cConflicts.Item(c) + oConflict.Status = catConflictStatusRelevant + If oConflict.Type = catConflictTypeClash Then + If oConflict.Value < -dCollSens Then + collisionDetected = True + Debug.Print("Clash detected: " & oConflict.FirstProduct.Name & " - " & oConflict.SecondProduct.Name & " = " & oConflict.Value) + Exit For + End If + End If + Next c + End If + End Function + + Function productReachedFinalPosition(objProd As Product, i1 As Integer) As Boolean + productReachedFinalPosition = False + Dim posArray(11) + Dim oPosition As Object + oPosition = objProd.Position + oPosition.GetComponents(posArray) + If posArray(9) > aRemovalDistances(i1 - 1, 0) Then + productReachedFinalPosition = True + 'MsgBox "X+ removal distance reached by " & objProd.Name + End If + If posArray(9) < aRemovalDistances(i1 - 1, 1) Then + productReachedFinalPosition = True + 'MsgBox "X- removal distance reached by " & objProd.Name + End If + If posArray(10) > aRemovalDistances(i1 - 1, 2) Then + productReachedFinalPosition = True + 'MsgBox "Y+ removal distance reached by " & objProd.Name + End If + If posArray(10) < aRemovalDistances(i1 - 1, 3) Then + productReachedFinalPosition = True + 'MsgBox "Y- removal distance reached by " & objProd.Name + End If + If posArray(11) > aRemovalDistances(i1 - 1, 4) Then + productReachedFinalPosition = True + 'MsgBox "Z+ removal distance reached by " & objProd.Name + End If + If posArray(11) < aRemovalDistances(i1 - 1, 5) Then + productReachedFinalPosition = True + 'MsgBox "Z- removal distance reached by " & objProd.Name + End If + End Function + + Function productHasValidDisassDir(i1 As Integer, disassDir() As Object) As Boolean + productHasValidDisassDir = False + Dim j As Integer + For j = 0 To 11 + If disassDir(i1 - 1, j) = 1 Then + productHasValidDisassDir = True + Exit For + End If + Next j + End Function + + Function Tree(s1, q) + + For Each s2 In s1.Products + Tree(s2, q) + Next + + parentAssy = s1.Parent.Parent + + If StrComp(TypeName(parentAssy), "Product") = 0 Then + parentAssy.ReferenceProduct.Products.Item(s1.Name).Name = CStr(s1.PartNumber) & CStr("." & q) + q = q + 1 + End If + + End Function + + Private Sub RenameSingleLevel(ByRef oCurrentProd As Product) + + On Error Resume Next + + 'More declarations + Dim ItemToRename As Product + Dim ToRenamePartNumber As String + Dim lNumberOfItems As Long + Dim RenameArray(2000) As String + Dim i As Integer + Dim j As Integer + Dim k As Integer + + oCurrentProd = oCurrentProd.ReferenceProduct 'You have to work with the "ReferenceProduct" object + lNumberOfItems = oCurrentProd.Products.Count + + 'For i = 1 To lNumberOfItems 'Clear out the rename array + ' RenameArray(i) = "" 'Don't know if this is necessary + 'Next + + 'Run through this loop once, to set everything to a dummy name, to avoid naming conflicts + For i = 1 To lNumberOfItems 'Cycle through the assembly's children + ItemToRename = oCurrentProd.Products.Item(i) 'Declare which item we are working on + + ToRenamePartNumber = ItemToRename.PartNumber 'Get the Part Number + 'ToRenamePartNumber = ItemToRename.DescriptionRef 'Toggle these two lines for testing + + RenameArray(i) = ToRenamePartNumber 'Building the list of part names for the numbering loop + + k = 0 'Numbering Loop + For j = 1 To i 'This loop checks and sets the instance number + If RenameArray(j) = ToRenamePartNumber Then + k = k + 1 + End If + Next + CATIA.StatusBar = ItemToRename.Name & " > " & ToRenamePartNumber & "." & k + 'MsgBox ItemToRename.Name & " / " & ToRenamePartNumber & "." & k 'This line is for testing only + ItemToRename.Name = ToRenamePartNumber & "TEMP." & k 'Set the new instance name, to a TEMP dummy value + + Next + + 'Run through this loop to set the name finally, then the recursion call + For i = 1 To lNumberOfItems + ItemToRename = oCurrentProd.Products.Item(i) + + ToRenamePartNumber = ItemToRename.PartNumber 'Toggle these two lines for testing + 'ToRenamePartNumber = ItemToRename.DescriptionRef 'Toggle these two lines for testing + + RenameArray(i) = ToRenamePartNumber + + k = 0 + For j = 1 To i + If RenameArray(j) = ToRenamePartNumber Then + k = k + 1 + End If + Next + + CATIA.StatusBar = ItemToRename.Name & " > " & ToRenamePartNumber & "." & k + 'MsgBox ItemToRename.Name & " / " & ToRenamePartNumber & "." & k 'For testing + + ItemToRename.Name = ToRenamePartNumber & "." & k 'Set the new instance name final + + If ItemToRename.Products.Count <> 0 Then 'Recursive Call for version 0.1.2 + If oList.exists(ItemToRename.PartNumber) Then GoTo Finish + If ItemToRename.PartNumber = ItemToRename.ReferenceProduct.Parent.Product.PartNumber Then oList.Add(ItemToRename.PartNumber, 1) + Call RenameSingleLevel(ItemToRename) + End If + +Finish: + Next + + End Sub + + Function GetProductIndex(objProd As Product, cProds As Collection) As Integer + Dim produkt As Product + Dim intAns As Integer + intAns = 0 + For Each produkt In cProds + If produkt.Name = objProd.Name Then + GetProductIndex = intAns + Exit Function + End If + intAns = intAns + 1 + Next produkt + End Function + +End Class diff --git a/CatiaNetTest/CatiaNetTest.vbproj b/CatiaNetTest/CatiaNetTest.vbproj new file mode 100644 index 0000000000000000000000000000000000000000..de9223021061c5a79d8ae3289f7673c2b8eb84d3 --- /dev/null +++ b/CatiaNetTest/CatiaNetTest.vbproj @@ -0,0 +1,915 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProjectGuid>{BE15D79B-EF5F-46CE-8D88-72F4386BCF6F}</ProjectGuid> + <OutputType>WinExe</OutputType> + <StartupObject>CatiaNetTest.My.MyApplication</StartupObject> + <RootNamespace>CatiaNetTest</RootNamespace> + <AssemblyName>CatiaNetTest</AssemblyName> + <FileAlignment>512</FileAlignment> + <MyType>WindowsForms</MyType> + <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> + <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <DefineDebug>true</DefineDebug> + <DefineTrace>true</DefineTrace> + <OutputPath>bin\Debug\</OutputPath> + <DocumentationFile>CatiaNetTest.xml</DocumentationFile> + <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <PlatformTarget>AnyCPU</PlatformTarget> + <DebugType>pdbonly</DebugType> + <DefineDebug>false</DefineDebug> + <DefineTrace>true</DefineTrace> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DocumentationFile>CatiaNetTest.xml</DocumentationFile> + <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> + </PropertyGroup> + <PropertyGroup> + <OptionExplicit>On</OptionExplicit> + </PropertyGroup> + <PropertyGroup> + <OptionCompare>Binary</OptionCompare> + </PropertyGroup> + <PropertyGroup> + <OptionStrict>Off</OptionStrict> + </PropertyGroup> + <PropertyGroup> + <OptionInfer>On</OptionInfer> + </PropertyGroup> + <ItemGroup> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + <Reference Include="System.Core" /> + <Reference Include="System.Xml.Linq" /> + <Reference Include="System.Data.DataSetExtensions" /> + <Reference Include="System.Net.Http" /> + </ItemGroup> + <ItemGroup> + <Import Include="Microsoft.VisualBasic" /> + <Import Include="System" /> + <Import Include="System.Collections" /> + <Import Include="System.Collections.Generic" /> + <Import Include="System.Data" /> + <Import Include="System.Drawing" /> + <Import Include="System.Diagnostics" /> + <Import Include="System.Windows.Forms" /> + <Import Include="System.Linq" /> + <Import Include="System.Xml.Linq" /> + <Import Include="System.Threading.Tasks" /> + </ItemGroup> + <ItemGroup> + <Compile Include="AssemblyTiers2.vb" /> + <Compile Include="Form1.vb"> + <SubType>Form</SubType> + </Compile> + <Compile Include="Form1.Designer.vb"> + <DependentUpon>Form1.vb</DependentUpon> + <SubType>Form</SubType> + </Compile> + <Compile Include="My Project\AssemblyInfo.vb" /> + <Compile Include="My Project\Application.Designer.vb"> + <AutoGen>True</AutoGen> + <DependentUpon>Application.myapp</DependentUpon> + </Compile> + <Compile Include="My Project\Resources.Designer.vb"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>Resources.resx</DependentUpon> + </Compile> + <Compile Include="My Project\Settings.Designer.vb"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <ItemGroup> + <EmbeddedResource Include="Form1.resx"> + <DependentUpon>Form1.vb</DependentUpon> + </EmbeddedResource> + <EmbeddedResource Include="My Project\Resources.resx"> + <Generator>VbMyResourcesResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.vb</LastGenOutput> + <CustomToolNamespace>My.Resources</CustomToolNamespace> + <SubType>Designer</SubType> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="My Project\Application.myapp"> + <Generator>MyApplicationCodeGenerator</Generator> + <LastGenOutput>Application.Designer.vb</LastGenOutput> + </None> + <None Include="My Project\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <CustomToolNamespace>My</CustomToolNamespace> + <LastGenOutput>Settings.Designer.vb</LastGenOutput> + </None> + <None Include="App.config" /> + </ItemGroup> + <ItemGroup> + <COMReference Include="AECRTypeLib"> + <Guid>{85CC1867-B083-0000-0280-020CC2000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="AnnotationTypeLib"> + <Guid>{88D26C84-D8E9-0000-0280-020CC3000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="BehaviorTypeLib"> + <Guid>{14F198C2-0761-11D1-A5B1-00A0C9469177}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CAT3DXml"> + <Guid>{0FCBA824-46B4-430B-A3C6-BC8E84D1FB7F}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATArrangementTypeLib"> + <Guid>{A903D4EA-3932-11D3-8BB3-006094EB5532}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATAssemblyTypeLib"> + <Guid>{8D5B5690-9551-11D4-9349-006094EB72E6}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATCompositesMat"> + <Guid>{437A1314-9209-41FA-B546-9214651847FA}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATDataExch"> + <Guid>{737CBEE1-8395-4A53-818C-FE7BFE900297}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATEdbTypeLib"> + <Guid>{3C63282E-8D73-4F3E-BF1F-D893F84DE783}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATFunctSystem"> + <Guid>{66AC8D61-4977-11D3-B2C7-0008C725BE57}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATHumanPackaging"> + <Guid>{839FB79A-20FA-4F8E-B1B5-999E0AF49745}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATIA_APP_ITF"> + <Guid>{3D8D0A2A-F2B0-11D4-A3AA-00D0B756AD5D}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATIdeSettings"> + <Guid>{FE73E3EA-3D1A-450F-833F-DE849066C8B6}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATImm"> + <Guid>{3AE49352-F009-4B43-B51C-29F6AD62663B}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATInstantCollabItf"> + <Guid>{96C13590-CBF9-4F0F-9401-973103C58E12}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATMat"> + <Guid>{4D3F28C0-7790-11D6-8056-0030F113D1BF}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATMultiCAD"> + <Guid>{2ADBCBC4-7492-490C-8B6D-32CAA716E314}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATOBM"> + <Guid>{7B131536-75DA-11D5-8551-00D0B7ADDE06}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATPspPlantShipTypeLib"> + <Guid>{07CD116E-CF88-11D4-8E1B-00D0B7ACB59A}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATRdg"> + <Guid>{AB9D7654-6206-0000-0280-02157B000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATRma"> + <Guid>{9BE25E70-7167-11D6-8054-0030F113D1BF}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATRpmReporterTypeLib"> + <Guid>{DFE3EB46-ABAA-11D5-8E54-00D0B7ACB59A}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATRsc"> + <Guid>{D45AD2D0-999B-11D6-805E-0030F113D1BF}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATRsc2"> + <Guid>{8BE37938-81D6-4804-9C94-2738A2667419}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATSchematicTypeLib"> + <Guid>{572C20C8-C8A9-11D4-8E3E-00D0B7ACBB09}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATSdeSetting"> + <Guid>{E6395545-A6F3-4631-8961-2037EC182DF3}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATSfmTypeLib"> + <Guid>{09E2D098-A612-490A-98C8-B62D8B3B2861}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATSmarTeamInteg"> + <Guid>{37EB6106-2CBA-4A69-B0F7-185EDF69CFC7}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATSmInterfacesTypeLib"> + <Guid>{AAE56182-33C6-450A-A9F0-1D0695A25ED1}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATStiWIPBridgeSurrogateCOMExeLib"> + <Guid>{23EBD294-52FD-4A9B-ACF6-7DFC09A2FE58}</Guid> + <VersionMajor>1</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATStk"> + <Guid>{654C60DF-B2E8-11D3-859E-00108301D61C}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATStrSettingsTypeLib"> + <Guid>{8AD08B63-AF05-4E2D-A550-2C53FC1EE4D2}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATTooling"> + <Guid>{B46B5073-7D07-11D6-9F4E-0002B31E9EB0}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CATV4IInteropTypeLib"> + <Guid>{B370B426-EF27-41DD-91EE-852F02C5F0DD}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="CD5Integ"> + <Guid>{5E149A53-EF95-4DDD-8939-FF3F1C838737}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="ComponentsCatalogsTypeLib"> + <Guid>{FE86BC00-D89C-11D2-BE6C-00104B7D1988}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBASY"> + <Guid>{9A12E21A-7CAC-11D6-810A-00C04FA145A1}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBBIW"> + <Guid>{A6BF295D-4BEF-0000-020A-6E0A4F000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBD5I"> + <Guid>{DEAED728-B6E6-497B-8E8F-8731973175AC}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBDevice"> + <Guid>{FD1E8709-66BC-44A2-9ADF-0E2A42021926}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBDeviceActivity"> + <Guid>{10F5E3C1-CFE2-11D5-80DF-0050040CD0C6}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBDpmItf"> + <Guid>{344C5719-2624-440A-8C71-AF3DA6B691BE}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBFastener"> + <Guid>{7558A44C-B4C5-11D4-80C4-0050040CCFB4}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBIgpResourceProgram"> + <Guid>{6487219A-06D9-4F6D-9352-5AA4D3AA4760}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBIgpTagPath"> + <Guid>{F000CAE4-5E52-11D4-B3D4-00902721A553}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBIgripSim"> + <Guid>{F7D9256B-C1FD-11D3-80AC-00C04FA145A1}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBIPD"> + <Guid>{0F114DA2-DA60-4037-BE3A-5D7B2EEC71DE}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBManufacturingLayoutItf"> + <Guid>{0C850845-5B21-42C7-A8DA-C02B7962CCE5}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBMHIItf"> + <Guid>{F0095CB7-ED36-4DC5-8D36-7BE80D1EAAF8}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBPert"> + <Guid>{EB4E9CFF-0CC4-11D5-AD27-00B0D078AB86}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBReporting"> + <Guid>{0C4204AA-0CA1-4599-8652-66D1934E6A35}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBRobot"> + <Guid>{715642EA-ABF9-410C-90BD-447C0122616C}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBSimAct"> + <Guid>{F1978546-69D8-4A96-BCDD-AD943304CBB7}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBSimIO"> + <Guid>{D01C6413-4925-4F4A-8F5C-EE92778FC184}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBSimulation"> + <Guid>{D0387336-CB2F-401A-9310-5BD1456B9441}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DNBState"> + <Guid>{655A0376-C6BD-4B8F-9763-AFDDA406B423}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DPMSettings"> + <Guid>{544B33A3-D62B-49BE-B7FC-52B288650AB5}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="DRAFTINGITF"> + <Guid>{73130905-462A-11D1-A26A-0000F87546A1}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="ElecSchematicTypeLib"> + <Guid>{EE6CDBD0-29FB-11D6-BE35-0002B33E3A92}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="ElectricalTypeLib"> + <Guid>{0249798A-DA3D-11D3-BB2A-006094EB7CE7}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="FittingTypeLib"> + <Guid>{8D48D2A0-8AE2-11D3-9ED9-0008C719F642}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="GenKwe"> + <Guid>{00B6EC0E-BCFE-11D2-9B5B-006094EB7ECA}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="HybridShapeTypeLib"> + <Guid>{87EE735C-DF70-11D1-8556-0060941979CE}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="INFITF"> + <Guid>{14F197B2-0771-11D1-A5B1-00A0C9575177}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="KinTypeLib"> + <Guid>{6652FDA0-BA01-11D2-88A1-0008C7194E6A}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="KnowledgewareTypeLib"> + <Guid>{0770412C-722E-11D2-8378-0060941974FF}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="LAYOUT2DITF"> + <Guid>{4480F2EC-29DE-443A-A706-3587C3758350}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="MANUFACTURING"> + <Guid>{11D5B9C4-3D84-11D2-8046-00805FC75483}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="MECMOD"> + <Guid>{0D90A5C9-3B08-11D1-A26C-0000F87546FD}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="mxcatiav5integrationTypeLib"> + <Guid>{ACD81FF4-AC0E-4A64-BD64-488394A81DFA}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="NavigatorTypeLib"> + <Guid>{E6BCB304-3260-11D4-9465-006094EB3826}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="OSMInterfacesTypeLib"> + <Guid>{96986334-CF57-11D3-876D-006094EB3996}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="PARTITF"> + <Guid>{D8431606-E4B5-11D1-A5D3-00A0C95752ED}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="PCBITF"> + <Guid>{9140106B-CD44-0000-0280-030BBD000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="PPR"> + <Guid>{D174F8A2-C2B4-11D3-AB2C-0008C7193C4E}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="PRISMATICMACHINING"> + <Guid>{BC56CA8C-B183-44D1-A01E-1461E3191FCA}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="PROCESSITF"> + <Guid>{DFB0B450-52DF-11D2-BEBF-006094198597}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="ProductStructureTypeLib"> + <Guid>{5065F8B6-61BB-11D1-9D85-0000F8759F82}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SAMITF"> + <Guid>{4C57C67F-E66B-11D2-97CA-0008C71933B6}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SHEITF"> + <Guid>{AEDE231A-8E0E-11D3-827B-006094EB7FE4}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SIM"> + <Guid>{4D49C2C5-B63B-11D5-85A7-00D0B7ADDE56}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SimulationTypeLib"> + <Guid>{FDEBBA89-3603-11D3-9E9D-006094B99E67}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SMTypeLib"> + <Guid>{90D2BC28-DA87-11D1-9557-00805F85878F}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SPATypeLib"> + <Guid>{9143C8CC-1474-11D4-9461-006094EB3826}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="StrTypeLib"> + <Guid>{8292D877-D27A-0280-020C-320000000000}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SURFACEMACHINING"> + <Guid>{35455E82-91D4-41A5-89D7-11C84D4E8D0F}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + <COMReference Include="SWKHumanModelingItf"> + <Guid>{EB0E290E-E591-11D3-809A-005004D3FE74}</Guid> + <VersionMajor>0</VersionMajor> + <VersionMinor>0</VersionMinor> + <Lcid>0</Lcid> + <WrapperTool>tlbimp</WrapperTool> + <Isolated>False</Isolated> + <EmbedInteropTypes>True</EmbedInteropTypes> + </COMReference> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/CatiaNetTest/Form1.Designer.vb b/CatiaNetTest/Form1.Designer.vb new file mode 100644 index 0000000000000000000000000000000000000000..4b13759686da8538c48bb90b335c925a823b0f8e --- /dev/null +++ b/CatiaNetTest/Form1.Designer.vb @@ -0,0 +1,87 @@ +<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ +Partial Class Form1 + Inherits System.Windows.Forms.Form + + 'Form overrides dispose to clean up the component list. + <System.Diagnostics.DebuggerNonUserCode()> _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + <System.Diagnostics.DebuggerStepThrough()> _ + Private Sub InitializeComponent() + Me.Label1 = New System.Windows.Forms.Label() + Me.Button1 = New System.Windows.Forms.Button() + Me.Label2 = New System.Windows.Forms.Label() + Me.Button2 = New System.Windows.Forms.Button() + Me.SuspendLayout() + ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(92, 49) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(139, 13) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Click here to start CATIA V5" + ' + 'Button1 + ' + Me.Button1.Location = New System.Drawing.Point(249, 44) + Me.Button1.Name = "Button1" + Me.Button1.Size = New System.Drawing.Size(114, 23) + Me.Button1.TabIndex = 1 + Me.Button1.Text = "Start" + Me.Button1.UseVisualStyleBackColor = True + ' + 'Label2 + ' + Me.Label2.AutoSize = True + Me.Label2.Location = New System.Drawing.Point(92, 96) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(109, 13) + Me.Label2.TabIndex = 2 + Me.Label2.Text = "Start collision analysis" + ' + 'Button2 + ' + Me.Button2.Location = New System.Drawing.Point(249, 96) + Me.Button2.Name = "Button2" + Me.Button2.Size = New System.Drawing.Size(114, 23) + Me.Button2.TabIndex = 3 + Me.Button2.Text = "Assembly Tiers 2" + Me.Button2.UseVisualStyleBackColor = True + ' + 'Form1 + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(468, 191) + Me.Controls.Add(Me.Button2) + Me.Controls.Add(Me.Label2) + Me.Controls.Add(Me.Button1) + Me.Controls.Add(Me.Label1) + Me.Name = "Form1" + Me.Text = "CATIA .NET TEST" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + + Friend WithEvents Label1 As Label + Friend WithEvents Button1 As Button + Friend WithEvents Label2 As Label + Friend WithEvents Button2 As Button +End Class diff --git a/CatiaNetTest/Form1.resx b/CatiaNetTest/Form1.resx new file mode 100644 index 0000000000000000000000000000000000000000..1af7de150c99c12dd67a509fe57c10d63e4eeb04 --- /dev/null +++ b/CatiaNetTest/Form1.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/CatiaNetTest/Form1.vb b/CatiaNetTest/Form1.vb new file mode 100644 index 0000000000000000000000000000000000000000..0044a973474a34eee0c5203b9e9f74fbd0107014 --- /dev/null +++ b/CatiaNetTest/Form1.vb @@ -0,0 +1,42 @@ +Imports INFITF +Imports MECMOD +Imports NavigatorTypeLib +Imports ProductStructureTypeLib +Imports SPATypeLib + + + + +Public Class Form1 + + Dim myCATIA As INFITF.Application + + Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click + + Try + myCATIA = GetObject(, "CATIA.Application") + Catch ex As Exception + myCATIA = CreateObject("CATIA.Application") + End Try + + myCATIA.Visible = True + myCATIA.DisplayFileAlerts = True + + End Sub + + Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click + + End Sub + + Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click + + Dim myAssemblyTiers As AssemblyTiers2 = New AssemblyTiers2() + + Try + myAssemblyTiers.CatMain(myCATIA) + Catch ex As Exception + + End Try + + End Sub +End Class diff --git a/CatiaNetTest/My Project/Application.Designer.vb b/CatiaNetTest/My Project/Application.Designer.vb new file mode 100644 index 0000000000000000000000000000000000000000..5be949ebd2b65c32df2ca9f6543313dc37d6365d --- /dev/null +++ b/CatiaNetTest/My Project/Application.Designer.vb @@ -0,0 +1,38 @@ +'------------------------------------------------------------------------------ +' <auto-generated> +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' </auto-generated> +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + 'NOTE: This file is auto-generated; do not modify it directly. To make changes, + ' or if you encounter build errors in this file, go to the Project Designer + ' (go to Project Properties or double-click the My Project node in + ' Solution Explorer), and make changes on the Application tab. + ' + Partial Friend Class MyApplication + + <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ + Public Sub New() + MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows) + Me.IsSingleInstance = false + Me.EnableVisualStyles = true + Me.SaveMySettingsOnExit = true + Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses + End Sub + + <Global.System.Diagnostics.DebuggerStepThroughAttribute()> _ + Protected Overrides Sub OnCreateMainForm() + Me.MainForm = Global.CatiaNetTest.Form1 + End Sub + End Class +End Namespace diff --git a/CatiaNetTest/My Project/Application.myapp b/CatiaNetTest/My Project/Application.myapp new file mode 100644 index 0000000000000000000000000000000000000000..1243847fd9bc0b4b577c67066fc1e6d067b5bde4 --- /dev/null +++ b/CatiaNetTest/My Project/Application.myapp @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <MySubMain>true</MySubMain> + <MainForm>Form1</MainForm> + <SingleInstance>false</SingleInstance> + <ShutdownMode>0</ShutdownMode> + <EnableVisualStyles>true</EnableVisualStyles> + <AuthenticationMode>0</AuthenticationMode> + <ApplicationType>0</ApplicationType> + <SaveMySettingsOnExit>true</SaveMySettingsOnExit> +</MyApplicationData> diff --git a/CatiaNetTest/My Project/AssemblyInfo.vb b/CatiaNetTest/My Project/AssemblyInfo.vb new file mode 100644 index 0000000000000000000000000000000000000000..581ea37700dc9c3d4294d47a9e726fb8106d09ec --- /dev/null +++ b/CatiaNetTest/My Project/AssemblyInfo.vb @@ -0,0 +1,35 @@ +Imports System +Imports System.Reflection +Imports System.Runtime.InteropServices + +' General Information about an assembly is controlled through the following +' set of attributes. Change these attribute values to modify the information +' associated with an assembly. + +' Review the values of the assembly attributes + +<Assembly: AssemblyTitle("CatiaNetTest")> +<Assembly: AssemblyDescription("")> +<Assembly: AssemblyCompany("")> +<Assembly: AssemblyProduct("CatiaNetTest")> +<Assembly: AssemblyCopyright("Copyright © 2020")> +<Assembly: AssemblyTrademark("")> + +<Assembly: ComVisible(False)> + +'The following GUID is for the ID of the typelib if this project is exposed to COM +<Assembly: Guid("287b5ad0-cd38-4e1c-9b0e-5761c063aa7f")> + +' Version information for an assembly consists of the following four values: +' +' Major Version +' Minor Version +' Build Number +' Revision +' +' You can specify all the values or you can default the Build and Revision Numbers +' by using the '*' as shown below: +' <Assembly: AssemblyVersion("1.0.*")> + +<Assembly: AssemblyVersion("1.0.0.0")> +<Assembly: AssemblyFileVersion("1.0.0.0")> diff --git a/CatiaNetTest/My Project/Resources.Designer.vb b/CatiaNetTest/My Project/Resources.Designer.vb new file mode 100644 index 0000000000000000000000000000000000000000..3c9b7b853d7dc13467a00cbff36d317f04d0b36c --- /dev/null +++ b/CatiaNetTest/My Project/Resources.Designer.vb @@ -0,0 +1,63 @@ +'------------------------------------------------------------------------------ +' <auto-generated> +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' </auto-generated> +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + +Imports System + +Namespace My.Resources + + 'This class was auto-generated by the StronglyTypedResourceBuilder + 'class via a tool like ResGen or Visual Studio. + 'To add or remove a member, edit your .ResX file then rerun ResGen + 'with the /str option, or rebuild your VS project. + '''<summary> + ''' A strongly-typed resource class, for looking up localized strings, etc. + '''</summary> + <Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _ + Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ + Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ + Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _ + Friend Module Resources + + Private resourceMan As Global.System.Resources.ResourceManager + + Private resourceCulture As Global.System.Globalization.CultureInfo + + '''<summary> + ''' Returns the cached ResourceManager instance used by this class. + '''</summary> + <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ + Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager + Get + If Object.ReferenceEquals(resourceMan, Nothing) Then + Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("CatiaNetTest.Resources", GetType(Resources).Assembly) + resourceMan = temp + End If + Return resourceMan + End Get + End Property + + '''<summary> + ''' Overrides the current thread's CurrentUICulture property for all + ''' resource lookups using this strongly typed resource class. + '''</summary> + <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ + Friend Property Culture() As Global.System.Globalization.CultureInfo + Get + Return resourceCulture + End Get + Set + resourceCulture = value + End Set + End Property + End Module +End Namespace diff --git a/CatiaNetTest/My Project/Resources.resx b/CatiaNetTest/My Project/Resources.resx new file mode 100644 index 0000000000000000000000000000000000000000..1af7de150c99c12dd67a509fe57c10d63e4eeb04 --- /dev/null +++ b/CatiaNetTest/My Project/Resources.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/CatiaNetTest/My Project/Settings.Designer.vb b/CatiaNetTest/My Project/Settings.Designer.vb new file mode 100644 index 0000000000000000000000000000000000000000..4a0b11b9294a7723f9953d97d50c15dcaa6c43e6 --- /dev/null +++ b/CatiaNetTest/My Project/Settings.Designer.vb @@ -0,0 +1,73 @@ +'------------------------------------------------------------------------------ +' <auto-generated> +' This code was generated by a tool. +' Runtime Version:4.0.30319.42000 +' +' Changes to this file may cause incorrect behavior and will be lost if +' the code is regenerated. +' </auto-generated> +'------------------------------------------------------------------------------ + +Option Strict On +Option Explicit On + + +Namespace My + + <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ + Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _ + Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ + Partial Friend NotInheritable Class MySettings + Inherits Global.System.Configuration.ApplicationSettingsBase + + Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings) + +#Region "My.Settings Auto-Save Functionality" +#If _MyType = "WindowsForms" Then + Private Shared addedHandler As Boolean + + Private Shared addedHandlerLockObject As New Object + + <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ + Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs) + If My.Application.SaveMySettingsOnExit Then + My.Settings.Save() + End If + End Sub +#End If +#End Region + + Public Shared ReadOnly Property [Default]() As MySettings + Get + +#If _MyType = "WindowsForms" Then + If Not addedHandler Then + SyncLock addedHandlerLockObject + If Not addedHandler Then + AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings + addedHandler = True + End If + End SyncLock + End If +#End If + Return defaultInstance + End Get + End Property + End Class +End Namespace + +Namespace My + + <Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _ + Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _ + Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _ + Friend Module MySettingsProperty + + <Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _ + Friend ReadOnly Property Settings() As Global.CatiaNetTest.My.MySettings + Get + Return Global.CatiaNetTest.My.MySettings.Default + End Get + End Property + End Module +End Namespace diff --git a/CatiaNetTest/My Project/Settings.settings b/CatiaNetTest/My Project/Settings.settings new file mode 100644 index 0000000000000000000000000000000000000000..85b890b3c66b9beee248abaddd2ec71f8b1df2b2 --- /dev/null +++ b/CatiaNetTest/My Project/Settings.settings @@ -0,0 +1,7 @@ +<?xml version='1.0' encoding='utf-8'?> +<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true"> + <Profiles> + <Profile Name="(Default)" /> + </Profiles> + <Settings /> +</SettingsFile> diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.exe b/CatiaNetTest/bin/Debug/CatiaNetTest.exe new file mode 100644 index 0000000000000000000000000000000000000000..17ca939b8428779dff41353345567f1a7a7f0cef Binary files /dev/null and b/CatiaNetTest/bin/Debug/CatiaNetTest.exe differ diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.exe.config b/CatiaNetTest/bin/Debug/CatiaNetTest.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..2ae8254d305bb019047d91b8db81c8dca76b56c8 --- /dev/null +++ b/CatiaNetTest/bin/Debug/CatiaNetTest.exe.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.pdb b/CatiaNetTest/bin/Debug/CatiaNetTest.pdb new file mode 100644 index 0000000000000000000000000000000000000000..77b0a9f7c42b9bac117c895c2075c036ec680573 Binary files /dev/null and b/CatiaNetTest/bin/Debug/CatiaNetTest.pdb differ diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe b/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..681ab771eb267aad9397bb2eaf7889c5ac0e15e6 Binary files /dev/null and b/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe differ diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe.config b/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe.config new file mode 100644 index 0000000000000000000000000000000000000000..2ae8254d305bb019047d91b8db81c8dca76b56c8 --- /dev/null +++ b/CatiaNetTest/bin/Debug/CatiaNetTest.vshost.exe.config @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <startup> + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> + </startup> +</configuration> \ No newline at end of file diff --git a/CatiaNetTest/bin/Debug/CatiaNetTest.xml b/CatiaNetTest/bin/Debug/CatiaNetTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..335b88ba06f0821f0c00b3cce600b528736e9fa8 --- /dev/null +++ b/CatiaNetTest/bin/Debug/CatiaNetTest.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<doc> +<assembly> +<name> +CatiaNetTest +</name> +</assembly> +<members> +<member name="T:CatiaNetTest.My.Resources.Resources"> +<summary> + A strongly-typed resource class, for looking up localized strings, etc. +</summary> +</member> +<member name="P:CatiaNetTest.My.Resources.Resources.ResourceManager"> +<summary> + Returns the cached ResourceManager instance used by this class. +</summary> +</member> +<member name="P:CatiaNetTest.My.Resources.Resources.Culture"> +<summary> + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. +</summary> +</member> +</members> +</doc> diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.Form1.resources b/CatiaNetTest/obj/Debug/CatiaNetTest.Form1.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.Form1.resources differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.Resources.resources b/CatiaNetTest/obj/Debug/CatiaNetTest.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.Resources.resources differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.exe b/CatiaNetTest/obj/Debug/CatiaNetTest.exe new file mode 100644 index 0000000000000000000000000000000000000000..17ca939b8428779dff41353345567f1a7a7f0cef Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.exe differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.pdb b/CatiaNetTest/obj/Debug/CatiaNetTest.pdb new file mode 100644 index 0000000000000000000000000000000000000000..77b0a9f7c42b9bac117c895c2075c036ec680573 Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.pdb differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.FileListAbsolute.txt b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.FileListAbsolute.txt new file mode 100644 index 0000000000000000000000000000000000000000..792e14986bf4a190db35ca7ba63648f356990e19 --- /dev/null +++ b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.FileListAbsolute.txt @@ -0,0 +1,99 @@ +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\bin\Debug\CatiaNetTest.exe.config +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\bin\Debug\CatiaNetTest.exe +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\bin\Debug\CatiaNetTest.pdb +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\bin\Debug\CatiaNetTest.xml +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.vbprojResolveAssemblyReference.cache +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.AECRTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.AnnotationTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.BehaviorTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CAT3DXml.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATArrangementTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATAssemblyTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATCompositesMat.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATDataExch.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATEdbTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATFunctSystem.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATHumanPackaging.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATIA_APP_ITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATIdeSettings.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATImm.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATInstantCollabItf.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATMat.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATMultiCAD.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATOBM.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATPspPlantShipTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATRdg.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATRma.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATRpmReporterTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATRsc.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATRsc2.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATSchematicTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATSdeSetting.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATSfmTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATSmarTeamInteg.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATSmInterfacesTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATStiWIPBridgeSurrogateCOMExeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATStk.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATStrSettingsTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATTooling.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CATV4IInteropTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.ComponentsCatalogsTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBASY.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBBIW.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBD5I.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBDevice.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBDeviceActivity.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBDpmItf.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBFastener.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBIgpResourceProgram.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBIgpTagPath.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBIgripSim.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBIPD.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBManufacturingLayoutItf.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBMHIItf.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBPert.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBReporting.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBRobot.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBSimAct.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBSimIO.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBSimulation.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DNBState.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DPMSettings.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.DRAFTINGITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.ElecSchematicTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.ElectricalTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.FittingTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.GenKwe.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.HybridShapeTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.INFITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.KinTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.KnowledgewareTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.LAYOUT2DITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.MANUFACTURING.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.MECMOD.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.mxcatiav5integrationTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.NavigatorTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.OSMInterfacesTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.PARTITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.PCBITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.PPR.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.PRISMATICMACHINING.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.PROCESSITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.ProductStructureTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SAMITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SHEITF.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SIM.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SimulationTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SMTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SPATypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.StrTypeLib.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SURFACEMACHINING.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.SWKHumanModelingItf.dll +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.vbproj.ResolveComReference.cache +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.Form1.resources +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.Resources.resources +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.vbproj.GenerateResource.Cache +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.exe +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.xml +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\CatiaNetTest.pdb +D:\03_Dissertation\20_Tools\CATIA_NET\CATIA_NET_Test\CatiaNetTest\CatiaNetTest\obj\Debug\Interop.CD5Integ.dll diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.GenerateResource.Cache b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..e9d8969b4f6115ad4c012a93286fbbcdda0efb19 Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.GenerateResource.Cache differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.ResolveComReference.cache b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.ResolveComReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..967df72cd65bd4470d1b22cdfb613eecb178a7da Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.vbproj.ResolveComReference.cache differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.vbprojResolveAssemblyReference.cache b/CatiaNetTest/obj/Debug/CatiaNetTest.vbprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..09661b8bfb09e523439c4652bab52febd3157b6b Binary files /dev/null and b/CatiaNetTest/obj/Debug/CatiaNetTest.vbprojResolveAssemblyReference.cache differ diff --git a/CatiaNetTest/obj/Debug/CatiaNetTest.xml b/CatiaNetTest/obj/Debug/CatiaNetTest.xml new file mode 100644 index 0000000000000000000000000000000000000000..335b88ba06f0821f0c00b3cce600b528736e9fa8 --- /dev/null +++ b/CatiaNetTest/obj/Debug/CatiaNetTest.xml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<doc> +<assembly> +<name> +CatiaNetTest +</name> +</assembly> +<members> +<member name="T:CatiaNetTest.My.Resources.Resources"> +<summary> + A strongly-typed resource class, for looking up localized strings, etc. +</summary> +</member> +<member name="P:CatiaNetTest.My.Resources.Resources.ResourceManager"> +<summary> + Returns the cached ResourceManager instance used by this class. +</summary> +</member> +<member name="P:CatiaNetTest.My.Resources.Resources.Culture"> +<summary> + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. +</summary> +</member> +</members> +</doc> diff --git a/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000000000000000000000000000000000000..766eddbc32003fee7eb3f40f30bbdb2a5fe285a6 Binary files /dev/null and b/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..3b179d2bc23e1585de0574356f7be4608ce14b90 Binary files /dev/null and b/CatiaNetTest/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/CatiaNetTest/obj/Debug/Interop.AECRTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.AECRTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6781c63d2272852a9f245d17f2af2e147596f993 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.AECRTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.AnnotationTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.AnnotationTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6f66d399bafcdfe4e5cd38106edd372952220397 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.AnnotationTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.BehaviorTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.BehaviorTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..53a533b7f085fbb9fc0fef1f3a575f9157b1c331 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.BehaviorTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CAT3DXml.dll b/CatiaNetTest/obj/Debug/Interop.CAT3DXml.dll new file mode 100644 index 0000000000000000000000000000000000000000..16d4ff535f94836a6d7d87e7d7c6119610c7b554 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CAT3DXml.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATArrangementTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATArrangementTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..c2dbfe57192cdde2cd106c06ce78c4539b3e01fa Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATArrangementTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATAssemblyTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATAssemblyTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..e82e49dfb1bc94f0ea2e4b6e630093d7b760fd1c Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATAssemblyTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATCompositesMat.dll b/CatiaNetTest/obj/Debug/Interop.CATCompositesMat.dll new file mode 100644 index 0000000000000000000000000000000000000000..edd1ba15ffd8da72127cdcc914272818f7e49bf4 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATCompositesMat.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATDataExch.dll b/CatiaNetTest/obj/Debug/Interop.CATDataExch.dll new file mode 100644 index 0000000000000000000000000000000000000000..f05941adfb753d6f60eeae87ca0abec49f1336d3 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATDataExch.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATEdbTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATEdbTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..70df1e8df59d8f5687e0182efa2f31f8703562ab Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATEdbTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATFunctSystem.dll b/CatiaNetTest/obj/Debug/Interop.CATFunctSystem.dll new file mode 100644 index 0000000000000000000000000000000000000000..ecc46566715afc0f0107215762a8bdf24afcf280 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATFunctSystem.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATHumanPackaging.dll b/CatiaNetTest/obj/Debug/Interop.CATHumanPackaging.dll new file mode 100644 index 0000000000000000000000000000000000000000..2c4dca5a973a174369eced5db910af64a04ae803 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATHumanPackaging.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATIA_APP_ITF.dll b/CatiaNetTest/obj/Debug/Interop.CATIA_APP_ITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..97aec8f6d5f2c749e40ab1e95582b05514bf1732 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATIA_APP_ITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATIdeSettings.dll b/CatiaNetTest/obj/Debug/Interop.CATIdeSettings.dll new file mode 100644 index 0000000000000000000000000000000000000000..e1cedab6ec7115ef6d97712600789b61447a44f9 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATIdeSettings.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATImm.dll b/CatiaNetTest/obj/Debug/Interop.CATImm.dll new file mode 100644 index 0000000000000000000000000000000000000000..d0d20084696ce9d7f8a5e071458482a16b2b8027 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATImm.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATInstantCollabItf.dll b/CatiaNetTest/obj/Debug/Interop.CATInstantCollabItf.dll new file mode 100644 index 0000000000000000000000000000000000000000..a5a0b0c91b61ce12c50792a525503870b20148c8 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATInstantCollabItf.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATMat.dll b/CatiaNetTest/obj/Debug/Interop.CATMat.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc55c2edc47015c7a6515d9761a9d9774290d35a Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATMat.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATMultiCAD.dll b/CatiaNetTest/obj/Debug/Interop.CATMultiCAD.dll new file mode 100644 index 0000000000000000000000000000000000000000..efdcf50b880fe67b6625f7779bbce07c351c210c Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATMultiCAD.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATOBM.dll b/CatiaNetTest/obj/Debug/Interop.CATOBM.dll new file mode 100644 index 0000000000000000000000000000000000000000..c42fc8b98013ca6c3d7eb48193f31a867e7f447b Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATOBM.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATPspPlantShipTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATPspPlantShipTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..df1b174ac335115825fbd1db79a87f21993379c3 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATPspPlantShipTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATRdg.dll b/CatiaNetTest/obj/Debug/Interop.CATRdg.dll new file mode 100644 index 0000000000000000000000000000000000000000..6f9d6bea3b84a0031a2b9eb45dd596dbf1ee175d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATRdg.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATRma.dll b/CatiaNetTest/obj/Debug/Interop.CATRma.dll new file mode 100644 index 0000000000000000000000000000000000000000..9130cb182af8ef653accbd2967f9eea88a98899d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATRma.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATRpmReporterTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATRpmReporterTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..35fdd73aa60036b86b6dadada39a50baedccf33a Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATRpmReporterTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATRsc.dll b/CatiaNetTest/obj/Debug/Interop.CATRsc.dll new file mode 100644 index 0000000000000000000000000000000000000000..d548a70ba2b1de0234b0f3f95f399055da1d579d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATRsc.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATRsc2.dll b/CatiaNetTest/obj/Debug/Interop.CATRsc2.dll new file mode 100644 index 0000000000000000000000000000000000000000..6a9d3597788ead77cdde61f5f3f173c17ff871cb Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATRsc2.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATSchematicTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATSchematicTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..9a2be699f9f33432fde890dcc5348e262105b691 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATSchematicTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATSdeSetting.dll b/CatiaNetTest/obj/Debug/Interop.CATSdeSetting.dll new file mode 100644 index 0000000000000000000000000000000000000000..e28a6daaf08e50df38d97ecf45fb9b30e0f70b30 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATSdeSetting.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATSfmTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATSfmTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..67f22084e58d08e29cbd98e81df4c6940685e3fc Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATSfmTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATSmInterfacesTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATSmInterfacesTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..ab295c0515a330c9528412ba698cafe17f4a9b33 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATSmInterfacesTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATSmarTeamInteg.dll b/CatiaNetTest/obj/Debug/Interop.CATSmarTeamInteg.dll new file mode 100644 index 0000000000000000000000000000000000000000..8f4228f0550bf1bafab78e3a4e365fce44767d1b Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATSmarTeamInteg.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATStiWIPBridgeSurrogateCOMExeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATStiWIPBridgeSurrogateCOMExeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6136ff9983ca96ebf66fd54d1d0f23135e200976 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATStiWIPBridgeSurrogateCOMExeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATStk.dll b/CatiaNetTest/obj/Debug/Interop.CATStk.dll new file mode 100644 index 0000000000000000000000000000000000000000..598ed099992e06cf9bcbfbaa1f7b86effd98250b Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATStk.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATStrSettingsTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATStrSettingsTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..99e4b96872c062b8d3a05e49f7f4d9b815e6ff24 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATStrSettingsTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATTooling.dll b/CatiaNetTest/obj/Debug/Interop.CATTooling.dll new file mode 100644 index 0000000000000000000000000000000000000000..72ce0adbc4a086cad6741d00a6a7425b051321eb Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATTooling.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CATV4IInteropTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.CATV4IInteropTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6eafafae472d40a1c840e6ecbe2081563ac3a793 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CATV4IInteropTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.CD5Integ.dll b/CatiaNetTest/obj/Debug/Interop.CD5Integ.dll new file mode 100644 index 0000000000000000000000000000000000000000..c982c2804049a474d2d86f0a51df996d4e273ce1 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.CD5Integ.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.ComponentsCatalogsTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.ComponentsCatalogsTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6ad9ca95cc1790d30655f4620d6dd80370ebd02a Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.ComponentsCatalogsTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBASY.dll b/CatiaNetTest/obj/Debug/Interop.DNBASY.dll new file mode 100644 index 0000000000000000000000000000000000000000..1943488f10bf019123b02b5641198fcb3a3a517f Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBASY.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBBIW.dll b/CatiaNetTest/obj/Debug/Interop.DNBBIW.dll new file mode 100644 index 0000000000000000000000000000000000000000..12f7457aec9f4456ca97d2e6378703f2e67e75ae Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBBIW.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBD5I.dll b/CatiaNetTest/obj/Debug/Interop.DNBD5I.dll new file mode 100644 index 0000000000000000000000000000000000000000..44bef9d7133b880d97d4149aeb51040389eafacf Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBD5I.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBDevice.dll b/CatiaNetTest/obj/Debug/Interop.DNBDevice.dll new file mode 100644 index 0000000000000000000000000000000000000000..511867a872b403ce5ad17803864fd2f163ec1893 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBDevice.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBDeviceActivity.dll b/CatiaNetTest/obj/Debug/Interop.DNBDeviceActivity.dll new file mode 100644 index 0000000000000000000000000000000000000000..997dad80c883decb48e1039c24b7e5ea6455b5be Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBDeviceActivity.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBDpmItf.dll b/CatiaNetTest/obj/Debug/Interop.DNBDpmItf.dll new file mode 100644 index 0000000000000000000000000000000000000000..d5201183dc7e75b31ede7ac269b5810dac7fee22 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBDpmItf.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBFastener.dll b/CatiaNetTest/obj/Debug/Interop.DNBFastener.dll new file mode 100644 index 0000000000000000000000000000000000000000..f3a9bb9a3fc18cb06ba8e998f89f7b0c566a6a24 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBFastener.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBIPD.dll b/CatiaNetTest/obj/Debug/Interop.DNBIPD.dll new file mode 100644 index 0000000000000000000000000000000000000000..5b168f9a1f05249bcedf6e273b81ef39133928a2 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBIPD.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBIgpResourceProgram.dll b/CatiaNetTest/obj/Debug/Interop.DNBIgpResourceProgram.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c4f44181b7d16c068aa0777bc423cb422b3ad70 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBIgpResourceProgram.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBIgpTagPath.dll b/CatiaNetTest/obj/Debug/Interop.DNBIgpTagPath.dll new file mode 100644 index 0000000000000000000000000000000000000000..2dcaa98582df0c38a8c1d99a1d8ed331c04d8e3d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBIgpTagPath.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBIgripSim.dll b/CatiaNetTest/obj/Debug/Interop.DNBIgripSim.dll new file mode 100644 index 0000000000000000000000000000000000000000..6c73c084d41b17fca2cdf934626043b810f5a1fd Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBIgripSim.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBMHIItf.dll b/CatiaNetTest/obj/Debug/Interop.DNBMHIItf.dll new file mode 100644 index 0000000000000000000000000000000000000000..782dbf01b4d871a3726a65511fb6134fff08b8d2 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBMHIItf.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBManufacturingLayoutItf.dll b/CatiaNetTest/obj/Debug/Interop.DNBManufacturingLayoutItf.dll new file mode 100644 index 0000000000000000000000000000000000000000..c02d9b51d87f967166a71ade01986350c673e262 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBManufacturingLayoutItf.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBPert.dll b/CatiaNetTest/obj/Debug/Interop.DNBPert.dll new file mode 100644 index 0000000000000000000000000000000000000000..8e908ff0530ec91ef0d6332f5fd93df32c83fc64 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBPert.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBReporting.dll b/CatiaNetTest/obj/Debug/Interop.DNBReporting.dll new file mode 100644 index 0000000000000000000000000000000000000000..32300352686ac99bb4954fce6de9b628f61ceb25 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBReporting.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBRobot.dll b/CatiaNetTest/obj/Debug/Interop.DNBRobot.dll new file mode 100644 index 0000000000000000000000000000000000000000..3f97987b77864b270a8e6e9433656e21bb141381 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBRobot.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBSimAct.dll b/CatiaNetTest/obj/Debug/Interop.DNBSimAct.dll new file mode 100644 index 0000000000000000000000000000000000000000..7c0d57b7c85ee8076c43898537981f15d51b8aa9 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBSimAct.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBSimIO.dll b/CatiaNetTest/obj/Debug/Interop.DNBSimIO.dll new file mode 100644 index 0000000000000000000000000000000000000000..e7547d363956ac2945580f6b95dae3a44f4fb647 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBSimIO.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBSimulation.dll b/CatiaNetTest/obj/Debug/Interop.DNBSimulation.dll new file mode 100644 index 0000000000000000000000000000000000000000..1b82f859b9ec61758b6cbbb4b1bf3041aaf92ec9 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBSimulation.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DNBState.dll b/CatiaNetTest/obj/Debug/Interop.DNBState.dll new file mode 100644 index 0000000000000000000000000000000000000000..d30e36711e4e6d99eb46b0d70ee53af2c8a2157d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DNBState.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DPMSettings.dll b/CatiaNetTest/obj/Debug/Interop.DPMSettings.dll new file mode 100644 index 0000000000000000000000000000000000000000..b746d3608283f178bd0d3ec3711ebc0abdc85f99 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DPMSettings.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.DRAFTINGITF.dll b/CatiaNetTest/obj/Debug/Interop.DRAFTINGITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..c286e475da5bb16006c48542fc28c454f4356c34 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.DRAFTINGITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.ElecSchematicTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.ElecSchematicTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..e54f42bdca09cc8408d8a7fea7916bc9a1216862 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.ElecSchematicTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.ElectricalTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.ElectricalTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..4919be1654b675a287a70809270d3b4489c3b910 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.ElectricalTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.FittingTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.FittingTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..6462dfb13c6e3467b3f921813c55a7e9e4c4c1af Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.FittingTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.GenKwe.dll b/CatiaNetTest/obj/Debug/Interop.GenKwe.dll new file mode 100644 index 0000000000000000000000000000000000000000..8a21bc6ebcc8259e2a24cbd64abb410315243830 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.GenKwe.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.HybridShapeTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.HybridShapeTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1291c64339e3357309e7645afd7443549eeaa49 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.HybridShapeTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.INFITF.dll b/CatiaNetTest/obj/Debug/Interop.INFITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..a62d38d6d080c51a34faed74ae082868ca4ba1b2 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.INFITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.KinTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.KinTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..cbdada0a98a591989c628da865f0798b08d1794b Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.KinTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.KnowledgewareTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.KnowledgewareTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..31d5f11fd3a6f35157754ce34df16f1b575df741 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.KnowledgewareTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.LAYOUT2DITF.dll b/CatiaNetTest/obj/Debug/Interop.LAYOUT2DITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..a0d6c77908faca5c1df9f5174c77012123626432 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.LAYOUT2DITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.MANUFACTURING.dll b/CatiaNetTest/obj/Debug/Interop.MANUFACTURING.dll new file mode 100644 index 0000000000000000000000000000000000000000..7ecd17d012cc4432e318458f2cae5493a29a35bf Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.MANUFACTURING.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.MECMOD.dll b/CatiaNetTest/obj/Debug/Interop.MECMOD.dll new file mode 100644 index 0000000000000000000000000000000000000000..b285027f3b835955def2fc7687e554e407742a43 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.MECMOD.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.NavigatorTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.NavigatorTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..7e5c8abf756b1624abc63b8f1e5011b7d1301826 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.NavigatorTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.OSMInterfacesTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.OSMInterfacesTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..ccb5b500997ddb93a6d0a09d5537cf496ccabcb1 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.OSMInterfacesTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.PARTITF.dll b/CatiaNetTest/obj/Debug/Interop.PARTITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..5e695ffa642abc82baf579005b73d3b623919fb2 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.PARTITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.PCBITF.dll b/CatiaNetTest/obj/Debug/Interop.PCBITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..28c2cc1ca25106af2621e204a0edf5c30726a3d0 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.PCBITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.PPR.dll b/CatiaNetTest/obj/Debug/Interop.PPR.dll new file mode 100644 index 0000000000000000000000000000000000000000..8c456ead4bcac1d5518b3d38dc904154456d71ed Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.PPR.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.PRISMATICMACHINING.dll b/CatiaNetTest/obj/Debug/Interop.PRISMATICMACHINING.dll new file mode 100644 index 0000000000000000000000000000000000000000..938990b314c7e04407e27ae299fffc2d36eae3ff Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.PRISMATICMACHINING.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.PROCESSITF.dll b/CatiaNetTest/obj/Debug/Interop.PROCESSITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..cc9efcdaf6cd67bfff14576a9ab3c8f5dd0c5628 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.PROCESSITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.ProductStructureTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.ProductStructureTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..a6404c9ebd65f8ddeff5d001ba0b586dff681e63 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.ProductStructureTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SAMITF.dll b/CatiaNetTest/obj/Debug/Interop.SAMITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b1aecd6d67ddd411afed78d4ab0d115a05d0815 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SAMITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SHEITF.dll b/CatiaNetTest/obj/Debug/Interop.SHEITF.dll new file mode 100644 index 0000000000000000000000000000000000000000..bb40ceaa90607dbc5765fa17ed25945bca6fa9df Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SHEITF.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SIM.dll b/CatiaNetTest/obj/Debug/Interop.SIM.dll new file mode 100644 index 0000000000000000000000000000000000000000..f4d7188163c6fd62b4a55ec290699b62ae60cbd9 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SIM.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SMTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.SMTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..c9e24128da63f74a82afc1e9357e4a1d24576aaf Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SMTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SPATypeLib.dll b/CatiaNetTest/obj/Debug/Interop.SPATypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..34230a0a91d5f2433cf38662d96736565020bc8d Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SPATypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SURFACEMACHINING.dll b/CatiaNetTest/obj/Debug/Interop.SURFACEMACHINING.dll new file mode 100644 index 0000000000000000000000000000000000000000..f90582d7a1f8e9146f36cfd986955ead7227d6f2 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SURFACEMACHINING.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SWKHumanModelingItf.dll b/CatiaNetTest/obj/Debug/Interop.SWKHumanModelingItf.dll new file mode 100644 index 0000000000000000000000000000000000000000..3335baf5a0f143418ea2beae9560de1548c1dde0 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SWKHumanModelingItf.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.SimulationTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.SimulationTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..a121668cd68e896dbc647f92adce3636a3cbf80c Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.SimulationTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.StrTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.StrTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..d1f89638f52734bcb57ab2d4f28cd7eddb06bec7 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.StrTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/Interop.mxcatiav5integrationTypeLib.dll b/CatiaNetTest/obj/Debug/Interop.mxcatiav5integrationTypeLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..8e155192c5477d923b50ba7985e6e61f4bb1a344 Binary files /dev/null and b/CatiaNetTest/obj/Debug/Interop.mxcatiav5integrationTypeLib.dll differ diff --git a/CatiaNetTest/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll b/CatiaNetTest/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll new file mode 100644 index 0000000000000000000000000000000000000000..87f7b6ceb39c79136a4d882e6e6b08c5f592bf17 Binary files /dev/null and b/CatiaNetTest/obj/Debug/TempPE/My Project.Resources.Designer.vb.dll differ