Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Probleme mit UserSel

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:  Probleme mit UserSel (4208 mal gelesen)
wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 01. Mrz. 2010 21:20    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 möchte während der Ausführung meines Makros dem User die Möglichkeit geben, ein Element zu selektieren.
Hierzu habe ich folgenden Programmcode
Code:
Sub CATMain()
Dim UserSel As Selection
Set UserSel = CATIA.ActiveDocument.Selection
UserSel.Clear
Dim E
E = UserSel.SelectElement2("Line", "Linie auswählen", True)
If E = "Normal" Then
MsgBox (UserSel.Item(1).Value.Name)
Else
MsgBox ("Abbruch")
End Sub

Bei der Ausführung erhalte ich aber als Fehlermeldung 

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

Kann mir jemand weiterhelfen?

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 01. Mrz. 2010 21: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 wulfgang 10 Unities + Antwort hilfreich

Servus
Bitte Suchfunktion benutzen (siehe zB hier)

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 01. Mrz. 2010 21:34    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

Okay, sorry diesen Thread habe ich schlichtweg übersehen

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 02. Mrz. 2010 09:00    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 doch noch ein Problem. Ich möchte eine Referenz auf ein selektiertes Element erzeugen. Ich programmiere in CATVBA.
Leider erhalte ich immer die Fehlermeldung:
Zitat:
Run-Time error '438'
Object doesn't support this property or method

Code:
Dim Was(0)
Was(0) = "Line"
'Definion und leeren der Selektion
Dim UserSel As Object
Set UserSel = CATIA.ActiveDocument.Selection
UserSel.Clear
Dim E As String
E = UserSel.SelectElement2(Was, "Linie auswählen", False)
If E = "Normal" Then
MsgBox (UserSel.Item(1).Value.Name)
Else
MsgBox ("Abbruch")
End If
E = UserSel.Item(1).Value  'Vom Compiler markierte Zeile
Dim RefP As Reference
Set RefP = MeinPart.CreateReferenceFromObject(E)
product1.Update

Im Forum habe ich ein ähnliches Beispiel gefunden. Leider nur in Catscript. Wäre deshlab sehr froh, wenn mir jemand helfen könnte.

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: 02. Mrz. 2010 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 Nur für wulfgang 10 Unities + Antwort hilfreich

Hallo,

die Deklaration deiner Variablen passt nicht. "E" ist bei dir ein String. Diser stellt den Status der interaktiven Abfrage dar. Du versucht im Anschluss dem "E" ein Objekt zuzuweisen.

Versuch mal folgendes:

Code:

Dim myObj as Object 'hier solltest du dann den richtigen Datentyp eintragen (bei der Reference)
Set myObj = UserSel.Item(1).Value

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 02. Mrz. 2010 14:02    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,
habe deine Antwort wohl nicht ganz verstanden.

Code:
Dim Was(0)
Was(0) = "Line"
'Definion und leeren der Selektion
Dim UserSel As Object
Set UserSel = CATIA.ActiveDocument.Selection
UserSel.Clear
Dim E
E = UserSel.SelectElement2(Was, "Line auswählen", True)
If E = "Normal" Then
MsgBox (UserSel.Item(1).Value.Name)
Else
MsgBox ("Abbruch")
End If
Dim myObj As Object
Set myObj = UserSel.Item(1).Value
Dim RefP As Reference
RefP = MeinPart.CreateReferenceFromObject(myObj)

Nun bekomme ich in der letzen Zeile die Meldung 

Zitat:
Runtime Error 424
Object Required

Aber eigentlich sollte das jetzt doch schon so funktionieren. Object ist doch allen Datentypen übnergeordnet...

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: 02. Mrz. 2010 15:10    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 wulfgang 10 Unities + Antwort hilfreich

Code:

Dim RefP As Reference
Set RefP = MeinPart.CreateReferenceFromObject(myObj)

Ich möchte Dir, ohne jetzt beleidigend klingen zu wollen, denn so habe ich ja auch angefangen, nahelegen, ein Buch zum Thema VB zu lesen.
Natürlich helfe ich auch gern ohne das Vorwissen weiter, aber es würde Dir die Arbeit erleichtern.

Edit: Wenn du Google (oder eine andere Suchmaschine) benutzt um nach deinen Fehlermeldungen zu suchen erhälst Du auch schneller Antworten. Die Fehlermeldungen sind nämlich einheitlicher Standard.

