Autor
|
Thema: body Name auslesen (3153 mal gelesen)
|
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 06. Dez. 2011 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich möchte gerne unter meinem Hauptkörper einen Knoten auswählen und diesen in einer Formel verarbeiten: Formel.93: CN_Overflow = smartVolume(`Hauptkörper\Zusammenbauen.1\Körper.Aussen` ) Mit einer selection element2 kann ich den Body auswählen auf die visual .Properties komme ich, auf den Namen auch( oSel.Item(1).Value ) Was mir fehlt ist der Pfad zu meinem Body (im Beispiel Körper.Aussen). Kann mir da jemand auf die Sprünge helfen. Vielen Dank Norbert
------------------ V5R20 Catia + Smarteam 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: 06. Dez. 2011 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Servus IMHO brauchst du nicht den ganzen Pfad, sondern nur den Namen des Körpers (bei klappt es zumindest so): Formel.93: CN_Overflow = smartVolume(`Körper.Aussen`) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 06. Dez. 2011 16:46 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, vielen Dank für die Info, bei mir tut er leider nicht. Ich habe mit dem Macrorecorder das hier aufgezeichnet. Code: Set formula1 = relations1.CreateFormula("Formel.91", "", dimension1, "smartVolume(`Hauptkörper\Zusammenbauen.3\Körper.Innen\Entfernen.1\Körper.Aussen` ) ")
wenn ich es editiere:
Code:
Set formula1 = relations1.CreateFormula("Formel.91", "", dimension1, "smartVolume(`Körper.Aussen` ) ")
erstellt er mir die Formel mit einem gelben Ausrufezeichen, der möchte da anscheinend schon den genauen Pfad. Ich kann mir höchstens noch eine Einstellung in den Optionen vorstellen. G Norbert ach ja vielleicht noch wichtig : Ich befinde mich im Hauptkörper und habe mit boolschen Verknüpfungen gearbeitet ------------------ V5R20 Catia + Smarteam
[Diese Nachricht wurde von cmb am 06. Dez. 2011 editiert.] 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: 06. Dez. 2011 17:35 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Servus Versuch mal den Namen über die Methode GetNameToUseInRelation des Parameters-Objekt zu bestimmen. zB (ungetestet): Code: dim Bodyname as String Bodyname = partDocument.Product.Parameters.GetNameToUseInRelation(oBody) 'hier zum Beispiel den Körper (ggf über die Selektion übergeben)) Dim formel as string formel = "smartvolume(" & Bodyname & ")" Set formula1 = relations1.CreateFormula("Formel.91", "", dimension1, formel)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 14. Dez. 2011 15:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, vielen Dank für die Info das soll laut Hilfe ja funktionieren aber ich bringe es nicht zum laufen: Code: Sub CATMain()Set oDoc = CATIA.ActiveDocument Set oPart = oDoc.Part Set Koerper = oPart.Bodies Dim iSel, iStatus, sFilter(0) Set iSel = CATIA.ActiveDocument.Selection sFilter(0) = "Body" iStatus = iSel.SelectElement3(sFilter, "Part selektieren / ESC bei keine Auswahl", False, CATMultiSelTriggWhenSelPerf, False) If iStatus = "Normal" Then Else MsgBox "Abbruch(Cancel) der Auswahl", vbOKOnly + vbCritical, " Abbruch " Exit Sub End If myname = oDoc.Selection.Item(1).Value.Name Dim Bodyname 'As String Bodyname = oDoc.Selection.GetNameToUseInRelation '' Meldung: unterstützt diese Eigenschaft oder Methode nicht Dim formel As String Dim relations1 Set formula1 = relations1.CreateFormula("Formel.10", "", dimension1, "smartVolume(`" & Bodyname & "`)*dichte *1kg / 1m3") oPart.Update End Sub
Anscheinend habe ich in der Zeile Bodyname = oDoc.Selection.GetNameToUseInRelation noch einen Fehler. Gruß Norbert ------------------ V5R20 Catia + Smarteam 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: 14. Dez. 2011 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Servus Aus dem hohlen Bauch würde diese Änderung empfehlen (du must ein Objekt (also den Körper) und nicht die ganze Selektion übergeben: Code: Bodyname = oDoc.Product.Parameters.GetNameToUseInRelation(iSel.Item(1).Value)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 15. Dez. 2011 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, vielen Dank für deinen Hinweis, das war die Lösung. Sollte jemand ähnliche Probleme haben s.u. Gruß Norbert Code:
Sub CATMain()On Error Resume Next Dim oDoc As Document Dim oProd As Product Set oDoc = CATIA.ActiveDocument Set oProd = oDoc.Product ' Set Publics = oProd.Publications Dim ref1 'As String Dim part1 As Part Set part1 = oDoc.Part Dim relations1 As Relations Set relations1 = part1.Relations Dim para1 As Parameters Set para1 = oProd.UserRefProperties 'loeschen der Vorhandenen User Parameter If MsgBox("Vorhandene UserParameter löschen") Then CATIA.ActiveDocument.Selection.Clear Dim i As Integer For i = 1 To para1.Count Set oParameter = para1.Item(i) Set selectList = CATIA.ActiveDocument.Selection If MsgBox("loschen von:" & oParameter.Name, 4) = vbYes Then selectList.Add oParameter End If Next selectList.Delete End If Dim dim1 As Dimension Set dim1 = para1.CreateDimension("CN_VOLUME", "VOLUME", 0#) dim1.ValuateFromString "0mm3" Dim formula1 As Formula Set formula1 = relations1.CreateFormula("Formel.Vmax", "", dim1, "smartVolume(`Hauptkörper` ) ") formula1.Rename "Formel.Vmax" oProd.Update If MsgBox("Bin ich eine Flasche?", vbYesNo, "Datei neu aus") = vbYes Then Dim dim2 As Dimension Set dim2 = para1.CreateDimension("CN_Overflow", "VOLUME", 0#) dim2.ValuateFromString "0mm3"
MsgBox "Bitte den Körper.innen oder Körper.Kern für das Overflow Volumen im Baum auswählen" Dim iSel, iStatus, sFilter(0) Set iSel = oDoc.Selection sFilter(0) = "Body" iStatus = iSel.SelectElement3(sFilter, "Part selektieren / ESC bei keine Auswahl", False, CATMultiSelTriggWhenSelPerf, False) If iStatus = "Normal" Then Else MsgBox "Abbruch(Cancel) der Auswahl", vbOKOnly + vbCritical, " Abbruch " Exit Sub End If
Dim Bodyname As String Bodyname = oDoc.Product.Parameters.GetNameToUseInRelation(iSel.Item(1).Value) Dim formel As String formel = "smartVolume" & "(`" & (Bodyname) & "`)" ''Set formula1 = relations1.CreateFormula("Formel.91", "", dimension1, formel) Dim formula2 As Formula Set formula2 = relations1.CreateFormula("Formel.Voverflow", "", dim2, formel) ''rec Set formula1 = relations1.CreateFormula("Formel.58", "", dimension1, "smartVolume(`Hauptkörper\Zusammenbauen.2\Körper.Kern` ) ") formula2.Rename "Formel.Voverflow" oProd.Update End If End Sub
------------------ V5R20 Catia + Smarteam 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: 15. Dez. 2011 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für cmb
Servus Danke für die Rückmeldung. Anbei einige weiter Anregungen: Warum verwendest du "On Error resume next"? (manchmal sinnvoll, wenn dies bewusst genutzt wird (ausgewertet)) Was passiert wenn der Hauptkörper mal umbenannt wurde? (Set formula1 = relations1.CreateFormula("Formel.Vmax", "", dim1, "smartVolume(`Hauptkörper` ) ")) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cmb Mitglied Systembetreuer
Beiträge: 500 Registriert: 12.07.2002 CATIA V5-6R2016 64bit Smarteam R22.6 Moldflow Adviser 2014 Lenovo Think Pad P90
|
erstellt am: 15. Dez. 2011 11:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, die Error Zeile kann ich eigentlich herausnehmen, da hab ich mir einen anderen Kopf kopiert. Der Body Hauptkörper ist bei uns eigentlich gesetzt. Der sollte nicht geändert werden. Was eigentlich auch immer gleich ist ist ein Körper.Aussen und ein Körper.Kern. Wir sind in der Produktentwicklung von Kunststoffteilen.Da ist es sinnvoll schnell die Form von Schieber und Kerngeometrie darzustellen. G Norbert ------------------ V5R20 Catia + Smarteam [Diese Nachricht wurde von cmb am 15. Dez. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|