Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Abfragen bei Formeleintrag

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:  Abfragen bei Formeleintrag (2253 mal gelesen)
MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 23. Jun. 2010 09:31    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


Fehlermeldung.jpg

 
Hi Gemeinde ;-)

mein aktuelles Problem ist, dass ich eine Formel nicht per Makro erstellen und mit einem Parameter verknüpfen kann. Es soll ein benutzerdefinierter Parameter in den Properties mit dem Gewicht des Bauteils ausgestattet werden. Diese soll sich automatisch anpassen wenn das BAuteil geändert wird. Mit der verwendeten Formel haben wir gute erfahrungen gemacht.

ich mache das mit dem Befehl relations.CreateFormula("Benennung", "Kommentar", Parameter, "ToString(round((smartVolume(PartBody ) *`BAUTEIL\Steel\Steel.1.1\Density`)/0.5kg)*0.5)").

Wie ihr seht ist die Formel sehr schön ;-). Allerdings verlangt die bei manuellem Eintrag eine Abfrage (siehe Bild). Diese Abfrage verhindert, dass ich es automatisch ausführen kann.

Jetzt die Frage an euch: wie kann ich eine solche Abfrage mit einem Makro erschlagen?

Alternativlösungen, die die Anforderungen erfüllen sind auch gerne gesehen.

freu mich auf eure Hilfe!!!

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 24. Jun. 2010 00: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 MakroNovize 10 Unities + Antwort hilfreich

Hallo MakroNovize,

das funktioniert auch automatisiert so wie manuell. Die "Info" kommt dann einfach nicht! Mein Beispiel funktionierte im solo geladenen CATPart so:

Code:
Option Explicit

Sub CATMain()
   
    Dim iParam As Parameter
    Dim iRel As Relation
   
    Set iParam = CATIA.ActiveDocument.Part.Parameters.CreateString("Masse", "")
    Set iRel = CATIA.ActiveDocument.Part.Relations.CreateFormula("Benennung", _
                "Kommentar", iParam, _
                "ToString(round((smartVolume(PartBody) * BAUTEIL\Steel\Steel.1.1\Density) / 0.5kg) * 0.5)")
   
    CATIA.ActiveDocument.Part.Update
   
    MsgBox iParam.ValueAsString
   
End Sub



mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 24. Jun. 2010 09:42    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

Hi Lusilnie,

danke für die Antwort. Ich bin erschrocken als ich das gelesen habe. Voller entsetzen hab ich mich daran gemacht deine Aussage zu wiederlegen. Nur um am Ende dir recht geben zu können. Ich muss meinen Code nochmal genauer analysieren wo das Problem liegt, denn im Prinzip hab ich genau das gleiche gemacht wie du, außer dass ich die Formel einem Benutzerdefinierten Parameter in den Properties zugewiesen habe. Auch das funktioniert nur ich bin wohl zu blöd dazu. Wahrscheinlich is nur mal wieder ne Variable falsch deklariert.

Danke nochmal für deine aufopferungsvolle Hingabe 

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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

MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 24. Jun. 2010 14:56    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

LoL Is CATIA launisch.

Der Vorschlag von dir Lusilnie funktioniert nur begrenzt!!!

In dem Projekt, in dem das Makro eingesetzt werden soll, haben die Teile einen "-" Bindestrich im Namen. Dieser blöde Strich verhindert es, dass die Formel eingetragen wird!

Option Explicit
Sub CATMain()
   
    Dim iParam 'As Parameter
    Dim iRel 'As Relation
    Dim sPartName
   
    'Set iParam = CATIA.ActiveDocument.Part.Parameters.CreateString("Masse", "")
    sPartName = CATIA.ActiveDocument.Part.Name
    Set iParam = CATIA.ActiveDocument.Part.Parameters.Item("MASS")
    Set iRel = CATIA.ActiveDocument.Part.Relations.CreateFormula("Benennung", _
                "Kommentar", iParam, _
                "ToString(round((smartVolume(PartBody) * " & sPartName & "\Steel\Steel.1.1\Density) / 0.5kg) * 0.5)")
   
    CATIA.ActiveDocument.Part.Update
   
    MsgBox iParam.ValueAsString
   
