/** @module MxFun */ import MxDrawObject from '../MxDrawObject'; import MxDbEntity from '../MxDbEntity'; import { MxDrawObjectType } from '../MxDrawObject'; import MxDbDatabase from '../MxDbDatabase'; import MxCADObject from '../MxCADObject'; declare let mxUiData: import("../loadCoreCode/mxUiData").MxVueInterface; interface CanvasParent extends HTMLElement { tabindex?: number; } interface CmdMangerType { McEdGetPointWorldDrawObjectClass(): any; getMrxDbgUiPrPointClass(): any; } export interface MxFunType { createMxObject(canvasId: string, arg1: string | string[], arg2: (mxDraw: MxDrawObjectType) => void, is2d: boolean | undefined, isNewCreate?: boolean, isStaticLoad?: boolean, mapBox?: any, isCPPMxCAD?: boolean): void; setMxServer(MXSERVER: string): void; addCommand(cmdName: string, fun: Function): void; sendStringToExecute(sCmd: string, ...params: any[]): boolean; call(cmd: string, param?: any, retfun?: Function): void; getCurrentDraw(): MxDrawObjectType; screenCoordLong2World(len: number): number; screenCoordLong2Doc(len: number): number; worldCoordLong2Doc(len: number): number; docCoordLong2World(len: number): number; docCoordLong2Screen(len: number): number; screenCoord2World(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; worldCoord2Screen(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; docCoord2World(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; worldCoord2Doc(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; screenCoord2Doc(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; docCoord2Screen(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; updateDisplay(): void; addWindowsEvent(fun: (type: string, event: any) => number): void; isRunningCommand(): boolean; zoomW(x1: number, y1: number, x2: number, y2: number, isWorld?: boolean): void; showLayer(idLayer: number | string, isShow: boolean, isSketch?: boolean): void; acutPrintf(sval: string, ...val: string[]): void; getCurrentMxCAD(): any; getQueryString(name: string): string; setIniset(iniObj: object): void; upDisplayForLayerData(dataLayers: any): boolean; enablStaticLoad(isStaticLoad?: boolean): void; setStaticServer(server: string): void; initUiDataObject(uiDataObj: any): void; loadImageMaterial(imageUrlPath: string, callResult: (material: THREE.MeshLambertMaterial) => void): void; initMxDbEntityType(userObject: any): void; initDynamicCreate(dynCreate: any): void; openFile(sFile: string | string[], useWebsocket: boolean): boolean; getMxJigCmdManager(): CmdMangerType; loadSVG(url: string, color?: number | string | THREE.Color, callResult?: any, loadSet?: any): void; getTHREE(): any; } declare class MxFunClass { constructor(); /** * 创建图纸展示控件实例 * @param canvasId 提供一个canvas元素或者唯一的ID或者class类亦或者Jquery选中的元素 * @paramType string | HTMLCanvasElement | JQuery * @param cadFile 提供要展示的图纸名称 * @paramType string * @param callback 图纸展示控件创建完成后的回调函数 回调参数mxDraw和dom * @paramType function * @param isNewFile 是否新建文件 * @paramType boolean * @return void * @example * ``` typescript * Mx.MxFun.createMxObject({ * canvasId: "my-app", * cadFile: "test2.dwg", * callback(mxDraw, { canvas, canvasParent }) { * console.log(mxDraw, canvas, canvasParent) * }, * isNewFile: true * }) * ``` */ createMxObject({ canvasId, cadFile, callback, isNewFile, useWebsocket, isAutoResize, mapBox, isMxCAD, userIdentitySign, isCPPMxCAD }: { canvasId?: string; cadFile?: string | string[]; callback?: (mxDraw: MxDrawObject, dom: { canvas: HTMLCanvasElement; canvasParent: CanvasParent; }) => void; isNewFile?: boolean; useWebsocket?: boolean; isAutoResize?: boolean; mapBox?: any; isMxCAD?: boolean; userIdentitySign?: string; isCPPMxCAD?: boolean; }): void; /** * 为程序设置服务器地址 * @param MXSERVER 服务器地址 * @return void * @example * ``` typescript * Mx.MxFun.setMxServer("ws://localhost:5090") * ``` */ setMxServer(MXSERVER?: string): void; /** * 设置加载dwg文件,直接使用html get协议加载数据,这样就不需要梦想后台服务器程序。 * @param isStaticLoad 是否启用html get协议加载数据文件 * @return void * @example * ``` typescript * Mx.MxFun.enablStaticLoad(true) * ``` */ enablStaticLoad(isStaticLoad?: boolean): void; /** * 设置加载dwg文件,直接使用html get协议加载数据时,使用的服务器地址。 * @param server 服务网络地址. * @return void * @example * ``` typescript * Mx.MxFun.setStaticServer("http://localhost:3000/demo"); * ``` */ setStaticServer(server: string): void; /** * 注册命令 * @param cmdName 命令名 * @param fun 命令函数 * @return void * @example * ``` typescript * Mx.MxFun.addCommand("draw", ()=> { * console.log("draw") * }) * ``` */ addCommand(cmdName: string, fun: Function): void; /** * 执行命令 * @param cmdName 命令名 * @return boolean 命令执行成功为true * @example * ``` typescript * if(Mx.MxFun.sendStringToExecute("draw")) { * console.log("成功执行draw命令") * } * ``` */ sendStringToExecute(cmdName: string, ...ages: any[]): boolean; /** * 调用后台服务程序中的NodeJS用户定义函数 后台程序使用Mx.MxFun.registFun注册用户定义函数 * @param funName 函数名 * @param param 函数参数 * @param retfun 函数返回值回调 * @return void * @example * ``` typescript * Mx.MxFun.call("getDrawObject", { * cadFile: "test.dwg" * }, (res)=> { * console.log(res) * }) * ``` */ call(funName: string, param?: any, retfun?: Function): void; /** * 获取当前绘图控件对象 * @return MxDrawObjectType 当前绘图控件对象 * @example * ``` typescript * const mxDraw = Mx.MxFun.getCurrentDraw() * mxDraw.getScene() * ``` */ getCurrentDraw(): MxDrawObject; /** * 获得到当前数据库对象. * @return MxDbDatabase * @example * ``` typescript * ``` */ getCurrentDatabase(): MxDbDatabase; /** * 屏幕坐标长度转THREE.JS坐标长度 * @param len 屏幕坐标长度 * @return number THREE.JS坐标长度 * @example * ``` typescript * const len = Mx.MxFun.screenCoordLong2World(36) * console.log(len) * ``` */ screenCoordLong2World(len: number): number; /** * 屏幕坐标长度转文档坐标长度 * @param len 屏幕坐标长度 * @return number 文档坐标长度 * @example * ``` typescript * const len = Mx.MxFun.screenCoordLong2Doc(36) * console.log(len) * ``` */ screenCoordLong2Doc(len: number): number; /** * 文档坐标长度转屏幕坐标长度 * @param len 文档坐标长度 * @return number 屏幕坐标长度 * @example * ``` typescript * const len = Mx.MxFun.docCoordLong2Screen(36) * console.log(len) * ``` */ docCoordLong2Screen(len: number): number; /** * THREE.JS坐标长度转屏幕坐标长度 * @param len THREE.JS坐标长度 * @return number 屏幕坐标长度 * @example * ``` typescript * const len = Mx.MxFun.worldCoordLong2Doc(36) * console.log(len) * ``` */ worldCoordLong2Doc(len: number): number; /** * DWG文档坐标长度到ThreeJS坐标长度 * @returns number * @example * ```typescript * * * ``` */ docCoordLong2World(l: number): number; /** * 屏幕坐标转THREE.JS坐标. * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 THREE.JS坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.screenCoord2World(36, 21, 0) * console.log(vector3) * ``` */ screenCoord2World(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; /** * THREE.JS坐标转屏幕坐标.,屏幕坐标的Y轴向下。坐标原点在左上角. * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 屏幕坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.worldCoord2Screen(36, 21, 0) * console.log(vector3) * ``` */ worldCoord2Screen(x: number | THREE.Vector3, y?: number, z?: number): THREE.Vector3; /** * 文档坐标转THREE.JS坐标 * 说明: 文档坐标,THREE.JS坐标的X轴都是从左到右,Y轴是下到上,但是屏幕像素坐标系:X轴都是从左到右,Y轴是上到下 * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 THREE.JS坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.docCoord2World(36, 21, 0) * console.log(vector3) * ``` */ docCoord2World(x: number, y: number, z: number): THREE.Vector3; /** * THREE.JS坐标转文档坐标. * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 文档坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.worldCoord2Doc(36, 21, 0) * console.log(vector3) * ``` */ worldCoord2Doc(x: number, y: number, z: number): THREE.Vector3; /** * 屏幕转文档坐标 * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 文档坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.screenCoord2Doc(36, 21, 0) * console.log(vector3) * ``` */ screenCoord2Doc(x: number | THREE.Vector3, y?: number): THREE.Vector3; /** * 文档转屏幕坐标. * @param x 坐标x * @param y 坐标y * @param z 坐标z * @return THREE.Vector3 屏幕坐标 * @example * ``` typescript * const vector3 = Mx.MxFun.docCoord2Screen(36, 21, 0) * console.log(vector3) * ``` */ docCoord2Screen(x: number | THREE.Vector3, y?: number): THREE.Vector3; /** * 更新显示,使用Three.js绘制了对象,调用该函数更新显示。 * @return void * @example * ``` typescript * Mx.MxFun.updateDisplay() * ``` */ updateDisplay(): void; /** * 设置窗口鼠标等事件的回调操作 * @param fun 参数1 type: 鼠标事件类型 "mouseup"鼠标释放 、"mousedown" 鼠标按下 参数2 event:事件对象 返回值: number 为0,表示事件往下传递,如果非0,表示事件已经被处理,不要往下传递了 * @return void * @example * ``` typescript * Mx.MxFun.addWindowsEvent((type, event)=> { * console.log(event) * if(type = "mouseup") { * console.log("鼠标释放") * }else { * console.log("鼠标按下") * } * // 事件往下传递 * // return 0 * // 事件已处理不再传递 * return -1 * }) * ``` */ addWindowsEvent(fun: (type: string, event: any) => number): void; /** * 当前是否有命令在运行 * @return boolean * @example * ``` typescript * if(Mx.MxFun.isRunningCommand()) { * // 当前已有命令在运行 * } * ``` */ isRunningCommand(): boolean; /** * 窗口缩放,把指定的范围内的图形放到视区中 * @param dLBx 矩形框范围的左下角X坐标 * @param dLBy 矩形框范围的左下角X坐标 * @param dRTx 矩形框范围的左下角X坐标 * @param dRTy 矩形框范围的左下角X坐标 * @param isWorld 传入的坐标是否是thruee.js坐标,默认传文档坐标 * @return void * @example * ``` typescript * Mx.MxFun.zoomW(21, 22, 300, 310, false) * ``` */ zoomW(dLBx: number, dLBy: number, dRTx: number, dRTy: number, isWorld?: boolean): void; /** * 显示或隐藏图层 * @param idLayer 图层id,或层名 * @param isShow 是否显示 * @param isSketch 暂不使用 * @return void * @example * ``` typescript * Mx.MxFun.showLayer(366, true, false) * Mx.MxFun.showLayer("2363", fasle, false) * ``` */ showLayer(idLayer: number | string, isShow: boolean, isSketch?: boolean): void; /** * 输出字符串到命令行. * @param sval 输出字符串 * @param ...val 剩余参数 命令cmd * @return void * @example * ``` typescript * Mx.MxFun.acutPrintf("{0}:", "draw") * ``` */ acutPrintf: ((sval: string, ...val: string[]) => void) | undefined; /** * 获取当前MxCAD对象,该函数在MxCAD模式下使用 * @return MxDrawObjectType MxCAD对象 * @example * ``` typescript * const mxcad = Mx.MxFun.getCurrentMxCAD() * console.log(mxcad) * ``` */ getCurrentMxCAD(): MxCADObject; /** * 得到地址栏参数 * @param name * @return string 地址栏参数 * @example * ``` typescript * if(Mx.MxFun.getQueryString("mousetest") === "y") * ``` */ getQueryString(name: string): string; /** * 设置控件的配制参数. * @param name * @return object 配制参数. * @example * ``` typescript * Mx.MxFun.setIniset({ * EnableIntelliSelect: true * }) * ``` */ setIniset(iniObj: object): void; /** * 更新图纸图层数据 * @param dataLayers * @return boolean 更新成功或失败 * @example * ``` typescript * if(Mx.MxFun.upDisplayForLayerData({ * * })) { * console.log("更新成功") * } * ``` */ upDisplayForLayerData(dataLayers: any): boolean; /** * 初始化插件的UI数据对象。 * @param uiDataObj * @return * @example * ``` typescript * ``` */ initUiDataObject(uiDataObj: typeof mxUiData): void; /** * 获取UI数据对象 * @param uiDataObj * @return mxUiData * @example * ``` typescript * ``` */ getUIData(): import("../loadCoreCode/mxUiData").MxVueInterface; /** * 梦想开发测试 * @param p * @return any * @example * ``` typescript * console.log(Mx.MxFun.TestMX()); * ``` */ testMX(p?: any): any; /** * 加载一个图片对象,返回Three.js材质对象,该函数具有缓存功能,下次加载同样的图片,可以直接返回. * @param p * @return any * @example * ``` typescript * * ``` */ loadImageMaterial(imageUrlPath: string, callResult?: (material: THREE.MeshLambertMaterial) => void | null): Promise; /** * 重新打开cad文件,该函数在控件创建完后,需要再次重新打开文件,调用。 * @param sFile 打的cad文件路径 * @return any * @example * ``` typescript * ``` */ openFile(sFile: string | string[], useWebsocket?: boolean): boolean; /** * 添加一个MxDbEntity实体到当前绘图对象上。 * @param ent 实体对象 * @returns number 返回对象的id. * @example * ```typescript * * * ``` */ addToCurrentSpace(ent: MxDbEntity): number; /** * 在图上选择一个对象。 * @param strPrompt 提示字符串 * @param filter 过滤条件 * @returns number 返回对象的id * @example * ```typescript * * * ``` */ selectEnt(strPrompt: string, filter?: any): Promise; /** * 监听命令行消息动态更新的数据 * 在取点对象中设置的命令以及我们提供的图形对象中是有一套命令提示和参数化绘图,而该回调函数主要用来监听消息变化 * @parma callback 回调函数中data中的msCmdTip表示命令提示 msCmdText表示当前用户输入的输入内容 msCmdDisplay表示所有的消息记录 * */ listenForCommandLineInput(callback: ((data: { msCmdTip: string; msCmdDisplay: string; msCmdText: string; }) => void) | undefined): void; /** * 设置命令行消息数据 (在监听input输入框的onKeydown事件的回调函数中调用) * @param msCmdText 用户输入的数据 input输入框输入的文本信息 * @param keyCode 按键Code input输入框的onKeydown事件的event事件对象的keyCode属性 * */ setCommandLineInputData(msCmdText: string, keyCode: number): void; /** * 监听指针(鼠标光标)移动变化的坐标信息 * @parma callback 回调函数中返回坐标信息 * */ listenForCoordTip(callback: (coordTip: string) => void): void; /** * 监听光标更新 * @parma cursorType当前使用的光标类型 * */ listenForUpdateCursor: (callback: ((cursorType: string) => void) | undefined) => void; /** * 返回mxfun.min.js中的THREE.JS对象,可以用它来创建mxfun.min.js中THREE对象。 * */ getMxFunTHREE(): any; /** * 返回mxfun.min.js中的ThreeJsTool对象 * */ getMxFunThreeTool(): any; /** * 创建十字光标图片 * */ ceneratecursor(cursorSize?: number, squareSize?: number, isRoss?: boolean, color?: string): HTMLImageElement; /** * 调用服务器后台CAD命令. * */ callCommand(cmd: string, param: string, retCall?: (param: any) => void): any; /** * CAD坐标到文档坐标. * 默认情况下,cad等于doc,当前m_isCorrectLargeCoordinates为true时,doc变成了把cad图纸修改到小范围坐标系下的坐标。 * @returns number * @example * ```typescript * * * ``` */ cadCoord2Doc(x: number, y: number, z: number): THREE.Vector3; /** * 文档坐标坐标到CAD. * 默认情况下,cad等于doc,当前m_isCorrectLargeCoordinates为true时,doc变成了把cad图纸修改到小范围坐标系下的坐标。 * @returns number * @example * ```typescript * * * ``` */ docCoord2Cad(x: number, y: number, z: number): THREE.Vector3; /** * 通过id得到对象. * @returns 返MxDbEntity * @example * ```typescript * * * ``` */ getMxEntity(id: number): MxDbEntity | undefined; /** * 得到当前鼠标位置,返回的是屏幕坐标 。 * @returns 返MxDbEntity * @example * ```typescript * * * ``` */ getCurrentMousePostion(): THREE.Vector3; /** * 停止运行当前命令 * @returns * @example * ```typescript * * * ``` */ stopRunCommand(): any; } /** * MxFun 模块 * 导出库时已实例化,只需要调用实例方法 例如: * ```typescript * Mx.MxFun.createMxObject * ``` */ declare const MxFun: MxFunClass; export default MxFun;