Autor
|
Thema: Messung Oberfläche erstellen (2720 mal gelesen)
|
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 30. Apr. 2009 11:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich möchte per CATScript eine Messung (Fläche in cm2) erstellen und im Baum als solches sehen, damit man später eine Formelverknüpfung (Parameter) auf das Messergebniss legen kann. Siehe Bild Kann mir da jemand helfen? Der Macrorecorder zeichnet einfach die Messung nicht auf. grrrrr... MFG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 01. Mai. 2009 09:46 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, solche Messungen kann man auch als Formel für eine Parameter speichern und das wird sogar von Makrorekorder aufgenommen. 1) Surface oder Body erstellen (das hast du bereits) 2) Neues Parameter der Typ Area anlegen 3) Add Formula 4) a) Für Surface: unter Measures area(surface) auswählen und als Argument den Surface angeben (falls mehrere, dann addieren) b) Für Body: unter Part measures smartWetarea(Body) auswählen und als Argument den Body übergeben 5) falls gefragt wird, Ja antworten (auf globalen Update auch diese Parameter updaten) Falls das Code von Rekorder dir nicht genug ist, waren hier im Forum schon einige Einträge, wie man Formel auf Geometrie beziehen kann und für Smartvolume (ähnlich zu SmartWetarea) findest du auch einige Treffer. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 04. Mai. 2009 13:31 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antwort. Ich muß die Aufgabe aber dennoch über Messen erledigen, denn nur so bekomme ich einen Automatismus hin. Alle Flächen die ich Unter dem GeoSet "angenaeherte Galvanikflaeche" stehen werden automatisch gemessen und über Formel in dem Parameter verknüpft. siehe Bild Kann ich eine Messung nicht via CATScript anlegen??? Das muß doch machbar sein? MFG Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 04. Mai. 2009 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, ich bin der Meinung, das folgendes genau den selben Ergebnis bringt:
Code: Sub CATMain()Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim dimension1 As Dimension Set dimension1 = parameters1.CreateDimension("Area.1", "AREA", 0#) dimension1.Rename "Bereich.1" Dim relations1 As relations Set relations1 = part1.relations Dim formula1 As Formula Set formula1 = relations1.CreateFormula("Formula.1", "", dimension1, "area(`angenaeherte Galvanikoberflaeche\Flaeche.1` ) ") formula1.Rename "Formula.1" part1.Update End Sub
Gruß, Zoltan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 04. Mai. 2009 16:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoldan, ... ja schon. Aber Du beziehst dich immer auf Fläsche.1 und nicht auf das gesammte "GeoSet" Wenn ich das GeoSet messe und mich auf diese Messung beziehe kann ich ins GeoSet Flächen stecken oder entfernen wie ich will. Alles wird automatisch mitgezogen. Dann habe ich dieses probiert, das geht irgendwie nicht Set formula1 = relations1.CreateFormula("Formula.1", "", dimension1, "area(`angenaeherte Galvanikoberflaeche` ) ") Wie setze ich die Formel auf das ganze Geometrische Set? Mfg Hokay Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 04. Mai. 2009 18:25 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, in allen deiner Bilder hattest du immer nur eine Fläche im Geoset... Fläche einer Geoset kann man leider so automatisch nicht messen. Wenn du es aber interaktiv machst, werden auch nur die einzelne Flächenstücke addiert. Das kannst du auch nachprogrammieren. SPAWorkbench (wie man aus Makro messen kann, es erscheint aber nicht im Baum) würde eine Messung der Geoset ermöglichen, bleibt aber nicht assoziativ. Falls du es unbedingt im Baum haben willst, dann bleibt dir nur Catia.StartCommand("Measure Item"), ich weiß aber nicht, wie du an die Name der Messung rankommst, außer mit einer Suche wie 'Digital Mockup'.Measure;all. Das scheint mir aber nicht der richtiger Weg zu sein. Wenn du ein Solid (Body) hättest, da wäre die Funktion smartWetArea verwendbar, funktioniert aber für Geosets nicht. Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 05. Mai. 2009 08:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan, hallo Rest der Gemeinde. ich stelle hier mal ein Part zur Verfügung. So hätte ich das Gerne. Der CATScript soll einen Parameter anlegen der alle Flächen des Geometrischen Sets "angenaeherte Galvanikoberfaeche" addiert wiedergibt. Wenn es ohne Messung im Baum geht ist mir das egel. Wichtig ist nur, es muß assoziativ sein. Das heißt, Fläche raus oder Fläche rein muß sich auf den Parameterwert auswirken. Ich brauche weitere Hilfe. MFG Hokay [Diese Nachricht wurde von Hokay am 05. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 05. Mai. 2009 19:38 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
Hallo Hokay, ich bin der Meinung, dass das nicht geht. Die Makros in CATIA sind für sowas einfach nicht geeignet. Es gibt keine Ereignis, an dem du dich so richten könntest. (Es sei denn, du findest in KWA ein Reaction, was beim Einfügen/Löschen von Elementen im Geoset wirkt.) Was ich dir bieten kann, ist ein Skript, was -ein Geoset nimmt, -prüft, ob ein Parameter vorhanden ist oder legt es an -stellt den neuen Formel zusammen -fügt es in einen Formel ein so, dass das Part nicht zugemüllt wird. Diesen Skript musst du allerdings per Hand nach jede Änderung aufrufen. Es darf im aktiven Fenster nur ein Part vorhanden sein.
Code: Sub CATMain() Dim partDocument1 As PartDocument Set partDocument1 = CATIA.ActiveDocument Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters Dim relations1 As relations Set relations1 = part1.relations Dim sAreaParamName As String sAreaParamName = "angenaeherte_Galvanikoberflaeche" Dim sAreaFormulaName As String sAreaFormulaName = "angenaeh_Galv_Formula" Dim sFlaechenGeosetName As String sFlaechenGeosetName = "angenaeherte Galvanikoberflaeche" 'Versuchen, Parameter anzusprechen, wenn vorhanden Dim dimension1 As Dimension On Error Resume Next Set dimension1 = parameters1.Item(sAreaParamName) If Err.Number <> 0 Then On Error GoTo 0 Set dimension1 = parameters1.CreateDimension(sAreaParamName, "AREA", 0#) End If On Error GoTo 0 Dim oFlaechenGeoSet As HybridBody Set oFlaechenGeoSet = part1.HybridBodies.Item(sFlaechenGeosetName) Dim oHybridShape As HybridShape 'Formel zusammenstellen 'falls es zu lang wäre (weiß die maximale Länge nicht) 'dann muss es in mehrere Stücke gebrochen werden Dim sTempFormula As String sTempFormula = "" Dim iFlaechen As Integer For iFlaechen = 1 To oFlaechenGeoSet.HybridShapes.Count Set oHybridShape = oFlaechenGeoSet.HybridShapes.Item(iFlaechen) 'hier kannst du ggf. andere Datentypen abfangen: If TypeName(oHybridShape) <> "Surface" Then If iFlaechen > 1 Then sTempFormula = sTempFormula & " + " End If sTempFormula = sTempFormula & " area(`" & oFlaechenGeoSet.Name & "\" & oHybridShape.Name & "` ) " End If Next 'Versuchen, Formel anzusprechen, wenn vorhanden 'dann oben berechnete Formel zuweisen Dim formula1 As Formula Set formula1 = dimension1.OptionalRelation If formula1 Is Nothing Then Set formula1 = relations1.CreateFormula(sAreaFormulaName, "", dimension1, sTempFormula) Else formula1.Modify sTempFormula part1.UpdateObject formula1 End If part1.Update End Sub
Vorteil obiger Code ist, dass wenn Parameter schon vorhanden war, wird es nicht neu angelegt. Somit bleiben Links und weiterführende Formel erhalten.Was du evtl. noch machen könntest: den Skript in den Part integrieren (unter KWA gibt es sowas) und mit einen Parameter oder sowas auslösen. Wenn jemand was besseres weiß, soll sich melden. Gruß, Zoltan [Diese Nachricht wurde von zoltan.bekesi am 05. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 14. Mai. 2009 10:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich bin immer noch auf der Suche nach Möglichkeiten das Zerlegen via CATScript zu erledigen Dabei bin ich über folgenden Befehl gestolpert: CATIA.StartCommand("Disassemble") bei vorselektierter Ableitung macht dieser Befehl genau das was er soll es fehl nur noch das "OK" (Drücken des "Entertaste") !!! Wie bekomme ich das noch hin??? SendKeys... geht im CATScript nicht oder ich blicke es nicht. Kann mir jemand weiterhelfen??? -------------------------------- Das gleiche könnte ich dann auch auf meine Messung anwenden, die mir auch noch fehlt. CATIA.StartCommand("Measure Item") Auch hier fehlt nor noch die "Entertaste" Mit freundlichen Grüßen Hokay
Anmerkung: Wir arbeiten mit deutscher Umgebung da heißen die Beiden Befehle: CATIA.StartCommand("Zerlegen") Beim Zerlegen auf Deutsch gibt es aber eine Besonderheit hier gibt es dummerweise auch im Assemblydesign noch ein Zerlegen Abhilfe kann man sich über einen Alias schaffen. und CATIA.StartCommand("Element Messen")
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hokay Mitglied
Beiträge: 143 Registriert: 27.07.2004 Win7-Enterprice Catia V5 R24 SP1
|
erstellt am: 18. Mai. 2009 12:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, geht das mit dem OK nicht oder hatt den Beitrag noch nicht der/die Richtige gelesen? Eventuell warte ich ja vergebens auf eine Antwort??? MFG Hokay [Diese Nachricht wurde von Hokay am 18. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
theshadog Mitglied
Beiträge: 61 Registriert: 18.03.2009
|
erstellt am: 26. Mai. 2009 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Hokay
|