Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Selektion_während_der_Laufzeit

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:  Selektion_während_der_Laufzeit (1187 mal gelesen)
Glück
Mitglied


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

Beiträge: 5
Registriert: 15.04.2010

erstellt am: 15. Apr. 2010 10:55    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

Hi,

ich bin ein Anfänger in diesem Bereich, so bräuchte ich eure Hilfe.

Ich benutze Catia V5 R19.

Ich möchte im Laufe des Macros z.B. Linie oder etw. selektieren können.

______________________________________________________________________
Sub CATMain()

Dim sVersion, sMacroname As String
sMacroname = "Dokumentum_öffnen"

Dim oCatia As Application
Set oCatia = CATIA

oCatia.StatusBar = sMacroname

On Error Resume Next

Dim oDoc_RootProduct As Document
Set oDoc_RootProduct = oCatia.ActiveDocument

If Err.Number <> 0 Then

    MsgBox "Es ist kein Dokument geöffnet.", 16, sMacroname
    Exit Sub
   
End If

On Error GoTo 0


MsgBox "Macro ist beendet.", vbInformation, sMacroname

oCatia.StatusBar = ""

' Auswahl festlegen -----------------------------------------------
  Dim Was(1)
  Was(0) = "Pad"
  Was(1) = "Line"

' Selektion definieren und leeren ---------------------------------
  Dim UserSel As Selection
  Set UserSel = CATIA.ActiveDocument.Selection
  UserSel.Clear

' Selektion vornehmen lassen --------------------------------------
  Dim E As CATBSTR   
  E = UserSel.SelectElement2(Was, "Pad oder Linie", False)

  If E = "Normal" Then
      MsgBox (UserSel.Item(1).Value.Name)
  Else
      MsgBox ("Abbruch")
  End If

' Selektion freigeben --------------------------------------------
  UserSel.Clear

End Sub
______________________________________________________________________


Bei der "Selektion vornenmen lassen" hält das Programm an.

Könnte jemand mir weiterhelfen, was das Problem ist?

Danke im Voraus.


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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 15. Apr. 2010 11:08    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 Glück 10 Unities + Antwort hilfreich

*g*
Ich denke mal die Suchfunktion liefert dir meine Antwort auch einige duzent male:

Problem ist, dass VBA bei der ByRef-Übergabe nicht so recht mit der API-Schnittstelle kann und lieber Objekte für die Methodenaufrufe haben möchte

Code:

' Selektion definieren und leeren ---------------------------------
  Dim selUser As Selection
  Dim objBuffer As Object

  Set selUser = CATIA.ActiveDocument.Selection
  Set objBuffer = selUser

' Selektion vornehmen lassen --------------------------------------
  Dim sReturn As CATBSTR    
  sReturn = objBuffer.SelectElement2(Was, "Pad oder Linie", False) 


Hoffe es funzt

------------------
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

[Diese Nachricht wurde von HoBLila am 15. Apr. 2010 editiert.]

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

Glück
Mitglied


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

Beiträge: 5
Registriert: 15.04.2010

erstellt am: 15. Apr. 2010 11: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

Hi,

danke schön für deine Antwort.

Ich habe die neuen Zeilen reinkopiert, aber es funktioniert leider immer noch nicht.

Wenn ich das Makro laufen lassen, kommt bei der Zeile "Dim sReturn As CATBSTR" die folgende Fehlermeldung:
Compiler error: User-defined type not defined.

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

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: 15. Apr. 2010 14: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 Glück 10 Unities + Antwort hilfreich

Dim sReturn As String

------------------
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

Glück
Mitglied


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

Beiträge: 5
Registriert: 15.04.2010

erstellt am: 16. Apr. 2010 10: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

Hallo Henry,

danke, so funktioniert es.

Was ist aber, wenn ich ein Geometrical Set und keine Linie usw. selektieren möchte?

Ich habe das gleiche Schema mit einfachen Änderungen benutzt, aber ich bekomme eine Fehlermeldung :

Code:
_______________________________________________________________________________________________

Sub CATMain()

' Auswahl festlegen ------------------------------
  Dim Was(0)!!!!!!!!!!!
  Was(0) = "Geometrical Set" !!!!!!
 

' Selektion definieren und leeren ----------------
  Dim selUser As Selection
  Dim objBuffer As Object

  Set selUser = CATIA.ActiveDocument.Selection
  Set objBuffer = selUser

' Selektion vornehmen lassen --------------------
  Dim sReturn As String
  sReturn = objBuffer.SelectElement2(Was, "Geometrical Set", False)!!!!!!!!!!!!!!---->Fehlermeldung!!!!
 

  If sReturn = "Normal" Then
      MsgBox (selUser.Item(1).Value.Name)
  Else
      MsgBox ("Abbruch")
  End If

' Selektion freigeben ---------------------
  selUser.Clear

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: 16. Apr. 2010 11:12    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 Glück 10 Unities + Antwort hilfreich

Hallo,

der String den du an die SelectElement2 Methode übergibst stimmt nicht. Du musst den Datentyp (HybridBodies) als String übergeben und nicht den Standardnamen (Geometrical Set).

Du kannst dir ja ein kleines Hilfskript basteln das dir aus einer Selektion ("AnyObject") den zugehörigen Datentyp (mit der Function TypeName) in einer MsgBox ausgibt

------------------
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

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