Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Ausgabe des Documents bei einer Selection

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:  Ausgabe des Documents bei einer Selection (2813 mal gelesen)
der-quest
Mitglied



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

Beiträge: 70
Registriert: 09.06.2005

erstellt am: 16. Mrz. 2007 16: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 zusammen!

Ich sitze hier ein wenig ratlos vor einem relativ einfachen (?) Problem: Wie bekomme ich heraus, in welchem Dokument ("...CATPart") die Selection stattgefunden hat?

Hintergrund: Mit dem Makro sollen durch in einem selektierten GeoSet liegende Ebenen Schnitte des Gesamtproduktes erstellt werden, die anschließend in das GeoSet wieder einkopiert werden. Zur Zeit klappt es nur "hart verdrahtet" unter Angabe des Pfades hin zu dem GeoSet. Ich schaffe es nicht, den "Ort" der Selection (außer dem Document-Namen) festzustellen und zwischenzuspeichern.

Code:

Sub CATMain()
Dim selektion1 As Selection
Set selektion1 = CATIA.ActiveDocument.Selection

MsgBox(selektion1.Item(1).Name)

End Sub


Weiterhin klappt das mit dem "hart verdrahteten" Navigieren auch nur, wenn das Part dazu extra geöffnet ist (und nicht nur in der Produktstruktur). -> CATIA.Documents.Item("...CATPart")

Ein Versuch à la

Code:

Dim einPart As Part
einPart = selektion1.Item(1).Value


brachte auch keinen Erfolg.

Hat jemand einen Tipp?

Gruß
der-quest

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 20. Mrz. 2007 09: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 Nur für der-quest 10 Unities + Antwort hilfreich

Hallo, hast du vielleicht ein Bild von der Struktur????

Du willst also ein komplettes GeoSet Selektieren, die Ebenen dort drin verwenden und die Ergebnisse der Schnitt am Ende dort hineinkopieren?

Habe ich das so richtig verstanden??

Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

der-quest
Mitglied



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

Beiträge: 70
Registriert: 09.06.2005

erstellt am: 22. Mrz. 2007 12: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

Zitat:
Original erstellt von Timberwolve:
[...]
Habe ich das so richtig verstanden?

Jepp, ganz genau das! Hast Du einen Tipp?

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 22. Mrz. 2007 13: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 der-quest 10 Unities + Antwort hilfreich

Naja Tipp nicht direkt, müsste da auch erst mal nachgrübeln.
Hast du denn schon nen Code geschrieben??

Wenn ja poste ihn doch einfach mal, dann können wir uns das genauer anschauen.
Ein Bild mit der Struktur um zu sehen über wieviel Stufen wir hier reden wäre auch nicht schlecht.

Herausfinden in welchem Dokument du etwas selektiert hast ist nicht so leicht machbar, höchstens über die Parents der selektierten Elemente. Ist aber in diesem Fall nicht notwendig denke ich, da durch die Selektion des GeoSets der anschliessende Behälter für die zu kopierenden Elemente eigentlich schon fest steht.


Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

der-quest
Mitglied



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

Beiträge: 70
Registriert: 09.06.2005

erstellt am: 26. Mrz. 2007 12: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


baum.png

 
Ja, den Code habe ich bereits in großen Teilen geschrieben bzw. aus anderen Beiträgen aus diesem Forum übernommen. Hier ist er (an ein paar Stellen eingekürzt):

Code:

Sub CATMain()

' Ist genau ein GeoSet selektiert?
Dim selektion1 As Selection
Set selektion1 = CATIA.ActiveDocument.Selection

If selektion1.Count = 1 Then
If selektion1.Item(1).Type <> "HybridBody" Then ' kein GeoSet gewählt
MsgBox("Es ist kein GeoSet ausgewählt.")
Exit Sub
End If
Else MsgBox("Es ist genau ein GeoSet mit den Schnittebenen auszuwählen.")
Exit Sub
End If ' alles okay!

' In welchem Part befinden wir uns?
Dim dasPart As Part
Set dasPart = selektion1.Item(1).Value.Parent.Parent.Parent
MsgBox(dasPart.Name)

' Casten der Section in einen HybridBody
Dim schnittOrdner As HybridBody
Set schnittOrdner = selektion1.Item(1).Value

