Autor
|
Thema: Part im Hintergrund laden (2239 mal gelesen)
|
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 06. Feb. 2006 06:09 <-- editieren / zitieren --> Unities abgeben:
Hallo gibt es eine Möglichkeit einen Part im Hintergrund zu laden? Ich möchte mit Set oNewPart = CATIA.Documents.NewFrom"(x:\ ... ")
einen neuen Part laden. Leider macht Catia dabei eine neues Fenster auf und springt aus meinen Product in das Fenster des neuen Parts. So das ich mit altesFenster.Activate zurück springen muss. Es gibt es Möglichkeit den Part so zu laden, das er nur geladen wird und CATIA ist in das neues Fenster springt? Danke Gruß aus Leipzig Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uhde Mitglied
Beiträge: 46 Registriert: 20.04.2005
|
erstellt am: 29. Jun. 2006 11:20 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo Leipziger. Es gibt die Methode
Code:
Dim newDoc As Document Set newDoc = CATIA.Documents.Read(<filepath> )
Sie lädt das Document ohne es zu aktivieren oder zu öffnen. Falls es Einfluss auf die anderen geladenen Dokumente nehmen soll, musst Du es noch mit
Code:
newDoc.Activate
aktivieren. Ich hoffe das hilft Dir weiter Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
Beiträge: 171 Registriert: 05.09.2005 AIX 275 CatiaV5 R14 SP3
|
erstellt am: 29. Jun. 2006 11:41 <-- editieren / zitieren --> Unities abgeben:
|
trigger Mitglied Student
Beiträge: 11 Registriert: 21.01.2009
|
erstellt am: 06. Feb. 2009 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo V5-User, ich habe ein ähnliches Problem wie der Urheber des Threads. Ich möchte mit meinem Makro ein Part laden und dieses dann unter einem anderen Namen speichern. Im Anschluss soll das Part wieder geschlossen werden. Derzeit mache ich das mittels Methode "Open",aber das is bei vielen Durchläufen echt nicht schön. Ich würde das ganze also gern mit "Read" oder einer anderen Methode machen,bekomme das aber leider nicht hin. Mein Quellcode mit "Open" lautet:
Set Doc_lesen = CATIA.Documents.Open (PartName(0)) CATIA.DisplayFileAlerts = false CATIA.ActiveDocument.SaveAs PartNewName CATIA.ActiveDocument.close Das Array PartName übergibt wie leicht zu erkennen ist den Pfad des CatParts. Wenn ich versuche "Open" mit "Read" zu ersetzen, auch unter Verwendung mit Activate gibts es immer wieder Fehlermeldungen.
Hier ein Beispiel:
Set oDoc_lesen = CATIA.Documents.Read (PartName(0)) oDoc_lesen.Activate CATIA.DisplayFileAlerts = false CATIA.ActiveDocument.SaveAs PartNewName CATIA.ActiveDocument.close Das gewünschte Part wird hier leider nicht auf Active gesetzt,sondern das zuletzt aktive Document geschlossen. Ich bin für jeden Hinweis dankbar.
Gruß trigger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trigger Mitglied Student
Beiträge: 11 Registriert: 21.01.2009
|
erstellt am: 06. Feb. 2009 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
|
denyo_1 Moderator Manager
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: 09. Feb. 2009 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hallo trigger, IMHO brauchst du ja auch kein CATIA.ActiveDocument dafür. Das ActiveDocuemnt existiert ja asuch nicht, da das Part ja nicht geöffnet sondern nur gelesen wird! Code:
Set oDoc_lesen = CATIA.Documents.Read (PartName(0))CATIA.DisplayFileAlerts = false oDoc_lesen.SaveAs PartNewName
So sollte es dann funktionieren. Schließen brauchst du das Dokument auch nicht. Um es freizugeben sollte ein Set oDoc_lesen = Nothing reichen ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
trigger Mitglied Student
Beiträge: 11 Registriert: 21.01.2009
|
erstellt am: 09. Feb. 2009 23:28 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Super,das funzt absolut topp. Jetzt hat das lästige Fenstergespringe endlich ein Ende. Hatte mich schon dumm und dämlich probiert und auch leider kein brauchbares Beispiel gefunden. Großes Dankeschön dafür!!! Gruß trigger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 31. Mai. 2011 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Hey habe ein ähnliches Problem wie der TE. Ausgangssituation ist folgende: Habe ein Part geöffnet, dann soll über eine UserForm in einer Combobox ein parttyp ausgewählt werden (z.b. rund oder eckig). Nach der Selektion soll das entsprechende part (..../rund.CatPart) eingelesen werden und ein bestimmter Körper kopiert werden. Dieser Körper soll in mein Ausgangspart eingefügt werden. In meinem Programm hängt es derzeit beim eigentlichen kopieren des Körpers und nun hab ich mir die Frage gestellt, ob es möglich ist, aus einem eingelesen Dokument einen Körper zu kopieren? Quellcode: Dim oDoc As Document oDoc = CATIA.Documents.Read("....\rund.CATPart") Dim bodies As Bodies bodies = oDoc.Part.Bodies Dim body as Body body = Bodies.Item("Hauptkoerper") Dim userSel As Selection userSel = oDoc.Selection usersel.clear usersel.add(body) usersel.Copy // hier tritt der Fehler auf "No CSO element remains after the filtering through the UI active Object. The Copy operation could not be performed.
Wenn ich mir allerdings über eine MsgBox die Selektion ausgeben lassen:
MsgBox(userSel.Item(1).Value.Name) Gibt er mir den Hauptkoerper aus! Hoffe man kann das Problem verstehen und nachvollziehen Mit freundlichen Grüßen schnix [Diese Nachricht wurde von schnix am 31. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Mai. 2011 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Servus Ich glaub aus einem Dokument dass nur über "Read" geöffnet wurde kann man nichts kopieren, mit "Open" sollte es funktionieren. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 31. Mai. 2011 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
ja mit Open klappt mein Programm einwandfrei. Allerdings wollte ich das ständige öffnen und schließen der dokumente umgehen, um das programm etwas schneller zu machen. Mir scheint auch so, als ob das nicht möglich ist :-( Naja einen Versuch war es Wert Viele Dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 31. Mai. 2011 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für leipziger
Servus Kleiner Hinweis. Wenn du direkt Set body = oDoc.Part.MainBodyverwendest, hast du keine Probleme wenn der Hauptkörper mal umbenannt wurde. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |