---
title: Server-Side Conditional Query and Expression Query
source: https://vjmap.com/en/guide/svrStyleVar.html
---

# Server-Side Conditional Query and Expression Query

## Conditional Query
For the backend database table structure, use the SQL WHERE clause for data query. Only the part after `where` needs to be written.

Table structure:

| Field Name | Type | Description |
|:---|:---|:---|
|id|integer|id|
|objectid|text|Entity id (block objectid naming rule: block id_referenced block definition id1_referenced block definition id2 (may have multiple)_entity id; group objectid naming rule: group id$entity id_entity element index; table naming rule: table id@entity id_entity element index; other entity naming rule: id_entity element index)|
|layerindex|integer|Layer index|
|name|text|Entity type value, e.g. "1" for AcDbLine. See "Supported CAD Entity Types" below for specific values|
|color|int|Color (calculated from RGB, e.g. black is 0x000000, with alpha 0xFF000000, becomes unsigned 0xff000000<<0 result -16777216)|
|data|blob|Geometry data|
|s1|text|Linetype|
|s2|text|Extended dictionary data|
|s3|text|Coordinate data, varies by entity|
|s4|text|Character attribute data, varies by entity|
|s5|text|Character attribute data, varies by entity|
|n1|float|Color index|
|n2|float|Linetype scale|
|n3|float|Line width|
|n4|float|Transparency|
|n5|float|Numeric attribute data, varies by entity|
|n6|float|Numeric attribute data, varies by entity|
|n7|float|Numeric attribute data, varies by entity|
|n8|float|Numeric attribute data, varies by entity|
|n9|float|Numeric attribute data, varies by entity|
|n10|float|Numeric attribute data, varies by entity|
|geom|GEOMETRY|Entity bounding rectangle|

(For detailed field meanings by entity type, see the documentation below)

## Built-in Variables for Render Mode Expressions
| Variable | Description | Type | Example |
|:---|:---|:---|:---|
|gInColor|Current entity input color|(numeric)|4278255615
|gInColorRed|Current entity input color (red component)|(numeric)|255
|gInColorGreen|Current entity input color (green component)|(numeric)|255
|gInColorBlue|Current entity input color (blue component)|(numeric)|0
|gInZoom|Current zoom level|(numeric)|1
|println|Debug output function||
|gOutColor|Output color (color to modify)|(numeric)|4278255615

## Built-in Variables for Query Mode Style Expressions

