Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  frage zu Refresh values from external spreadsheet

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:  frage zu Refresh values from external spreadsheet (2748 mal gelesen)
Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 30. Apr. 2009 10:41    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

nachfolgend ein c-code-schnipsel von siemens-nxopen:

ich möchte den befehl "Tools-> Expression-> Refresh values from external spreadsheet"
in ein best, vb.net-prog einbauen. mit c-codes kenne ich mich aber nicht aus.
kann mir jemand auf die sprünge helfen?
ist mit dem etwas anzufangen?

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

Tools-> Update-> Update for External Change
Tools-> Expression-> Refresh values from external spreadsheet
Tools-> Spreadsheet-> Edit-> Update NX part

    This program demonstrates a method which worked to update the model
    in a test case after changing values in an external spreadsheet.
*/

static logical evaluate_all_expressions(tag_t part, logical verbose)
{
    logical
        something_changed = FALSE;
    int
        ii,
        n_exp;
    tag_t
        *exps;
    double
        new_value,
        old_value;
    char
        *full_string;

    UF_CALL(UF_MODL_ask_exps_of_part(part, &n_exp, &exps));
    if (n_exp > 0)
    {
        for (ii = 0; ii < n_exp; ii++)
        {
            UF_CALL(UF_MODL_ask_exp_tag_string(exps[ii], &full_string));
            if (verbose) WRITE(full_string);
            if (verbose) WRITE("\n");


            UF_CALL(UF_MODL_ask_exp_tag_value(exps[ii], &old_value));
            if (verbose) WRITE_F(old_value);

            UF_CALL(UF_MODL_edit_exp(full_string));
            UF_free(full_string);

            UF_CALL(UF_MODL_ask_exp_tag_value(exps[ii], &new_value));
            if (verbose) WRITE_F(new_value);

            if (new_value != old_value) something_changed = TRUE;
        }
        if (verbose) WRITE_L(something_changed);
        UF_free(exps);
    }

    return something_changed;
}

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

------------------
gruss urs 

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

Siassei
Mitglied
MB - Student


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

Beiträge: 490
Registriert: 08.07.2007

SWX
NX 3 und höher ;)
Windows and UNIX<P>C, C++, Java, Phyton,...</P>

erstellt am: 05. Mai. 2009 18:29    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 Sirus 10 Unities + Antwort hilfreich

Servus,

ich hab das mal für dich umgeschrieben. Das solltest du auch selbst hinbekommen. Einfach nur hinzu stehen und zu sagen "Das verstehe ich nicht" zeugt von keiner all zu großen Begeisterung.

Der Code ist in C# und sollte ohne Probleme in VB überführt werden können. Wenn du noch ein paar Fragen hast, dann melde dich einfach mal.

Ich gebe keine Garantie auf Richtigkeit, da ich es frei geschrieben und keinen Test durchgeführt habe. Alle Rechte vorbehalten

Code:
using System;
using System.Collections.Generic;
using System.Text;

using NXOpen;
using NXOpen.UF;


namespace Generall
{
    namespace Util
    {

        /// <summary>
        ///
        /// </summary>
        sealed class SpreadsheetHelper
        {
            /// <summary>
            /// Logger
            /// </summary>
            private static Logger logger = logger.get("Spreadsheet_Helper");


            /// <summary>
            ///
            /// </summary>
            /// <param name="part">Part to evaluate</param>
            /// <returns>Changed values</returns>
            static bool evaluateAllExpressions(Tag part)
            {
                logger.log("Call: evaluateAllExpressions ; Part=" + part.ToString, Priority.Debug);

                UFSession sesUf = UFSession.GetUFSession();
                bool changed = false;
                int n;
                Tag[] exps;
                double old_v, new_v;
                string s;

                sesUf.Modl.AskExpsOfPart(part, n, exps);

                if (n > 0)
                {
                    logger.log("n (" + n.ToString() + ") > 0", Priority.Info);

                    for (int i = 0; i < n; i++)
                    {
                        sesUf.Modl.AskExpTagString(exps[i], s);
                        logger.log(s, Priority.Info);

                        sesUf.Modl.AskExpTagValue(exps[i], old_v);
                        logger.log(old_v, Priority.Info);

                        sesUf.Modl.EditExp(s);

                        sesUf.Modl.AskExpTagValue(exps[i], new_v);
                        logger.log(new_v, Priority.Info);

                        if (!changed)
                            if (!new_v.Equals(old_v))
                                changed = true;
                    }
                }
                else
                {
                    logger.log("n == 0 -> Do nothing", Priority.Info);
                }

                logger.log("End of: evaluateAllExpressions ; Part=" + part.ToString, Priority.Debug);

                return changed;
            }
        }
    }
}


