修复:无法捕获五金属性修改记录.

pull/1974/head
ChenX 2 years ago
parent edaf000fce
commit 32485c8e29

@ -7,6 +7,8 @@ export const ISPROXYKEY = "_isProxy";
* ,`Proxy`.
* 使`ISPROXYKEY`(使CADObject.CreateProxyArray)
*
* ! {}{}使,Object,使AutoRecordObject
*
* @param target
* @param property
* @param [descriptor]
@ -72,3 +74,69 @@ export function AutoRecord(
}
);
}
export function AutoRecordObject(
target: { WriteAllObjectRecord: () => void; },
property: string,
descriptor?: PropertyDecorator)
{
let privateKey = '__' + property;
Object.defineProperty(target, property,
{
set: function (value)
{
if (value instanceof Object)
{
if (!this[privateKey])
{
if (value[ISPROXYKEY])
this[privateKey] = value;
else
this[privateKey] = new Proxy(value, {
set: (target, key, value, receiver) =>
{
if (Reflect.get(target, key, receiver) !== value)
this.WriteAllObjectRecord();
return Reflect.set(target, key, value, receiver);
},
get: (target, key, receiver) =>
{
if (key === ISPROXYKEY)
return true;
return Reflect.get(target, key, receiver);
}
});
}
else
{
let obj = this[privateKey] as any;
for (let key in value)
{
if (obj[key] !== value[key])
{
this.WriteAllObjectRecord();
obj[key] = value[key];
}
}
}
}
else
{
let oldv = this[privateKey];
if (oldv !== value)
{
this.WriteAllObjectRecord();
this[privateKey] = value;
}
}
},
get: function ()
{
return this[privateKey];
},
enumerable: true,
configurable: true
}
);
}

@ -1,6 +1,6 @@
import { DefaultCompositeMetalsOption } from "../../Editor/DefaultConfig";
import { ICompHardwareOption } from "../../UI/Components/RightPanel/RightPanelInterface";
import { AutoRecord } from "../AutoRecord";
import { AutoRecord, AutoRecordObject } from "../AutoRecord";
import { Factory } from "../CADFactory";
import { CADFiler } from "../CADFiler";
import { CompositeEntity } from "../Entity/CompositeEntity";
@ -10,7 +10,7 @@ import { ObjectId } from "../ObjectId";
@Factory
export class HardwareCompositeEntity extends CompositeEntity
{
@AutoRecord HardwareOption: ICompHardwareOption = { ...DefaultCompositeMetalsOption };
@AutoRecordObject HardwareOption: ICompHardwareOption = { ...DefaultCompositeMetalsOption };
@AutoRecord DataList: [string, string][] = [];
@AutoRecord RelevanceBoards: ObjectId[] = [];
@AutoRecord RelevanceHardware: ObjectId[] = []; //当这个实体为复合板时,关联五金的信息

@ -7,7 +7,7 @@ import { IntersectOption } from "../../GraphicsSystem/IntersectWith";
import { FixIndex } from "../../Nest/Common/Util";
import { IToplineOption } from "../../UI/Components/RightPanel/RightPanelInterface";
import { SweepSolid } from '../3DSolid/SweepSolid';
import { AutoRecord } from "../AutoRecord";
import { AutoRecord, AutoRecordObject } from "../AutoRecord";
import { Factory } from "../CADFactory";
import { CADFiler } from "../CADFiler";
import { Curve } from "../Entity/Curve";
@ -17,7 +17,7 @@ import { Polyline } from "../Entity/Polyline";
@Factory
export class HardwareTopline extends SweepSolid
{
@AutoRecord HardwareOption: IToplineOption = { ...DefaultToplineMetalsOption };
@AutoRecordObject HardwareOption: IToplineOption = { ...DefaultToplineMetalsOption };
@AutoRecord DataList: [string, string][] = [];
private _contourRotation = 0;
get ContourRotation()

Loading…
Cancel
Save