yanchengPowerSupply/node_modules/mxdraw/dist/lib/MxModule/MxDrawObject/index.d.ts

917 lines
23 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** @module MxDrawObject */
import MxCADObject from '../MxCADObject';
import MxDbDatabase from '../MxDbDatabase';
import MxDbEntity from '../MxDbEntity';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls';
export interface MxDrawObjectType {
renderer: THREE.WebGLRenderer;
addEvent(arg0: string, arg1: (...parmes: any) => any): void;
setIniset(arg0: {
EnableOsnapFunction: boolean;
}): void;
getScene(): THREE.Scene;
getCamera(): THREE.Camera;
setMouseRightRotate(isRotate: boolean): void;
getFullDisplayRange(): object;
getCanvas(): HTMLCanvasElement;
updateDisplay(): void;
createCanvasImageData(fun: (imageData: string) => void, param?: object): void;
setViewColor(color: number): void;
setSize(width: number, height: number): void;
getIntersectObjects(ptMouse: THREE.Vector2): THREE.Intersection[];
getViewWidth(): number;
getViewHeight(): number;
zoomInitialStates(): void;
zoomScale(scale: number): void;
zoomW(minPt: THREE.Vector3, maxPt: THREE.Vector3, isWorld?: boolean): void;
zoomCenter(dCenX: number, dCenY: number): void;
initZoomW(pt1Doc: THREE.Vector3, pt2Doc: THREE.Vector3): void;
addMxEntity(ent: any): number;
eraseMxEntity(id: number): boolean;
screenCoord2World(x: number, y: number, z?: number): THREE.Vector3;
worldCoord2Screen(x: number, y: number, z: number): THREE.Vector3;
screenCoord2Doc(x: number, y: number, z: number): THREE.Vector3;
worldCoordLong2Doc(l: number): number;
docCoordLong2World(l: number): number;
docCoord2World(x: number, y: number, z: number): THREE.Vector3;
worldCoord2Doc(x: number, y: number, z: number): THREE.Vector3;
docCoord2Screen(x: number, y: number, z: number): THREE.Vector3;
screenCoordLong2Doc(l: number): number;
docCoordLong2Screen(l: number): number;
screenCoordLong2World(l: number): number;
worldCoordLong2Screen(l: number): number;
initRendererParam(param: object): void;
getMxAllSelect(): Array<number>;
addMxCurrentSelect(id: number): void;
clearMxCurrentSelect(): boolean;
getMxEntityUserObject(id: number): MxDbEntity;
findMxEntityAtPoint(ptMouse: THREE.Vector3, isDocCoord?: boolean, retWordDrawXDataCall?: (id: number, data: any) => void): Array<MxDbEntity>;
setMouseMiddlePan(isPan: boolean | number): void;
resetThreeJSControls(): void;
getAllMxEntity(): Array<MxDbEntity>;
enableZoom(isEnable: boolean): void;
enablePan(isEnable: boolean): void;
addObject(obj: THREE.Object3D | null, isAddToSelect?: boolean): void;
addViewObject(obj: THREE.Object3D): void;
removeViewObject(obj: THREE.Object3D): void;
removeObject(obj: THREE.Object3D, isRemoveSelectObject?: boolean): void;
saveMxEntityToJson(isSaveToDWG?: boolean): object;
loadMxEntityFromJson(dataString: object): Promise<boolean>;
eraseAllMxEntity(): void;
makeCurrent(): void;
getViewCenterDocCoord(): THREE.Vector3;
updateCanvasSize(): void;
}
/**
* 引入mxdraw库不会挂载MxDrawObject 只能在以下特定函数中获取
* @function
* {@link MxFun.createMxObject}中callback回调参数`mxDraw`的构造类
* @function
* {@link MxFun.getCurrentDraw} 方法返回值的构造类
* @function
* {@link MxFun.getCurrentMxCAD} 方法返回值的构造类
*
*/
export default class MxDrawObject {
private _mxdrawObj;
constructor(Mxdraw: MxDrawObjectType);
/**
* @instance
*/
renderer: THREE.WebGLRenderer;
/**
* 获取Three.js绘图场景
* @returns THREE.Scene
*/
getScene(): THREE.Scene;
/**
* 获取Three.js相机对象
* @returns THREE.Camera
*/
getCamera(): THREE.Camera;
/**
* 获取Three renderer渲染器
* @returns THREE.WebGLRenderer
*/
getRenderer(): THREE.WebGLRenderer;
/**
* 设置鼠标按下是否旋视区
* @param isRotate 是否旋视区
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().setMouseRightRotate(false)
* ```
*
*/
setMouseRightRotate(isRotate?: boolean): void;
/**
* 得到全部显示所有图形所需要的显示的范围 Three.js的坐标系。world坐标。
* @returns {minPt: value,maxPt: value}
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().getFullDisplayRange()
* ```
*/
getFullDisplayRange(): object;
/**
* 获取Canvas对象.
* @returns HTMLCanvasElement
*/
getCanvas(): HTMLCanvasElement;
/**
* 通知Three.js更新显示
* @returns void
*/
updateDisplay(): void;
/**
* 通知Three.js生成ImgeData显示I数据.
* @param fn 回调函数或者imageData
* @param param 函数载荷
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().createCanvasImageData((imageData)=> {
* console.log(imageData)
* })
* ```
*/
createCanvasImageData(fn: (imageData: string) => void, param?: object): void;
/**
* 设置视区背景色,
* @param color 如0xFFFFFF 白色
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().setViewColor(0xFFFFFF)
* ```
*/
setViewColor(color: number): void;
/**
* 设置视区背景色,
* @param width 宽度
* @param height 宽度
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().setSize(0xFFFFFF)
* ```
*/
setSize(width: number, height: number): void;
/**
* 获取某屏幕点下的绘制对象ptMouse是.,
* @param ptMouse THREE.Vector2 屏幕坐标
* @returns THREE.Intersection[]
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().getIntersectObjects(new THREE.Vector2(2, 3))
* ```
*/
getIntersectObjects(ptMouse: THREE.Vector2): THREE.Intersection[];
/**
* 添加THREE.Object3D对象到当前场景
* @param obj THREE.Object3D
* @param isAddToSelect 默认值为true 是否把对象添加选择对象集中,调用 getIntersectObjects可以找到
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().addObject(new THREE.Object3D(), false)
* ```
*/
addObject(obj: THREE.Object3D, isAddToSelect?: boolean): void;
/**
* 添加THREE.Object3D对象到视区场景对象坐标系是窗口视区坐标系。0,0点在左下角.
* @param obj THREE.Object3D
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().addViewObject(new THREE.Object3D())
* ```
*/
addViewObject(obj: THREE.Object3D): void;
/**
* 得到对象画布的宽度,单位屏幕像素
* @returns number
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().getViewWidth()
* ```
*/
getViewWidth(): number;
/**
* 得到对象画布的高度,单位屏幕像素
* @returns number
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().getViewHeight()
* ```
*/
getViewHeight(): number;
/**
* 删除addObject函数添加的THREE.Object3D对象
* @param obj THREE.Object3D
* @param isRemoveSelectObject 默认值为true 删除选择集中的对象
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().removeObject(new THREE.Object3D(), false)
* ```
*/
removeObject(obj: THREE.Object3D, isRemoveSelectObject?: boolean): void;
/**
* 把视区显示范围恢复到初始显示范围.
* @returns void
*/
zoomInitialStates(): void;
/**
* 缩放当前显示范围,它是相对于当前显示范围进行缩放
* @param scale scale缩放比例
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().zoomScale(0.8)
* ```
*/
zoomScale(scale: number): void;
/**
* 把当前显示范围移到指定的显示范围
* @param minPt 坐标1 THREE.Vector3
* @param maxPt 坐标2 THREE.Vector3
* @param isWorld 默认为felse DWG图纸坐标设置为true是THREEJS坐标
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().zoomW(new THREE.Vector3(0,10,10), new THREE.Vector3(3,8,20), true)
* ```
*/
zoomW(minPt: THREE.Vector3, maxPt: THREE.Vector3, isWorld?: boolean): void;
/**
* 把当前显示范围移到指定的位置,dCenX,dCenY是DWG图纸坐标。
* @param minPt DWG图纸坐标1 THREE.Vector3
* @param maxPt DWG图纸坐标2 THREE.Vector3
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().zoomCenter(new THREE.Vector3(0,10,10), new THREE.Vector3(3,8,20))
* ```
*/
zoomCenter(dCenX: number, dCenY: number): void;
/**
* 初始化控件默认加载后,显示视区范围,默认使用图纸转换时的显示范围。。
* @param minPt DWG文档坐标1显示区域的左下角 THREE.Vector3
* @param maxPt DWG文档坐标2显示区域的右上角 THREE.Vector3
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().initZoomW(new THREE.Vector3(0,10,10), new THREE.Vector3(3,8,20))
*
* ```
*/
initZoomW(pt1Doc: THREE.Vector3, pt2Doc: THREE.Vector3): void;
/**
* 初始化控件默认加载后,显示视区范围,默认使用图纸转换时的显示范围。。
* @param minPt DWG文档坐标1显示区域的左下角 THREE.Vector3
* @param maxPt DWG文档坐标2显示区域的右上角 THREE.Vector3
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().addEvent(new THREE.Vector3(0,10,10), new THREE.Vector3(3,8,20))
*
* ```
*/
/**
* 控件对象的事件监听
* @param eventNaem 事件名称
* @param fun 回调函数
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().addEvent("addResizeEvent", ()=> {})
* Mx.MxFun.getCurrentDraw().addEvent("viewchange", ()=> {})
* 图纸加载完成
* Mx.MxFun.getCurrentDraw().addEvent("loadComplete", ()=> {})
* 视区重绘事件.
* Mx.MxFun.getCurrentDraw().addEvent("render", (renderer)=> {})
* 视区大小被修改事件.,viewsize={viewWidth:viewWidth,viewHeight:viewHeight}
* Mx.MxFun.getCurrentDraw().addEvent("viewsizechange", (viewsize)=> {})
* 实体选择状态发生改变的事件.
* Mx.MxFun.getCurrentDraw().addEvent("MxEntitySelectChange", (aryId:Array<number>)=> {})
* ```
*/
addEvent(eventNaem: string, fun: (...parmes: any) => any): void;
/**
* 控件对象的事件监听
* @param eventNaem 事件名称
* @param fun 回调函数
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().on("addResizeEvent", ()=> {})
* Mx.MxFun.getCurrentDraw().on("viewchange", ()=> {})
* 图纸加载完成
* Mx.MxFun.getCurrentDraw().on("loadComplete", ()=> {})
* 视区重绘事件.
* Mx.MxFun.getCurrentDraw().on("render", (renderer)=> {})
* 视区大小被修改事件.,viewsize={viewWidth:viewWidth,viewHeight:viewHeight}
* Mx.MxFun.getCurrentDraw().on("viewsizechange", (viewsize)=> {})
* 实体选择状态发生改变的事件.
* Mx.MxFun.getCurrentDraw().on("MxEntitySelectChange", (aryId:Array<number>)=> {})
* ```
*/
on(eventNaem: string, fun: (...parmes: any) => any): void;
/**
* INI设置
* @param options { EnableOsnapFunction: boolean; }
* @returns void
* @example
* ```typescript
* Mx.MxFun.getCurrentDraw().setIniset(options: { EnableOsnapFunction: true })
*
* ```
*/
setIniset(options: {
EnableOsnapFunction: boolean;
}): void;
/**
* 屏幕坐标到ThreeJS坐标
* @returns THREE.Vector3
* @example
* ```typescript
*
*
* ```
*/
screenCoord2World(x: number, y: number, z?: number): THREE.Vector3;
/**
* ThreeJS坐标到屏幕坐标,屏幕坐标的Y轴向下。坐标原点在左上角.
* @returns THREE.Vector3
* @example
* ```typescript
*
*
* ```
*/
worldCoord2Screen(x: number, y: number, z: number): THREE.Vector3;
/**
* 屏幕坐标到DWG文档坐标
* @returns THREE.Vector3
* @example
* ```typescript
*
*
* ```
*/
screenCoord2Doc(x: number, y: number): THREE.Vector3;
/**
* ThreeJS坐标长度到DWG文档坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
worldCoordLong2Doc(l: number): number;
/**
* DWG文档坐标长度到ThreeJS坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
docCoordLong2World(l: number): number;
/**
* DWG文档坐标到ThreeJS坐标
* @returns number
* @example
* ```typescript
*
*
* ```
*/
docCoord2World(x: number, y: number, z: number): THREE.Vector3;
/**
* DWG文档坐标到ThreeJS坐标
* @returns THREE.Vector3
* @example
* ```typescript
*
*
* ```
*/
docCoord2World2(pt: THREE.Vector3): THREE.Vector3;
/**
* ThreeJS坐标到DWG文档坐标
* @returns number
* @example
* ```typescript
*
*
* ```
*/
worldCoord2Doc(x: number, y: number, z: number): THREE.Vector3;
/**
* ThreeJS坐标到DWG文档坐标
* @returns THREE.Vector3
* @example
* ```typescript
*
*
* ```
*/
worldCoord2Doc2(pt: THREE.Vector3): THREE.Vector3;
/**
* DWG文档坐标到屏幕坐标
* @returns number
* @example
* ```typescript
*
*
* ```
*/
docCoord2Screen(x: number, y: number): THREE.Vector3;
/**
* 屏幕坐标长度到DWG文档坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
screenCoordLong2Doc(l: number): number;
/**
* DWG文档坐标长度到屏幕坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
docCoordLong2Screen(l: number): number;
/**
* 屏幕坐标长度到ThreeJS坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
screenCoordLong2World(l: number): number;
/**
* ThreeJS坐标长度到屏幕坐标长度
* @returns number
* @example
* ```typescript
*
*
* ```
*/
worldCoordLong2Screen(l: number): number;
/**
* 初始WebGL Renderer的创建参数,该函数在MxFun.createMxObject函数调用时调用。
* @param param
* @returns void
* @example
* ```typescript
* mxObj.initRendererParam({preserveDrawingBuffer: true})
*
* ```
*/
initRendererParam(param: object): void;
/**
* 添加一个自定义实体到图上。
* @param ent 自定义实体对象
* @returns number 返回对象的id.
* @example
* ```typescript
*
*
* ```
*/
addMxEntity(ent: MxDbEntity): number;
/**
* 得到图上当前选择的对象.
* @returns Array<number> 返回对象的id数组.
* @example
* ```typescript
*
*
* ```
*/
getMxCurrentSelect(): Array<number>;
/**
* 把对象添加到当前选择中.
* @returns void
* @example
* ```typescript
*
*
* ```
*/
addMxCurrentSelect(id: number): void;
/**
* 清除当前所有选择
* @returns void
* @example
* ```typescript
*
*
* ```
*/
clearMxCurrentSelect(): boolean;
/**
*通过id获取绘制的对象.
* @param id 返回对象的id
* @returns MxDbEntity
* @example
* ```typescript
*
*
* ```
*/
getMxEntity(id: number): MxDbEntity;
/**
* 查找某点位置处的用户自绘对象.
* @param ptMouse 查找的点位 THREE.Vector3,默认是文档坐标
* @returns MxDbEntity[] 返回用户自绘对象数组
* @example
* ```typescript
*
*
* ```
*/
findMxEntityAtPoint(ptMouse: THREE.Vector3, isDocCoord?: boolean, retWordDrawXDataCall?: (id: number, data: any) => void): Array<MxDbEntity>;
/**
*得到所有用户自绘对象.
* @returns MxDbEntity[] 返回用户自绘对象数组
* @example
* ```typescript
*
*
* ```
*/
getAllMxEntity(): Array<MxDbEntity>;
/**
* 设置鼠标中键移动视区。
* @param iPan 设置是否可以鼠标中键移动视区,
* iPan = 0,中键不移动视区,左键移动
* iPan = 1,中键移动视区,左键不移动
* iPan = 2,中键移动视区,左键移动视区
* @returns
* @example
* ```typescript
*
*
* ```
*/
setMouseMiddlePan(iPan: boolean | number): void;
/**
*重新设置ThreeJS Controls状态.
* @returns
* @example
* ```typescript
*
*
* ```
*/
resetThreeJSControls(): void;
/**
* 启用或禁用鼠标中键滚动缩放视区
* @param isEnable 是否启用
* @returns
* @example
* ```typescript
*
*
* ```
*/
enableZoom(isEnable: boolean): void;
/**
* 启用或禁用鼠标移动视区
* @param isEnable 是否启用
* @returns
* @example
* ```typescript
*
*
* ```
*/
enablePan(isEnable: boolean): void;
/**
* 删除MxEntity
* @param id 实体id.
* @returns
* @example
* ```typescript
*
*
* ```
*/
eraseMxEntity(id: number): boolean;
/**
* 移除安视图坐标绘制的对象.
* @param obj 对象.
* @returns
* @example
* ```typescript
*
*
* ```
*/
removeViewObject(obj: THREE.Object3D): void;
/**
* 保存所有MxEntity的数据到json字符串.
* @param
* @returns json字符串
* @example
* ```typescript
*
*
* ```
*/
saveMxEntityToJson(isSaveToDWG?: boolean): string;
/**
* 保存所有MxEntity的数据到js对象.
* @param
* @returns js对象
* @example
* ```typescript
*
*
* ```
*/
saveMxEntityToObject(isSaveToDWG?: boolean): object;
/**
* 从json字符串恢复MxEntity
* @param dataString json字符串.
* @returns
* @example
* ```typescript
*
*
* ```
*/
loadMxEntityFromJson(dataString: string | object, aryPreloadSVG?: string[] | null): Promise<boolean>;
/**
* 删除所有的MxEntity
* @param
* @returns
* @example
* ```typescript
*
*
* ```
*/
eraseAllMxEntity(): void;
/**
* 把该控件对象,设置成当前控件.
* @param
* @returns
* @example
* ```typescript
*
*
* ```
*/
makeCurrent(): void;
/**
* 得到视区中心的文档坐标.
* @param
* @returns
* @example
* ```typescript
*
*
* ```
*/
getViewCenterDocCoord(): THREE.Vector3;
/**
* 画布大小自动修改到它父亲div大小。
* @param
* @returns
* @example
* ```typescript
*
*
* ```
*/
updateCanvasSize(): void;
/**
* 新建图纸.
* @param ptin1,ptin2新建图纸的显示范围.
* @returns
* @example
* ```typescript
*
*
* ```
*/
newFile(ptin1: THREE.Vector3 | number, ptin2: THREE.Vector3 | number, x2?: number, y2?: number): boolean;
/**
* 停止当前加载
* @example
* ```typescript
*
* ```
*/
stopAllLoading(): void;
/**
* 得到Three.js的 OrbitControls对象.
* @example
* ```typescript
*
* ```
*/
getOrbitControls(): OrbitControls;
/**
* 禁用或启用视区的移动,放大,缩小等操作.
* @example
* ```typescript
*
* ```
*/
enableViewControls(isEnable: boolean): void;
/**
* 得到当前图形数据库对象
* @example
* ```typescript
*
* ```
*/
getMxDatabase(): MxDbDatabase;
/**
* 设置鼠标中键的滚动的缩放比例,在PC上默认值4手机上默认值1.5
* 返回之前设置值。
* @example
* ```typescript
*
* ```
*/
setZoomSpeed(zoomSpeed: number): number;
/**
* 得到MxCAD对象.
* @return MxCADObject
* @example
* ``` typescript
* ```
*/
getMxCAD(): MxCADObject;
/**
* 重新计数Renderer状态, this.renderer.info.reset();
* @return
* @example
* ``` typescript
* ```
*/
resetRenderer(): any;
/**
* 设置服务器发送文件请求时,需要带的参数.;
* @return
* @example
* ``` typescript
* ``` mxobj.setRequestHeader("{'data':'value1'}");
*/
setRequestHeader(val: string): any;
/**
* 在MxCAD模式下关闭与服务器的socket连接 。
* @return
* @example
*/
closeWebSocket(): 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;
/**
* 设置视区的旋转角度
* @example
* ```typescript
*
*
* ```
*/
setViewAngle(ang: number): void;
/**
* 得到视区的旋转角度
* @example
* ```typescript
*
*
* ```
*/
getViewAngle(): number;
/**
* 得到系统变量
* @example
* ```typescript
*
*
* ```
*/
getSysVar(sName: string): any;
/**
* 设置系统变量
* @example
* ```typescript
*
*
* ```
*/
setSysVar(sName: string, val: any): void;
/**
* 是否是MxCAD模式运行.
* @example
* ```typescript
*
*
* ```
*/
isMxCAD(): boolean;
/**
* 得执行的内部MxObject对象.
* @example
* ```typescript
*
*
* ```
*/
getMxObjectImplement(): any;
/**
* 得到所有布局名
* @example
* ```typescript
*
*
* ```
*/
getAllLayoutName(): string[];
/**
* 得到数据库Json字符串数据.
* @example
* ```typescript
*
*
* ```
*/
getDtabaseJsonString(): string;
/**
* 跳转另一个布局页面.
* @example
* ```typescript
*
*
* ```
*/
gotoLayout(layout: string): void;
/**
* 初始cpp对象.
* @example
* ```typescript
*
*
* ```
*/
initMxCpp(mcppObjectImp: any): void;
/**
* 当前是否支持 opengles3
* @example
* ```typescript
*
*
* ```
*/
isWebgl2(): boolean;
/**
* 返回对象的ID.
* @example
* ```typescript
*
*
* ```
*/
getId(): number;
}