Layerservice
Contents
- 1 Layerservice
- 1.1 Special Selectors
- 1.2 layers
- 1.2.1 layer
- 1.2.2 layer_groups
- 1.2.3 layer_elements
- 1.2.4 layer_lists
- 1.2.5 layers
- 1.2.6 layer.N
- 1.2.7 layer.name
- 1.2.8 layer.index
- 1.2.9 layer.subdivLevel
- 1.2.10 layer.curveAngle
- 1.2.11 layer.parent
- 1.2.12 layer.childCount
- 1.2.13 layer.children
- 1.2.14 layer.pivot
- 1.2.15 layer.bounds
- 1.2.16 layer.visible
- 1.2.17 layer.model
- 1.2.18 layer.id
- 1.3 kids
- 1.4 parts
- 1.5 models
- 1.6 materials
- 1.6.1 material
- 1.6.2 material_groups
- 1.6.3 materials depricated?
- 1.6.4 material.N
- 1.6.5 material.name
- 1.6.6 material.index
- 1.6.7 material.layer
- 1.6.8 material.opacity
- 1.6.9 material.color
- 1.6.10 material.luminous
- 1.6.11 material.diffuse
- 1.6.12 material.specular
- 1.6.13 material.gloss
- 1.6.14 material.reflect
- 1.6.15 material.transp
- 1.6.16 material.transl
- 1.6.17 material.refIndex
- 1.6.18 material.bump
- 1.6.19 material.colHigh
- 1.6.20 material.colFilt
- 1.6.21 material.difSharp
- 1.6.22 material.id
- 1.6.23 material.textures
- 1.7 textures
- 1.8 clips
- 1.9 vmaps
- 1.10 verts
- 1.11 polys
- 1.12 edges
- 1.13 uvs
- 1.14 polsets
- 1.15 vrtsets
- 1.16 itmsets
- 1.17 selection
- 1.18 selmode
Layerservice
Commands are executed and queried directly through the command syntax description previously in this guide, but this doesn’t provide any detailed information about meshes and their related elements.
The layerservice ScriptQuery can be used to obtain this detailed mesh information.
Many item-level operations in layerservice have been superseded by those in Sceneservice. Be sure to check Sceneservice to see if it is more appropriate to your task than layerservice. In general, when you want to deal with items and their channels or when you want scene-level information, you'll mostly be making use of sceneservice. When you want to deal with modeling operations or need to obtain information about the specific vertices, polygons and edges of a mesh, you'd use layerservice.
Due to its design, layerservice is only meant to work on mesh items. Attempting to pass other kinds of items to any of the attributes will fail.
Special Selectors
This interface hosts a series of global lists of layers, models, materials, parts, textures, clips and vertex maps. There are also local lists specific to the layer selection for accessing vertices, edges and polygons.
The root-level attributes ending in an ‘s’ all return valid selectors for the more specific property attributes, similar to how the return values from the Commandservice commands and Categories attributes are the selectors for the more specific property attributes. However, the layerservice ‘s’ attributes require the use of selectors returned by the various attributes ending in _groups to filter the query to specific groups of elements.
The ‘s’ attributes are layers, kids, materials, parts, textures, clips, vmaps, verts, polys, edges and models.
The _groups attributes are layer_groups, kid_groups, material_groups, part_groups, texture_groups, clip_groups, vmap_groups, vert_groups, poly_groups and edge_groups.
Using Selectors
In the case of layers, the _groups attribute returns the keywords main, fg, bg and all. Getting a list of foreground layers is done in the following example.
query layerservice layers ? fg
Each of the values returned by this query can be passed into the a more specific property attribute, such as layer.subdivLevel. In the following example we assume that the query returned "0", and we provided that as the selector to layer.subdivLevel:
query layerservice layers.subdivLevel ? 0
Alternatively, all of the different ‘s’ attributes support the list walking keywords returned by the layers_element attributes first, last, next and prev, which are fairly self-explanatory. This example returns the first vertex map:
query layerservice vmaps ? first
The result of this query can then be passed to the property attributes. The next vertex map can then be obtained with:
query layerservice vmaps ? next
And so on.
Layer-Specific Selections
In the case of vertices, edges and polygons, a layer selection is required before any of their attributes can be used. This can be done by using any of the layer attributes that takes a selection.
The layer.index attribute, for example, actually gets the index of a specific layer, but it also changes the selection in the service.
In this example we switch the layer selection to the primary layer, discarding the returned value:
query layerservice layer.index ? main
After that, the various vertex, polygon and edge attributes can be used to get information specifically related to that layer, such as this query to get the number of selected vertices in the layer:
query layerservice vert.N ? selected
The above example also demonstrates the different grouping keywords used by the local lists. A complete list of keywords can be obtained by querying vert_groups, edge_groups and poly_groups, and includes selected, unselected, and all.
"Selecting" Layers, Vertex Maps, etc.
As mentioned above, it is important to note that all attributes work only on the current layer chosen for querying. This is especially true of the vert.???, poly.??? and edge.??? element attributes.
This is termed as selection, but is not the same as how you select elements with the mouse through the interface; rather this is to provide layerservice with a context to query another attribute. This kind of selection is performed by simply querying one of the attributes of the element you want to select.
For example, to "select" a layer, simply query any layer.??? attribute, such as layer.index.
query layerservice layer.index ? main
After this, the various vert.???, poly.???, etc. attributes can be used. The return value from the query above can be ignored; our only purpose is to tell layerservice which layer we plan to query the properties of.
Once "selected", it remains until a new call to one of the layer.??? attributes.
Similarly, attributes such as vert.vmapValue and poly.vmapValue require a vertex map selection, as mentioned in the attribute’s description
Selecting Points, Polygons and Edges
The select.element command can be used to select vertices, polygons and edges (this is selecting like how you would select a polygon in a model viewport, not the query selecting described in the previous section).
Once selected, elements can be manipulated using other commands. In all cases, the selectors returned by the verts, polys and edges attributes can be used to select those individual elements. verts and polys bother return element indices, while edges returns a vertex pair separated by commas and wrapped in parentheses, such as "(21, 18)".
layers
The layer attributes provide information about the individual layers that make up a mesh.
layer
Get a list of layer attributes. No selection needed.
Datatype: string
Example:
query layerservice layer ?
Result: [list the layer.??? attribute names]
layer_groups
Get a list of layer group keywords, used to querying subsets of layers:
- All: All layers.
- Fg: Foreground layers; currently active.
- Foregruond: Synonym for "fg"
- Bg: Background layers; currently inactive, for reference.
- Background: Synonym for "bg"
- Main: Main; new geometry creation will go here.
Datatype: string
Example:
query layerservice layer_groups ?
Result:
all
fg
bg primary main
layer_elements
Get a list of keywords for walking lists:
- First: Go to the head of the list.
- Last: Go to the tail element in the list.
- Prev: Go to the prev element in the list.
- Next: Go to the next element in the list.
Datatype: string
Example:
query layerservice layer_elements ?
Result: first last prev next
layer_lists
Get a list of layer group keywords, used to querying subsets of layers:
- Kids: A list of child layers parented to this one.
- Part: A list of parts used in these layers.
- Material: A list of materials used in these layers.
- Texture: A list of textures used in these layers.
- Clip: A list of clips (images) used in these layers.
- VMap: A list of vertex maps used in these layers.
- Poly: A list of polygons in these layers.
- Vert: A list of vertices in these layers.
- Edge: A list of edges in these layers.
Datatype: string
Example:
query layerservice layer_lists ?
Result:
kids
part
material
texture
clip
vmap
poly
vert
edge
model
uv
layers
Get a list of layer possible selections to pass into the more specific "layer.???" attributes.
Datatype: integer
Example:
query layerservice layers ? fg
Result: [list of foreground layers]
layer.N
Get the number of layers.
Datatype: integer
Example:
query layerservice layer.N ? fg
Result: 1
layer.name
Get the layer’s name.
Datatype: string
Example:
query layerservice layer.name ? 1
Result: Mesh
layer.index
Get the absolute index of the layer. Indicies start a 1.
Datatype: integer
Example:
query layerservice layer.index ? mesh020
Result: 0
layer.subdivLevel
Get the subdivision level of the layer.
Datatype: integer
Example:
query layerservice layer.subdivLevel ? mesh020
Result: 2
layer.curveAngle
Get the curve angle setting of a layer.
Datatype: angle
Example:
query layerservice layer.curveAngle ? mesh020
Result: 6.0
layer.parent
Get the parent index of the layer.
Datatype: integer
Example:
query layerservice layer.parent ? mesh020
Result: -1
layer.childCount
Get the number of layers parented to this one. The selector must be a layer_elements keyword or a specific selection from a layers query.
Datatype: integer
Example:
query layerservice layer.childCount ? mesh020
Result: 0
layer.children
Get the item IDs of the children of this layer. Returns an empty list if there are no children.
Datatype: integer
Example:
query layerservice layer.children ? mesh020
Result:
layer.pivot
Get the pivot point of the layers. Three numbers are returned, representing the X, Y and Z axes.
Datatype: distance
Example:
query layerservice layer.pivot ? mesh020
Result: 0.0 0.0 0.0
layer.bounds
Get the bounding box enclosing the layers. Six numbers are returned; which should be two pairs of X, Y and Z coordinates marking the opposite corners of the volume.
Datatype: distance
Example:
query layerservice layer.bounds ? mesh020
Result: -0.5 -0.5 -0.5 0.5 0.5 0.5
layer.visible
Get the layer visibility, returning fg, bg, main or none.
Datatype: string
Example:
query layerservice layer.visible ? mesh020
Result: fg
layer.model
Get the filename of the model the layer belongs to. This includes the full path to the file.
Datatype: string
Example:
query layerservice layer.model ? mesh020
Result: c:\Path\Filename.lwo
layer.id
Get the item reference ID of the layer.
Datatype: string
Example:
query layerservice layer.id ? mesh020
Result: mesh_375A8C59897A
- layer_groups
- layer_lists
- layer_elements
- layer
- layer.N
- layer.name
- layer.index
- layer.subdivLevel
- layer.splPatchLevel
- layer.curveAngle
- layer.parent
- layer.childCount
- layer.children
- layer.pivot
- layer.bounds
- layer.visible
- layer.model
- layer.id
- layer.wpos
- layer.wbounds
kids
- kid
- kid_groups
- kid.N
- kid.name
- kid.index
- kid.layer
- kid.parent
parts
- part
- part_groups
- part.N
- part.name
- part.index
- part.layer
models
The model series of attributes provide information about the models, which are defined as a collection of layers stored in a file.
The model attribute itself will return the list of available model.??? attributes.
The model.??? attributes query specific properties of an individual model. For each, the selector must be a specific selection from a models query, or an index between 0 and model.N, or one of the models_groups selectors.
model
Get a list of model attributes. No selection is needed.
Datatype: string
Example:
query layerservice model ?
Result: [list of model.??? attribute names]
model_groups
model.N
Get the number of models in memory.
Datatype: string
Example:
query layerservice model.n ?
Result: 2
model.name
Get the filename of the model, or an empty list if it has not yet been saved. This is the filename only, without the path to the file.
Datatype: string
Example:
query layerservice model.name ? 0
Result: Filename.lxo
model.index
Index of a model in the global model list. Note that the indices start from 1.
Datatype: integer
Example:
query layerservice model.index ? 0
Result: 1
model.layer
Return the index of the current layer of the model. Layer indices start from 1.
Datatype: integer
Example:
query layerservice model.layer ? first
Result: 1
model.curName
Get the name of the current model. If the file has not yet been saved, this may be "untitled" or "untitled*".
Datatype: string
Example:
query layerservice model.curName ?
Result: Filename.lxo
model.curIndex
Return the currently selected model’s index. Indices start from 1.
Datatype: integer
Example:
query layerservice model.curIndex ?
Result: 1
model.file
Get the filename of the model, or an empty list if it has not yet been saved. This includes the full path to the file as well as the filename.
Datatype: string
Example:
query layerservice model.file ? 0
Result: C:\path\Filename.lwo
materials
The material attribute is use to get the list of available material.??? attributes. used to provide group filters for the other attributes.
The materials attribute returns a list of possible, specific selectors for the various material.??? attributes, while material.N returns the number of materials in that grouping. Both attributes require a keyword from the material_group attribute as a selector.
material
Get a list of material attributes. No selection is needed.
Datatype: string
Example:
query layerservice material ?
Result: [list the material.??? attribute names]
material_groups
Description: Get a list of group keywords for use as the selection for the other attributes. No selection is needed.
Datatype: string
Example:
query layerservice material_groups ?
Result: all
materials depricated?
Get a list of selectors for the material.??? attributes. These are in the form of absolute indices into the global materials list. Material indices start from 0.
Datatype: integer
Example:
query layerservice materials ?
Result: 0
material.N
Get the number of materials.
Datatype: integer
Example:
query layerservice material.n ? all
Result: 1
material.name
Name of a material in the material list. The selection must be one of the keywords returned by layer_element, or a previous layer_element selection must exist.
Datatype: string
Example:
query layerservice material.name ? first
Result: Default
material.index
Index of a material in the material list.
Datatype: integer
Example:
query layerservice material.index ? first
Result: 0
material.layer
Returns the index of the current layer, usually that of a mesh item.
Datatype: integer
Example:
query layerservice material.index ?
Result: 0
material.opacity
Get the material’s opacity.
Datatype: percent Example:
query layerservice material.opacity ? 0
Result: 1.0
material.color
Get the material’s color. Returns three floats representing the red, green and blue components of the color.
Datatype: float
Example:
query layerservice material.color ? 0
Result: 0.8 0.8 0.8
material.luminous
Get the material’s luminosity.
Datatype: percent
Example:
query layerservice material.luminous ? 0
Result: 0.0
material.diffuse
Get the material’s diffusion.
Datatype: percent
Example:
query layerservice material.diffuse ? 0
Result: 1.0
material.specular
Get the material’s specular.
Datatype: percent
Example:
query layerservice material.specular ? 0
Result: 0.0
material.gloss
Get the material’s glossiness.
Datatype: percent
Example:
query layerservice material.gloss ? 0
Result: 0.3
material.reflect
Get the material’s reflection amount.
Datatype: percent
Example:
query layerservice material.reflect ? 0
Result: 0.0
material.transp
Get the material’s transparency.
Datatype: percent
Example:
query layerservice material.transp ? 0
Result: 0.0
material.transl
Get the material’s translucency.
Datatype: percent
Example:
query layerservice material.transl ? 0
Result: 0.0
material.refIndex
Get the material’s refraction index.
Datatype: float
Example:
query layerservice material.diffuse ? 0
Result: 1.0
material.bump
Get the material’s bump amount.
Datatype: percent
Example:
query layerservice material.bump ? 0
Result: 1.0
material.colHigh
Get the material’s color highlights value.
Datatype: percent
Example:
query layerservice material.colHigh ? 0
Result: 0.0
material.colFilt
Get the material’s color filter value.
Datatype: percent
Example:
query layerservice material.colrilt ? 0
Result: 0.0
material.difSharp
Get the material’s diffuse sharpness amount.
Datatype: percent
Example:
query layerservice material.difsharp ? 0
Result: 0.0
material.id
Get the item reference ID of the material.
Datatype: string
Example:
query layerservice material.id ? 0
Result: textureLayer_01253459C65C
material.textures
Get a list of item reference IDs for the textures associated with the material.
Datatype: string
Example:
query layerservice material.textures ? first
Result:
textureLayer_8F767159B978
textureLayer_82B83B59C65B
textureLayer_01253459C65C
texturelayer_14059A598979
textures
- texture
- texture_groups
- texture.N
- texture.name
- texture.index
- texture.layer
- texture.id
- texture.type
- texture.channel
- texture.opacity
- texture.enable
- texture.invert
- texture.blendMode
- texture.position
- texture.rotation
- texture.scale
- texture.projType
- texture.projAxis
- texture.coordSys
- texture.fallType
- texture.falloff
- texture.uvName
- texture.uvMap
- texture.clip
- texture.clipFile
- texture.locator
clips
- clip
- clip_groups
- clip.N
- clip.name
- clip.index
- clip.layer
- clip.file
- clip.id
- clip.info
vmaps
- vmap
- vmap_groups
- vmap.N
- vmap.name
- vmap.index
- vmap.layer
- vmap.type
- vmap.dim
- vmap.selected
- vmap.tag
verts
- vert
- vert_groups
- vert.N
- vert.name
- vert.index
- vert.layer
- vert.pos
- vert.normal
- vert.numPolys
- vert.polyList
- vert.numVerts
- vert.vertList
- vert.vmapValue
- vert.selected
- vert.hidden
- vert.selSets
- vert.symmetric
- vert.wpos
- vert.workpos
- vert.defpos
- vert.wdefpos
polys
- poly
- poly_groups
- poly.N
- poly.name
- poly.index
- poly.layer
- poly.numVerts
- poly.vertList
- poly.normal
- poly.type
- poly.vmapValue
- poly.discos
- poly.material
- poly.part
- poly.selected
- poly.hidden
- poly.pos
- poly.tags
- poly.tagTypes
- poly.selSets
- poly.symmetric
- poly.wpos
- poly.wnormal
- poly.vertNormals
- poly.wvertNormals
- poly.workpos
- poly.worknormal
edges
- edge
- edge_groups
- edge.N
- edge.name
- edge.index
- edge.layer
- edge.vertList
- edge.numPolys
- edge.polyList
- edge.length
- edge.creaseWeight
- edge.vector
- edge.pos
- edge.selected
- edge.hidden
- edge.selSets
- edge.symmetric
- edge.wpos
- edge.wvector
- edge.workpos
- edge.workvector
uvs
- uv
- uv_groups
- uv.N
- uv.name
- uv.index
- uv.layer
- uv.vert
- uv.poly
- uv.vmap
- uv.disco
- uv.pos
- uv.selected
- uv.hidden
polsets
- polset
- polset_groups
- polset.N
- polset.name
- polset.index
- polset.layer
vrtsets
- vrtset
- vrtset_groups
- vrtset.N
- vrtset.name
- vrtset.index
- vrtset.layer
itmsets
- itmset
- itmset_groups
- itmset.N
- itmset.name
- itmset.index
- itmset.layer