sdaiPutADBTypePath

...

Syntax

//
//   Strong typing definition
//
void            sdaiPutADBTypePath(
                        const SdaiADB           ADB,
                        int_t                   pathCount,
                        const char              * path
                    );

static  inline  void    sdaiPutADBTypePath(
                                const SdaiADB           ADB,
                                int_t                   pathCount,
                                char                    * path
                            )
{
    return  sdaiPutADBTypePath(
                    ADB,
                    pathCount,
                    (const char*) path
                );
}


//
//   Weak typing definition
//
void    __declspec(dllexport) __stdcall sdaiPutADBTypePath(
                                                const void              * ADB,
                                                int_t                   pathCount,
                                                const char              * path
                                            );

static  inline  void    sdaiPutADBTypePath(
                                const void              * ADB,
                                int_t                   pathCount,
                                char                    * path
                            )
{
    return  sdaiPutADBTypePath(
                    ADB,
                    pathCount,
                    (const char*) path
                );
}
    

Property ADB

Size: 32 bit / 4 byte (reference)
...

Property pathCount

Size: 32 bit / 4 byte (value)
...

Property path

Size: 32 bit / 4 byte (reference)
...

Example (based on pure API calls)

Here you can find code snippits that show how the API call sdaiPutADBTypePath can be used.

#include    "./include/ifcengine.h"
//
//  #13131 = IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(1.745E-2), #31313);
//  #31313 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.);
//

int_t   buildSIUnitInstance(int_t model, char * UnitType, char * Prefix, char * Name)
{
    //  #31313 = IFCSIUNIT(*, .PLANEANGLEUNIT., $, .RADIAN.);
    int_t   ifcSIUnitInstance = sdaiCreateInstanceBN(model, "IFCSIUNIT");

    sdaiPutAttrBN(ifcSIUnitInstance, "UnitType", sdaiENUM, UnitType);
    if  (Prefix) {
        sdaiPutAttrBN(ifcSIUnitInstance, "Prefix", sdaiENUM, Prefix);
    }
    sdaiPutAttrBN(ifcSIUnitInstance, "Name", sdaiENUM, Name);

    return  ifcSIUnitInstance;
}

int_t   buildMeasureWithUnitInstance(int_t model)
{
    void    * valueComponentADB;
    double  valueComponent= 0.01745;

    //  #13131 = IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(1.745E-2), #31313);
    int_t   ifcMeasureWithUnitInstance = sdaiCreateInstanceBN(model, "IFCMEASUREWITHUNIT");

    valueComponentADB = sdaiCreateADB(sdaiREAL, &valueComponent);
    sdaiPutADBTypePath(valueComponentADB, 1, "IFCPLANEANGLEMEASURE"); 
    sdaiPutAttrBN(ifcMeasureWithUnitInstance, "ValueComponent", sdaiADB, (void*) valueComponentADB);

    sdaiPutAttrBN(ifcMeasureWithUnitInstance, "UnitComponent", sdaiINSTANCE, (void*) buildSIUnitInstance(model, "PLANEANGLEUNIT", 0, "RADIAN"));

    return  ifcMeasureWithUnitInstance;
}