|
|
@ -6,6 +6,7 @@ import { SelectExtrudeContour, selectOutlinePosition } from "../../../../Add-on/
|
|
|
|
import { ViewChange } from "../../../../Add-on/ViewChange";
|
|
|
|
import { ViewChange } from "../../../../Add-on/ViewChange";
|
|
|
|
import { app } from "../../../../ApplicationServices/Application";
|
|
|
|
import { app } from "../../../../ApplicationServices/Application";
|
|
|
|
import { HostApplicationServices } from "../../../../ApplicationServices/HostApplicationServices";
|
|
|
|
import { HostApplicationServices } from "../../../../ApplicationServices/HostApplicationServices";
|
|
|
|
|
|
|
|
import { EntityUpdateWrap } from "../../../../Common/EntityUpdateWrap";
|
|
|
|
import { MaterialUrls } from "../../../../Common/HostUrl";
|
|
|
|
import { MaterialUrls } from "../../../../Common/HostUrl";
|
|
|
|
import { NormalMatrix } from "../../../../Common/Matrix4Utils";
|
|
|
|
import { NormalMatrix } from "../../../../Common/Matrix4Utils";
|
|
|
|
import { DirectoryId, PostJson, RequestStatus } from "../../../../Common/Request";
|
|
|
|
import { DirectoryId, PostJson, RequestStatus } from "../../../../Common/Request";
|
|
|
@ -15,12 +16,13 @@ import { inflateBase64 } from "../../../../Common/inflate";
|
|
|
|
import { CADFiler } from "../../../../DatabaseServices/CADFiler";
|
|
|
|
import { CADFiler } from "../../../../DatabaseServices/CADFiler";
|
|
|
|
import { Contour } from "../../../../DatabaseServices/Contour";
|
|
|
|
import { Contour } from "../../../../DatabaseServices/Contour";
|
|
|
|
import { Database } from "../../../../DatabaseServices/Database";
|
|
|
|
import { Database } from "../../../../DatabaseServices/Database";
|
|
|
|
|
|
|
|
import { Circle } from "../../../../DatabaseServices/Entity/Circle";
|
|
|
|
import { Curve } from "../../../../DatabaseServices/Entity/Curve";
|
|
|
|
import { Curve } from "../../../../DatabaseServices/Entity/Curve";
|
|
|
|
import { Polyline } from "../../../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { Polyline } from "../../../../DatabaseServices/Entity/Polyline";
|
|
|
|
import { DefaultParamMap, SetMaterialParams } from "../../../../DatabaseServices/IMaterialDefaultParam";
|
|
|
|
import { DefaultParamMap, SetMaterialParams } from "../../../../DatabaseServices/IMaterialDefaultParam";
|
|
|
|
import { ObjectId } from "../../../../DatabaseServices/ObjectId";
|
|
|
|
import { ObjectId } from "../../../../DatabaseServices/ObjectId";
|
|
|
|
import { PhysicalMaterialRecord } from "../../../../DatabaseServices/PhysicalMaterialRecord";
|
|
|
|
import { PhysicalMaterialRecord } from "../../../../DatabaseServices/PhysicalMaterialRecord";
|
|
|
|
import { BulkheadCeiling, BulkheadCeiling_ContourType } from "../../../../DatabaseServices/Room/Entity/Ceiling/BulkheadCeiling";
|
|
|
|
import { BulkheadCeiling, BulkheadCeiling_ContourData, BulkheadCeiling_ContourType } from "../../../../DatabaseServices/Room/Entity/Ceiling/BulkheadCeiling";
|
|
|
|
import { BulkheadCeilingShapeTemplateExtendData } from "../../../../DatabaseServices/Room/Entity/Ceiling/BulkheadCeilingShapeExtendData";
|
|
|
|
import { BulkheadCeilingShapeTemplateExtendData } from "../../../../DatabaseServices/Room/Entity/Ceiling/BulkheadCeilingShapeExtendData";
|
|
|
|
import { RoomFlatTop } from "../../../../DatabaseServices/Room/Entity/Flat/RoomFlatTop";
|
|
|
|
import { RoomFlatTop } from "../../../../DatabaseServices/Room/Entity/Flat/RoomFlatTop";
|
|
|
|
import { CommandWrap } from "../../../../Editor/CommandMachine";
|
|
|
|
import { CommandWrap } from "../../../../Editor/CommandMachine";
|
|
|
@ -35,6 +37,7 @@ import { DialogUserConfig } from "../../Board/UserConfigComponent";
|
|
|
|
import { HeadCeilingInfoConfigPanel } from "../../HeadCeiling/HeadCeilingInfoConfigPanel";
|
|
|
|
import { HeadCeilingInfoConfigPanel } from "../../HeadCeiling/HeadCeilingInfoConfigPanel";
|
|
|
|
import { ModalPosition } from "../../Modal/ModalInterface";
|
|
|
|
import { ModalPosition } from "../../Modal/ModalInterface";
|
|
|
|
import { AppToaster } from "../../Toaster";
|
|
|
|
import { AppToaster } from "../../Toaster";
|
|
|
|
|
|
|
|
import { CeilingInfoModifyPanel } from "./CeilingInfoModifyPanel";
|
|
|
|
import './ModifyModel.less';
|
|
|
|
import './ModifyModel.less';
|
|
|
|
|
|
|
|
|
|
|
|
interface RoomBaseParamsProps
|
|
|
|
interface RoomBaseParamsProps
|
|
|
@ -53,6 +56,8 @@ interface ContourData
|
|
|
|
@observer
|
|
|
|
@observer
|
|
|
|
export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}>
|
|
|
|
export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
_HeadCeilingInfoStore: HeadCeilingInfoStore = new HeadCeilingInfoStore();
|
|
|
|
|
|
|
|
|
|
|
|
//获取吊顶地面面材质 默认乳胶漆
|
|
|
|
//获取吊顶地面面材质 默认乳胶漆
|
|
|
|
SetBulkCeilingFaceDefaultMaterial()
|
|
|
|
SetBulkCeilingFaceDefaultMaterial()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -117,7 +122,8 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
date.push({
|
|
|
|
date.push({
|
|
|
|
contourType: BulkheadCeiling_ContourType.Land,
|
|
|
|
contourType: BulkheadCeiling_ContourType.Land,
|
|
|
|
contourId: NONE_CONTOUR_ID,
|
|
|
|
contourId: NONE_CONTOUR_ID,
|
|
|
|
color: 1
|
|
|
|
color: 1,
|
|
|
|
|
|
|
|
deviation: 0
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
await store.InitEditorContourItems(date);
|
|
|
|
await store.InitEditorContourItems(date);
|
|
|
@ -177,39 +183,198 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
box.expandByVector(new Vector3(1, 1, 1));
|
|
|
|
box.expandByVector(new Vector3(1, 1, 1));
|
|
|
|
let selectBox = new SelectBox(app.Viewer, AsVector2(box.min), AsVector2(box.max), SelectType.C);
|
|
|
|
let selectBox = new SelectBox(app.Viewer, AsVector2(box.min), AsVector2(box.max), SelectType.C);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let objChace: Map<number, ContourData> = new Map();
|
|
|
|
|
|
|
|
//载入UI配置
|
|
|
|
|
|
|
|
let contourStore = HeadCeilingInfoStore.GetInstance();
|
|
|
|
|
|
|
|
let config = new DialogUserConfig(contourStore, BoardModalType.BulkheadCeilingContour);
|
|
|
|
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.SetBulkCeilingFaceDefaultMaterial();
|
|
|
|
|
|
|
|
let bulkheadCeiling = new BulkheadCeiling();
|
|
|
|
|
|
|
|
bulkheadCeiling.SetMaterialAtSlot(app.Database.MaterialTable.CurBulkCeilingFaceMaterial, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let matrix = new Matrix4().setPosition(this.props.roomFlatTopEnt.BoundingBox.min.sub(useCurves[0].BoundingBox.min));
|
|
|
|
|
|
|
|
useCurves[0].ApplyMatrix(matrix);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//先根据最外圈曲线绘制吊顶
|
|
|
|
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, useCurves[0] as Curve, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let c of useCurves)
|
|
|
|
|
|
|
|
c.Erase();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//再根据内部曲线绘制吊顶
|
|
|
|
for (let g of group)
|
|
|
|
for (let g of group)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
let cu: Curve;
|
|
|
|
|
|
|
|
if (g[0] instanceof Circle)
|
|
|
|
|
|
|
|
cu = g[0];
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cu = Polyline.Combine(g);
|
|
|
|
|
|
|
|
cu.ColorIndex = g[0].ColorIndex;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (selectBox.CheckSelectTraverse(cu.GetDrawObjectFromRenderType()))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cu.ApplyMatrix(matrix);
|
|
|
|
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, cu, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
|
for (let curve of g)
|
|
|
|
for (let curve of g)
|
|
|
|
|
|
|
|
curve.Erase();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//吊顶绑定天花板
|
|
|
|
|
|
|
|
bulkheadCeiling.RelativeRoomFlatTop = this.props.roomFlatTopEnt.objectId;
|
|
|
|
|
|
|
|
app.Database.ModelSpace.Append(bulkheadCeiling);
|
|
|
|
|
|
|
|
}, "绘制吊顶");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.DestoryAll();
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//提取吊顶轮廓
|
|
|
|
|
|
|
|
_PickUpModelingOnHeadCeiling = async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let bulkheadCeiling = this.props.headCeilingEnt;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//载入UI配置
|
|
|
|
|
|
|
|
let store = HeadCeilingInfoStore.GetInstance();
|
|
|
|
|
|
|
|
let config = new DialogUserConfig(store, BoardModalType.BulkheadCeilingContour);
|
|
|
|
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await CommandWrap(async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
app.Editor.SelectCtrl.Cancel();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//视角使用俯视图
|
|
|
|
|
|
|
|
await new ViewChange(ZAxisN, true).exec();
|
|
|
|
|
|
|
|
app.Viewer.CameraCtrl.ZoomExtentsBox3(bulkheadCeiling.BoundingBox.expandByScalar(8000));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let cu: Polyline;
|
|
|
|
|
|
|
|
let paths: Curve[] = [];
|
|
|
|
|
|
|
|
let firstPath = bulkheadCeiling.ContourData[0].Path;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取吊顶轮廓信息
|
|
|
|
|
|
|
|
for (let data of bulkheadCeiling.ContourData)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let path = JigUtils.Draw(data.Path.Clone().ApplyMatrix(bulkheadCeiling.OCSNoClone));
|
|
|
|
|
|
|
|
paths.push(path);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let roomFlatTop = bulkheadCeiling.RelativeRoomFlatTop.Object as RoomFlatTop;
|
|
|
|
|
|
|
|
//天花板被拉伸,且面积大于吊顶最大轮廓 补填一个最外围的天花板轮廓
|
|
|
|
|
|
|
|
if (roomFlatTop.Area > firstPath.Area)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (selectBox.CheckSelectTraverse(curve.GetDrawObjectFromRenderType()))
|
|
|
|
let contuor = roomFlatTop.Contour.Clone();
|
|
|
|
|
|
|
|
let mtl = new Matrix4().setPosition(roomFlatTop.BoundingBox.min.sub(contuor.BoundingBox.min));
|
|
|
|
|
|
|
|
mtl.multiply(new Matrix4().setPosition(0, 0, -bulkheadCeiling.Height));
|
|
|
|
|
|
|
|
cu = JigUtils.Draw(contuor.ApplyMatrix(mtl));
|
|
|
|
|
|
|
|
paths.push(cu);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let isOk = await selectOutlinePosition(paths);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isOk)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!curve.IsClose)
|
|
|
|
//根据吊顶轮廓信息配置Store
|
|
|
|
|
|
|
|
let data: BulkheadCeilingContourData[] = [];
|
|
|
|
|
|
|
|
for (let contourData of bulkheadCeiling.ContourData)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
AppToaster.show({
|
|
|
|
data.push({
|
|
|
|
message: "内部曲线必须全是闭合多段线!",
|
|
|
|
contourType: contourData.ContourType,
|
|
|
|
timeout: 5000,
|
|
|
|
contourId: contourData.ContourId,
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
color: 0,
|
|
|
|
|
|
|
|
deviation: contourData.Deviation
|
|
|
|
});
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (cu)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
data.push({
|
|
|
|
|
|
|
|
contourType: BulkheadCeiling_ContourType.Hole,
|
|
|
|
|
|
|
|
contourId: NONE_CONTOUR_ID,
|
|
|
|
|
|
|
|
color: 0,
|
|
|
|
|
|
|
|
deviation: 0
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
store.m_Option.Height = bulkheadCeiling.Height;
|
|
|
|
|
|
|
|
await store.InitEditorContourItems(data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < paths.length; i++)
|
|
|
|
|
|
|
|
paths[i].ColorIndex = data[i].color;
|
|
|
|
|
|
|
|
app.Editor.ModalManage.RenderModeless(
|
|
|
|
|
|
|
|
HeadCeilingInfoConfigPanel,
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
store,
|
|
|
|
|
|
|
|
isNotUpdateStore: true,
|
|
|
|
|
|
|
|
directoryId: DirectoryId.CeilingContour,
|
|
|
|
|
|
|
|
configType: BoardModalType.BulkheadCeilingContour,
|
|
|
|
|
|
|
|
noClose: true
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{ canMinimize: false, position: ModalPosition.RightMid }
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.MinAll();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}, "提取吊顶轮廓");
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//已有的吊顶使用新轮廓,重新生成新吊顶
|
|
|
|
|
|
|
|
_RedoContour = async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
app.Editor.SelectCtrl.Cancel();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!app.Viewer.CameraCtrl.Direction.equals(new Vector3(0, 0, -1)))
|
|
|
|
|
|
|
|
await new ViewChange(ZAxisN, false).exec();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
|
|
|
message: "请选择该吊顶提取出来的外围轮廓!",
|
|
|
|
|
|
|
|
timeout: 5000,
|
|
|
|
|
|
|
|
intent: Intent.PRIMARY,
|
|
|
|
|
|
|
|
}, "RedoContour");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await CommandWrap(async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//获取应用的轮廓
|
|
|
|
|
|
|
|
let { contour, group, useCurves } = await SelectExtrudeContour(true, true, true);
|
|
|
|
|
|
|
|
AppToaster.dismiss("RedoContour");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!contour) return;
|
|
|
|
|
|
|
|
if (!(useCurves[0] as Curve)?.IsClose)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
AppToaster.show({
|
|
|
|
|
|
|
|
message: "选择的外围轮廓错误或没有闭合!",
|
|
|
|
|
|
|
|
timeout: 5000,
|
|
|
|
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
|
|
|
|
}, "ApplayContour");
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let objChace: Map<number, ContourData> = new Map();
|
|
|
|
let box = contour.BoundingBox.applyMatrix4(app.Viewer.DCS);
|
|
|
|
|
|
|
|
box.expandByVector(new Vector3(1, 1, 1));
|
|
|
|
|
|
|
|
let selectBox = new SelectBox(app.Viewer, AsVector2(box.min), AsVector2(box.max), SelectType.C);
|
|
|
|
|
|
|
|
|
|
|
|
//载入UI配置
|
|
|
|
//载入UI配置
|
|
|
|
let contourStore = HeadCeilingInfoStore.GetInstance();
|
|
|
|
let contourStore = HeadCeilingInfoStore.GetInstance();
|
|
|
|
|
|
|
|
let objChace: Map<number, ContourData> = new Map();
|
|
|
|
|
|
|
|
|
|
|
|
let config = new DialogUserConfig(contourStore, BoardModalType.BulkheadCeilingContour);
|
|
|
|
let config = new DialogUserConfig(contourStore, BoardModalType.BulkheadCeilingContour);
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
|
|
|
|
|
|
|
|
this.SetBulkCeilingFaceDefaultMaterial();
|
|
|
|
let bulkheadCeiling = this.props.headCeilingEnt;
|
|
|
|
let bulkheadCeiling = new BulkheadCeiling();
|
|
|
|
let roomFlatTop = bulkheadCeiling.RelativeRoomFlatTop.Object as RoomFlatTop;
|
|
|
|
bulkheadCeiling.SetMaterialAtSlot(app.Database.MaterialTable.CurBulkCeilingFaceMaterial, 0);
|
|
|
|
bulkheadCeiling.Height = contourStore.m_Option.Height;
|
|
|
|
|
|
|
|
bulkheadCeiling.ContourData = [];
|
|
|
|
|
|
|
|
|
|
|
|
let matrix = new Matrix4().setPosition(this.props.roomFlatTopEnt.BoundingBox.min.sub(useCurves[0].BoundingBox.min));
|
|
|
|
let matrix = bulkheadCeiling.OCSInv;
|
|
|
|
matrix.multiply(new Matrix4().setPosition(0, 0, -bulkheadCeiling.Height));
|
|
|
|
matrix.multiply(new Matrix4().setPosition(roomFlatTop.BoundingBox.min.sub(useCurves[0].BoundingBox.min)));
|
|
|
|
useCurves[0].ApplyMatrix(matrix);
|
|
|
|
useCurves[0].ApplyMatrix(matrix);
|
|
|
|
|
|
|
|
|
|
|
|
//先根据最外圈曲线绘制吊顶
|
|
|
|
//先根据最外圈曲线绘制吊顶
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, useCurves[0] as Curve, objChace, bulkheadCeiling);
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, useCurves[0] as Curve, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
@ -219,22 +384,25 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
//再根据内部曲线绘制吊顶
|
|
|
|
//再根据内部曲线绘制吊顶
|
|
|
|
for (let g of group)
|
|
|
|
for (let g of group)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (let curve of g)
|
|
|
|
let cu: Curve;
|
|
|
|
|
|
|
|
if (g[0] instanceof Circle)
|
|
|
|
|
|
|
|
cu = g[0];
|
|
|
|
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (selectBox.CheckSelectTraverse(curve.GetDrawObjectFromRenderType()))
|
|
|
|
cu = Polyline.Combine(g);
|
|
|
|
|
|
|
|
cu.ColorIndex = g[0].ColorIndex;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (selectBox.CheckSelectTraverse(cu.GetDrawObjectFromRenderType()))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
curve.ApplyMatrix(matrix);
|
|
|
|
cu.ApplyMatrix(matrix);
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, curve, objChace, bulkheadCeiling);
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, cu, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let curve of g)
|
|
|
|
curve.Erase();
|
|
|
|
curve.Erase();
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//吊顶绑定天花板
|
|
|
|
bulkheadCeiling.Update();
|
|
|
|
bulkheadCeiling.RelativeRoomFlatTop = this.props.roomFlatTopEnt.objectId;
|
|
|
|
}, "重做吊顶");
|
|
|
|
app.Database.ModelSpace.Append(bulkheadCeiling);
|
|
|
|
|
|
|
|
}, "绘制吊顶");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
app.Editor.ModalManage.DestoryAll();
|
|
|
|
app.Editor.ModalManage.DestoryAll();
|
|
|
@ -259,6 +427,7 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
|
|
|
|
|
|
|
|
let materials: number[] = [];//服务端的mtl_id
|
|
|
|
let materials: number[] = [];//服务端的mtl_id
|
|
|
|
let shapeMaterialSlotData: number[] = []; //轮廓顺序对应的材质序列
|
|
|
|
let shapeMaterialSlotData: number[] = []; //轮廓顺序对应的材质序列
|
|
|
|
|
|
|
|
let height = 0; //范样轮廓高度
|
|
|
|
|
|
|
|
|
|
|
|
let contourShapeId = contourStore.m_Option.Item.find(item => item.color === curve.ColorIndex && item.example.id !== NONE_CONTOUR_ID)?.example.id;
|
|
|
|
let contourShapeId = contourStore.m_Option.Item.find(item => item.color === curve.ColorIndex && item.example.id !== NONE_CONTOUR_ID)?.example.id;
|
|
|
|
//该曲线有使用吊顶截面轮廓
|
|
|
|
//该曲线有使用吊顶截面轮廓
|
|
|
@ -325,6 +494,9 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//使用范样最高高度 以基点为准
|
|
|
|
|
|
|
|
height = dbData.polyline.BoundingBox.max.y;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -362,6 +534,9 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
clonedMtls.push(app.Database.MaterialTable.GetAt(material.Name).Id);
|
|
|
|
clonedMtls.push(app.Database.MaterialTable.GetAt(material.Name).Id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!clonedMtls.length)
|
|
|
|
|
|
|
|
clonedMtls.push(app.Database.MaterialTable.CurBulkCeilingFaceMaterial as ObjectId<PhysicalMaterialRecord>);
|
|
|
|
|
|
|
|
|
|
|
|
let example = contourStore.m_Option.Item.find((item) => curve.ColorIndex === item.color).example;
|
|
|
|
let example = contourStore.m_Option.Item.find((item) => curve.ColorIndex === item.color).example;
|
|
|
|
bulkheadCeiling.ContourData.push({
|
|
|
|
bulkheadCeiling.ContourData.push({
|
|
|
|
ContourType: example.contourType,
|
|
|
|
ContourType: example.contourType,
|
|
|
@ -370,199 +545,161 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
Contour: dbData.polyline,
|
|
|
|
Contour: dbData.polyline,
|
|
|
|
ContourId: example.id,
|
|
|
|
ContourId: example.id,
|
|
|
|
Materials: clonedMtls,
|
|
|
|
Materials: clonedMtls,
|
|
|
|
ShapeMaterialSlotData: shapeMaterialSlotData
|
|
|
|
ShapeMaterialSlotData: shapeMaterialSlotData,
|
|
|
|
|
|
|
|
Deviation: example.deviation,
|
|
|
|
|
|
|
|
Height: height
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//提取吊顶轮廓
|
|
|
|
private _GetNewContourDate = async (bulkheadCeiling: BulkheadCeiling, contourStore: HeadCeilingInfoStore) =>
|
|
|
|
_PickUpModelingOnHeadCeiling = async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let bulkheadCeiling = this.props.headCeilingEnt;
|
|
|
|
let height = 0; //范样轮廓高度
|
|
|
|
|
|
|
|
let objChace: Map<number, ContourData> = new Map();
|
|
|
|
//载入UI配置
|
|
|
|
let contourDatas: BulkheadCeiling_ContourData[] = [];
|
|
|
|
let store = HeadCeilingInfoStore.GetInstance();
|
|
|
|
|
|
|
|
let config = new DialogUserConfig(store, BoardModalType.BulkheadCeilingContour);
|
|
|
|
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await CommandWrap(async () =>
|
|
|
|
for (let i = 0; i < bulkheadCeiling.ContourData.length; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
app.Editor.SelectCtrl.Cancel();
|
|
|
|
let data = bulkheadCeiling.ContourData[i];
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
let example = contourStore.m_Option.Item[i].example;
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//视角使用俯视图
|
|
|
|
|
|
|
|
await new ViewChange(ZAxisN, true).exec();
|
|
|
|
|
|
|
|
app.Viewer.CameraCtrl.ZoomExtentsBox3(bulkheadCeiling.BoundingBox.expandByScalar(8000));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let cu: Polyline;
|
|
|
|
data.Deviation = example.deviation;
|
|
|
|
let paths: Curve[] = [];
|
|
|
|
data.ContourType = example.contourType;
|
|
|
|
let firstPath = bulkheadCeiling.ContourData[0].Path;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取吊顶轮廓信息
|
|
|
|
if (data.ContourId !== example.id)
|
|
|
|
for (let data of bulkheadCeiling.ContourData)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let path = JigUtils.Draw(data.Path.Clone().ApplyMatrix(bulkheadCeiling.OCSNoClone));
|
|
|
|
data.ContourId = example.id;
|
|
|
|
paths.push(path);
|
|
|
|
if (example.id === 0)
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let roomFlatTop = bulkheadCeiling.RelativeRoomFlatTop.Object as RoomFlatTop;
|
|
|
|
|
|
|
|
//天花板被拉伸,且面积大于吊顶最大轮廓 补填一个最外围的天花板轮廓
|
|
|
|
|
|
|
|
if (roomFlatTop.Area > firstPath.Area)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let contuor = roomFlatTop.Contour.Clone();
|
|
|
|
data.Contour = undefined;
|
|
|
|
let mtl = new Matrix4().setPosition(roomFlatTop.BoundingBox.min.sub(contuor.BoundingBox.min));
|
|
|
|
data.Materials = [];
|
|
|
|
mtl.multiply(new Matrix4().setPosition(0, 0, -bulkheadCeiling.Height));
|
|
|
|
data.ShapeMaterialSlotData = [];
|
|
|
|
cu = JigUtils.Draw(contuor.ApplyMatrix(mtl));
|
|
|
|
data.Height = 300;
|
|
|
|
paths.push(cu);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let dbData: ContourData = {
|
|
|
|
|
|
|
|
polyline: undefined,
|
|
|
|
|
|
|
|
database: undefined,
|
|
|
|
|
|
|
|
extData: undefined
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
let isOk = await selectOutlinePosition(paths);
|
|
|
|
let materials: number[] = [];//服务端的mtl_id
|
|
|
|
|
|
|
|
let shapeMaterialSlotData: number[] = []; //轮廓顺序对应的材质序列
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isOk)
|
|
|
|
//该曲线有使用吊顶截面轮廓
|
|
|
|
|
|
|
|
if (!objChace.has(example.id))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//根据吊顶轮廓信息配置Store
|
|
|
|
//获取截面轮廓信息
|
|
|
|
let data: BulkheadCeilingContourData[] = [];
|
|
|
|
let db = new Database(false, false, true);
|
|
|
|
for (let contourData of bulkheadCeiling.ContourData)
|
|
|
|
let contourData = await GetCeilingContourDate(example.id.toString());
|
|
|
|
|
|
|
|
if (!contourData)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
data.push({
|
|
|
|
data.Contour = undefined;
|
|
|
|
contourType: contourData.ContourType,
|
|
|
|
data.Materials = [];
|
|
|
|
contourId: contourData.ContourId,
|
|
|
|
data.ShapeMaterialSlotData = [];
|
|
|
|
color: 0
|
|
|
|
contourDatas.push(data);
|
|
|
|
});
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
if (cu)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
data.push({
|
|
|
|
let json = inflateBase64(contourData.toplines.file);
|
|
|
|
contourType: BulkheadCeiling_ContourType.Hole,
|
|
|
|
let f = new CADFiler(JSON.parse(json));
|
|
|
|
contourId: NONE_CONTOUR_ID,
|
|
|
|
db.FileRead(f);
|
|
|
|
color: 0
|
|
|
|
dbData.polyline = Contour.Combine(db.ModelSpace.Entitys as Curve[], true) as Polyline;
|
|
|
|
});
|
|
|
|
if (dbData.polyline.Area2 > 0)
|
|
|
|
}
|
|
|
|
dbData.polyline.Reverse();
|
|
|
|
|
|
|
|
|
|
|
|
await store.InitEditorContourItems(data);
|
|
|
|
let tempF = new CADFiler(db.ExtendedData);
|
|
|
|
|
|
|
|
let extData = new BulkheadCeilingShapeTemplateExtendData;
|
|
|
|
|
|
|
|
extData.ReadFile(tempF);
|
|
|
|
|
|
|
|
|
|
|
|
for (let i = 0; i < paths.length; i++)
|
|
|
|
dbData.database = db;
|
|
|
|
paths[i].ColorIndex = data[i].color;
|
|
|
|
dbData.extData = extData;
|
|
|
|
app.Editor.ModalManage.RenderModeless(
|
|
|
|
|
|
|
|
HeadCeilingInfoConfigPanel,
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
store,
|
|
|
|
|
|
|
|
isNotUpdateStore: true,
|
|
|
|
|
|
|
|
directoryId: DirectoryId.CeilingContour,
|
|
|
|
|
|
|
|
configType: BoardModalType.BulkheadCeilingContour,
|
|
|
|
|
|
|
|
noClose: true
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{ canMinimize: false, position: ModalPosition.RightMid }
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.MinAll();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}, "提取吊顶轮廓");
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//已有的吊顶使用新轮廓,重新生成新吊顶
|
|
|
|
objChace.set(example.id, dbData);
|
|
|
|
_RedoContour = async () =>
|
|
|
|
}
|
|
|
|
{
|
|
|
|
}
|
|
|
|
app.Editor.SelectCtrl.Cancel();
|
|
|
|
else
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
dbData = objChace.get(example.id);
|
|
|
|
app.Editor.MaskManage.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!app.Viewer.CameraCtrl.Direction.equals(new Vector3(0, 0, -1)))
|
|
|
|
//使用范样最高高度 以基点为准
|
|
|
|
await new ViewChange(ZAxisN, false).exec();
|
|
|
|
height = dbData.polyline.BoundingBox.max.y;
|
|
|
|
|
|
|
|
|
|
|
|
AppToaster.show({
|
|
|
|
//收集材质id
|
|
|
|
message: "请选择该吊顶提取出来的外围轮廓!",
|
|
|
|
if (dbData.extData)
|
|
|
|
timeout: 5000,
|
|
|
|
for (let [color, mtlId] of dbData.extData.Color_MaterialId)
|
|
|
|
intent: Intent.PRIMARY,
|
|
|
|
materials.push(mtlId);
|
|
|
|
}, "RedoContour");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await CommandWrap(async () =>
|
|
|
|
//材质槽分析
|
|
|
|
|
|
|
|
for (let i = 0; i < dbData.polyline.EndParam; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//获取应用的轮廓
|
|
|
|
let param = i + 0.5;
|
|
|
|
let { contour, group, useCurves } = await SelectExtrudeContour(true, true, true);
|
|
|
|
let p = dbData.polyline.GetPointAtParam(param);
|
|
|
|
AppToaster.dismiss("RedoContour");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!contour) return;
|
|
|
|
for (let ent of dbData.database.ModelSpace.Entitys)
|
|
|
|
if (!(useCurves[0] as Curve)?.IsClose)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
AppToaster.show({
|
|
|
|
if (ent instanceof Curve && ent.PtOnCurve(p))
|
|
|
|
message: "选择的外围轮廓错误或没有闭合!",
|
|
|
|
{
|
|
|
|
timeout: 5000,
|
|
|
|
let color = ent.ColorIndex;
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
let materialId = dbData.extData.Color_MaterialId.get(color);
|
|
|
|
}, "ApplayContour");
|
|
|
|
if (materialId)
|
|
|
|
return;
|
|
|
|
shapeMaterialSlotData.push(materials.findIndex((mtlId) => mtlId === materialId));
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
shapeMaterialSlotData.push(0);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let box = contour.BoundingBox.applyMatrix4(app.Viewer.DCS);
|
|
|
|
//将材质载入到当前图纸
|
|
|
|
box.expandByVector(new Vector3(1, 1, 1));
|
|
|
|
let clonedMtls: ObjectId<PhysicalMaterialRecord>[] = [];
|
|
|
|
let selectBox = new SelectBox(app.Viewer, AsVector2(box.min), AsVector2(box.max), SelectType.C);
|
|
|
|
for (let mtlid of materials)
|
|
|
|
|
|
|
|
|
|
|
|
for (let g of group)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (let curve of g)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (selectBox.CheckSelectTraverse(curve.GetDrawObjectFromRenderType()))
|
|
|
|
if (mtlid === NONE_MATERIAL_ID)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (!curve.IsClose)
|
|
|
|
clonedMtls.push(undefined);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let mtlData = await PostJson(MaterialUrls.detail, { material_id: mtlid }, false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mtlData.err_code !== RequestStatus.Ok)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
AppToaster.show({
|
|
|
|
AppToaster.show({
|
|
|
|
message: "内部曲线必须全是闭合多段线!",
|
|
|
|
message: "截面轮廓内设置的材质已被删除或丢失,请检查!",
|
|
|
|
timeout: 5000,
|
|
|
|
timeout: 3000,
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
intent: Intent.DANGER,
|
|
|
|
});
|
|
|
|
}, "mtl_err");
|
|
|
|
return;
|
|
|
|
clonedMtls.push(undefined);
|
|
|
|
}
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//载入UI配置
|
|
|
|
|
|
|
|
let contourStore = HeadCeilingInfoStore.GetInstance();
|
|
|
|
|
|
|
|
let objChace: Map<number, ContourData> = new Map();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let config = new DialogUserConfig(contourStore, BoardModalType.BulkheadCeilingContour);
|
|
|
|
|
|
|
|
await config.LoadAndInitConfig();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let bulkheadCeiling = this.props.headCeilingEnt;
|
|
|
|
let material = MaterialIn(JSON.parse(inflateBase64(mtlData.materials.file)) as Object[]) as PhysicalMaterialRecord;
|
|
|
|
let roomFlatTop = bulkheadCeiling.RelativeRoomFlatTop.Object as RoomFlatTop;
|
|
|
|
material.Name = mtlData.materials.name;
|
|
|
|
bulkheadCeiling.ContourData = [];
|
|
|
|
app.Database.WblockCloneObejcts(
|
|
|
|
|
|
|
|
[material],
|
|
|
|
let matrix = bulkheadCeiling.OCSInv;
|
|
|
|
app.Database.MaterialTable,
|
|
|
|
matrix.multiply(new Matrix4().setPosition(roomFlatTop.BoundingBox.min.sub(useCurves[0].BoundingBox.min)));
|
|
|
|
new Map(),
|
|
|
|
matrix.multiply(new Matrix4().setPosition(0, 0, -bulkheadCeiling.Height));
|
|
|
|
DuplicateRecordCloning.Ignore
|
|
|
|
useCurves[0].ApplyMatrix(matrix);
|
|
|
|
);
|
|
|
|
|
|
|
|
clonedMtls.push(app.Database.MaterialTable.GetAt(material.Name).Id);
|
|
|
|
//先根据最外圈曲线绘制吊顶
|
|
|
|
}
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, useCurves[0] as Curve, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (let c of useCurves)
|
|
|
|
|
|
|
|
c.Erase();
|
|
|
|
|
|
|
|
//再根据内部曲线绘制吊顶
|
|
|
|
|
|
|
|
for (let g of group)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (let curve of g)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (selectBox.CheckSelectTraverse(curve.GetDrawObjectFromRenderType()))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
curve.ApplyMatrix(matrix);
|
|
|
|
|
|
|
|
await this._BuildBulkheadCeiling(contourStore, curve, objChace, bulkheadCeiling);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
curve.Erase();
|
|
|
|
data.Materials = clonedMtls;
|
|
|
|
break;
|
|
|
|
data.ContourId = example.id;
|
|
|
|
|
|
|
|
data.Contour = dbData.polyline;
|
|
|
|
|
|
|
|
data.ShapeMaterialSlotData = shapeMaterialSlotData;
|
|
|
|
|
|
|
|
data.Height = height;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
contourDatas.push(data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bulkheadCeiling.Update();
|
|
|
|
return contourDatas;
|
|
|
|
}, "重做吊顶");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app.Editor.ModalManage.ToggleShow();
|
|
|
|
|
|
|
|
app.Editor.ModalManage.DestoryAll();
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
render()
|
|
|
|
render()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
let headCeilingEnt = this.props.headCeilingEnt;
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div id="OperRoomFlatTop" className={Classes.DIALOG_CONTAINER}>
|
|
|
|
<div id="OperRoomFlatTop" className={Classes.DIALOG_CONTAINER}>
|
|
|
|
<div className={Classes.DIALOG}>
|
|
|
|
<div className={Classes.DIALOG}>
|
|
|
@ -578,15 +715,45 @@ export default class RoomFlatTopParams extends Component<RoomBaseParamsProps, {}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<div className={Classes.DIALOG_BODY}>
|
|
|
|
<div className={Classes.DIALOG_BODY}>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
headCeilingEnt &&
|
|
|
|
|
|
|
|
<CeilingInfoModifyPanel
|
|
|
|
|
|
|
|
headCeilingEnt={headCeilingEnt}
|
|
|
|
|
|
|
|
headCeilingInfoStore={this._HeadCeilingInfoStore}
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
<div className="apply_button">
|
|
|
|
|
|
|
|
<div className="button_left">
|
|
|
|
<Button
|
|
|
|
<Button
|
|
|
|
text="轮廓提取"
|
|
|
|
text="轮廓提取"
|
|
|
|
onClick={this.props.headCeilingEnt ? this._PickUpModelingOnHeadCeiling : this._PickUpModelingOnFlatTop}
|
|
|
|
onClick={this.props.headCeilingEnt ? this._PickUpModelingOnHeadCeiling : this._PickUpModelingOnFlatTop}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
<Button
|
|
|
|
<Button
|
|
|
|
text="轮廓应用"
|
|
|
|
text="拾取轮廓"
|
|
|
|
onClick={this.props.headCeilingEnt ? this._RedoContour : this._ApplayContour}
|
|
|
|
onClick={this.props.headCeilingEnt ? this._RedoContour : this._ApplayContour}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
headCeilingEnt &&
|
|
|
|
|
|
|
|
<div className="button_right">
|
|
|
|
|
|
|
|
<Button
|
|
|
|
|
|
|
|
text="应用修改的数值"
|
|
|
|
|
|
|
|
onClick={() =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
EntityUpdateWrap(headCeilingEnt, async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
await CommandWrap(async () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
headCeilingEnt.ContourData = await this._GetNewContourDate(headCeilingEnt, this._HeadCeilingInfoStore);
|
|
|
|
|
|
|
|
headCeilingEnt.Height = this._HeadCeilingInfoStore.m_Option.Height;
|
|
|
|
|
|
|
|
}, "修改吊顶");
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}}
|
|
|
|
|
|
|
|
/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div >
|
|
|
|
</div >
|
|
|
|