Autor
|
Thema: ByRef argument type mismatch Fehler (812 mal gelesen)
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 17. Jan. 2019 12:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Ich versuche jetzt meinem Makro ein bischen saubern, und ich kriege jetzt mit ein Fehler... Kann mir jemand sagen, was habe ich Falsch gemacht? Der Fehlermeldung ist bei Linie: Code:
Extract_skins Prod_1, oHauptadapter
und sagt: "ByRef argument type mismatch" Meinem Code: Code: Sub CATMain() Dim oSel As Selection Set oSel = CATIA.ActiveDocument.Selection Dim oPart As Part Dim oProd_l As Product Dim oProd_2 As Product Dim oProd_3 As Product Dim oProd_4 As Product Dim oRPS_source As HybridBody, oRPS_target As HybridBody Dim oKol As New VBA.CollectionDim i As Integer, j As Integer, k As Integer i = 0 j = 0 k = 0 '---------------Hauptadapter Dim oHauptadapter As Part Dim sSel Set sSel = oSel Dim Filter(0) oSel.Clear sSel.Clear Filter(0) = "Part" oStatus = sSel.SelectElement2(Filter, "Wskaż Hauptadapter", False) Set oHauptadapter = sSel.Item(1).Value oSel.Clear sSel.Clear For i = 1 To CATIA.ActiveDocument.Product.Products.Count Set oProd_1 = CATIA.ActiveDocument.Product.Products.Item(i) If TypeName(oProd_1.ReferenceProduct.Parent) = "PartDocument" Then If InStr(1, oProd_1.PartNumber, "HAUPTADAPTER") = 0 Then Extract_skins Prod_1, oHauptadapter End If ElseIf TypeName(oProd_1.ReferenceProduct.Parent) = "ProductDocument" Then For j = 1 To CATIA.ActiveDocument.Product.Products.Item(i).Products.Count 'oProd_l.Products.Count Set oProd_2 = CATIA.ActiveDocument.Product.Products.Item(i).Products.Item(j) '.Value If TypeName(oProd_2.ReferenceProduct.Parent) = "PartDocument" Then Extract_skins Prod_2, oHauptadapter ElseIf TypeName(oProd_2.ReferenceProduct.Parent) = "ProductDocument" Then For k = 1 To CATIA.ActiveDocument.Product.Products.Item(i).Products.Item(j).Products.Count Set oProd_3 = CATIA.ActiveDocument.Product.Products.Item(i).Products.Item(j).Products.Item(k) '.Value If TypeName(oProd_3.ReferenceProduct.Parent) = "PartDocument" Then Extract_skins Prod_3, oHauptadapter ElseIf TypeName(oProd_3.ReferenceProduct.Parent) = "ProductDocument" Then For W = 1 To CATIA.ActiveDocument.Product.Products.Item(i).Products.Item(j).Products.Item(k).Products.Count Set oProd_4 = CATIA.ActiveDocument.Product.Products.Item(i).Products.Item(j).Products.Item(k).Products.Item(W) '.Value If TypeName(oProd_4.ReferenceProduct.Parent) = "PartDocument" Then Extract_skins Prod_4, oHauptadapter End If Next End If Next End If Next End If Next oHauptadapter.Update End Sub Sub Extract_skins(oProd As Product, oHauptadapter As Part) Dim oPart As Part Dim oSel As Selection Dim oKol As New VBA.Collection Set oSel = CATIA.ActiveDocument.Selection Dim oHB As HybridBody Set oPart = oProd.ReferenceProduct.Parent.Part oPart.InWorkObject = oPart.MainBody For Each Body In oPart.Bodies If (Body.Shapes.Count <> 0 And Body.InBooleanOperation = False) Then oSel.Add Body oKol.Add oPart.Name & "_" & Body.Name End If Next If oSel.Count <> 0 Then oSel.Copy oSel.Clear oSel.Add oHauptadapter oSel.PasteSpecial "CATPrtResultWithOutLink" oSel.VisProperties.SetShow catVisPropertyShowAttr For m = 1 To oKol.Count oSel.Item(m).Value.Name = oKol.Item(m) Next End If oSel.Clear Set oKol = New VBA.Collection oSel.Add oPart oSel.Search ("(((((FreeStyle.Surface + 'Part Design'.Surface) + 'Generative Shape Design'.Surface) + 'Functional Molded Part'.Surface) & Name=Part_geometry) + (((((((FreeStyle.Line + '2D Layout for 3D Design'.Line) + Sketcher.Line) + Drafting.Line) + 'Part Design'.Line) + 'Generative Shape Design'.Line) + 'Functional Molded Part'.Line) & Name=Material_Vector));sel") If oSel.Count <> 0 Then oSel.Copy oSel.Clear Set oHB = oHauptadapter.HybridBodies.Add oHB.Name = oPart.Name oSel.Add oHB oSel.PasteSpecial "CATPrtResultWithOutLink" oSel.VisProperties.SetShow catVisPropertyShowAttr For m = 1 To oSel.Count If oSel.Item(m).Value.Name = "Part_Geometry" Then oSel.Item(m).Value.Name = oPart.Name Next End If oSel.Clear For Each oHBody In oPart.HybridBodies If (oHBody.Name = "RPS_Elements") Then If (oHBody.HybridShapes.Count <> 0 Or oHBody.HybridBodies.Count <> 0) Then oSel.Add oHBody End If Next If oSel.Count <> 0 Then oSel.Copy oSel.Clear oSel.Add oHB oSel.PasteSpecial "CATPrtResultWithOutLink" oSel.VisProperties.SetShow catVisPropertyShowAttr End If Set oKol = New VBA.Collection oSel.Clear End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Jan. 2019 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für Sylas
|
Sylas Mitglied
Beiträge: 322 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 18. Jan. 2019 06:58 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von bgrittmann: ServusIn deinem Code ist nirgendwo [i]Prod_1 dimensioniert oder deklariert. Sollte das nicht oProd_1 sein? Gruß Bernd [/i]
Genau so, Bernd! Ich bin dummes Es ist immer Ein Buchstab-Fehler! Danke! Lucas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|