Hallo an alle Tüftler und V5 Kollegen,
ich stehe kurz vor dem Fenstersturz und hoffe hier auf Hilfe.
Per Makro soll in etwa die Funktion "SAVE AS Frozen linked with cache" ausgeführt werden. Der Cache liegt lokal und die cgr's haben als Name einen Zeitstempel und nicht die Bezeichnung im CATProdukt => hier liegt das Problem... benötigt wird die korrekte Bezeichnung.
Viel gelesen und probiert habe ich schon und die Bücher auch hier liegen...
Fehlt "nur" noch der richtige CODE.
Hab eine Makro, welche den kompletten Baum traversiert und als simplify + cgr speichert. Dies ist unbrauchbar, da die Bauteile nicht vereinfacht werden sollen.
Im Forum habe ich dies hier gefunden und völlig korrekt läuft dies auch nicht, da es mit CA Modellen und Unterebenen Probleme gibt. Für jede Ebene wird ein cgr mit komplettem Inhalt herausgeschrieben. Schrauben etc., sind referenziert und sollen auch nur einmal abgelegt werden, da sie später über eine Struktur wieder "angezogen" werden. Das Produkt soll NICHT im Designmode geladen werden müssen...
CODE aus dem Forum:
Bilder anbei.... In dem größten cgr finden sich dann dummerweise ALLE Bauteile wieder... :O(
Sub CATmain()
CATIA.DisplayFileAlerts = False
Dim myproduct As Product
dim Doc as document
Set myproduct = CATIA.ActiveDocument.Product
set Doc = myproduct.referenceproduct.parent
' Enter Absolute Savepath here
Dim bsppath As String
bsppath = "C:\temp\Neuer Ordner2\"
Dim Abssavepath As String
Abssavepath = InputBox("Please enter the Absolute Save Path", "Save Path", bsppath)
' Launch the SAVEROUTINE
Savethisdocument myproduct, Abssavepath
' Save Mainproduct
'Doc.SaveAs (Abssavepath & myproduct.PartNumber & Right(Doc.Name, Len(Doc.Name) - InStrRev(Doc.Name, ".") + 1))
CATIA.DisplayFileAlerts = True
' On end
MsgBox "Finished"
End Sub
Sub Savethisdocument(Myprod As Product, Abssavepath As String)
Dim currentprod As Product
Dim Doc As Document
On Error Resume Next
For i = Myprod.Products.Count To 1 Step -1
Set currentprod = Myprod.Products.Item(i)
Set Doc = currentprod.ReferenceProduct.Parent
Doc.SaveAs (Abssavepath & currentprod.PartNumber & Right(Doc.Name, Len(Doc.Name) - InStrRev(Doc.Name, ".") + 1))
Doc.ExportData (Abssavepath & currentprod.PartNumber & Right(Doc.Name, Len(Doc.Name) - InStrRev(Doc.Name, ".") + 1))&".cgr", "cgr"
If currentprod.Products.Count <> 0 Then
Err.Clear
Savethisdocument currentprod, Abssavepath
End If
If Err.Number <> 0 Then
MsgBox (Err.Description)
End If
MsgBox ("I am Here: " & currentprod.PartNumber)
Next
On Error GoTo 0
End Sub
>>>>Weiter habe ich eine Makro für Simpl und Export, welche eigentlich nur nicht Simpln dürfte.... und dann wäre das Kunststück gelungen...
>>>>Hier der Code für die SUB... da die Main länger ist, muss erstmal der SUB-Code reichen...
>>>> prod ist Übergabe eines Produkts, number ist Übergabe des Namens,Ordner_T ist die Ordnertiefe zum "Struktur-Tingeln"..
'SPEICHERFUNKTION MIT PARTNAMEN AUFRUFEN
F_simplify prod, number, Ordner_T
Sub F_simplify(prod_to_simplify As Product, name_simplify_object As String, aktuelleEbene As integer)
Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument
Dim product1 As Product
Set product1 = productDocument1.Product
Dim groups1 As CATBaseDispatch
Set groups1 = product1.GetTechnologicalObject("Groups")
Dim group1 As Group
Set group1 = groups1.Add()
group1.AddExplicit prod_to_simplify
Dim simplifications1 As CATBaseDispatch
Set simplifications1 = product1.GetTechnologicalObject("Simplifications")
Dim Stufe as double
If Genauigkeit = 1 Then
Stufe = 0.06
End If
If Genauigkeit = 2 Then
Stufe = 0.3
End If
If Genauigkeit = 3 Then
Stufe = 0.6
End If
If Genauigkeit = 4 Then
Stufe = 1.0
End If
Dim document1 As Document
Set document1 = simplifications1.ComputeSimplification(group1,Stufe)
Dim optimizerWorkBench1 As Workbench
Set optimizerWorkBench1 = productDocument1.GetWorkbench("OptimizerWorkBench")
Dim long1 As Long
long1 = group1.CountExplicit()
group1.RemoveExplicit 1
groups1.Remove group1
document1.Activate
document1.SaveAs EbenenArray(aktuelleEbene)&"\"&name_simplify_object&".cgr"
End Sub
Hoffe hier auf gute Hilfe für einen "Nerd" ;O)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP