A||N||11||Manrok||CAAKiiMechanismCreation.CATScript||||1|| Z||000000||Manrok||01-20-2009||12:36 PM||angrym@gmx.net||Hallo an alle

habe gestern mit einem Kinematik Makro unter VBA begonnen. Dank dieses Forums habe ich schon einen Mechanismus erstellt.

Mein Leitfaden hierzu ist eingentlich das oben genannte Script aus der Catia Hilfe.

Das Problem liegt aber selbst in dem Script in der Zeile:

Dim oNewJoint as Joint
    Set oNewJoint = oNewMechanism.AddJoint("CATKinCylindricalJoint",aVar1)

VBA markiert immer ADDJoint und gibt an:

Compile Error

Function or Interface maked as restricted, or the Function uses an Automation Type not supported in Visual Basic.

Hab schon im Forum gesucht und konnte aber keine Lösung finden.

Gibt es bei R17 einen neuen Befehl für ADDJoint?

THX||85.8.83.123||reg||1|| Z||000001||denyo_1||01-20-2009||12:49 PM||daniel.frauenrath@gmx.com||Hallo Manrok,

deklariere den oNewJoint mal als Object und nicht als Join. Visual Basic kann nicht alle internen Deklarationen abbilden und somit entstehen diese Fehler.

Vergleiche dazu:

Code:

Dim oSel as Selection
Auswahl = oSel.SelectElement2(...)

hier tritt der von dir beschriebene Fehler auf. Machst du es hingegen so

Code:

Dim oSel
Auswahl = oSel.SelectElement2(...)

tritt der Fehler nicht auf. Funktioniert es auch nicht mit Dim oNewJoint as Object, dann deklariere ohne Angabe eines Typs. Dann sucht sich Viausl Basic automatisch die passende Deklaration und verwendet diese.

Anmerkung:
Das nicht exakte deklarieren von Variablen und Objekten ist nicht IMMER sinnvoll, da es unter anderem zu mehr Ressourcenauslastung führen kann.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin||87.180.203.129||reg||1|| Z||000002||Manrok||01-20-2009||01:03 PM||angrym@gmx.net||Der Tip war gut gemeint, funktioniert auch bei der Selection, aber leider nicht bei ADDJoin^^
Ich weis auch nicht was da los ist. Ich habe es schon nur mit dem Skript versucht - leider ohne Erfolg.

Als CATScript funzt es aber leider nicht in VBA||85.8.83.123||reg||1|| Z||000003||denyo_1||01-20-2009||01:22 PM||daniel.frauenrath@gmx.com||Hallo,

werds mir daheim mal anschaun. Was macht er wenn du den neuen Join gar nicht deklarierst?

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

||87.180.203.129||reg||1|| Z||000004||HoBLila||01-20-2009||01:34 PM||lila@lilashome.de||Sorry, wenn ich das falsch verstanden habe, aber muss nicht oNewMechanism as Variant deklariert werden?

------------------
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||80.153.179.69||reg||1|| Z||000005||denyo_1||01-20-2009||01:39 PM||daniel.frauenrath@gmx.com||

Zitat:
Original erstellt von HoBLila:
Sorry, wenn ich das falsch verstanden habe, aber muss nicht oNewMechanism as Variant deklariert werden?


Stimmt, sorry ich war ein wenig verwirrt    und konnte es auch nicht testen. ABER wenigstens stimmen meine Beispiel. Da wird auch das Objekt als "Variant" deklariert, das den Fehler beim Aufrufen der Methode liefert (also oSel und nicht Auswahl)

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

||87.180.203.129||reg||1|| Z||000006||Manrok||01-20-2009||01:41 PM||angrym@gmx.net||@denyo_1 die Fehlermeldung ist genau die gleiche.

@HoBLila ich habe das Original-Catia Skript verwendet und das funzt nicht.
Auszug daraus:

Dim oNewMechanism As Mechanism
    Set oNewMechanism = cTheMechanisms.Add()

Hier erstellt er einen neuen Mechanismus wenn ich 'addjoint ausblende
falls ich das nicht tue gibts den Fehler||85.8.83.123||reg||1|| Z||000007||Manrok||01-20-2009||01:45 PM||angrym@gmx.net||@denyo_1 die Fehlermeldung ist genau die gleiche.

@HoBLila ich habe das Original-Catia Skript verwendet und das funzt nicht.
Auszug daraus:

Dim oNewMechanism As Mechanism
    Set oNewMechanism = cTheMechanisms.Add()

Hier erstellt er einen neuen Mechanismus wenn ich 'addjoint ausblende
falls ich das nicht tue gibts den Fehler||85.8.83.123||reg||1|| Z||000008||denyo_1||01-20-2009||01:52 PM||daniel.frauenrath@gmx.com||Hallo,

ja das Orginalscript ist ja auch kein CATVba-Projekt sondern ein CATScript. Da sind die Deklarationen ein bisschen anders. Wie gesagt ich werd´s heute Abend mal probieren und dann nochmal posten.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

||87.180.203.129||reg||1|| Z||000009||Manrok||01-20-2009||02:05 PM||angrym@gmx.net||also mit Variant tritt der Fehler nicht mehr auf. Vielen Dank.

Gibts da irgendwo einen Index was unter VBA wie deklariert werden muss?

Ich habe leider nur das Buch Makroprogrammierung und ich kann ja nicht einfach alle Deklarationen weglassen.||85.8.83.123||reg||1|| Z||000010||denyo_1||01-20-2009||03:59 PM||daniel.frauenrath@gmx.com||Hallo,

soweit ich weiß gibts sowas nicht. Deklarier es erst mal so wie es "richtig" wäre (z.B. Mechanismus als Machanism, Joint als Joint, usw.). Wenn´s bei der Ausführung dann Fehler geben sollte kannst du die Deklarationen ja ändern. Im Debugger-Modus siehst du ja welche Zeile den Fehler auslösst. Die Fehlermeldung bei Deklarationen die nicht in vba unterstützt werden ist dabei immer die selbe (siehe deinen ersten Beitrag).

Ansonsten kann ich immer nur das "Step by Step" Debugging (Button dafür findet sich auf der DEBUGGING Symbolleiste die standartmäßig ausgeblendet ist) zusammen mit der Überwachung (Watches) von Objekten empfehlen. Dabei sieht man als Entwickler genau wenn was falsch deklariert wurde (weil es Nothing, bzw. leer bleibt) und was sich in den Variabeln und Objekten zur Laufzeit befindet.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

||87.180.205.84||reg||1|| Z||000011||HoBLila||01-20-2009||05:16 PM||lila@lilashome.de||Es gibt da so ein paar Regeln, aber die habe ich auch grad nicht alle im Kopf. Jedenfalls wenn du eine Methode eines Objektes aufrufen möchtest, der du Variablen übergibst und dann ein Objekt zurück haben möchtest, dann muss das erste Objekt(welches die Methode aufruft) vom Typ Variant sein. Das soll die Fehlermeldung auch andeuten. Das CATScript benutzt keine CATIA-Schnittstelle sondern ist CATIA und hat dadurch dieses Schnittstellenproblem nicht.

------------------
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||80.153.179.69||reg||1||