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()