Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX
  UG Open: wie finde ich den skizzen ursprung?

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
  
BCT Technology AG erneut als Champion im Professional User Rating - Engineering Solutions 2025 ausgezeichnet, eine Pressemitteilung
Autor Thema:  UG Open: wie finde ich den skizzen ursprung? (1259 mal gelesen)
drcmda
Mitglied



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

Beiträge: 176
Registriert: 10.07.2002

erstellt am: 18. Aug. 2003 14:21    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

ich will einfach nur bei einem "extrude" feature die bezugsebene
(face oder datum plane) auslesen. nur finde ich keine passende
funktion. ich könnte mir zwar alle faces eines features geben lassen
und dann via "UF_SKET_ask_face_sketches" die skizzen auslesen
allerdings bekomme ich somit ALLE skizzen die auf einer fläche
erstellt worden sind und nicht meine gewünschte bezugsebene... das muß
irgendwie gehen, ich übersehe wohl etwas...

hier mein test-programm... an der stelle "// SKETCH ORIGIN" müßte
jetzt eigentlich die schleife kommen um diese linked-list auszulesen
und genau an dieser stelle würde ich dann gerne die bezugs-ebene haben
wollen, kann mir da vieleicht jemand weiterhelfen?

vielen dank,
paul

Code:

// Include files
#include "uf.h"
#include "uf_part.h"
#include "uf_assem.h"
#include "uf_attr.h"
#include "uf_obj.h"
#include "uf_object_types.h"
#include "uf_modl.h"
#include "uf_sket.h"


#include "windows.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "iostream.h"

// Main routine
extern void main( char argc, char *argv[] )
{
        cout << "initializing UGS\n";
       
        // initialize session
        UF_initialize();
        if (!UF_is_initialized())
        {
                cout << "error: UF_is_initialized failed!\n";
                return;
        }     

        // loading part
        char part_name[] = "E:\\PAUL\\CIME_Object\\CAD_UNIGRAPHICS_17\\test.prt";     
        tag_t part_tag;
        UF_PART_load_status_t e_status;
               
        cout << "loading part: " << part_name << "\n";
        UF_PART_open(part_name, &part_tag, &e_status );
    UF_free_string_array( e_status.n_parts, e_status.file_names );

        // reading attributes
        UF_ATTR_part_attr_p_t attr;
        int    attr_count;
       
        UF_ATTR_ask_part_attrs ( part_tag, &attr_count, &attr );
        cout << "reading attributes: (" << attr_count << " attributes found)\n";

        for ( int a_idx = 0; a_idx < attr_count; a_idx++ )
                cout << "  title: " << attr[a_idx].title << " value: " << attr[a_idx].string_value << "\n";

        UF_free( attr );

        // reading decription
        cout << "reading description\n";

        char *desc;   
        UF_PART_ask_description ( part_tag, &desc );
        cout << "  descr: " << desc << "\n";
        UF_free( desc );

        // reading features
        cout << "reading features\n"; 

        tag_t feature;
        int    type;
        char *feature_name;
        char *feature_type;

        type = UF_feature_type;
        feature = NULL_TAG;

        UF_OBJ_cycle_objs_in_part( part_tag, type, &feature );

        while (feature != 0)
        {             
                UF_MODL_ask_feat_name ( feature, &feature_name );
                UF_MODL_ask_feat_type ( feature, &feature_type );

                cout << "  name: " << feature_name << " type: " << feature_type << "\n";                       

                if ( !strcmp(feature_type,"SWP104"))
                {             
                        uf_list_p_t    sketches= NULL;                                       
                        UF_SKET_ask_feature_sketches (feature, &sketches );

                        int sketch_count;
                        UF_MODL_ask_list_count (sketches, &sketch_count);
                        cout << "    reading sketches: (" << sketch_count << " sketches found)" << "\n";

                        // SKETCH ORIGIN

                        UF_MODL_delete_list( &sketches );
                }

                UF_OBJ_cycle_objs_in_part( part_tag, 205 , &feature );
        }
               
        // closing parts/session
        cout << "closing all parts\n";
        UF_PART_close_all ();

        cout << "terminating session\n";
        UF_terminate();
}