| Variable | Description | Type | Example |
|:---|:-----------------------|:---|:---|
|gInLayerIndex| Current entity layer index |(numeric)|0|
|gInObjectId| Current entity object ID |(string)|'283' e.g. gInObjectId=='283'
|gInEntityObjId| Current entity parent object ID |(string)|'1C' e.g. gInEntityObjId=='1C' takes characters before _ in gInObjectId, e.g. for block when gInObjectId=='283_1', then gInEntityObjId= '283'
|gInFeatureType| Current entity type |(string)|'AcDbPolyline' e.g. gInFeatureType=='AcDbPolyline'
|gInLayerName| Current entity layer name |(string)|e.g. 'Layer1': gInLayerName=='Layer1'
|gInColor| Current entity color |(numeric)|4278255615
|gInColorRed| Current entity color (red component) |(numeric)|255
|gInColorGreen| Current entity color (green component) |(numeric)|255
|gInColorBlue| Current entity color (blue component) |(numeric)|0
|gInColorAlpha| Current entity color (alpha component) |(numeric)|0
|println| Debug output function |
|gInExtendMinX| Current entity extent (bottom-right X) |(numeric)|700.10
|gInExtendMinY| Current entity extent (bottom-right Y) |(numeric)|10.01
|gInExtendMaxX| Current entity extent (top-left X) |(numeric)|800.20
|gInExtendMaxY| Current entity extent (top-left Y) |(numeric)|20.02
|gInAttrs1| Current entity attribute one value |(string) s1 linetype|
|gInAttrs2| Current entity attribute two value |(string) s2 extended dictionary data|
|gInAttrs3| Current entity attribute three value |(string) s3 varies by entity|
|gInAttrs4| Current entity attribute four value |(string) s4 character attribute data, varies by entity|
|gInAttrs5| Current entity attribute five value |(string) s5 character attribute data, varies by entity|
|gInAttrn6| Current entity attribute six value |(numeric) n1 color index|
|gInAttrn7| Current entity attribute seven value |(numeric) n2 linetype scale|
|gInAttrn8| Current entity attribute eight value |(numeric) n3 line width|
|gInAttrn9| Current entity attribute nine value |(numeric) n4 transparency|
|gInAttrn10| Current entity attribute ten value |(numeric) n5 numeric attribute data, varies by entity|
|gInAttrn11| Current entity attribute 11 value |(numeric) n6 varies by entity|
|gInAttrn12| Current entity attribute 12 value |(numeric) n7 varies by entity|
|gInAttrn13| Current entity attribute 13 value |(numeric) n8 varies by entity|
|gInAttrn14| Current entity attribute 14 value |(numeric) n9 varies by entity|
|gInAttrn15| Current entity attribute 15 value |(numeric) n10 varies by entity|
|gInCoordX| Current entity X coordinate array |(numeric array)|[10,20...] gInCoordX[0]=10|
|gInCoordY| Current entity Y coordinate array |(numeric array)|[10,20...] gInCoordY[0]=10|
|gInCoordZ| Current entity Z coordinate array |(numeric array)|[10,20...] gInCoordZ[0]=10|
|gInCoordCount| Current entity coordinate count |(numeric)|2|
|gOutColorRed| Return color (red component) (modify current entity color) |(numeric)|255, e.g. gOutColorRed := 255; means all levels red component 255; can also be array, e.g. gOutColorRed[0] := 122;gOutColorRed[5] := 200; means levels 1-4 red 122, level 5+ red 200
|gOutColorGreen| Return color (green component) (modify current entity color) |(numeric)|255, same usage as above
|gOutColorBlue| Return color (blue component) (modify current entity color) |(numeric)|255, same usage as above
|gOutColorAlpha| Return color (alpha component) (modify current entity color) |(numeric)|255, same usage as above
|gOutLineWidth| Return line width value (modify current entity line width) |(numeric)|3, same usage as above
|gOutVisible| Return visibility (modify current entity visibility) |(numeric)|1 or 0, same usage as above
|gOutReturn| 0 exclude from selection set; 1 include in selection set |

## Query Data Expression
 Same as above
 
## Supported CAD Entity Types

| Class Name | Description | Type Value |
|:---------------------------|:---|:----|
| AcDbLine | Line | 1 |
| AcDbPolyline | Polyline | 2 |
| AcDb2dPolyline | 2D polyline | 3 |
| AcDb3dPolyline | 3D polyline | 4 |
| AcDbSpline | Spline | 5 |
| AcDbArc | Arc | 6 |
| AcDbCircle | Circle | 7 |
| AcDbEllipse | Ellipse | 8 |
| AcDbCurve | Curve | 9 |
| AcDbBlockReference | Block reference | 10 |
| AcDbHatch | Hatch | 11 |
| AcDbMText | Multiline text | 12 |
| AcDbText | Single-line text | 13 |
| AcDbShape | Shape entity | 14 |
| AcDbRasterImage | Raster image | 15 |
| AcDbWipeout | Wipeout entity | 16 |
| AcDb2LineAngularDimension | Angular dimension [two lines] | 17 |
| AcDb3PointAngularDimension | Angular dimension [three points] | 18 |
| AcDbAlignedDimension | Aligned dimension | 19 |
| AcDbArcDimension | Arc dimension | 20 |
| AcDbDiametricDimension | Diameter dimension | 21 |
| AcDbOrdinateDimension | Ordinate dimension | 22 |
| AcDbRadialDimension | Radius dimension | 23 |
| AcDbRadialDimensionLarge | Radius polyline dimension | 24 |
| AcDbRotatedDimension | Rotated dimension | 25 |
| AcDbAttributeDefinition | Attribute definition | 26 |
| AcDbAttribute | Block attribute | 27 |
| AcDbTable | Table | 28 |
| AcDbMLeader | Leader dimension | 29 |
| AcDbRegion | Region | 30 |
| AcDbPolyFaceMesh | Polyface mesh entity | 31 |
| AcDbPolygonMesh | Polygon mesh | 32 |
| AcDbSurface | Surface | 33 |
| AcDb3dSolid | 3D solid | 34 |
| AcDbFace | 3D face | 35 |
| AcDbSolid | Solid entity | 36 |