------------------
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 02. Mrz. 2010 editiert.]

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 02. Mrz. 2010 17:18    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,
du meinst weil ich statt meinPart hätte ich ein Objekt(CAT-Part) nehmen müssen-hatte den Code einfach reinkopiert. Ich habe auch Vorkenntnisse-nur halt nicht so sehr in VB...
Noch eine kleine Frage. Ich möchte eine Referenz auf ein selektiertes Achsensystem erzeugen.

Code:
Dim Was(0)
Was(0) = "AxisSystem"
Dim UserSel As Object
Set UserSel = CATIA.ActiveDocument.Selection
UserSel.Clear
Dim E As String
E = UserSel.SelectElement2(Was, "Achsensystem auswählen", True)
If E = "Normal" Then
MsgBox (UserSel.Item(1).Value.Name)
Else
MsgBox ("Abbruch")
End If

CreateReferenceFromObject funktioniert laut Hilfe  hier nicht.

Zitat:
The geometric object to be referenced. It can be a plane, a line or a point.

Für CreateReferenceFromName bräuchte ich den vollständigen Namen mit Pfad. Kann mir noch mal jemand einen Tipp geben?

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: 02. Mrz. 2010 18:05    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 wulfgang 10 Unities + Antwort hilfreich

Hallo,

dann möchte ich mich für dne Hinweis auf ein Buch entschuldigen.
Kam mir halt so vor, als würden elementare Grundkenntnisse fehlen,
was dann eben an anderer Stelle besser supportet werden könnte. 

So dann zu deinen neuen Fragen:

Nicht alles was in der Doku steht stimmt auch. 
Die ist oftmals sogar veraltet.
Vertrau also nicht immer darauf, was dadrin steht, sondern probier es aus.
Ich behaupte in dem Fall geht das auch mit Achsensystem.

Da Du aber bereits eine Selektion hast und daraus das Objekt fischst, kannst Du auch gleich die Referenz daraus holen:

Code:

' Dieser Code ist frei aus dem Gedächnis geschrieben, ich bitte also um Nachsicht bei Fehlern
Dim refAxisSystem as INFTIFF.Reference
Dim selWork as INFTIFF.Selection
Dim objBuffer as Object
Dim arrOfVariant(0) as Variant
Dim sReturn as String

arrOfVariant(0) = "AxisSystem"

Set selWork = CATIA.ActiveDocument.Selection
Set objBuffer = selWork;

sReturn = objBuffer.SelectElement2(arrOfVariant, "Achsensystem auswählen", True)

If sReturn = "Normal" Then
  MsgBox (selWork.Item2(1).Value.Name)
Else
  Exit Sub
End If

Set refWork = selWork.Item2(1).Reference


Anmerkung: Wenn Du SekectEkement2 mit True machst, dann ist es nicht sinnvoll vorher die Selektion zu leeren, denn dann könntest Du gleich False übergeben.

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 02. Mrz. 2010 20:34    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 gerade kein CATIA. Aber INFTIFF kenne ich nicht

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 02. Mrz. 2010 21:16    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 wulfgang 10 Unities + Antwort hilfreich

Bei INFTIFF handelt es sich um eine CATIA-Bibliothek für die Programmierung aus z.B. VB2008.

Wenn du "nur" mit CATScript programmierst, brauchst du es nicht.

Grüsse Dominik

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: 03. Mrz. 2010 13:17    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 wulfgang 10 Unities + Antwort hilfreich

Ich gebe lieber die Librarys an, da einige Klassen-/Objektnamen mehrfach vergeben sind.

Daher mache ich dies gerade auch beim CATVBA, da da ja schon von Anfang an alle CATIA-APIs angezogen werden.

Ob ich den Namen jetzt aus dem Gedächnis richtig geschrieben habe weiß ich aber nicht, da ich immer Nur INF und Strg + Leertaste eingebe.  


