Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Wie ruft man ein CATScript oder VBScript aus VBA heraus auf?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Wie ruft man ein CATScript oder VBScript aus VBA heraus auf? (4497 mal gelesen)
pHidias
Mitglied



Sehen Sie sich das Profil von pHidias an!   Senden Sie eine Private Message an pHidias  Schreiben Sie einen Gästebucheintrag für pHidias

Beiträge: 46
Registriert: 21.09.2009

erstellt am: 09. Okt. 2009 15:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

moin

wie kann man mit vba eines der anderen beiden scripte aufrufen?

bzw wie kann man für catscript und vbsscript den visualbasic editor verwenden?
ich weiß, wo das in den optionen zu ändern ist, aber ich finde einfach nicht die .exe des editors... :/
(wie heißt die überhaupt?)

executescript funktioniert ja leider nicht...

------------------
---- Hier könnte Ihre Werbung stehen ---

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 09. Okt. 2009 15:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich

Hallo,

den kann man gar nicht verwenden. Du kannst einen externen VB Editor verwenden (der unterstützt dann die Farben und das Einrücken etc. z.B. Notepadd ++) oder den Quelltext des CATscript bzw. CATvba einfach in den Visal Basic Editor kopieren. Achtung vorallem bei CATvba solltest du dann deine Variablen und Objekte vollständig deklarieren. Erst wenn du sie wieder in das CATvba kopierst kommentierst du die Deklarationen (werden in vba nicht benötigt) aus.

Um aus einem catvba Script ein catscript bzw. eine vb-Library kannst du sehrwohl das "executeScript" hernehmen. Hierzu nur mal in der V5automation.chm nachschauen um den Syntax des Aufrufs zu erfahren.

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

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pHidias
Mitglied



Sehen Sie sich das Profil von pHidias an!   Senden Sie eine Private Message an pHidias  Schreiben Sie einen Gästebucheintrag für pHidias

Beiträge: 46
Registriert: 21.09.2009

erstellt am: 09. Okt. 2009 16:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ah danke. 

aber ich wollte ja aus VBA heraus ein catscript/vbscript aufrufen und habe das auch mit executescript versucht (so wie in der v5automation.chm). da bekomme ich aber diese fehlermeldung:

Zitat:
compile error:
Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic

ich muß nämlich die funktion ".GetCoordinates" nutzen, um die koordinaten von punkten in skizzen auszulesen. leider habe ich dazu kein äquivalent bisher in vba gefunden.
drum wollte ich ein kleines catscript schreiben und dieses per vba aufrufen.

------------------
---- Hier könnte Ihre Werbung stehen ---

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 09. Okt. 2009 17:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich

Hallo,

die kannst du mit vba genauso aufrufen wie mit einem CATscript. Wenn Funktionen gesperrt sind heißt das das du deine Deklarationen umdeklarieren musst. Z.B. wenn du ein SelectElement2 einsetzt in vba musst du die Selektion als Objekt deklarieren und nicht als Selection. Wenn du das Script mal postest dann schau ich mir das mal kurz an (kannst es mir auch per eMail schicken  )

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

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pHidias
Mitglied



Sehen Sie sich das Profil von pHidias an!   Senden Sie eine Private Message an pHidias  Schreiben Sie einen Gästebucheintrag für pHidias

Beiträge: 46
Registriert: 21.09.2009

erstellt am: 09. Okt. 2009 21:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

super, das angebot nehme ich doch glatt an 

komme aber erst am montag wieder an den code ran, also wünsch ich dir erstmal ein entspanntes wochenende 

------------------
---- Hier könnte Ihre Werbung stehen ---

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pHidias
Mitglied



Sehen Sie sich das Profil von pHidias an!   Senden Sie eine Private Message an pHidias  Schreiben Sie einen Gästebucheintrag für pHidias

Beiträge: 46
Registriert: 21.09.2009

erstellt am: 12. Okt. 2009 08:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

also hier ist einmal der code zum aufrufen des catscripts, welcher bei vba nicht funzt:

Code:
Dim strRoot As String
strRoot = "H:\DiplomA\CAD\LWinkel_FS\"