## Query Return Fields
| Field Name | Description |
|:--------------|:--------------------------------------|
| objectid | Entity unique id, unchanged after map update |
| layerindex | Layer index |
| name | Entity type |
| geojson | Coordinates in WKT Mercator format |
| envelop | Bounding rectangle (WKT Mercator format) |
| bounds | Bounding rectangle (CAD coordinates) ([minx,miny,maxx, maxy]) |
| isEnvelop | Whether query uses actual extent or bounding box (for point selection with many points, returns by extent) |
| color | Entity color |
| linetype | Linetype |
| linetypeScale | Linetype scale |
| lineWidth | Line width |
| alpha | Transparency |
| xdata | Extended data |
| points | Coordinate sequence |
| indices | Point index sequence |
| thickness | Thickness |
| area | Area |
| isclosed | Whether closed |
| polyType | Polyline type |
| center | Circle center point |
| radius | Circle radius |
| startAngle | Arc start angle |
| endAngle | Arc end angle |
| rotate | Rotation angle |
| positon | Position |
| normal | Normal vector |
| elevation | Elevation |
| length | Length |
| location | Location |
| contents | Text content (multiline text includes style content) |
| height | Text height |
| width | Text width |
| textHeight | Text height |
| text | Text content |
| actualHeight | Multiline text actual height |
| actualWidth | Multiline text actual width |
| bulge | Bulge |
| origin | Origin |
| u | u in uv |
| v | v in uv |
| size | Size |
| isFit | Whether fitted |
| fitTol | Fit tolerance |
| degree | Degree |
| horzMode | Horizontal alignment mode |
| majorAxis | Axis |
| data3d | 3D entity material property data |

## Field Meanings by Entity Type

s1 linetype (string); s2 extended dictionary data (string);

n1 color index; n2 linetype scale; n3 line width; n4 transparency;

| Class Name | Class Description | Type Value | s3(string) | s4(string) | s5(string) | n5 | n6 | n7 | n8 | n9 | n10 |
|:---------|:----------|:----|:--------|:----|:----------|:----------|:-------------|:--------------|:----|:----|:----|
| AcDbLine | Line | 1 | points | | | thickness | length | | | | |
| AcDbPolyline | Polyline | 2 | points | bulge | data3d | area | isclosed | linetypeScale | thickness | elevation | |
| AcDb2dPolyline | 2D polyline | 3 | points | | | area | isclosed | polyType | thickness | elevation | |
| AcDb3dPolyline | 3D polyline | 4 | points | | | area | isclosed | polyType | | | |
| AcDbSpline | Spline | 5 | points | | | area | isclosed | isFit | fitTol | degree | |
| AcDbArc | Arc | 6 | center | | | area | isclosed | radius | startAngle | endAngle | thickness |
| AcDbCircle | Circle | 7 | center | | | area | isclosed | radius | thickness | | |
| AcDbEllipse | Ellipse | 8 | center | majorAxis | | area | isclosed | radius | startAngle | endAngle | |
| AcDbCurve | Curve | 9 | | | | area | isclosed | | | | |
| AcDbBlockReference | Block reference | 10 | positon | attributeDef | blockname | rotate | scaleX | scaleY | scaleZ | | |
| AcDbHatch | Hatch | 11 | points | patternName | | elevation | patternAngle | patternScale | | | |
| AcDbMText | Multiline text | 12 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbText | Single-line text | 13 | location | text | | height | rotate | horzMode | | | |
| AcDbShape | Shape entity | 14 | positon | normal | | rotate | size | | | | |
| AcDbRasterImage | Raster image | 15 | origin | | | | | | | | |
| AcDbWipeout | Wipeout entity | 16 | | | | | | | | | |
| AcDb2LineAngularDimension | Angular dim [two lines] | 17 | | | | | | | | | |
| AcDb3PointAngularDimension | Angular dim [three points] | 18 | | | | | | | | | |
| AcDbAlignedDimension | Aligned dimension | 19 | | | | | | | | | |
| AcDbArcDimension | Arc dimension | 20 | | | | | | | | | |
| AcDbDiametricDimension | Diameter dimension | 21 | | | | | | | | | |
| AcDbOrdinateDimension | Ordinate dimension | 22 | | | | | | | | | |
| AcDbRadialDimension | Radius dimension | 23 | | | | | | | | | |
| AcDbRadialDimensionLarge | Radius polyline dim | 24 | | | | | | | | | |
| AcDbRotatedDimension | Rotated dimension | 25 | | | | | | | | | |
| AcDbAttributeDefinition | Attribute definition | 26 | location | text | contents | height | rotate | horzMode | | | |
| AcDbAttribute | Block attribute | 27 | location | text | contents | height | rotate | horzMode | | | |
| AcDbTable | Table | 28 | positon | attributeDef | contents | rotate | scaleX | scaleY | scaleZ | | |
| AcDbMLeader | Leader dimension | 29 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbRegion | Region | 30 | points | indices | data3d | area | perimeter | | | | |
| AcDbPolyFaceMesh | Polyface mesh | 31 | points | indices | data3d | | | | | | |
| AcDbPolygonMesh | Polygon mesh | 32 | points | indices | data3d | | | | | | |
| AcDbSurface | Surface | 33 | points | indices | data3d | | | | | | |
| AcDb3dSolid | 3D solid | 34 | points | indices | data3d | | | | | | |
| AcDbFace | 3D face | 35 | points | indices | data3d | | | | | | |
| AcDbSolid | Solid entity | 36 | points | | | thickness | length | isclosed | | | |