Edit: Ich nutze übrigens lieber VB6, statt VS2008 ;p. Das hat aber auch den Grund, dass ich VB6 kein .NET-Gedöns hat (ich komme weniger in Versuchung bei den COM-Verlinkungen und die funzen dann auch) und Dassault gerade erst VS2005 SP1 für CAA freigegeben hat.
------------------
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 03. Mrz. 2010 editiert.]

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 03. Mrz. 2010 15:57    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,
also leider funktioniert es so noch nicht. Die Bibliothek INFTIFF kennt mein Compiler nicht.
Habe es dann deinen Code verwendet, ohne die Bibliothek anzugeben. Ich erhalte auch eine MessageBox mit dem Namen des selektierten Elements. Aber die Zeile
Code:
Set refWork = selWork.Item2(1).Reference

macht immer noch Probleme.
Ich erhalte als Fehlermeldung:
Zitat:
Run-time error '-2147467259(80004005)':
Method 'Reference' of object 'SelectedElement' failed

Dabei erscheint, wenn ich diese Zeile eingebe , diese Methode sogar in der Vorauswahl...

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: 03. Mrz. 2010 16:32    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 wulfgang 10 Unities + Antwort hilfreich

Also die Bibliothek müsste korrekt INFITF heißen.  

Und

Dim RefP As Reference
Set RefP = MeinPart.CreateReferenceFromObject(myObj)

funktioniert auch nicht?

Edit:

Code:

Sub CATMain()

    Dim refAxisSystem      As INFITF.Reference
    Dim selWork            As INFITF.Selection
    Dim objBuffer          As Object
    Dim arrOfVariant(0)    As Variant
    Dim sReturn            As String
    Dim partWork            As MECMOD.Part
   
    arrOfVariant(0) = "AxisSystem"
   
    Set selWork = CATIA.ActiveDocument.Selection
    Set objBuffer = selWork
   
    sReturn = objBuffer.SelectElement2(arrOfVariant, "Achsensystem auswählen", True)
   
    If sReturn = "Normal" Then
      MsgBox (selWork.Item2(1).Value.Name)
    Else
      Exit Sub
    End If
   
    Set partWork = CATIA.ActiveDocument.Part
    Set refWork = partWork.CreateReferenceFromObject(selWork.Item2(1).Value)

End Sub


funzt bei mir

------------------
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 03. Mrz. 2010 editiert.]

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 04. Mrz. 2010 07:37    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


Beispiel.zip

 
Guten Morgen,
also bei deinem Code bekomme ich die Meldung, dass für dieses Objekt die Methode nicht unterstützt wird für die Zeile
Code:
Set partWork = CATIA.ActiveDocument.Part

Dann ich ich es ein wenig geändert:

Code:
Dim PartDokument As PartDocument
    Set PartDokument = CATIA.Documents.Item(2)
    Set partWork = CATIA.ActiveDocument.Part
  Set refWork = partWork.CreateReferenceFromObject(selWork.Item2(1).Value)

 
  Jetzt meckert der Compiler bei der letzten Zeile. Für das Objekt wird diese Methode nicht unterstützt...
Gibt es sonst nicht eine Möglichkeit den vollständigen Namen zu ermitteln? Dann könnte ich ja CreateReferenceFromName verwenden.. 
 
 
  Anbei eine kleine Beispieldatei

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: 04. Mrz. 2010 08:24    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 wulfgang 10 Unities + Antwort hilfreich

Hallo,

wenn du uns gleich das Beispiel gegeben hättest dann wären wir schon längst am Ziel. Mir war nicht klar das du versucht innerhalb eines Produkts das ein Part enthält ein Achsensystem zu selektieren. Hierbei musst du dann mit dem Part Objekt aufpassen. Nur dieses Part Objekt enthält die Methode CreateReferenceFromObject .

Wenn dein "ActiveDocument" aber ein Produkt ist besitzt diese keine Klasse "Part". Von dem her wird diese Methode nicht unterstützt. Hier mal die Lösung zu deinem Problem.

Code:
Sub CATMain()

    Dim intRefObj As INFITF.Reference
    Dim intSelObj As Object 'INFITF.Selection
    Dim intFilter(0) As Variant
    Dim intSelStateStr As String
    Dim intPartObj As MECMOD.Part
    Dim intProdObj As Product
 
    intFilter(0) = "AxisSystem"
 
    Set intSelObj = CATIA.ActiveDocument.Selection
    intSelStateStr = intSelObj.SelectElement2(intFilter, "Achsensystem auswählen", True)
 
    If intSelStateStr = "Normal" Then
      'MsgBox (selWork.Item2(1).Value.Name)
      Set intPartObj = intSelObj.Item2(1).Value.Parent.Parent
     
    Else
      Exit Sub
    End If

    Set intRefObj = intPartObj.CreateReferenceFromObject(intSelObj.Item2(1).Value)

