# 服务端条件查询和表达式查询

# 条件查询

针对后台数据库表结构,使用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'
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

# 查询返回字段

字段名称 说明
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

# 内置样式函数

// 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");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252