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