[Diese Nachricht wurde von drcmda am 18. August 2003 editiert.]

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

berberic
Mitglied
Software-Developer


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

Beiträge: 113
Registriert: 04.02.2003

Don't worry be happy.
Michael

erstellt am: 21. Aug. 2003 14:20    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 drcmda 10 Unities + Antwort hilfreich

Hallo Paul,

ich denke das folgende Code-Fragment ist das was Du suchst.

Gruß
Michael


uf_list_p_t  temp;
logical      is_horiz;
tag_t        attach_face;
tag_t        tool_face;
tag_t        dir_ref;
tag_t        sketch;
tag_t        sketch_feature;
int          ii;

for ( ii = 0, temp = sketches ;
      ii < sketch_count ;
      ii++, temp = temp->next )
  {
    sketch = temp->eid;
    UF_MODL_ask_object_feat (sketch, &sketch_feature);
    UF_MODL_ask_link_faces (sketch_feature, &attach_face,
                            &tool_face, &dir_ref, &is_horiz);
    cout << "sketch face: " << attach_face << "\n";
  } /* for */

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

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

drcmda
Mitglied



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

Beiträge: 176
Registriert: 10.07.2002

erstellt am: 21. Aug. 2003 15:07    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

HA! genau danach habe ich seit tagen gesucht... unglaublich ich hätte
NIE geglaubt noch eine antwort darauf zu finden und wer kommt schon
darauf die bezugsebene einer skizze in der model klasse zusuchen  

danke danke danke vielen dank nun kann ich endlich weitermachen,
halt, vieleicht noch eine klitzekleine sache...

in meiner skizze wollte ich auch alle geometrischen elemente auslesen,
okay, hier ist mein code:

Code:

int num_geoms;
tag_t *geoms = NULL;

UF_SKET_ask_geoms_of_sketch(sketch, &num_geoms, &geoms);
cout << "      number of geoms: " << num_geoms << "\n";

for ( int g_idx = 0; g_idx < num_geoms; g_idx++ )
{
        char obj_name[ 30 + 1 ];
        int obj_type;
        int obj_subtype;
        UF_OBJ_ask_type_and_subtype (geoms[g_idx], &obj_type, &obj_subtype );
        UF_OBJ_ask_name (geoms[g_idx], obj_name );
        cout << "      name: " << obj_name << " type: " << obj_type << " subtype: " << obj_subtype << "\n";
}

UF_free(geoms);


schön und gut, die referenz sagt mir nur "tag_t = geometry tag",
cout verät mir wenigstens das es sich dabei um meine gewünschten
elemente handelt (linien, arcs usw.) nur was mache ich nun mit diesen
tags??? ich finde keine geometrie-klasse (außer brep) um zb. den start
bzw. end-punkt eine linie auszulesen...

die ug schnittstelle gefällt mir eigentlich nur die referenz ist mir
immer im wege... zuordnungen muß ich mir immer selbst zusammensuchen
und auf dauer nervt das richtig. also wüßtest du hierfür vieleicht
auch eine lösung? es muß kein umfangeriches script sein, ein hinweis
würde mir schon reichen  

also nochmals vielen dank,
paul

[Diese Nachricht wurde von drcmda am 21. August 2003 editiert.]

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: 22. Aug. 2003 07:01    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 drcmda 10 Unities + Antwort hilfreich

Zum Auslesen der Elemente nimmst du diese Funktionen:

UF_CURVE_ask_line_data
UF_CURVE_ask_arc_data

usw

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

drcmda
Mitglied



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

Beiträge: 176
Registriert: 10.07.2002

erstellt am: 22. Aug. 2003 10: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

super, vielen dank 

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