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
// 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");
Was this page helpful?Thanks for the feedback!