Kontakt: question@enzinger-th.de

------------------
Hopfen und Mals
Gott erhalts 

Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life.

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 06. Mai. 2009 07:51    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 Siassei

vielen dank.
werde das testen, ich melde mich wieder...

------------------
gruss urs 

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

Siassei
Mitglied
MB - Student


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

Beiträge: 490
Registriert: 08.07.2007

SWX
NX 3 und höher ;)
Windows and UNIX<P>C, C++, Java, Phyton,...</P>

erstellt am: 09. Mai. 2009 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 Nur für Sirus 10 Unities + Antwort hilfreich

Wie siehts aus?

------------------
Hopfen und Mals
Gott erhalts 

Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life.

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

erstellt am: 12. Mai. 2009 07:52    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

hatte noch keine zeit....melde mich...

------------------
gruss urs 

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

Sirus
Ehrenmitglied
CAD Applikationsentwickler


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

Beiträge: 1564
Registriert: 03.06.2004

SolidWorks2022

erstellt am: 19. Mai. 2009 13: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

hallo thomas

ich bringe das ding nicht zum laufen, was mache ich falsch?
bringst du es zum laufen mit nx4?

------------------
gruss urs 

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



Bauteilverantwortlicher (m/w/d) Automotive
Menschen und Technologien verbinden. Den Perfect Match für unsere Kunden gestalten. Immer die richtigen Experten für die jeweilige Herausforderung finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir Sie: als ambitionierten Kollegen, der wie wir Technologien auf die nächste Stufe bringen möchte. Wir realisieren spannende Projekte für namhafte OEMs und Zulieferer der Automobilindustrie und übernehmen Verantwortung für komplexe Entwicklungsprojekte....
Anzeige ansehenFahrzeugtechnik
Siassei
Mitglied
MB - Student


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

Beiträge: 490
Registriert: 08.07.2007

SWX
NX 3 und höher ;)
Windows and UNIX<P>C, C++, Java, Phyton,...</P>

erstellt am: 25. Mai. 2009 18: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 Sirus 10 Unities + Antwort hilfreich

Servus,

nichts, denke ich 

Ich kann zurzeit nicht auf die NXOpen NX 4 Version zurückgreifen, weswegen ich dir nicht sagen, in wie weit sich die NXOpen-Lib verändert hat.

Ein Auszug aus der NXOpenUF.dll von NX 6 zeigt mir

Code:
[DllImport("libufun.dll", EntryPoint="UF_MODL_ask_exp_tag_string", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)]
        internal static extern unsafe int _AskExpTagString(Tag expression_tag, out sbyte* _string);

....

        public unsafe void AskExpTagString(Tag expression_tag, out string _string)
        {
            sbyte* numPtr;
            JAM.StartUFCall();
            int errorCode = _AskExpTagString(expression_tag, out numPtr);
            JAM.EndUFCall();
            if (errorCode != 0)
            {
                throw Util.CreateException(errorCode);
            }
            _string = Util.ArrayFromSM(numPtr);
        }


Daher sehe cih hier keinen Fehler. Die UF_CALL-Aufrufe erledigt ja die NXOpen-Lib bereits und ich muss sie nicht einführen.

Folgendes funktioniert, aber ich weiß nicht, ob es mit NX4 geht. Vielleicht kennt jemand eine elegantere Art. Da die Brechstange hier nicht weit weg ist. Naja, mit dem Hammer geht alles :)

Code:
public static void updateExpressionListWithExternSpreadsheet(Part p)
        {
            bool modif; // Gibt an, ob etwas modifiziert worden ist
            bool errorM; // Fehlermeldung, falls vorhanden
            p.Expressions.ImportFromFile("", ExpressionCollection.ImportMode.Replace, out modif, out errorM);

            //...
        }


------------------
Hopfen und Mals
Gott erhalts 

Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life.

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