Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  NX Programmierung
  Struktur von UF_ATTR_part_attr_p_t *attributes; auslesen

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
  
Solid Edge: Erste Schritte, ein Webinar am 26.09.2025
Autor Thema:  Struktur von UF_ATTR_part_attr_p_t *attributes; auslesen (1300 mal gelesen)
Steller
Mitglied
Maschinenbau Ing.

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

Beiträge: 4
Registriert: 10.11.2003

erstellt am: 04. Jul. 2006 20:33    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

Mit UF_ATTR_ask_part_attrs_in_file können PART-Attribute ausgelesen werden.
Leider kann ich die Feld-Struktur der Attribute nich auslesen, da mir der Strukturaufbau unklar ist.

Nachfolgend der Quellcode:

/*****************************************************************************
**  lesen der Attribute
*****************************************************************************/
static void read_file_attr()
Anfang

/*  Variable Declarations */
FILE *datei_lesen;
int n_attributes;
int i;
char attr_title[UF_ATTR_MAX_TITLE_LEN]="                ";
char attribute_wert[UF_ATTR_MAX_STRING_LEN]="            ";

UF_ATTR_part_attr_p_t *attributes;

/*
UF_ATTR_part_attr_p_t *  attributes Output to be freed Allocated array of structures holding
attribute titles and values. This must be freed by the caller using UF_free.
*/

// Umgebungsvariablen holen .....
  get_System_ENVDaten();

  // Zeichnungsdaten
strcpy(dat_in,  ZV_Pfad);
  strcat(dat_in,"\\FileAttribute.dat");

// --- Kopfdaten laden .....
fehler =0;
if(( datei_lesen = fopen(dat_in,"rt") ) gleich FALSCH) {

sprintf(msg, "FEHLER:read_file_attr(): FileAttribute.dat\n\r");
  printf(msg);

          fehler =1;
  return;
  };

flese_str(DATNAME, datei_lesen);
fclose(datei_lesen);

printf("Datei:<%s>\n",DATNAME);

//  nur Stringattribute !!
UF_ATTR_ask_part_attrs_in_file (DATNAME, &n_attributes, &attributes );

printf("Anzahl der Attribute:<%d>\n",n_attributes);
// Gibt Anzahl zurück O.K.

if(n_attributes < 1) {
printf("##################################\n");
printf("##################################\n");
printf("--keine Atributte vorhanden! ------\n");
printf("##################################\n");
printf("##################################\n");
UF_free(attributes);
return;
};


for(i=1; i < n_attributes; i++) {

/* ********  hier liegt das Problem....*****************/
strcpy(attr_title  ,(*attributes)[i].title  );
strcpy(attribute_wert ,attributes[i]->string_value);

printf("Check -> Attributtitel: %s ; Attributwert: %s\n",attr_title, attribute_wert);
ATTR_check_Name( attr_title, attribute_wert );


};

printf("############# fertig ##############\n");
UF_free(attributes);

zv_save_Kopfdaten(dat_in);

return;
Ende

###############################.. UGII _ Struktur definition (Auszug)

typedef struct UF_ATTR_value_s UF_ATTR_value_t, *UF_ATTR_value_p_t;

/*****************************************************************************
* Structure used to return part attribute values.
*
****************************************************************************/
struct UF_ATTR_part_attr_s
{
    char  title[UF_ATTR_MAX_TITLE_LEN+1];
    /* <len:UF_ATTR_MAX_TITLE_LEN+1>The title of the attribute */
UF_ATTR_value_t value;
/* The value for the part  attribute */
    char  string_value[UF_ATTR_MAX_STRING_LEN+1];
    /*<len:UF_ATTR_MAX_STRING_LEN+1> Buffer for the part
      attribute string value.
      The character pointer  .value.value.string
      will point to this buffer. */
};

typedef struct UF_ATTR_part_attr_s UF_ATTR_part_attr_t, *UF_ATTR_part_attr_p_t;
#################################

!!!!!!!!!!
Kann mir jemand einen Tipp geben, wie ich an die Stukturdaten komme...
UF_ATTR_part_attr_p_t *attributes;


------------------
Alfred Steller

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

stefan.f
Mitglied



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

Beiträge: 126
Registriert: 03.09.2002

erstellt am: 07. Jul. 2006 08:08    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 Steller 10 Unities + Antwort hilfreich

Hallo Alfred,
so müsste es klappen:

int n_attributes;
UF_ATTR_part_attr_p_t attributes;

UF_ATTR_ask_part_attrs_in_file ("d:\\test.prt",&n_attributes,&attributes));

for (int i=0;i<n_attributes;i++)
    printf ("%s = %s\n",attributes[i].title,attributes[i].string_value);
// oder strcpy (wert,attributes[i].string_value);

if (n_attributes > 0)
    UF_free(attributes);

Gruß
Stefan

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



Systemarchitekt Unterstützungsfahrzeuge (m/w/d)

Die börsennotierte Rheinmetall AG mit Sitz in Düsseldorf steht als integrierter Technologiekonzern für ein substanzstarkes, international erfolgreiches Unternehmen, das mit einem innovativen Produkt- und Leistungsspektrum auf unterschiedlichen Märkten aktiv ist.

Rheinmetall ist ein führendes internationales Systemhaus der Verteidigungsindustrie und zugleich Treiber zukunftsweisender technologischer und industrieller Innovationen auf den zivilen Märkten....

Anzeige ansehenWeitere: Ingenieure und technische Berufe
Overcast
Mitglied



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

Beiträge: 111
Registriert: 21.12.2005

.

erstellt am: 15. Jul. 2006 03:00    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 Steller 10 Unities + Antwort hilfreich

http://uganswer.ugs.com

/*HEAD REPORT_PART_ATTRIBUTES_WITHOUT_OPENING_PART CCC UFUN */
#include <stdio.h>
#include <string.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_cfi.h>
#include <uf_attr.h>

#define UF_CALL(X) (report_error( __FILE__, __LINE__, #X, (X)))

static int report_error( char *file, int line, char *call, int irc)
{
    if (irc)
    {
        char err[133],
            msg[133];

        sprintf(msg, "*** ERROR code %d at line %d in %s:\n+++ ",
            irc, line, file);
        UF_get_fail_message(irc, err);

    /*  NOTE:  UF_print_syslog is new in V18 */

        UF_print_syslog(msg, FALSE);
        UF_print_syslog(err, FALSE);
        UF_print_syslog("\n", FALSE);
        UF_print_syslog(call, FALSE);
        UF_print_syslog(";\n", FALSE);

        if (!UF_UI_open_listing_window())
        {
            UF_UI_write_listing_window(msg);
            UF_UI_write_listing_window(err);
            UF_UI_write_listing_window("\n");
            UF_UI_write_listing_window(call);
            UF_UI_write_listing_window(";\n");
        }
    }

    return(irc);
}

#define WRITE(X)  UF_UI_open_listing_window(); UF_UI_write_listing_window(X)

static void combine_directory_and_wildcard(char *dir, char *fltr, char *spec)
{
    if (!strcmp(dir, ""))
        strcpy(spec, fltr);
    else
    {
        UF_CALL(uc4575(dir, 0, "junk.xxx", spec));
        strcpy(strstr(spec, "junk.xxx"), fltr);
    }
}

static logical prompt_for_part_name(char *prompt, char *fspec)
{
    int
        resp;
    char
        filter[MAX_FSPEC_SIZE+1],
        *p_dir,
        *p_ext;

    UF_CALL(UF_UI_ask_dialog_directory(UF_UI_PART_DIR, &p_dir));
    UF_CALL(UF_UI_ask_dialog_filter(UF_UI_PART_OPEN_FLTR, &p_ext));

    combine_directory_and_wildcard(p_dir, p_ext, filter);

    UF_free(p_dir);
    UF_free(p_ext);

    if (!UF_CALL(UF_UI_create_filebox(prompt, "Part Name", filter, "", fspec,
        &resp)) && (resp != UF_UI_CANCEL)) return TRUE;
    else return FALSE;
}

static void do_it(void)
{
    int
        ii,
        n_attrs;
    UF_ATTR_part_attr_p_t
        attrs;
    char
        msg[UF_UI_MAX_STRING_LEN],
        part_name[MAX_FSPEC_SIZE+1] = { "" };

    while (prompt_for_part_name("List attributes", part_name))
    {
        UF_CALL(UF_ATTR_ask_part_attrs_in_file(part_name,&n_attrs,&attrs));

        sprintf(msg, "%s has %d attributes\n", part_name, n_attrs);
        WRITE(msg);

        for (ii = 0; ii < n_attrs; ii++)
        {
            sprintf(msg, "  %d.  %s = %s\n", ii+1, attrs[ii].title,
                attrs[ii].string_value);
            WRITE(msg);
        }

        if (n_attrs > 0) UF_free(attrs);
    }
}

/*ARGSUSED*/
void ufusr(char *param, int *retcode, int paramLen)
{
    if (UF_CALL(UF_initialize())) return;
    do_it();
    UF_terminate();
}

int ufusr_ask_unload(void)
{
    return (UF_UNLOAD_IMMEDIATELY);
}

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)2025 CAD.de | Impressum | Datenschutz