ZWCloud2DJson转换实体接口实体Json配置参数说明

基本说明: 提供接口实现输入 json 生成 dwg 图纸,以及解析 dwg 图纸生成对应的 json 文件; 已支持的实体如下:

实体类型 名称
ZcDbPoint
ZcDbLine 线 ZcDbcurve
ZcDbCircle
ZcDbArc 弧线
ZcDbEllipse 椭圆/椭圆弧
ZcDbdPolyline 二维多段线
ZcDb3dPolyline 三维多段线
ZcDbAlignedDimension 对齐标注 ZcDbDimension
ZcDbRotatedDimension 转角标注
ZcDbRadialDimension 半径标注
ZcDbDiametricDimension 直径标注
ZcDb2LineAngularDimension 角度标注
ZcDb3PointAngularDimension 角度标注
ZcDbOrdinateDimension 坐标标注
ZcDbCircularHole 圆孔标注 通过块实现,只支持由 json 生成 dwg
ZcDbText 文字
ZcDbMtext 多行文字
ZcDbCustomTable 表格
ZcDbBlockReference 块参照
ZcDbSpline 样条曲线
ZcDbHatch 填充
ZcDbLeader 引线

# 一、基础实体 json 转换

# 1.1 实体通用属性

实体基本属性对应 zwcad 属性面板中的基本特性

参数名 类型 是否必填 默认值 说明
color int 或 list 0 颜色,支持输入颜色索引和 RGB 值;
layer string 默认图层"0" 图层
lineType string "ByLayer" 线型
lineTypeScale double 1.0 线型比例
lineweight int 随层 线宽
transparency int -1 透明度(0-90 内的整数) ,-1 表示随层,-2 表示随块
thickness double 0 厚度
normal list [0,0,1] 法向
plotType 打印样式 不支持自定义生成,仅 dwg 导出 json 使用

# 补充说明

  • color 颜色,选填项,支持输入颜色索引和 RGB 值;

"ByLayer" 随层对应索引值为: 256, "ByBlock" 随块索引值为:0

  • layer 图层名 ,选填项,默认图层"0";
  • lineType 线型,string 类型,暂不支持自定义线型
类型
随层 "ByLayer"
随块 "ByBlock"
连续 "Continuous"
  • plotType 打印样式,仅导出使用,不支持修改
  • lineweight 线宽,选填项;

线宽枚举值对应线宽如下:

枚举值 对应线宽 枚举值 对应线宽 枚举值 对应线宽
0 0.00mm 35 0.35mm 106 1.06mm
5 0.05mm 40 0.40mm 120 1.20mm
9 0.09mm 50 0.50mm 140 1.40mm
13 0.13mm 53 0.53mm 158 1.58mm
15 0.15mm 60 0.60mm 200 2.00mm
18 0.18mm 70 0.70mm 211 2.11mm
20 0.20mm 80 0.80mm -1 随层
25 0.25mm 90 0.90mm -2 随块
30 0.30mm 100 1.00mm -3 默认

输入 Json 模板(支持批量输入)

{
	"entityList" :
	[
		{
			"type" : "ZcDb...", //实体类型

			...,							//实体的特有参数

			"normal" : 			//法向,可选,默认[0,0,1]
			[
				0.0,
				0.0,
				1.0
			],
			"color" : 256,  					//可选
			"layer" : "基本实体",  		//可选,默认图层“0”
			"lineType" : "ByLayer", 	//可选
			"lineTypeScale" : 1.0,  	//可选
			"lineweight" : -1, 				//可选
			"transparency" : 0,			//可选
			"thickness" : 0.0					//可选
		}
	],
	[
		...				//实体2
	],
	[
		.... 			//实体3
	]
}

# 1.2 XData 扩展信息

xdata 是 CAD 图元的拓展信息,在 ZWCAD 输入 XDATA、选择实体、输入名称即可为实体创建同名的 XDATA 数据

输入 XDLIST、选择实体、输入名称即可查看实体的同名 XDATA 数据

输入参数示例:

{
	"entityList" :
	[
		{
			"type" : "ZcDb...", //实体类型

			...,							//实体的一般参数
			"xDataList": [
                {
                    "xDataName": "1",
                    "xDataValue": {
                        "xDataDirection": [
                            [
                                0.0,
                                0.0,
                                1.0
                            ]
                        ],
                        "xDataDistance": [
                            11.109999999999999
                        ],
                        "xDataInteger": [
                            123
                        ],
                        "xDataLayerName": [
                            "0"
                        ],
                        "xDataLocation": [
                            [
                                0.0,
                                0.0,
                                0.0
                            ]
                        ],
                        "xDataLongInteger": [
                            111
                        ],
                        "xDataRealNum": [
                            11.119999999999999
                        ],
                        "xDataScale": [
                            2.0
                        ],
                        "xDataString": [
                            "字符串"
                        ],
                        "xDataThreeRealNum": [
                            [
                                1.1000000000000001,
                                2.2000000000000002,
                                3.2999999999999998
                            ]
                        ],
                        "xDataTranslocation": [
                            [
                                384.82081324937923,
                                543.89205008544661,
                                0.0
                            ]
                        ]
                    }
                }
            ]
		}
	]
}
参数名 类型 说明
xDataDirection 包含三个 double 数据的数组的数组 方向属性
xDataDistance double 数组 距离属性
xDataInteger int 数组(-32768 和 32767 之间) 整数属性
xDataLayerName string 数组(图层名) 图层属性
xDataLocation 包含三个 double 数据的数组的数组 位置属性
xDataLongInteger long 数组(-32768 和 32767 之间) 长整数属性
xDataHandle int 数组 数据库句柄属性
xDataRealNum double 数组 实数属性
xDataScale double 数组 比例属性
xDataString string 数组 字符串属性
xDataThreeRealNum 包含三个 double 数据的数组的数组 三个实数属性
xDataTranslocation 包含三个 double 数据的数组的数组 位移属性

注:所有的 xData 属性都为数组,可以不为一个如:

{
	"entityList" :
	[
		{
			"type" : "ZcDb...", //实体类型

			...,							//实体的一般参数
			"xDataList": [
                {
                    "xDataName": "1", //XDATA拓展信息名
                    "xDataValue": { //XDATA拓展信息数据
                        "xDataString": [
                            "字符串1",
														"字符串2"
                        ]
                    }
                }
            ]
		}
	]
}

# 1.3 已支持实体

# 1.3.1 点的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbPoint。

输入参数示例

