Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX
  Formel aus Excel lesen

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für NX
Autor Thema:  Formel aus Excel lesen (2612 mal gelesen)
schieber-designer
Mitglied
Student

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

Beiträge: 9
Registriert: 06.09.2017

NX 11.0.1.11

erstellt am: 06. Sep. 2017 09: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

Hallo zusammen,

mein erster Beitrag hier, ich hoffe ihr könnt mir helfen:

Ich habe ein Bauteil, das mehrere Ausführungen kennt. Abhängig von der gewählten Ausführung werden Koordinatensysteme positioniert, an denen dann andere Formelemente ausgerichtet werden.

Ich habe mir das so gedacht, dass ich die Maße und Winkel aus einer Excel-Tabelle einlese :

Tabelle_Pfad="C:\Varianten"
KSYS1inX_Liste=ug_read_list(Tabelle_Pfad,"A5", FALSE)  erzeugt eine Liste
KSYS1inX=nth(Variante_Index,KSYS1inX_Liste)            wählt ein Listenelement aus

Das funktioniert super solange Zahlenwerte in Excel stehen. Jetzt möchte ich aber mit dem System eine Formel aus Excel auslesen.
Bei Variante 1 ist KSYS1inX immer 10 mm, bei der Variante 2 ist KSYS1inX jedoch abhängig von einem Ausdruck "Breite", der bereits in NX existiert. Daher schreibe ich "Breite" in die entsprechende Zelle in Excel. Der importierte Listenausdruck in Excel sieht dann folgendermaßen aus:

KSYS1inX_Liste={10,"Breite"}

Wenn die zweite Variante gewählt ist, heißt der Ausdruck dementsprechend:

KSYS1inX="Breite"

Der Ausdruck ist ein String und wird daher nicht als Formel interpretiert. Wie kann ich jetzt erreichen, dass NX den Ausdruck "Breite" als Variable interpretiert, d.h. dem Ausdruck KSYS1inX den Wert aus dem Ausdruck Breite zuweist?

Ich habe schon versucht den Listenausdruck als String auszulesen und anschließend mit der Funktion MakeNumber() in eine Zahl umzuwandeln, jedoch kommt dann die Fehlermeldung: Ausdruck ungültig zum Aktualisieren in NX. makeNumber(): String%s must be either an Integer or a Number. ...

Außerdem habe ich herausgefunden, dass die Formatierung der Zeile in Excel (Zahl, Text, ...) keinen Einfluss darauf hat, welchen Datentyp NX verwendet.
 
Hat jemand von Euch eine Idee?? Vielen Dank schon im Voraus!

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

uger
Mitglied
CADler & Kinematiker


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

Beiträge: 1115
Registriert: 25.02.2003

NX2015
WIN10 64Bit

erstellt am: 06. Sep. 2017 11: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 Nur für schieber-designer 10 Unities + Antwort hilfreich

x=ug_askValueOfExpressionStr("Breite")

danach hat x den Wert den der Ausdruck "Breite" hat

------------------

Deine Wahrnehmung bestimmt deine Realität!

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

schieber-designer
Mitglied
Student

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

Beiträge: 9
Registriert: 06.09.2017

NX 11.0.1.11

erstellt am: 06. Sep. 2017 12:53    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

Vielen Dank für Ihre Antwort.
Ich habe es für meinen Fall jetzt folgendermaßen versucht (Ausdrücke wie oben):

KSYS1inX_Wert=ug_askValueOfExpressionStr(KSYS1inX)

Leider funktioniert es bei mir nicht. Es erscheinen nacheinander die Fehlermeldungen: "Regel "%%ug_kf_temp" ist bereits vorhanden" und "Interner Fehler"


Interessante Nebenfrage: Wo findet man eine Übersicht über diese ganzen ug_...-Befehle? Die scheinen ja doch sehr mächtig zu sein.

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

schieber-designer
Mitglied
Student

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

Beiträge: 9
Registriert: 06.09.2017

NX 11.0.1.11

erstellt am: 06. Sep. 2017 15:04    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

Inzwischen habe ich eine (Teil-)Lösung gefunden:
KSYS1inX_Wert=ug_askExpressionValue_("",KSYS1inX) gibt dem Ausdruck den Wert von "Breite"

Es kommt aber auch vor, dass die Liste folgendermaßen aussieht:
KSYS1inX_Liste={10,"Breite","Breite+Abstand"}
Daher wird eine allgemeingültige Formel benötigt. Beim dritten Fall handelt es sich nicht um einen einzelnen Ausdruck sondern um eine Formel. Ich habe im Netz die Funktion "ug_askExpressionFormula" gefunden. Kennt jemand die Syntax dazu bzw. eine Funktion die ich nutzen könnte?

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

uger
Mitglied
CADler & Kinematiker


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

Beiträge: 1115
Registriert: 25.02.2003

NX2015
WIN10 64Bit

erstellt am: 07. Sep. 2017 08:30    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 schieber-designer 10 Unities + Antwort hilfreich

Hier

https://docs.plm.automation.siemens.com/tdoc/nx/10/nx_api#uid:index_fusion:id1394591:list_classes_v1

findest Du eine Liste der Funktionen die durch Knowledge Fusion bereitgestellt werden. Sie lassen sich auch in den Ausdrücken verwenden.
(Der Ausdruckseditor hat in meiner NX10 einen Button mit einem "f(x)". Darüber kommst Du auch in einen Liste incl. Hilfe zu Funktionen. Die Knowledge Fusion Funktionen werden dort aber nicht aufgeführt!!!)

Unter dem Link gibt es in der Liste "UG Expression". Dort findest Du auch
ug_askexpressionformula. Leider ist die Beschreibung an Programmierer orientiert. (Habe nicht probiert obsie das macht was Du suchst).

uger

------------------

Deine Wahrnehmung bestimmt deine Realität!

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

schieber-designer
Mitglied
Student

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

Beiträge: 9
Registriert: 06.09.2017

NX 11.0.1.11

erstellt am: 07. Sep. 2017 09:40    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

Super, danke!

Wenn es eine Möglichkeit zur Fallunterscheidung geben würde, könnte das Problem nach folgendem Prinzip gelöst werden: Wenn Ausdruck=Zahl dann Ausdruck, sonst wenn Ausdruck=String dann ug_askExpressionValue("",Ausdruck)

Gibt es eine Funktion, die den Datentyp eines Ausdrucks zurückgibt? Ich habe in der Auflistung dazu leider nichts gefunden.

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