ut_obj.c File Reference


Detailed Description

ComplexObject FUNCTIONS UTO_.

=====================================================
Liste_Funktionen_Beginn:

UTO_dump_s_             dump obj - structured display
UTO_dump__              dump object
UTO_dump_obj            dump object
UTO_ck_oTyp             check object-typ (struct or object)
UTO_ck_typTyp           check if 1=curv(LN|AC|CV ) | 2=surf(PLN|A|B)
UTO_ck_curvTyp          check if CurveLimits are Points or parameters
UTO_ck_curvForm         check if objTyp is ObjGX or other typ
UTO_ck_surfTyp          returns surfSubTyp
UTO_ck_nearptnobj       find object nearest to point
UTO_siz_stru            give size of struct
UTO_siz_obj

UTO_obj_Disp__          temp. display of ObjGX-structs
UTO_obj_Disp_Sur        temp. display of surfaces

UTO_sav_ost             create DB-object & save it in Model.

UTO_get_PT              make ObjX aus ObjGX (Pointer (zB Line*) holen).
UTO_get_LN
UTO_get_DB              get obj-pointer from typ, DB-index
UTO_obj_getp            get obj-pointer from oGX-struct
UTO_obj_get             Obj einlesen (liefert Daten)
UTO_objx_get   DO NOT USE use UTO_obj_getp

UT3D_vcn_cvo            Normalvector an (planare) Curve
UTO_vc_tangcv           vector tangent to curve
UTO_get_parpt           get parameter from point (obj from typ/ind)
UTO_limstru_set         Anfangs- und/oder Endpunkt einer struct setzen
UTO_2pt_limstru         get limits (Anfangs- und Endpunkt)
UTO_get_ptlim           Anfangs oder Endpunkt einlesen (LN, AC). DO NOT USE
UTO_set_ptlim           Anfangs oder Endpunkt setzen (LN, AC).
UT_get_ptlim            ?
UTO_pt_objind           get point from object and ptNr
UTO_ptnr_obj            get nr of points of obj (polygon ..)
UTO_pt_evpar1dbo        get point from 0-1-parameter (curve from typ/ind)
UTO_pt_evpar1ost        get point on Obj from Typ/struct from parameter 0-1
UTO_pt_midnobj          get midpoint of n objects

UTO_npt_Tes             get table of pointers from tessSurf

UTO_stru_inv            invert object (Typ, struct)
UTO_stru_int            intersect 2 objects (Typ, struct)
UTO_stru_tra

UTO_obj_int             intersect obj with 1 cutting-object
UTO_obj_trim            trim obj with 1 or 2 cutting-objects;
UTO_trim_2par1          trim (modify) obj from dataStruct by 2 parameters
UTO_obj_apptra          translate obj
UTO_obj_tra             translate (dzt nur curves)  REPLACE WITH UTRA_app_obj !!

// UTO_obj_appprj          project obj > Plane         OBSOLETE: USE UPRJ_app__
UTO_obj_appmir          mirror

UTO_box_obj             Box mit obj vergroessern
UTO_invert              DO NOT USE       Obj umdrehen   (use UTO_stru_inv)

UTO_rec_set             einen Record schreiben, usagenotes
UTO_isol__              duplicate/isolate object (resolve Links)
UTO_copy_0              duplicate obj (oGX-tree; keep data-pointers)
UTO_reloc_obj           relocate obj (oGX-tree)

UTO_obj_load            make ObjGX from typ,form,siz,struct
UTO_stru_2_obj          make ObjGX from typ+struct
UTO_copy_tab            ObjGX-Table (rekursiv) kopieren
UTO_copy_stru           copy struct (ohne resolve - nicht recursiv)
UTO_obj_save            Obj (nur struct) speichern (copy -> Memspc)
UTO_obj_2_mem           Ein Obj seriell in einen Speicherbereich ablegen.

UTO_write_endRec        write end-record for tesselated data

UTO_addRange            add range to ObjRange
UTO_queryRange          query if typ/DB-ind is in ObjRange
UTO_dumpRange

Liste_Funktionen_Ende:
=====================================================

- see also:
UT3D_pta_obj            objekt  -> Polygon umwandeln (../ut/ut_ccv.c)
UT2D_void_obj2         ObjG2-Objekt -> memory kopieren