Dim params()
CATIA.SystemService.ExecuteScript "LWinkel_FS_test.CATPart", catScriptLibraryTypeDocument, "msgboxscript.CATScript", "CATMain()", params

'oder wahlweise:
Dim E
Dim SServ As SystemService
Set SServ = CATIA.SystemService
E = SServ.ExecuteScript(strRoot, catScriptLibraryTypeDirectory, "msgboxscript.CATScript", "CATMain")



und hier nochmal das, was ich eigentlich machen will, nämlich die koordinaten von punkten aus skizzen auslesen. (die skizzen befinden sich in geo.sets)
geschrieben ist das hier nun im catscript, aber wenn es in vba auch laufen würde, wäre das natürlich viel besser :)
in catscript funzt es auf jedenfall, während es so bei mir im vba nicht lief, sondern immer oben erwähnten fehler auswarf.

Code:
Function CATMain(FP_exp)


Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("FiberSIM Flat Patterns")

Set sketches1 = hybridBody1.HybridSketches

Set sketch1 = sketches1.Item(FP_exp)


part1.InWorkObject = sketch1

Dim factory2D1 As Factory2D
Set factory2D1 = sketch1.OpenEdition()

Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch1.GeometricElements

Dim point2D1 As Point2D
Set point2D1 = geometricElements1.Item("Punkt.6")

'point2D1.SetData -15, -50
Dim acor(1)
point2D1.GetCoordinates acor

sketch1.CloseEdition

part1.InWorkObject = hybridBody1

part1.Update


End Function


wenn du mir sagen kannst, wie ich das funktionierender weise in vba reinbekomme, wäre das suuuuuuuuupääääär!!!   


(achja: da gibts auch noch splines, deren länge ich gerne hätte  )

------------------
---- Hier könnte Ihre Werbung stehen ---

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 12. Okt. 2009 09:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich

Hallo  ,

so funktioniert es:

Code:

Function CATMain(FP_exp)


Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item("FiberSIM Flat Patterns")

Set sketches1 = hybridBody1.HybridSketches

Set sketch1 = sketches1.Item(FP_exp)


part1.InWorkObject = sketch1

Dim factory2D1 As Factory2D
Set factory2D1 = sketch1.OpenEdition()

Dim geometricElements1 As GeometricElements
Set geometricElements1 = sketch1.GeometricElements

Dim point2D1 As Object 'Point2D
Set point2D1 = geometricElements1.Item("Punkt.6")

'point2D1.SetData -15, -50
Dim acor(1)
point2D1.GetCoordinates acor

sketch1.CloseEdition

part1.InWorkObject = hybridBody1

part1.Update

End Function


VBA kann teilweise die Deklarationen ndie du in einem CATScript machst nicht interpretieren. Dann kommt die Fehlermeldung "Function or interface ...". Wenn du nun das entsprechende Objekt auch als Object deklarierst dann funktioniert die Funktion in VBA genauso. Diese Vorgehensweise nennt man early Binding. Der Nachteil hierbei ist das du die InteliSense Funktion (auch Autovervollständigung) nicht mehr nutzen kannst. Du kannst aber auch erst im late Binding (konvertionelle Art) programmieren und im Anschluss alle von einem Objekt abgeleiteten Deklarationen wieder zu Object´s umdeklarieren.

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

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pHidias
Mitglied



Sehen Sie sich das Profil von pHidias an!   Senden Sie eine Private Message an pHidias  Schreiben Sie einen Gästebucheintrag für pHidias

Beiträge: 46
Registriert: 21.09.2009

erstellt am: 12. Okt. 2009 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ah verstehe 
alles klar werde das dann mal ausprobieren
danke! 

------------------
---- Hier könnte Ihre Werbung stehen ---

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

davidhess
Mitglied


Sehen Sie sich das Profil von davidhess an!   Senden Sie eine Private Message an davidhess  Schreiben Sie einen Gästebucheintrag für davidhess

Beiträge: 8
Registriert: 22.03.2007

AMD Athlon(tm) 64 Processor
3500+
NVIDIA GeForce 6600<P>Windows XP<P>1GB RAM<P>ProE Wildfire 3.0

