前端接口对象及方法

简介:ZwCloud2D 是前端 SDK 主类,存在多个命名空间,进行不同的操作。

ZwEditor:界面加载类 ZwDataProcessor:数据获取类 ZwDataManager:数据加载类 ZwMessageCallback:消息回调类

# 1 ZwEditor

ZwEditor 为界面加载类,进行 SDK 中界面相关显示

# 1.1 ZwInit()

简介

SDK 接收 DIV 元素进行界面的加载

语法

ZwCloud2D.ZwEditor.ZwInit(container);

参数

container: HTMLDivElement div 元素作为容器,SDK 将在该容器内生成组件。

描述

ZwCloud2D.ZwEditor.ZwInit 接受 DIV 元素,生成对应的显示

示例

let container = document.getElementById('container');
ZwCloud2D.ZwEditor.ZwInit(container);

# 1.2 ZwSetPageConfig()

简介

ZwSetPageConfig 方法能够更改用户配置

语法

ZwCloud2D.ZwEditor.ZwSetPageConfig(settings);

参数

settings: Object 配置数据,是一个 Object 类型的值。 其中 top,left,bottom,right 是面板处于各方位下的默认宽度,目前界面共包含三种面板,分别是 layerPanel, xrefPanel, commandPanel,对应图层,外部参照,命令行。 对于面板数据,包含以下属性:

  • WindowOrient: 面板初始位置设置,允许"left"、"bottom"、"top"、"right"。
  • WindowVisible: 面板初始显示设置,仅允许"hide"和"show"。
  • index: 面板在某一方位下的排列序号,从 0 开始,逐渐递增。
  • xval、yval: 面板处于浮动情况下,相对于画布左上角的 x、y 坐标。
  • width、height: 面板处于浮动情况下,宽度和长度设置。
  • showPosition: 面板可显示位置,类型是一个数组,允许"left"、"bottom"、"top"、"right"。
  • options: 是对于绘图中的一些设置,显示在 options 命令的弹窗

配置如下:

  • optimizationLevel: 图形优化级别,数字类型,有效值为 0~2,值越大优化级别越高,级别不同图纸的绘制速度以及呈现效果不同。
  • textOptimizationLevel: 文字优化等级,数字类型,有效值为 1~5,影响文字退化阈值大小,仅在 optimizationLevel=2 时生效。
  • antialias: 布尔值,是否打开绘制抗锯齿。
  • commentsPageSize: 数字类型, 评论单页显示数。
  • continuousDraw: 布尔值,是否启用评论连续绘制气泡。
  • cursorSize: 数字类型,十字光标的大小。
  • zoomLevel: 数字类型,滚轮缩放级别。
  • autoSave: 布尔值,是否启用自动保存。
  • autoSaveGap: 布尔值,自动保存时间间隔,仅启用自动保存时生效。

以下是默认配置:

    let Config = {
        top: 150,
        bottom: 150,
        left: 300,
        right: 300,

        layerPanel: {
            WindowOrient: "left",
            WindowVisible: "hide",
            index: 0,
            xval: 700,
            yval: 200,
            width: 450,
            height: 200,
            showPosition: [
                "left",
                "right"
            ]
        },
        xrefPanel: {
            WindowOrient: "left",
            WindowVisible: "hide",
            index: 1,
            xval: 700,
            yval: 200,
            width: 450,
            height: 200,
            showPosition: [
                "left",
                "right"
            ]
        },
        commandPanel: {
            WindowOrient: "bottom",
            WindowVisible: "hide",
            index: 2,
            xval: 700,
            yval: 200,
            width: 450,
            height: 200,
            showPosition: [
                "bottom"
            ]
        },
        options: {
            optimizationLevel: 2,
            textOptimizationLevel: 3,
            antialias: false,
            commentsPageSize: 40,
            continuousDraw: false,
            cursorSize: 15,
            zoomLevel: 1.6,
            autoSave: true,
            autoSaveGap: 10
        }
    }

描述

ZwSetPageConfig 方法能够接收一个固定格式的对象,能够修改配置信息。

示例

let setting = { options: {} }; ZwCloud2D.ZwEditor.ZwSetPageConfig(setting);

# 1.3 ZwSetLoadingState()

简介

ZwSetLoadingState 方法能够设置加载状态

语法

ZwCloud2D.ZwEditor.ZwSetLoadingState(isLoading: boolean);

参数

isLoading: boolean 加载状态,是一个 boolean 类型的值,true 加载中,false 加载完毕

描述

ZwSetLoadingState 方法能够接收一个 boolean 类型的值,设置组件的加载状态

示例

ZwCloud2D.ZwEditor.ZwSetLoadingState(true);

# 1.4 ZwSetUserOptions()

简介

ZwSetUserOptions 方法能够控制图纸页界面的显示隐藏,命令的注册与注销

语法

ZwCloud2D.ZwEditor.ZwSetUserOptions({ panel: {},commandButton: {},command: {} });

参数

配置参数是一个 Object 类型的值,其中包含 panel 表示左侧面板栏、commandButton 表示上方命令按钮栏、command 表示命令。

为方便用户统一管理页面内容,本方法提供以下参数供调用:

  • panelVisible:控制所有 panel 面板是否显示;
  • layoutPickerVisible:控制底部布局选择栏是否显示;
  • statusBarVisible:控制底部状态栏是否显示;
  • commandButtonVisible:控制上方命令按钮栏是否显示。

panel 的可配置内容包括:

  • layerPanel: 图层面板
  • xrefPanel: 外部参照面板
  • commandPanel: 命令行面板
  • commentPanel: 评论面板
  • drawPanel: 移动端绘图面板
  • modifyPanel: 移动端修改面板
  • annotatePanel: 移动端注释面板

commandButton 的可配置内容包括:

  • Plot: 打印按钮,
  • Pan: 移动按钮,
  • ZoomCenter: 中心缩放按钮,
  • ZoomAll: 全部缩放按钮,
  • ZoomRange: 范围缩放按钮,
  • ZoomIn: 放大按钮,
  • ZoomOut: 缩小按钮,
  • Regen: 重生成按钮,
  • Fcmp: 文件比较按钮,
  • Save: 保存按钮,
  • SaveAs: 另存为按钮,
  • Undo: 上一步按钮,
  • Redo: 下一步按钮,
  • Point: 点按钮,
  • Line: 直线按钮,
  • Pline: 多段线按钮,
  • Circle: 圆按钮,
  • Arc: 弧按钮,
  • Rectangle: 矩形按钮,
  • Imageattach: 图片按钮,
  • Spline: 样条曲线按钮,
  • Move: 移动按钮,
  • Rotate: 旋转按钮,
  • Trim: 修剪按钮,
  • Copy: 复制按钮,
  • Mirror: 镜像按钮,
  • Break: 打断按钮,
  • Lengthen: 拉伸按钮,
  • Scale: 缩放按钮,
  • Explode: 分解按钮,
  • Erase: 删除按钮,
  • Dist: 距离按钮,
  • Measuregeom_radius: 半径按钮,
  • Measuregeom_angle: 角度按钮,
  • Area: 面积按钮,
  • Text: 单行文字按钮,
  • RevCloud: 云线按钮,
  • Mleader: 多重引线按钮,
  • Dimlinear: 线性按钮,
  • Dimaligned: 对齐按钮,
  • Dimangular: 角度按钮,
  • Dimarc: 弧长按钮,
  • Dimradius: 半径按钮,
  • Dimdiameter: 直径按钮,
  • View: 视角按钮,
  • Style: 文字样式按钮,
  • DimStyle: 标注样式按钮,
  • Sign: 电子签章按钮,

command 的可配置内容包括:

  • ABOUT: 关于命令,
  • HELP: 帮助命令,
  • OPTIONS: 配置命令,
  • PAN: 移动命令,
  • PLOT: 打印命令,
  • FCMP: 文件比较命令,
  • DEBUG: 调试命令,
  • REGEN_V: 看图模式下的重生成命令,
  • UCSMAN: UCSMAN 命令,
  • ARC: 弧命令,
  • AREA: 测量面积命令,
  • BREAKE: 打断命令,
  • CIRCLE: 圆命令,
  • COPY: 复制命令,
  • DIMALIGNED: 测量对齐命令,
  • DIMANGULAR: 测量角度命令,
  • DIMARC: 测量弧长命令,
  • DIMDIAMETER: 测量直径命令,
  • DIMLINEAR: 测量线性命令,
  • DIMRADIUS: 测量半径命令,
  • DIST: 测量距离命令,
  • ERASE: 删除命令,
  • EXPLODE: 分解命令,
  • IMAGEATTACH: 插入图片命令,
  • LEADER: 引线命令,
  • LENGTHEN: 拉长命令,
  • LINE: 直线命令,
  • MEASUREGEOM: 测量命令,
  • MIRROR: 镜像命令,
  • MLEADER: 多重引线命令,
  • MOVE: 移动命令,
  • MREDO: 下一步命令,
  • PLINE: 多段线命令,
  • POINT: 点命令,
  • RECTANGLE: 矩形命令,
  • REDO: 下一步命令,
  • REVCLOUD: 云线命令,
  • ROTATE: 旋转命令,
  • SCALE: 缩放命令,
  • SPLINE: 样条曲线命令,
  • STRETCH: 拉伸命令,
  • TRIM: 修剪命令,
  • UNDO: 上一步命令,
  • ZOOM: 缩放命令,
  • REGEN: 重生成命令,

描述

ZwSetUserOptions 方法能够传递一个对象,控制图纸页界面的显示隐藏,命令的注册与注销,对应参数为 true 表示显示或注册,为 false 时表示隐藏或注销,不设置时为当前 sdk 版本权限对应的默认值

示例

    ZwCloud2D.ZwEditor.ZwSetUserOptions({
        panel: {
            commandPanel: true,
        },
        commandButton: {
            Pan: false,
            ZoomCenter: false,
            ZoomIn: false,
        },
        command: {
            DIST: true,
        },
        commandButtonVisible: false,
        statusBarVisible: false,
        panelVisible: false,
        layoutPickerVisible: false,
    });