#include "../xa/MS_Def0.h"
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include "../ut/ut_geo.h"
#include "../ut/ut_obj.h"
#include "../ut/ut_umem.h"
#include "../ut/ut_memTab.h"
#include "../ut/ut_bspl.h"
#include "../gr/ut_UI.h"
#include "../db/ut_DB.h"
#include "../xa/xa_mem.h"

Functions

 typedef_MemTab (ObjRange)
int UTO_pt_tratra (Point *, Point *)
int UTO_pt_trarot (Point *, Point *)
int UTO_vc_tangcrv (Vector *vco, Point *pti, int typ, void *data, Memspc *tmpMen)
int UT3D_vcn_cvo (Vector *vco, Point *pto, ObjGX *oi, Memspc *wrkSpc)
int UTO_box_obj (Point *pb1, Point *pb2, ObjGX *oxi)
void * UTO_obj_save (Memspc *memSpc, ObjGX *oxi)
int UTO_invert (ObjGX *oxi)
int UTO_2pt_limstru (Point *p1, Point *p2, double *v1, double *v2, int typ, void *o1, int imod)
int UTO_pt_objind (Point *pto, int typ, long ind, int ptNr)
int UTO_ptnr_obj (int typ, long ind)
int UT_get_ptlim (Point *pte, int typ, long ind, int mode)
int UTO_get_ptlim (Point *pte, ObjGX *oxi, int mode)
int UTO_pt_evpar1dbo (Point *pto, double lpar, int typ, long ind)
int UTO_pt_evpar1ost (Point *pto, int typ, void *pDat, double lpar)
int UTO_pt_midnobj (Point *pto, ObjGX *oa, int oNr)
int UTO_get_parpt (double *lpar, Point *pti, int typ, long ind)
int UTO_limstru_set (int typ, void *oo, Point *p1, double *v1, Point *p2, double *v2, Memspc *wrkSpc)
int UTO_set_ptlim (ObjGX *oxo, Point *pti, int mode)
int UTO_npt_Tes (int *pNr, Point **ppa, ObjGX *os)
int UTO_dump_obj (int typ, void *vp, int iNr)
int UTO_dump__ (ObjGX *oxi, char *txt,...)
int UTO_dump_1 (ObjGX *oxi, char *txt,...)
int UTO_dump_s_ (ObjGX *oxi, char *txt)
int UTO_dump_sWri (ObjGX *oxi, char *cOff)
int UTO_dump_s1 (ObjGX *oxi, char *txt)
int UTO_ck_nearptnobj (ObjGX *oa, int oNr, Point *pt1)
int UTO_ck_oTyp (int typ)
int UTO_ck_typTyp (int typ)
int UTO_ck_curvTyp (int typ)
int UTO_ck_curvForm (int typ)
int UTO_ck_surfTyp (ObjGX *oxi)
int UTO_siz_stru (int form)
int UTO_siz_obj (long *oSiz, ObjGX *oxi)
int UTO_get_DB (void **oxo, int *otyp, long dbInd)
int UTO_sav_ost (int *dbTyp, long *dbInd, int typ, int form, int siz, void *obj)
int UTO_get_PT (ObjX *oxo, ObjGX *oxi)
int UTO_get_LN (ObjX *oxo, ObjGX *oxi)
int UTO_get_CI (ObjX *oxo, ObjGX *oxi)
int UTO_get_CV (ObjX *oxo, ObjGX *oxi)
int UTO_get_POL (ObjX *oxo, ObjGX *oxi)
int UTO_get_ELL (ObjX *oxo, ObjGX *oxi)
int UTO_obj_getp (void **objOut, ObjGX *ox1)
int UTO_objx_get (ObjX *oxo, ObjGX *oxi)
int UTO_ind_get (int *typ, long *ind, ObjGX *oxp)
int UTO_obj_get (void *objOut, ObjGX *ox1)
int UTO_stru_inv (int oTyp, void *oDat)
int UTO_obj_int (Point *pa, int *ptNr, double *va, ObjGX *oi, ObjGX *oc1, int i1Nr, Memspc *wrkSpc)
int UTO_stru_int (int *pNr, Point *pa, double *va, int o1Typ, void *o1, int o2Typ, void *o2, Memspc *wrkSpc)
int UTO_stru_tra (void *stro, int typ, void *stri, Mat_4x3 trmat)
int UTO_obj_tra (ObjGX **cvo, ObjGX *cvi, Mat_4x3 trmat)
int UTO_obj_appmir (void *objo, int otyp, void *obji, Memspc *wrkSpc)
int UTO_obj_trim (ObjGX *oo, ObjGX *oi, ObjGX *oc1, int i1Nr, ObjGX *oc2, int i2Nr, Memspc *wrkSpc)
int UTO_trim_2par1 (void *objo, void *obji, int typ, double v0, double v1, Memspc *memSeg)
int UTO_obj_apptra (void *objo, int otyp, void *obji, Memspc *wrkSpc)
ObjGX UTO_obj_load (int typ, int form, int size, void *data)
ObjGX UTO_stru_2_obj (int typ, int form, void *data)
int UTO_copy_stru (void *oo, int *oSiz, int typ, void *ii, int iNr)
int UTO_obj_2_mem (char **end, char *start, ObjGX *ox1)
int UTO_obj_Disp__ (ObjGX *ox1, Memspc *wrkSpc, int att,...)
int UTO_copy_obj (void *objo, int *oSiz, void *obji)
int UTO_copy_tab (void *objo, int *oSiz, void *obji)
int UTO_copy_0 (void *objo, int *oSiz, void *obji)
int UTO_reloc_obj (ObjGX *oxi, int pDist)
int UTO_isol_llt (void *oo, int *oSiz, void *oi)
int UTO_isol_ll1 (void *oo, int *oSiz, void *oi)
int UTO_isol_l0 (void *objo, int *oSiz, void *obji, int oNr)
int UTO_rec_set (ObjGX *oxo, int typ, int form, int siz, void *dat)
int UTO_isol__ (void *objo, int *oSiz, void *obji)
int UTO_write_endRec (void *outSpc)
int UTO_addRange (MemTab *oTab, int iTyp, long ind, long oNr)
int UTO_queryRange (MemTab(ObjRange)*rTab, int typ, long ind)
int UTO_dumpRange (MemTab(ObjRange)*oTab)

