Graphics (ODB)
/api/odb.dll/odb
ODB covers all information about an article's 3D graphics: rendered images, component lists and textures.
/btg — Component list
GET
Gets the component list (assembly instructions) of an article.
GET /api/odb.dll/odb/btg?token={TOKEN}&manufacturer={MANU}&program={PROG}&basearticlenumber={ARTNR}&finalarticlenumber={FINNR}&reinitstring={REINIT}Parameters
| Parameter | Required | Description |
|---|---|---|
token | Required | Authentication |
profile | Optional | Server profile |
manufacturer | Required | Manufacturer ID |
program | Required | Series ID |
basearticlenumber | Required | Base article number |
finalarticlenumber | Required | Final article number |
reinitstring | Optional | Reinit string |
metareinitstring | Optional | Meta reinit string |
Response
JSON object with three properties:
| Field | Description |
|---|---|
btg | Hierarchical assembly instructions (node tree) |
blocks | List of all required components (block names) |
mats | Array of all materials used |
btg — Nodes
Each node is an object with:
| Field | Description |
|---|---|
type | Node type: top (structure), imp (import), clsref (movable), block (cube), frame (frame), cyl (cylinder), hole (hole), diff csg / union csg (boolean difference/union), stretch (stretch) |
prop | Properties of the node (see below) |
childs | Array of child nodes (inherit position/rotation) |
prop — Properties
| Field | Description |
|---|---|
offs | Position [x, y, z] in meters (OFML coordinates) |
rot | Rotation [x, y, z] in degrees |
btgname | Qualified block name (only for imp) |
scale | Scaling [x, y, z] (for imp, diff csg, union csg, stretch) |
mat | Material name |
mmap | Material mapping |
mrot | Material rotation |
lay | Layer identifier |
params | Additional parameters depending on the type |
gotype | Movable part (e.g. door, drawer) |
mats — Materials
| Field | OMATS key | Description |
|---|---|---|
mname | mname | Material identifier |
pic | tex image | Texture path (omitted for color materials) |
bump | bumps | Normal map texture |
roughness_image | roughness image | Roughness texture |
metallic_image | metallic image | Metallic texture |
roughness | roughness | Roughness value |
metallic | metallic | Metallic value |
scaleu | scale | UV scaling U |
scalev | scale | UV scaling V |
offset | offset | Texture offset [x, y] (positioning of the material image) |
bump_scaleu | nscale | Normal map UV scaling U (repetitions per meter) |
bump_scalev | nscale | Normal map UV scaling V (repetitions per meter) |
noffset | noffset | Normal map texture offset [x, y]; if missing, offset applies |
bump_rot | nrotation | Normal map texture rotation |
amb | amb | Ambient color value (RGB, e.g. 0x303030) |
dif | dif | Diffuse color value |
spe | spe | Specular color value |
map | map | Mapping: auto, rauto, env |
shi | shi | Shininess value |
tra | tra | Transparency value |
luminance | luminance | Luminance value |
refr | refraction | Refraction value |
rot | rotation | Texture rotation |
pho | phong_level | Phong value |
mirror | mirror | Mirror effect |
refl | reflection | Reflection value |
Example
Excerpt of a component list
json
{
"btg": [
{
"type": "top",
"prop": { "offs": [0, 0, 0], "rot": [0, 0, 0] },
"childs": [
{
"type": "imp",
"prop": {
"btgname": "_DX::WEBTI::DE_TI_D3_TI_FUSSECK_HV_GL",
"offs": [0, 0, 0],
"rot": [0, 0, 0],
"scale": [1, 1, 1],
"mat": "AZ",
"lay": "L_KUNSTSTOFF"
}
}
]
}
],
"blocks": [
"_DX::WEBTI::DE_TI_D3_TI_FUSSECK_HV_GL",
"_DX::WEBTI::DE_TI_D3_TI_FUSSECK_HV_KAPPE",
"_DX::WEBTI::DE_TI_D3_TI_FUSSECK_HV_SA1"
],
"mats": [
{
"mname": "S_ANT",
"pic": "materials/_DX/S_ANT.JPG",
"scaleu": 20,
"scalev": 20,
"amb": "0x52575c",
"dif": "0x52575c",
"spe": "0x313131",
"map": "auto"
},
{
"mname": "HOLZ_BUCHE",
"pic": "materials/_DX/HOLZ_BUCHE.JPG",
"scaleu": 10,
"scalev": 10,
"amb": "0xbd926b",
"dif": "0xbd926b",
"spe": "0x303030",
"map": "auto"
}
]
}Note
The assembly instructions are hierarchical. A component below a node inherits that node's position and rotation. The blocks array contains all required individual blocks.
/block — Single component
GET
Returns a single component with its geometry data.
GET /api/odb.dll/odb/block/{BLOCKNAME}?token={TOKEN}With the extension .obj, .dae or .3ds, the call returns the component in that format.
Response
| Field | Description |
|---|---|
N | Block name |
P | Position [x, y, z] in meters |
R | Rotation [x, y, z] in degrees |
V | Vertex points (3 float values per point) |
T | Texture coordinates |
A | Array of individual surfaces |
A[].F | Faces (indices into V, 3 points each) |
A[].TI | Texture coordinate indices |
A[].C | Closed? (false = possible display problems) |
Example
json
{
"N": "_DX::WEBTI::DE_TI_D3_TI_FUSSECK_HV_GL",
"P": [0.0334, -0.0334, 0.0025],
"R": [0, 0, 0],
"V": [[-0.025, -0.02, 0.0025], [-0.025, 0.02, 0.0025]],
"T": [[-0.4464, -0.495, 1], [-0.4464, -0.5, 1]],
"A": [
{
"C": true,
"F": [[68, 132, 133], [68, 133, 66]],
"TI": [[0, 1, 2], [0, 2, 3]]
}
]
}/materials — Textures
GET
Returns a texture for the 3D display.
GET /api/odb.dll/odb/materials/{MANUID}/{MATERIALNAME}.JPG?token={TOKEN}Example: .../materials/_DX/HOLZ_BUCHE.JPG?token={TOKEN}
Response: Stream of the texture (JPEG).