End Sub


Dieses Script funktioniert jetzt mit einem Produkt und auch mit einem Part 

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 04. Mrz. 2010 14:02    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


BeispielN.zip

 
Also, das mit der Referenz erzeugen klappt. Ich wollte das ganze nun so erweitern, dass die beiden Koordinatensysteme der beiden Parts im Beispiel kongruent gesetzt werden.
Erhalte dann aber die Meldung   
Zitat:
Run-time error '-2147467259((80004005)':
The method AddBiEltCst failed

Kann jemand noch einmal einen Blick darauf werden?

Code:
Sub CATMain()

Dim constraint1 As Constraint

Weiß niemand etwas?:(
Dim reference1 As Reference
Dim product1 As Product
Dim productDocument1 As Document

    Dim intRefObj As INFITF.Reference
    Dim intSelObj As Object 'INFITF.Selection
    Dim intFilter(0) As Variant
    Dim intSelStateStr As String
    Dim intPartObj As MECMOD.Part
    Dim intProdObj As Product
'1 Referenz erzeugen
'''''''''''''''''''''''''''''''''''''''''''''
Set productDocument3 = CATIA.ActiveDocument
Set product3 = productDocument3.Product
Set reference1 = product3.CreateReferenceFromName("Product3/Part1.1/!Absolute Axis System")


'Referenz durcdh Auswahl erzeugen
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  
 
    intFilter(0) = "AxisSystem"
 
    Set intSelObj = CATIA.ActiveDocument.Selection
    intSelStateStr = intSelObj.SelectElement2(intFilter, "Achsensystem auswählen", True)
 
    If intSelStateStr = "Normal" Then
      Set intPartObj = intSelObj.Item2(1).Value.Parent.Parent
     
    Else
      Exit Sub
    End If

    Set intRefObj = intPartObj.CreateReferenceFromObject(intSelObj.Item2(1).Value)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Kongruenz setzen
Dim constraints1 As Constraints
Set constraints1 = product3.Connections("CATIAConstraints")
Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, intRefObj, reference1)
product3.Update


End Sub


[Diese Nachricht wurde von wulfgang am 04. Mrz. 2010 editiert.]
Wenn ich eine Möglichkeit hätte den vollständigen Pfadnamen zu ermitteln, könnte ich ja auch CreateByReference nehmen. Gibt es da nicht eine Möglichkeit?

[Diese Nachricht wurde von wulfgang am 04. Mrz. 2010 editiert.]

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

wulfgang
Mitglied



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

Beiträge: 64
Registriert: 29.04.2007

CATIA V5 R18

erstellt am: 08. Mrz. 2010 11:04    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,
habe das Problem inzwischen gelöst. CreateReferenceFromObject funktioniert bei Constraints nicht. Man muss einen Umweg über CreateReferenceFromName gehen. Falls jemand das gleiche Problem hat, kann er mir gerne schreiben!

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 12. Apr. 2011 10:43    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 wulfgang 10 Unities + Antwort hilfreich

Hallo,
habe das gleiche Problem mit den Reference.
Will von einer Selection eine Reference machen.
Dabei soll das Aktive Dokument eine Baugruppe sein und die Refereenz soll für die Baugruppen Bedinungen benutzt werden.

Jedoch gibts bei mir schon Probleme bei der Zeile

Set intPartObj = intSelObj.Item2(1).Value.Parent.Parent

Da meckert VBA schon.

Sobald ich es als Object deklariere kann ich irgendwie keine Referenz davon ziehen.

Wollte eigentlich ne Message schicken aber ich komm hier nicht durch die Firewall 

grüße
Michael

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 12. Apr. 2011 11: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 wulfgang 10 Unities + Antwort hilfreich

hier der Code: vielleicht kann mir da einer helfen

Dim activedoc As INFITF.Document
Dim AllProduct As Product
Dim AllProducts As Products
Dim i As Long
Dim Selection1 As Object
Dim Status As String
Dim SpPart As MECMOD.PART

Set activedoc = CATIA.ActiveDocument

Set AllProduct = activedoc.Product

Set AllProducts = AllProduct.Products
 
    Dim RefPos1 As Reference
    Dim RefPos2 As Reference
    Dim SpannRef1 As Reference
    Dim SpannRef2 As Reference
   
    Set Selection1 = activedoc.Selection
   
    Dim InputObjectType(0)
    InputObjectType(0) = "Point"
   
    Status = Selection1.SelectElement2(InputObjectType, "Wählen Sie den Punkt aus", False)
   
    Set SpPart = Selection1.Item(1).Value.Parent.Parent
   
    Set SpannRef1 = SpPart.CreateReferenceFromName(Selection1.Item(1).Value)
   
    Set RefPos1 = AllProduct.CreateReferenceFromName("Test_Spanner/Spanner_Komplet." & CStr(1) & "/Part12.1/!Point.1")
    Set RefPos2 = AllProduct.CreateReferenceFromName("Test_Spanner/Spanner_Komplet." & CStr(1) & "/Part12.1/!Plane.6")
 
    Dim constraints1 As Constraints
    Set constraints1 = AllProduct.Connections("CATIAConstraints")
   
    Dim constraint1 As Constraint
    Dim Constraint2 As Constraint
   
    Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, RefPos1, SpannRef1)

End Sub

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: 12. Apr. 2011 11: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 wulfgang 10 Unities + Antwort hilfreich

SpPart.CreateReferenceFromName(Selection1.Item(1).Value)

macht wenig Sinn in meinen Augen, da die Selection direkt eine Reference ausgibt.

Versuch also

Code:

Selection1.Item(1).Reference

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 12. Apr. 2011 12:43    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 wulfgang 10 Unities + Antwort hilfreich

Danke für den Tip.
Hab den Code jetzt so benutzt
Code:

Set SpannRef2 = Selection1.Item(1).Reference

Jetzt hat er wahrscheinlich die Reference schon aber  jetzt kommt der Fehler:

Method 'AddBiEltCst' of Object 'Constraints' Failed

Das ist ja der Befehl für die Bedingung.

Hab ich was falsch deklariert oder warum kommt der dann mit den Referenzen nicht klar.

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: 12. Apr. 2011 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 wulfgang 10 Unities + Antwort hilfreich

Ich sehe nicht, dass Du Dir constraints1 irgendwo holst.

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 12. Apr. 2011 14:34    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 wulfgang 10 Unities + Antwort hilfreich

das mach ich doch mit dem Code am ende oder nicht?
Habe ich mich da in der Funktion vertan?

Code:

    Dim constraints1 As Constraints
    Set constraints1 = AllProduct.Connections("CATIAConstraints")
 
    Dim constraint1 As Constraint
 
    Set constraint1 = constraints1.AddBiEltCst(catCstTypeOn, RefPos1, SpannRef1)

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: 12. Apr. 2011 14: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 Nur für wulfgang 10 Unities + Antwort hilfreich

Ohh sorry, da unten das sah nicht so eindeutig aus, habe ich übersehen. :-(

Dann fällt mir auf die Schnelle auch nix ein.

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 12. Apr. 2011 15:32    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 wulfgang 10 Unities + Antwort hilfreich

man kann nicht allwissend sein...... trotzdem danke für die Mühe.....
versuch mich mal nachher wenn ich zuause bin an wulfgang zu wenden und seinen lösunungsansatz heraus zu finden.

falls er noch aktiv im forum ist

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

Michau
Mitglied
Bachelor angehend :)


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

Beiträge: 19
Registriert: 12.04.2011

Catia V5 R18-R19
Solid Edge
Unigraphics 6
Pro E Wildfire 4

erstellt am: 18. Apr. 2011 10:33    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 wulfgang 10 Unities + Antwort hilfreich

Hab eine Alternative Lösung herausbekommen mit dem CreateReferenceFromName.

Als Anreiz für die wo es selber Versuchen wollen.

Beim Aufzeichen wir der Komplette Pfad als Referenz benutzt.
z.b.
("Spanner_Komplet/207_U.1/NAUO6/!Achse 1")

Man muss nun einfach die Einzelne Bausteine Auslesen und einfach zu dem gesamten Pfad zusammen setzen.
Was das Programm möglicherweise auch sehr felxibel macht.

Eine Baugruppe mit mehrern Unterprodukten müsste man sicher mit einer Erweiterung im Code abfangen.

Falls jemand nicht auf die Lösung kommt, einfach melden.

Grüße

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