' Das Wurzel-Produkt soll die Schnitte erhalten
Dim wurzel As Product
Set wurzel = CATIA.ActiveDocument.Product.Products.Item(1)

' Anzahl der Elemente
Dim anzahl As Integer
anzahl = schnittOrdner.HybridShapes.Count

' Große Schleife
Dim plane1Name,pfad As String

' Pfad definieren
[...]

selektion1.Clear
Dim selektQuelle, selektZiel As Selection
Set selektQuelle = CATIA.ActiveDocument.Selection
Set selektZiel = CATIA.ActiveDocument.Selection
selektQuelle.Clear

' ---
Set documents1 = CATIA.Documents

Set partDocument1 = documents1.Item(dasPart.Name)

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies
' ---

Dim hybridShapeToCopy As HybridShape

set secs = CATIA.ActiveDocument.Product.GetTechnologicalObject("Sections")

Dim fa(2), sa(2), op(2), mat(11)
For i=1 to anzahl
Set plane1 = schnittOrdner.HybridShapes.Item(i)
plane1Name = plane1.Name
plane1.GetFirstAxis fa
plane1.GetSecondAxis sa
plane1.GetOrigin op
set sec = secs.Add()
 
mat(0) = fa(0)
mat(1) = fa(1)
mat(2) = fa(2)
mat(3) = sa(0)
mat(4) = sa(1)
mat(5) = sa(2)
mat(6) = fa(1) * sa(2) - fa(2) * sa(1)
mat(7) = fa(2) * sa(0) - fa(0) * sa(2)
mat(8) = fa(0) * sa(1) - fa(1) * sa(0)
mat(9) = op(0)
mat(10) = op(1)
mat(11) = op(2)

sec.SetPosition mat

' Dateinamen generieren mit Zufallszahl
[...]

' Datei schreiben
[...]

' Geometrie kopieren
Set hybridShapeToCopy = CATIA.Documents.Item(dateiName & ".CATPart").Part.HybridBodies.Item("Geometrical Set.1").HybridShapes.Item(1)
selektQuelle.Add hybridShapeToCopy
hybridShapeToCopy.Name = "Kurve" & i
MsgBox(selektQuelle.Item(1).Value.Name)
selektQuelle.Copy
partDocument1.Activate
part1.InWorkObject = schnittOrdner

' Geometrie einfuegen
Set selektZiel=partDocument1.Selection
selektZiel.Add schnittOrdner
selektZiel.PasteSpecial "CATPrtResultWithOutLink"
part1.Update

' Selections leeren
selektQuelle.Clear
selektZiel.Clear
Next


wurzel.Update
End Sub


Die Struktur des Produktes ist zur Zeit sehr einfach (siehe baum.png): Es wird das Geo.Set "Schnitte" mit den Schnittebenen ausgewählt. Leider aber wird das spätere Makro den Fall abfangen können müssen, dass die Position im Baum selbständig festgestellt wird, um die Kurvenzüge an der richtigen Stelle zu positionieren.

Danke schon einmal!

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

JanF
Mitglied
Student


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

Beiträge: 35
Registriert: 12.09.2002

erstellt am: 27. Mrz. 2007 09:07    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 der-quest 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von der-quest:
Hallo zusammen!

Ich sitze hier ein wenig ratlos vor einem relativ einfachen (?) Problem: Wie bekomme ich heraus, in welchem Dokument ("...CATPart") die Selection stattgefunden hat?

Code:

Sub CATMain()
Dim selektion1 As Selection
Set selektion1 = CATIA.ActiveDocument.Selection

MsgBox(selektion1.Item(1).Name)

End Sub



Für diese selektion1 erhält man wie folgt das zugehörige Part:

Code:
Dim SelectedElement1 as SelectedElement
Set SelectedElement1 = selektion1.FindObject("CATIAProduct")

Dim part1 As Part
Set part1 = SelectedElement1.ReferenceProduct.parent.Part

MsgBox(part1.name) 'Name des Parts
MsgBox(part1.parend.name) ' Name der CatPart-Datei


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

der-quest
Mitglied



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

Beiträge: 70
Registriert: 09.06.2005

erstellt am: 02. Apr. 2007 09:41    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 JanF,

danke, das mit der Ausgabe des Dokumentes hat einwandfrei geklappt.  

Leider aber bleibt das Problem bestehen, dass das Part, in dem die Schnitte per Paste as Result eingefügt werden, geöffnet sein muss. Andernfalls erhalte ich die Meldung: Error Copying Data: Selected element(s) not allowed for this operation.

Meine Vermutung: Da ich das CATPart in meinem Code über seinen Namen anspreche, aber nur die Produktstruktur geöffnet ist, findet er es nicht und kann auch nicht die Geometrien hineinkopieren. Ich hätte dann allerdings eine andere Fehlermeldung erwartet.

Hat jemand noch einen Tipp?

Gruß & Dank!

[Diese Nachricht wurde von der-quest am 02. Apr. 2007 editiert.]

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 02. Apr. 2007 10:48    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 der-quest 10 Unities + Antwort hilfreich

Hallo der-quest,

der Denkfehler liegt wo anders:
wenn in einer Struktur Geometrie von einem Part in ein anderes kopiert wird, entsteht ein Context Link. Und der geht über die Instance eines Parts, also über das .Product und nicht über das Documnet. (Wenn das Part in einem seperaten Fenster geöffnet ist, entsteht eine andere Art von Link)

Dein Fehlermeldung kannn 3 Ursachen haben (die mir bekannt sind):
1) Ein "falsches" Modell innerhalb deiner Struktur ist aktiv, z.B. das Part aus dem du Geometrie kopieren möchtest.
2) Wenn die Objekte, die du kopieren willst, so nicht kopiert werden können (auch interaktiv): also z.B. wenn nur publizierte erlaubt sind und du andere kopierst
3) Innerhalb einer Struktur das Paste nicht in die Instance (.Product) ausgeführt wird.

Berücksichtigst du das, müste es klappen.

Gruß

------------------
tomtom1972

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

der-quest
Mitglied



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

Beiträge: 70
Registriert: 09.06.2005

erstellt am: 02. Apr. 2007 15:31    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 tomtom1972!

Zitat:
Original erstellt von tomtom1972:
(...) wenn in einer Struktur Geometrie von einem Part in ein anderes kopiert wird, entsteht ein Context Link. Und der geht über die Instance eines Parts, also über das .Product und nicht über das Documnet. (Wenn das Part in einem seperaten Fenster geöffnet ist, entsteht eine andere Art von Link)

Aha! Demnach wäre Folgendes...

Code:
Set partDocument1 = CATIA.Documents.Item(dasPart.Name)

...evtl. durch etwas Ähnliches wie...

Code:
CATIA.ActiveDocument.Product.Products.Item(...)

...zu ersetzen. Damit sucht er nicht nach dem eigenständigen CATPart, sondern der Instanz in einer Produktstruktur.

Wie kann ich mich dann auf die Instanz -- oder eher das CATPart, das dahinter steht -- beziehen, um dann darin die Daten einzufügen? Sämtliche Versuche, die mit

Code:
CATIA.ActiveDocument.Product.
begonnen, führten nicht zum Erfolg.

Das Einfügen über die Produktstruktur birgt aber damit ein weiteres Problem: Ich muss mir Gedanken darüber machen, in welcher Ebene das Ziel-CATPart liegt, um es ansprechen zu können. Ist hingegen das CATPart bereits geöffnet, kann ich mich gleich darauf beziehen; die Änderungen werden in der Baumstruktur des Products sofort sichtbar.

Da letztere Variante offensichtlich einiges an Arbeit spart, wäre die mir lieber. Gibt es Einwände?

Schon einmal vielen Dank!

[Diese Nachricht wurde von der-quest am 02. Apr. 2007 editiert.]

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



Konstrukteur (m/w/d)
Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Mitarbeitende:n für einen unserer Kunden. Wir realisieren spannende Projekte für namhafte Kunden in allen Technologiebereichen und für alle Branchen und arbeiten mit an anspruchsvollen Lösungen für die Industrie....
Anzeige ansehenKonstruktion, Visualisierung
forrestq
Mitglied
student

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

Beiträge: 4
Registriert: 06.12.2007

erstellt am: 06. Dez. 2007 13:25    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 der-quest 10 Unities + Antwort hilfreich

Hallo zusammen!
Habe mal ein frage? Ich fang gerade mit Makros zu arbeiten und habe null ahnung aber die makros kann ich nicht nutzen und mit vb.net zu arbeiten. wie kann ich ein punkte generieren oder der koordinaten von vb.net aufrufen?

Lg

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