Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Messung Trägheitsvolumen umbenennen

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:   Messung Trägheitsvolumen umbenennen (303 mal gelesen)
Fugmann
Mitglied
Anwenderbetreuer


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

Beiträge: 182
Registriert: 08.05.2001

CATIA V5 R24
VBA 7.1

erstellt am: 13. Feb. 2018 23:09    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 CATIAner

Ich suche mir einen Wolf um einen Strukturbaumeintrag "einfach" umzubenennen.
Ich glaube ich hab' nicht nur ein Brett sondern einen ganzen Wald von Holz vor meinen Kopf.


Anbei mein Makrocode (in catvba)

'#############################################################################

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'#############################################################################

Sub machParameter()


If CATIA.Windows.Count = 0 Then
        MsgBox "Kein Dokument geöffnet!" & Chr(10) & Chr(10) & "Makro beendet!", vbOKOnly, "Fehler"
       
        Exit Sub
    End If

If Right(CATIA.ActiveDocument.Name, 11) = ".CATProduct" Then
       
    MsgBox "Nur .CATParts zulässig." _
            & Chr(10) & Chr(10) & "Makro beendet !"
                 
            Exit Sub
           
End If

'##############################################################################################
'Es wird geprüft ob ein Parameter mit dem Namen vorhanden ist, wenn nicht, wird dieser erzeugt.
'##############################################################################################

    Set oParameters = CATIA.ActiveDocument.Part.Parameters

'Parameter Mussparameter
    If ParameterExists(oParameters, "Mussparameter") Then
        Set oParam = oParameters.Item("Mussparameter")
        Else
        Set oParam = oParameters.CreateString("Mussparameter", "")
       
        'Erzeugter Parameter "Mussparameter" wird verdeckt
        oParam.Hidden = True
    End If


'Parameter Werkstoff

    If ParameterExists(oParameters, "Werkstoff") Then
        Set oParam = oParameters.Item("Werkstoff")
        Else
        Set oParam = oParameters.CreateString("Werkstoff", "")
    End If

'Parameter Gewicht

    If ParameterExists(oParameters, "Gewicht") Then
        Set oParam = oParameters.Item("Gewicht")
        Else
        Set oParam = oParameters.CreateDimension("Gewicht", "MASS", 0.001)
    End If

'#################################
'Parameter Werkstoff_ verknüpfen
'#################################

        Set MyMatPart = CATIA.ActiveDocument
        Set oPDocument = MyMatPart.Product                                          'CATPart zur Parameterfüllung auswählen
        Set oParameters = oPDocument.Parameters.Item("Werkstoff")                  'Parameter "Werkstoff" anwählen
        Set PropertiesParameter = oParameters                                      'Parameter(leer) zur Füllung mit Verknüpfung
       
        On Error Resume Next
       
        Set o2Document = MyMatPart                                                  'CATPart auswählen
                MyMatPart.Part.MainBody.Name = "Hauptkörper"                        'Hauptkörper in "Hauptkörper" umbenennen
        Set o2Parameters = oPDocument.Parameters.Item("Hauptkörper\Material")      'Parameter Standardparameter "Material" anwählen
        Set Quellparameter = o2Parameters                                          'Parameter des CATPart (Vater) zur Füllung mit Verknüpfung
       
        Set Relation = oPDocument.Relations
        Set Formel = Relation.CreateFormula("Formeltestverkn", "", PropertiesParameter, "`" & Quellparameter.Name & "`")  'Quellparameter (4. in Klammer)in "`Anführungszeichen und backquote`"