Variables

int(* UTO_pt_tr )(Point *, Point *)
static char TR_obj [OBJ_SIZ_MAX]


Function Documentation

typedef_MemTab ( ObjRange   ) 

int UTO_pt_tratra ( Point po,
Point pi 
)

Translate Point via UTO_obj_apptra

int UTO_pt_trarot ( Point po,
Point pi 
)

rotate Point via UTO_obj_apptra

int UTO_vc_tangcrv ( Vector vco,
Point pti,
int  typ,
void *  data,
Memspc tmpMen 
)

    UTO_vc_tangcv           vector tangent to curve
    Input:
      typ   type of curve 
      data  curve-data

int UT3D_vcn_cvo ( Vector vco,
Point pto,
ObjGX oi,
Memspc wrkSpc 
)

    Normalvector an (planare) Curve
    Liefert auch den ersten Punkt der Kontur !
    see also UT3D_ptvc_sus (Normalvec) braucht SurStd* !!
    see also APT_DrawCurv
    see also UT3D_pta_sus  braucht SurStd* !
    see also UT3D_pta_obj

int UTO_box_obj ( Point pb1,
Point pb2,
ObjGX oxi 
)

    Box mit obj vergroessern; Box muss auf Maximum initialisiert sein !
    siehe DL_ReScale_pt_ini
    uses UT3D_box_extend

void* UTO_obj_save ( Memspc memSpc,
ObjGX oxi 
)

    UTO_obj_save            copy complexObj -> Memspc
    returns Startadress
    see also UTO_obj_2_mem DB_store_stru

int UTO_invert ( ObjGX oxi  ) 

    UTO_invert              Obj umdrehen
    implem.: Typ_LN Typ_AC

int UTO_2pt_limstru ( Point p1,
Point p2,
double *  v1,
double *  v2,
int  typ,
void *  o1,
int  imod 
)

    UTO_2pt_limstru         get limits (Anfangs- und Endpunkt)
    liefert die Punktdaten, nicht nur Adresse !!!
    
    Input:
      p1        keine Ausgabe von Anfangspunkt bei (p1 == NULL)
      p2        keine Ausgabe von Endpunkt bei (p2 == NULL)
      imod = 0  parametrierte Curves: es werden Limitpoints errechnet
      imod = 1  parametrierte Curves: nur Parameters liefern.
    
    Output:
      *v1 u *v2 nur f CVBSP u CVPOL erforderlich !

