|
|
|
@ -1,9 +1,16 @@
|
|
|
|
|
import { autorun, observable } from 'mobx';
|
|
|
|
|
import { autorun, observable, action } from 'mobx';
|
|
|
|
|
import { Vector3 } from 'three';
|
|
|
|
|
import * as xaop from 'xaop';
|
|
|
|
|
import { app } from '../../ApplicationServices/Application';
|
|
|
|
|
import { Singleton } from '../../Common/Singleton';
|
|
|
|
|
import { AxisSnapMode } from '../../Editor/SnapServices';
|
|
|
|
|
import { PostJson, RequestStatus } from '../../Common/Request';
|
|
|
|
|
import { ConfigUrls } from '../../Common/HostUrl';
|
|
|
|
|
import { IndexedDbStore, StoreName } from '../../IndexedDb/IndexedDbStore';
|
|
|
|
|
import { appCache } from '../../Common/AppCache';
|
|
|
|
|
import { GetIndexDBID } from '../../Common/Utils';
|
|
|
|
|
import { ObjectSnapMode } from '../../Editor/ObjectSnapMode';
|
|
|
|
|
import { SNAPMODE } from '../../Editor/ShowSnapMenu';
|
|
|
|
|
|
|
|
|
|
//点转换为字符串.
|
|
|
|
|
function PointToString(pt: Vector3): string
|
|
|
|
@ -22,11 +29,19 @@ export enum ToolBarType
|
|
|
|
|
none = 0,//不显示
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface ISnapData
|
|
|
|
|
{
|
|
|
|
|
mode: string;
|
|
|
|
|
name: string;
|
|
|
|
|
enable: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 底部状态栏.
|
|
|
|
|
*/
|
|
|
|
|
export class DownPanelStore extends Singleton
|
|
|
|
|
{
|
|
|
|
|
private _version = 1;
|
|
|
|
|
@observable useDynInput: boolean = true;
|
|
|
|
|
@observable showType: ToolBarType = 1;
|
|
|
|
|
@observable useDynSnap: boolean = true;
|
|
|
|
@ -35,7 +50,62 @@ export class DownPanelStore extends Singleton
|
|
|
|
|
@observable fontName: string = "songti";
|
|
|
|
|
@observable progress = 1;
|
|
|
|
|
@observable isToolBarShow: boolean = true;
|
|
|
|
|
@observable isF3Checked: boolean = true;
|
|
|
|
|
@observable isF11Checked: boolean = false;
|
|
|
|
|
posEl: HTMLSpanElement;
|
|
|
|
|
@observable snapData: ISnapData[] = [
|
|
|
|
|
{
|
|
|
|
|
mode: "E",
|
|
|
|
|
name: "端点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "M",
|
|
|
|
|
name: "中点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "I",
|
|
|
|
|
name: "交点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "A",
|
|
|
|
|
name: "外观交点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "X",
|
|
|
|
|
name: "延长线",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "C",
|
|
|
|
|
name: "圆心",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "Q",
|
|
|
|
|
name: "象限点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "G",
|
|
|
|
|
name: "切点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "P",
|
|
|
|
|
name: "垂直",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode: "R",
|
|
|
|
|
name: "最近点",
|
|
|
|
|
enable: true
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
private timeId: NodeJS.Timeout;
|
|
|
|
|
private constructor()
|
|
|
|
|
{
|
|
|
|
|
super();
|
|
|
|
@ -50,10 +120,111 @@ export class DownPanelStore extends Singleton
|
|
|
|
|
app.Editor.GetPointServices.snapServices.AxisSnapMode = this.useOrtho ? AxisSnapMode.Ortho : AxisSnapMode.Polar;
|
|
|
|
|
app.Viewer.UsePass = this.usePass;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
get Config()
|
|
|
|
|
{
|
|
|
|
|
return {
|
|
|
|
|
useDynInput: this.useDynInput,
|
|
|
|
|
useDynSnap: this.useDynSnap,
|
|
|
|
|
usePass: this.usePass,
|
|
|
|
|
useOrtho: this.useOrtho,
|
|
|
|
|
isToolBarShow: this.isToolBarShow,
|
|
|
|
|
isF3Checked: this.isF3Checked,
|
|
|
|
|
isF11Checked: this.isF11Checked,
|
|
|
|
|
snapData: this.snapData.map(d => d.enable),
|
|
|
|
|
fontName: this.fontName,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
async Upload()
|
|
|
|
|
{
|
|
|
|
|
if (this.timeId)
|
|
|
|
|
clearTimeout(this.timeId);
|
|
|
|
|
|
|
|
|
|
this.timeId = setTimeout(async () =>
|
|
|
|
|
{
|
|
|
|
|
const type = DownPanelStore.name;
|
|
|
|
|
const configs = this.Config;
|
|
|
|
|
let data = await PostJson(ConfigUrls.Edit, { key: type, value: JSON.stringify(configs) });
|
|
|
|
|
|
|
|
|
|
if (data.err_code === RequestStatus.Ok)
|
|
|
|
|
{
|
|
|
|
|
let dbStore = await IndexedDbStore.CADStore();
|
|
|
|
|
await dbStore.Put(StoreName.ConfigData, GetIndexDBID(type), configs);
|
|
|
|
|
await dbStore.Put(StoreName.ConfigVersion, GetIndexDBID(type), data.version);
|
|
|
|
|
appCache.set(type, configs);
|
|
|
|
|
}
|
|
|
|
|
}, 3000);
|
|
|
|
|
}
|
|
|
|
|
@action
|
|
|
|
|
async Update()
|
|
|
|
|
{
|
|
|
|
|
const key = DownPanelStore.name;
|
|
|
|
|
let config = appCache.get(key);
|
|
|
|
|
if (!config)
|
|
|
|
|
{
|
|
|
|
|
let store = await IndexedDbStore.CADStore();
|
|
|
|
|
let version = await store.Get(StoreName.ConfigVersion, GetIndexDBID(key));
|
|
|
|
|
let data = await PostJson(ConfigUrls.Get, { key, version }, false);
|
|
|
|
|
if (data.err_code === RequestStatus.Ok && data.value && data.value !== "{}")
|
|
|
|
|
{
|
|
|
|
|
if (data.value === "CACHE")
|
|
|
|
|
{
|
|
|
|
|
config = await store.Get(StoreName.ConfigData, GetIndexDBID(key));
|
|
|
|
|
if (config)
|
|
|
|
|
appCache.set(key, JSON.parse(JSON.stringify(config)));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
store.Put(StoreName.ConfigVersion, GetIndexDBID(key), data.version);
|
|
|
|
|
config = JSON.parse(data.value);
|
|
|
|
|
appCache.set(key, JSON.parse(data.value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!config)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
this.useDynInput = config.useDynInput;
|
|
|
|
|
this.useDynSnap = config.useDynSnap;
|
|
|
|
|
this.usePass = config.usePass;
|
|
|
|
|
this.useOrtho = config.useOrtho;
|
|
|
|
|
this.isToolBarShow = config.isToolBarShow;
|
|
|
|
|
this.isF3Checked = config.isF3Checked;
|
|
|
|
|
this.isF11Checked = config.isF11Checked;
|
|
|
|
|
this.fontName = config.fontName;
|
|
|
|
|
for (let i = 0; i < config.snapData.length; i++)
|
|
|
|
|
{
|
|
|
|
|
this.snapData[i].enable = config.snapData[i];
|
|
|
|
|
}
|
|
|
|
|
this.SetSnapMode();
|
|
|
|
|
this.showType = !this.isToolBarShow ? this.showType ^ ToolBarType.toolbar : this.showType | ToolBarType.toolbar;
|
|
|
|
|
}
|
|
|
|
|
toggleToolBarShow()
|
|
|
|
|
{
|
|
|
|
|
this.showType = this.isToolBarShow ? this.showType ^ ToolBarType.toolbar : this.showType | ToolBarType.toolbar;
|
|
|
|
|
this.isToolBarShow = !this.isToolBarShow;
|
|
|
|
|
this.Upload();
|
|
|
|
|
}
|
|
|
|
|
SetSnapMode()
|
|
|
|
|
{
|
|
|
|
|
let snapServices = app.Editor.GetPointServices.snapServices;
|
|
|
|
|
if (!this.isF3Checked)
|
|
|
|
|
{
|
|
|
|
|
snapServices.SnapModeEnable = ObjectSnapMode.NotEntitySnap;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
snapServices.SnapModeEnable = ObjectSnapMode.None;
|
|
|
|
|
app.Editor.GetPointServices.snapModeCurrent = ObjectSnapMode.None;
|
|
|
|
|
for (let data of this.snapData)
|
|
|
|
|
{
|
|
|
|
|
if (data.enable === true)
|
|
|
|
|
{
|
|
|
|
|
snapServices.SnapModeEnable |= SNAPMODE[data.mode];
|
|
|
|
|
app.Editor.GetPointServices.snapModeCurrent = snapServices.SnapModeEnable;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|