'''''###################################
'''''Parameter Trägheitsmessung einfügen
'''''###################################


    Set DyProduct = CATIA.ActiveDocument
    Set DyPart = DyProduct.Part
    Set HK = DyPart.MainBody

    Set selection1 = DyProduct.Selection
        selection1.Clear
        selection1.Add HK
       
CATIA.StartCommand ("Trägheit messen")

'MsgBox "Ich warte 2 Sekunden"
Sleep (2000)
'MsgBox "Ich habe 2 Sekunden gewartet"

''' Im Fenster "Trägheit messen" muss "Messung beibehalten" angewählt
''' und das Fenster mit OK geschlossen werden

selection1.Clear

''''''''########################################
''''''''      ab hier komme ich nicht weiter,
''''''''########################################

''' In der Messung wird Trägheitsvolumen.1 (bzw .2 oder .3 usw. erzeugt.
''' Diese Bezeichnung (Trägheitsvolumen.??) möchte ich "lediglich" mit diesem Makro in "HansPeter" umbenennen
''' um dies später mit dem Parameter "Gewicht" zu verknüpfen.

'''Benenne ich das Trägheitsvolumen per Hand um --> Eigenschaften Komponentenname HansPeter
'''und lasse das Makro nochmal laufen, verknüpft er mir die Parameter wie gewünscht.
''' Was mache ich falsch bzw. wie kann ich das Trägheitsvolumen umbenennen
''' bzw. schon vor dem Einfügen einen Namen vergeben???

'''''#############################
'''''Parameter Gewicht verknüpfen
'''''#############################


        Set MyGewPart = CATIA.ActiveDocument
        Set o_G_PDocument = MyGewPart.Product                                          'CATPart zur Parameterfüllung auswählen
        Set o_G_Parameters = o_G_PDocument.Parameters.Item("Gewicht")                  'Parameter "Gewicht" anwählen
        Set PropertiesParameter_G = o_G_Parameters                                      'Parameter(leer) zur Füllung mit Verknüpfung

        On Error Resume Next

        Set o_G_2Document = MyGewPart                                                  'CATPart auswählenbei dem Punkt an dem ich nicht mehr weiterkomme.                MyGewPart.Part.MainBody.Name = "Hauptkörper"                        'Hauptkörper in "Hauptkörper" umbenennen
'-->        Set o_G_2Parameters = o_G_PDocument.Parameters.Item("Trägheitsvolumen\Masse")      'Parameter Parameter "Masse" anwählen
        Set o_G_2Parameters = o_G_PDocument.Parameters.Item("HansPeter\Masse")      'Parameter Parameter "Masse" anwählen

        Set Quellparameter_G = o_G_2Parameters                                          'Parameter des CATPart (Vater) zur Füllung mit Verknüpfung

        Set Relation_G = o_G_PDocument.Relations
        Set Formel_G = Relation.CreateFormula("Formeltestverkn", "", PropertiesParameter_G, "`" & Quellparameter_G.Name & "`")  'Quellparameter (4. in Klammer)in "`Anführungszeichen und backquote`"


End Sub

Function ParameterExists(oParameters, sParam)
  On Error Resume Next
  ParameterExists = False
  s = ""
  s = oParameters.Item(sParam).Name
  If s <> "" Then ParameterExists = True
End Function

Kann mir jemand weiterhelfen   

Wäre für jeden Tipp dankbar, natürlich auch für eine Lösung.

Gruß
Fugmann

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 9896
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 13. Feb. 2018 23:38    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 Fugmann 10 Unities + Antwort hilfreich

Servus

Ich glaub nicht dass du die Trägheitsmessung umbenennen kannst.
Ich würde so vorgehen (Zugriff auf die Messung und String für die Formel ermitteln):

Code:
Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim selection1 As Selection
Set selection1 = partDocument1.Selection

selection1.Search "CATDMUSearchInformation.DMUMeasureType.Name=Trägheitsvolumen'.'*,all"

dim oMessung
Set oMessung = selection1.item2(1).value  'ggf auch die letzte Messung

dim oSubParameters as Parameters
Set oSubParameters = partDocument1.Product.Parameters.SubList (oMessung,false)

dim oParameter
for i = 1 to oSubParameters.count
  if InStr(oSubParameters.item(i).Name, "Masse") <> 0 then
      set oParameter = oSubParameters.item(i)
      exit for
  end if
next

'String zur Masse für die Formel
MsgBox partDocument1.product.parameters.GetNameToUseInRelation(oParameter)

End Sub


Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Fugmann
Mitglied
Anwenderbetreuer


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

Beiträge: 182
Registriert: 08.05.2001

CATIA V5 R24
VBA 7.1

erstellt am: 14. Feb. 2018 14:45    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


RunTime_error_13.png

 
Hallo Bernd.
Danke für die nächtliche Hilfestellung.

Leider bringt mit CATIA einen Fehler (s. Anhang)

In meinen CATParts sind keine zusätzlichen Parameter (Eigenschaften Product) vordefiniert.
Daher auch der Fehler nehme ich an.

Ich muss wirklich auf die Strukturbaumeinträge zugreifen.

Kann mir (verzweifelten CATIA-USER) jemand doch noch einen Tipp geben??

"Per Makro geht alles, was per Hand auch geht" so die Meinung meines Chef's

Gruß
Fugmann

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

Bertel
Mitglied



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

Beiträge: 295
Registriert: 03.04.2002

CATIA V5 R18 SP5
CATIA V5 R24 SP4
Win7/64
Intel Xeon X5647 16GB Ram
NVIDIA Quadro 5000
EUKLID
ViCADo 2009

erstellt am: 14. Feb. 2018 16:43    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 Fugmann 10 Unities + Antwort hilfreich

Hallo Fugmann,

wie wäre es ohne Makro.

Parameter: Dichte = 7850
Parameter: Gewicht mit Formel  smartVolume(`Bauteil`  ) *`Dichte`

Bauteil = Name des Körpers, dessen Gewicht ermittelt werden soll.

Gruß
Bertel

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 9896
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 14. Feb. 2018 17:55    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 Fugmann 10 Unities + Antwort hilfreich

Servus Fugmann

Zu meinem Makro: hat bei mir auch in einem Part ohne vordefinierte Parameter funktioniert.
Wird bei der Suche was gefunden? Gibt dir die Sublist die Parameter zurück? Läuft die Schleife durch?
Bertels Lösungsansatz gefällt mir besser als deiner. Ggf das Material suchen lassen und die Dichte als Parameter ermitteln.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Fugmann
Mitglied
Anwenderbetreuer


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

Beiträge: 182
Registriert: 08.05.2001

CATIA V5 R24
VBA 7.1

erstellt am: 16. Feb. 2018 12:11    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 Bernd
Hallo Bertel
Hallo CAD-Gemeinde

Danke für die Antworten.

@Bernd
Dein Makro läuft bis zur ( in meiem im Bild gezeigten ) Zeile und gibt nur die im Part StandardParameter zurück.

@Betrel&Bernd

Die Idee hatte ich auch schon aufgegriffen,jedoch:
Bei einer Geometrieänderung des Teiles aktualisiert sich der Parameter nicht automatisch.

Meine Idee war/ist das Gewicht der Messung sofort (ohne weitere Aktionen) im Parameter zu Übernehmen (was ja in der Messung auch passiert) Wenn man das Trägheitsvolumen.? per Makro nicht Umbennenen kann, werde ich wohl den USER über eine MsgBox auffordern, den Parameter händisch umzubenennen.
1 mal umbenannt und die Sache funzt.

Danke trotzdem für die Anregungen.

Gruß
Fugmann

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 9896
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Feb. 2018 12:19    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 Fugmann 10 Unities + Antwort hilfreich

Servus

Wenn du über eine Formel die Masse berechnest (SmartVolume) ändert sich das auch automatisch.
Beide Lösungen haben den Nachteil, dass die Aktualisierung des Teils sich merklich erhöhen kann, da immer eine Messung/Formel aktualisiert werden muss.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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)2018 CAD.de