End Sub


Mit dem Code kann manns ganz leicht Versuchen. Einmal dem aktiven part nen Namen ohne und einmal mit - geben. Ihr werdet den UNterschied bemerken. Achja es muss ein benutzerdefinierter Parameter mit dem Namen "MASS" in den Properties hinterlegt sein.

Hier noccmal ein Dankeschön an Lusilnie, ohne dich wäre ich nie auf das wahre Problem gestoßen.

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Jun. 2010 19:06    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 MakroNovize 10 Unities + Antwort hilfreich

Servus
Und wenn du den Namen immer in Hochkomma setzt? (ungetestet)

"ToString(round((smartVolume(PartBody) * " & chr(39) & sPartName & chr(39) & "\Steel\Steel.1.1\Density) / 0.5kg) * 0.5)")

Gruß
Bernd

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

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Jun. 2010 20:03    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 MakroNovize 10 Unities + Antwort hilfreich

Hallo Zusammen,

die Hochkommas sind die Lösung, es gibt aber ein eleganterer und sicherer Weg um diese zu erzeugen: GetNameToUseInRelation.
In folgender Thread z.B: Formula; auf bestehenden Parameter zugreifen und in Formel verwenden

Gruß,
Zoltan

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

MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 25. Jun. 2010 08:54    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

@ Bernd: deine Variante geht bei mir gar nicht 
@ Zoltan: deine Variante geht, aber auch nur wenn kein BIndestrich (-) im Partnamen ist.

Es scheint verflucht zu sein

Gruß und Danke für eure Bemühungen

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Jun. 2010 18:13    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 MakroNovize 10 Unities + Antwort hilfreich

Servus
Versuch es mal mit dieser Formel:
"ToString( (smartVolume(`PartBody` )* `" & sPartName & "\Steel\Steel.1.1\Density` /1kg))"

Was machst du wenn ein anderes Material zugewiesen ist?

Gruß
Bernd

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

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 26. Jun. 2010 10:42    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 MakroNovize 10 Unities + Antwort hilfreich

Servus
Hier findest du einen Beitrag wie man die Dichte unabhängig vom Materialnamen herausfinden kann.

Gruß
Bernd

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

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

MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 28. Jun. 2010 10:13    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

Hi Bernd,

dein Beispiel hat fast zum Ziel geführt!!! 
Mit deiner Zeile hat es Funktioniert. Ich habe schonmal daran gedacht was passiert wenn es kein Stahl ist, allerdings hab ich es nicht weiter verfolgt. Ich wollte ersteinmal, dass es mit Stahl funzt. Nu hab ich aber mit deinem Hinweis zu Dichte das ganze Problem noch besser lösen können.

Sub CATMain()
   
    Dim iParam 'As Parameter
    Dim iRel 'As Relation
    Dim sPartName
    Dim iRelName
    Dim pMat
   
    sPartName = CATIA.ActiveDocument.Part.Name
    Set pMat = CATIA.ActiveDocument.Part.Parameters.Item("Density")
    Set iParam = CATIA.ActiveDocument.Part.Parameters.Item("MASS")
    Set iRel = CATIA.ActiveDocument.Part.Relations.CreateFormula("Benennung", _
                "Kommentar", iParam, _
                "ToString(round(smartVolume(`PartBody` )* " & pMat.Value & _
                " /0.01kg*0.01)")
             
   
    CATIA.ActiveDocument.Part.Update
    MsgBox iParam.ValueAsString
   
End Sub

Jetzt passt sich das Gewicht an wenn die Geometrie geändert wird und die Dichte wird automatisch ausgelesen. Noch geiler wäre es natürlich wenn die Dichte sich automatisch anpassen würde. Das versuch ich bei Gelegenheit noch zu lösen.

In diesem Zug ist mir aber noch ein weiteres Problem aufgefallen. Hinter dem Gewicht sollte noch "kg" stehen. Kann ich das in eine Formel integrieren? Bei mir hat es bisher noch nicht funktioniert.

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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