# 1.5 ZwSetExtendButton ()

简介

ZwSetExtendButton 方法能够设置用户自定义的按钮

语法

ZwCloud2D.ZwEditor.ZwSetExtendButton(extendArray);

参数

extendArray: Array 用户自定义操作栏数组,每个数组对象代表一块按钮区域,包含按钮数组和底部描述字段 extendArray[i].button: Array 用户自定义按钮数组,每个按钮对象包含 title: string 标题,icon: string 图标地址,style: string 按钮样式 extendArray[i].description: string 用户自定义按钮区域底部描述字段

描述

ZwSetExtendButton 方法能以设置用户自定义的按钮,在点击对应按钮时会触发 ZwEvtExtendButtonClick 回调,用户可在回调事件中加入自定义方法

示例

 ZwCloud2D.ZwEditor.ZwSetExtendButton(
      [{
        button: [{ title: '这是按钮提示', icon: './assets/icon1.svg', style: 'padding:4px' }],
        description: '这是底部描述'
      },
      {
        button: [{ title: '这是按钮提示', icon: './assets/icon1.svg' }, { title: '这是按钮提示', icon: './assets/icon2.svg' }],
        description: '这是底部描述'
      }])

# 2 ZwDataProcessor

ZwDataProcessor 为数据获取类,处理 SDK 中数据获取与图纸加载

# 2.1 ZwSetConnectUrl ()

简介

ZwSetConnectUrl 方法能够设置图纸加载的 URL、获取 ticket 的 URL

语法

ZwCloud2D.ZwDataProcessor.ZwSetConnectUrl(url1, url2);

参数

url1: string 图纸加载的 URL 为 http 链接 (可选)url2: string 用于获取单次请求需要的 ticket

描述

ZwSetConnectUrl 方法接受图纸的 URL 地址,一般可设置为后台 SDK 地址

示例

