Autor
|
Thema: Übergabe an Funktion macht Probleme (273 mal gelesen)
|
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Feb. 2009 15:07 <-- editieren / zitieren --> Unities abgeben:
Hi, ich habe hier ein CATScript welches eine Function beinhaltet die Daten ausliest. Die Auswahl wird vorweg per Selektion getroffen. CATMain() Dim userSel Dim i Dim manuSetup Set userSel = CATIA.ActiveDocument.Selection For i = 1 To userSel.Count If userSel.Item(i).Type = "ManufacturingSetup" Then Set manuSetup = userSel.Item(i).Value Daten_auslesen ("A", manuSetup) End If Next End Sub
Function Daten_auslesen (Parameter As String, Aufspannung as ManufacturingSetup) As String ... End Function Rufe ich die Function nur mit Daten_auslesen ("A") auf (vorrausgesetzt die Function wurde noch verändert in: Daten_auslesen (Parameter As String) As String dann geht der Aufruf. Sobald ich aber eine Aufspannung mit rannehmen will dann streikt die Kiste. Eine genaue Fehlerbeschreiung kann ich nicht liefern denn er meckert dann auch gleich an dass er die CATMain() nicht finden kann und das ist wieder der Fehler der so nicht ist. Vielleicht hat von Euch einer ne Idee. Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 11. Feb. 2009 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Hallo, du machst einen entscheidenden Fehler. Du übergibst nicht das Item ManufacturingSetup sondern einen Wert vom Typ String oder Integer. Daher stimmt die Formatierung nicht. Würdest du nur Set manuSetup = userSel.Item(i) über geben, dann sollte es je nach weiterverarbeitung klappen. Außerdem würde ich, um sicherzugehen und Speicherplatz zu sparen (wenn möglich) niemals ein Object ohne Vorgabe deklarieren, es sei denn es könnte sein, dass verschiedene Typen verarbeitet werden müssen. Daher würde ich an deiner Stelle "Dim manuSetup as ManufacturingSetup" schreiben, dann würde der Fehler vorher auffallen. HTH ------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 11. Feb. 2009 15:50 <-- editieren / zitieren --> Unities abgeben:
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 11. Feb. 2009 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 11. Feb. 2009 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für Tiberius
Übergib mal die Aufspannung As Variant und dann As Object (Ich vermute es liegt daran, dass ein Objekt vom Typ Variant übergeben wird, aber ein anderer Typ erwartet wird oder an der API). Kann CATScript überhaupt mit Funktionen? Wenn Variant uach nicht geht dann mal ByRef probieren. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tiberius Mitglied
Beiträge: 414 Registriert: 19.02.2002
|
erstellt am: 12. Feb. 2009 14:39 <-- editieren / zitieren --> Unities abgeben:
Hi, bin nicht weitergekommen mit den Hinweisen. Vielleicht hab ich auch was übersehen. Inzwischen hab ich hier und da noch etwas geändert. Ich hab jetzt mal nen direkten Schnipsel aus dem Skript beigefügt: CATMain() . . . Dim MafaSetup as ManufacturingSetup Dim MafaProg as ManufacturingProgram For i = 1 To userSel.Count - 1
If userSel.Item(i).Type = "ManufacturingSetup" Then Set MafaSetup = userSel.Item(i) For ii = i + 1 to userSel.Count If userSel.Item(ii).Type = "ManufacturingProgram" Then Set MafaProg = userSel.Item(ii) msgbox MafaSetup.type & " Typ" msgbox MafaProg.type & " Typ" Daten_auslesen ("A", MafaSetup) End If Next End If Next . . . End Sub Function Daten_auslesen (Parameter As String, MafaSetup As ManufacturingSetup) As String msgbox Parameter & " ist uebergeben worden" End Function Ich steige in mein Skript mit 3 selektierten Elementen ein (1 ManufacturingSetup und 2 ManufacturingProgram) diese habe ich zuvor im Skript schon ermittelt und ausgegeben zur Kontrolle. Dort hat er alles richtig angezeigt bei den Abfragen.
Gruß Tiberius Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |