Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Befehle in vb als strings variieren und ausführen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
KISTERS 3DViewStation: Unterstützung für 3D CAD Kollaboration mit Lieferanten, eine Pressemitteilung
Autor Thema:  Befehle in vb als strings variieren und ausführen (1338 mal gelesen)
weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 13. Sep. 2006 16:46    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

Hallo

Ich habe ein etwas ungewöhnliches Problem. Ich hätte gerne folgendes durchgeführt: einen Konstruktionsbefehl für eine boolsche operation erstellen und dann den Befehl ausführen.

command = "partDocument.Part..ShapeFactory.AddNew" & TypeName(boolP)

Da 'TypeName(boolP)' verschieden sein kann (Trim, Add...) möchte ich den Befehl mit dieser Methode flexibel halten. Natürlich wäre das ganze auch mit IF... für jede Variante möglich aber so wäre es doch etwas eleganter.
Meine Frage deshalb: gibts einen Befehl um den konstruierten string (command) dann auch auszuführen?

Grüsse, Daniel.

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

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



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

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 13. Sep. 2006 16: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 Nur für weissda 10 Unities + Antwort hilfreich

Nun je genauer Du Dein "ungewöhnliches" Problem beschreibst so bessere Antworten wirst Du erhalten. Im Augenblick solltest Du ein bisschen mehr erklären, weil so braucht man eine Wahrsagekugel (und die habe ich zur Zeit verliehen  )

Axel

------------------
Ich bin dabei am 19.9. und 20.9.06 beim
5. CAD.de Anwendertreffen

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 14. Sep. 2006 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

Ok, das war wohl etwas kurz, sorry ;-) Hier etwas ausführlicher:
Ich suche ein Objekt in meinem CATIA-Dokument mit einem bestimmten Namen:
Set boolP = prodDocument1.Part.FindObjectByName("Objekt")
Dann ermittle ich den Typen des Objektes:
type = TypeName(boolP)
Dann will ich ein neues Objekt vom gleichen Typen in meinem CATIA-Dokument erzeugen. Da ich aber offenbar BooleanShapes nicht einfach mit copy/paste erzeugen kann, muss ich dies explizit aufbauen, d.h.:
Set Operation = prodDocument1.Part.AddNewAdd([Körper])
Da dieser Befehl aber für 'Trim', 'Add' etc. unterschiedlich lautet, muss ich diesen anpassen:
Set Operation = prodDocument1.Part.AddNewAdd([Körper])
Set Operation = prodDocument1.Part.AddNewTrim([Körper])
...
Statt nun den typen von 'boolP' abzufragen und dann für jeden Fall eine IF-Routine zu schreiben, möchte ich den Befehl direkt aus dem Typen von 'boolP' kreieren:
"Set Operation = prodDocument1.Part.AddNew" & TypeName(boolP) & "([Körper])"
Nun ist dies ja aber erst der String. Wie kann ich diesen String nun als tatsächlichen Befehl verwenden, d.h. dass nachher das Programm den String als Befehl:
Set Operation = prodDocument1.Part.AddNewTrim([Körper])
erkennt?

Hoffe, ihr konntet mir folgen. Es ist in dem Sinn kein dringendes Problem, da's eigentlich nur Kosmetik ist - würd mich trotzdem interessieren, ob's dafür ne Lösung gibt ;-)

Greets, Daniel.

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

okl
Mitglied
Wirtsch-Ing (Maschbau)


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

Beiträge: 157
Registriert: 21.04.2006

2x3,6 GHz, 2 GB RAM, NVIDIA Quadro FX 1800, Delmia V5R16 SP1, Win XP Prof SP2, Office, VS 2005, VB 6, Inventor (Test), VBExpress .NET 2005
Adminrechte

erstellt am: 14. Sep. 2006 18:27    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 weissda 10 Unities + Antwort hilfreich

Hallo Daniel,

wäre schon eine schöne Sache, wenn man Befehle variabel halten könnte. Aber wozu - denkst Du - gibt es zB. IF-, SelectCase- oder Try-Anweisungen?
In Deinem Fall würde ich einfach den Typen abfragen, das Ergebnis in eine Stringvar überführen und eine Select-Case-Anweisung programmieren.

Code:
Select Case TypeName(boolP)
  Case "Add"
    Set Operation = prodDocument1.Part.AddNewAdd(Bla)
  Case "Trim"
    ...
End Select

Ich weiß nicht, was hinter dieser Operation steht, aber damit hast Du pro Möglichkeit zwei Zeilen Code, die einfach zu erweitern und lebar sind. Nur so als Vorschlag. Aber ich denke, dass Dir das sehr wohl bekannt ist, da es sich ja anscheinend um reine "Kosmetik" handelt.
Grüße, okl

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

KlausJ
Mitglied



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

Beiträge: 1336
Registriert: 17.03.2003

CATIA V4.2.4 Ref 2
CATIA V5R16SP7
AIX 5.3
Windows 2000 und XP

erstellt am: 15. Sep. 2006 07:49    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 weissda 10 Unities + Antwort hilfreich

Hallo,
in interpretativen Sprachen können solche Konstrukte möglich sein (z.B. Korn-Shell), in kompilierbaren Sprachen nicht. Ich vermute aber, da VisualBasic auch kompiliert werden kann, ist so etwas nicht möglich, sicher weiß ich es nicht. Schau mal im Basic Handbuch nach. Wenn überhaupt, dann dort.

------------------
in diesem Sinne

Klaus

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 15. Sep. 2006 08:40    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

Danke für eure Antworten. Dachte mir schon, dass dies wohl eher nicht möglich ist - auf die Alternative mit IF/case... bin ich auch gekommen, deshalb wäre das andere einfach "nice to have" gewesen...

Gruss, Daniel

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

93Aero
Mitglied
Ing


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

Beiträge: 106
Registriert: 02.12.2004

erstellt am: 19. Sep. 2006 10:21    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 weissda 10 Unities + Antwort hilfreich

Hallo Daniel,

so was wie ein Pointer auf die Funktion gibt es in CATScript sicher nicht... Nur es existiert doch ein Weg, allerdings ist es nicht die beste Lösung.

Es gibt eine Funktion StartCommand und diese braucht ein String als Parameter, damit kannst Du Deinen Befehl ausführen lassen. Aber Vorsicht: das Ding läut nicht synchron, ich habe es benuzt um mein CAA-Commando zu starten, hier ist die VB-Code:

Dim cat_obj As Object
Dim strCommand As String
   
Set cat_obj = GetObject(, "CATIA.Application")
strCommand = "Pad"
cat_obj.StartCommand strCommand

Das Status des Kommandos abzufragen ist nicht trivial.

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 19. Sep. 2006 10:35    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

Ja, genau sowas hab ich gesucht. Werds nächstens mal ausprobieren, mein Code ist momentan etwas im Umbau ;-)

Danke & Gruss, Daniel.

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)2025 CAD.de | Impressum | Datenschutz