ZwCloud2D.ZwDataProcessor.ZwSetConnectUrl('http://192.168.51.174:9090,' http://192.168.51.174:9092');

# 2.2 ZwSetLoadDwg ()

简介

ZwSetLoadDwg 方法能够设置加载的图纸的 docId

语法

ZwCloud2D.ZwDataProcessor.ZwSetLoadDwg(docId);

参数

docId: string 需要加载的图纸的 docId

描述

ZwSetLoadDwg 方法接受图纸的 docId,用于图纸显示

示例

ZwCloud2D.ZwDataProcessor.ZwSetLoadDwg('13567864222');

# 2.3 ZwLoad ()

简介

ZwLoad 方法能够进行图纸的加载

语法

ZwCloud2D.ZwDataProcessor.ZwLoad();

参数

描述

ZwLoad 进行图纸的加载逻辑,内部需要实现相关的图纸显示的回调

示例

ZwCloud2D.ZwDataProcessor.ZwLoad();

# 2.4 ZwFcmpLoad ()

简介

ZwFcmpLoad 方法能够进行文件比较的加载

语法

ZwCloud2D.ZwDataProcessor.ZwFcmpLoad();

参数

描述

ZwFcmpLoad 进行图纸的加载逻辑,内部需要实现文件比较相关的图纸显示的回调

示例

ZwCloud2D.ZwDataProcessor.ZwFcmpLoad();

# 3 ZwDataManager

ZwDataManager 为数据加载类,处理 SDK 中数据处理与加载

# 3.1 ZwSetDwgInfo ()

简介

ZwSetDwgInfo 方法能够设置图纸的信息

语法

ZwCloud2D.ZwDataManager.ZwSetDwgInfo(object: { id, name, fonts, layouts});

参数

object.id: 图纸的唯一标识 object.name: 图纸的名称 object.fonts: 图纸的字体信息 object.fonts: 图纸的布局信息 返回:promise 对象,包含缺失的字体信息、缓存的 lmf 信息等

描述

ZwSetDwgInfo 方法接受包含图纸信息的 Object 对象,用于设置图纸信息

示例

ZwCloud2D.ZwDataManager.ZwSetDwgInfo({ id: docId, fonts: data.fontList, layouts: layouts, name: data.name })

# 3.2 ZwSetFontDataList ()

简介

ZwSetFontDataList 方法能够加载字体数据

语法

ZwCloud2D.ZwDataManager.ZwSetFontDataList(fontArr)

参数

fontList: Array<{name: string, type: string data: ArrayBuffer}> 字体数据,包含字体名称、字体类型(SHX、TTF)、二进制数据

描述

ZwSetFontDataList 方法能够接收一个字体数据数组,将字体数据保存在内部数据库中

示例

ZwCloud2D.ZwDataManager.ZwSetFontDataList(fontArr)

# 3.3 ZwSetDwgData ()

简介

ZwSetDwgData 方法能够加载 lmf 数据到 SDK 中进行读取

语法

ZwCloud2D.ZwDataManager.ZwSetDwgData(fileId, arrayBuffer, timestamp)

参数

fileId: string lmf 数据的唯一标识 (可选)arrayBuffer: ArrayBuffer 图纸二进制数据,是一个 ArrayBuffer 类型的值 (可选)timestamp: number lmf 生成的时间戳,用于缓存比较

描述

ZwSetDwgData 方法能够进行 lmf 数据的接收与加载,当不传递数据时,将尝试从内部数据库中读取,返回一个 promise 对象用于执行后续操作,能够将布局数据转化为需要的格式,并保存在内部数据库中

示例

ZwCloud2D.ZwDataManager.ZwSetDwgData(res.layout.handleId, lmfInfo, res.timestamp)

# 3.4 ZwSetXrefList ()

简介

ZwSetXrefList 方法能够加载外部参照列表

语法

ZwCloud2D.ZwDataManager. ZwSetXrefList (object: {docName, xrefRelations, srcMap})

参数

object. docName: 图纸的名字 object. xrefRelations: 图纸的外部参照列表 object. srcMap: 一个 Map 对象,存储了图纸各外部参照的路径与其对应的二进制数据的键值对,用于提前加载外部参照的缩略图

描述

ZwSetXrefList 方法能够接收一个对象,提供外部参照面板需要的相关数据

示例

ZwCloud2D.ZwDataManager.ZwSetXrefList (xrefList)

# 3.5 ZwSetXrefData ()

简介

ZwSetXrefData 方法能够加载图纸的外部参照

语法

ZwCloud2D.ZwDataManager.ZwSetXrefList (xrefData: ArrayBuffer)

参数

xrefData: 图纸中外部参照的二进制数据

描述

ZwSetXrefData 方法能够接收二进制数据,用于加载图纸中包含的外部参照

示例

ZwCloud2D.ZwDataManager.ZwSetXrefData (xrefData)

# 3.6 ZwSetImageData ()

简介

ZwSetImageData 方法能够加载图纸的插入图片

语法

ZwCloud2D.ZwDataManager.ZwSetImageData (imageMap: Map<string, ArrayBuffer>)

参数

imageMap: 一个 Map 对象,存储了图纸中插入图片的路径与其二进制数据的键值对

描述

ZwSetXrefData 方法能够接收一个 Map 对象,用于加载图纸中包含的图片

示例

ZwCloud2D.ZwDataManager.ZwSetImageData (imageMap)

# 3.7 ZwSetImageList ()

简介

ZwSetImageList 方法能够加载 image 命令依赖的图片列表

语法

ZwCloud2D.ZwDataManager.ZwSetImageList (object: {name, data, completePath})

参数

object.name: 图片的名称 object.data: 图片的二进制数据 object. completePath: 图片的路径

描述

ZwSetXrefData 方法能够接收一个包含单个图片信息的对象,添加到 sdk 内部图片列表

示例

ZwCloud2D.ZwDataManager.ZwSetImageList (item)

# 3.8 ZwSetExecuteCmd ()

简介

ZwSetExecuteCmd 方法能够通过调用执行对应的命令

语法

ZwCloud2D.ZwDataManager.ZwSetExecuteCmd (command:string)

参数

command:命令的名称与关键字(可选)组成的字符串,由”_”拼接,如”zoom_a”

描述

ZwSetExecuteCmd 方法能够接收一个命令字符串,调用后可执行对应的命令

示例

ZwCloud2D.ZwDataManager.ZwSetExecuteCmd("zoom_a")

# 3.9 ZwSetCommentData ()

简介

ZwSetCommentData 方法能够插入评论数据

语法

ZwCloud2D.ZwDataManager.ZwSetCommentData(jsonData: any)

参数

{commentList:commentList, memberList:memberList, user:user},其中 commentList 是必填字段,表示评论批注数据,memberList 和 user 可不传,memberList 指的是参加当前项目的群组成员列表,在评论时可用于@成员,user 表示当前登录的用户信息,用来判断能否编辑和删除评论(用户只能编辑和删除自己天机的评论)。

描述

ZwSetCommentData 方法能够接收一个对象,memberList 和 user 的数据由用户提供数据,只需要加载一次,比如首次加载的时候参数传{commentList:commentList,memberList:memberList, user:user},其他时候只需要{commentList:commentList},commentList 数据也需要用户自行管理(存储、获取等操作),对象结构见示例,调用后数据会更新并显示在评论面板中。 如果使用 Cloud2d 内置的评论面板,commentList 中的关键数据会通过接口 ZwEvtUpdateCommentData 抛出,用户接收数据后根据业务需求构造数据并存储,最后取出评论数据显示在面板中。 如果使用自定义面板,用户若绘制了气泡则需要从接口 ZwEvtDrawCommentBubble 接收气泡坐标数据,再根据样例构造、存储,最后取出评论数据显示在面板中。

示例

//变量说明
//commentList变量中rows是个数组,每个对象表示一条评论,对象中createBy表示用户id,creator表示用户名,createTime表示评论时间,id表示评论id,docId表示当前图纸的id,handleId表示当前布局的id,parentId表示当前评论的父级评论id,level表示评论层级(0表示评论,1表示回复),withAt表示是否包含了@用户,withMark表示是否有气泡批注,content表示经过处理后的评论内容,mark字段表示气泡数据。
//commentList变量中mark字段是一个对象数组转换的字符串,其中包含了每个气泡的id、类型type、坐标点(不同类型数据结构不同)和颜色color,气泡的数据格式请查看ZwSetBubblesData接口说明。

let commentList = {
  msg: "操作成功",
  code: 0,
  data: {
    total: 2,
    rows: [
      {
        createBy: 1317,   //必要,用户ID
        creator: "177****2305",  //必要,用户名
        createTime: 1672040045000,  //必要,评论创建时间
        id: "1607278558678147072",  //必要,评论标识ID
        docId: "1607272401838333952",  //必要,评论所关联的文档ID
        handleId: "34",  //必要,评论所在的图纸空间标识ID,比如模型空间标识ID、布局空间视口标识ID
        parentId: "0",  //必要,评论层级标识,例如已存在评论A(它的parentId是"0"),回复A后生成评论B,B的评论数据会包含parentId,B的parentId就是A的id
        level: 0,  //必要,表示评论层级关系,根评论为0,子评论为1(也就是回复的评论),目前只有0和1两级。
        withAt: "NO",  //必要,表示评论消息是否@了项目成员,"NO"表示没有@成员,"YES"表示有@成员,请详细查看这几个样例对象
        withMark: "YES",  //必要,表示评论消息是否添加了气泡,"YES"表示添加了气泡,并且必须要有mark字段,如果是"NO",则不需要传maek字段
        content: "###梵蒂冈梵蒂冈发的",   //必要,表示评论消息是否添加了气泡,#表示气泡的位置,解析数据时#会被替换成添加的评论气泡
        mark: '[{"id":"9766d436-d3eb-1499-4fe0-ab500428e399","points":[353.8113862263275,951.5644448366519,0,517.5777582715559,886.9593622866994,0],"color":"cyan","type":2},{"id":"c7052551-ab5b-97d0-78de-d7a32bb8da47","pt":[235.1183275880426,850.9007115611445,0],"color":"green","type":0},{"id":"1231e48f-fa1a-98b0-a20e-698a21a49983","center":[738.4369939655797,921.5155692320228,0],"endPt":[822.5738456585411,870.4324807041535,0],"color":"rgb(255,0,255)","type":1}]',   //非必要,根据withMark字段来判断是否需要
        replyList: [],   //非必要,表示当前评论是否有回复的消息,它是一个对象数组,它的长度表示回复的评论消息数,数据结构和评论数据相同,比如replyList: [{...}, {...}]
        "avatarUrl": "http://test.resources.zwsoft.cn/prd/ZwsoftAccounts/public/userHeadImg/N9daFHvxBY4Pvz3m_Q3SyGH6H7yPuKalD9q1AZecZtVJY8Ts3wOMoGUxXOdGyzou/originalPic.png?v=1706008970" // 必要,用户头像图片所在的地址
      },
      {
        createBy: 1317,
        creator: "177****2305",
        createTime: 1672040002000,
        id: "1607278378998358016",
        docId: "1607272401838333952",
        handleId: "34",
        parentId: "0",
        level: 0,
        withAt: "NO",
        withMark: "YES",
        content: "对符合法规和法国###",
        mark: '[{"id":"7a4f4b9f-992d-15ef-9b17-7ca8abe833df","pt":[532.2265851288126,664.973293757502,0],"color":"red","type":0},{"id":"8bac4935-2e0b-444c-212e-bfca607c4f8e","points":[614.8609930415427,634.9244181528729,0,813.1835720320946,678.495287779585,0,834.217784955335,418.5725137995435,0,811.6811282518631,329.9283307658877,0],"color":"red","type":3},{"id":"a664f1ab-359b-87a0-7db9-f758e0e9e958","center":[294.8404678522429,338.9429934472764,0],"endPt":[365.45532552312125,275.84035467755535,0],"color":"cyan","type":1}]',
        replyList: [],
        "avatarUrl": "http://test.resources.zwsoft.cn/prd/ZwsoftAccounts/public/userHeadImg/N9daFHvxBY4Pvz3m_Q3SyGH6H7yPuKalD9q1AZecZtVJY8Ts3wOMoGUxXOdGyzou/originalPic.png?v=1706008970"
      },
      {
        "createBy": 1027,
        "creator": "renyi",
        "createTime": 1713491272000,
        "id": "1781137607340384256",
        "docId": "1780894392326610944",
        "handleId": "34",
        "parentId": "0",
        "level": 0,
        "withAt": "YES",  //必要,表示评论消息是否@了项目成员,"YES"表示有@成员
        "withMark": "NO",
        "atUserIds": "1045",  //非必要,withAt为"YES"时必须要有该字段,否则无法正常显示@成员,它是一个字符串,多个用户用英文逗号隔开,比如@了三个成员该字段样例为"1045,123,365"
        "content": "%24bgfhfgf%7B1045%7D",
        "replyList": [],
        "avatarUrl": "http://test.resources.zwsoft.cn/prd/ZwsoftAccounts/public/userHeadImg/N9daFHvxBY4Pvz3m_Q3SyGH6H7yPuKalD9q1AZecZtVJY8Ts3wOMoGUxXOdGyzou/originalPic.png?v=1706008970"
      }
    ],
  },
};

//设置群组成员列表,作为@用户列表供用户选择
let memberList = {
  msg: "操作成功",
  code: 0,
  data: {
    total: 2,
    rows: [
      {
        memberId: "2138", //必要
        phone: "",
        email: "",
        memberName: "张三", //必要
        memberType: "USER",
        lastTime: 1672039449000,
        roleId: "1607272382833942531",
        roleName: "查看者",
        color: "#87CEFA",
      },
      {
        memberId: "1317", //必要
        phone: "",
        email: "",
        memberName: "177****2305",   //必要
        memberType: "PROJECT_ADMIN",
        lastTime: 1672038572000,
        roleId: "1607272382833942528",
        roleName: "管理员",
        color: "#87CEFA",
      },
    ],
  },
};

//当前登录的用户信息
let user = {
  userId: 1317,            //必要
  userName: "177****2305",
  phone: "",
  email: "",
  description: "",
  type: "FREE",
};

<!-- 可以@成员,可以编辑和删除评论 -->
ZwCloud2D.ZwDataManager.ZwSetCommentData({
  commentList: commentList,
  memberList: memberList,
  user: user
});

<!-- 不需要@成员 -->
ZwCloud2D.ZwDataManager.ZwSetCommentData({
  commentList: commentList,
  memberList: undefined,
  user: user
});

<!-- 如果不需要@成员,不需要编辑和删除评论,可以仅设置评论数据 -->
ZwCloud2D.ZwDataManager.ZwSetCommentData({
  commentList: commentList,
  memberList: undefined
});

<!-- 已经设置过memberList和user了,则只需要传commentList -->
ZwCloud2D.ZwDataManager.ZwSetCommentData({
  commentList: commentList
});

# 3.10 ZwSetDrawCommentBubble ()

简介

ZwSetDrawCommentBubble 方法能够通过调用执行对应的气泡命令

语法

ZwCloud2D.ZwDataManager. ZwSetDrawCommentBubble(command:string, color?: any)

参数

command:命令的名称与关键字(可选)组成的字符串,由”_”拼接,如圆形气泡”circle_0_1”, color 表示当前绘制的气泡颜色,格式为对象{str:'rgb(173,173,173)', num: 0xffadadad}

描述

ZwSetDrawCommentBubble 方法能够接收一个命令字符串和一个颜色对象,调用后可执行对应的气泡命令

示例

绘制圆形气泡:ZwCloud2D.ZwDataManager.ZwSetDrawCommentBubble(‘circle_0_1, {str:'red', num: 0xffff0000} )
绘制矩形气泡:ZwCloud2D.ZwDataManager.ZwSetDrawCommentBubble(‘rectangle_ _0', {str:'green', num: 0xff008000} )
绘制图钉:ZwCloud2D.ZwDataManager.ZwSetDrawCommentBubble(‘bubble', {str:'blue', num: 0xff0000ff} )
自由绘制气泡:ZwCloud2D.ZwDataManager.ZwSetDrawCommentBubble(‘pline', {str:'rgb(173,173,173)', num: 0xffadadad} )

# 3.11 ZwSetCommentBubblesOff ()

简介

ZwSetCommentBubblesOff 方法能够关闭和显示批注

语法

ZwCloud2D.ZwDataManager.ZwSetCommentBubblesOff(bubblesOff:boolean)

参数

bubblesOff:关闭气泡

描述

ZwSetCommentBubblesOff 方法能够接收一个布尔变量,true 表示关闭批注,false 表示显示批注

示例

关闭批注:ZwCloud2D.ZwDataManager.ZwSetCommentBubblesOff(true)
显示批注:ZwCloud2D.ZwDataManager.ZwSetCommentBubblesOff(false)

# 3.12 ZwSetBubblesData()

简介

ZwSetBubblesData 能设置气泡数据

语法

ZwCloud2D.ZwDataManager.ZwSetBubblesData(marks:any)

参数

marks:气泡数据

描述

marks 是一个对象数组或者对象数组转换的字符串,其中包含了每个气泡的 id、类型 type、坐标点(不同类型数据结构不同)和颜色 color,气泡的数据格式请参考示例。 示例中包含了四种类型的气泡数据,其中 type = 0 表示图钉气泡,type = 1 表示圆形气泡,type = 2 表示矩形气泡,type = 3 表示多段线气泡。 示例 1:marks 格式为对象数组

let marks1 = [{
    id: "cb17d0da-53c9-129f-6359-c4a24cc400d3",
    pt: [142.71803510380826,248.0451447432734,0],   // pt表示图钉的位置,数据点按照x、y、z的顺序存储
    color: "red",
    type: 0
}, {
    id: "70729bb9-06ba-940e-6912-53c85f75cbb7",
    center: [28.532307806217773,650.7000778453031,0],   // center表示圆心坐标,数据点按照x、y、z的顺序存储
    endPt: [70.60073365269847,583.0901077348876,0],     // endPt表示圆的半径端点,数据点按照x、y、z的顺序存储,可以根据endPt和center两点的距离计算半径,
    color: "red",
    type: 1
}, {
    id: "59b263eb-b5ab-62db-a78e-843c5ca7dcad",
    points: [13.507870003903221,589.0998828558136,0,180.27912960959463,492.94348092100046,0],   // points表示矩形的两个对角点,数据点按照x、y、z的顺序存储
    color: "red",
    type: 2
}, {
    id: "48b3f971-2b2a-d881-5b61-d6201de07784",     // points表示多段线的多个点,数据点按照x、y、z的顺序存储
    points: [54.07385207015247,497.4508122616948,0,5.995651102745953,308.14289595253155,0,172.76691070843736,550.0363445697957,0,192.29867985144625,214.9913815781814,0],
    color: "red",
    type: 3
}];
ZwCloud2D.ZwDataManager.ZwSetBubblesData(marks1);

示例 2:marks 格式为对象数组转换后的字符串

let marks2 = "[{\"id\":\"70729bb9-06ba-940e-6912-53c85f75cbb7\",\"center\":[28.532307806217773,650.7000778453031,0],\"endPt\":[70.60073365269847,583.0901077348876,0],\"color\":\"red\",\"type\":1},{\"id\":\"59b263eb-b5ab-62db-a78e-843c5ca7dcad\",\"points\":[13.507870003903221,589.0998828558136,0,180.27912960959463,492.94348092100046,0],\"color\":\"red\",\"type\":2},{\"id\":\"48b3f971-2b2a-d881-5b61-d6201de07784\",\"points\":[54.07385207015247,497.4508122616948,0,5.995651102745953,308.14289595253155,0,172.76691070843736,550.0363445697957,0,192.29867985144625,214.9913815781814,0],\"color\":\"red\",\"type\":3},{\"id\":\"cb17d0da-53c9-129f-6359-c4a24cc400d3\",\"pt\":[142.71803510380826,248.0451447432734,0],\"color\":\"red\",\"type\":0}]";
ZwCloud2D.ZwDataManager.ZwSetBubblesData(marks2);

# 3.13 ZwSetDeleteBubbles ()

简介

ZwSetDeleteBubbles 能删除气泡

语法

ZwCloud2D.ZwDataManager.ZwSetDeleteBubbles(ids:string[])

参数

ids:气泡 id

描述

ids 是由需要删除的气泡 id 组成的字符串数组

示例

let ids = ['9766d436-d3eb-1499-4fe0-ab500428e399', '1231e48f-fa1a-98b0-a20e-698a21a49983'];
ZwCloud2D.ZwDataManager.ZwSetDeleteBubbles(ids)

# 3.14 ZwSetLocateBubble ()

简介

ZwSetLocateBubble 能定位被点击的气泡

语法

ZwCloud2D.ZwDataManager.ZwSetLocateBubble(id: string})

参数

id 是字符串类型

描述

id 表示需要定位的气泡 id 示例

let id = '9766d436-d3eb-1499-4fe0-ab500428e399';
ZwCloud2D.ZwDataManager.ZwSetLocateBubble(id)

# 3.15 ZwSetBubbleHighlight ()

简介

ZwSetBubbleHighlight 能使指定 id 的气泡显示高亮

语法

ZwCloud2D.ZwDataManager.ZwSetBubbleHighlight(highlightBubble:{[key:string]: any})

参数

highlightBubble 表示需要高亮的气泡信息

描述

highlightBubble 对象包含了两个参数{ids: [], color: ""},字符串数组类型的气泡 ids(必传)和气泡颜色 color(非必传) 示例 1: 只传气泡 ids,则会按照默认颜色高亮

let highlightBubble = {ids: ['9766d436-d3eb-1499-4fe0-ab500428e399']};
ZwCloud2D.ZwDataManager.ZwSetBubbleHighlight(highlightBubble)

示例 2: 参数包含气泡 idsh 和气泡颜色 color

let highlightBubble = {
    ids: ['9766d436-d3eb-1499-4fe0-ab500428e399'],
    color: 'rgb(255,165,0)'
};
ZwCloud2D.ZwDataManager.ZwSetBubbleHighlight(highlightBubble)

# 3.16 ZwSetCancelBubbleHighlight ()

简介

ZwSetCancelBubbleHighlight 能取消指定气泡的高亮效果

语法

ZwCloud2D.ZwDataManager.ZwSetCancelBubbleHighlight(ids: [])

参数

ids 是字符串数组类型

描述

ids 表示取消高亮的气泡 id 示例

let ids = ['9766d436-d3eb-1499-4fe0-ab500428e399', '8866d436-d3eb-1499-4fe0-ab500428e300'];
ZwCloud2D.ZwDataManager.ZwSetCancelBubbleHighlight(ids)

# 3.17 ZwSetWatermark ()

简介

ZwSetWatermark 能在图纸内添加指定的水印

语法

ZwCloud2D.ZwDataManager.ZwSetWatermark({text:string,color,tiltAngle,fontSize,fontName,rowOffset,colOffset})

参数

text: string 类型,表示水印的内容 color: string 类型,表示水印的颜色 tiltAngle: number 类型,表示水印的倾斜角度 fontSize: string 类型,表示水印的文字大小 fontName: string 类型,表示水印的字体名称 rowOffset: number 类型,表示水印的行间距 colOffset: number 类型,表示水印的列间距

描述

通过调用 ZwSetWatermark 方法传递一个对象,可以向图纸添加指定水印(打印功能不会打印添加的水印),对应参数未设置时为系统默认值

示例

ZwCloud2D.ZwDataManager.ZwSetWatermark({
            text:"这是默认文字",
            color:"#FFFFFF3F",
            tiltAngle:-30,
            fontSize:"16px",
            fontName:"微软雅黑",
            rowOffset:150,
            colOffset:200,
      })

# 3.18 ZwSetInterruptCmd ()

简介

ZwSetInterruptCmd 能中断正在执行的命令

语法

ZwCloud2D.ZwDataManager.ZwSetInterruptCmd()

参数

描述

可以中断正在执行的命令,比如取消气泡绘制、取消编辑命令等。 示例

ZwCloud2D.ZwDataManager.ZwSetInterruptCmd()

# 3.19 ZwSetFcmpDwgInfo ()

简介

文件比较(fcmp)流程中设置文件比较图纸信息,使用方法类似于 ZwSetDwgInfo()

语法

ZwCloud2D.ZwDataManager.ZwSetFcmpDwgInfo (data: { baseFileName, baseFileInfo, compareFileName, compareFileInfo, fonts, layouts, fcmpDiffExt, fcmpErrorFlag, fcmpRcShape, fcmpRcMargin, fcmpHatch, fcmpText});

参数

data 的属性如下

data 属性 类型 描述
data.baseFileName string 基准图纸的文件名
data.baseFileInfo Array 基准图纸的描述信息,该数组中的自定义的值会显示在选项卡中
data.compareFileName string 参照图纸的文件名
data.compareFileInfo Array 参照图纸的描述信息,该数组中的自定义的值会显示在选项卡中
data.fonts Array 文件比较的字体信息
data.layouts Array 基准图纸的布局信息
data.fcmpDiffExt Array 文件比较的差异位置包围盒数据
data.fcmpErrorFlag number 文件比较的异常标识
data.fcmpRcShape number 文件比较的云线形状,0 表示矩形,1 表示多边形
data.fcmpRcMargin number 文件比较的云线大小,范围:1~25
data.fcmpHatch number 文件比较是否显示图案填充,1 表示显示,0 表示不显示
data.fcmpText number 文件比较是否显示文字,1 表示显示,0 表示不显示

返回:promise 对象,包含缺失的字体信息、缓存的 lmf 信息等

描述

ZwSetFcmpDwgInfo 方法接受包含文件比较图纸信息的 Object 对象,用于设置文件比较信息

示例

ZwCloud2D.ZwDataManager.ZwSetFcmpDwgInfo({
  baseFileName: "基准图纸.dwg",
  baseFileInfo: [
    {
      lable: "名称",
      value: "基准图纸.dwg",
    },
    {
      lable: "所有者",
      value: "小王",
    },
  ],
  compareFileName: "参照图纸.dwg",
  compareFileInfo: [
    {
      lable: "名称",
      value: "参照图纸.dwg",
    },
    {
      lable: "所有者",
      value: "小明",
    },
  ],
  fonts: [],
  layouts: [],
  fcmpDiffExt: [],
  fcmpErrorFlag: 0,
  fcmpRcShape: 0,
  fcmpRcMargin: 5,
  fcmpHatch: 1,
  fcmpText: 1,
});

# 3.20 ZwSetFcmpDwgData ()

简介

文件比较(fcmp)流程中加载 lmf 数据到 SDK 中进行读取,使用方法类似于 ZwSetDwgData()

语法

ZwCloud2D.ZwDataManager.ZwSetFcmpDwgData (fileId, arrayBuffer, timestamp)

参数

  • fileId: string lmf 数据的唯一标识
  • arrayBuffer: ArrayBuffer 图纸二进制数据,是一个 ArrayBuffer 类型的值
  • timestamp: string lmf 生成的时间戳,用于缓存比较

描述

ZwSetFcmpDwgData 方法能够进行 lmf 数据的接收与加载

示例

ZwCloud2D.ZwDataManager.ZwSetFcmpDwgData (res.layout.handleId, lmfArrayBuffer, res.timestamp)

# 3.21 ZwSetFcmpRegenData ()

简介

文件比较(fcmp)流程中加载重生成的 lmf 数据到 sdk 中

语法

ZwCloud2D.ZwDataManager.ZwSetFcmpRegenData(data:{ lmfData: fcmpLmfArrayBuffer, ...fcmpInfo, fcmpErrorFlag: 0 })

参数

data 的属性如下

data 属性 类型 描述
data.lmfData ArrayBuffer 重生成的 lmf 的数据
data.fcmpDiffExt Array 新 lmf 的文件比较的差异位置包围盒数据
data.fcmpErrorFlag number 新 lmf 的文件比较的异常标识

描述

ZwSetFcmpRegenData 方法能够加载文件比较流程中的重生成 lmf

示例

 ZwCloud2D.ZwDataManager.ZwSetFcmpRegenData({ lmfData: fcmpLmfArrayBuffer, fcmpDiffExt: [], fcmpErrorFlag: 0 });

# 3.22 ZwSetCatalogData ()

简介

加载元件库数据到 sdk 中

语法

ZwCloud2D.ZwDataManager.ZwSetCatalogData(data)

参数

data 的属性如下

data 属性 类型 描述
data.pageNum number 当前页数
data.pageSize number 每一页显示的数据条目数量
data.rows Array 元件库的数据
data.total number 元件库的总数量

示例


**描述**

ZwSetCatalogData 方法能够加载元件库的数据
 ZwCloud2D.ZwDataManager.ZwSetCatalogData(data);

# 3.23 ZwSetComponentsData ()

简介

加载元件数据到 sdk 中

语法

ZwCloud2D.ZwDataManager.ZwSetComponentsData(data)

参数

data 的属性如下

data 属性 类型 描述
data.pageNum number 当前页数
data.pageSize number 每一页显示的数据条目数量
data.rows Array 元件数据
data.total number 元件的总数量

示例


**描述**

ZwSetComponentsData 方法能够加载元件库的数据
 ZwCloud2D.ZwDataManager.ZwSetComponentsData(data);

# 3.24 ZwSetComponentThumbnailsData ()

简介

加载元件缩略图数据到 sdk 中

语法

ZwCloud2D.ZwDataManager.ZwSetComponentThumbnailsData(data:Array[])

参数

data 是{key:value}组成的数,key 表示图片的唯一标识符 id,value 是 base64 格式的图片数据

示例


**描述**

ZwSetComponentThumbnailsData 方法能够加载元件缩略图的数据
 ZwCloud2D.ZwDataManager.ZwSetComponentThumbnailsData(data);

# 3.25 ZwSetLibraryTypeList ()

简介

加载元件库类别到 sdk 中,比如图块、图层、文字样式等。

语法

ZwCloud2D.ZwDataManager.ZwSetLibraryTypeList(data)

参数

data 是一个对象数组,每一个对象均包含如下属性

data 属性 类型 描述
data.pageNum number 当前页数
data.pageSize number 每一页显示的数据条目数量
data.rows Array 元件库的数据
data.total number 元件库的总数量

示例


**描述**

ZwSetLibraryTypeList 方法能够加载元件库类别到sdk中
 ZwCloud2D.ZwDataManager.ZwSetLibraryTypeList(data);

# 3.26 ZwSetComponentDwgData ()

简介

加载元件的 dwg 二进制数据流到 sdk 中,在插入图块时会用到该方法。

语法

ZwCloud2D.ZwDataManager.ZwSetComponentDwgData(data:ArrayBuffer)

参数

data 是二进制数据流

示例


**描述**

ZwSetComponentDwgData 方法能够加载元件的dwg二进制数据流到sdk中
 ZwCloud2D.ZwDataManager.ZwSetComponentDwgData(data);

# 3.27 ZwSetCurrentLayer ()

简介

编辑模式下,将指定图层设置为当前图层。

语法

ZwCloud2D.ZwDataManager.ZwSetCurrentLayer(name:string)

参数

name 图层名称

示例


**描述**

ZwSetCurrentLayer 编辑模式下,将指定图层设置为当前图层。
 ZwCloud2D.ZwDataManager.ZwSetCurrentLayer(name);

# 3.28 ZwChangeLayerVisibility ()

简介

编辑模式下,设置指定图层是否关闭。

语法

ZwCloud2D.ZwDataManager.ZwChangeLayerVisibility(name:string, isOff:boolean)

参数

name 图层名称 | isOff 是否关闭图层

示例


**描述**

ZwChangeLayerVisibility 编辑模式下,设置指定图层是否关闭。
 ZwCloud2D.ZwDataManager.ZwChangeLayerVisibility(name, isOff);

# 3.29 ZwSetPlotStatus ()

简介

编辑模式下,设置指定图层是否要被打印。

语法

ZwCloud2D.ZwDataManager.ZwSetPlotStatus(name:string, isPlottable:boolean)

参数

name 图层名称 | isPlottable 是否要打印该图层

示例


**描述**

ZwSetPlotStatus 编辑模式下,设置指定图层是否要被打印。
 ZwCloud2D.ZwDataManager.ZwSetPlotStatus(name, isPlottable);

# 3.30 ZwSetLayerColor ()

简介

编辑模式下,设置指定图层的颜色。

语法

ZwCloud2D.ZwDataManager.ZwSetLayerColor(name:string,color:number | [number, number, number])

参数

name 图层名称 | color 一个 number 则为颜色索引格式;数组形式的三个 number 则为 rgb 格式

示例


**描述**

ZwSetLayerColor 编辑模式下,设置指定图层的颜色。
 ZwCloud2D.ZwDataManager.ZwSetLayerColor(name,number | [number, number, number]);

# 3.31 ZwSetLayerLType ()

简介

编辑模式下,设置指定图层的线型。

语法

ZwCloud2D.ZwDataManager.ZwSetLayerLType(name:string, linetypeName:string)

参数

name 图层名称 | linetypeName 线型名称

示例


**描述**

ZwSetLayerLType 编辑模式下,设置指定图层的线型。
 ZwCloud2D.ZwDataManager.ZwSetLayerLType(name, linetypeName);

# 3.32 ZwSetLayerLineWeight ()

简介

编辑模式下,设置当前图层。

语法

ZwCloud2D.ZwDataManager.ZwSetLayerLineWeight(name:string, lineWeight:number)

参数

name 图层名称 | lineWeight 线宽索引

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

示例


**描述**

ZwSetLayerLineWeight 编辑模式下,设置当前图层。
 ZwCloud2D.ZwDataManager.ZwSetLayerLineWeight(name, lineWeight);

# 3.33 ZwSetLayerName ()

简介

编辑模式下,修改指定图层的名称。

语法

ZwCloud2D.ZwDataManager.ZwSetLayerName(name:string, newName: string)

参数

name 旧图层名称 | newName 新图层名称

示例


**描述**

ZwSetLayerName 编辑模式下,修改指定图层的名称。
 ZwCloud2D.ZwDataManager.ZwSetLayerName(name, newName);

# 3.34 ZwAddLayer ()

简介

编辑模式下,新增图层。

语法

ZwCloud2D.ZwDataManager.ZwAddLayer(name?:string)

参数

name 新建图层的名称(参数可选,若不传该参数,则自动生成图层名称)

示例


**描述**

ZwAddLayer 编辑模式下,新增图层。
 ZwCloud2D.ZwDataManager.ZwAddLayer(name);

# 3.35 ZwDeleteLayer ()

简介

编辑模式下,删除指定的图层。

语法

ZwCloud2D.ZwDataManager.ZwDeleteLayer(name:string)

参数

name 图层名称

示例


**描述**

ZwDeleteLayer 编辑模式下,删除指定的图层。
 ZwCloud2D.ZwDataManager.ZwDeleteLayer(name);

# 3.36 ZwSetVersionData ()

简介

加载版本列表数据。若加载的版本列表数据为空数组,则侧边栏“版本管理”面板不显示

语法

ZwCloud2D.ZwDataManager.ZwSetVersionData(data:[])

参数

data 是一个数组

示例

let data = [
  {
    description: "",
    docId: "1759479689443524609",
    isCurrent: true,
    name: "当前",
    operateTime: 1708327678000,
    operator: "SDK超级用户",
    operatorId: 1,
    versionId: "1759479925570256896",
  },
  {
    description: "",
    docId: "1759479689443524609",
    mark: "创建版本",
    name: "v2",
    operateTime: 1708327677000,
    operator: "SDK超级用户",
    operatorId: 1,
    versionId: "1759479911817134880",
  },
  {
    description: "",
    docId: "1759479689443524689",
    isOrigin: true,
    mark: "上传图纸",
    name: "起点",
    operateTime: 1708327675000,
    operator: "SDK超级用户",
    operatorId: 1,
    versionId: "1759479911829716992",
  },
];

ZwCloud2D.ZwDataManager.ZwSetVersionData(data);

# 3.37 ZwVersionOperResult ()

简介

加载各个版本管理操作的结果

语法

ZwCloud2D.ZwDataManager.ZwVersionOperResult({type: number, res: boolean })

参数

type 是版本操作的类型。res 表示该操作是否成功 或 为该操作所需要的数据

type 值 描述
0 打开版本
1 版本对比
2 版本对比中重生成
3 退出版本对比
4 恢复版本
5 编辑版本
6 创建版本
7 删除版本
8 切换版本
9 切换结束
10 设置版本管理操作权限
13 获取版本详情

示例

const VersionOperationType = {
  Open: 0,
  Compare: 1,
  CompareRegen: 2,
  CompareExit: 3,
  Restore: 4,
  EditVersion: 5,
  CreateVersion: 6,
  Delete: 7,
  SwitchVersion: 8,
  SwitchEnd: 9,
  SetPermissions: 10,
  detailReq: 13,
};

ZwCloud2D.ZwDataManager.ZwVersionOperResult({
  type: VersionOperationType.Open,
  res: true,
});

# 3.38 ZwSetViewportInfo ()

简介

本方法用于修改当前图纸视口的信息,可用于实现自定义的平移缩放效果。

语法

ZwCloud2D.ZwDataManager.ZwSetViewportInfo(center: Array, height?:Number )

参数

center 是一个数组,可传三个数值,对应坐标系的 x、y、z 坐标,不传时参数默认为零,表示调用本方法后图纸视口中心点所在的位置, 示例

[100,100], [200,200,200]; height 是一个数字,非必填项,表示调用本方法后图纸的视口高度。

示例

ZwCloud2D.ZwDataManager.ZwSetViewportInfo([100,100],800);

# 3.39 ZwCreateEntityByJson ()

简介

本方法用于通过 json 对象创建实体。

语法

ZwCloud2D.ZwDataManager.ZwCreateEntityByJson(jsonList)

参数

jsonList 是一个 json 对象,可配置参数包括:entityList、blockList、layerList、textStyleList;

参数名 必选 类型 说明
entityList List 实体数据列表,参见具体的实体数据定义
blockList List 块数据列表,参见具体的块数据定义
layerList List 图层数据列表,参见具体的图层数据定义
textStyleList List 文字样式数据列表,参见具体的文字样式数据定义

具体数据格式可参考文档

示例 1:

ZwCloud2D.ZwDataManager.ZwCreateEntityByJson({
    "blockList": [
        [
            {
                "basePoint": [
                    0.0,
                    0.0,
                    0.0
                ],
                "blockName": "pline"
            }
        ]
    ],
    "entityList": [
        {
            "color": 256,
            "entityHandle": "564",
            "layer": "基本实体",
            "lineType": "ByLayer",
            "lineTypeScale": 1.0,
            "lineweight": -1,
            "normal": [
                0.0,
                0.0,
                1.0
            ],
            "plotType": 0,
            "point": [
                94.0,
                100.0,
                0.0
            ],
            "thickness": 0.0,
            "transparency": -1,
            "type": "ZcDbPoint"
        }
    ],
    "layerList": [
        {
            "layerColor": 7,
            "layerIsCurrentLayer": false,
            "layerIsFrozen": false,
            "layerIsHidden": false,
            "layerIsLocked": false,
            "layerIsOff": false,
            "layerIsPlottable": true,
            "layerIsReconciled": false,
            "layerLineWeight": -3,
            "layerName": "0",
            "layerPlotStyle": "Color_7",
            "layerTransparency": 0
        }
    ],
    "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
        }
    ]
});

# 3.40 ZwUpdateEntityByJson ()

简介

本方法用于通过 json 对象修改实体,使用前需要获取目标实体的 entityHandle。

语法

ZwCloud2D.ZwDataManager.ZwUpdateEntityByJson(entityList)

参数

参数名 必选 类型 说明
entityList List 实体数据列表,参见具体的实体数据定义

具体数据格式可参考文档

示例

ZwCloud2D.ZwDataManager.ZwUpdateEntityByJson(
  [
        {
            "color": 256,
            "entityHandle": "564",
            "layer": "基本实体",
            "lineType": "ByLayer",
            "lineTypeScale": 1.0,
            "lineweight": -1,
            "normal": [
                0.0,
                0.0,
                1.0
            ],
            "plotType": 0,
            "point": [
                94.0,
                100.0,
                0.0
            ],
            "thickness": 0.0,
            "transparency": -1,
            "type": "ZcDbPoint"
        }
    ]
);

# 3.41 ZwGetPoint ()

简介

本方法用于获取图纸选中点的坐标。

语法

ZwCloud2D.ZwDataManager.ZwGetPoint()

参数

描述

该方法调用后页面进入等待选点模式,用户鼠标左键点击绘图区域后,页面会退出等点模式,并返回一个 promise 对象,在返回值的 data 中包含 point 属性,point 为选中点的坐标,格式为{mX:number,mY:number,mZ:number}

示例

ZwCloud2D.ZwDataManager.ZwGetPoint().then(res=>{
  console.log(res.data.point)
  //{ "mX": 141,"mY": 207,"mZ": 0}
})

# 4 ZwMessageCallback

ZwMessageCallback 为消息回调类,处理 SDK 中数据获取与图纸加载

# 4.1 ZwEvtLogInfo ()

简介

SDK 内部触发打印事件而抛出,传递出来的打印内容,可重写。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLogInfo = function(e){ //your code };

参数

msg: string 内部打印事件抛出的打印事件说明。

描述

ZwEvtLogInfo 可被重写,自定义函数,接受打印事件对象,处理自己的逻辑

示例

ZwCloud2D.ZwMessageCallback. ZwEvtLogInfo = function(e){
             console.log(e)   // 打印log事件的内容
};

# 4.2 ZwEvtDrawEnd ()

简介

在首次加载模型空间和切换布局空间时会触发该事件,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtDrawEnd = function(){ //your code };

参数

描述

ZwEvtDrawEnd 可被重写,自定义函数,用于在首次加载模型空间和切换布局空间执行用户操作

示例

ZwCloud2D.ZwMessageCallback.ZwEvtDrawEnd = function () {
              // 用户操作
          }

# 4.3 ZwEvtChangeSetting ()

简介

内部的 pageConfig 修改后产生的回调

语法

ZwCloud2D.ZwMessageCallback.ZwEvtChangeSetting = function(setting){ //your code };

参数

setting: Object 内部使用的界面数据

描述

ZwEvtChangeSetting 可被重写,自定义函数,用于界面修改后执行用户操作

示例

ZwCloud2D.ZwMessageCallback.ZwEvtChangeSetting  = function (data) {
              // 用户操作
          }

# 4.4 ZwEvtChangeLayout()

简介

SDK 内部触发切换布局事件而抛出,传递出来的当前布局的 handleId,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtChangeLayout = function(layout){ //your code };

参数

layout: Object 内部切换布局事件抛出的布局 Object。

描述

ZwEvtLogInfo 可被重写,自定义函数,接受切换布局事件对象,处理自己的逻辑

示例

ZwCloud2D.ZwMessageCallback.ZwEvtChangeLayout = function(layout){
             console.log(layout)   // 打印当前布局的信息
};

# 4.5 ZwEvtLoadXrefData ()

简介

内部在处理到 xref 数据时产生的回调,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadXrefData = function(obj:{ handleId, xrefIds}){ //your code };

参数

obj. handleId 当前布局的 handleId obj. xrefIds 图纸包含的外部参照的 id 组成的数组

描述

ZwEvtLoadXrefData 可被重写,自定义函数,用于通知用户传入 xref 的二进制数据,可重写

示例

    ZwCloud2D.ZwMessageCallback.ZwEvtLoadXrefData = function (data) {
              // 用户操作
          }

# 4.6 ZwEvtLoadImageData ()

简介

内部在处理到 image 数据时产生的回调,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadImageData = function(arr){ //your code };

参数

obj: Array <string> 内部抛出的一个数组,包含图纸内各个 image 的存储路径

描述

ZwEvtLoadImageData 可被重写,自定义函数,用于通知用户传入 image 的二进制数据

示例

ZwCloud2D.ZwMessageCallback.ZwEvtLoadImageData = function (data) {
              // 用户操作
          }

# 4.7 ZwEvtLoadImageList ()

简介

在首次执行 image 命令时触发,用于加载图片列表,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadImageList = function( ){ //your code };

参数

描述

ZwEvtLoadImageList 可被重写,自定义函数,在首次执行 image 命令时触发,通知用户传入图片列表数据

示例

ZwCloud2D.ZwMessageCallback.ZwEvtLoadImageList= function () {
              // 用户操作
          }

# 4.8 ZwEvtPlotDwg ()

简介

在 plot 命令执行完成时触发,用于抛出用户选择的打印配置项,可重写

语法

ZwCloud2D.ZwMessageCallback.ZwEvtPlotDwg = function(obj: {filename, params}){ //your code };

参数

obj. filename 图纸的文件名 obj. params 用户选择的打印配置项

描述

ZwEvtPlotDwg 可被重写,自定义函数,在 plot 命令执行完成时触发,为用户的打印接口提供参数

示例

ZwCloud2D.ZwMessageCallback.ZwEvtPlotDwg = function (data) {
              // 用户操作
          }

# 4.9 ZwEvtLoadCommentData ()

简介

在获取评论批注数据时触发,用于抛出查询评论批注的参数

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadCommentData= function(data:any){ //your code };

参数

{layoutHandle: string, pageSize:number, pageNum:number, initial:boolean},其中 layoutHandle 表示图纸当前布局的 handle,pageSize 表示每页查询的评论数量,pageSize 表示查询的页数,initial 表示是否是初次加载评论批注数据

描述

ZwEvtLoadCommentData 在获取评论批注数据时触发,用于接收抛出查询评论批注的参数,该参数用于查询评论批注数据

示例

根据回传的布局 Id 等参数通过自定义的 getCommentData 从数据库中查询评论批注的数据

ZwCloud2D.ZwMessageCallback.ZwEvtLoadCommentData= function (data) {
    //your code: define a function and use the callback Params to query comment data
    getCommentData(data.layoutHandle, data.pageSize, data.pageNum, data.initial);
}

# 4.10 ZwEvtUpdateCommentData ()

简介

在新增、删除、回复评论时触发,用于抛出用户更新的评论数据

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadCommentData= function(data:any){ //your code };

参数

data. type 数据类型,'create'、'reply'、'delete'用于区分新增、回复、删除评论三种不同的类型,data.data 是一条用户评论批注数据

描述

ZwEvtUpdateCommentData 可被重写,自定义函数,在新增、删除、回复评论时触发,为用户的更新评论批注提供参数

示例

ZwCloud2D.ZwMessageCallback.ZwEvtUpdateCommentData= function (data) {
    // your code
    switch(data.type) {
        case 'create':
            // 补充data.data中缺失的参数,保存新增的评论数据
            addComment(data.data);
        break;
        case 'reply':
            // 补充data.data中缺失的参数,保存回复的评论数据
            replyComment(data.data);
        break;
        case 'delete':
            // 删除评论数据
            deleteComment(data.data.id);
        break;
        default: break;
    }
}

# 4.11 ZwEvtDrawCommentBubble ()

简介

绘制气泡的命令结束后触发,用于抛出绘制的单个气泡数据

语法

ZwCloud2D.ZwMessageCallback.ZwEvtDrawCommentBubble= function(data:any){ //your code };

参数

data.type 表示气泡类型,数据类型是枚举类型,其中 0 表示图钉气泡,1 表示圆形气泡,2 表示矩形气泡,3 表示多段线气泡;data.data 是气泡的详细信息,包含气泡的 id、坐标点和颜色

描述

ZwEvtDrawCommentBubble 可被重写,自定义函数,用户可使用气泡数据进行逻辑处理 示例 1:

ZwCloud2D.ZwMessageCallback.ZwEvtDrawCommentBubble= function (data) {
    // your code
}

示例 2: ZwEvtDrawCommentBubble 回调参数示例如下。

let data0 = {
    type: 0,
    data: {
        id: "cb17d0da-53c9-129f-6359-c4a24cc400d3",
        pt: {
            mX: 142.71803510380826,
            mY: 248.0451447432734,
            mZ: 0
        },
        color: "red"
    }
};
let data1 = {
    type: 1,
    data: {
        id: "70729bb9-06ba-940e-6912-53c85f75cbb7",
        center: {
            mX: 28.532307806217773,
            mY: 650.7000778453031,
            mZ: 0
        },
        endPt: {
            mX: 70.60073365269847,
            mY: 583.0901077348876,
            mZ: 0
        },
        color: "red"
    }
};
let data2 = {
    type: 2,
    data: {
        id: "59b263eb-b5ab-62db-a78e-843c5ca7dcad",
        points: [{
            mX: 13.507870003903221,
            mY: 589.0998828558136,
            mZ: 0
        }, {
            mX: 180.27912960959463,
            mY: 492.94348092100046,
            mZ: 0
        }],
        color: "red"
    }
};
let data3 = {
    type: 3,
    data :{
        id: "48b3f971-2b2a-d881-5b61-d6201de07784",
        points: [{
            mX: 54.07385207015247,
            mY: 497.4508122616948,
            mZ: 0
        }, {
            mX: 5.995651102745953,
            mY: 308.14289595253155,
            mZ: 0
        }, {
            mX: 172.76691070843736,
            mY: 550.0363445697957,
            mZ: 0
        }, {
            mX: 192.29867985144625,
            mY: 214.9913815781814,
            mZ: 0
        }],
        color: "red"
    }
}

# 4.12 ZwEvtGetCommentDataForNextPage ()

简介

点击获取下一页评论的事件回调

语法

ZwCloud2D.ZwMessageCallback.ZwEvtGetCommentDataForNextPage= function(data:any){ //your code };

参数

data.pageNum 表示当前评论列表的页数

描述

ZwEvtGetCommentDataForNextPage 可被重写,自定义函数,在点击“更多评论”图标时触发,用户可以在该事件中设置下一页的评论数据

示例

ZwCloud2D.ZwMessageCallback.ZwEvtGetCommentDataForNextPage= function (data) {
    let commentList = {...};
    let memberList = {...};
    let user = {...};
    // 设置下一页评论数据(请参考ZwSetCommentData接口说明)
    ZwCloud2D.ZwDataManager.ZwSetCommentData({commentList:commentList, memberList:memberList, user:user});
}

# 4.13 ZwEvtFileCompare ()

简介

文件比较事件的回调,有三种类型,启动文件对比、重生成。退出文件对比。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtFileCompare= function(data: {state, params}){ //your code };

参数

handle 表示当前布局的 handle

描述

ZwEvtGetLayoutHandle 可被重写,自定义函数,在切换布局时触发,用户可以在该事件中获取当前布局的 handle

示例

ZwCloud2D.ZwMessageCallback.ZwEvtGetLayoutHandle= function (handle) {
    <!-- 用户获取到当前handle后 -->
    // your code
}

# 4.14 ZwEvtFileCompare ()

简介

文件比较事件的回调,有三种类型,启动文件对比、重生成。退出文件对比。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtFileCompare= function(data: {state, params}){ //your code };

描述

ZwEvtFileCompare 可被重写,自定义函数,在文件比较触发,用户可以在该事件中获取当前布局的 handle

参数

data.state 表示文件比较的事件类型,值为"enterFcmp"或"getFcmpRegenData"或"exitFcmp"。data.params 表示文件比较重生成参数

参数示例

点击图纸对比按钮或输入 fcmp 命令,触发 ZwEvtFileCompare 回调,data.state 为"enterFcmp",参数示例如下

{
  "state": "enterFcmp",
  "params": null
}

在文件比较中,修改选项卡中的云线形状、云线尺寸、图案填充、文字参数,点击确认后触发 ZwEvtFileCompare 回调,data.state 为"getFcmpRegenData",参数示例如下

{
  "state": "getFcmpRegenData",
  "params": {
    "data": {
      //云线形状,0表示矩形,1表示多边形
      "fcmpRcShape": 0,
      //云线大小,范围:1~25
      "fcmpRcMargin": 14,
      //是否显示图案填充,1表示显示,0表示不显示
      "fcmpHatch": 1,
      //是否显示文字,1表示显示,0表示不显示
      "fcmpText": 1
    },
    //当前的视口数据
    "viewport": {
      "viewportId": "442",
      "centerPoint": [211.4844363195523, 579.4345886647325, 0],
      "viewDirection": [0, 0, 1],
      "viewCenter": [0, 0],
      "height": 22.640023719654437,
      "width": 23.336243127889823,
      "twistAngle": 0,
      "viewHeight": 22.640023719654437
    },
    "handleId": "34"
  }
}

在文件比较中,点击工具栏中的退出按钮,触发 ZwEvtFileCompare 回调,data.state 为"exitFcmp",data 参数示例如下

{
  "state": "exitFcmp",
  "params": null
}

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtFileCompare = async (data) => {
  if (data.state === "enterFcmp") {
    //示例代码,获取文件比较数据
    let fcmpInfo = await req.transferFcmp({ sourcePath, compareFilePath });

    //设置文件比较数据
    let res = await ZwCloud2D.ZwDataManager.ZwSetFcmpDwgInfo(fcmpInfo);

    //示例代码,获取文件比较的lmf显示数据
    let fcmpLmfArrayBuffer = await req.getFcmpDisplayData(
      compareFilePath,
      sourcePath
    );

    //加载文件比较的lmf显示数据
    ZwCloud2D.ZwDataManager.ZwSetFcmpDwgData(
      res.layout.handleId,
      fcmpLmfArrayBuffer,
      res.timestamp || new Date().getTime()
    );
  }
  if (data.state === "getFcmpRegenData") {
    //示例代码,获取重生成的数据
    let fcmpInfo = await req.transferFcmp({
      sourcePath,
      compareFilePath,
      ...data.params,
    });
    let fcmpLmfArrayBuffer = await req.getFcmpDisplayData(
      compareFilePath,
      sourcePath
    );

    //加载重生成的lmf显示数据和文件比较数据
    ZwCloud2D.ZwDataManager.ZwSetFcmpRegenData({
      lmfData: fcmpLmfArrayBuffer,
      ...fcmpInfo,
      fcmpErrorFlag: 0,
    });
  }
  if (data.state === "exitFcmp") {
    //示例代码,此处示例为退出文件比较的后续流程是重新加载基准图纸
    ZwCloud2D.ZwDataProcessor.ZwLoad();
  }
};

# 4.15 ZwEvtExtendButtonClick ()

简介

用户自定义按钮的回调事件。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtExtendButtonClick= function(data:{section,index,button}){ //your code };

参数

data.section 表示包含用户点击的按钮的对象,在用户设置的 extendArray 的区域索引; data.index 表示包含用户点击的按钮,在用户设置的 extendArray 的对应对象的索引; data.button 表示用户点击的按钮对象。

描述

ZwEvtExtendButtonClick 是用户自定义按钮的回调事件,用户可以通过该事件,获取用户点击的索引和按钮对象,从而实现自定义功能。

示例

ZwCloud2D.ZwMessageCallback.ZwEvtExtendButtonClick= function (data:{section,index,button}) {
    // your code
}

# 4.16 ZwEvtGetCatalogData ()

简介

触发获取元件库数据事件的回调,例如数据初始化、数据搜索等应用场景。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtGetCatalogData= function(queryParams){ //your code };

描述

ZwEvtGetCatalogData 可被重写,自定义函数,在初始化元件库面板或在元件库面板中执行搜索时触发,用户可以在该事件中获取所有的元件库数据

示例

参数

queryParams 是查询参数,包含的属性如下

queryParams 属性 类型 描述
queryParams.pageNum number 页码,默认为 1,可为空
queryParams.pageSize number 每页展示数量,默认为 10,可为空
queryParams.queryName string 查询名称关键字,可为空
queryParams.pageFlag boolean 是否分页,默认为 true,为 false 时不分页并返回全量数据

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtGetCatalogData = async (queryParams) => {
  let req = new Request();
  req.getLibraryByPage(queryParams).then((res) => {
    res && ZwCloud2D.ZwDataManager.ZwSetCatalogData(res);
  });
};

# 4.17 ZwEvtGetLibraryTypeList ()

简介

触发获取元件库包含的元件类别事件的回调,例如初始化元件数据、搜索元件等应用场景。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtGetLibraryTypeList= function(){ //your code };

描述

ZwEvtGetLibraryTypeList 可被重写,自定义函数,在初始化元件数据、搜索元件时触发,用户可以在该事件中获取所有的元件类别

示例

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtGetLibraryTypeList = async () => {
  let req = new Request();
  req.getLibraryTypeList().then((res) => {
    res && ZwCloud2D.ZwDataManager.ZwSetLibraryTypeList(res);
  });
};

# 4.18 ZwEvtGetComponents ()

简介

触发获取元件数据事件的回调,例如数据初始化、数据搜索等应用场景。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtGetComponents= function(queryParams){ //your code };

描述

ZwEvtGetComponents 可被重写,自定义函数,在初始化元件面板或在元件面板中执行搜索时触发,用户可以在该事件中获取所有的元件数据

示例

参数

queryParams 是查询参数,包含的属性如下

queryParams 属性 类型 描述
queryParams.id string 元件库 id,必填
queryParams.type number 元件类型,可为空
queryParams.pageNum number 页码,默认为 1,可为空
queryParams.pageSize number 每页展示数量,默认为 10,可为空
queryParams.queryName string 查询名称关键字,可为空
queryParams.pageFlag boolean 是否分页,默认为 true,为 false 时不分页并返回全量数据

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtGetComponents = async (queryParams) => {
  let req = new Request();
  req.getComponents(queryParams).then((res) => {
    if (res) {
      res && ZwCloud2D.ZwDataManager.ZwSetComponentsData(res);

      // 获取缩略图
      let promiseList = new Array();
      res &&
        res.rows &&
        res.rows.length > 0 &&
        res.rows.forEach((element) => {
          promiseList.push(
            new Promise((resolve, reject) => {
              req
                .getThumbnailById({ id: element.thumbnailFileId })
                .then((res) => {
                  resolve(res);
                });
            })
          );
        });
      promiseList.length > 0 &&
        Promise.all(promiseList)
          .then((finalResult) => {
            finalResult &&
              ZwCloud2D.ZwDataManager.ZwSetComponentThumbnailsData(finalResult);
          })
          .catch(() => {
            alert("缩略图获取失败");
          });
    }
  });
};

# 4.19 ZwEvtInsertComponent ()

简介

触发插入元件事件的回调,例如在元件库面板右键插入图块的应用场景。

语法

ZwCloud2D.ZwMessageCallback.ZwEvtInsertComponent= function(item){ //your code };

描述

ZwEvtInsertComponent 可被重写,自定义函数,在右键插入元件时触发,用户可以在该事件中获取当前待插入的元件信息

示例

参数

item 是当前待插入的元件,包含的属性如下

item 属性 类型 描述
item.id string 元件唯一标识符 id
item.name string 元件名称

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtInsertComponent = async (queryParams) => {
  let req = new Request();
  req.downloadComponentById({ id: item.id }).then((res) => {
    res && ZwCloud2D.ZwDataManager.ZwSetComponentDwgData(res, item.name);
  });
};

# 4.20 ZwEvtLoadVersionData ()

简介

触发此回调时,需要加载该图纸的版本列表数据

语法

ZwCloud2D.ZwMessageCallback.ZwEvtLoadVersionData= function(){ // your code };

描述

ZwEvtLoadVersionData 可被重写,自定义函数,在版本管理面板初始化的时候触发,用户需要在该事件中加载版本列表数据

示例

参数

无参数

回调用法 示例

ZwCloud2D.ZwMessageCallback.ZwEvtLoadVersionData = () => {
  let req = new Request();
  let versionList = req.getVersionList(docId);
  ZwCloud2D.ZwDataManager.ZwSetVersionData(versionList);
};

# 4.21 ZwEvtVersionOperation ()

简介

版本管理操作的回调

语法

ZwCloud2D.ZwMessageCallback.ZwEvtVersionOperation= function(OperationData){ // your code };

描述

ZwEvtVersionOperation 可被重写,自定义函数。触发版本管理的各个操作时触发,用户需要在该事件中执行各个操作的逻辑,并加载该操作的执行结果

示例

参数

OperationData: {type: number , data : any}, type 是版本操作的类型

type 值 描述
0 打开版本
1 版本对比
2 版本对比中重生成
3 退出版本对比
4 恢复版本
5 编辑版本
6 创建版本
7 删除版本
8 切换版本
9 切换结束
10 设置版本管理操作权限
13 获取版本详情

回调用法 示例

const VersionOperationType = {
  Open: 0,
  Compare: 1,
  CompareRegen: 2,
  CompareExit: 3,
  Restore: 4,
  EditVersion: 5,
  CreateVersion: 6,
  Delete: 7,
  SwitchVersion: 8,
  SwitchEnd: 9,
  SetPermissions: 10,
  detailReq: 13,
};

ZwCloud2D.ZwMessageCallback.ZwEvtLoadVersionData = (data) => {
    let req = new Request()
    let res = false
    let type = OperationData.type
    switch (type) {
        case VersionOperationType.CreateVersion:
            res = await req.createVersion({ ...OperationData.data })
            break;
        case VersionOperationType.EditVersion:
            res = await req.editVersion({ ...OperationData.data })
            break;
        case VersionOperationType.Delete:
            res = await req.deleteVersion({ ...OperationData.data })
            break;
        case VersionOperationType.SwitchVersion:
            {
                res = await req.switchVersion({
                    docId: OperationData.data.docId,
                    versionId: OperationData.data.versionId
                })
                if (!res) {
                    getVersions()
                    ZwCloud2D.ZwEditor.ZwSetLoadingState(false)
                    return
                }
                versionId = OperationData.data.versionId
                let { layouts, lmfId, xrefs, fonts } = res
                if (xrefs) {
                    let xrefPromises = [];
                    let srcMap = new Map();
                    xrefs.forEach((xrefRelation) => {
                        if (xrefRelation.fileId) {
                            xrefPromises.push(
                                new Promise((res, rej) => {
                                    req.getThumbnail(xrefRelation.fileId)
                                        .then(xrefThumb => {
                                            if (xrefThumb) {
                                                srcMap.set(xrefRelation.fileId, xrefThumb);
                                            }
                                            res(true);
                                        });
                                })
                            );
                        }
                    });
                    Promise.all(xrefPromises)
                        .then(() => {
                            let params = {
                                docName: docName,
                                xrefRelations: xrefRelations,
                                srcMap: srcMap,
                                docSize
                            };
                            ZwCloud2D.ZwDataManager.ZwSetXrefList(params);
                        })
                }
                let dwgInfo = await ZwCloud2D.ZwDataManager
                    .ZwSetDwgInfo({
                        id: docId,
                        name: docName,
                        fonts: fonts,
                        layouts: layouts
                    })
                await ZwCloud2D.ZwDataProcessor.ZwProcessFontData(dwgInfo.missingFonts)
                getVersionLmfData({ fileId: lmfId, versionId: versionId }, { type, res: versionId })
            }
            break;
        case VersionOperationType.Restore:
            res = await req.restoreVersion({ ...OperationData.data })
            break;
        case VersionOperationType.detailReq:
            res = await req.getVersionDetail(OperationData.data)
            break;
        case VersionOperationType.Compare:
            {
                let fcmpRes = await req.vcmp({
                    ...OperationData.data,
                    data: {
                        fcmpRcShape: 0,
                        fcmpRcMargin: 5,
                        fcmpHatch: 1,
                        fcmpText: 1,
                    }
                })
                let fcmpDwgInfo = {
                    ...fcmpRes,
                    baseFileName: `${fcmpRes.baseVersionName}`,
                    baseFileInfo: [
                        { lable: '版本名称', value: fcmpRes.baseVersionName },
                    ],
                    compareFileName: fcmpRes.compareVersionName,
                    compareFileInfo: [
                        { lable: '版本名称', value: fcmpRes.compareVersionName },
                    ],
                    fcmpDiffExt: fcmpRes.fcmpDiffExt,
                    fcmpErrorFlag: fcmpRes.fcmpErrorFlag,
                    fonts: (fcmpRes.fontList || []),
                    layouts: fcmpRes.layouts.map(item => ({
                        ...item,
                        isDefault: item.isDefault === 1 ? 'YES' : 'NO',
                        name: item.layoutName,
                        tabOrder: item.order
                    })),
                    fcmpRcShape: 0,
                    fcmpRcMargin: 5,
                    fcmpHatch: 1,
                    fcmpText: 1,
                    id: docId,
                }
                let res = await ZwCloud2D.ZwDataManager.ZwSetFcmpDwgInfo(fcmpDwgInfo)
                await ZwCloud2D.ZwDataProcessor.ZwProcessFontData(res.missingFonts)
                ZwCloud2D.ZwDataProcessor.ZwProcessXrefData(fcmpDwgInfo.docid, fcmpRes.baseVersionName, fcmpRes.size)
                let fcmpLmfArrayBuffer = await req.getFcmpDisplayData(fcmpRes.lmfFileId);
                ZwCloud2D.ZwDataManager.ZwSetFcmpDwgData(res.layout.handleId, fcmpLmfArrayBuffer, res.timestamp || new Date().getTime());
            }
            break;
        case VersionOperationType.CompareRegen:
            {
                if (!OperationData.data) {
                    return
                }
                let fcmpRes = await req.vcmp({
                    ...OperationData.data,
                })
                let fcmpLmfArrayBuffer = await req.getFcmpDisplayData(fcmpRes.lmfFileId);
                ZwCloud2D.ZwDataManager.ZwSetFcmpRegenData({ lmfData: fcmpLmfArrayBuffer, fcmpDiffExt: fcmpRes.fcmpDiffExt });
            }
            break;
        case VersionOperationType.CompareExit:
            ZwCloud2D.ZwMessageCallback.ZwEvtLoadVersionData({
                type: VersionOperationType.SwitchVersion,
                data: OperationData.data
            })
            break;
        default:
            break;
    }
    //加载该操作的执行结果
    ZwCloud2D.ZwDataManager.ZwVersionOperResult({ type, res })
};

# 4.22 ZwEvtEntitySelect()

回到目录

简介

实体选中或取消时的回调事件

语法

ZwCloud2D.ZwMessageCallback.ZwEvtEntitySelect = function(entities){ //your code };

参数

描述

在实体选择或取消事件时触发,会将当前图纸中选中的实体列表以数组形式抛出,用户可在本回调方法中进行自定义处理。

示例

ZwCloud2D.ZwMessageCallback.ZwEvtEntitySelect = function(entities){
             console.log(entities)   // 打印当前选中的实体信息
};