erstellt am: 08. Apr. 2010 14:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich

Hallo Daniel,
ich habe ein ähnliches Problem und komm einfach nicht weiter.

Ich habe mit Punkten eine Polyline erstellt und möchte die Koordinatenwerte in einer Datei ausgeben.

Leider kann ich auf die Werte nicht zugreifen, vermutlich weil die Punkte als PointOnCurve deklariert sind.

Hier mein Code, vielleicht hast du/ihr eine Idee!

Vielen Dank!

Sub PolyPktAusgabe()

Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument

Dim selection1
Set selection1 = partDocument1.Selection

selection1.Clear

Dim part1 As Part
Set part1 = partDocument1.Part

Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies

Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Item("Ebene_1")

Dim hybridBodies2 As HybridBodies
Set hybridBodies2 = hybridBody1.HybridBodies

Dim hybridBody2 As HybridBody
Set hybridBody2 = hybridBodies2.Item("Linien")

Dim hybridShapes1 As HybridShapes
Set hybridShapes1 = hybridBody2.HybridShapes

Dim hybridShapePolyline1 As Object
Set hybridShapePolyline1 = hybridShapes1.Item("Polyline.3")


'Ein Part muss offen sein, kein Product
'Alle Punkte in "Geometrisches Set.1" werden ausgelesen
'Nur Punkte muss es im Geo Set geben anstonsten lauft das Makro auf Fehler
'Fall es noch ander Features gibt muss man ein TypeName einbauen
'In c:\temp\output.csv werden die Coord geschrieben. Dies Datei kannst du unter Excel aufmachen
'Ich finde CSV besser, weil es einfacher ist und, weil es System unabhängig ist


ReDim acoord(2)

Set Datei = CATIA.FileSystem.CreateFile("c:\temp\output.csv", True)

Dim ostream As TextStream
Set ostream = Datei.OpenAsTextStream("ForAppending")

Dim i As Long
Dim P_X, P_Y, P_Z As Double
Dim oPolyLineElement As Object 'Objekt auf Punkt der Polylinie
Dim oRefPolyLineElement As Object 'Referenz auf Punkt der Polylinie
Dim oElementRadius As Length
Dim Koord(1 To 3) As Variant


Set oPolyLine = hybridShapePolyline1
'Danach Schleife aufbauen und Punktkoordinaten auslesen

ostream.Write ("P_X" & ";" & "P_Y" & ";" & "P_Z" & Chr(10))

For i = 1 To oPolyLine.NumberOfElements
   
    oPolyLine.GetElement i, oRefPolyLineElement, oElementRadius
    Set oPolyLineElement = part1.FindObjectByName(oRefPolyLineElement.DisplayName)
 
    P_X = oPolyLineElement.x.Value
    P_Y = oPolyLineElement.y.Value
    P_Z = oPolyLineElement.z.Value
    'MsgBox ("x=" & P_X & "y=" & P_Y & "z=" & P_Z)
    ostream.Write (P_X & ";" & P_Y & ";" & P_Z & Chr(10))
   
Next i


ostream.Close


End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DanielFr.
Moderator
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 09. Apr. 2010 09:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich


ReadPolyLineCoords_v1.0.rar

 
Hallo David,

schau dir mal das CATScript im Anhang an. Das Script kannst du nur in einem Part ausführen. Der Anwender MUSS eine Polyline selektieren. Aus dieser werden dann die Punkte ausgelesen. Es ist hierbei egal in welchen geometrischen Set sich die Punkte und die Polyline befinden 

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

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

davidhess
Mitglied


Sehen Sie sich das Profil von davidhess an!   Senden Sie eine Private Message an davidhess  Schreiben Sie einen Gästebucheintrag für davidhess

Beiträge: 8
Registriert: 22.03.2007

AMD Athlon(tm) 64 Processor
3500+
NVIDIA GeForce 6600<P>Windows XP<P>1GB RAM<P>ProE Wildfire 3.0

erstellt am: 21. Apr. 2010 14:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pHidias 10 Unities + Antwort hilfreich

Danke Daniel,

genauso habe ich mir das vorgestellt! 

glg
Dave

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz