Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Aktives Part bzw. .InWorkObject in einem Produkt?

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:  Aktives Part bzw. .InWorkObject in einem Produkt? (1533 mal gelesen)
mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 20. Feb. 2011 00:29    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 schreibe gerade ein Makro das in einem Part aus dem Skizzierer herraus aufgerufen wird.
Auf Part-Basis funktioniert das problemlos, wenn ich jedoch in einem Produkt bin, und von dort aus in eine Skizze eines verbauten Parts gehe, funktioniert es nicht mehr.

Da ich einem Produkt Part1.Part.InWorkObject nicht verwenden kann, denke ich mal das es daran liegt.
Ich müsste also irgendwie rausbekommen welches Part in einem Produkt gerade bearbeitet wird.
Es soll in der derzeit "geöffneten" Skizze nur ein Selection1.paste ausführen.


Bin schon am durchsuchen der V5Automation.chm, aber ich finde dort leider nichts passendes.

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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 20. Feb. 2011 10: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 mycon 10 Unities + Antwort hilfreich

Ich glaube direkt geht es nicht.
Aber über ein kleinen Programm wie:


Sub CATMain()

Dim productDocument1 As document
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Clear
selection1.Search "CATPrtSearch.Plane.Name=xy*,in"

Dim selplane As Reference
Set selplane = selection1.Item(1).Value

Dim ActiveDocPartNumber As String
ActiveDocPartNumber = selplane.Parent.Name

Dim ActiveDocNumber As String
ActiveDocNumber = selplane.Parent.Parent.Name


MsgBox "Partnumber: " & ActiveDocPartNumber & vbLf & "Dokumentenname: " & ActiveDocNumber


End Sub

könntest du dir per Umweg über eine eingeschränkte Selektionssuche dein Part ermitteln.

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

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

mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 20. Feb. 2011 12: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

mh, bekomme dein code nicht zum laufen, er hat scheinbar ein problem mit der zeile

Set selplane = selection1.Item(1).Value


Eine andere alternative wäre es vermtl. für mich das ganze via SendKeys zu machen.
Dann ist es ja egal in welcher Workbench ich gerade bin.

Nur leider sind auch da meine Versuche erfolglos.
Ist das wirklich so schwer ein simples paste in das derzeit aktive Dokument zu machen?

Dim documents1 as Documents
set documents1 = Catia.Documents
Dim document1 as Document
set document1 = Catia.ActiveDocument

Dim documents2 as Documents
set documents2 = Catia.Documents
Dim document2 as Document
Set document2 = documents2.Open(dxfDatei)
   
Set selection1 = CATIA.ActiveDocument.Selection
selection1.Clear
selection1.Search "CATDrwSearch.2DGeometry,all"
selection1.Copy

document1.Activate

SendKeys "^V", True


Da passiert nichts bei mir.
Wenn ich nach dem ablauf selbst nochmal strg+v drücke, dann pastet er es.
Nur warum macht er es nicht im script?

[Diese Nachricht wurde von mycon am 20. Feb. 2011 editiert.]

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: 20. Feb. 2011 12: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 mycon 10 Unities + Antwort hilfreich

Servus
Ich vermute du kommst mit den Selections durcheinander.
Jedes Dokument hat seine eigene Selection.
Zusätzlich muss beim Einfügen selektiert sein wo das Objekt eingefügt werden soll (bei dir die Skizze).
Anbei ein Beispiel (1. Skizze im MainBody ist geöffnet beim Programmstart)
Code:
Sub CATMain()
Dim PartDocument As Document
Dim DrawingDocument As Document
Dim PartSelection As Selection
Dim DrwSelection As Selection
Dim oPart As Part
Dim MainBody As Body
Dim Skizze As Sketch

'Start
Set PartDocument = CATIA.ActiveDocument

'dfx öffnen und kopieren
Set DrawingDocument = CATIA.Documents.Open("D:\test.dxf")
Set DrawingDocument = CATIA.ActiveDocument
Set DrwSelection = DrawingDocument.Selection