int UTO_pt_objind ( Point pto,
int  typ,
long  ind,
int  ptNr 
)

get point from object and ptNr

int UTO_ptnr_obj ( int  typ,
long  ind 
)

UTO_ptnr_obj get nr of points of obj (polygon ..)

int UT_get_ptlim ( Point pte,
int  typ,
long  ind,
int  mode 
)

DO NOT USE - use UTO_2pt_limstru

int UTO_get_ptlim ( Point pte,
ObjGX oxi,
int  mode 
)

DO NOT USE - use UTO_2pt_limstru

int UTO_pt_evpar1dbo ( Point pto,
double  lpar,
int  typ,
long  ind 
)

    UTO_pt_evpar1dbo          get point from 0-1-parameter (curve from typ/ind)
    ACHTUNG: lpar muss im Bereich 0-1 sein; wird fuer Curves umgerechnet !!
    
    Input:
      typ    DB-typ
      ind    DB-index
    
    see also UT3D_pt_evparcrv UTO_obj_int UTO_stru_int UTO_pt_evpar1ost

int UTO_pt_evpar1ost ( Point pto,
int  typ,
void *  pDat,
double  lpar 
)

    UTO_pt_evpar1ost         get point on Obj from Typ/struct from parameter 0-1
    
    see UTO_pt_evpar1dbo UT3D_pt_evparcrv

int UTO_pt_midnobj ( Point pto,
ObjGX oa,
int  oNr 
)

    get midpoint of n objects
    den Mittelpunkt der EingabeElemente suchen;
    
    see UT3D_pt_gcp_tria

int UTO_get_parpt ( double *  lpar,
Point pti,
int  typ,
long  ind 
)

    UTO_get_parpt           get parameter from point (obj from typ/ind)
    ACHTUNG: lpar muss im Bereich 0-1 sein; wird fuer Curves umgerechnet !!
    see UT3D_pt_evparcrv

int UTO_limstru_set ( int  typ,
void *  oo,
Point p1,
double *  v1,
Point p2,
double *  v2,
Memspc wrkSpc 
)

    UTO_limstru_set         Anfangs- und/oder Endpunkt einer struct setzen
    
    LN,AC,CVELL: p1, p2 setzen;
    CVBSP,CVPOL: v1, v2 setzen.
    CVBSP: if v1/2 = UT_VAL_MAX:  v via p1/p2 rechnen
    
    see UTO_set_ptlim

int UTO_set_ptlim ( ObjGX oxo,
Point pti,
int  mode 
)

    UTO_set_ptlim           Anfangs oder Endpunkt setzen (LN, AC).
    mode = 1 = set Startpoint
    mode = 2 = set Endpoint
    
    geht nur bei direkten Daten - nicht mit Indexen !!
    
    see UTO_limstru_set

int UTO_npt_Tes ( int *  pNr,
Point **  ppa,
ObjGX os 
)

    get table of pointers from tessSurf
    Input:
      pNr   size of ppa
    Output:
      pNr   nr of points in ppa
    
    see also: UT3D_pta_obj GL_Disp_sur

int UTO_dump_obj ( int  typ,
void *  vp,
int  iNr 
)

    typ   form of vp
    vp    ist eine dem Typ entrrechende struct
    iNr   nr of structs of typ typ in vp
    see also UTO_dump__ UI_dump_obj

int UTO_dump__ ( ObjGX oxi,
char *  txt,
  ... 
)

dump object

int UTO_dump_1 ( ObjGX oxi,
char *  txt,
  ... 
)

int UTO_dump_s_ ( ObjGX oxi,
char *  txt 
)

    dump obj - structured display
    see UTO_dump_1

int UTO_dump_sWri ( ObjGX oxi,
char *  cOff 
)

    structured display; write Line
    see UTO_dump_1

int UTO_dump_s1 ( ObjGX oxi,
char *  txt 
)

    structured display
    see UTO_dump_1

int UTO_ck_nearptnobj ( ObjGX oa,
int  oNr,
Point pt1 
)

    find object nearest to point
    den Kreis, dessen Mittelpunkt pt21 am naechsten ist, auswaehlen
     give back its index

