Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Part in Product aktiv setzen

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:  Part in Product aktiv setzen (1675 mal gelesen)
hklein06
Mitglied
Entwicklung Fahrwerk


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

Beiträge: 50
Registriert: 17.03.2006

CATIA V5 R14 HF-35
[ RS6000 AIX 5.3-ML04 ]

erstellt am: 20. Mrz. 2006 12: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

Hallo,

ich habe in einem Product ein Part aktiv gemacht (...Edit). Nun möchte ich in diesem Part arbeiten (Solid etc.).

Leider kann ich im Makro das aktive Part nicht auslesen. Es wird immer das Root-Product ausgegeben:

Set WeldingProduct = CATIA.Documents
Set WeldingDoc = CATIA.ActiveDocument
MsgBox "Test - "&WeldingDoc.Name

' dann kommt der Fehler:
' Set WeldingPart = WeldingDoc.Part

Wie kann ich denn das Problem am Besten lösen?

Danke im Voraus,

Holger

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 20. Mrz. 2006 23: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 hklein06 10 Unities + Antwort hilfreich

Hallo hklein06,

ein ähnliches Problem gab es erst vor kurzen, vielleicht hilft Dir ja der Link: http://ww3.cad.de/foren/ubb/Forum137/HTML/001168.shtml


mfg,
Lusilnie

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

hklein06
Mitglied
Entwicklung Fahrwerk


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

Beiträge: 50
Registriert: 17.03.2006

CATIA V5 R14 HF-35
[ RS6000 AIX 5.3-ML04 ]

erstellt am: 21. Mrz. 2006 07: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 Lusilnie,

danke für den Hinweis. Den Artikel habe ich gelesen, allerdings hat der nichts mit meinem Problem zu tun. Ich möchte ja nicht alle Parts deaktivieren oder ähnliches.

Bei mir ist bereits ein Part aktiv. Ich möchte in diesem Part mit einem Makro arbeiten. Um dies zu können, benötige ich den Name des Parts um ihn mit

Set WeldingDoc = WeldingProduct.Item(???)

zu setzen.

Leider bekomme ich beim Auslesen von ActiveDocument nur den Name des Root Products, also nicht des Parts.

Viele Grüße,

Holger

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 21. Mrz. 2006 23:54    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 hklein06 10 Unities + Antwort hilfreich

Hallo hklein06,

wenn ich die Makro-Programmiererei richtig verstanden habe, ist dieser Fall nicht vorgesehen. Das ist aus meiner Sicht aber kein Beinbruch (bzw. Problem), da man dies mit einer Selektions-Abfrage umgehen kann. Das heißt, anstatt zu versuchen, daß aktivierte Part zu finden, fordert man den Makro-Nutzer einfach auf, dieses Part zu selektieren. Mit der Selektion kann man dann prima im Makro weiterarbeiten...

(Entschuldige, wenn ich eher "praktisch" veranlagt bin!)


mfg,
Lusilnie

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

hklein06
Mitglied
Entwicklung Fahrwerk


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

Beiträge: 50
Registriert: 17.03.2006

CATIA V5 R14 HF-35
[ RS6000 AIX 5.3-ML04 ]

erstellt am: 22. Mrz. 2006 07: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 Lusilnie,

da ist schon richtig, doch da gibt es mehrere Probleme:

1. die Auswahl eines Parts reicht nicht, da das Makro den Inhalt eines Geometrical Sets nicht findet, wenn das Part nicht aktiv ist,

=> deshalb müßte der Anwender das Part vorher von Hand aktivieren,
was leider auch nicht richtig funktioniert (CATIA.ActiveDocument gibt mir immer das Product, nicht das Part aus)


2. selbst wenn sich der Punkt 1 ohne eine Aktivierung des Parts lösen läßt, bleibt das Problem, dass der Anwender (nach dem Ablauf des Makros) die Teile im Geometrical Set verändern muss

=> also muss er das Part von Hand aktivieren


3. der Anwender arbeitet den ganzen Tag damit

=> wenn man das mal hochrechnet wird es ziemlich lästig, das Part jedesmal von Hand zu aktivieren


Das brachte mich zu der Fage, wie man per Makro ein Part aktivieren kann (z.B. mit einer Abfrage o.ä.).

