Autor
|
Thema: Section in ein Part exportieren (1844 mal gelesen)
|
Jonny1 Mitglied
Beiträge: 5 Registriert: 07.12.2006 Catia V5R14 SP5 HF15 XP Prof.
|
erstellt am: 14. Dez. 2006 13:20 <-- editieren / zitieren --> Unities abgeben:
Hallo V5-Programmierer Ich versuche ein Makro zu schreiben, welches mir die Sections in ein Part exportiert. Wenn man die original Funktion von Catia einsetzt (Sections selektieren und im Kontextmenü über die RM) wird ein Part gespeichert und alle selektierten Sections werden in separate Geometrical Sets eingefügt. Und ich möchte das der Name von Geometrical Set (üblich Geometrical Set.1) überschrieben wird mit dem Namen der Section. Aber ich scheitere schon an der „Export“ Funktion. Bin aber auch nicht gerade DER Programmierer. Set cSections = CATIA.ActiveDocument.Product.GetTechnologicalObject ("Sections") Set oNewPartDocument = CATIA.Documents.Add ("Part") oNewPartDocument = cSections.Item(1).Export Was mach ich da falsch? Gruß Jonny
------------------ Gruß Jonny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 14. Dez. 2006 18:40 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Hallo Jonny1, da scheint sich ein Fehler in der Dokumentation eingeschlichen zu haben! Vereinfache einfach die Zeilen Code: Set oNewPartDocument = CATIA.Documents.Add ("Part") oNewPartDocument = cSections.Item(1).Export
zu Code: Set oNewPartDocument = cSections.Item(1).Export
Dann solltest Du das gesuchte Ergebnis bekommen! mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
smodo1977 Mitglied
Beiträge: 263 Registriert: 28.07.2006
|
erstellt am: 14. Dez. 2006 19:32 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
|
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 15. Dez. 2006 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Hallo Lusilnie, Fehler eingeschlichen ist gut. In der Doku wimmelst nur so vor Fehlern. In der Beschreibung des .Measureable z.B. ist bald jede zweite Code-Zeile falsch. Und das seit der R8. Gruss TomTom
------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 15. Dez. 2006 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Hallo tomtom1972, ich weiß, die Doku ist immer an den "kritischen Stellen", d.h. die Passagen die man braucht, weil sie nicht ganz trivial sind, sehr lückenhaft oder fehlerbehaftet. Doch ich wollte das nicht so krass darstellen, damit ich Anfänger nicht gleich so stark verunsichere, dass sie ganz darauf verzichten und nur noch das Forum als Ratgeber suchen. Allerdings wissen wir doch alle, warum die Hilfe so "schlampig" gepflegt wird: Wir sollen doch bitte Unternehmen mit Programmierung und Schulung beauftragen, damit auch diese Geld verdienen können. Wenn diese dann mit DassaultSystemes zusammenarbeiten, fließt sicher auch dort noch Geld an DS zurück! ODER? mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny1 Mitglied
Beiträge: 5 Registriert: 07.12.2006 Catia V5R14 SP5 HF15 XP Prof.
|
erstellt am: 17. Dez. 2006 10:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, Das die Doku mit Fehlerbehaftet ist, ist nicht neu. Zitat: Original erstellt von Lusilnie:
Code: Set oNewPartDocument = cSections.Item(1).Export
Danke schon mal, muss erstmal ausprobieren. Was aber noch nicht so klar ist, wie komme ich dann an den Namen der Geometrical Sets? Kann ich dann in "oNewPartDocument" nach einem Geometrical Set suchen, ich meine ist dann das "oNewPartDocument" mein Object der Klase "Part"? Wie schon gesagt bin kein Profi was programmieren angeht.
------------------ Gruß Jonny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 17. Dez. 2006 18:51 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Hallo Jonny1, nein, Dein "oNewPartDocument" ist, wie der Name schon sagt, ein PartDocument. Also ein Document (Datei) vom Typ "Part", welches natürlich einen "Knoten" Part enthält. Darin existiert ein "Knoten" HybridBodies unter dem die Hybridbodies, also (auch?) die "Geometrical Sets" existieren. Also wäre Dein "Geometrical Set" unter den "Items" von "oNewPartDocument.Part.HybridBodies" zu suchen. PS: Du solltest das "oNewPartDocument" noch sichern, das geschieht nicht automatisch! mfg, Lusilnie
------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonny1 Mitglied
Beiträge: 5 Registriert: 07.12.2006 Catia V5R14 SP5 HF15 XP Prof.
|
erstellt am: 06. Sep. 2007 09:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, endlich kann ich mit dem Makro weitermachen, allerdings ist das mehr ein VB2005 Projekt geworden. Die Lösung von Lusilnie funktioniert sehr gut. In meinem Programm kann ich es leider nicht ganz verwenden. Ich habe mehrere Sections zu exportieren und bei Lusilnie Lösung wird immer ein neues Part mit dem Schnitt abgespeichert, was bei über 50 Sections etwas unübersichtlich und sehr aufwendig wird. In Catia hab ich die Möglichkeit alle Sections in ein Part zu exportieren. Ich habe versucht über copy/paste es zu lösen, erhalte aber immer die gleiche Fehlermeldung allerdings Catiaseitig. (Selected Element(s) not allowed for this operation). Was mach ich falsch? Code:
Public Sub exportSection(ByVal CATProductDocument As ProductDocument, _ ByVal CATSectionDocument As PartDocument, _ ByVal FirstSection As Integer, _ ByVal LastSection As Integer) Dim ClsPartDocument As PartDocument Dim ClsSelectionCopy As Selection Dim ClsSelectionPaste As Selection Dim ClsGeoSet As HybridBody Dim ClsSections As Sections Dim IntIndexGeoSet As Integer = 1 ClsSelectionPaste = CATSectionDocument.Selection ClsSelectionPaste.Add(CATSectionDocument.Part) ClsSections = Me.getSections(CATProductDocument) If FirstSection = 0 Then FirstSection = 1 End If For IntIndexSection As Integer = LastSection To FirstSection Step -1 If Not BackWorker.CancellationPending Then ClsPartDocument = ClsSections.Item(IntIndexSection).Export() ClsSelectionCopy = ClsPartDocument.Selection ClsGeoSet = ClsPartDocument.Part.HybridBodies.Item(ClsPartDocument.Part.HybridBodies.Count) ClsGeoSet.Name = ClsSections.Item(IntIndexSection).Name Try ClsSelectionCopy.Clear() ClsSelectionCopy.Add(ClsGeoSet) ClsSelectionCopy.Copy() ClsSelectionPaste.Paste() Catch ex As Exception Exit For End Try End If Next End Sub
------------------ Gruß Jonny Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 12. Nov. 2016 19:40 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Hallo zusammen, ich versuche auch Schnitte zu exportieren. Code ist ähnlich wie beim Johnny, ich bekomme aber eien Fehlermeldung in der Zeile ...Copy() Dim myPart As MECMOD.PartDocument mySection = myCatiaApp.ActiveDocument.Product.GetTechnologicalObject("Sections")
myPart = myCatiaApp.Documents.Add("Part") Dim mySelection As INFITF.Selection myPart = mySection.Item(1).Export() mySelection = myPart.Selection mySelection.Copy() mySelection.Paste() Was ist bei mir falsch? Danke. 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: 12. Nov. 2016 23:01 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Nov. 2016 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Servus, ich habe inzwischen einen Ansatz gewählt, der mir einfacher erschien, vielleicht kannst du mir dabei Hilfestellung geben. Code: mySection = myCatiaApp.ActiveDocument.Product.GetTechnologicalObject("Sections") For i = 1 To mySection.Count() myPartNumberSec = mySection.Item(i).Name myPart = mySection.Item(i).Export() Dim myFileName As String = "C:\Desktop\" & myPartNumberSec & "_" & Now.Date & ".CATPart" Dim a As String If System.IO.File.Exists(myFileName) Then a = MsgBox("Es existiert bereits ein Modell mit dem gleichen Namen. Möchten Sie es überschreiben?", vbYesNo) If a = vbYes Then System.IO.File.Delete(myFileName) Else Exit Sub End If End If myPart.ExportData(myFileName, "CATPart") Next Fehlermeldung in Zeile: myPart.ExportData(myFileName, "CATPart") und heißt: "Alredy exists in this session" Wenn ich aber in ExportDate(myFileName, "CATPart") das myFileName rausnehme und stattdessen z B. schreibe: "C:\Desktop\xy.CATPart", "CATPart") funktioniert der Export. Ich möchte aber dass das CATPart so heißt wie die Section im Product schon heißt. Irgendwas ist bei dem myFileName dann falsch. Danke dir. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Nov. 2016 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für Jonny1
Um den Feher zu umgehen habe ich Zeilen geändert in: Dim myFileName As String = myPartNumberSec & "_" & Now.Date & ".CATPart" --> hier Laufwerk raus myPart.ExportData("C:\Desktop\Z_" & i, "CATPart") --> hier myFileNAme raus und Name mit Laufwerk angegeben My.Computer.FileSystem.RenameFile("C:\Desktop\Z_" & i & ".CATPart", myFileName)--> hier wollte ich jetzt den NAmen auf dem LAufwerk umbenennen in myFileName Jetzt gibt es keine Fehler ABER es erfolgt auf kein RenameFile; es heißt weiterhin Z_1.CATPart. javascript:InsertSMI(' %20');
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |