Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  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
Autor Thema:  Struktur von UF_ATTR_part_attr_p_t *attributes; auslesen (1177 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: 123
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



Entwicklungsingenieur (m/w/d) Konstruktionstechnik
Technologien auf das nächste Level zu heben, sich Herausforderungen zu stellen und an den Innovationen von morgen zu arbeiten - dafür benötigen wir bei FERCHAU Expert:innen wie dich: als ambitionierte Entwicklungsingenieur:innen im Bereich Konstruktionstechnik, die wie wir Technologien auf die nächste Stufe bringen möchten. Wir realisieren spannende Projekte für namhafte Kunden des Maschinenbaus und sorgen für sichere und nachhaltige Technologielösungen....
Anzeige ansehenKonstruktion, Visualisierung
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)2023 CAD.de | Impressum | Datenschutz