{
	"entityList" :
	[
		{
			"type" : "ZcDbPoint",
			"point" :
			[
				94.0,
				100.0,
				0.0
			],
			"normal" :
			[
				0.0,
				0.0,
				1.0
			],
			"color" : 256,
			"layer" : "基本实体",
			"lineType" : "ByLayer",
			"lineTypeScale" : 1.0,
			"lineweight" : -1,
			"transparency" : 0"thickness" : 0.0
		}
	]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 点坐标

# 1.3.2 线的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbLine。

输入参数示例

{
  "entityList": [
    {
      "type": "ZcDbLine",
      "startPoint": [90.0, 90.0, 0.0],
      "endPoint": [110.0, 90.0, 0.0],
      // 支持输入RGB值
      "color": [42, 178, 212],
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
startPoint list 起点坐标
endPoint list 终点坐标

# 1.3.3 圆的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbCircle。

输入参数示例

{
  "entityList": [
    {
      "type": "ZcDbCircle",
      "center": [105.0, 100.0, 0.0],
      "radius": 5.0,
      "color": 256,
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "normal": [0.0, 0.0, 1.0],
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
center list 圆心坐标
radius double 半径

# 1.3.4 弧的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbArc。

输入参数示例

{
  "entityList": [
    {
      "type": "ZcDbArc",
      "center": [125.0, 100.0, 0.0],
      "radius": 5.0,
      "startAngle": 220.0,
      "endAngle": 110.0,
      "color": 256,
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "normal": [0.0, 0.0, 1.0],
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
center list 圆心坐标
radius double 半径
startAngle double 起点角度
endAngle double 终点角度

# 1.3.5 椭圆的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbEllipse。

输入参数示例

{
  "entityList": [
    {
      "type": "ZcDbEllipse",
      "point": [100.0, 70.0, 0.0],
      "majorAxis": [-6.0, 0.0, 0.0],
      "minorAxis": [0.0, -3.0, 0.0],
      "majorRadius": 6.0,
      "minorRadius": 3.0,
      "color": 256,
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 2.0,
      "lineweight": 53,
      "normal": [0.0, 0.0, 1.0],
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 圆心坐标
majorAxis list 长轴向量
minorAxis list 短轴向量
majorRadius double 长轴半径
minorRadius double 短轴半径
startAngle double 0 起点角度
endAngle double 360 终点角度

# 1.3.6 椭圆弧的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbEllipse。

输入参数示例

{
  "entityList": [
    {
      "type": "ZcDbEllipse",
      "point": [100.0, 70.0, 0.0],
      "majorAxis": [-6.0, 0.0, 0.0],
      "minorAxis": [0.0, -3.0, 0.0],
      "majorRadius": 6.0,
      "minorRadius": 3.0,
      "startAngle": 120.0,
      "endAngle": 270.0,
      "color": 256,
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 2.0,
      "lineweight": 53,
      "normal": [0.0, 0.0, 1.0],
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 圆心坐标
majorAxis list 长轴向量
minorAxis list 短轴向量
majorRadius double 长轴半径
minorRadius double 短轴半径
startAngle double 0 起点角度
endAngle double 360 终点角度

说明:椭圆弧是在椭圆的基础上设置起点角度和终点角度得到了,椭圆采用默认起点、终点角度。

# 1.3.7 多段线的转换

功能要求根据输入的 Json 数据,将其转换成 ZcDbPolyline 以及 ZcDb3dPolyline。

输入参数示例 1

{
  "entityList": [
    {
      "type": "ZcDbPolyline",
      "points": [
        [136.0, 87.0],
        [156.0, 87.0],
        [156.0, 74.0],
        [136.0, 74.0],
        [136.0, 87.0]
      ],
      "isClosed": false,
      "color": 2,
      "layer": "基本实体",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "thickness": 0.0,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 多段线点的集合,点的数量不少于 2 个
isClosed bool false 当其为 true 时,自动闭合多段线

输入参数示例 2

{
  "entityList": [
    {
      "type": "ZcDb3dPolyline",
      "points": [
        [120.0, 60.0, 100.0],
        [146.0, 60.0, 20.0],
        [142.0, 50.0, 30.0],
        [117.0, 52.0, 50.0]
      ],
      "isClosed": true,
      "color": 4,
      "layer": "0",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "transparency": 0
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 多段线点的集合,点的数量不少于 2 个
isClosed bool false 当其为 true 时,自动闭合多段线

# 1.3.8 标注通用属性

标注是实体的一种,实体的基本属性适用于标注(thickness ,厚度除外) 输入参数示例

{
  "entityList": [
    {
      "type": "ZcDb...Dimension", //对应类型的标注
      "bFlipArrow1": false, //可选
      "bFlipArrow2": false, //可选
      "elevation": 0.0, //可选
      "dimstyleName": "ISO-25", //可选
      "lineSpacingFactor": 1.0, //可选
      "lineSpacingStyle": 1, //可选
      "strDimText": "", //可选
      //可选
      "textLocation": [94.059799394477878, 38.997367244625046],
      "textRotation": 0.0, //可选
      "color": 256, //可选
      "layer": "0", //可选
      "lineType": "ByLayer", //可选
      "lineTypeScale": 1.0, //可选
      "lineweight": -1, //可选
      //可选
      "normal": [0.0, 0.0, 1.0],
      "transparency": 0 //可选
    }
  ]
}

输出示例:

名称 类型 是否必填 默认值 说明
type string 标注类型名,ZcDbDimension 表示标注
bFlipArrow1 bool false 箭头是否反转
bFlipArrow2 bool false 箭头是否反转
elevation double 0 标注高程值,即从 wcs 原点到标注所在平面的距离
dimstyleName string "ISO-25" 标注样式名
lineSpacingFactor double 1.0 行间距因子(介于 0.25-4.00 之间)
lineSpacingStyle double 1 标注的行间距样式(1 或者 2)
strDimText string 用户提供的标注注释文本字符串
textLocation list 文本位置
textRotation double 1 标注文字与其默认方向所成的旋转角度(尺寸线方向)

# 1.3.9 对齐标注

功能要求根据输入的 Json 数据,将其转换成 ZcDbAlignedDimension。 输入参数示例::

{
  "entityList": [
    {
      "type": "ZcDbAlignedDimension",
      "dOblique": 0.0, //可选
      "defPoint1": [80.536984444512001, 30.205553822738061, 0.0],
      "defPoint2": [107.58261434444375, 30.205553822738054, 0.0],
      "definitionPosition": [107.58261434444375, 36.912870037921138, 0.0]
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string ZcDbAlignedDimension 表示对齐标注
defPoint1 list 定义点 1
defPoint2 list 定义点 2
definitionPosition list 尺寸线位置坐标
dOblique double 0 尺寸的延伸线倾斜角度

说明:

# 1.3.10 转角标注

功能要求根据输入的 Json 数据,将其转换成 ZcDbRotatedDimesion,转角标注又称为线性标注。 输入参数示例:

{
  "entityList": [
    {
      "type": "ZcDbLine",
      "startPoint": [52.0, 84.0, 0.0],
      "endPoint": [100.0, 84.0, 0.0]
    },
    {
      "type": "ZcDbRotatedDimension",
      "dOblique": 0.0, //可选
      "defPoint1": [52.0, 84.0, 0.0],
      "defPoint2": [100.0, 84.0, 0.0],
      "definitionPosition": [107.24239282688634, 71.455807655460461, 0.0],
      "rotAngle": 30.0 //可选
    }
  ]
}

输出示例:

参数描述:

参数名 类型 是否必填 默认值 说明
type string ZcDbRotatedDimension 表示对齐标注
defPoint1 list 定义点 1
defPoint2 list 定义点 2
definitionPosition list 尺寸线位置坐标
rotAngle double 0 旋转角度
dOblique double 0 尺寸的延伸线倾斜角度

补充:

# 1.3.11 半径/直径标注

功能要求根据输入的 Json 数据,将其转换成 ZcDbRadialDimension。

注:ZcDbRadialDimension(表示半径类型),ZcDbDiametricDimension(表示直径类型)

# 半径标注 ZcDbRadialDimension

输入参数示例 1:

{
  "entityList": [
    {
      "type": "ZcDbCircle",
      "center": [100.0, 100.0, 0.0],
      "radius": 5.0
    },
    {
      "type": "ZcDbRadialDimension",
      "chordPoint": [104.5363922393187, 102.10265200426726, 0.0],
      "definitionPosition": [100.0, 100.0, 0.0],
      "leaderLength": 0.0 //可选
    }
  ]
}

输出示例:

# 直径标注 ZcDbDiametricDimension
{
  "entityList": [
    {
      "type": "ZcDbCircle",
      "center": [100.0, 100.0, 0.0],
      "radius": 5.0
    },
    {
      "type": "ZcDbDiametricDimension",
      "chordPoint": [104.26181005309965, 97.385239003025575, 0.0],
      "definitionPosition": [95.738189946900349, 102.61476099697443, 0.0],
      "leaderLength": 0.0 //可选
    }
  ]
}

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbRadialDimension 表示‘半径标注’类型
definitionPosition list 半径时是圆弧的中点,直径时是与 chrodPoint 相对的点
chrodPoint list 圆/弧上尺寸线的第一点
leaderLength double 0 引线长度

输出示例:

补充说明:

# 1.3.12 角度标注

功能要求根据输入的 Json 数据,将其转换成 ZcDb2LineAngularDimension 和 ZcDb3PointAngularDimension。

ZcDb2LineAngularDimension 和 ZcDb3PointAngularDimension 均表示角度标注。

# 角度标注 1:ZcDb2LineAngularDimension

输入参数示例:

{
  "entityList": [
    {
      "type": "ZcDb2LineAngularDimension",
      "arcDefPoint": [151.38315389252051, 77.43123026973015],
      "defPoint1": [156.0, 74.0, 0.0],
      "defPoint2": [136.0, 74.0, 0.0],
      "defPoint3": [156.0, 87.0, 0.0],
      "definitionPosition": [156.0, 74.0, 0.0]
    }
  ]
}

输出示例:

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDb2LineAngularDimension 表示‘角度标注’类型
definitionPosition list 直线 1 的端点 1
defPoint1 list 直线 1 的端点 2
defPoint2 list 直线 2 的端点 1
defPoint3 list 直线 2 的端点 2
arcDefPoint list 标注定义点

补充说明:

# 角度标注 2:ZcDb3PointAngularDimension(三点角度标注)

输入参数示例 2:

{
  "entityList": [
    {
      "type": "ZcDb3PointAngularDimension",
      "defPoint1": [121.17880325104721, 96.775336388738708, 0.0],
      "defPoint2": [123.28989928337165, 104.69846310392954, 0.0],
      "defPoint3": [125.0, 100.0, 0.0],
      "definitionPosition": [119.95796944832804, 105.14973720864226, 0.0]
    }
  ]
}

输出示例:

补充说明:

# 1.3.13 坐标标注

功能要求根据输入的 Json 数据,将其转换成 ZcDbOrdinateDimension。

输入参数示例:

{
  "entityList": [
    {
      "type": "ZcDbOrdinateDimension",
      "defPoint1": [136.0, 87.0, 0.0],
      "defPoint2": [136.0, 87.343552468730621, 0.0],
      "definitionPosition": [0.0, 0.0, 0.0],
      "isXord": 1
    }
  ]
}

输出示例:

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbOrdinateDimension 表示‘坐标标注’类型
defPoint1 list 指定的特征位置
defPoint2 list 引线端点
definitionPosition list 0, 0, 0 UCS 的原点处
isXord uint8 0 0 为 Y 坐标,1 为 X 坐标

补充说明:

# 1.3.14 圆孔标注

功能要求根据输入的 Json 数据,将其转换成名称为“hole”的块实体。 输入参数示例:

{
  "entityList": [
    {
      "type": "ZcDbCircularHole",
      "holeCenter": [127.3238, 495.6117, 0.0],
      "holeRadius": 10.0
    }
  ]
}

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbCircularHole 表示‘圆孔’类型
holeCenter list 圆心坐标 xyz
holeRadius double 半径

输出示例:

# 1.3.15 文字 ZcDbText、ZcDbMText

功能要求根据输入的 Json 数据,将其转换成文字实体(text)/多行文字实体(Mtext)。

# ZcDbText

输入参数示例:

{
  "entityList": [
    {
      "color": 10,
      "dOblique": 30.0,
      "height": 20.0,
      "horizontalMode": 0,
      "layer": "图层1",
      "ocsPoint1": [375.0, 440.0, 0.0],
      "ocsPoint2": [0.0, 0.0, 0.0],
      "rotation": 0.0,
      "strText": "文字测试",
      "textStyleName": "Standard",
      "type": "ZcDbText",
      "verticalMode": 0,
      "widthFactor": 1.0
    }
  ]
}

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbText 表示文字实体类型
strText string 文字内容
height double 2.5 文字高度
ocsPoint1 list 文字插入点
ocsPoint2 list 与对齐方式有关 当对齐方式为左对齐时即 horizontalMode=0 时,为非必填项,默认值为(0,0,0);其它对齐方式时为必填项
dOblique int 0 文字倾斜度
rotation int 0 旋转角度
horizontalMode int 0 水平对齐方式
verticalMode int 0 垂直对齐方式
widthFactor double 1.0 宽度比例
textStyleName string Standard 文字样式
generationFlags int 0 内部使用,非必填项

补充说明:

水平对齐方式枚举如下:

枚举值 水平对齐方式 枚举值 水平对齐方式
0 左对齐 3 对齐
1 中心对齐 4 中间
2 右对齐 5 布满

垂直对齐方式枚举如下:

枚举值 垂直对齐方式
0 左下
1 底部对齐
2 中间对齐
3 顶部对齐

“ocspoint2”为文字的插入点 2,可理解为对齐点,与文字的对齐方式相关。作用是为了确定文字的位置;例如当文字的对齐方式为左对齐时,一个点即可确认文字的位置;当文字的对齐方式为右上时,对应有两个点。如下图所示:

输出示例:

# ZcDbMText
{
  "entityList": [
    {
      "attachPt": 1,
      "color": 256,
      "columnsAutoHeight": false,
      "columnsFlowReversed": false,
      "columnsGutter": 100.0,
      "columnsHeight": [-59.143389199255125],
      "columnsNums": 1,
      "columnsType": 2,
      "columnsWidth": 149.70921995229071,
      "direction": [1.0, 0.0, 0.0],
      "drawDir": 5,
      "height": 20.0,
      "layer": "0",
      "lineSpacingFactor": 1.0,
      "lineType": "ByLayer",
      "location": [630.34006513021882, 475.18123444592061, 0.0],
      "refRectSize": [149.70921995229071, 84.16085878399042],
      "textContent": "Mtext\\P测试",
      "textStyleName": "Standard",
      "type": "ZcDbMText",
      "vNormal": [0.0, 0.0, 1.0]
    }
  ]
}

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbText 表示文字实体类型
location list 文字位置
textContent list 文字内容
attachPt int 0 附着点类型,默认左上
height double 2.5 文字高度
columnsAutoHeight bool false 自动分栏
columnsFlowReversed bool false 翻转
columnsWidth double 自动计算 栏宽
columnsGutter double 自动计算 栏间距
columnsNums int 自动计算 栏数
columnsType int 2 分栏类型,默认动态分栏
drawDir int 1 绘制方式
direction list (1,0,0) 文字方向
lineSpacingFactor double 1.0 行间距因子(介于 0.25-4.00 之间)
lineSpacingStyle double 1 标注的行间距样式(1 或者 2)
textStyleName string Standard 文字样式
rotation int 0 旋转角度
refRectSize list 自动计算 默认文字框尺寸
vNormal list (0,0,1) 文字法向

refRectSize 为文字框尺寸,为一个二维数组。第一项为定义宽度,其和分栏宽度”columnsWidth“作用相同;第二项为定义高度。

drawDir 为绘制方向,枚举值对应的值为:

枚举值 绘制方向类型
1 自左向右
2 自右向左
3 自上向下
4 自下向上
5 自定义

attachPt 为附着点 左上,中上,右上,中左,正中,中右,左下,中下,中右....

枚举值 附着点类型 枚举值 附着点类型 枚举值 附着点类型
1 左上 9 右下 17 底部自适应
2 中上 10 左下 18 底部自适应
3 右上 11 中下 19 中间自适应
4 中左 12 右下 20 顶部自适应
5 正中 13 底部对齐 21 中下
6 中右 14 底部对齐 22 中下
7 左下 15 中间对齐 23 中心
8 中下 16 顶部对齐 24 中上

columnType 分栏类型:不分栏、静态分栏、动态分栏

枚举值 分栏类型
0 不分栏
1 静态分栏
2 自动分栏

输出示例:

# 1.3.16 表格ZcDbCustomTable

功能要求根据输入的 Json 数据,将其转换成 ZcDbTable 实体 输入参数示例:

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "insertPosition": [100.0, 100.0, 0.0],
      "tableSize": [5, 3],
      "defaultHeight": 10.0,
      "defaultWidth": 20.0,
      "defaultTextH": 5.0,
      "rawsHeight": [
        [2, 20],
        [5, 30]
      ],
      "colsWidth": [
        [2, 30],
        [1, 44.5]
      ],
      "textContent": [
        [3, 3, "Text1\n文字", [255, 0, 0]],
        [4, 2, "Text2\n默认颜色"]
      ]
    }
  ]
}

参数描述

参数名 参数类型 参数效果 是否必要 备注
type string 插入表格时以此字段标志其为表格 必须为"ZcDbCustomTable"
insertPosition 长度为 3 的 double 数组 设定表格插入点 否(不指定时默认在原点插入) 插入点为表格左上角的点
tableSize 长度为 2 的 int 数组 指定表格大小(行数、列数)
defaultHeight double 指定默认行高,除后续指定高度的行之外,其他行的高度都将设定为该高度 否(不指定时默认为 10)
defaultWidth double 指定默认列宽,除后续指定宽度的列之外,其他列的宽度都将设定为该宽度 否(不指定时默认为 20)
defaultTextH double 指定表格中的文字高度 否(不指定时默认为 5)
rawsHeight 数组 指定某一行的高度,为一组数组,数组的第一个数据标识要设置行高的行为第几行,第二个数据标识其要设置的高度 例子中的写法将第 2 行高度设置为 20、第 5 行高度设置为 30
colsWidth 数组 指定某一列的宽度,为一组数组,数组的第一个数据标识要设置宽度的列为第几列,第二个数据标识其要设置的宽度
textContent 数组 标识单元格中的文字内容,为一组数组,数组的第一个数据代表单元格在第几行,第二个数据代表单元格在第几列,第三个数据代表要输入的内容,第四个数据代表内容的颜色 \n 代表换行数组的第四的数据可不输入,此时将采用默认颜色

输出示例:

指定标题: 可通过增加"title"字段设置表格标题栏,自动将表格第一行合并,其中参数的第一个数据为标题名,第二个数据为标题颜色(可不输入采用默认颜色)

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "title": ["title", [255, 255, 255]],
      "insertPosition": [100.0, 100.0, 0.0],
      "tableSize": [5, 3],
      "defaultHeight": 10.0,
      "defaultWidth": 20.0,
      "defaultTextH": 5.0,
      "rawsHeight": [
        [2, 20],
        [5, 30]
      ],
      "colsWidth": [
        [2, 30],
        [1, 44.5]
      ],
      "textContent": [
        [3, 3, "Text1\n文字", [255, 0, 0]],
        [4, 2, "Text2\n默认颜色"]
      ]
    }
  ]
}

输出示例:

生成示例图纸中的表格的 Json 示例:

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [9, 8],
      "defaultHeight": 330.0,
      "defaultWidth": 1200.0,
      "defaultTextH": 150.0,
      "colsWidth": [
        [1, 535],
        [2, 1800],
        [3, 800],
        [8, 2170]
      ],
      "textContent": [
        [1, 1, "序号"],
        [1, 2, "名称"],
        [1, 3, "单位"],
        [1, 4, "新增数量(NR)", [255, 0, 0]],
        [1, 5, "拆除数量(LTE)", [255, 255, 0]],
        [1, 6, "利旧数量", [255, 255, 0]],
        [1, 7, "规格型号"],
        [1, 8, "备注"],
        [2, 1, "1"],
        [2, 2, "野战光缆"],
        [2, 3, "米×条"],
        [2, 4, "cell2:10×1\ncell3:10×1", [255, 0, 0]],
        [2, 6, "cell1:65×1", [255, 255, 0]],
        [2, 7, "2芯野战光缆"],
        [2, 8, "厂家提供(射频RRU至ODF/BBU)\n2小区和3小区级联"],
        [3, 1, "2"],
        [3, 2, "室外电源线"],
        [3, 3, "米×条"],
        [3, 6, "cell1:40×1\ncell2:40×1\ncell3:40×1", [255, 255, 0]],
        [3, 7, "2*6mm²室外铠装电源线"],
        [3, 8, "厂家提供(射频RRU至电源设备)"],
        [4, 1, "3"],
        [4, 2, "RRU接地线"],
        [4, 3, "米×条"],
        [4, 6, "cell1:3×1\ncell2:3×1\ncell3:3×1", [255, 255, 0]],
        [4, 7, "16平方毫米"],
        [4, 8, "厂家提供,颜色为黄绿相间"],
        [5, 1, "4"],
        [5, 2, "GPS馈线"],
        [5, 3, "米×条"],
        [5, 6, "20m×1", [255, 255, 0]],
        [5, 7, "1/2\"馈线"],
        [5, 8, "厂家提供"],
        [6, 1, "5"],
        [6, 2, "GPS避雷器接地线"],
        [6, 3, "米×条"],
        [6, 6, "2m×1", [255, 255, 0]],
        [6, 7, "16平方毫米"],
        [6, 8, "厂家提供,颜色为黄绿相间"],
        [7, 1, "6"],
        [7, 2, "面板天线射频跳线"],
        [7, 3, "米×条"],
        [7, 6, "10m×24", [255, 255, 0]],
        [7, 7, "1/2\"跳线"],
        [7, 8, "厂家提供,需制作设备侧接头"],
        [8, 1, "7"],
        [8, 2, "铠装电缆接地线"],
        [8, 3, "米×条"],
        [8, 4, "1m×3", [255, 0, 0]],
        [8, 7, "16平方毫米"],
        [8, 8, "厂家提供,颜色为黄绿或黑色"],
        [9, 1, "8"],
        [9, 2, "面板天线RCU电调线"],
        [9, 3, "米×条"],
        [9, 4, "10m×3", [255, 0, 0]],
        [9, 7, "AISG"],
        [9, 8, "厂家提供,新增"]
      ]
    }
  ]
}

效果图:

注:由于 json 格式问题,文字内容中的“号需要输入为",\号需要输入为\,即一些字符需要加上转义符;

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [10, 6],
      "defaultHeight": 250.0,
      "defaultWidth": 540,
      "defaultTextH": 120.0,
      "colsWidth": [
        [2, 1500],
        [5, 1800],
        [6, 3200]
      ],
      "textContent": [
        [1, 1, "序号"],
        [1, 2, "名称"],
        [1, 3, "单位"],
        [1, 4, "数量", [255, 0, 0]],
        [1, 5, "规格型号"],
        [1, 6, "备注"],
        [2, 1, "1"],
        [2, 2, "拆除基站面板天线"],
        [2, 3, "副"],
        [2, 4, "3", [255, 0, 0]],
        [2, 5, "65°17dBi电调", [255, 0, 0]],
        [2, 6, "800MHz单频天线(4端口)"],
        [3, 1, "2"],
        [3, 2, "拆除基站面板天线"],
        [3, 3, "副"],
        [3, 4, "0", [255, 0, 0]],
        [3, 5, "65°18dBi电调", [255, 0, 0]],
        [3, 6, "2GHz宽频双极化定向(4端口)", [255, 0, 0]],
        [4, 1, "3"],
        [4, 2, "新增基站面板天线"],
        [4, 3, "副"],
        [4, 4, "0", [255, 0, 0]],
        [4, 5, "65°17dBi/18dBi电调", [255, 0, 0]],
        [4, 6, "800MHz/2GHz宽频双极化定向(4+4端口)", [255, 0, 0]],
        [5, 1, "4"],
        [5, 2, "拆除RRU设备"],
        [5, 3, "套"],
        [5, 4, "1", [255, 0, 0]],
        [5, 5, "LTE(800M):2T4R 2*60W", [255, 0, 0]],
        [5, 6, "拆除,现网设备", [255, 0, 0]],
        [6, 1, "5"],
        [6, 2, "新增RRU设备"],
        [6, 3, "套"],
        [6, 4, "3", [255, 0, 0]],
        [6, 5, "NR(800M):4T4R 4*60W"],
        [6, 6, "新增,厂家提供"],
        [7, 1, "6"],
        [7, 2, "交转直模块"],
        [7, 3, "套"],
        [7, 4, "0", [255, 0, 0]],
        [7, 5, "OPM40M(1*40A/2000W)", [255, 0, 0]],
        [7, 6, "新增,厂家提供"],
        [8, 1, "7"],
        [8, 2, "光模块"],
        [8, 3, "个"],
        [8, 4, "6", [255, 0, 0]],
        [8, 5, "10GE-单纤双向-10Km", [255, 0, 0]],
        [8, 6, "新增,厂家提供"]
      ]
    }
  ]
}

效果图:

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [2, 3],
      "defaultHeight": 317.73,
      "defaultTextH": 120.0,
      "colsWidth": [
        [1, 3541.28],
        [2, 3768.72],
        [3, 1560.39]
      ],
      "title": ["站址:衡阳市蒸湘区黄白路81-1号市八中生活服务大楼4层食堂顶"],
      "textContent": [
        [2, 1, "经纬度: E :112.63189° N :26.85944°"],
        [2, 2, "站点名称:衡阳市八中食堂", [255, 0, 0]],
        [2, 3, "站点ID:143080", [255, 0, 0]]
      ]
    }
  ]
}

输出示例

补充说明:

  1. 目前标题栏默认为第一行,如需要可添加字段设置为最后一行
  2. 目前文字默认居中,如需要设置为其他对齐方式
{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [7, 4],
      "defaultHeight": 251,
      "defaultWidth": 555,
      "defaultTextH": 120.0,
      "colsWidth": [[1, 1052]],
      "textContent": [
        [1, 1, "扇区号"],
        [1, 2, "扇区1"],
        [1, 3, "扇区2"],
        [1, 4, "扇区3"],
        [2, 1, "机械下倾角"],
        [2, 2, "6°", [255, 0, 0]],
        [2, 3, "6°", [255, 0, 0]],
        [2, 4, "6°", [255, 0, 0]],
        [3, 1, "电子下倾角"],
        [3, 2, "0°", [255, 0, 0]],
        [3, 3, "0°", [255, 0, 0]],
        [3, 4, "0°", [255, 0, 0]],
        [4, 1, "下倾角合计"],
        [4, 2, "6°", [255, 0, 0]],
        [4, 3, "6°", [255, 0, 0]],
        [4, 4, "6°", [255, 0, 0]],
        [5, 1, "天线高度"],
        [5, 2, "47m", [255, 0, 0]],
        [5, 3, "47m", [255, 0, 0]],
        [5, 4, "47m", [255, 0, 0]],
        [6, 1, "小区方向角"],
        [6, 2, "30°", [255, 0, 0]],
        [6, 3, "120°", [255, 0, 0]],
        [6, 4, "120°", [255, 0, 0]],
        [7, 1, "备注"],
        [7, 2, "新增扇区", [255, 0, 0]],
        [7, 3, "方位角调整", [255, 0, 0]]
      ]
    }
  ]
}

效果图:

注:目前对某个单元格字体大小调整尚未实现,如需后续可添加字段

# 垂直、水平单元间距设置

默认垂直、水平单元间距为 0.5 倍的文字高度,如需自定义可以添加相应字段设置

参数名 参数效果 是否必要 备注
vertSpacing 设置垂直单元间距为几倍的文字高度 未设置时为 0.5 倍的文字高度
horzSpacing 设置水平单元间距为几倍的文字高度 未设置时为 0.5 倍的文字高度

输入示例

{
	"entityList" :
	[
		{
			"type" : "ZcDbCustomTable",
			"tableSize" : [10 , 6],
			"defaultHeight" : 250.0,
			"defaultWidth" : 540,
			"defaultTextH" : 120.0,
			"colsWidth" :
			[
				[2, 1500],
				[5, 1800],
				[6, 3200]
			],
			"textContent" :
			[
				[1, 1, "序号"], [1, 2, "名称"], [1, 3, "单位"], [1, 4, "数量",[255,0,0]],
				[1, 5, "规格型号"], [1, 6, "备注"],
				[2, 1, "1"], [2, 2, "拆除基站面板天线"], [2, 3, "副"], [2, 4, "3",[255,0,0]],
				[2, 5, "65°17dBi电调",[255,0,0]], [2, 6, "800MHz单频天线(4端口)"],
				[3, 1, "2"], [3, 2, "拆除基站面板天线"], [3, 3, "副"], [3, 4, "0",[255,0,0]],
				[3, 5, "65°18dBi电调",[255,0,0]], [3, 6, "2GHz宽频双极化定向(4端口)",[255,0,0]],
				[4, 1, "3"], [4, 2, "新增基站面板天线"], [4, 3, "副"], [4, 4, "0",[255,0,0]],
				[4, 5, "65°17dBi/18dBi电调",[255,0,0]], [4, 6, "800MHz/2GHz宽频双极化定向(4+4端口)",[255,0,0]],
				[5, 1, "4"], [5, 2, "拆除RRU设备"], [5, 3, "套"], [5, 4, "1",[255,0,0]],
				[5, 5, "LTE(800M):2T4R 2*60W",[255,0,0]], [5, 6, "拆除,现网设备",[255,0,0]],
				[6, 1, "5"], [6, 2, "新增RRU设备"], [6, 3, "套"], [6, 4, "3",[255,0,0]],
				[6, 5, "NR(800M):4T4R 4*60W"], [6, 6, "新增,厂家提供"],
				[7, 1, "6"], [7, 2, "交转直模块"], [7, 3, "套"], [7, 4, "0",[255,0,0]],
				[7, 5, "OPM40M(1*40A/2000W)",[255,0,0]], [7, 6, "新增,厂家提供"],
				[8, 1, "7"], [8, 2, "光模块"], [8, 3, "个"], [8, 4, "6",[255,0,0]],
				[8, 5, "10GE-单纤双向-10Km",[255,0,0]], [8, 6, "新增,厂家提供"]
			]
			"vertSpacing" : 2.0,
			"horzSpacing" : 1.0
		}
	]
}


# 对齐方式设置

默认对齐方式为正中,如需修改可以添加相应的字段设置

参数名 参数效果 是否必要 备注
alignDefault 设置默认对齐方式,输入一个 1-9 的整数 1 代表左上对齐 2 代表中上对齐 3 代表右上对齐 4 代表左中对齐 5 代表正中对齐 6 代表右中对齐 7 代表左下对齐 8 代表中下对齐 9 代表右下对齐
alignRaws 设置某些行的对齐方式,输入一组数组,每组数组的第一个参数为整数,代表设置对齐方式的行为第几行,第二个参数为整数,代表对齐方式 对齐方式规则同上
alignCols 设置某些列的对齐方式,输入一组数组,每组数组的第一个参数为整数,代表设置对齐方式的列为第几列,第二个参数为整数,代表对齐方式 对齐方式规则同上
alignCells 设置某些单元格的对齐方式,输入一组数组,每组数组的第一个参数为整数,代表单元格所在行,第二个参数为整数,代表单元格所在列,第三个参数为整数代表对齐方式 对齐方式规则同上

输出示例

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [10, 6],
      "defaultHeight": 250.0,
      "defaultWidth": 540,
      "defaultTextH": 120.0,
      "colsWidth": [
        [2, 1500],
        [5, 1800],
        [6, 3200]
      ],
      "textContent": [
        [1, 1, "序号"],
        [1, 2, "名称"],
        [1, 3, "单位"],
        [1, 4, "数量", [255, 0, 0]],
        [1, 5, "规格型号"],
        [1, 6, "备注"],
        [2, 1, "1"],
        [2, 2, "拆除基站面板天线"],
        [2, 3, "副"],
        [2, 4, "3", [255, 0, 0]],
        [2, 5, "65°17dBi电调", [255, 0, 0]],
        [2, 6, "800MHz单频天线(4端口)"],
        [3, 1, "2"],
        [3, 2, "拆除基站面板天线"],
        [3, 3, "副"],
        [3, 4, "0", [255, 0, 0]],
        [3, 5, "65°18dBi电调", [255, 0, 0]],
        [3, 6, "2GHz宽频双极化定向(4端口)", [255, 0, 0]],
        [4, 1, "3"],
        [4, 2, "新增基站面板天线"],
        [4, 3, "副"],
        [4, 4, "0", [255, 0, 0]],
        [4, 5, "65°17dBi/18dBi电调", [255, 0, 0]],
        [4, 6, "800MHz/2GHz宽频双极化定向(4+4端口)", [255, 0, 0]],
        [5, 1, "4"],
        [5, 2, "拆除RRU设备"],
        [5, 3, "套"],
        [5, 4, "1", [255, 0, 0]],
        [5, 5, "LTE(800M):2T4R 2*60W", [255, 0, 0]],
        [5, 6, "拆除,现网设备", [255, 0, 0]],
        [6, 1, "5"],
        [6, 2, "新增RRU设备"],
        [6, 3, "套"],
        [6, 4, "3", [255, 0, 0]],
        [6, 5, "NR(800M):4T4R 4*60W"],
        [6, 6, "新增,厂家提供"],
        [7, 1, "6"],
        [7, 2, "交转直模块"],
        [7, 3, "套"],
        [7, 4, "0", [255, 0, 0]],
        [7, 5, "OPM40M(1*40A/2000W)", [255, 0, 0]],
        [7, 6, "新增,厂家提供"],
        [8, 1, "7"],
        [8, 2, "光模块"],
        [8, 3, "个"],
        [8, 4, "6", [255, 0, 0]],
        [8, 5, "10GE-单纤双向-10Km", [255, 0, 0]],
        [8, 6, "新增,厂家提供"]
      ],
      "alignDefault": 1,
      "alignRaws": [
        [1, 2],
        [2, 3]
      ],
      "alignCols": [[2, 5]],
      "alignCells": [[8, 3, 9]]
    }
  ]
}

注:处理对齐方式的顺序为”设置行“、”设置列“、”设置单元格“,因此,若同时设置第二行为右上对齐,第二列为正中对齐则第二行第二列为正中对齐

# 合并单元格
参数名 参数效果 是否必要 备注
mergeCells 设置合并单元格,为一组数组,每个数组第一个参数为整数代表合并的单元格最上面的行,第二个参数为整数代表合并的单元格最左侧的列,第三个参数为整数代表合并的单元格最下面的行,第四个参数为整数代表合并的单元格最右侧的列 合并时仅保留左上角单元格的内容

示例:

{
  "entityList": [
    {
      "type": "ZcDbCustomTable",
      "tableSize": [10, 6],
      "defaultHeight": 250.0,
      "defaultWidth": 540,
      "defaultTextH": 120.0,
      "colsWidth": [
        [2, 1500],
        [5, 1800],
        [6, 3200]
      ],
      "textContent": [
        [1, 1, "序号"],
        [1, 2, "名称"],
        [1, 3, "单位"],
        [1, 4, "数量", [255, 0, 0]],
        [1, 5, "规格型号"],
        [1, 6, "备注"],
        [2, 1, "1"],
        [2, 2, "拆除基站面板天线"],
        [2, 3, "副"],
        [2, 4, "3", [255, 0, 0]],
        [2, 5, "65°17dBi电调", [255, 0, 0]],
        [2, 6, "800MHz单频天线(4端口)"],
        [3, 1, "2"],
        [3, 2, "拆除基站面板天线"],
        [3, 3, "副"],
        [3, 4, "0", [255, 0, 0]],
        [3, 5, "65°18dBi电调", [255, 0, 0]],
        [3, 6, "2GHz宽频双极化定向(4端口)", [255, 0, 0]],
        [4, 1, "3"],
        [4, 2, "新增基站面板天线"],
        [4, 3, "副"],
        [4, 4, "0", [255, 0, 0]],
        [4, 5, "65°17dBi/18dBi电调", [255, 0, 0]],
        [4, 6, "800MHz/2GHz宽频双极化定向(4+4端口)", [255, 0, 0]],
        [5, 1, "4"],
        [5, 2, "拆除RRU设备"],
        [5, 3, "套"],
        [5, 4, "1", [255, 0, 0]],
        [5, 5, "LTE(800M):2T4R 2*60W", [255, 0, 0]],
        [5, 6, "拆除,现网设备", [255, 0, 0]],
        [6, 1, "5"],
        [6, 2, "新增RRU设备"],
        [6, 3, "套"],
        [6, 4, "3", [255, 0, 0]],
        [6, 5, "NR(800M):4T4R 4*60W"],
        [6, 6, "新增,厂家提供"],
        [7, 1, "6"],
        [7, 2, "交转直模块"],
        [7, 3, "套"],
        [7, 4, "0", [255, 0, 0]],
        [7, 5, "OPM40M(1*40A/2000W)", [255, 0, 0]],
        [7, 6, "新增,厂家提供"],
        [8, 1, "7"],
        [8, 2, "光模块"],
        [8, 3, "个"],
        [8, 4, "6", [255, 0, 0]],
        [8, 5, "10GE-单纤双向-10Km", [255, 0, 0]],
        [8, 6, "新增,厂家提供"],
        [9, 1, "合并单元格"]
      ],
      "mergeCells": [[9, 1, 10, 5]]
    }
  ]
}

# 1.3.17 块参照 ZcDbBlockReference

**功能要求:**根据输入的 Json 数据,将其转换成块参照(ZcDbBlockReference)。(若参照未定义的块时需要通过 json 导入块定义-见 1.4) ZcDbBlockReference

{
  "entityList": [
    {
      "blockExtents": {
        "maxPoint": [599.21027831224114, 537.13985141902788, 0.0],
        "minPoint": [98.202705724750103, 225.73664840725394, 0.0]
      },
      "blockName": "块定义",
      "layer": "0",
      "ocsPosition": [0.0, 0.0, 0.0],
      "rotation": 0.0,
      "scaleFactors": [1.0, 1.0, 1.0],
      "type": "ZcDbBlockReference"
    }
  ]
}

参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbBlockReference 表示实体类型
ocsPosition list 块插入点
rotation double 0 旋转
scaleFactors list [1.0,1.0,1.0] XYZ 比例
blockExtents jsonValue / 块的包围盒信息,dwg 导出为 json 时其包含的字段
maxPoint list / 块的包围盒信息,3d 空间中块边界框的最大点
minPoint list / 块的包围盒信息,3d 空间中块边界框的最小点

输出示例:

# 1.3.18 样条曲线

**功能要求:**根据输入的 Json 数据,将其转换成 ZcDbSpline。 输入参数示例:

{
  "entityList": [
    {
      "color": 256,
      "controlPtTol": 0,
      "degree": 3,
      "endTangent": [0.0, 0.0, 0.0],
      "fitPoints": [
        [388.46899777940757, 423.71207182737368, 0.0],
        [525.75428082760891, 525.8389287290845, 0.0],
        [709.91746540446456, 329.11916338562514, 0.0],
        [846.36564306822561, 496.54024027367564, 0.0],
        [898.26617690352123, 256.29099493932318, 0.0],
        [647.97166695588578, 237.87467648163761, 0.0]
      ],
      "fitTol": 0.0,
      "isClosed": false,
      "isPeriodic": false,
      "isPlanar": true,
      "isRational": false,
      "layer": "0",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "nKnots": 12,
      "numControlPoints": 8,
      "numFitPoints": 6,
      "pKnots": [
        0.0, 0.0, 0.0, 0.0, 171.1056511113741, 440.5768826561806,
        656.55818317572971, 902.34948752987998, 1153.3206063771727,
        1153.3206063771727, 1153.3206063771727, 1153.3206063771727
      ],
      "splineShape": 2,
      "startTangent": [0.0, 0.0, 0.0],
      "transparency": -1,
      "type": "ZcDbSpline"
    },
    {
      "color": 256,
      "controlPoints": [
        [361.91601498496289, -18.413508018589937, 0.0],
        [518.56332017009163, 69.016158760379639, 0.0],
        [805.08476688910173, 228.93256831537462, 0.0],
        [653.22209464483035, -435.21023005043014, 0.0],
        [966.97416661478542, -165.05451470217207, 0.0],
        [1157.5009723569788, -1.0017160222326993, 0.0]
      ],
      "controlPtTol": 0,
      "degree": 3,
      "endTangent": [0.0, 0.0, 0.0],
      "fitPoints": [[0.0, 0.0, 0.0]],
      "fitTol": 0,
      "isClosed": false,
      "isPeriodic": false,
      "isPlanar": true,
      "isRational": false,
      "layer": "0",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "nKnots": 10,
      "numControlPoints": 6,
      "numFitPoints": 0,
      "pKnots": [
        0.0, 0.0, 0.0, 0.0, 370.7366520093106, 678.10934736433751,
        1153.3587796529891, 1153.3587796529891, 1153.3587796529891,
        1153.3587796529891
      ],
      "splineShape": 1,
      "startTangent": [0.0, 0.0, 0.0],
      "transparency": -1,
      "type": "ZcDbSpline",
      "weights": [-1.0, -1.0, -1.0, -1.0, -1.0, -1.0]
    }
  ]
}

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 点坐标
splineShape int 2 2 代表拟合样条曲线,1 代表插值样曲线,对应属性面板中的方式:拟合点--2,控制点--1
isPlanar bool true 平面
isPeriodic bool false 周期
startTangent list 起点切点矢量
endTangent list 终点切点矢量
area double 自动计算 面积
fitTol double 0 拟合公差
isClosedSpline bool false 闭合
numControlPoints int 控制点数
numFitPoints int 拟合点
weights list [-1,-1,-1,....] 控制点权值
controlPoints list 是,按需填写 控制点
fitPoints list 是,按需填写 拟合点
pkonts list 结点
nKonts int 自动计算 结点数
knotParam int 0 结点参数化
knotTol double 自动计算 结点公差

输出示例:

# 1.3.19 填充

**功能要求:**根据输入的 Json 数据,将其转换成 ZcDbHatch。 输入示例:

{
  "entityList": [
    {
      "angle": 0,
      "color": 256,
      "colorTint": 0.0,
      "elevation": 0.0,
      "entityHandle": "618",
      "gradName": "",
      "gradientPatternType": 0,
      "isAssociative": false,
      "isDoubleHatch": false,
      "isGradientFill": false,
      "isSingleColorGrad": true,
      "isSolidFill": false,
      "layer": "剖面线层",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "loopList": [
        {
          "loopFlags": 0,
          "segments": [
            {
              "center": [550.82496013272055, -30.240599205614423],
              "endAngle": 3.1052625161737542,
              "isClockWise": false,
              "radius": 120.76340491500443,
              "segType": "cirArc",
              "startAngle": 2.7269728403766043
            },
            {
              "center": [550.82496013194532, -30.240599205644038],
              "endAngle": 3.4380520095332621,
              "isClockWise": false,
              "radius": 120.76340491422864,
              "segType": "cirArc",
              "startAngle": 3.1052625161737661
            },
            {
              "endPoint": [592.56171976340147, 5.0387213325101925],
              "segType": "line",
              "startPoint": [435.32963767755143, 5.0387213325058013]
            },
            {
              "endPoint": [616.88147060614529, -1.6752786674876319],
              "segType": "line",
              "startPoint": [592.56171976340147, 5.0387213325101925]
            },
            {
              "endPoint": [622.23577681409324, -62.875278669276632],
              "segType": "line",
              "startPoint": [616.88147060614529, -1.6752786674876319]
            },
            {
              "endPoint": [616.23577681409324, -68.87527866927654],
              "segType": "line",
              "startPoint": [622.23577681409324, -62.875278669276632]
            },
            {
              "endPoint": [478.2357768140987, -68.875278669276511],
              "segType": "line",
              "startPoint": [616.23577681409324, -68.87527866927654]
            },
            {
              "endPoint": [474.23894902364236, -77.446503525982351],
              "segType": "line",
              "startPoint": [478.2357768140987, -68.875278669276511]
            },
            {
              "endPoint": [440.29389384528395, -78.889169092395193],
              "segType": "line",
              "startPoint": [474.23894902364236, -77.446503525982351]
            }
          ]
        },
        {
          "loopFlags": 0,
          "segments": [
            {
              "center": [550.82496013142588, -30.24059920621977],
              "endAngle": 2.6743853858690523,
              "isClockWise": false,
              "radius": 120.76340491357234,
              "segType": "cirArc",
              "startAngle": 2.5377161709372076
            },
            {
              "center": [550.82496012593799, -30.24059920862738],
              "endAngle": 2.7269728403767672,
              "isClockWise": false,
              "radius": 120.76340490758822,
              "segType": "cirArc",
              "startAngle": 2.6743853858663846
            },
            {
              "endPoint": [474.23894906562373, -77.446503524197993],
              "segType": "line",
              "startPoint": [440.29389384528287, -78.889169092391953]
            },
            {
              "endPoint": [464.53458341166106, -98.257582740031964],
              "segType": "line",
              "startPoint": [474.23894906562373, -77.446503524197993]
            },
            {
              "endPoint": [451.41969946595009, -98.814603889841109],
              "segType": "line",
              "startPoint": [464.53458341166106, -98.257582740031964]
            }
          ]
        }
      ],
      "normal": [0.0, 0.0, 1.0],
      "numsPaths": 2,
      "patternInfo": [
        {
          "basePoint": [0.0, 0.0],
          "lineAngle": 0.78539816339744828,
          "patternOffset": [-8.9802561210691518, 8.9802561210691536]
        }
      ],
      "patternName": "ANSI31",
      "patternType": 0,
      "plotType": 0,
      "ptOrigin": [0.0, 0.0],
      "scaleOrSpacing": 1.0,
      "seedPoints": [
        [475.37912041097434, -34.62698523602289],
        [458.71085349579653, -84.631785981556718]
      ],
      "shift": 0.0,
      "style": 0,
      "transparency": -1,
      "type": "ZcDbHatch"
    }
  ]
}

参数描述:

参数名 类型 是否必填 默认值 说明
type string 实体类型
point list 点坐标
angle double 0 角度
colorTint list (渐变填充单色模式用)颜色色彩(0-1 值越大颜色越深)
gradName string 是(渐变填充时) 渐变填充名
gradientPatternType 0 or 1 0 渐变填充类型(0:预定义 1:用户定义)
isAssociative bool false 是否为注释性
isDoubleHatch bool 是(图案填充、类型为用户定义时) false 是否为双向填充
isGradientFill bool 是否为渐变填充
isSingleColorGrad bool 是(渐变填充时) 是否为单色模式
isSolidFill bool 是否为纯色填充
loopList jsonvalue 填充边界信息
loopFlags 0 or 2 边界为多段线时为 2 否则为 0
segType string 构成填充边界的线段的类型("line"、"cirArc"、"elliparc"、"nurbCrve"、"polyline")
segments jsonvalue 构成填充边界的线段的信息
center list 构成填充边界的线段中圆弧段的中心点
startAngle double 构成填充边界的线段中圆弧段的起始角度
endAngle double 构成填充边界的线段中圆弧段的终止角度
isClockWise bool 是否为顺时针
radius double 构成填充边界的线段中圆弧段的半径
startPoint list 构成填充边界的线段中直线段的起始点
endPoint list 构成填充边界的线段中直线段的终止点
numsPaths int 边界个数
patternInfo jsonvalue 填充样式为图案填充时,组成填充图案的基本单元的信息
basePoint list 是(包含 patternInfo 时) 填充样式为图案填充时,组成填充图案的基本单元的基点
lineAngle double 是(包含 patternInfo 时) 填充样式为图案填充时,组成填充图案的基本单元的角度
patternOffset list 是(包含 patternInfo 时) 填充样式为图案填充时,组成填充图案的基本单元的偏移量
patternName string 是(图案填充时) 填充名
patternType int 是(图案填充时) 填充图案类型(0:用户定义、1:预定义、2:自定义)
ptOrigin list [0,0,0] 填充原点
scaleOrSpacing double 填充比例
seedPoints list 种子点
shift double 0 渐变填充时的角度
style int 0 孤岛显示样式(0:普通 1:外部 2:忽略)

输出示例:

# 1.3.20 引线 ZcDbLeader

**功能要求:**根据输入的 Json 数据,将其转换成 ZcDbLeader。

# 输入示例:
{
  "entityList": [
    {
      "annoHeight": 0.0,
      "annoId": 565,
      "annoType": 0,
      "annoWidth": 0.0,
      "arrowSize": 20.0,
      "color": 256,
      "dimColord": 0,
      "dimGap": 0.625,
      "dimLineWeight": -2,
      "dimScale": 1.0,
      "dimstyleName": "ISO-25",
      "dimtad": 1,
      "hasArrowhead": true,
      "hasHookLine": false,
      "hasSplinePath": false,
      "layer": "0",
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "normal": [0.0, 0.0, 1.0],
      "offsetToBlkInsPt": [0.0, 0.0, 0.0],
      "plotType": 0,
      "points": [
        [464.28554167905662, 299.82172934796944, 0.0],
        [549.42132420434859, 423.1594655705079, 0.0],
        [606.17851255454343, 423.1594655705079, 0.0]
      ],
      "ptOrigin": [464.28554167905662, 299.82172934796944, 0.0],
      "textOffset": [0.0, 0.0, 0.0],
      "transparency": -1,
      "type": "ZcDbLeader",
      "vXDir": [1.0, 0.0, 0.0]
    },
    {
      "attachPt": 7,
      "backgroundFactor": 0,
      "color": 256,
      "columnsType": 0,
      "direction": [1.0, 0.0, 0.0],
      "drawDir": 1,
      "height": 20.0,
      "layer": "0",
      "lineSpacingFactor": 1.0,
      "lineSpacingStyle": 1,
      "lineType": "ByLayer",
      "lineTypeScale": 1.0,
      "lineweight": -1,
      "location": [606.80351255454343, 423.7844655705079, 0.0],
      "plotType": 0,
      "refRectSize": [0.0, 0.0],
      "textContent": "leader test",
      "textStyleName": "Standard",
      "transparency": -1,
      "type": "ZcDbMText",
      "vNormal": [0.0, 0.0, 1.0]
    }
  ]
}

#参数描述:

参数名 类型 必填 默认值 说明
type string ZcDbLeader 表示引线实体类型
annoHeight double 0.0 注释高度
annoId double 绑定的实体 ID(仅用于导出 json,生成时无需输入)
annoType int 0 引线注释类型默认为 Mtext(如果不填,json 生成 leader 时引线与注释文本为两个独立的实体)
arrowSize double 2.5 箭头大小,箭头顶点到对边的距离
dimColord int 或 list 0 尺寸线颜色
dimGap double 0.625 标注文字到尺寸线的偏移量
dimLineWeight double -2(随块) 尺寸线线宽
dimScale double 1 标注全局比例
dimstyleName string 标注样式
dimtad double 1(上方) 文字相对于尺寸线的垂直位置
hasArrowhead bool true 箭头
hasHookLine bool false 是否有勾线
hasSplinePath bool false 是否为样条曲线拟合
offsetToBlkInsPt list [0,0,0] 注释偏移
points list 引线端点
ptOrigin list 引线起点
textOffset list [0.0, 0.0, 0.0] 文字偏移
vXDir list [1,0,0] 引线方向

补充:

annoType 类型说明
0 文本(Mtext)
1 几何尺寸与公差
2 块参照
3
dimtad 类型说明
0 标注文字在尺寸界线之间居中放置
1 将标注文字放置在尺寸线上方
2 将标注文字放在尺寸线远离定义点的一边。
3 将标注文字按照日本工业标准 (JIS) 放置。
4 将标注文字放在尺寸线下方
# 输出示例:

# 1.4 块定义

我们在使用插入一个块参照时,若原图纸中没有该块的块定义可以通过 json 导入块定义

如上图定义了一个由圆和直线组成的命名为“块定义示例”的块,块定义导入的 json 格式如下:

{
  "blockList": [
    [
      {
        "basePoint": [0.0, 0.0, 0.0],
        "blockName": "块定义示例"
      },
      {
        "center": [0.0, 0.0, 0.0],
        "color": 256,
        "entityHandle": "573",
        "layer": "0",
        "lineType": "ByLayer",
        "lineTypeScale": 1.0,
        "lineweight": -1,
        "normal": [0.0, 0.0, 1.0],
        "plotType": 0,
        "radius": 50.0,
        "thickness": 0.0,
        "transparency": -1,
        "type": "ZcDbCircle"
      },
      {
        "color": 256,
        "endPoint": [0.0, 50.0, 0.0],
        "entityHandle": "574",
        "layer": "0",
        "lineType": "ByLayer",
        "lineTypeScale": 1.0,
        "lineweight": -1,
        "plotType": 0,
        "startPoint": [0.0, 0.0, 0.0],
        "thickness": 0.0,
        "transparency": -1,
        "type": "ZcDbLine"
      }
    ]
  ]
}

其中 basePoint:块定义的原点相对世界坐标系的位置坐标 blockName:块定义名 块定义的组成图元的 json 格式与定义实体图元时相同

# 1.5 图层导入

可以通过添加"layerList"Json 字段往图纸中添加图层或修改已有图层

{
  "layerList": [
    {
      "layerColor": 7,
      "layerIsCurrentLayer": false,
      "layerIsFrozen": false,
      "layerIsHidden": false,
      "layerIsLocked": false,
      "layerIsOff": false,
      "layerIsPlottable": true,
      "layerIsReconciled": false,
      "layerLineWeight": -3,
      "layerName": "0",
      "layerPlotStyle": "Normal",
      "layerTransparency": 0
    },
    {
      "layerColor": 7,
      "layerIsCurrentLayer": true,
      "layerIsFrozen": false,
      "layerIsHidden": false,
      "layerIsLocked": false,
      "layerIsOff": false,
      "layerIsPlottable": true,
      "layerIsReconciled": false,
      "layerLineWeight": -3,
      "layerName": "图层1",
      "layerPlotStyle": "Normal",
      "layerTransparency": 0
    }
  ]
}
参数名 参数效果 是否必要 备注
layerColor 图层颜色 颜色设置方法见实体通用属性
layerIsFrozen 图层冻结
layerIsCurrentLayer 是否为当前图层 当多个图层都为 true 时,将最后一个属性为 true 的图层设为当前图层
layerIsHidden 图层隐藏
layerIsLocked 图层锁定
layerIsOff 图层关闭
layerIsPlottable 图层可绘制
layerIsReconciled 图层被调节
layerLineWeight 图层线宽
layerName 图层名
layerPlotStyle 打印样式
layerTransparency 透明度

# 1.6 文字样式

可以通过添加"textStyleList"字段往图纸中添加已有的文字样式或修改文字样式;

{
  "textStyleList": [
    {
      "bigFontFileName": "",
      "filename": "",
      "flagBits": 0,
      "isShape": false,
      "isVertical": false,
      "obliquingAngle": 0.0,
      "priorSize": 2.5,
      "textSize": 0.0,
      "textStyleName": "Standard",
      "ttfFlags": 34306,
      "typeFace": "SimSun",
      "xScale": 1.0
    },
    {
      "bigFontFileName": "",
      "filename": "",
      "flagBits": 0,
      "isShape": false,
      "isVertical": false,
      "obliquingAngle": 0.0,
      "priorSize": 2.5,
      "textSize": 0.0,
      "textStyleName": "Annotative",
      "ttfFlags": 34306,
      "typeFace": "SimSun",
      "xScale": 1.0
    }
  ]
}

#参数说明:

参数名 参数效果 是否必要 备注
bigFontFileName 大字体文件名 和文字样式使用的字体相关,非必填项
filename 文字文件名 非必填项,默认使用宋体
flagBits 反向+颠倒控制 否,默认值 0 控制文字是否反向及颠倒
isShape 是否为形文字 非必填项,dwg 转 json 使用
isVertical 垂直印刷
obliquingAngle 倾斜角
priorSize 默认文字高度 使用该样式绘制的文字高度
textSize 文字高度 文本度量选项中的高度
textStyleName 文字样式名 文字样式名
ttfFlags ttf 标志位 内部使用,非必填项
typeFace 字体抽象名 字体抽象名,例如宋体对应 SimSun;
xScale 宽度因子 字体宽度与高度的比

参数和 Zwcad 中文字样式管理器中选项对应;

flagBits 可以控制文本印刷是否颠倒或反向,枚举对应的文本印刷类型如下:

枚举值 文本印刷效果
0 正向不颠倒
2 反向印刷
4 颠倒印刷
6 反向+颠倒

新增一个文字样式,指定样式名跟文本字体文件即可。最少需要指定样式名,会使用默认参数创建新样式,默认使用宋体作为新样式的文本字体;

# 1.7 属性块

# 属性块制作

对于结构相同仅文字不同的块,可以通过制作属性块来进行制作: 例如:

上图中三个图形仅文本内容不同,就可以通过制作属性块的方式来实现对文本内容的修改; 首先制作一个右侧图形的块,如下:

在命令行中使用“ATTDEF”命令插入属性定义;

设置名称和提示文本(选填),缺省文本为最后的显示内容; 在合适的位置插入属性定义,插入后的显示效果如下:(插入后初始显示内容为属性定义的名称)

随后选中先前创建好的块和刚插入的属性定义,利用“BLOCK”命令创建属性块,例如这里我将块名设为“平台”。

设置合适的点为基点后会提示编译图块属性,如下:

输出图形:

# 1.8 设置当前使用的颜色、线宽、透明度

可以通过"CurInfo"字段设置后续绘制使用的颜色、线宽、透明度信息

{
  "CurInfo": {
    "color": [111, 111, 222],
    "lineweight": 120,
    "transparency": 60
  }
}

颜色、线宽、透明度设置规则与实体颜色、线宽、透明度设置规则相同

# 二、实体筛选

# 2.1 图元筛选方法

解析 dwg 图纸生成对应的 json 文件后,若要从 json 文件中识别到特定的实体结构可通过以下三种方式对 dwg 图纸中的实体做预处理

# 2.1.1 通过创建块的块名来识别

通过建立块,利用块的名称来识别图纸中所有该结构的图元,如:

将该天线部分定义为块名为“新增天线 2”的块之后,通过搜索块名,可以定位到该天线的信息

# 2.1.2 建立属性块

对于某些几何结构相同,但包含的文本不同的机构,可以通过属性块的方式来定义并识别和区分,如图中的标高

首先建立属性(输入 attdef),建立属性名为 H:的属性

而后在属性下方绘制要绘制的结构体的内容

将上图建立为一个块

此时双击该块可以添加 H:属性,输入值即可得到不同高度的标高,通过块名和属性名可以定位到图中的属性块

# 2.1.3 赋予实体 XDATA 拓展信息

输入 xdata

选择要添加拓展属性的图元

输入拓展属性名

可添加一些拓展属性来赋予该图元

如选择字符串,输入天线 1

此时为多端线赋予了拓展属性,转化出来的 Json 中会带有拓展属性,从而能够定位到该多段线