API блочных моделей GEOMIX

Функции

geomix.bm.getManager()->geomix.bm.TBMManager @return экземпляр менеджера БМ.

Типы данных

BMCellIndex = {level:int = 0, x:int, y:int, z:int}

Index3D = {x:int, y:int, z:int}

Point3D = {x:float, y:float, z:float}

Index3DRange = {min:Index3D, max:Index3D}

Rect3D = {a:Point3D, b:Point3D}

BMParamType = („bitmap“ | „byte“ | „short“ | „int“ | „float“ | „double“ | „bytes“)

Классы

geomix.bm.TBMManager

Методы

getBMNames() -> [string]

findBM(name: string) -> geomix.bm.TBlockModel nil, если БМ не найдена.

getBM(name: string) -> geomix.bm.TBlockModel ошибка, если БМ не найдена.

flush()

unload()

createBM({

name:string = „Блочная модель“, origin:Point3D = {x:0.0, y:0.0, z:0.0}, cellSize:Point3D = {x:1.0, y:1.0, z:1.0}, cellMacroblockSize:Index3D = {x:64, y:64, z:64}})->TBlockModel

deleteBM(bm:TBlockModel)

geomix.bm.TBlockModel

Методы

cellExists(inds:BMCellIndex)->boolean

clearCell(inds:BMCellIndex)

createCell(inds:BMCellIndex)

getIndexBounds()->Index3DRange

getParamNames()->[string]

openParameter(name:string)->geomix.bm.IBMParameter

notifyDataUpdated()

flush()

unload()

clearAllCells()

hasSubblocks(inds:BMCellIndex)->boolean

clearSubblocks(inds:BMCellIndex)

createSubblocks(inds:BMCellIndex)

maxLevel()->int

findCell(p:Point3D)->BMCellIndex BMCellIndex.level == -1, если нет ячейки в точке p.

convertIndexUp(inds:BMCellIndex, parentLevel:int)->Index3D

convertIndexDown(inds:BMCellIndex, subblockLevel:int)->Index3DRange

addParameter({

name:string, dataType: BMParamType, cellMacroblockSize: Index3D = {x:64, y:64, z:64}})

removeParameter(name:string)

createSpaceIterator(

range:Index3DRange, levelMin:int, levelMax:Int, useBMStructure:boolean, leavesOnly:Boolean)->Iterator[BMCellIndex]

getInfo()->{

name:string, origin:Point3D, cellSize:Point3D, cellMacroblockSize: Index3D, maxLevel:Int, levelGridSizes:[Index3D] }

getParameterMetadata(name:string)->{

name:string, type:BMParamType, size:int, cellMacroblockSize:Index3D}

coordsToIndex(p:Point3D, level:int=0)->BMCellIndex

indexToCoords(inds:BMCellIndex)->Point3D координаты центра ячейки.

runFunction(

iterator: Iterator[BMCellIndex], readParamNames: Array[string], writeParamNames: Array[string], func: (double…)->double…)

Выполнить функцию func: (xs…) -> ys… для каждой ячейки, возвращённой итератором iterator. Функция func принимает несколько значений и возвращает несколько значений. Принимаемые значения (xs) - считанные из БМ значения параметров с именами readParamNames (соответственно), или nil, если параметр отсутствует или значение этого параметра в текущей ячейке отсутствует. Возвращаемые значения (ys) - значения параметров с именами writeParamNames, которые будут записаны в текущую ячейку БМ в эти параметры (соответственно), или, если значение из ys равно nil, то значение параметра в текущей ячейке будет очищено.

Пример: .. code:: lua

local it = bm:createSpaceIterator(bm:getIndexBounds(), 0, bm:maxLevel(), true, true) bm:runFunction(it, {«A», «B», «V»}, {«C», «D»},

function(a, b, v)

local c = (a + 1) * b - v local d = a if d <= 0 then

d = nil

end return c, d

end)

geomix.bm.IBMParameter

Методы

clear(inds:BMCellIndex)

exists(inds:BMCellIndex)->boolean

get(inds:BMCellIndex)->float

set(inds:BMCellIndex, value: float)

clearAllCells()