int UTO_ck_oTyp ( int  typ  ) 

    UTO_ck_oTyp           check object-typ (struct or object)
    0 = geom. struct,
    1 = geom. object (ObjGX, Curve or Surf or GTXT)

int UTO_ck_typTyp ( int  typ  ) 

    UTO_ck_typTyp     check if typ=curve (Typ_lFig) or surface (Typ_SUR)
    Retcod = Typ_lFig    from LN|AC|CV     (L/C/S)
             Typ_SUR     from PLN|SUR|SOL  (R/A/B)

int UTO_ck_curvTyp ( int  typ  ) 

    UTO_ck_curvTyp              check if CurveLimits are Points or parameters
    RetCode:
      0   die CurveLimits basieren auf Points  (LN, AC, CVELL usw)
      1   die CurveLimits basieren auf Parameters (CVPOL, CVBSP)

int UTO_ck_curvForm ( int  typ  ) 

    UTO_ck_curvForm           check if objTyp is ObjGX or other typ
    Output:
      RetCode:   Typ_ObjGX (for Typ_CVPOL,Typ_CVBSP,Typ_CVELL ..)
                 else typ

int UTO_ck_surfTyp ( ObjGX oxi  ) 

    UTO_ck_surfTyp          returns surfSubTyp
    Input:
     oxi      su_tab-record
    Output:
     retCod   Typ_SURTPS|Typ_SURBSP|Typ_SURRU|Typ_SURRV ..
    
    see also SUR_ck_typ
    see GR_DrawSur TSU_DrawSurT_

int UTO_siz_stru ( int  form  ) 

UTO_siz_stru give size of struct

int UTO_siz_obj ( long *  oSiz,
ObjGX oxi 
)

    give complete size of obj
    oSiz must be 0 !!!
    
    see also UTO_reloc_obj

int UTO_get_DB ( void **  oxo,
int *  otyp,
long  dbInd 
)

    UTO_get_DB              get DB-data-struct from typ, DB-index
    Output: 
      otyp   wird bei Typ_CV auf die genaue ObjType korrigiert;
             bei Typ_SUR --> Typ_ObjGX
      oxo    Pointer auf die korrekte struct - NICHT auf ObjGX !
      RetCod number of structs in oxo
    see also:
       DB_GetObjGX    returns ObjGX from typ, DB-index
       UTO_obj_getp   returns data-struct from ObjGX

int UTO_sav_ost ( int *  dbTyp,
long *  dbInd,
int  typ,
int  form,
int  siz,
void *  obj 
)

    UTO_sav_ost         create DB-object & save it in Model.
      via AP_obj_2_txt ED_add_Line
    
    Example:
     int          iTyp;
     long         dbi;
     Point        pa[]={{0., 0., 0.},{5., 0., 0.},{5., 2., 0.},{7., 0., 0.}};
     UTO_sav_ost (&iTyp, &dbi, Typ_CVPOL, Typ_PT, 4, (void*)pa);
    
    ACHTUNG: verwendet mem_cbuf1

int UTO_get_PT ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_get_LN ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_get_CI ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_get_CV ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_get_POL ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_get_ELL ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_obj_getp ( void **  objOut,
ObjGX ox1 
)

    UTO_obj_getp        cplxObj -> binObj (pointer)
      returns data-struct from ObjGX
      
    Input:
      ox1      obj as ObjGX
    Output:
      objOut   datastruct, typ = RetCode
      RetCod = typ of datastruct.
    
    see DB_GetObjGX UTO_get_DB UTO_obj_get UTO_objx_get

int UTO_objx_get ( ObjX oxo,
ObjGX oxi 
)

DO NOT USE

int UTO_ind_get ( int *  typ,
long *  ind,
ObjGX oxp 
)

int UTO_obj_get ( void *  objOut,
ObjGX ox1 
)

    cplxObj -> binObj (copy)

int UTO_stru_inv ( int  oTyp,
void *  oDat 
)

    UTO_stru_inv            invert object (Typ, struct)
    
    ACHTUNG: es wird nur die Drehrichtung umgedreht; die Geometrie bleibt
      optisch ganz gleich !!
    
    see also UT3D_vc_invert UT3D_pl_invert UT3D_cv_inv UT3D_m3_invm3 

