Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Optimierung VBS

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:  Optimierung VBS (1236 mal gelesen)
Chaos_23
Mitglied
Student

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

Beiträge: 8
Registriert: 06.04.2006

erstellt am: 31. Mai. 2006 18: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

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



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

Beiträge: 56
Registriert: 12.05.2006

erstellt am: 01. Jun. 2006 10:37    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 Chaos_23 10 Unities + Antwort hilfreich

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....

CUSee You
  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

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

Beiträge: 8
Registriert: 06.04.2006

erstellt am: 01. Jun. 2006 11:21    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


Opt_Script.jpg


Opt_1.jpg

 
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
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 01. Jun. 2006 11:59    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 Chaos_23 10 Unities + Antwort hilfreich

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

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

Beiträge: 8
Registriert: 06.04.2006

erstellt am: 01. Jun. 2006 12:07    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

Danke, ihr seit die Besten!!! ES FUUUUNZT     

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

Chaos_23
Mitglied
Student

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

Beiträge: 8
Registriert: 06.04.2006

erstellt am: 01. Jun. 2006 13:08    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

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


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

Beiträge: 1
Registriert: 11.08.2020

erstellt am: 11. Aug. 2020 10:00    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 Chaos_23 10 Unities + Antwort hilfreich

I just want to thank you a lot.
For all given information, they helped me.


[Diese Nachricht wurde von baksuz am 11. Aug. 2020 editiert.]

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