服务端条件查询和表达式查询
条件查询
针对后台数据库表结构,使用sql语句条件部分进行数据查询。只需要写where后面的部分
表结构如下
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | integer | id |
| objectid | text | 实体id(块objectid命名规则:块id_引用的块定义id1_引用的块定义id2(可能有多个)_实体id; 组objectid命名规则:组id$实体id_实体内元素索引;表格命名规则:表格id@实体id_实体内元素索引,其余实体命名规则: id_实体内元素索引 |
| layerindex | integer | 图层索引 |
| name | text | 实体类型值,如"1"表示AcDbLine,具体值查看下面的“支持的CAD实体类型” |
| color | int | 颜色(根据rgb颜色计算此值,例如黑色为0x000000,加上透明度为0xFF000000, 变成无符号 0xff000000<<0结果为 -16777216) |
| data | blob | 几何数据 |
| s1 | text | 线型 |
| s2 | text | 扩展字典数据 |
| s3 | text | 坐标数据,不同实体表达不一样 |
| s4 | text | 字符型属性数据, 不同实体表达不一样 |
| s5 | text | 字符型属性数据, 不同实体表达不一样 |
| n1 | float | 颜色索引 |
| n2 | float | 线型比例 |
| n3 | float | 线宽 |
| n4 | float | 透明度 |
| n5 | float | 数值型属性数据, 不同实体表达不一样 |
| n6 | float | 数值型属性数据, 不同实体表达不一样 |
| n7 | float | 数值型属性数据, 不同实体表达不一样 |
| n8 | float | 数值型属性数据, 不同实体表达不一样 |
| n9 | float | 数值型属性数据, 不同实体表达不一样 |
| n10 | float | 数值型属性数据, 不同实体表达不一样 |
| geom | GEOMETRY | 实体外包矩形 |
(实体类型各字段含义详细文档见此文档后面说明)
渲染模式下表达式内置变量
| 变量 | 说明 | 类型 | 举例 |
|---|---|---|---|
| gInColor | 当前实体输入颜色 | (数值型) | 4278255615 |
| gInColorRed | 当前实体输入颜色(红色分量) | (数值型) | 255 |
| gInColorGreen | 当前实体输入颜色(绿色分量) | (数值型) | 255 |
| gInColorBlue | 当前实体输入颜色(蓝色分量) | (数值型) | 0 |
| gInZoom | 当前缩放级别 | (数值型) | 1 |
| println | 调试输出函数 | ||
| gOutColor | 输出颜色(要修改的颜色) | (数值型) | 4278255615 |
查询模式下样式表达式内置变量
| 变量 | 说明 | 类型 | 举例 |
|---|---|---|---|
| gInLayerIndex | 当前实体图层索引 | (数值型) | 0 |
| gInObjectId | 当前实体对象ID | (字符串) | '283' 判断如 gInObjectId=='283' |
| gInEntityObjId | 当前实体所属父对象ID | (字符串) | '1C' 判断如 gInEntityObjId=='1C' 取 gInObjectId中_前面的字符,如为块时gInObjectId=='283_1',则 gInEntityObjId= '283' |
| gInFeatureType | 当前实体类型 | (字符串) | 'AcDbPolyline' 判断如 gInFeatureType=='AcDbPolyline' |
| gInLayerName | 当前实体图层名称 | (字符串) | '图层1' 判断如 gInLayerName=='图层1' |
| gInColor | 当前实体颜色 | (数值型) | 4278255615 |
| gInColorRed | 当前实体颜色(红色分量) | (数值型) | 255 |
| gInColorGreen | 当前实体颜色(绿色分量) | (数值型) | 255 |
| gInColorBlue | 当前实体颜色(蓝色分量) | (数值型) | 0 |
| gInColorAlpha | 当前实体颜色(透明度分量) | (数值型) | 0 |
| println | 调试输出函数 | ||
| gInExtendMinX | 当前实体图形范围(右下角X) | (数值型) | 700.10 |
| gInExtendMinY | 当前实体图形范围(右下角y) | (数值型) | 10.01 |
| gInExtendMaxX | 当前实体图形范围(左上角X) | (数值型) | 800.20 |
| gInExtendMaxY | 当前实体图形范围(左上角y) | (数值型) | 20.02 |
| gInAttrs1 | 当前实体属性一值 | (字符串) s1 线型 | |
| gInAttrs2 | 当前实体属性二值 | (字符串) s2 扩展字典数据 | |
| gInAttrs3 | 当前实体属性三值 | (字符串) s3 不同实体表达不一样 | |
| gInAttrs4 | 当前实体属性四值 | (字符串) s4 字符型属性数据, 不同实体表达不一样 | |
| gInAttrs5 | 当前实体属性五值 | (字符串) s5 字符型属性数据, 不同实体表达不一样 | |
| gInAttrn6 | 当前实体属性六值 | (数值型) n1 颜色索引 | |
| gInAttrn7 | 当前实体属性七值 | (数值型) n2 线型比例 | |
| gInAttrn8 | 当前实体属性八值 | (数值型) n3 线宽 | |
| gInAttrn9 | 当前实体属性九值 | (数值型) n4 透明度 | |
| gInAttrn10 | 当前实体属性十值 | (数值型) n5 数值型属性数据, 不同实体表达不一样 | |
| gInAttrn11 | 当前实体属性11值 | (数值型) n6 不同实体表达不一样 | |
| gInAttrn12 | 当前实体属性12值 | (数值型) n7 不同实体表达不一样 | |
| gInAttrn13 | 当前实体属性13值 | (数值型) n8 不同实体表达不一样 | |
| gInAttrn14 | 当前实体属性14值 | (数值型) n9 不同实体表达不一样 | |
| gInAttrn15 | 当前实体属性15值 | (数值型) n10 不同实体表达不一样 | |
| gInCoordX | 当前实体坐标X数组 | (数值型数组) | [10,20...] gInCoordX[0]=10 |
| gInCoordY | 当前实体坐标Y数组 | (数值型数组) | [10,20...] gInCoordY[0]=10 |
| gInCoordZ | 当前实体坐标Z数组 | (数值型数组) | [10,20...] gInCoordZ[0]=10 |
| gInCoordCount | 当前实体坐标个数 | (数值型) | 2 |
| gOutColorRed | 返回的颜色(红色分量)(修改当前实体颜色) | (数值型) | 255,如gOutColorRed := 255;表示所有级别红色分量为255; 也可以是数组表示,如gOutColorRed[0] := 122;gOutColorRed[5] := 200;表示1-4级别红色分量是122,5级别以上是红色分量200 |
| gOutColorGreen | 返回的颜色(红色分量)(修改当前实体颜色) | (数值型) | 255,用法同上 |
| gOutColorBlue | 返回的颜色(红色分量)(修改当前实体颜色) | (数值型) | 255,用法同上 |
| gOutColorAlpha | 返回的颜色(透明度分量)(修改当前实体颜色) | (数值型) | 255,用法同上 |
| gOutLineWidth | 返回的线宽值(修改当前实体线宽值) | (数值型) | 3,用法同上 |
| gOutVisible | 返回是否可见(修改当前实体是否可见) | (数值型) | 1或0,用法同上 |
| gOutReturn | 0 不加入选择集;1加入选择集 |
查询数据表达式
同上
支持的CAD实体类型
| 类名称 | 说明 | 类型值 |
|---|---|---|
| AcDbLine | 直线 | 1 |
| AcDbPolyline | 多段线 | 2 |
| AcDb2dPolyline | 二维折线 | 3 |
| AcDb3dPolyline | 三维多段线 | 4 |
| AcDbSpline | 样条曲线 | 5 |
| AcDbArc | 圆弧 | 6 |
| AcDbCircle | 圆 | 7 |
| AcDbEllipse | 椭圆 | 8 |
| AcDbCurve | 曲线 | 9 |
| AcDbBlockReference | 块参照 | 10 |
| AcDbHatch | 填充 | 11 |
| AcDbMText | 多行文本 | 12 |
| AcDbText | 单行文本 | 13 |
| AcDbShape | 型实体 | 14 |
| AcDbRasterImage | 栅格图片 | 15 |
| AcDbWipeout | 遮罩实体 | 16 |
| AcDb2LineAngularDimension | 角度标注[两条线] | 17 |
| AcDb3PointAngularDimension | 角度标注[三点] | 18 |
| AcDbAlignedDimension | 对齐标注 | 19 |
| AcDbArcDimension | 圆弧标注 | 20 |
| AcDbDiametricDimension | 直径标注 | 21 |
| AcDbOrdinateDimension | 坐标标注 | 22 |
| AcDbRadialDimension | 半径标注 | 23 |
| AcDbRadialDimensionLarge | 半径折线标注 | 24 |
| AcDbRotatedDimension | 转角标注 | 25 |
| AcDbAttributeDefinition | 属性注记 | 26 |
| AcDbAttribute | 块属性 | 27 |
| AcDbTable | 表格 | 28 |
| AcDbMLeader | 引线标注 | 29 |
| AcDbRegion | 面域 | 30 |
| AcDbPolyFaceMesh | 多面网格实体 | 31 |
| AcDbPolygonMesh | 多边形网格 | 32 |
| AcDbSurface | 曲面 | 33 |
| AcDb3dSolid | 三维实体 | 34 |
| AcDbFace | 三维面 | 35 |
| AcDbSolid | 实线实体 | 36 |
查询返回字段
| 字段名称 | 说明 |
|---|---|
| objectid | 实体唯一id,图更新后也不会变化 |
| layerindex | 图层索引 |
| name | 实体类型 |
| geojson | 坐标 WKT 墨卡托坐标格式 |
| envelop | 外包矩形 (WKT 墨卡托坐标格式 ) |
| bounds | 外包矩形(CAD坐标)([minx,miny,maxx, maxy] ) |
| isEnvelop | 查询时是否按真正的范围计算,还是按外包盒(如果点太多,点选时会按范围返回) |
| color | 实体颜色 |
| linetype | 线型 |
| linetypeScale | 线型比例 |
| lineWidth | 线宽 |
| alpha | 透明度 |
| xdata | 扩展数据 |
| points | 坐标序列 |
| indices | 点索引序列 |
| thickness | 厚度 |
| area | 面积 |
| isclosed | 是否闭合 |
| polyType | 多段线类型 |
| center | 圆中心点 |
| radius | 圆半径 |
| startAngle | 圆弧开始角度 |
| endAngle | 圆弧结束角度 |
| rotate | 旋转角度 |
| positon | 位置 |
| normal | 法向量 |
| elevation | 高度 |
| length | 长度 |
| location | 位置 |
| contents | 文本内容(多行文本时有样式内容) |
| height | 文本高 |
| width | 文本宽 |
| textHeight | 文字高度 |
| text | 文本内容 |
| actualHeight | 多行文本实际高 |
| actualWidth | 多行文本实际宽 |
| bulge | 凸度 |
| origin | 基点 |
| u | uv中的u |
| v | uv中的v |
| size | 大小 |
| isFit | 是否拟合 |
| fitTol | 拟合值 |
| degree | 度数 |
| horzMode | 水平对齐模式 |
| majorAxis | 轴 |
| data3d | 3d实体等材质属性数据 |
实体类型各字段含义
s1 线型(字符型); s2 扩展字典数据(字符型);
n1 颜色索引; n2 线型比例; n3 线宽; n4 透明度;
| 类名称 | 类说明 | 类型值 | s3(字符型) | s4(字符型) | s5(字符型) | n5 | n6 | n7 | n8 | n9 | n10 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AcDbLine | 直线 | 1 | points | thickness | length | ||||||
| AcDbPolyline | 多段线 | 2 | points | bulge | data3d | area | isclosed | linetypeScale | thickness | elevation | |
| AcDb2dPolyline | 二维折线 | 3 | points | area | isclosed | polyType | thickness | elevation | |||
| AcDb3dPolyline | 三维多段线 | 4 | points | area | isclosed | polyType | |||||
| AcDbSpline | 样条曲线 | 5 | points | area | isclosed | isFit | fitTol | degree | |||
| AcDbArc | 圆弧 | 6 | center | area | isclosed | radius | startAngle | endAngle | thickness | ||
| AcDbCircle | 圆 | 7 | center | area | isclosed | radius | thickness | ||||
| AcDbEllipse | 椭圆 | 8 | center | majorAxis | area | isclosed | radius | startAngle | endAngle | ||
| AcDbCurve | 曲线 | 9 | area | isclosed | |||||||
| AcDbBlockReference | 块参照 | 10 | positon | attributeDef | blockname | rotate | scaleX | scaleY | scaleZ | ||
| AcDbHatch | 填充 | 11 | points | patternName | elevation | patternAngle | patternScale | ||||
| AcDbMText | 多行文本 | 12 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbText | 单行文本 | 13 | location | text | height | rotate | horzMode | ||||
| AcDbShape | 型实体 | 14 | positon | normal | rotate | size | |||||
| AcDbRasterImage | 栅格图片 | 15 | origin | ||||||||
| AcDbWipeout | 遮罩实体 | 16 | |||||||||
| AcDb2LineAngularDimension | 角度标注[两条线] | 17 | |||||||||
| AcDb3PointAngularDimension | 角度标注[三点] | 18 | |||||||||
| AcDbAlignedDimension | 对齐标注 | 19 | |||||||||
| AcDbArcDimension | 圆弧标注 | 20 | |||||||||
| AcDbDiametricDimension | 直径标注 | 21 | |||||||||
| AcDbOrdinateDimension | 坐标标注 | 22 | |||||||||
| AcDbRadialDimension | 半径标注 | 23 | |||||||||
| AcDbRadialDimensionLarge | 半径折线标注 | 24 | |||||||||
| AcDbRotatedDimension | 转角标注 | 25 | |||||||||
| AcDbAttributeDefinition | 属性注记 | 26 | location | text | contents | height | rotate | horzMode | |||
| AcDbAttribute | 块属性 | 27 | location | text | contents | height | rotate | horzMode | |||
| AcDbTable | 表格 | 28 | positon | attributeDef | contents | rotate | scaleX | scaleY | scaleZ | ||
| AcDbMLeader | 引线标注 | 29 | location | contents | text | height | width | rotate | textHeight | actualHeight | actualWidth |
| AcDbRegion | 面域 | 30 | points | indices | data3d | area | perimeter | ||||
| AcDbPolyFaceMesh | 多面网格实体 | 31 | points | indices | data3d | ||||||
| AcDbPolygonMesh | 多边形网格 | 32 | points | indices | data3d | ||||||
| AcDbSurface | 曲面 | 33 | points | indices | data3d | ||||||
| AcDb3dSolid | 三维实体 | 34 | points | indices | data3d | ||||||
| AcDbFace | 三维面 | 35 | points | indices | data3d | ||||||
| AcDbSolid | 实体实体 | 36 | points | thickness | length | isclosed |
内置样式函数
// gRed(inColor) 取颜色红色分量
function_t(
"gRed",
"var color := inColor % 256 ; "
"color ",
"inColor");
// gGreen(inColor) 取颜色绿色分量
function_t(
"gGreen",
"var color := inColor% (256 * 256) / 256; "
"color ",
"inColor");
// gBlue(inColor) 取颜色蓝色分量
function_t(
"gBlue",
"var color := inColor % (256 * 256 * 256) / 256 / 256 ; "
"color ",
"inColor");
// gFilterGrey(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) 灰度滤镜(取三种颜色的最小)
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) 灰度滤镜(取三种颜色的最大)
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) 灰度滤镜(加权平均值)
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) 黑白滤镜
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) 反向滤镜
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) 去色滤镜 rgb三种颜色取三种颜色的最值的平均值。
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) 单色滤镜 只保留红色
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) 单色滤镜 只保绿色
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) 单色滤镜 只保留蓝色
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) 滤镜去掉红色
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) 滤镜去掉绿色
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) 滤镜去掉蓝色
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) 怀旧滤镜
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) 熔铸滤镜
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) 冰冻滤镜
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) 连环画滤镜
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) 褐色滤镜
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) 蓝色主题滤镜
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) 红色主题滤镜
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) 绿色主题滤镜
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) 自定义主题滤镜
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");
这篇文档有帮助吗?感谢反馈!