| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | KISTERS 3DViewStation: Neuer Strukturvergleich ab sofort verfügbar, eine Pressemitteilung
|
Autor
|
Thema: Optimierung VBS (1299 mal gelesen)
|
Chaos_23 Mitglied Student
 Beiträge: 8 Registriert: 06.04.2006
|
erstellt am: 31. Mai. 2006 18:58 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen, ich schreibe gerade eine Volumenoptimierung. Ich habe zunächst manuell ein parametrisies Modell erstellt, dann eine manuelle Optimierung, wobei ich bezüglich eines Zielwertes und einem freien Parameter einen bestimmten Volumeninhalt erhalte. Alles funzt. Nun möchte ich das gleiche mit VBA oder mit VBScript. Das Modell ist ja schon vorhanden und ich komme auch an viele Einträge des Konstuktionsbaumes über VBS rann. Nun, wenn ich aber nach der Optimierung suche, die ich manuell erstellt habe, finde ich unter Part.Relations.Optimizations zwar den Eintrag Count, der mir anzeigt wieviele Optimierungen ich schon deffiniert habe, aber mehr auch nicht. Weißt jemand wo die sich befindet? So wie es hier im Forum beschrieben wird, ist es unter AnalysysDocument, aber das hat mein ActiveDocument auch nicht. Dann habe ich einfach die Optimierung, die ich manuell erstellt habe versucht durch das Programm zu Createn mit CreateOptimization. Das funzt recht gut, aber ich kann z.B. den Namen dieser Optimierung (mit Opt=myPart.Relations.Optimizations.CreateOptimization (<- geht) und Opt.Name = "Wasauchimmer"(<-geht nicht)) nicht ändern (was jedoch nicht sooo schlimm ist). Viel problematischer ist, dass bei den Eiträgen von Opt bei ObjectiveParameter bzw. TargetValue folgendes steht: Das Verfahren ObjectiveParameter bzw. TargetValue ist fehlgeschlagen. Weißt jemand worann das liegt bzw. wie man diese Werte zuweist? Viele Grüße, Chaos_23 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tapani. Mitglied

 Beiträge: 56 Registriert: 12.05.2006
|
erstellt am: 01. Jun. 2006 10:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Chaos_23
Hallo Chaos_23, ich bin mir nicht ganz sicher, ob ich dein Problem richtig verstanden habe, aber unter Part.Relations.Optimizations gibt es doch ein Item() mit dem man an die Optimization-Objekte ran kommt? TargetValue kann man nur auslesen, wenn als Optimierungs-Typ auch Zielwert ausgewählt ist. Bei einer allgemeinen Minimierung ist der Wert undefiniert. Also kann man vor dem Zugriff auf TargetValue den Typ überprüfen, oder man kapselt den Zugriff mit on error resume next... Beim Rest weiss ich so spontan auch nicht weiter.... CU Tapani ------------------ Don't take life so seriously.... it's not a permanent condition Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chaos_23 Mitglied Student
 Beiträge: 8 Registriert: 06.04.2006
|
erstellt am: 01. Jun. 2006 11:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo, danke erstmal für die Antwort. Ja, du hast mein Problem richtig verstanden, jedoch gibt es bei mir kein Item(). Ich weiß nicht warum. Anbei ein Screenshot vom Script und vom Überwachungsfenster. Unter Count sehe ich, daß ich zwei Optimierungen habe: die manuelle und Opt_1 welche vom Script erstellt wurde. An dessen Item() komme ich jedoch nicht rann. Auch TargetValue ist ausgewählt, trotzdem steht die Fehlermeldung da. Dazu habe ich auch ein Screenshot beigefügt. Grüße, Chaos_23 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied CAx-Spezialist
   
 Beiträge: 1056 Registriert: 05.08.2000 CATIA V5 R32 VB.Net C# WPF
|
erstellt am: 01. Jun. 2006 11:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Chaos_23
Hallo Chaos, für ObjectiveParameter kannst du folgendes machen: paramtarget = part.Parameters.RootParameterSet.AllParameters.Item(50) oOptimization1.ObjectiveParameter = paramtarget Das optimierte Volumen ergibt sich ja aus der fertigen Optimierung. Es ist daher einfacher, einfach über einen freien Paramter mittels Formel das fertige Volumen abzufragen(kann man ja dirket ins Model einbauen): smartVolume(`Hauptkörper`) Ich hoffe mal, es hilft was weiter Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite http:\\catia.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chaos_23 Mitglied Student
 Beiträge: 8 Registriert: 06.04.2006
|
erstellt am: 01. Jun. 2006 12:07 <-- editieren / zitieren --> Unities abgeben:         
|
Chaos_23 Mitglied Student
 Beiträge: 8 Registriert: 06.04.2006
|
erstellt am: 01. Jun. 2006 13:08 <-- editieren / zitieren --> Unities abgeben:         
Falls Interesse besteht, sieht der "bei mir" funktionierende Skript folgendermaßen aus: Private Sub CBT_Opt_Click() Set CAD = GetObject("", "CATIA.Application") Set mydoc = CAD.ActiveDocument Set myPart = mydoc.Part Set parameterList = myPart.Parameters LBL_1.Caption = mydoc.fullname 'Wert ändern parameterList.Item("Segment_1\W_deg").ValuateFromString ("5deg") mydoc.Part.Update 'Optimierung Set Opts = myPart.Relations.Optimizations Set Opt_1 = Opts.CreateOptimization Opt_1.AlgorithmType = 1 Opt_1.OptimizationType = 2 Opt_1.FreeParameters.AddFreeParameter (parameterList.Item("Segment_1\Geometrie\Ebene.3\Offset")) Opt_1.ObjectiveParameter = (parameterList.Item("Segment_1\Fuellvolumen\Volumen")) 'Bild schießen Set MyWindow = CFile.ActiveWindow.NewWindow Set MyViewer = MyWindow.ActiveViewer MyViewer.FullScreen = True MyViewer.CaptureToFile catCaptureFormatJPEG, "D:\S1_5.jpg" MyWindow.Close MyViewer.FullScreen = False End Sub 'Opt_1.ObjectiveParameter = parameterList.Item("Segment_1\Fuellvolumen\Volumen") 'Set lastItem = myPart.Optimizations.Item("Fuelltiefe")
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
baksuz Mitglied
 Beiträge: 1 Registriert: 11.08.2020
|
erstellt am: 11. Aug. 2020 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Chaos_23
|