## Built-in Style Functions
```c
// gRed(inColor) get red component
	function_t(
				"gRed",
				"var color := inColor % 256					;				"
				"color															",
				"inColor");

	// gGreen(inColor) get green component
	function_t(
				"gGreen",
				"var color := inColor% (256 * 256) / 256;				       "
				"color															",
				"inColor");

	// gBlue(inColor) get blue component
	function_t(
				"gBlue",
				"var color := inColor % (256 * 256 * 256) / 256 / 256	;	   "
				"color															",
				"inColor");

	// gFilterGrey(r, g, b) greyscale filter (average of r,g,b)
	function_t(
				"gFilterGrey",
				"var grey := round(( clrRed +  clrGreen + clrBlue) / 3);"
				"var color := grey + grey * 256 + grey * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterGreyMin(r, g, b) greyscale filter (min of r,g,b)
	function_t(
				"gFilterGreyMin",
				"var grey := round(min(clrRed,clrGreen,clrBlue);"
				"var color := grey + grey * 256 + grey * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterGreyMax(r, g, b) greyscale filter (max of r,g,b)
	function_t(
				"gFilterGreyMax",
				"var grey := round(max(clrRed,clrGreen,clrBlue);"
				"var color := grey + grey * 256 + grey * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterWeight(r, g, b) greyscale filter (weighted average)
	function_t(
				"gFilterWeight",
				"var grey := round(0.3 * clrRed + 0.59 * clrGreen + 0.11 * clrBlue);"
				"var color := grey + grey * 256 + grey * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterBlackWhite(r, g, b) black & white filter
	function_t(
				"gFilterBlackWhite",
				"var grey := round(( clrRed +  clrGreen + clrBlue) / 3);        "
				"var color := if(grey >= 100, 16777215, 0);				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterOpposite(r, g, b) invert filter
	function_t(
				"gFilterOpposite",
				"var red := round(255 - clrRed);"
				"var green := round(255 - clrGreen);"
				"var blue := round(255 - clrBlue);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterMaxAvg(r, g, b) desaturate: average of max(r,g,b) values
	function_t(
				"gFilterMaxAvg",
				"var grey := round((max(clrRed,clrGreen,clrBlue) + min(clrRed,clrGreen,clrBlue))/2);"
				"var color := grey + grey * 256 + grey * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterRed(r, g, b) red-only filter
	function_t(
				"gFilterRed",
				"var red := clrRed;"
				"var green := 0;"
				"var blue := 0;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterGreen(r, g, b) green-only filter
	function_t(
				"gFilterGreen",
				"var red := 0;"
				"var green := clrGreen;"
				"var blue := 0;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterBlue(r, g, b) blue-only filter
	function_t(
				"gFilterBlue",
				"var red := 0;"
				"var green := 0;"
				"var blue := clrBlue;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterRemoveRed(r, g, b) remove red
	function_t(
				"gFilterRemoveRed",
				"var red := 0;"
				"var green := clrGreen;"
				"var blue := clrBlue;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterRemoveGreen(r, g, b) remove green
	function_t(
				"gFilterRemoveGreen",
				"var red := clrRed;"
				"var green := 0;"
				"var blue := clrBlue;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterRemoveBlue(r, g, b) remove blue
	function_t(
				"gFilterRemoveBlue",
				"var red := clrRed;"
				"var green := clrGreen;"
				"var blue := 0;"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterOld(r, g, b) vintage filter
	function_t(
				"gFilterOld",
				"var red := round(0.393 * clrRed + 0.769 * clrGreen + 0.189 * clrBlue);"
				"var green := round(0.349 * clrRed + 0.686 * clrGreen + 0.168 * clrBlue);"
				"var blue := round(0.272 * clrRed + 0.534 * clrGreen + 0.131 * clrBlue);"
				"red := min(red, 255);"
				"green := min(green, 255);"
				"blue := min(blue, 255);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterFusion(r, g, b) fusion filter
	function_t(
				"gFilterFusion",
				"var red := round(clrRed * 128 / (clrGreen + clrBlue + 1);"
				"var green := round(clrGreen * 128 / (clrRed + clrBlue + 1);"
				"var blue := round(clrBlue * 128 / (clrGreen + clrRed + 1);"
				"red := min(red, 255);"
				"green := min(green, 255);"
				"blue := min(blue, 255);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterFrozen(r, g, b) frozen filter
	function_t(
				"gFilterFrozen",
				"var red := round((clrRed - clrGreen -clrBlue) * 3 /2);"
				"var green := round((clrGreen - clrRed -clrBlue) * 3 /2);"
				"var blue := round( (clrBlue - clrGreen - clrRed) * 3 /2);"
				"red := min(red, 255);"
				"green := min(green, 255);"
				"blue := min(blue, 255);"
				"red := max(red, 0);"
				"green := max(green, 0);"
				"blue := max(blue, 0);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterComic(r, g, b) comic filter
	function_t(
				"gFilterComic",
				"var red := round(abs(clrGreen - clrBlue + clrGreen + clrRed) * clrRed / 256);"
				"var green := round(abs(clrBlue -clrGreen + clrBlue + clrRed) * clrRed / 256);"
				"var blue := round(abs(clrBlue -clrGreen + clrBlue + clrRed) * clrGreen / 256);"
				"red := min(red, 255);"
				"green := min(green, 255);"
				"blue := min(blue, 255);"
				"red := max(red, 0);"
				"green := max(green, 0);"
				"blue := max(blue, 0);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterBrown(r, g, b) sepia filter
	function_t(
				"gFilterBrown",
				"var red := round(clrRed * 0.393 + clrGreen * 0.769 + clrBlue * 0.189);"
				"var green := round(clrRed * 0.349 + clrGreen * 0.686 + clrBlue * 0.168);"
				"var blue := round(clrRed * 0.272 + clrGreen * 0.534 + clrBlue * 0.131);"
				"red := min(red, 255);"
				"green := min(green, 255);"
				"blue := min(blue, 255);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterBlueTheme(r, g, b) blue theme filter
	function_t(
				"gFilterBlueTheme",
				"var red := round(clrRed * 0.7);"
				"var green := round(clrGreen * 0.7);"
				"var blue := clrBlue;"
				"blue := max(100, blue);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterRedTheme(r, g, b) red theme filter
	function_t(
				"gFilterRedTheme",
				"var red := clrRed;"
				"var green := round(clrGreen * 0.7);"
				"var blue := round(clrBlue * 0.7);"
				"red := max(100, red);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterGreenTheme(r, g, b) green theme filter
	function_t(
				"gFilterGreenTheme",
				"var red := round(clrRed * 0.7);"
				"var green := clrGreen;"
				"var blue := round(clrBlue * 0.7);"
				"green := max(100, green);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue");

	// gFilterCustomTheme(r, g, b, maxr, maxg, maxb) custom theme filter
	function_t(
				"gFilterCustomTheme",
				"var red := if(maxr > 1, max(maxr, clrRed), round(clrRed * maxr);"
				"var green := if(maxg > 1, max(maxg, clrGreen), round(clrGreen * maxg);"
				"var blue := if(maxb > 1, max(maxb, clrBlue), round(clrBlue * maxb);"
				"var color := blue + green * 256 + red * 256 * 256;				"
				"color															",
				"clrRed", "clrGreen", "clrBlue", "maxr", "maxg", "maxb");
```