Viele Grüße,

Holger

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

Tstone
Mitglied
Werkzeugkonstrukteur


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

Beiträge: 163
Registriert: 04.06.2003

Dell Precision 470
Intel Xeon CPU 3,00GHz
2GB Ram
Microsoft Windows XP
Catia V5 R18 SP6
VB2005

erstellt am: 22. Mrz. 2006 09: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 hklein06 10 Unities + Antwort hilfreich

Hallo
Nach der Selektion des Parts durch den Benutzer mußt du das Part nicht aktiv schalten, sondern du weist die Selektion einer Variablen vom Typ PartDocument zu. Dadurch hast du vollen Zugriff auf alle Methoden und Eigenschaften des Parts aus deinem Produkt.
Schlußendlich ist das Part ja geladen und somit Teil der Document-Auflistung.
Code für die Auswahl eines Parts:
Dim oDoc
Dim SelFilter(1)
Dim sStatus As String
Dim selelm As SelectedElement
Set oDoc = CATIA.ActiveDocument
SelFilter(0) = "Part"
SelFilter(1) = "Part"
oDoc.Selection.Clear
msgbox "Bitte Part auswählen!", vbOKOnly, "Selektion durchführen"
sStatus = oPartDoc.Selection.SelectElement(SelFilter, "Bitte Part auswählen", True)
If Status ="Normal" Then
Dim oSelPart As PartDocument
Set oSelPart= oDoc.Selection.Item(1).Value
End If

------------------
Grüße TStone
  "Respektiere die Macht der Worte, wähle sie mit Bedacht!"

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

Stoffel
Mitglied
Student


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

Beiträge: 322
Registriert: 09.10.2002

R6/V2010

erstellt am: 22. Mrz. 2006 10: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 hklein06 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von hklein06:
3. der Anwender arbeitet den ganzen Tag damit
=> wenn man das mal hochrechnet wird es ziemlich lästig, das Part jedesmal von Hand zu aktivieren


Wie lästig wird es erst, wenn der Anwender gar kein Makro bekommt und ALLES von Hand machen muss?

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

hklein06
Mitglied
Entwicklung Fahrwerk


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

Beiträge: 50
Registriert: 17.03.2006

CATIA V5 R14 HF-35
[ RS6000 AIX 5.3-ML04 ]

erstellt am: 24. Mrz. 2006 10:42    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 Tstone,

bevor ich das ausprobiere, hätte ich da noch eine Frage.

Kann ich mit Deiner Methode auf ein Part zugreifen (Selektion und Erzeugen von Geometrie in einem Geometrical Set) ohne das Part vorher zu aktivieren?

Ich habe es im Moment so gelöst, dass das Part aktiviert werden muss und dann über ein (sowieso) benötigtes Geometrical Set gefunden wird. Allerdings ist mir das mit den "Parent" nicht ganz klar (es funktioniert aber einwandfrei, auch in einzelnen Parts).

Viele Grüße,

Holger


Dim WeldingProduct As Documents
Dim WeldingDoc As Document
Dim WeldingPart As Part
Dim WeldingBody As HybridBody
Dim WeldingBodyName As String
Dim WeldingGeometry As HybridShapeFactory
Dim Select_Objects As Selection
Dim Select_Part As Selection

Set WeldingProduct = CATIA.Documents
Set Select_Part = CATIA.ActiveDocument.Selection 
Select_Part.Clear

      Dim Objects(0)
      Objects(0) = "HybridBody"
      Select_GeoSet = Select_Part.SelectElement(Objects, Input_GeoSet, false)
      Set WeldingDoc = WeldingProduct.Item(Select_Part.Item(1).Value.Parent.Parent.Parent.Name)
      Set Select_Objects = WeldingDoc.Selection
      Set WeldingPart = WeldingDoc.Part
      Set WeldingGeometry = WeldingPart.HybridShapeFactory   
      Set Select_WeldingBody = Select_Part.Item(1).Value
      WeldingPart.InWorkObject = Select_WeldingBody


@Stoffel:
Dein Spruch kommt gleich hinter "Das hat es in CATIA V4 auch nicht gegeben..."

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