DrwSelection.Clear
DrwSelection.Search "CATDrwSearch.2DGeometry,all"
DrwSelection.Copy

'Zum Part wechseln und erste Skizze im Mainbody selektiern (Skizze muss geöffnet sein)
PartDocument.Activate
Set PartSelection = PartDocument.Selection
PartSelection.Clear

Set oPart = PartDocument.Part
Set MainBody = oPart.MainBody
Set Skizze = MainBody.Sketches.Item(1)
PartSelection.Add Skizze

'Geometrie einfügen
PartSelection.Paste

End Sub


Gruß
Bernd

Edit: Diese Beispiel funktioniert nur wenn das Part im eigenen Fenster geöffnet ist.


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

[Diese Nachricht wurde von bgrittmann am 20. Feb. 2011 editiert.]

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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 20. Feb. 2011 14:15    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 mycon 10 Unities + Antwort hilfreich

Also,
"mein Code" funktioniert, wenn du aktiv in einem Part deiner Baugruppe, aber nicht im Sketcher des Parts aktiv bist.
Das wäre der erste Schritt um festzustellen,dass du in einem bestimmten Part bist. Dann kannst du ja, wie du schon vorher mal geschrieben hast, die Skizze aufsuchen und deine Aktionen durchführen.
Die Partnumber bzw. das Dokument hast du vorher mit "meinem" Code ermitteln können.

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

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

mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 20. Feb. 2011 14: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

Das Problem ist nur das es sowohl im Produkt, als auch im Part funktionieren soll.
In beiden Fällen wird das Makro direkt von einer Skizze herraus gestartet.
Und in eben diese aktive Skizze soll der Inhalt der .dxf eingefügt werden.

Wie gesagt, ist das Part in einem extra Fenster geöffnet, und ich starte mein Makro, was u.a. Part1.Part.InWorkObject nutzt um die Skizze zu finden, funktioniert das einwandfrei.

Allerdings such ich einen Weg das entweder ohne dieses Object zu machen, da das ja in einem Produkt nicht funktioniert, oder aus der Skizze direkt herrauszufinden welches Part die "Mutter" dieser Skizze ist.

Die Skizze wiederum ist nicht immer an gleicher Position. Sie kann, muss aber nicht zwingend im Mainbody sein.

@tberger: Dein Code wäre spitze, wenn das auch in einer Skizze funktionieren würde.

Was ich nicht ganz verstehe ist warum das mit der SendKeys Methode nicht funktioniert.
Hier sollte es doch eigentlich egal sein was gerade im Script abläuft.
Ich habe etwas in der Zwischenablage, und es ist eine Skizze das aktive Fenster.
Da sollte doch logisch gesehen eigl. nichts schief gehen können?

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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 21. Feb. 2011 07: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 mycon 10 Unities + Antwort hilfreich

Um bei einer aktiven Skizze die Daten zu bekommen, musst du nur die Suche anpassen und die "Parents" bis nach oben verfolgen:

Sub CATMain()

Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = productDocument1.Selection

selection1.Search "CATSketchSearch.2DAxis_Origin,in"

Dim selpoint As Point2D
Set selpoint = selection1.Item(1).Value

Dim ActiveSketchName As String
ActiveSketchName = selpoint.Parent.Parent.Parent.Name

Dim ActiveDocPartNumber As String
ActiveDocPartNumber = selpoint.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Name

Dim ActiveDocName As String
ActiveDocName = selpoint.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Parent.Name

MsgBox "Dokumentenname: " & ActiveDocName & vbLf & "Partnumber: " & ActiveDocPartNumber & vbLf & "Skizzenname: " & ActiveSketchName

End Sub

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

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

mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 21. Feb. 2011 22:26    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

Vielen Dank!

Das wars was ich gesucht hatte.
Funktioniert jetzt prima 

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