int UTO_obj_int ( Point pa,
int *  ptNr,
double *  va,
ObjGX oi,
ObjGX oc1,
int  i1Nr,
Memspc wrkSpc 
)

    intersect obj with 1 cutting-object;
    cutting-objects Parameter: Typ=Typ_Val nur von 0-1 (Achtung BSP's!)
    
    Input:
      ptNr              size of pa
      oi                obj to cut
      oc1               cuttingObj
      i1Nr              ob eine bestimmte IntersectionNr definiert ist;
                        -1=alle; 0-n=index of intersectPoint

int UTO_stru_int ( int *  pNr,
Point pa,
double *  va,
int  o1Typ,
void *  o1,
int  o2Typ,
void *  o2,
Memspc wrkSpc 
)

    intersect 2 objects (Typ, struct)
    Input:
      pNr   size of pa
      o1    obj to cut
      o2    cutting obj;
        o1, o2: nur structs (keine ObjGX !)
        o2Typ=Typ_Val: o2=(double*)parameter;
    Output:
      pNr   number of points in pa
      pa    intersectionPoints
      va    corresponding parameter; not for all funcs.

int UTO_stru_tra ( void *  stro,
int  typ,
void *  stri,
Mat_4x3  trmat 
)

    better use UTRA_app__
    siehe UTO_obj_tra

int UTO_obj_tra ( ObjGX **  cvo,
ObjGX cvi,
Mat_4x3  trmat 
)

    DO NOT USE
    REPLACE WITH UTRA_app_obj !!

int UTO_obj_appmir ( void *  objo,
int  otyp,
void *  obji,
Memspc wrkSpc 
)

mirror

int UTO_obj_trim ( ObjGX oo,
ObjGX oi,
ObjGX oc1,
int  i1Nr,
ObjGX oc2,
int  i2Nr,
Memspc wrkSpc 
)

    trim obj with 1 or 2 cutting-objects;
    cutting-objects Parameter fuer form=Typ_Float8:
      Typ=Typ_Val definiert Knotenwert fuer BSP's;
      Typ=Typ_Par nur von 0-1 (bei BSP's Umrechnung m. UT3D_par_par1BSp)
    RetCod:
      1-n  = nr of possible solutions ..
    
    Nur mit einem Obj begrenzen: oc2.typ=Typ_Error.
    
    oi                 - obj to cut!
    oc1                - 1. cuttingObj!
    oc2                - 2. cuttingObj
    modFlag1/2:       ob eine bestimmte IntersectionNr definiert ist (1)
                      oder nicht (0).
    imod1/2           die definierte IntersectionNr (i1Nr/i2Nr); modFlagx=1

int UTO_trim_2par1 ( void *  objo,
void *  obji,
int  typ,
double  v0,
double  v1,
Memspc memSeg 
)

    trim (modify) obj from dataStruct by 2 parameters
    Input:
      obji       dataStruct in
      typ        type of dataStruct
      v0, v1     parameters 0-1
    Output:
      objo       modified dataStruct out.
      oTyp       type of outputObj; ed Typ_LN|..
      objo       dataStruct of outputObj; maxSiz OBJ_SIZ_MAX.
      RetCod:
    
    see UT3D_pt_evparcrv
    see UTO_stru_int
    see UTO_obj_trim

int UTO_obj_apptra ( void *  objo,
int  otyp,
void *  obji,
Memspc wrkSpc 
)

    init Translation: UTO_obj_apptra (NULL, Typ_VC, &translVector);
    init Rotation:    UTO_obj_apptra (NULL, Typ_TraRot, (TraRot*)&TrRorStru);
                        (TrRorStru: Matrix muss mit UT3D_m3_inirot geladen sein)
    see UTO_stru_tra oder UTO_obj_tra
    
    Input:  obji immer eine struct (auch bei Typ_CV !)
    Output: objo immer eine struct (auch bei Typ_CV !)
    wrkSpc wird nur fuer Curves benutzt (kann bei PT/LN/AC NULL sein)

ObjGX UTO_obj_load ( int  typ,
int  form,
int  size,
void *  data 
)

    UTO_obj_load       make ObjGX from typ,form,siz,struct
   
    see also OGX_SET_OBJ OGX_SET_INDEX OGX_GET_INDEX

ObjGX UTO_stru_2_obj ( int  typ,
int  form,
void *  data 
)

UTO_stru_2_obj make ObjGX from typ+struct

int UTO_copy_stru ( void *  oo,
int *  oSiz,
int  typ,
void *  ii,
int  iNr 
)

    UTO_copy_stru           copy struct (no resolve - not recursive)
    see DB_store_stru
      oo    outSpace;
      oSiz  size of outSpace; wird korrigiert.
      ii    iNr Objekte vom Typ typ. 
      iNr   Anzahl Objekte vom Typ typ.
    
    RetCod: copied size

int UTO_obj_2_mem ( char **  end,
char *  start,
ObjGX ox1 
)

    copy complexObj -> memory
    
    see also DB_store_stru UTO_obj_save

int UTO_obj_Disp__ ( ObjGX ox1,
Memspc wrkSpc,
int  att,
  ... 
)

    wrkSpc:  nur fuer TypCV, sonst NULL
    Zusatzparameter:
    f Typ_PT: (int)PointTyp
    
    see GR_Disp_dbo GR_Disp_ost

int UTO_copy_obj ( void *  objo,
int *  oSiz,
void *  obji 
)

see DB_store_obj UTRA_app_obj UTO_write_obj

int UTO_copy_tab ( void *  objo,
int *  oSiz,
void *  obji 
)

    copy ObjGX-Table, recursive
    Input:
      obji   ist der parentRecord; aber schon im objo-Bereich !
   
    see also DB_store_obj

int UTO_copy_0 ( void *  objo,
int *  oSiz,
void *  obji 
)

    ObjGX-Record von obji nach objo kopieren;
    wenn form==ObjGX auch den SubRecord kopieren.
    Feld .data unveraendert !
    Input MUSS ein oGX sein !!!
   
    Input:
      oSiz   size of objo; wird recursiv verkleinert !
      obji   ist der parentRecord
    Output:
      oSiz   freier Restplatz in objo

int UTO_reloc_obj ( ObjGX oxi,
int  pDist 
)

    pDist = (char*)oldAdress - (char*)newAdress
    
    see also tess_reloc_f_ wrl_reloc__ TSU_store (reallokiert auch !)

int UTO_isol_llt ( void *  oo,
int *  oSiz,
void *  oi 
)

    resolv LinkTable in oi.
    replace data in oi (oi is already copied)
    add new records (Point*) into oo.

int UTO_isol_ll1 ( void *  oo,
int *  oSiz,
void *  oi 
)

    resolv Link in oi.
    replace form und data in oi (oi is already copied)
    add new records into oo.
    Input:
      oi     ein ObjGX-Record mit einem Link

int UTO_isol_l0 ( void *  objo,
int *  oSiz,
void *  obji,
int  oNr 
)

    die Links (Typ_Index) in obji aufloesen.
    obji ist eine (schon duplizierte) table of oNr ObjGX-records.
    objo nur fuer ganz neue objekte

int UTO_rec_set ( ObjGX oxo,
int  typ,
int  form,
int  siz,
void *  dat 
)

DO NOT USE - replaced with OGX_SET_OBJ

int UTO_isol__ ( void *  objo,
int *  oSiz,
void *  obji 
)

    duplicate/isolate object
    isolate = kill links; change Typ_Index --> Typ_<struct> + Address
    die DatenAdressen (.data of structs) werden nicht veraendert.
    Input MUSS ein oGX sein !!!
   
    Input:
      obji   (ObjGX*)
      oSiz   size of objo; wird recursiv verkleinert !
    Output:
      objo   (ObjGX*)
      oSiz   freier Restplatz in objo

int UTO_write_endRec ( void *  outSpc  ) 

UTO_write_endRec write end-record for tesselated data

int UTO_addRange ( MemTab *  oTab,
int  iTyp,
long  ind,
long  oNr 
)

int UTO_queryRange ( MemTab(ObjRange)*  rTab,
int  typ,
long  ind 
)

    UTO_queryRange          query if typ/DB-ind is in ObjRange
    RetCod:
      0      yes typ/ind is inside a range-obj;
     -1      no.

int UTO_dumpRange ( MemTab(ObjRange)*  oTab  ) 

    RetCod:
      0      yes typ/ind is inside a range-obj;
     -1      no.


Variable Documentation

int(* UTO_pt_tr)(Point *, Point *)

char TR_obj[OBJ_SIZ_MAX] [static]


Generated on Sat May 30 09:31:56 2009 for gCAD3D by  doxygen 1.5.6