From d2573c0b1ca26b330bf9085aca737ccc5d4c8101 Mon Sep 17 00:00:00 2001 From: ChenX <908666218@qq.com> Date: Thu, 28 Jan 2021 10:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=BA=93,=E5=8F=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 67 + api.esm.js | 20324 ++++++++++++++++ api.esm.js.map | 1 + package.json | 11 + types/Add-on/999.d.ts | 5 + types/Add-on/999.d.ts.map | 1 + types/Add-on/ActivityLayerBoard.d.ts | 5 + types/Add-on/ActivityLayerBoard.d.ts.map | 1 + types/Add-on/AddPtOnBoard.d.ts | 19 + types/Add-on/AddPtOnBoard.d.ts.map | 1 + types/Add-on/Align.d.ts | 6 + types/Add-on/Align.d.ts.map | 1 + types/Add-on/Area.d.ts | 5 + types/Add-on/Area.d.ts.map | 1 + types/Add-on/Array.d.ts | 50 + types/Add-on/Array.d.ts.map | 1 + types/Add-on/AutoHoleFaceSetting.d.ts | 5 + types/Add-on/AutoHoleFaceSetting.d.ts.map | 1 + .../Add-on/Batch/BatchModifySealOrDrill.d.ts | 5 + .../Batch/BatchModifySealOrDrill.d.ts.map | 1 + types/Add-on/Batch/FindModeingKnifes.d.ts | 5 + types/Add-on/Batch/FindModeingKnifes.d.ts.map | 1 + types/Add-on/BoardBatchCurtail.d.ts | 5 + types/Add-on/BoardBatchCurtail.d.ts.map | 1 + .../BoardCutting/AutoCuttingReactor.d.ts | 10 + .../BoardCutting/AutoCuttingReactor.d.ts.map | 1 + types/Add-on/BoardCutting/CuttingByFace.d.ts | 9 + .../BoardCutting/CuttingByFace.d.ts.map | 1 + types/Add-on/BoardCutting/CuttingUtils.d.ts | 3 + .../Add-on/BoardCutting/CuttingUtils.d.ts.map | 1 + types/Add-on/BoardCutting/CuttingUtils2.d.ts | 5 + .../BoardCutting/CuttingUtils2.d.ts.map | 1 + .../Add-on/BoardCutting/DeleteRelevance.d.ts | 5 + .../BoardCutting/DeleteRelevance.d.ts.map | 1 + .../BoardCutting/HardwareCuttingReactor.d.ts | 8 + .../HardwareCuttingReactor.d.ts.map | 1 + types/Add-on/BoardCutting/LinearCutting.d.ts | 5 + .../BoardCutting/LinearCutting.d.ts.map | 1 + .../BoardCutting/NonAssociativeCutting.d.ts | 5 + .../NonAssociativeCutting.d.ts.map | 1 + .../Add-on/BoardCutting/ReferenceCutting.d.ts | 5 + .../BoardCutting/ReferenceCutting.d.ts.map | 1 + .../BoardCutting/ReferenceCuttingModal.d.ts | 36 + .../ReferenceCuttingModal.d.ts.map | 1 + types/Add-on/BoardEditor/Board2Regions.d.ts | 7 + .../Add-on/BoardEditor/Board2Regions.d.ts.map | 1 + .../BoardEditor/SerializeBoardData.d.ts | 11 + .../BoardEditor/SerializeBoardData.d.ts.map | 1 + .../Add-on/BoardEditor/UpdateBoardInfos.d.ts | 8 + .../BoardEditor/UpdateBoardInfos.d.ts.map | 1 + types/Add-on/BoardFindModify.d.ts | 21 + types/Add-on/BoardFindModify.d.ts.map | 1 + types/Add-on/BoolOperation.d.ts | 10 + types/Add-on/BoolOperation.d.ts.map | 1 + types/Add-on/Break.d.ts | 5 + types/Add-on/Break.d.ts.map | 1 + types/Add-on/BuyMaterial.d.ts | 5 + types/Add-on/BuyMaterial.d.ts.map | 1 + types/Add-on/ChangeColor.d.ts | 7 + types/Add-on/ChangeColor.d.ts.map | 1 + types/Add-on/ChangeColorByBoardMaterial.d.ts | 5 + .../ChangeColorByBoardMaterial.d.ts.map | 1 + types/Add-on/CheckHoles.d.ts | 10 + types/Add-on/CheckHoles.d.ts.map | 1 + types/Add-on/CheckModeling.d.ts | 7 + types/Add-on/CheckModeling.d.ts.map | 1 + types/Add-on/CombinatAttributeBrush.d.ts | 20 + types/Add-on/CombinatAttributeBrush.d.ts.map | 1 + types/Add-on/CommandFeeding.d.ts | 9 + types/Add-on/CommandFeeding.d.ts.map | 1 + types/Add-on/Command_CombineEntity.d.ts | 5 + types/Add-on/Command_CombineEntity.d.ts.map | 1 + types/Add-on/Command_CommandPanel.d.ts | 5 + types/Add-on/Command_CommandPanel.d.ts.map | 1 + types/Add-on/Command_ExportObj.d.ts | 5 + types/Add-on/Command_ExportObj.d.ts.map | 1 + types/Add-on/Command_Option.d.ts | 5 + types/Add-on/Command_Option.d.ts.map | 1 + types/Add-on/Command_SetBRXAxis.d.ts | 5 + types/Add-on/Command_SetBRXAxis.d.ts.map | 1 + types/Add-on/Conver2Polyline.d.ts | 5 + types/Add-on/Conver2Polyline.d.ts.map | 1 + types/Add-on/Copy.d.ts | 5 + types/Add-on/Copy.d.ts.map | 1 + types/Add-on/CopyClip.d.ts | 6 + types/Add-on/CopyClip.d.ts.map | 1 + types/Add-on/CopyPoint.d.ts | 4 + types/Add-on/CopyPoint.d.ts.map | 1 + types/Add-on/CostumUCS.d.ts | 6 + types/Add-on/CostumUCS.d.ts.map | 1 + types/Add-on/CreateBoardFromData.d.ts | 2 + types/Add-on/CreateBoardFromData.d.ts.map | 1 + types/Add-on/DXFLoad.d.ts | 4 + types/Add-on/DXFLoad.d.ts.map | 1 + types/Add-on/DeleteCurve.d.ts | 5 + types/Add-on/DeleteCurve.d.ts.map | 1 + types/Add-on/Dist.d.ts | 5 + types/Add-on/Dist.d.ts.map | 1 + types/Add-on/Divide.d.ts | 8 + types/Add-on/Divide.d.ts.map | 1 + types/Add-on/DrawArc.d.ts | 5 + types/Add-on/DrawArc.d.ts.map | 1 + .../DrawBoard/ActivityLayerBoardTool.d.ts | 18 + .../DrawBoard/ActivityLayerBoardTool.d.ts.map | 1 + types/Add-on/DrawBoard/BuildBoardTool.d.ts | 10 + .../Add-on/DrawBoard/BuildBoardTool.d.ts.map | 1 + .../Add-on/DrawBoard/BuildLayerNailTool.d.ts | 22 + .../DrawBoard/BuildLayerNailTool.d.ts.map | 1 + .../DrawBoard/BuildTopBottomBoardTool.d.ts | 5 + .../BuildTopBottomBoardTool.d.ts.map | 1 + types/Add-on/DrawBoard/DrawBehindBoard.d.ts | 7 + .../Add-on/DrawBoard/DrawBehindBoard.d.ts.map | 1 + types/Add-on/DrawBoard/DrawBoardTool.d.ts | 16 + types/Add-on/DrawBoard/DrawBoardTool.d.ts.map | 1 + types/Add-on/DrawBoard/DrawClosingStrip.d.ts | 9 + .../DrawBoard/DrawClosingStrip.d.ts.map | 1 + types/Add-on/DrawBoard/DrawDoor.d.ts | 5 + types/Add-on/DrawBoard/DrawDoor.d.ts.map | 1 + .../DrawDoorDrawer/DrawDoorDrawerTool.d.ts | 37 + .../DrawDoorDrawerTool.d.ts.map | 1 + .../DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts | 12 + .../DrawLeftRightOpenDoor.d.ts.map | 1 + .../DrawDoorDrawer/DrawUpDownOpenDoor.d.ts | 12 + .../DrawUpDownOpenDoor.d.ts.map | 1 + types/Add-on/DrawBoard/DrawDrawer.d.ts | 15 + types/Add-on/DrawBoard/DrawDrawer.d.ts.map | 1 + types/Add-on/DrawBoard/DrawLayerBoard.d.ts | 5 + .../Add-on/DrawBoard/DrawLayerBoard.d.ts.map | 1 + .../Add-on/DrawBoard/DrawLeftRightBoard.d.ts | 8 + .../DrawBoard/DrawLeftRightBoard.d.ts.map | 1 + types/Add-on/DrawBoard/DrawSingleBoard.d.ts | 5 + .../Add-on/DrawBoard/DrawSingleBoard.d.ts.map | 1 + .../DrawBoard/DrawSpecialShapeBoardTool.d.ts | 27 + .../DrawSpecialShapeBoardTool.d.ts.map | 1 + .../DrawBoard/DrawSpecialShapedBoard.d.ts | 7 + .../DrawBoard/DrawSpecialShapedBoard.d.ts.map | 1 + .../DrawSpecialShapedBoardByContour.d.ts | 5 + .../DrawSpecialShapedBoardByContour.d.ts.map | 1 + .../DrawBoard/DrawTemplateByImport.d.ts | 8 + .../DrawBoard/DrawTemplateByImport.d.ts.map | 1 + .../Add-on/DrawBoard/DrawTopBottomBoard.d.ts | 5 + .../DrawBoard/DrawTopBottomBoard.d.ts.map | 1 + types/Add-on/DrawBoard/DrawVerticalBoard.d.ts | 7 + .../DrawBoard/DrawVerticalBoard.d.ts.map | 1 + .../Add-on/DrawBoard/EditorBoardTempate.d.ts | 5 + .../DrawBoard/EditorBoardTempate.d.ts.map | 1 + types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts | 7 + .../DrawBoard/FindMaxSizeBoard.d.ts.map | 1 + .../DrawBoard/FixIntersectSelfContour.d.ts | 5 + .../FixIntersectSelfContour.d.ts.map | 1 + types/Add-on/DrawBoard/ParseHinge.d.ts | 5 + types/Add-on/DrawBoard/ParseHinge.d.ts.map | 1 + types/Add-on/DrawBoard/SetHoleType.d.ts | 5 + types/Add-on/DrawBoard/SetHoleType.d.ts.map | 1 + types/Add-on/DrawCircle.d.ts | 10 + types/Add-on/DrawCircle.d.ts.map | 1 + types/Add-on/DrawCylinder.d.ts | 5 + types/Add-on/DrawCylinder.d.ts.map | 1 + types/Add-on/DrawDim/AutoDimBrs.d.ts | 43 + types/Add-on/DrawDim/AutoDimBrs.d.ts.map | 1 + types/Add-on/DrawDim/Command_DimContinue.d.ts | 9 + .../DrawDim/Command_DimContinue.d.ts.map | 1 + types/Add-on/DrawDim/DeleteDim.d.ts | 5 + types/Add-on/DrawDim/DeleteDim.d.ts.map | 1 + types/Add-on/DrawDim/DimContinue.d.ts | 29 + types/Add-on/DrawDim/DimContinue.d.ts.map | 1 + types/Add-on/DrawDim/DimContinueAligen.d.ts | 28 + .../Add-on/DrawDim/DimContinueAligen.d.ts.map | 1 + .../DrawDim/DimContinueLineAngular.d.ts | 32 + .../DrawDim/DimContinueLineAngular.d.ts.map | 1 + types/Add-on/DrawDim/Draw2LineAngularDim.d.ts | 6 + .../DrawDim/Draw2LineAngularDim.d.ts.map | 1 + .../Add-on/DrawDim/DrawAlignedDimension.d.ts | 14 + .../DrawDim/DrawAlignedDimension.d.ts.map | 1 + types/Add-on/DrawDim/DrawDiameterDim.d.ts | 5 + types/Add-on/DrawDim/DrawDiameterDim.d.ts.map | 1 + types/Add-on/DrawDim/DrawLinearDimension.d.ts | 5 + .../DrawDim/DrawLinearDimension.d.ts.map | 1 + types/Add-on/DrawDim/DrawRadiusDim.d.ts | 11 + types/Add-on/DrawDim/DrawRadiusDim.d.ts.map | 1 + types/Add-on/DrawDim/FastDim.d.ts | 5 + types/Add-on/DrawDim/FastDim.d.ts.map | 1 + types/Add-on/DrawDrilling/CheckDrawHole.d.ts | 5 + .../DrawDrilling/CheckDrawHole.d.ts.map | 1 + types/Add-on/DrawDrilling/CheckHasHole.d.ts | 5 + .../Add-on/DrawDrilling/CheckHasHole.d.ts.map | 1 + types/Add-on/DrawDrilling/CollisionModal.d.ts | 16 + .../DrawDrilling/CollisionModal.d.ts.map | 1 + types/Add-on/DrawDrilling/DeleteDrill.d.ts | 6 + .../Add-on/DrawDrilling/DeleteDrill.d.ts.map | 1 + types/Add-on/DrawDrilling/DrawDrilling.d.ts | 5 + .../Add-on/DrawDrilling/DrawDrilling.d.ts.map | 1 + .../Add-on/DrawDrilling/DrawDrillingTool.d.ts | 60 + .../DrawDrilling/DrawDrillingTool.d.ts.map | 1 + types/Add-on/DrawDrilling/DrillConfig.d.ts | 5 + .../Add-on/DrawDrilling/DrillConfig.d.ts.map | 1 + .../Add-on/DrawDrilling/DrillingReactor.d.ts | 8 + .../DrawDrilling/DrillingReactor.d.ts.map | 1 + types/Add-on/DrawDrilling/HoleUtils.d.ts | 20 + types/Add-on/DrawDrilling/HoleUtils.d.ts.map | 1 + .../Add-on/DrawDrilling/ReverseDrillFace.d.ts | 5 + .../DrawDrilling/ReverseDrillFace.d.ts.map | 1 + .../DrawDrilling/ShowDrillingTemplate.d.ts | 5 + .../ShowDrillingTemplate.d.ts.map | 1 + types/Add-on/DrawEllipse.d.ts | 8 + types/Add-on/DrawEllipse.d.ts.map | 1 + types/Add-on/DrawExtrude.d.ts | 11 + types/Add-on/DrawExtrude.d.ts.map | 1 + types/Add-on/DrawFloor.d.ts | 20 + types/Add-on/DrawFloor.d.ts.map | 1 + types/Add-on/DrawGripStretch.d.ts | 8 + types/Add-on/DrawGripStretch.d.ts.map | 1 + types/Add-on/DrawLight/DrawPointLight.d.ts | 8 + .../Add-on/DrawLight/DrawPointLight.d.ts.map | 1 + types/Add-on/DrawLight/DrawRectAreaLight.d.ts | 6 + .../DrawLight/DrawRectAreaLight.d.ts.map | 1 + types/Add-on/DrawLight/DrawSpotLight.d.ts | 11 + types/Add-on/DrawLight/DrawSpotLight.d.ts.map | 1 + types/Add-on/DrawLine.d.ts | 8 + types/Add-on/DrawLine.d.ts.map | 1 + types/Add-on/DrawPoint.d.ts | 5 + types/Add-on/DrawPoint.d.ts.map | 1 + types/Add-on/DrawPolyline.d.ts | 14 + types/Add-on/DrawPolyline.d.ts.map | 1 + types/Add-on/DrawRect.d.ts | 5 + types/Add-on/DrawRect.d.ts.map | 1 + types/Add-on/DrawRegion.d.ts | 9 + types/Add-on/DrawRegion.d.ts.map | 1 + types/Add-on/DrawRevolve.d.ts | 5 + types/Add-on/DrawRevolve.d.ts.map | 1 + types/Add-on/DrawSky.d.ts | 5 + types/Add-on/DrawSky.d.ts.map | 1 + types/Add-on/DrawSphere.d.ts | 5 + types/Add-on/DrawSphere.d.ts.map | 1 + types/Add-on/DrawSpline.d.ts | 6 + types/Add-on/DrawSpline.d.ts.map | 1 + types/Add-on/DrawTestReg.d.ts | 15 + types/Add-on/DrawTestReg.d.ts.map | 1 + types/Add-on/DrawText.d.ts | 5 + types/Add-on/DrawText.d.ts.map | 1 + types/Add-on/DrawTopline.d.ts | 4 + types/Add-on/DrawTopline.d.ts.map | 1 + types/Add-on/DrawViewport.d.ts | 18 + types/Add-on/DrawViewport.d.ts.map | 1 + .../DrawWineRack/ConfigureWineRack.d.ts | 5 + .../DrawWineRack/ConfigureWineRack.d.ts.map | 1 + .../DrawWineRack/DrawObliqueWineRackTool.d.ts | 54 + .../DrawObliqueWineRackTool.d.ts.map | 1 + .../DrawWineRack/DrawUprightWineRackTool.d.ts | 13 + .../DrawUprightWineRackTool.d.ts.map | 1 + .../Add-on/DrawWineRack/DrawWinRackTool.d.ts | 19 + .../DrawWineRack/DrawWinRackTool.d.ts.map | 1 + types/Add-on/DrawWineRack/DrawWineRack.d.ts | 5 + .../Add-on/DrawWineRack/DrawWineRack.d.ts.map | 1 + types/Add-on/DrawWineRack/EditorWineRack.d.ts | 5 + .../DrawWineRack/EditorWineRack.d.ts.map | 1 + .../DrawWineRack/Polyline2Winerack.d.ts | 6 + .../DrawWineRack/Polyline2Winerack.d.ts.map | 1 + .../DrawWineRack/Rect2WinerackTool.d.ts | 8 + .../DrawWineRack/Rect2WinerackTool.d.ts.map | 1 + types/Add-on/DrawZeroCircle.d.ts | 5 + types/Add-on/DrawZeroCircle.d.ts.map | 1 + types/Add-on/EndTempEditor.d.ts | 5 + types/Add-on/EndTempEditor.d.ts.map | 1 + types/Add-on/EntityMoveToZ0.d.ts | 5 + types/Add-on/EntityMoveToZ0.d.ts.map | 1 + types/Add-on/Entsel.d.ts | 5 + types/Add-on/Entsel.d.ts.map | 1 + types/Add-on/Erase.d.ts | 5 + types/Add-on/Erase.d.ts.map | 1 + types/Add-on/EraseLineAndArc.d.ts | 5 + types/Add-on/EraseLineAndArc.d.ts.map | 1 + types/Add-on/EraseNoSelect.d.ts | 5 + types/Add-on/EraseNoSelect.d.ts.map | 1 + types/Add-on/Erp/ErpCommands.d.ts | 21 + types/Add-on/Erp/ErpCommands.d.ts.map | 1 + types/Add-on/Erp/ErpView.d.ts | 27 + types/Add-on/Erp/ErpView.d.ts.map | 1 + types/Add-on/Erp/ExceedBlocksMind.d.ts | 14 + types/Add-on/Erp/ExceedBlocksMind.d.ts.map | 1 + types/Add-on/Erp/HostURL.d.ts | 4 + types/Add-on/Erp/HostURL.d.ts.map | 1 + types/Add-on/Erp/Models/CadBlock.d.ts | 90 + types/Add-on/Erp/Models/CadBlock.d.ts.map | 1 + types/Add-on/Erp/Models/CadBlockInfo.d.ts | 78 + types/Add-on/Erp/Models/CadBlockInfo.d.ts.map | 1 + types/Add-on/Erp/Models/CadModel.d.ts | 31 + types/Add-on/Erp/Models/CadModel.d.ts.map | 1 + types/Add-on/Erp/Models/CadObject.d.ts | 43 + types/Add-on/Erp/Models/CadObject.d.ts.map | 1 + types/Add-on/Erp/Models/ErpRouteInfo.d.ts | 9 + types/Add-on/Erp/Models/ErpRouteInfo.d.ts.map | 1 + types/Add-on/Erp/Models/ErpRoutes.d.ts | 8 + types/Add-on/Erp/Models/ErpRoutes.d.ts.map | 1 + types/Add-on/Erp/ParseData.d.ts | 64 + types/Add-on/Erp/ParseData.d.ts.map | 1 + types/Add-on/Erp/ParseParts.d.ts | 4 + types/Add-on/Erp/ParseParts.d.ts.map | 1 + types/Add-on/Esc.d.ts | 5 + types/Add-on/Esc.d.ts.map | 1 + types/Add-on/Explode.d.ts | 5 + types/Add-on/Explode.d.ts.map | 1 + types/Add-on/ExplosionMap.d.ts | 10 + types/Add-on/ExplosionMap.d.ts.map | 1 + types/Add-on/Export2View.d.ts | 5 + types/Add-on/Export2View.d.ts.map | 1 + types/Add-on/ExportData.d.ts | 22 + types/Add-on/ExportData.d.ts.map | 1 + types/Add-on/Exports/ExportSTL.d.ts | 4 + types/Add-on/Exports/ExportSTL.d.ts.map | 1 + types/Add-on/Extends.d.ts | 17 + types/Add-on/Extends.d.ts.map | 1 + types/Add-on/File/OpenHistory.d.ts | 6 + types/Add-on/File/OpenHistory.d.ts.map | 1 + types/Add-on/Fillet.d.ts | 13 + types/Add-on/Fillet.d.ts.map | 1 + types/Add-on/FilletUtils.d.ts | 67 + types/Add-on/FilletUtils.d.ts.map | 1 + types/Add-on/FindBoardModelingKnife.d.ts | 5 + types/Add-on/FindBoardModelingKnife.d.ts.map | 1 + .../Gesture/Gesture_DrawLayerBoard.d.ts | 4 + .../Gesture/Gesture_DrawLayerBoard.d.ts.map | 1 + types/Add-on/Group.d.ts | 8 + types/Add-on/Group.d.ts.map | 1 + types/Add-on/HideSelected.d.ts | 19 + types/Add-on/HideSelected.d.ts.map | 1 + types/Add-on/Insert.d.ts | 5 + types/Add-on/Insert.d.ts.map | 1 + types/Add-on/Join.d.ts | 13 + types/Add-on/Join.d.ts.map | 1 + types/Add-on/KJL/KJLToken.d.ts | 8 + types/Add-on/KJL/KJLToken.d.ts.map | 1 + types/Add-on/KJL/KjlExport.d.ts | 12 + types/Add-on/KJL/KjlExport.d.ts.map | 1 + types/Add-on/KJLImport.d.ts | 5 + types/Add-on/KJLImport.d.ts.map | 1 + .../LatticeDrawer/DrawLatticeDrawer.d.ts | 5 + .../LatticeDrawer/DrawLatticeDrawer.d.ts.map | 1 + types/Add-on/LatticeDrawer/EditorLattice.d.ts | 5 + .../LatticeDrawer/EditorLattice.d.ts.map | 1 + .../LatticeDrawer/LatticeDrawerTool.d.ts | 24 + .../LatticeDrawer/LatticeDrawerTool.d.ts.map | 1 + types/Add-on/Length.d.ts | 5 + types/Add-on/Length.d.ts.map | 1 + types/Add-on/Lisp.d.ts | 4 + types/Add-on/Lisp.d.ts.map | 1 + types/Add-on/LoadConfig.d.ts | 14 + types/Add-on/LoadConfig.d.ts.map | 1 + .../LookOverBoardInfos.d.ts | 5 + .../LookOverBoardInfos.d.ts.map | 1 + .../LookOverBoardInfosTool.d.ts | 36 + .../LookOverBoardInfosTool.d.ts.map | 1 + types/Add-on/Mirror.d.ts | 5 + types/Add-on/Mirror.d.ts.map | 1 + types/Add-on/Move.d.ts | 5 + types/Add-on/Move.d.ts.map | 1 + types/Add-on/MoveToWCS0.d.ts | 5 + types/Add-on/MoveToWCS0.d.ts.map | 1 + types/Add-on/Offset.d.ts | 32 + types/Add-on/Offset.d.ts.map | 1 + types/Add-on/OffsetX.d.ts | 6 + types/Add-on/OffsetX.d.ts.map | 1 + types/Add-on/Open.d.ts | 5 + types/Add-on/Open.d.ts.map | 1 + types/Add-on/PasteClip.d.ts | 4 + types/Add-on/PasteClip.d.ts.map | 1 + types/Add-on/Pedit.d.ts | 5 + types/Add-on/Pedit.d.ts.map | 1 + types/Add-on/Print.d.ts | 8 + types/Add-on/Print.d.ts.map | 1 + types/Add-on/Purge.d.ts | 6 + types/Add-on/Purge.d.ts.map | 1 + types/Add-on/ReOpen.d.ts | 5 + types/Add-on/ReOpen.d.ts.map | 1 + types/Add-on/RestoreColor.d.ts | 5 + types/Add-on/RestoreColor.d.ts.map | 1 + types/Add-on/Reverse.d.ts | 5 + types/Add-on/Reverse.d.ts.map | 1 + types/Add-on/Rotate.d.ts | 14 + types/Add-on/Rotate.d.ts.map | 1 + types/Add-on/RotateLayerBoard.d.ts | 28 + types/Add-on/RotateLayerBoard.d.ts.map | 1 + types/Add-on/Save.d.ts | 18 + types/Add-on/Save.d.ts.map | 1 + types/Add-on/Scale.d.ts | 6 + types/Add-on/Scale.d.ts.map | 1 + types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts | 5 + .../SetSmoothEdge/SetSmoothEdge.d.ts.map | 1 + .../SetSmoothEdge/SetSmoothEdgeFace.d.ts | 4 + .../SetSmoothEdge/SetSmoothEdgeFace.d.ts.map | 1 + .../Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts | 15 + .../SetSmoothEdge/SmoothEdgeStore.d.ts.map | 1 + types/Add-on/ShowLines.d.ts | 7 + types/Add-on/ShowLines.d.ts.map | 1 + types/Add-on/ShowProcessingGroupModal.d.ts | 5 + .../Add-on/ShowProcessingGroupModal.d.ts.map | 1 + types/Add-on/ShowRecycleBin.d.ts | 5 + types/Add-on/ShowRecycleBin.d.ts.map | 1 + types/Add-on/Sky.d.ts | 42 + types/Add-on/Sky.d.ts.map | 1 + types/Add-on/Stretch.d.ts | 10 + types/Add-on/Stretch.d.ts.map | 1 + types/Add-on/Sweep.d.ts | 8 + types/Add-on/Sweep.d.ts.map | 1 + types/Add-on/SwitchCamera.d.ts | 5 + types/Add-on/SwitchCamera.d.ts.map | 1 + types/Add-on/SwitchVisualStyles.d.ts | 12 + types/Add-on/SwitchVisualStyles.d.ts.map | 1 + types/Add-on/SyncData.d.ts | 11 + types/Add-on/SyncData.d.ts.map | 1 + types/Add-on/Tangent.d.ts | 5 + types/Add-on/Tangent.d.ts.map | 1 + .../Add-on/Template/BoardReplaceTemplate.d.ts | 4 + .../Template/BoardReplaceTemplate.d.ts.map | 1 + types/Add-on/Template/DrawVisualSpaceBox.d.ts | 5 + .../Template/DrawVisualSpaceBox.d.ts.map | 1 + .../Add-on/Template/RotateTemplateSpace.d.ts | 6 + .../Template/RotateTemplateSpace.d.ts.map | 1 + types/Add-on/Template/ShowFrame.d.ts | 5 + types/Add-on/Template/ShowFrame.d.ts.map | 1 + types/Add-on/Template/ShowTemplate.d.ts | 8 + types/Add-on/Template/ShowTemplate.d.ts.map | 1 + types/Add-on/Template/ShowTemplateDesign.d.ts | 5 + .../Template/ShowTemplateDesign.d.ts.map | 1 + types/Add-on/Template/ShowTopline.d.ts | 5 + types/Add-on/Template/ShowTopline.d.ts.map | 1 + types/Add-on/Template/SplitTemplate.d.ts | 11 + types/Add-on/Template/SplitTemplate.d.ts.map | 1 + types/Add-on/Template/TemplateTagCommand.d.ts | 21 + .../Template/TemplateTagCommand.d.ts.map | 1 + types/Add-on/TemplateSearch.d.ts | 24 + types/Add-on/TemplateSearch.d.ts.map | 1 + types/Add-on/TestFb.d.ts | 5 + types/Add-on/TestFb.d.ts.map | 1 + types/Add-on/TestPointPickParse.d.ts | 5 + types/Add-on/TestPointPickParse.d.ts.map | 1 + types/Add-on/Text2Curve.d.ts | 6 + types/Add-on/Text2Curve.d.ts.map | 1 + types/Add-on/ToggleUI.d.ts | 4 + types/Add-on/ToggleUI.d.ts.map | 1 + types/Add-on/Trim.d.ts | 20 + types/Add-on/Trim.d.ts.map | 1 + types/Add-on/Undo.d.ts | 12 + types/Add-on/Undo.d.ts.map | 1 + types/Add-on/UpdateEntityDrawTask.d.ts | 8 + types/Add-on/UpdateEntityDrawTask.d.ts.map | 1 + types/Add-on/ViewChange.d.ts | 13 + types/Add-on/ViewChange.d.ts.map | 1 + types/Add-on/Viewport/OneKeyLayout.d.ts | 5 + types/Add-on/Viewport/OneKeyLayout.d.ts.map | 1 + types/Add-on/Viewport/OneKeyPrint.d.ts | 5 + types/Add-on/Viewport/OneKeyPrint.d.ts.map | 1 + types/Add-on/Wblock.d.ts | 5 + types/Add-on/Wblock.d.ts.map | 1 + types/Add-on/ZoomE.d.ts | 5 + types/Add-on/ZoomE.d.ts.map | 1 + types/Add-on/closetest.d.ts | 5 + types/Add-on/closetest.d.ts.map | 1 + types/Add-on/instest.d.ts | 5 + types/Add-on/instest.d.ts.map | 1 + types/Add-on/interfere.d.ts | 5 + types/Add-on/interfere.d.ts.map | 1 + types/Add-on/loadfbx.d.ts | 5 + types/Add-on/loadfbx.d.ts.map | 1 + types/Add-on/polytest.d.ts | 12 + types/Add-on/polytest.d.ts.map | 1 + .../showModal/ShowKnifeManageModal.d.ts | 5 + .../showModal/ShowKnifeManageModal.d.ts.map | 1 + types/Add-on/showModal/ShowModal.d.ts | 5 + types/Add-on/showModal/ShowModal.d.ts.map | 1 + .../test/TestOffset/OffsetTestUtil.d.ts | 12 + .../test/TestOffset/OffsetTestUtil.d.ts.map | 1 + types/Add-on/test/TestOffset/TestOffset.d.ts | 3 + .../test/TestOffset/TestOffset.d.ts.map | 1 + types/Add-on/test/TestTape.d.ts | 4 + types/Add-on/test/TestTape.d.ts.map | 1 + types/Add-on/test/TestUtil.d.ts | 4 + types/Add-on/test/TestUtil.d.ts.map | 1 + types/Add-on/test/testIntersect.d.ts | 9 + types/Add-on/test/testIntersect.d.ts.map | 1 + types/Add-on/testEntity/DrawShapeManage.d.ts | 5 + .../testEntity/DrawShapeManage.d.ts.map | 1 + .../Add-on/testEntity/ParseMaterialImage.d.ts | 9 + .../testEntity/ParseMaterialImage.d.ts.map | 1 + types/Add-on/testEntity/SimplifyPolyline.d.ts | 3 + .../testEntity/SimplifyPolyline.d.ts.map | 1 + types/Add-on/testEntity/TestBoundaryBox.d.ts | 5 + .../testEntity/TestBoundaryBox.d.ts.map | 1 + types/Add-on/testEntity/TestBox.d.ts | 5 + types/Add-on/testEntity/TestBox.d.ts.map | 1 + types/Add-on/testEntity/TestCurve.d.ts | 18 + types/Add-on/testEntity/TestCurve.d.ts.map | 1 + .../testEntity/TestDrawEdgeGeometry.d.ts | 5 + .../testEntity/TestDrawEdgeGeometry.d.ts.map | 1 + types/Add-on/testEntity/TestFilletCode.d.ts | 5 + .../Add-on/testEntity/TestFilletCode.d.ts.map | 1 + .../testEntity/TestPointInCurveDirection.d.ts | 5 + .../TestPointInCurveDirection.d.ts.map | 1 + types/Add-on/testEntity/TestRegionParse.d.ts | 5 + .../testEntity/TestRegionParse.d.ts.map | 1 + .../Add-on/testEntity/TestSweepMaxLength.d.ts | 5 + .../testEntity/TestSweepMaxLength.d.ts.map | 1 + .../Add-on/testEntity/TestTemplateDelete.d.ts | 8 + .../testEntity/TestTemplateDelete.d.ts.map | 1 + types/Add-on/testEntity/TestVPath.d.ts | 5 + types/Add-on/testEntity/TestVPath.d.ts.map | 1 + types/Add-on/testEntity/test.d.ts | 5 + types/Add-on/testEntity/test.d.ts.map | 1 + types/Add-on/testEntity/testCollision.d.ts | 6 + .../Add-on/testEntity/testCollision.d.ts.map | 1 + .../twoD2threeD/Command_Curve2Polyline.d.ts | 21 + .../Command_Curve2Polyline.d.ts.map | 1 + .../twoD2threeD/Command_Curve2VSBox.d.ts | 14 + .../twoD2threeD/Command_Curve2VSBox.d.ts.map | 1 + .../twoD2threeD/Modals/Curve2RecModal.d.ts | 35 + .../Modals/Curve2RecModal.d.ts.map | 1 + types/Add-on/twoD2threeD/Modals/R2b2.d.ts | 10 + types/Add-on/twoD2threeD/Modals/R2b2.d.ts.map | 1 + types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts | 13 + .../Add-on/twoD2threeD/Modals/Rec2Br.d.ts.map | 1 + types/Add-on/twoD2threeD/ParseBoardData.d.ts | 14 + .../twoD2threeD/ParseBoardData.d.ts.map | 1 + .../twoD2threeD/ParseBoardNameUtil.d.ts | 49 + .../twoD2threeD/ParseBoardNameUtil.d.ts.map | 1 + types/Add-on/twoD2threeD/Polyline2Board.d.ts | 43 + .../twoD2threeD/Polyline2Board.d.ts.map | 1 + types/Add-on/twoD2threeD/R2B2Store.d.ts | 21 + types/Add-on/twoD2threeD/R2B2Store.d.ts.map | 1 + types/Add-on/twoD2threeD/R2BCommon.d.ts | 24 + types/Add-on/twoD2threeD/R2BCommon.d.ts.map | 1 + .../twoD2threeD/R2BProcessComponent.d.ts | 15 + .../twoD2threeD/R2BProcessComponent.d.ts.map | 1 + .../twoD2threeD/R2bConfigComponent.d.ts | 16 + .../twoD2threeD/R2bConfigComponent.d.ts.map | 1 + types/Add-on/twoD2threeD/R2bInterface.d.ts | 68 + .../Add-on/twoD2threeD/R2bInterface.d.ts.map | 1 + types/Add-on/twoD2threeD/Rec2BrStore.d.ts | 15 + types/Add-on/twoD2threeD/Rec2BrStore.d.ts.map | 1 + types/Add-on/twoD2threeD/Rect2Board.d.ts | 5 + types/Add-on/twoD2threeD/Rect2Board.d.ts.map | 1 + types/ApplicationServices/Application.d.ts | 37 + .../ApplicationServices/Application.d.ts.map | 1 + .../HostApplicationServices.d.ts | 11 + .../HostApplicationServices.d.ts.map | 1 + .../WebSocketClientServer.d.ts | 20 + .../WebSocketClientServer.d.ts.map | 1 + .../ApplicationServices/mesh/createBoard.d.ts | 15 + .../mesh/createBoard.d.ts.map | 1 + types/Common/ActiveElementWatch.d.ts | 2 + types/Common/ActiveElementWatch.d.ts.map | 1 + types/Common/AddEntityDrawObject.d.ts | 5 + types/Common/AddEntityDrawObject.d.ts.map | 1 + types/Common/AppCache.d.ts | 11 + types/Common/AppCache.d.ts.map | 1 + types/Common/ArrayExt.d.ts | 44 + types/Common/ArrayExt.d.ts.map | 1 + types/Common/BoardKeyList.d.ts | 32 + types/Common/BoardKeyList.d.ts.map | 1 + types/Common/BoardUtil.d.ts | 7 + types/Common/BoardUtil.d.ts.map | 1 + types/Common/CheckoutVaildValue.d.ts | 34 + types/Common/CheckoutVaildValue.d.ts.map | 1 + types/Common/ColorPalette.d.ts | 28 + types/Common/ColorPalette.d.ts.map | 1 + types/Common/CommandNames.d.ts | 196 + types/Common/CommandNames.d.ts.map | 1 + types/Common/CommonSelectOption.d.ts | 15 + types/Common/CommonSelectOption.d.ts.map | 1 + types/Common/CurveUtils.d.ts | 63 + types/Common/CurveUtils.d.ts.map | 1 + types/Common/DataAdapter.d.ts | 5 + types/Common/DataAdapter.d.ts.map | 1 + types/Common/Deving.d.ts | 3 + types/Common/Deving.d.ts.map | 1 + types/Common/Dispose.d.ts | 7 + types/Common/Dispose.d.ts.map | 1 + types/Common/ErrorMonitoring.d.ts | 5 + types/Common/ErrorMonitoring.d.ts.map | 1 + types/Common/FileSystem.d.ts | 176 + types/Common/FileSystem.d.ts.map | 1 + types/Common/HostUrl.d.ts | 108 + types/Common/HostUrl.d.ts.map | 1 + types/Common/InputState.d.ts | 24 + types/Common/InputState.d.ts.map | 1 + types/Common/InterfereUtil.d.ts | 24 + types/Common/InterfereUtil.d.ts.map | 1 + types/Common/JigMove.d.ts | 4 + types/Common/JigMove.d.ts.map | 1 + types/Common/KeyEnum.d.ts | 297 + types/Common/KeyEnum.d.ts.map | 1 + types/Common/LightUtils.d.ts | 3 + types/Common/LightUtils.d.ts.map | 1 + types/Common/Log.d.ts | 8 + types/Common/Log.d.ts.map | 1 + types/Common/Material.d.ts | 4 + types/Common/Material.d.ts.map | 1 + types/Common/Matrix4Utils.d.ts | 49 + types/Common/Matrix4Utils.d.ts.map | 1 + types/Common/NumberDecimalAdjustment.d.ts | 2 + types/Common/NumberDecimalAdjustment.d.ts.map | 1 + types/Common/Report.d.ts | 3 + types/Common/Report.d.ts.map | 1 + types/Common/Request.d.ts | 36 + types/Common/Request.d.ts.map | 1 + types/Common/SerializeMaterial.d.ts | 30 + types/Common/SerializeMaterial.d.ts.map | 1 + types/Common/SetMaterial.d.ts | 3 + types/Common/SetMaterial.d.ts.map | 1 + types/Common/ShowSelectObjects.d.ts | 5 + types/Common/ShowSelectObjects.d.ts.map | 1 + types/Common/Singleton.d.ts | 12 + types/Common/Singleton.d.ts.map | 1 + types/Common/Sleep.d.ts | 2 + types/Common/Sleep.d.ts.map | 1 + types/Common/Status.d.ts | 23 + types/Common/Status.d.ts.map | 1 + types/Common/StoreageKeys.d.ts | 19 + types/Common/StoreageKeys.d.ts.map | 1 + types/Common/StretchParse.d.ts | 11 + types/Common/StretchParse.d.ts.map | 1 + types/Common/SystemEnum.d.ts | 14 + types/Common/SystemEnum.d.ts.map | 1 + types/Common/TempVar.d.ts | 3 + types/Common/TempVar.d.ts.map | 1 + types/Common/Toaster.d.ts | 18 + types/Common/Toaster.d.ts.map | 1 + types/Common/TypeOperator.d.ts | 9 + types/Common/TypeOperator.d.ts.map | 1 + types/Common/Utils.d.ts | 51 + types/Common/Utils.d.ts.map | 1 + types/Common/ZIndex.d.ts | 17 + types/Common/ZIndex.d.ts.map | 1 + types/Common/binary/ArraybufferUtils.d.ts | 30 + types/Common/binary/ArraybufferUtils.d.ts.map | 1 + types/Common/binary/Base64Utils.d.ts | 49 + types/Common/binary/Base64Utils.d.ts.map | 1 + types/Common/binary/BufferUtils.d.ts | 15 + types/Common/binary/BufferUtils.d.ts.map | 1 + types/Common/eval.d.ts | 16 + types/Common/eval.d.ts.map | 1 + .../3DSolid/CylinderHole.d.ts | 48 + .../3DSolid/CylinderHole.d.ts.map | 1 + types/DatabaseServices/3DSolid/Cylineder.d.ts | 23 + .../3DSolid/Cylineder.d.ts.map | 1 + .../DatabaseServices/3DSolid/ExtrudeHole.d.ts | 52 + .../3DSolid/ExtrudeHole.d.ts.map | 1 + types/DatabaseServices/3DSolid/Hole.d.ts | 13 + types/DatabaseServices/3DSolid/Hole.d.ts.map | 1 + .../3DSolid/RevolveSolid.d.ts | 38 + .../3DSolid/RevolveSolid.d.ts.map | 1 + .../DatabaseServices/3DSolid/SweepSolid.d.ts | 52 + .../3DSolid/SweepSolid.d.ts.map | 1 + types/DatabaseServices/AllObjectData.d.ts | 13 + types/DatabaseServices/AllObjectData.d.ts.map | 1 + types/DatabaseServices/AutoRecord.d.ts | 14 + types/DatabaseServices/AutoRecord.d.ts.map | 1 + types/DatabaseServices/BlockTable.d.ts | 4 + types/DatabaseServices/BlockTable.d.ts.map | 1 + types/DatabaseServices/BlockTableRecord.d.ts | 20 + .../BlockTableRecord.d.ts.map | 1 + types/DatabaseServices/BoardLinesReactor.d.ts | 11 + .../BoardLinesReactor.d.ts.map | 1 + types/DatabaseServices/CADFactory.d.ts | 13 + types/DatabaseServices/CADFactory.d.ts.map | 1 + types/DatabaseServices/CADFiler.d.ts | 35 + types/DatabaseServices/CADFiler.d.ts.map | 1 + types/DatabaseServices/CADObject.d.ts | 55 + types/DatabaseServices/CADObject.d.ts.map | 1 + .../CommandHistoryRecord.d.ts | 24 + .../CommandHistoryRecord.d.ts.map | 1 + types/DatabaseServices/CommandServer.d.ts | 23 + types/DatabaseServices/CommandServer.d.ts.map | 1 + types/DatabaseServices/Contour.d.ts | 58 + types/DatabaseServices/Contour.d.ts.map | 1 + types/DatabaseServices/CreateObjectData.d.ts | 18 + .../CreateObjectData.d.ts.map | 1 + types/DatabaseServices/Database.d.ts | 93 + types/DatabaseServices/Database.d.ts.map | 1 + types/DatabaseServices/DeepCloneFiler.d.ts | 13 + .../DatabaseServices/DeepCloneFiler.d.ts.map | 1 + .../Dimension/2LineAngularDimension.d.ts | 46 + .../Dimension/2LineAngularDimension.d.ts.map | 1 + .../Dimension/AlignedDimension.d.ts | 90 + .../Dimension/AlignedDimension.d.ts.map | 1 + .../Dimension/DimDiameter.d.ts | 11 + .../Dimension/DimDiameter.d.ts.map | 1 + .../Dimension/GetDimLineMaterial.d.ts | 5 + .../Dimension/GetDimLineMaterial.d.ts.map | 1 + .../Dimension/LinearDimension.d.ts | 9 + .../Dimension/LinearDimension.d.ts.map | 1 + .../Dimension/RadiusDimension.d.ts | 35 + .../Dimension/RadiusDimension.d.ts.map | 1 + types/DatabaseServices/Entity/Arc.d.ts | 138 + types/DatabaseServices/Entity/Arc.d.ts.map | 1 + types/DatabaseServices/Entity/Board.d.ts | 152 + types/DatabaseServices/Entity/Board.d.ts.map | 1 + types/DatabaseServices/Entity/BoxSolid.d.ts | 16 + .../DatabaseServices/Entity/BoxSolid.d.ts.map | 1 + types/DatabaseServices/Entity/Circle.d.ts | 56 + types/DatabaseServices/Entity/Circle.d.ts.map | 1 + .../Entity/CompositeEntity.d.ts | 52 + .../Entity/CompositeEntity.d.ts.map | 1 + types/DatabaseServices/Entity/Curve.d.ts | 109 + types/DatabaseServices/Entity/Curve.d.ts.map | 1 + .../Entity/DragPointType.d.ts | 5 + .../Entity/DragPointType.d.ts.map | 1 + types/DatabaseServices/Entity/Ellipse.d.ts | 67 + .../DatabaseServices/Entity/Ellipse.d.ts.map | 1 + types/DatabaseServices/Entity/Entity.d.ts | 156 + types/DatabaseServices/Entity/Entity.d.ts.map | 1 + types/DatabaseServices/Entity/EntityRef.d.ts | 17 + .../Entity/EntityRef.d.ts.map | 1 + types/DatabaseServices/Entity/Extrude.d.ts | 234 + .../DatabaseServices/Entity/Extrude.d.ts.map | 1 + .../Entity/ExtrudeConfig.d.ts | 5 + .../Entity/ExtrudeConfig.d.ts.map | 1 + types/DatabaseServices/Entity/Line.d.ts | 55 + types/DatabaseServices/Entity/Line.d.ts.map | 1 + types/DatabaseServices/Entity/Point.d.ts | 28 + types/DatabaseServices/Entity/Point.d.ts.map | 1 + types/DatabaseServices/Entity/Polyline.d.ts | 193 + .../DatabaseServices/Entity/Polyline.d.ts.map | 1 + types/DatabaseServices/Entity/Region.d.ts | 55 + types/DatabaseServices/Entity/Region.d.ts.map | 1 + types/DatabaseServices/EraseEntityData.d.ts | 9 + .../DatabaseServices/EraseEntityData.d.ts.map | 1 + types/DatabaseServices/FaceEntity.d.ts | 15 + types/DatabaseServices/FaceEntity.d.ts.map | 1 + types/DatabaseServices/FileServer.d.ts | 40 + types/DatabaseServices/FileServer.d.ts.map | 1 + types/DatabaseServices/GroupTable.d.ts | 11 + types/DatabaseServices/GroupTable.d.ts.map | 1 + types/DatabaseServices/GroupTableRecord.d.ts | 12 + .../GroupTableRecord.d.ts.map | 1 + .../Hardware/HardwareCompositeEntity.d.ts | 15 + .../Hardware/HardwareCompositeEntity.d.ts.map | 1 + .../Hardware/HardwareTopline.d.ts | 22 + .../Hardware/HardwareTopline.d.ts.map | 1 + types/DatabaseServices/HistoricManage.d.ts | 46 + .../DatabaseServices/HistoricManage.d.ts.map | 1 + types/DatabaseServices/HistorycRecord.d.ts | 14 + .../DatabaseServices/HistorycRecord.d.ts.map | 1 + types/DatabaseServices/ISerialize.d.ts | 6 + types/DatabaseServices/ISerialize.d.ts.map | 1 + types/DatabaseServices/IdMaping.d.ts | 3 + types/DatabaseServices/IdMaping.d.ts.map | 1 + .../DatabaseServices/Lights/AmbientLight.d.ts | 8 + .../Lights/AmbientLight.d.ts.map | 1 + .../Lights/DirectionalLight.d.ts | 22 + .../Lights/DirectionalLight.d.ts.map | 1 + .../Lights/HemisphereLight.d.ts | 16 + .../Lights/HemisphereLight.d.ts.map | 1 + types/DatabaseServices/Lights/Light.d.ts | 29 + types/DatabaseServices/Lights/Light.d.ts.map | 1 + types/DatabaseServices/Lights/PointLight.d.ts | 25 + .../Lights/PointLight.d.ts.map | 1 + .../Lights/RectAreaLight.d.ts | 25 + .../Lights/RectAreaLight.d.ts.map | 1 + types/DatabaseServices/Lights/SpotLight.d.ts | 39 + .../Lights/SpotLight.d.ts.map | 1 + .../DatabaseServices/MaterialDictionary.d.ts | 14 + .../MaterialDictionary.d.ts.map | 1 + types/DatabaseServices/MaterialTable.d.ts | 10 + types/DatabaseServices/MaterialTable.d.ts.map | 1 + .../DatabaseServices/MaterialTableRecord.d.ts | 4 + .../MaterialTableRecord.d.ts.map | 1 + .../ObjectAllDataHistoryRecord.d.ts | 11 + .../ObjectAllDataHistoryRecord.d.ts.map | 1 + types/DatabaseServices/ObjectCollection.d.ts | 17 + .../ObjectCollection.d.ts.map | 1 + types/DatabaseServices/ObjectId.d.ts | 18 + types/DatabaseServices/ObjectId.d.ts.map | 1 + .../PhysicalMaterialRecord.d.ts | 34 + .../PhysicalMaterialRecord.d.ts.map | 1 + types/DatabaseServices/PointInPolyline.d.ts | 20 + .../DatabaseServices/PointInPolyline.d.ts.map | 1 + .../ProcessingGroupRecord.d.ts | 19 + .../ProcessingGroupRecord.d.ts.map | 1 + .../ProcessingGroup/ProcessingGroupTable.d.ts | 9 + .../ProcessingGroupTable.d.ts.map | 1 + types/DatabaseServices/RemoveObjectData.d.ts | 12 + .../RemoveObjectData.d.ts.map | 1 + types/DatabaseServices/Shape.d.ts | 70 + types/DatabaseServices/Shape.d.ts.map | 1 + types/DatabaseServices/Shape2.d.ts | 6 + types/DatabaseServices/Shape2.d.ts.map | 1 + types/DatabaseServices/ShapeManager.d.ts | 28 + types/DatabaseServices/ShapeManager.d.ts.map | 1 + types/DatabaseServices/Spline.d.ts | 33 + types/DatabaseServices/Spline.d.ts.map | 1 + types/DatabaseServices/SymbolTable.d.ts | 19 + types/DatabaseServices/SymbolTable.d.ts.map | 1 + types/DatabaseServices/SymbolTableRecord.d.ts | 12 + .../SymbolTableRecord.d.ts.map | 1 + .../Action/TempateThicknessAction.d.ts | 25 + .../Action/TempateThicknessAction.d.ts.map | 1 + .../Template/Action/TemplateAction.d.ts | 21 + .../Template/Action/TemplateAction.d.ts.map | 1 + .../Template/Action/TemplateFilletAction.d.ts | 14 + .../Action/TemplateFilletAction.d.ts.map | 1 + .../Template/Action/TemplateMoveAction.d.ts | 14 + .../Action/TemplateMoveAction.d.ts.map | 1 + .../Action/TemplateStretchGripAction.d.ts | 16 + .../Action/TemplateStretchGripAction.d.ts.map | 1 + .../Action/TemplateStretchScaleBoxAction.d.ts | 29 + .../TemplateStretchScaleBoxAction.d.ts.map | 1 + .../Template/Param/TemplateParam.d.ts | 45 + .../Template/Param/TemplateParam.d.ts.map | 1 + .../Template/Param/TemplateParamType.d.ts | 10 + .../Template/Param/TemplateParamType.d.ts.map | 1 + .../Template/Positioning/Positioning.d.ts | 26 + .../Template/Positioning/Positioning.d.ts.map | 1 + .../Positioning/PositioningBoardSpace.d.ts | 13 + .../PositioningBoardSpace.d.ts.map | 1 + .../Positioning/PositioningClampSpace.d.ts | 19 + .../PositioningClampSpace.d.ts.map | 1 + .../Positioning/PositioningTemporary.d.ts | 8 + .../Positioning/PositioningTemporary.d.ts.map | 1 + .../ProgramTempate/TemplateBehindBoard.d.ts | 17 + .../TemplateBehindBoard.d.ts.map | 1 + .../ProgramTempate/TemplateBoard.d.ts | 21 + .../ProgramTempate/TemplateBoard.d.ts.map | 1 + .../ProgramTempate/TemplateLatticeRecord.d.ts | 13 + .../TemplateLatticeRecord.d.ts.map | 1 + .../ProgramTempate/TemplateLayerBoard.d.ts | 20 + .../TemplateLayerBoard.d.ts.map | 1 + .../TemplateLeftRightBoardRecord.d.ts | 12 + .../TemplateLeftRightBoardRecord.d.ts.map | 1 + .../ProgramTempate/TemplateSizeBoard.d.ts | 5 + .../ProgramTempate/TemplateSizeBoard.d.ts.map | 1 + .../TemplateTopBottomBoard.d.ts | 21 + .../TemplateTopBottomBoard.d.ts.map | 1 + .../ProgramTempate/TemplateVerticalBoard.d.ts | 15 + .../TemplateVerticalBoard.d.ts.map | 1 + .../ProgramTempate/TemplateVisualSpace.d.ts | 10 + .../TemplateVisualSpace.d.ts.map | 1 + .../TemplateWineRackRecord.d.ts | 13 + .../TemplateWineRackRecord.d.ts.map | 1 + .../Template/TempateUtils.d.ts | 114 + .../Template/TempateUtils.d.ts.map | 1 + .../Template/TemplateRecord.d.ts | 151 + .../Template/TemplateRecord.d.ts.map | 1 + .../Template/TemplateTable.d.ts | 8 + .../Template/TemplateTable.d.ts.map | 1 + .../Template/TemplateTest.d.ts | 35 + .../Template/TemplateTest.d.ts.map | 1 + .../Template/TemplateType.d.ts | 15 + .../Template/TemplateType.d.ts.map | 1 + types/DatabaseServices/Text/FontExt.d.ts | 5 + types/DatabaseServices/Text/FontExt.d.ts.map | 1 + types/DatabaseServices/Text/FontLoader.d.ts | 33 + .../DatabaseServices/Text/FontLoader.d.ts.map | 1 + types/DatabaseServices/Text/Text.d.ts | 52 + types/DatabaseServices/Text/Text.d.ts.map | 1 + types/DatabaseServices/Text/TextArea.d.ts | 32 + types/DatabaseServices/Text/TextArea.d.ts.map | 1 + types/DatabaseServices/Texture.d.ts | 26 + types/DatabaseServices/Texture.d.ts.map | 1 + types/DatabaseServices/TextureTable.d.ts | 7 + types/DatabaseServices/TextureTable.d.ts.map | 1 + types/DatabaseServices/Transaction.d.ts | 19 + types/DatabaseServices/Transaction.d.ts.map | 1 + .../DatabaseServices/TransactionManager.d.ts | 7 + .../TransactionManager.d.ts.map | 1 + types/DatabaseServices/ViewportEntity.d.ts | 67 + .../DatabaseServices/ViewportEntity.d.ts.map | 1 + .../ViewportEntity/ViewportEntity2.d.ts | 31 + .../ViewportEntity/ViewportEntity2.d.ts.map | 1 + .../ViewportEntityUpdateTask.d.ts | 10 + .../ViewportEntityUpdateTask.d.ts.map | 1 + types/DatabaseServices/WblockCloneFiler.d.ts | 4 + .../WblockCloneFiler.d.ts.map | 1 + types/Debug/DebugObject.d.ts | 2 + types/Debug/DebugObject.d.ts.map | 1 + types/Editor/AutoSave.d.ts | 22 + types/Editor/AutoSave.d.ts.map | 1 + types/Editor/BoardMoveTool.d.ts | 15 + types/Editor/BoardMoveTool.d.ts.map | 1 + .../BufferGeometry2GeometryCacheMap.d.ts | 3 + .../BufferGeometry2GeometryCacheMap.d.ts.map | 1 + types/Editor/CameraControls.d.ts | 50 + types/Editor/CameraControls.d.ts.map | 1 + types/Editor/CommandMachine.d.ts | 35 + types/Editor/CommandMachine.d.ts.map | 1 + types/Editor/CommandRegister.d.ts | 4 + types/Editor/CommandRegister.d.ts.map | 1 + types/Editor/CommandState.d.ts | 4 + types/Editor/CommandState.d.ts.map | 1 + types/Editor/ContextMenu.d.ts | 16 + types/Editor/ContextMenu.d.ts.map | 1 + types/Editor/DbClick/DBClickPolyline.d.ts | 17 + types/Editor/DbClick/DBClickPolyline.d.ts.map | 1 + types/Editor/DbClick/DbClick.d.ts | 5 + types/Editor/DbClick/DbClick.d.ts.map | 1 + types/Editor/DefaultConfig.d.ts | 43 + types/Editor/DefaultConfig.d.ts.map | 1 + types/Editor/Editor.d.ts | 77 + types/Editor/Editor.d.ts.map | 1 + types/Editor/Gesture.d.ts | 25 + types/Editor/Gesture.d.ts.map | 1 + types/Editor/GetDistanceServices.d.ts | 14 + types/Editor/GetDistanceServices.d.ts.map | 1 + types/Editor/GetEntityServices.d.ts | 29 + types/Editor/GetEntityServices.d.ts.map | 1 + types/Editor/GetKeyWordService.d.ts | 39 + types/Editor/GetKeyWordService.d.ts.map | 1 + types/Editor/GetPointServices.d.ts | 42 + types/Editor/GetPointServices.d.ts.map | 1 + types/Editor/GetRectServices.d.ts | 26 + types/Editor/GetRectServices.d.ts.map | 1 + types/Editor/GetSelectionServices.d.ts | 21 + types/Editor/GetSelectionServices.d.ts.map | 1 + types/Editor/GetStringService.d.ts | 19 + types/Editor/GetStringService.d.ts.map | 1 + types/Editor/GripDragServices.d.ts | 39 + types/Editor/GripDragServices.d.ts.map | 1 + types/Editor/InitKeyword.d.ts | 14 + types/Editor/InitKeyword.d.ts.map | 1 + types/Editor/Jig.d.ts | 43 + types/Editor/Jig.d.ts.map | 1 + types/Editor/JigUtils.d.ts | 29 + types/Editor/JigUtils.d.ts.map | 1 + types/Editor/KeyBoardControls.d.ts | 11 + types/Editor/KeyBoardControls.d.ts.map | 1 + types/Editor/LayoutTool.d.ts | 15 + types/Editor/LayoutTool.d.ts.map | 1 + types/Editor/MaterialEditor.d.ts | 25 + types/Editor/MaterialEditor.d.ts.map | 1 + types/Editor/MaterialMouseControl.d.ts | 18 + types/Editor/MaterialMouseControl.d.ts.map | 1 + types/Editor/MouseControls.d.ts | 18 + types/Editor/MouseControls.d.ts.map | 1 + types/Editor/ObjectSnapMode.d.ts | 23 + types/Editor/ObjectSnapMode.d.ts.map | 1 + types/Editor/PointPick.d.ts | 20 + types/Editor/PointPick.d.ts.map | 1 + types/Editor/PromptOptions.d.ts | 56 + types/Editor/PromptOptions.d.ts.map | 1 + types/Editor/PromptResult.d.ts | 56 + types/Editor/PromptResult.d.ts.map | 1 + types/Editor/RegisterGesture.d.ts | 3 + types/Editor/RegisterGesture.d.ts.map | 1 + types/Editor/SelectBase.d.ts | 53 + types/Editor/SelectBase.d.ts.map | 1 + types/Editor/SelectBox.d.ts | 30 + types/Editor/SelectBox.d.ts.map | 1 + types/Editor/SelectControls.d.ts | 43 + types/Editor/SelectControls.d.ts.map | 1 + types/Editor/SelectFilter.d.ts | 12 + types/Editor/SelectFilter.d.ts.map | 1 + types/Editor/SelectLine.d.ts | 13 + types/Editor/SelectLine.d.ts.map | 1 + types/Editor/SelectPick.d.ts | 18 + types/Editor/SelectPick.d.ts.map | 1 + types/Editor/SelectSet.d.ts | 21 + types/Editor/SelectSet.d.ts.map | 1 + types/Editor/ShowSnapMenu.d.ts | 18 + types/Editor/ShowSnapMenu.d.ts.map | 1 + types/Editor/SnapMenuFixed.d.ts | 17 + types/Editor/SnapMenuFixed.d.ts.map | 1 + types/Editor/SnapServices.d.ts | 96 + types/Editor/SnapServices.d.ts.map | 1 + types/Editor/SnapStatusWrap.d.ts | 2 + types/Editor/SnapStatusWrap.d.ts.map | 1 + types/Editor/TempEditor.d.ts | 25 + types/Editor/TempEditor.d.ts.map | 1 + types/Editor/TranstrolControl/Axes.d.ts | 13 + types/Editor/TranstrolControl/Axes.d.ts.map | 1 + types/Editor/TranstrolControl/CoorAxes.d.ts | 15 + .../Editor/TranstrolControl/CoorAxes.d.ts.map | 1 + types/Editor/TranstrolControl/RotateAxes.d.ts | 11 + .../TranstrolControl/RotateAxes.d.ts.map | 1 + .../TranstrolControl/TransformServices.d.ts | 28 + .../TransformServices.d.ts.map | 1 + .../TranstrolControl/TranslateAxes.d.ts | 10 + .../TranstrolControl/TranslateAxes.d.ts.map | 1 + types/Editor/UCSServices.d.ts | 20 + types/Editor/UCSServices.d.ts.map | 1 + types/Editor/UserConfig.d.ts | 123 + types/Editor/UserConfig.d.ts.map | 1 + types/Editor/VisualSpaceBox.d.ts | 54 + types/Editor/VisualSpaceBox.d.ts.map | 1 + types/GLSL/GoochShader.d.ts | 33 + types/GLSL/GoochShader.d.ts.map | 1 + types/GLSL/GoochShader1.d.ts | 6 + types/GLSL/GoochShader1.d.ts.map | 1 + types/Geometry/BSPGroupParse.d.ts | 27 + types/Geometry/BSPGroupParse.d.ts.map | 1 + types/Geometry/BoardUVGenerator.d.ts | 12 + types/Geometry/BoardUVGenerator.d.ts.map | 1 + types/Geometry/Box.d.ts | 24 + types/Geometry/Box.d.ts.map | 1 + types/Geometry/BufferGeometryUtils.d.ts | 15 + types/Geometry/BufferGeometryUtils.d.ts.map | 1 + types/Geometry/CheckIntersect.d.ts | 19 + types/Geometry/CheckIntersect.d.ts.map | 1 + types/Geometry/CoordinateSystem.d.ts | 18 + types/Geometry/CoordinateSystem.d.ts.map | 1 + types/Geometry/Count.d.ts | 14 + types/Geometry/Count.d.ts.map | 1 + types/Geometry/CreateContour2.d.ts | 7 + types/Geometry/CreateContour2.d.ts.map | 1 + types/Geometry/CreateWireframe.d.ts | 8 + types/Geometry/CreateWireframe.d.ts.map | 1 + types/Geometry/CurveIntersection.d.ts | 32 + types/Geometry/CurveIntersection.d.ts.map | 1 + types/Geometry/CurveMap.d.ts | 51 + types/Geometry/CurveMap.d.ts.map | 1 + types/Geometry/DoIntersect.d.ts | 6 + types/Geometry/DoIntersect.d.ts.map | 1 + types/Geometry/DrillParse/BoardGetFace.d.ts | 22 + .../Geometry/DrillParse/BoardGetFace.d.ts.map | 1 + .../DrillParse/CollisionDetection.d.ts | 11 + .../DrillParse/CollisionDetection.d.ts.map | 1 + types/Geometry/DrillParse/Face.d.ts | 36 + types/Geometry/DrillParse/Face.d.ts.map | 1 + types/Geometry/EdgeGeometry.d.ts | 20 + types/Geometry/EdgeGeometry.d.ts.map | 1 + types/Geometry/ExportObj.d.ts | 3 + types/Geometry/ExportObj.d.ts.map | 1 + types/Geometry/ExportObj2.d.ts | 6 + types/Geometry/ExportObj2.d.ts.map | 1 + types/Geometry/ExtrudeEdgeGeometry.d.ts | 4 + types/Geometry/ExtrudeEdgeGeometry.d.ts.map | 1 + types/Geometry/ExtrudeEdgeGeometry2.d.ts | 149 + types/Geometry/ExtrudeEdgeGeometry2.d.ts.map | 1 + types/Geometry/FastOffset.d.ts | 10 + types/Geometry/FastOffset.d.ts.map | 1 + types/Geometry/FuzzVector.d.ts | 14 + types/Geometry/FuzzVector.d.ts.map | 1 + types/Geometry/GeUtils.d.ts | 131 + types/Geometry/GeUtils.d.ts.map | 1 + types/Geometry/IVec3.d.ts | 6 + types/Geometry/IVec3.d.ts.map | 1 + types/Geometry/Matrix2.d.ts | 10 + types/Geometry/Matrix2.d.ts.map | 1 + types/Geometry/OBB/obb.d.ts | 10 + types/Geometry/OBB/obb.d.ts.map | 1 + types/Geometry/OBJExporter.d.ts | 8 + types/Geometry/OBJExporter.d.ts.map | 1 + types/Geometry/Orbit.d.ts | 28 + types/Geometry/Orbit.d.ts.map | 1 + types/Geometry/Plane.d.ts | 7 + types/Geometry/Plane.d.ts.map | 1 + types/Geometry/PointShapeUtils.d.ts | 17 + types/Geometry/PointShapeUtils.d.ts.map | 1 + types/Geometry/RegionParse.d.ts | 42 + types/Geometry/RegionParse.d.ts.map | 1 + types/Geometry/RotateUV.d.ts | 2 + types/Geometry/RotateUV.d.ts.map | 1 + types/Geometry/Simplify.d.ts | 7 + types/Geometry/Simplify.d.ts.map | 1 + types/Geometry/SortEntityByBox.d.ts | 10 + types/Geometry/SortEntityByBox.d.ts.map | 1 + .../Geometry/SpaceParse/ClampSpaceParse.d.ts | 32 + .../SpaceParse/ClampSpaceParse.d.ts.map | 1 + .../SpaceParse/ClampSpaceParseDist.d.ts | 6 + .../SpaceParse/ClampSpaceParseDist.d.ts.map | 1 + .../SpaceParse/ClampSpaceParseFix.d.ts | 10 + .../SpaceParse/ClampSpaceParseFix.d.ts.map | 1 + .../SpaceParse/ClampSpaceParseKey.d.ts | 15 + .../SpaceParse/ClampSpaceParseKey.d.ts.map | 1 + .../SpaceParse/ClampSpaceParseRay.d.ts | 15 + .../SpaceParse/ClampSpaceParseRay.d.ts.map | 1 + types/Geometry/SpaceParse/ISpaceParse.d.ts | 61 + .../Geometry/SpaceParse/ISpaceParse.d.ts.map | 1 + .../Geometry/SpaceParse/Point2SpaceParse.d.ts | 5 + .../SpaceParse/Point2SpaceParse.d.ts.map | 1 + .../SpaceParse/Point3SpaceParse,.d.ts | 5 + .../SpaceParse/Point3SpaceParse,.d.ts.map | 1 + .../SpaceParse/PointSelectBoards.d.ts | 17 + .../SpaceParse/PointSelectBoards.d.ts.map | 1 + .../Geometry/SpaceParse/PointSelectSpace.d.ts | 38 + .../SpaceParse/PointSelectSpace.d.ts.map | 1 + .../SpaceParse/PointSelectSpaceClamp.d.ts | 10 + .../SpaceParse/PointSelectSpaceClamp.d.ts.map | 1 + .../SpaceParse/PointSelectSpaceSurround.d.ts | 11 + .../PointSelectSpaceSurround.d.ts.map | 1 + .../SpaceParse/SurroundOutlineParse.d.ts | 14 + .../SpaceParse/SurroundOutlineParse.d.ts.map | 1 + .../SpaceParse/SurroundSpaceParse.d.ts | 12 + .../SpaceParse/SurroundSpaceParse.d.ts.map | 1 + .../Geometry/SpaceParse/TotalSpaceParse.d.ts | 8 + .../SpaceParse/TotalSpaceParse.d.ts.map | 1 + types/Geometry/SweepGeometry.d.ts | 15 + types/Geometry/SweepGeometry.d.ts.map | 1 + types/Geometry/UVUtils.d.ts | 4 + types/Geometry/UVUtils.d.ts.map | 1 + types/GraphicsSystem/BoolOperateUtils.d.ts | 13 + .../GraphicsSystem/BoolOperateUtils.d.ts.map | 1 + types/GraphicsSystem/CalcEdgeSealing.d.ts | 34 + types/GraphicsSystem/CalcEdgeSealing.d.ts.map | 1 + types/GraphicsSystem/CameraUpdate.d.ts | 62 + types/GraphicsSystem/CameraUpdate.d.ts.map | 1 + types/GraphicsSystem/Cursor.d.ts | 52 + types/GraphicsSystem/Cursor.d.ts.map | 1 + types/GraphicsSystem/FXAAPass.d.ts | 6 + types/GraphicsSystem/FXAAPass.d.ts.map | 1 + types/GraphicsSystem/GripScene.d.ts | 12 + types/GraphicsSystem/GripScene.d.ts.map | 1 + types/GraphicsSystem/IView.d.ts | 8 + types/GraphicsSystem/IView.d.ts.map | 1 + types/GraphicsSystem/IntersectWith.d.ts | 74 + types/GraphicsSystem/IntersectWith.d.ts.map | 1 + types/GraphicsSystem/Octree.d.ts | 52 + types/GraphicsSystem/Octree.d.ts.map | 1 + types/GraphicsSystem/OffsetPolyline.d.ts | 60 + types/GraphicsSystem/OffsetPolyline.d.ts.map | 1 + types/GraphicsSystem/OutlinePass.d.ts | 61 + types/GraphicsSystem/OutlinePass.d.ts.map | 1 + types/GraphicsSystem/PreViewer.d.ts | 46 + types/GraphicsSystem/PreViewer.d.ts.map | 1 + .../RenderPerformanceStatus.d.ts | 10 + .../RenderPerformanceStatus.d.ts.map | 1 + types/GraphicsSystem/RenderType.d.ts | 40 + types/GraphicsSystem/RenderType.d.ts.map | 1 + .../ToolPath/FeedingToolPath.d.ts | 38 + .../ToolPath/FeedingToolPath.d.ts.map | 1 + .../ToolPath/OptimizeToolPath.d.ts | 19 + .../ToolPath/OptimizeToolPath.d.ts.map | 1 + .../ToolPath/VKnifToolPath.d.ts | 18 + .../ToolPath/VKnifToolPath.d.ts.map | 1 + types/GraphicsSystem/Viewer.d.ts | 86 + types/GraphicsSystem/Viewer.d.ts.map | 1 + types/Hot/HotCommand.d.ts | 2 + types/Hot/HotCommand.d.ts.map | 1 + types/IndexedDb/IndexedDbStore.d.ts | 48 + types/IndexedDb/IndexedDbStore.d.ts.map | 1 + types/Loader/ExrLoader.d.ts | 3 + types/Loader/ExrLoader.d.ts.map | 1 + types/Loader/FBXLoader.d.ts | 7 + types/Loader/FBXLoader.d.ts.map | 1 + types/Loader/ImageLoader.d.ts | 5 + types/Loader/ImageLoader.d.ts.map | 1 + types/Nest/Common/ArrayExt.d.ts | 44 + types/Nest/Common/ArrayExt.d.ts.map | 1 + types/Nest/Common/Box2.d.ts | 33 + types/Nest/Common/Box2.d.ts.map | 1 + types/Nest/Common/ClipperCpp.d.ts | 6 + types/Nest/Common/ClipperCpp.d.ts.map | 1 + types/Nest/Common/ComparePoint.d.ts | 23 + types/Nest/Common/ComparePoint.d.ts.map | 1 + types/Nest/Common/ConvexHull2D.d.ts | 3 + types/Nest/Common/ConvexHull2D.d.ts.map | 1 + types/Nest/Common/Filer.d.ts | 13 + types/Nest/Common/Filer.d.ts.map | 1 + types/Nest/Common/Point.d.ts | 5 + types/Nest/Common/Point.d.ts.map | 1 + types/Nest/Common/Random.d.ts | 2 + types/Nest/Common/Random.d.ts.map | 1 + types/Nest/Common/Shuffle.d.ts | 2 + types/Nest/Common/Shuffle.d.ts.map | 1 + types/Nest/Common/Sleep.d.ts | 2 + types/Nest/Common/Sleep.d.ts.map | 1 + types/Nest/Common/Util.d.ts | 8 + types/Nest/Common/Util.d.ts.map | 1 + types/Nest/Common/Vector2.d.ts | 60 + types/Nest/Common/Vector2.d.ts.map | 1 + types/Nest/Converter/ConverBoard2Part.d.ts | 12 + .../Nest/Converter/ConverBoard2Part.d.ts.map | 1 + types/Nest/Converter/Curves2Parts.d.ts | 33 + types/Nest/Converter/Curves2Parts.d.ts.map | 1 + types/Nest/Converter/Path2Polyline.d.ts | 4 + types/Nest/Converter/Path2Polyline.d.ts.map | 1 + types/Nest/Converter/Simplify2.d.ts | 11 + types/Nest/Converter/Simplify2.d.ts.map | 1 + types/Nest/Core/Container.d.ts | 47 + types/Nest/Core/Container.d.ts.map | 1 + types/Nest/Core/DefaultBin.d.ts | 3 + types/Nest/Core/DefaultBin.d.ts.map | 1 + types/Nest/Core/GNestConfig.d.ts | 6 + types/Nest/Core/GNestConfig.d.ts.map | 1 + types/Nest/Core/Individual.d.ts | 48 + types/Nest/Core/Individual.d.ts.map | 1 + types/Nest/Core/NestCache.d.ts | 19 + types/Nest/Core/NestCache.d.ts.map | 1 + types/Nest/Core/NestDatabase.d.ts | 16 + types/Nest/Core/NestDatabase.d.ts.map | 1 + types/Nest/Core/OptimizeMachine.d.ts | 34 + types/Nest/Core/OptimizeMachine.d.ts.map | 1 + types/Nest/Core/OptimizeWorker.worker.d.ts | 6 + .../Nest/Core/OptimizeWorker.worker.d.ts.map | 1 + types/Nest/Core/Part.d.ts | 64 + types/Nest/Core/Part.d.ts.map | 1 + types/Nest/Core/PartState.d.ts | 19 + types/Nest/Core/PartState.d.ts.map | 1 + types/Nest/Core/Path.d.ts | 56 + types/Nest/Core/Path.d.ts.map | 1 + types/Nest/Core/PathGenerator.d.ts | 26 + types/Nest/Core/PathGenerator.d.ts.map | 1 + types/Nest/Core/PlaceType.d.ts | 6 + types/Nest/Core/PlaceType.d.ts.map | 1 + types/Nest/Test/PlaceUtil.d.ts | 11 + types/Nest/Test/PlaceUtil.d.ts.map | 1 + types/Nest/Test/TestData.d.ts | 5 + types/Nest/Test/TestData.d.ts.map | 1 + types/Nest/Test/TestHull.d.ts | 4 + types/Nest/Test/TestHull.d.ts.map | 1 + types/Nest/Test/TestNFP.d.ts | 5 + types/Nest/Test/TestNFP.d.ts.map | 1 + types/Nest/Test/TestOffset.d.ts | 7 + types/Nest/Test/TestOffset.d.ts.map | 1 + types/Nest/Test/TestPlace.d.ts | 5 + types/Nest/Test/TestPlace.d.ts.map | 1 + types/Nest/Test/TestSimply.d.ts | 5 + types/Nest/Test/TestSimply.d.ts.map | 1 + types/Nest/Test/TestVariant.d.ts | 8 + types/Nest/Test/TestVariant.d.ts.map | 1 + types/Nest/Test/TestYH2.d.ts | 5 + types/Nest/Test/TestYH2.d.ts.map | 1 + types/Nest/Test/TestYHSingle.d.ts | 5 + types/Nest/Test/TestYHSingle.d.ts.map | 1 + types/Nest/Test/TestYHWorker.d.ts | 5 + types/Nest/Test/TestYHWorker.d.ts.map | 1 + types/Production/GetProjectedArea.d.ts | 3 + types/Production/GetProjectedArea.d.ts.map | 1 + types/Production/ParseBoardHoleData.d.ts | 32 + types/Production/ParseBoardHoleData.d.ts.map | 1 + types/Production/Product.d.ts | 182 + types/Production/Product.d.ts.map | 1 + types/Reactor/CommandReactor.d.ts | 14 + types/Reactor/CommandReactor.d.ts.map | 1 + types/Reactor/RelevanceCuttingReactor.d.ts | 6 + .../Reactor/RelevanceCuttingReactor.d.ts.map | 1 + types/Reactor/SyncDataReactor.d.ts | 7 + types/Reactor/SyncDataReactor.d.ts.map | 1 + types/UI/Components/Asset.d.ts | 30 + types/UI/Components/Asset.d.ts.map | 1 + types/UI/Components/BBS/BBSCommon.d.ts | 95 + types/UI/Components/BBS/BBSCommon.d.ts.map | 1 + types/UI/Components/BBS/BBSEditor.d.ts | 14 + types/UI/Components/BBS/BBSEditor.d.ts.map | 1 + types/UI/Components/BBS/BoardInfosList.d.ts | 52 + .../UI/Components/BBS/BoardInfosList.d.ts.map | 1 + types/UI/Components/BBS/BoardLIst.d.ts | 35 + types/UI/Components/BBS/BoardLIst.d.ts.map | 1 + .../UI/Components/BBS/LookOverBoardInfos.d.ts | 72 + .../BBS/LookOverBoardInfos.d.ts.map | 1 + .../UI/Components/Board/BehindBoardModal.d.ts | 11 + .../Board/BehindBoardModal.d.ts.map | 1 + types/UI/Components/Board/BoardCommon.d.ts | 135 + .../UI/Components/Board/BoardCommon.d.ts.map | 1 + .../UI/Components/Board/BoardConfigModal.d.ts | 35 + .../Board/BoardConfigModal.d.ts.map | 1 + .../UI/Components/Board/BoardFindCommon.d.ts | 53 + .../Components/Board/BoardFindCommon.d.ts.map | 1 + .../UI/Components/Board/BoardFindModify.d.ts | 22 + .../Components/Board/BoardFindModify.d.ts.map | 1 + types/UI/Components/Board/BoardModal.d.ts | 52 + types/UI/Components/Board/BoardModal.d.ts.map | 1 + .../UI/Components/Board/BoardOptionModal.d.ts | 69 + .../Board/BoardOptionModal.d.ts.map | 1 + .../Components/Board/BoardProcessModal.d.ts | 34 + .../Board/BoardProcessModal.d.ts.map | 1 + .../Components/Board/ClosingStripModal.d.ts | 5 + .../Board/ClosingStripModal.d.ts.map | 1 + .../Components/Board/CommonBoardOption.d.ts | 92 + .../Board/CommonBoardOption.d.ts.map | 1 + .../UI/Components/Board/Door/DoorCommon.d.ts | 31 + .../Components/Board/Door/DoorCommon.d.ts.map | 1 + .../Board/Door/DoorConfigModal.d.ts | 12 + .../Board/Door/DoorConfigModal.d.ts.map | 1 + types/UI/Components/Board/Door/DoorModal.d.ts | 18 + .../Components/Board/Door/DoorModal.d.ts.map | 1 + .../Board/Door/DoorPreviewComponent.d.ts | 13 + .../Board/Door/DoorPreviewComponent.d.ts.map | 1 + .../Board/Door/DoorPreviewItem.d.ts | 30 + .../Board/Door/DoorPreviewItem.d.ts.map | 1 + types/UI/Components/Board/DrillCommon.d.ts | 33 + .../UI/Components/Board/DrillCommon.d.ts.map | 1 + types/UI/Components/Board/DrillRules.d.ts | 9 + types/UI/Components/Board/DrillRules.d.ts.map | 1 + types/UI/Components/Board/GangDrillModal.d.ts | 19 + .../Components/Board/GangDrillModal.d.ts.map | 1 + .../Board/LastExtractBoardContour.d.ts | 5 + .../Board/LastExtractBoardContour.d.ts.map | 1 + .../UI/Components/Board/LayerBoardModal.d.ts | 5 + .../Components/Board/LayerBoardModal.d.ts.map | 1 + types/UI/Components/Board/Rect2Winerack.d.ts | 16 + .../Components/Board/Rect2Winerack.d.ts.map | 1 + .../UI/Components/Board/SingleBoardModal.d.ts | 5 + .../Board/SingleBoardModal.d.ts.map | 1 + .../Components/Board/SpecialBoardModal.d.ts | 14 + .../Board/SpecialBoardModal.d.ts.map | 1 + .../Components/Board/TopBottomBoardModal.d.ts | 5 + .../Board/TopBottomBoardModal.d.ts.map | 1 + .../Board/UpdateBoardInfointerface.d.ts | 49 + .../Board/UpdateBoardInfointerface.d.ts.map | 1 + .../UI/Components/Board/UpdateBoardInfos.d.ts | 16 + .../Board/UpdateBoardInfos.d.ts.map | 1 + types/UI/Components/Board/UserConfig.d.ts | 43 + types/UI/Components/Board/UserConfig.d.ts.map | 1 + .../Components/Board/VerticalBoardModal.d.ts | 5 + .../Board/VerticalBoardModal.d.ts.map | 1 + types/UI/Components/Board/WineRack.d.ts | 16 + types/UI/Components/Board/WineRack.d.ts.map | 1 + .../Components/Board/leftRightBoardModal.d.ts | 5 + .../Board/leftRightBoardModal.d.ts.map | 1 + .../UI/Components/BoardBatchCurtailModal.d.ts | 25 + .../BoardBatchCurtailModal.d.ts.map | 1 + types/UI/Components/Button.d.ts | 5 + types/UI/Components/Button.d.ts.map | 1 + .../CameraControlButton/CameraControlBtn.d.ts | 26 + .../CameraControlBtn.d.ts.map | 1 + .../CameraControlButton/IVisualType.d.ts | 8 + .../CameraControlButton/IVisualType.d.ts.map | 1 + types/UI/Components/Carousel.d.ts | 20 + types/UI/Components/Carousel.d.ts.map | 1 + types/UI/Components/ColorPanel.d.ts | 22 + types/UI/Components/ColorPanel.d.ts.map | 1 + .../Components/CommandInput/CommandInput.d.ts | 11 + .../CommandInput/CommandInput.d.ts.map | 1 + .../CommandInput/CommandInputManage.d.ts | 6 + .../CommandInput/CommandInputManage.d.ts.map | 1 + .../CommandInput/CommandInputUI.d.ts | 24 + .../CommandInput/CommandInputUI.d.ts.map | 1 + .../CommandInput/TransparentTerminal.d.ts | 8 + .../CommandInput/TransparentTerminal.d.ts.map | 1 + types/UI/Components/CommandLine.d.ts | 8 + types/UI/Components/CommandLine.d.ts.map | 1 + types/UI/Components/CommandLineContainer.d.ts | 11 + .../Components/CommandLineContainer.d.ts.map | 1 + .../UI/Components/CommandPanel/CmdPanel.d.ts | 22 + .../Components/CommandPanel/CmdPanel.d.ts.map | 1 + .../Components/CommandPanel/CommandItem.d.ts | 24 + .../CommandPanel/CommandItem.d.ts.map | 1 + .../Components/CommandPanel/CommandList.d.ts | 21 + .../CommandPanel/CommandList.d.ts.map | 1 + types/UI/Components/Common.d.ts | 17 + types/UI/Components/Common.d.ts.map | 1 + types/UI/Components/Common/CommonIframe.d.ts | 15 + .../Components/Common/CommonIframe.d.ts.map | 1 + types/UI/Components/Common/Confirm.d.ts | 33 + types/UI/Components/Common/Confirm.d.ts.map | 1 + types/UI/Components/Common/Datalist.d.ts | 36 + types/UI/Components/Common/Datalist.d.ts.map | 1 + types/UI/Components/Common/PopoverButton.d.ts | 23 + .../Components/Common/PopoverButton.d.ts.map | 1 + types/UI/Components/ComponentObjectId.d.ts | 2 + .../UI/Components/ComponentObjectId.d.ts.map | 1 + .../ContextMenu/KeyWordContextMenu.d.ts | 11 + .../ContextMenu/KeyWordContextMenu.d.ts.map | 1 + types/UI/Components/ContextMenu/MenuItem.d.ts | 62 + .../Components/ContextMenu/MenuItem.d.ts.map | 1 + .../EntityModal/EntityColorList.d.ts | 23 + .../EntityModal/EntityColorList.d.ts.map | 1 + .../Components/EntityModal/EntityModal.d.ts | 12 + .../EntityModal/EntityModal.d.ts.map | 1 + .../EntityModal/ExtrudeHoleModal.d.ts | 16 + .../EntityModal/ExtrudeHoleModal.d.ts.map | 1 + types/UI/Components/LatticeDrawer.d.ts | 13 + types/UI/Components/LatticeDrawer.d.ts.map | 1 + types/UI/Components/MainContent/Content.d.ts | 13 + .../Components/MainContent/Content.d.ts.map | 1 + types/UI/Components/MainContent/Login.d.ts | 18 + .../UI/Components/MainContent/Login.d.ts.map | 1 + .../Components/MainContent/MainContent.d.ts | 10 + .../MainContent/MainContent.d.ts.map | 1 + types/UI/Components/MainContent/Regist.d.ts | 32 + .../UI/Components/MainContent/Regist.d.ts.map | 1 + types/UI/Components/MaterialContainer.d.ts | 33 + .../UI/Components/MaterialContainer.d.ts.map | 1 + types/UI/Components/MaterialExplorer.d.ts | 18 + types/UI/Components/MaterialExplorer.d.ts.map | 1 + .../Components/Modal/ActivityLayerBoard.d.ts | 16 + .../Modal/ActivityLayerBoard.d.ts.map | 1 + types/UI/Components/Modal/ArrayModal.d.ts | 16 + types/UI/Components/Modal/ArrayModal.d.ts.map | 1 + types/UI/Components/Modal/CadModal.d.ts | 57 + types/UI/Components/Modal/CadModal.d.ts.map | 1 + .../Modal/DrillingTemplateList.d.ts | 33 + .../Modal/DrillingTemplateList.d.ts.map | 1 + .../Modal/DrillingTemplateManage.d.ts | 14 + .../Modal/DrillingTemplateManage.d.ts.map | 1 + types/UI/Components/Modal/FrameManager.d.ts | 17 + .../UI/Components/Modal/FrameManager.d.ts.map | 1 + types/UI/Components/Modal/HardwareModal.d.ts | 69 + .../Components/Modal/HardwareModal.d.ts.map | 1 + types/UI/Components/Modal/InsertModal.d.ts | 10 + .../UI/Components/Modal/InsertModal.d.ts.map | 1 + types/UI/Components/Modal/InterfereModal.d.ts | 18 + .../Components/Modal/InterfereModal.d.ts.map | 1 + types/UI/Components/Modal/LightModal.d.ts | 31 + types/UI/Components/Modal/LightModal.d.ts.map | 1 + types/UI/Components/Modal/MaskManage.d.ts | 17 + types/UI/Components/Modal/MaskManage.d.ts.map | 1 + types/UI/Components/Modal/ModalContainer.d.ts | 81 + .../Components/Modal/ModalContainer.d.ts.map | 1 + types/UI/Components/Modal/ModalInterface.d.ts | 19 + .../Components/Modal/ModalInterface.d.ts.map | 1 + types/UI/Components/Modal/ModalsManage.d.ts | 67 + .../UI/Components/Modal/ModalsManage.d.ts.map | 1 + .../Modal/OptionModal/ChaiDanModal.d.ts | 7 + .../Modal/OptionModal/ChaiDanModal.d.ts.map | 1 + .../Modal/OptionModal/ConfigDialog.d.ts | 36 + .../Modal/OptionModal/ConfigDialog.d.ts.map | 1 + .../Modal/OptionModal/DisplayConfigPanel.d.ts | 14 + .../OptionModal/DisplayConfigPanel.d.ts.map | 1 + .../Modal/OptionModal/DrawConfigPanel.d.ts | 18 + .../OptionModal/DrawConfigPanel.d.ts.map | 1 + .../Modal/OptionModal/FrameList.d.ts | 35 + .../Modal/OptionModal/FrameList.d.ts.map | 1 + .../Modal/OptionModal/PerformancePanel.d.ts | 10 + .../OptionModal/PerformancePanel.d.ts.map | 1 + .../Modal/OptionModal/SystemConfig.d.ts | 9 + .../Modal/OptionModal/SystemConfig.d.ts.map | 1 + .../Modal/ProcessingGroupModal.d.ts | 81 + .../Modal/ProcessingGroupModal.d.ts.map | 1 + types/UI/Components/Modal/RecycleBin.d.ts | 40 + types/UI/Components/Modal/RecycleBin.d.ts.map | 1 + types/UI/Components/Modal/SavaAsModal.d.ts | 24 + .../UI/Components/Modal/SavaAsModal.d.ts.map | 1 + types/UI/Components/Modal/SnapModal.d.ts | 24 + types/UI/Components/Modal/SnapModal.d.ts.map | 1 + types/UI/Components/Panel.d.ts | 33 + types/UI/Components/Panel.d.ts.map | 1 + .../RightPanel/BoardPropsComponent.d.ts | 69 + .../RightPanel/BoardPropsComponent.d.ts.map | 1 + .../RightPanel/BoardTemplatePanel.d.ts | 7 + .../RightPanel/BoardTemplatePanel.d.ts.map | 1 + .../RightPanel/CommonMetalPanel.d.ts | 17 + .../RightPanel/CommonMetalPanel.d.ts.map | 1 + .../RightPanel/CompositeMetalsPanel.d.ts | 12 + .../RightPanel/CompositeMetalsPanel.d.ts.map | 1 + .../Components/RightPanel/DrillComponent.d.ts | 10 + .../RightPanel/DrillComponent.d.ts.map | 1 + .../UI/Components/RightPanel/MatalsPanel.d.ts | 11 + .../RightPanel/MatalsPanel.d.ts.map | 1 + .../RightPanel/Modeling/KnifeList.d.ts | 40 + .../RightPanel/Modeling/KnifeList.d.ts.map | 1 + .../RightPanel/Modeling/KnifeManage.d.ts | 26 + .../RightPanel/Modeling/KnifeManage.d.ts.map | 1 + .../Modeling/ModelingComponent2.d.ts | 11 + .../Modeling/ModelingComponent2.d.ts.map | 1 + .../RightPanel/Modeling/knifePropsModal.d.ts | 11 + .../Modeling/knifePropsModal.d.ts.map | 1 + .../RightPanel/ModelingComponent.d.ts | 18 + .../RightPanel/ModelingComponent.d.ts.map | 1 + .../UI/Components/RightPanel/RightPanel.d.ts | 29 + .../Components/RightPanel/RightPanel.d.ts.map | 1 + .../RightPanel/RightPanelButton.d.ts | 22 + .../RightPanel/RightPanelButton.d.ts.map | 1 + .../RightPanel/RightPanelInterface.d.ts | 44 + .../RightPanel/RightPanelInterface.d.ts.map | 1 + .../UI/Components/RightPanel/ScenePanel.d.ts | 16 + .../Components/RightPanel/ScenePanel.d.ts.map | 1 + .../RightPanel/SealingComponent.d.ts | 10 + .../RightPanel/SealingComponent.d.ts.map | 1 + .../RightPanel/TemplateParamPanel.d.ts | 99 + .../RightPanel/TemplateParamPanel.d.ts.map | 1 + .../RightPanel/ToplineMetalsPanel.d.ts | 10 + .../RightPanel/ToplineMetalsPanel.d.ts.map | 1 + types/UI/Components/RotateLayerBoard.d.ts | 42 + types/UI/Components/RotateLayerBoard.d.ts.map | 1 + types/UI/Components/SelectMarquee.d.ts | 9 + types/UI/Components/SelectMarquee.d.ts.map | 1 + .../Components/SettingPanel/SettingPanel.d.ts | 12 + .../SettingPanel/SettingPanel.d.ts.map | 1 + types/UI/Components/SimpleDialog.d.ts | 11 + types/UI/Components/SimpleDialog.d.ts.map | 1 + .../Components/SourceManage/CommonPanel.d.ts | 122 + .../SourceManage/CommonPanel.d.ts.map | 1 + .../UI/Components/SourceManage/FileList.d.ts | 28 + .../Components/SourceManage/FileList.d.ts.map | 1 + .../UI/Components/SourceManage/FilePanel.d.ts | 26 + .../SourceManage/FilePanel.d.ts.map | 1 + .../SourceManage/HandleDirComponent.d.ts | 25 + .../SourceManage/HandleDirComponent.d.ts.map | 1 + types/UI/Components/SourceManage/ImgList.d.ts | 19 + .../Components/SourceManage/ImgList.d.ts.map | 1 + .../Components/SourceManage/MaterialList.d.ts | 24 + .../SourceManage/MaterialList.d.ts.map | 1 + .../SourceManage/MaterialPanel.d.ts | 20 + .../SourceManage/MaterialPanel.d.ts.map | 1 + .../Components/SourceManage/Pagination.d.ts | 26 + .../SourceManage/Pagination.d.ts.map | 1 + .../SourceManage/SelectDataList.d.ts | 22 + .../SourceManage/SelectDataList.d.ts.map | 1 + .../Components/SourceManage/SoucePanel.d.ts | 20 + .../SourceManage/SoucePanel.d.ts.map | 1 + .../Components/SourceManage/SpaceInfoBar.d.ts | 9 + .../SourceManage/SpaceInfoBar.d.ts.map | 1 + .../Components/SourceManage/TexturePanel.d.ts | 20 + .../SourceManage/TexturePanel.d.ts.map | 1 + .../UI/Components/SourceManage/UploadCom.d.ts | 34 + .../SourceManage/UploadCom.d.ts.map | 1 + types/UI/Components/SpeechBox/SpeechBox.d.ts | 10 + .../Components/SpeechBox/SpeechBox.d.ts.map | 1 + .../Components/SpeechBox/SpeechBoxManage.d.ts | 5 + .../SpeechBox/SpeechBoxManage.d.ts.map | 1 + types/UI/Components/Status.d.ts | 11 + types/UI/Components/Status.d.ts.map | 1 + types/UI/Components/Template/ActionTree.d.ts | 16 + .../Components/Template/ActionTree.d.ts.map | 1 + .../Components/Template/GetRoomCabName.d.ts | 19 + .../Template/GetRoomCabName.d.ts.map | 1 + types/UI/Components/Template/KuGanDetail.d.ts | 13 + .../Components/Template/KuGanDetail.d.ts.map | 1 + .../Template/TemplateActionDiglog.d.ts | 37 + .../Template/TemplateActionDiglog.d.ts.map | 1 + .../Template/TemplateActionList.d.ts | 38 + .../Template/TemplateActionList.d.ts.map | 1 + .../Template/TemplateComponent.d.ts | 47 + .../Template/TemplateComponent.d.ts.map | 1 + .../Components/Template/TemplateDetail.d.ts | 32 + .../Template/TemplateDetail.d.ts.map | 1 + .../Components/Template/TemplateEditor.d.ts | 22 + .../Template/TemplateEditor.d.ts.map | 1 + .../Template/TemplateInterface.d.ts | 9 + .../Template/TemplateInterface.d.ts.map | 1 + .../UI/Components/Template/TemplateList.d.ts | 50 + .../Components/Template/TemplateList.d.ts.map | 1 + .../Template/TemplateParamList.d.ts | 25 + .../Template/TemplateParamList.d.ts.map | 1 + .../Components/Template/TemplateSaveDir.d.ts | 18 + .../Template/TemplateSaveDir.d.ts.map | 1 + .../Components/Template/TemplateSelect.d.ts | 20 + .../Template/TemplateSelect.d.ts.map | 1 + .../Components/Template/TemplateTagCom.d.ts | 29 + .../Template/TemplateTagCom.d.ts.map | 1 + types/UI/Components/Template/ToplineList.d.ts | 35 + .../Components/Template/ToplineList.d.ts.map | 1 + .../UI/Components/Template/ToplineManage.d.ts | 22 + .../Template/ToplineManage.d.ts.map | 1 + types/UI/Components/Toaster.d.ts | 35 + types/UI/Components/Toaster.d.ts.map | 1 + .../Components/ToolBar/PropertiesPanel.d.ts | 13 + .../ToolBar/PropertiesPanel.d.ts.map | 1 + .../Components/ToolBar/PropertiesStore.d.ts | 5 + .../ToolBar/PropertiesStore.d.ts.map | 1 + .../UI/Components/ToolBar/Properties_Dim.d.ts | 18 + .../ToolBar/Properties_Dim.d.ts.map | 1 + .../Components/ToolBar/Properties_Text.d.ts | 19 + .../ToolBar/Properties_Text.d.ts.map | 1 + types/UI/Components/ToolBar/ToolBar.d.ts | 10 + types/UI/Components/ToolBar/ToolBar.d.ts.map | 1 + .../Components/ToolBar/ToolbarContainer.d.ts | 8 + .../ToolBar/ToolbarContainer.d.ts.map | 1 + .../Components/TopToolBar/DimensionPanel.d.ts | 8 + .../TopToolBar/DimensionPanel.d.ts.map | 1 + .../Components/TopToolBar/DrawingPanel.d.ts | 8 + .../TopToolBar/DrawingPanel.d.ts.map | 1 + .../TopToolBar/FileOperationPanel.d.ts | 8 + .../TopToolBar/FileOperationPanel.d.ts.map | 1 + .../UI/Components/TopToolBar/RenderPanel.d.ts | 8 + .../TopToolBar/RenderPanel.d.ts.map | 1 + .../TopToolBar/TemplateAndModulePanel.d.ts | 8 + .../TemplateAndModulePanel.d.ts.map | 1 + .../TopToolBar/ThreeDEntityPanel.d.ts | 8 + .../TopToolBar/ThreeDEntityPanel.d.ts.map | 1 + .../UI/Components/TopToolBar/ToolsBlock.d.ts | 22 + .../Components/TopToolBar/ToolsBlock.d.ts.map | 1 + .../TopToolBar/ToolsBlockStore.d.ts | 9 + .../TopToolBar/ToolsBlockStore.d.ts.map | 1 + .../UI/Components/TopToolBar/TopToolBar.d.ts | 6 + .../Components/TopToolBar/TopToolBar.d.ts.map | 1 + .../TopToolBar/TopToolBarInterface.d.ts | 36 + .../TopToolBar/TopToolBarInterface.d.ts.map | 1 + .../commandLineInput/InputHint.d.ts | 40 + .../commandLineInput/InputHint.d.ts.map | 1 + types/UI/DynamicPrompt/AngleDynamicInput.d.ts | 14 + .../DynamicPrompt/AngleDynamicInput.d.ts.map | 1 + types/UI/DynamicPrompt/DynamicInputBase.d.ts | 28 + .../DynamicPrompt/DynamicInputBase.d.ts.map | 1 + .../UI/DynamicPrompt/DynamicInputManage.d.ts | 27 + .../DynamicPrompt/DynamicInputManage.d.ts.map | 1 + .../DynamicPrompt/GetDistancePromptBlock.d.ts | 12 + .../GetDistancePromptBlock.d.ts.map | 1 + .../UI/DynamicPrompt/GetPointPromptBlock.d.ts | 33 + .../GetPointPromptBlock.d.ts.map | 1 + .../GetRectPointPromptBlock.d.ts | 17 + .../GetRectPointPromptBlock.d.ts.map | 1 + types/UI/DynamicPrompt/PromptBlock.d.ts | 19 + types/UI/DynamicPrompt/PromptBlock.d.ts.map | 1 + types/UI/DynamicPrompt/RealDynamicInput.d.ts | 10 + .../DynamicPrompt/RealDynamicInput.d.ts.map | 1 + types/UI/Editor/Asset/Asset.d.ts | 18 + types/UI/Editor/Asset/Asset.d.ts.map | 1 + types/UI/Editor/Asset/MaterialRenderer.d.ts | 16 + .../UI/Editor/Asset/MaterialRenderer.d.ts.map | 1 + types/UI/Editor/Material/dialog.d.ts | 2 + types/UI/Editor/Material/dialog.d.ts.map | 1 + types/UI/IconEnum.d.ts | 185 + types/UI/IconEnum.d.ts.map | 1 + types/UI/JsPlugin/Dialog.d.ts | 18 + types/UI/JsPlugin/Dialog.d.ts.map | 1 + types/UI/JsPlugin/InputAutoSize.d.ts | 13 + types/UI/JsPlugin/InputAutoSize.d.ts.map | 1 + types/UI/JsPlugin/SelectMarquee.d.ts | 23 + types/UI/JsPlugin/SelectMarquee.d.ts.map | 1 + types/UI/JsPlugin/Symbol.d.ts | 30 + types/UI/JsPlugin/Symbol.d.ts.map | 1 + types/UI/Layout/ApplicationLayout.d.ts | 16 + types/UI/Layout/ApplicationLayout.d.ts.map | 1 + types/UI/Layout/LayoutOnSizeEventManage.d.ts | 12 + .../Layout/LayoutOnSizeEventManage.d.ts.map | 1 + types/UI/Layout/LayoutUtils.d.ts | 10 + types/UI/Layout/LayoutUtils.d.ts.map | 1 + types/UI/Layout/MaterialEditorLayout.d.ts | 17 + types/UI/Layout/MaterialEditorLayout.d.ts.map | 1 + types/UI/MaterialEditor/GoodsList.d.ts | 34 + types/UI/MaterialEditor/GoodsList.d.ts.map | 1 + types/UI/MaterialEditor/MaterialCommon.d.ts | 77 + .../UI/MaterialEditor/MaterialCommon.d.ts.map | 1 + .../MaterialEditor/MaterialEditorContent.d.ts | 15 + .../MaterialEditorContent.d.ts.map | 1 + types/UI/MaterialEditor/MaterialLinkShop.d.ts | 16 + .../MaterialEditor/MaterialLinkShop.d.ts.map | 1 + types/UI/MaterialEditor/MaterialShop.d.ts | 8 + types/UI/MaterialEditor/MaterialShop.d.ts.map | 1 + types/UI/MaterialEditor/PropertiesPane.d.ts | 8 + .../UI/MaterialEditor/PropertiesPane.d.ts.map | 1 + types/UI/MaterialEditor/TextureContent.d.ts | 11 + .../UI/MaterialEditor/TextureContent.d.ts.map | 1 + types/UI/MaterialEditor/TextureItem.d.ts | 18 + types/UI/MaterialEditor/TextureItem.d.ts.map | 1 + types/UI/MaterialEditor/TextureList.d.ts | 21 + types/UI/MaterialEditor/TextureList.d.ts.map | 1 + types/UI/Store/ActivityLayerBoardStore.d.ts | 21 + .../UI/Store/ActivityLayerBoardStore.d.ts.map | 1 + types/UI/Store/BBSEditorStore.d.ts | 15 + types/UI/Store/BBSEditorStore.d.ts.map | 1 + types/UI/Store/BoardFindInterface.d.ts | 106 + types/UI/Store/BoardFindInterface.d.ts.map | 1 + types/UI/Store/BoardFindModifyStore.d.ts | 19 + types/UI/Store/BoardFindModifyStore.d.ts.map | 1 + types/UI/Store/BoardInterface.d.ts | 288 + types/UI/Store/BoardInterface.d.ts.map | 1 + types/UI/Store/BoardStore.d.ts | 120 + types/UI/Store/BoardStore.d.ts.map | 1 + types/UI/Store/CommandStore.d.ts | 20 + types/UI/Store/CommandStore.d.ts.map | 1 + .../DoorDrawerStore/DoorDrawerStore.d.ts | 69 + .../DoorDrawerStore/DoorDrawerStore.d.ts.map | 1 + types/UI/Store/DoorDrawerStore/DoorStore.d.ts | 19 + .../Store/DoorDrawerStore/DoorStore.d.ts.map | 1 + .../UI/Store/DoorDrawerStore/DrawerStore.d.ts | 15 + .../DoorDrawerStore/DrawerStore.d.ts.map | 1 + types/UI/Store/DoorInterface.d.ts | 123 + types/UI/Store/DoorInterface.d.ts.map | 1 + types/UI/Store/DownPanelStore.d.ts | 52 + types/UI/Store/DownPanelStore.d.ts.map | 1 + types/UI/Store/DrillStore.d.ts | 25 + types/UI/Store/DrillStore.d.ts.map | 1 + types/UI/Store/EntityStore.d.ts | 14 + types/UI/Store/EntityStore.d.ts.map | 1 + types/UI/Store/KuGanStore.d.ts | 16 + types/UI/Store/KuGanStore.d.ts.map | 1 + types/UI/Store/LatticeDrawerStore.d.ts | 11 + types/UI/Store/LatticeDrawerStore.d.ts.map | 1 + types/UI/Store/LatticeInterface.d.ts | 28 + types/UI/Store/LatticeInterface.d.ts.map | 1 + types/UI/Store/MaterialStore.d.ts | 42 + types/UI/Store/MaterialStore.d.ts.map | 1 + types/UI/Store/Rect2WinerackStore.d.ts | 18 + types/UI/Store/Rect2WinerackStore.d.ts.map | 1 + .../RightPanelStore/BoardEdgesEditor.d.ts | 21 + .../RightPanelStore/BoardEdgesEditor.d.ts.map | 1 + .../Store/RightPanelStore/DrillingStore.d.ts | 12 + .../RightPanelStore/DrillingStore.d.ts.map | 1 + .../Store/RightPanelStore/HardwareStore.d.ts | 34 + .../RightPanelStore/HardwareStore.d.ts.map | 1 + .../UI/Store/RightPanelStore/LightStore.d.ts | 56 + .../Store/RightPanelStore/LightStore.d.ts.map | 1 + .../Store/RightPanelStore/Modeling2Store.d.ts | 47 + .../RightPanelStore/Modeling2Store.d.ts.map | 1 + .../Store/RightPanelStore/ModelingStore.d.ts | 19 + .../RightPanelStore/ModelingStore.d.ts.map | 1 + .../RightPanelStore/RightPanelStore.d.ts | 28 + .../RightPanelStore/RightPanelStore.d.ts.map | 1 + .../Store/RightPanelStore/SealingStore.d.ts | 11 + .../RightPanelStore/SealingStore.d.ts.map | 1 + types/UI/Store/TemplateEditorStore.d.ts | 23 + types/UI/Store/TemplateEditorStore.d.ts.map | 1 + types/UI/Store/TextureStore.d.ts | 21 + types/UI/Store/TextureStore.d.ts.map | 1 + types/UI/Store/TopPanelStore.d.ts | 39 + types/UI/Store/TopPanelStore.d.ts.map | 1 + types/UI/Store/UpdateBoardInfoStore.d.ts | 19 + types/UI/Store/UpdateBoardInfoStore.d.ts.map | 1 + types/UI/Store/UserConfigStore.d.ts | 46 + types/UI/Store/UserConfigStore.d.ts.map | 1 + types/UI/Store/WineRackInterface.d.ts | 60 + types/UI/Store/WineRackInterface.d.ts.map | 1 + types/UI/Store/WineRackStore.d.ts | 13 + types/UI/Store/WineRackStore.d.ts.map | 1 + types/UI/Store/drillInterface.d.ts | 53 + types/UI/Store/drillInterface.d.ts.map | 1 + types/WebCADView/WebCADView.d.ts | 49 + types/WebCADView/WebCADView.d.ts.map | 1 + types/api.d.ts | 12 + types/api.d.ts.map | 1 + types/csg/core/CAG.d.ts | 25 + types/csg/core/CAG.d.ts.map | 1 + types/csg/core/CAGFactories.d.ts | 12 + types/csg/core/CAGFactories.d.ts.map | 1 + types/csg/core/CSG.d.ts | 95 + types/csg/core/CSG.d.ts.map | 1 + types/csg/core/FuzzyFactory.d.ts | 7 + types/csg/core/FuzzyFactory.d.ts.map | 1 + types/csg/core/FuzzyFactory2d.d.ts | 10 + types/csg/core/FuzzyFactory2d.d.ts.map | 1 + types/csg/core/FuzzyFactory3d.d.ts | 13 + types/csg/core/FuzzyFactory3d.d.ts.map | 1 + types/csg/core/Geometry2CSG.d.ts | 7 + types/csg/core/Geometry2CSG.d.ts.map | 1 + types/csg/core/constants.d.ts | 8 + types/csg/core/constants.d.ts.map | 1 + types/csg/core/math/IsMirrot.d.ts | 3 + types/csg/core/math/IsMirrot.d.ts.map | 1 + types/csg/core/math/Line2.d.ts | 15 + types/csg/core/math/Line2.d.ts.map | 1 + types/csg/core/math/OrthoNormalBasis.d.ts | 17 + types/csg/core/math/OrthoNormalBasis.d.ts.map | 1 + types/csg/core/math/Plane.d.ts | 16 + types/csg/core/math/Plane.d.ts.map | 1 + types/csg/core/math/Polygon3.d.ts | 51 + types/csg/core/math/Polygon3.d.ts.map | 1 + types/csg/core/math/Side.d.ts | 12 + types/csg/core/math/Side.d.ts.map | 1 + types/csg/core/math/Vector2.d.ts | 9 + types/csg/core/math/Vector2.d.ts.map | 1 + types/csg/core/math/Vector3.d.ts | 10 + types/csg/core/math/Vector3.d.ts.map | 1 + types/csg/core/math/Vertex2.d.ts | 9 + types/csg/core/math/Vertex2.d.ts.map | 1 + types/csg/core/math/Vertex3.d.ts | 15 + types/csg/core/math/Vertex3.d.ts.map | 1 + types/csg/core/math/lineUtils.d.ts | 3 + types/csg/core/math/lineUtils.d.ts.map | 1 + .../math/reTesselateCoplanarPolygons.d.ts | 3 + .../math/reTesselateCoplanarPolygons.d.ts.map | 1 + types/csg/core/trees.d.ts | 51 + types/csg/core/trees.d.ts.map | 1 + types/csg/core/utils.d.ts | 6 + types/csg/core/utils.d.ts.map | 1 + types/csg/core/utils/cagValidation.d.ts | 3 + types/csg/core/utils/cagValidation.d.ts.map | 1 + types/csg/core/utils/canonicalize.d.ts | 13 + types/csg/core/utils/canonicalize.d.ts.map | 1 + types/csg/core/utils/csgMeasurements.d.ts | 11 + types/csg/core/utils/csgMeasurements.d.ts.map | 1 + types/csg/core/utils/retesellate.d.ts | 3 + types/csg/core/utils/retesellate.d.ts.map | 1 + types/index.d.ts | 5 + types/index.d.ts.map | 1 + types/ueapi.d.ts | 5 + types/ueapi.d.ts.map | 1 + types/webview.d.ts | 3 + types/webview.d.ts.map | 1 + 1750 files changed, 41088 insertions(+) create mode 100644 .gitignore create mode 100644 api.esm.js create mode 100644 api.esm.js.map create mode 100644 package.json create mode 100644 types/Add-on/999.d.ts create mode 100644 types/Add-on/999.d.ts.map create mode 100644 types/Add-on/ActivityLayerBoard.d.ts create mode 100644 types/Add-on/ActivityLayerBoard.d.ts.map create mode 100644 types/Add-on/AddPtOnBoard.d.ts create mode 100644 types/Add-on/AddPtOnBoard.d.ts.map create mode 100644 types/Add-on/Align.d.ts create mode 100644 types/Add-on/Align.d.ts.map create mode 100644 types/Add-on/Area.d.ts create mode 100644 types/Add-on/Area.d.ts.map create mode 100644 types/Add-on/Array.d.ts create mode 100644 types/Add-on/Array.d.ts.map create mode 100644 types/Add-on/AutoHoleFaceSetting.d.ts create mode 100644 types/Add-on/AutoHoleFaceSetting.d.ts.map create mode 100644 types/Add-on/Batch/BatchModifySealOrDrill.d.ts create mode 100644 types/Add-on/Batch/BatchModifySealOrDrill.d.ts.map create mode 100644 types/Add-on/Batch/FindModeingKnifes.d.ts create mode 100644 types/Add-on/Batch/FindModeingKnifes.d.ts.map create mode 100644 types/Add-on/BoardBatchCurtail.d.ts create mode 100644 types/Add-on/BoardBatchCurtail.d.ts.map create mode 100644 types/Add-on/BoardCutting/AutoCuttingReactor.d.ts create mode 100644 types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map create mode 100644 types/Add-on/BoardCutting/CuttingByFace.d.ts create mode 100644 types/Add-on/BoardCutting/CuttingByFace.d.ts.map create mode 100644 types/Add-on/BoardCutting/CuttingUtils.d.ts create mode 100644 types/Add-on/BoardCutting/CuttingUtils.d.ts.map create mode 100644 types/Add-on/BoardCutting/CuttingUtils2.d.ts create mode 100644 types/Add-on/BoardCutting/CuttingUtils2.d.ts.map create mode 100644 types/Add-on/BoardCutting/DeleteRelevance.d.ts create mode 100644 types/Add-on/BoardCutting/DeleteRelevance.d.ts.map create mode 100644 types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts create mode 100644 types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts.map create mode 100644 types/Add-on/BoardCutting/LinearCutting.d.ts create mode 100644 types/Add-on/BoardCutting/LinearCutting.d.ts.map create mode 100644 types/Add-on/BoardCutting/NonAssociativeCutting.d.ts create mode 100644 types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map create mode 100644 types/Add-on/BoardCutting/ReferenceCutting.d.ts create mode 100644 types/Add-on/BoardCutting/ReferenceCutting.d.ts.map create mode 100644 types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts create mode 100644 types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map create mode 100644 types/Add-on/BoardEditor/Board2Regions.d.ts create mode 100644 types/Add-on/BoardEditor/Board2Regions.d.ts.map create mode 100644 types/Add-on/BoardEditor/SerializeBoardData.d.ts create mode 100644 types/Add-on/BoardEditor/SerializeBoardData.d.ts.map create mode 100644 types/Add-on/BoardEditor/UpdateBoardInfos.d.ts create mode 100644 types/Add-on/BoardEditor/UpdateBoardInfos.d.ts.map create mode 100644 types/Add-on/BoardFindModify.d.ts create mode 100644 types/Add-on/BoardFindModify.d.ts.map create mode 100644 types/Add-on/BoolOperation.d.ts create mode 100644 types/Add-on/BoolOperation.d.ts.map create mode 100644 types/Add-on/Break.d.ts create mode 100644 types/Add-on/Break.d.ts.map create mode 100644 types/Add-on/BuyMaterial.d.ts create mode 100644 types/Add-on/BuyMaterial.d.ts.map create mode 100644 types/Add-on/ChangeColor.d.ts create mode 100644 types/Add-on/ChangeColor.d.ts.map create mode 100644 types/Add-on/ChangeColorByBoardMaterial.d.ts create mode 100644 types/Add-on/ChangeColorByBoardMaterial.d.ts.map create mode 100644 types/Add-on/CheckHoles.d.ts create mode 100644 types/Add-on/CheckHoles.d.ts.map create mode 100644 types/Add-on/CheckModeling.d.ts create mode 100644 types/Add-on/CheckModeling.d.ts.map create mode 100644 types/Add-on/CombinatAttributeBrush.d.ts create mode 100644 types/Add-on/CombinatAttributeBrush.d.ts.map create mode 100644 types/Add-on/CommandFeeding.d.ts create mode 100644 types/Add-on/CommandFeeding.d.ts.map create mode 100644 types/Add-on/Command_CombineEntity.d.ts create mode 100644 types/Add-on/Command_CombineEntity.d.ts.map create mode 100644 types/Add-on/Command_CommandPanel.d.ts create mode 100644 types/Add-on/Command_CommandPanel.d.ts.map create mode 100644 types/Add-on/Command_ExportObj.d.ts create mode 100644 types/Add-on/Command_ExportObj.d.ts.map create mode 100644 types/Add-on/Command_Option.d.ts create mode 100644 types/Add-on/Command_Option.d.ts.map create mode 100644 types/Add-on/Command_SetBRXAxis.d.ts create mode 100644 types/Add-on/Command_SetBRXAxis.d.ts.map create mode 100644 types/Add-on/Conver2Polyline.d.ts create mode 100644 types/Add-on/Conver2Polyline.d.ts.map create mode 100644 types/Add-on/Copy.d.ts create mode 100644 types/Add-on/Copy.d.ts.map create mode 100644 types/Add-on/CopyClip.d.ts create mode 100644 types/Add-on/CopyClip.d.ts.map create mode 100644 types/Add-on/CopyPoint.d.ts create mode 100644 types/Add-on/CopyPoint.d.ts.map create mode 100644 types/Add-on/CostumUCS.d.ts create mode 100644 types/Add-on/CostumUCS.d.ts.map create mode 100644 types/Add-on/CreateBoardFromData.d.ts create mode 100644 types/Add-on/CreateBoardFromData.d.ts.map create mode 100644 types/Add-on/DXFLoad.d.ts create mode 100644 types/Add-on/DXFLoad.d.ts.map create mode 100644 types/Add-on/DeleteCurve.d.ts create mode 100644 types/Add-on/DeleteCurve.d.ts.map create mode 100644 types/Add-on/Dist.d.ts create mode 100644 types/Add-on/Dist.d.ts.map create mode 100644 types/Add-on/Divide.d.ts create mode 100644 types/Add-on/Divide.d.ts.map create mode 100644 types/Add-on/DrawArc.d.ts create mode 100644 types/Add-on/DrawArc.d.ts.map create mode 100644 types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts create mode 100644 types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/BuildBoardTool.d.ts create mode 100644 types/Add-on/DrawBoard/BuildBoardTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/BuildLayerNailTool.d.ts create mode 100644 types/Add-on/DrawBoard/BuildLayerNailTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts create mode 100644 types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawBehindBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawBehindBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawBoardTool.d.ts create mode 100644 types/Add-on/DrawBoard/DrawBoardTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawClosingStrip.d.ts create mode 100644 types/Add-on/DrawBoard/DrawClosingStrip.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawDoor.d.ts create mode 100644 types/Add-on/DrawBoard/DrawDoor.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts create mode 100644 types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawDrawer.d.ts create mode 100644 types/Add-on/DrawBoard/DrawDrawer.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawLayerBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawLayerBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawSingleBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawSingleBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts create mode 100644 types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawTemplateByImport.d.ts create mode 100644 types/Add-on/DrawBoard/DrawTemplateByImport.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/DrawVerticalBoard.d.ts create mode 100644 types/Add-on/DrawBoard/DrawVerticalBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/EditorBoardTempate.d.ts create mode 100644 types/Add-on/DrawBoard/EditorBoardTempate.d.ts.map create mode 100644 types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts create mode 100644 types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts.map create mode 100644 types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts create mode 100644 types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts.map create mode 100644 types/Add-on/DrawBoard/ParseHinge.d.ts create mode 100644 types/Add-on/DrawBoard/ParseHinge.d.ts.map create mode 100644 types/Add-on/DrawBoard/SetHoleType.d.ts create mode 100644 types/Add-on/DrawBoard/SetHoleType.d.ts.map create mode 100644 types/Add-on/DrawCircle.d.ts create mode 100644 types/Add-on/DrawCircle.d.ts.map create mode 100644 types/Add-on/DrawCylinder.d.ts create mode 100644 types/Add-on/DrawCylinder.d.ts.map create mode 100644 types/Add-on/DrawDim/AutoDimBrs.d.ts create mode 100644 types/Add-on/DrawDim/AutoDimBrs.d.ts.map create mode 100644 types/Add-on/DrawDim/Command_DimContinue.d.ts create mode 100644 types/Add-on/DrawDim/Command_DimContinue.d.ts.map create mode 100644 types/Add-on/DrawDim/DeleteDim.d.ts create mode 100644 types/Add-on/DrawDim/DeleteDim.d.ts.map create mode 100644 types/Add-on/DrawDim/DimContinue.d.ts create mode 100644 types/Add-on/DrawDim/DimContinue.d.ts.map create mode 100644 types/Add-on/DrawDim/DimContinueAligen.d.ts create mode 100644 types/Add-on/DrawDim/DimContinueAligen.d.ts.map create mode 100644 types/Add-on/DrawDim/DimContinueLineAngular.d.ts create mode 100644 types/Add-on/DrawDim/DimContinueLineAngular.d.ts.map create mode 100644 types/Add-on/DrawDim/Draw2LineAngularDim.d.ts create mode 100644 types/Add-on/DrawDim/Draw2LineAngularDim.d.ts.map create mode 100644 types/Add-on/DrawDim/DrawAlignedDimension.d.ts create mode 100644 types/Add-on/DrawDim/DrawAlignedDimension.d.ts.map create mode 100644 types/Add-on/DrawDim/DrawDiameterDim.d.ts create mode 100644 types/Add-on/DrawDim/DrawDiameterDim.d.ts.map create mode 100644 types/Add-on/DrawDim/DrawLinearDimension.d.ts create mode 100644 types/Add-on/DrawDim/DrawLinearDimension.d.ts.map create mode 100644 types/Add-on/DrawDim/DrawRadiusDim.d.ts create mode 100644 types/Add-on/DrawDim/DrawRadiusDim.d.ts.map create mode 100644 types/Add-on/DrawDim/FastDim.d.ts create mode 100644 types/Add-on/DrawDim/FastDim.d.ts.map create mode 100644 types/Add-on/DrawDrilling/CheckDrawHole.d.ts create mode 100644 types/Add-on/DrawDrilling/CheckDrawHole.d.ts.map create mode 100644 types/Add-on/DrawDrilling/CheckHasHole.d.ts create mode 100644 types/Add-on/DrawDrilling/CheckHasHole.d.ts.map create mode 100644 types/Add-on/DrawDrilling/CollisionModal.d.ts create mode 100644 types/Add-on/DrawDrilling/CollisionModal.d.ts.map create mode 100644 types/Add-on/DrawDrilling/DeleteDrill.d.ts create mode 100644 types/Add-on/DrawDrilling/DeleteDrill.d.ts.map create mode 100644 types/Add-on/DrawDrilling/DrawDrilling.d.ts create mode 100644 types/Add-on/DrawDrilling/DrawDrilling.d.ts.map create mode 100644 types/Add-on/DrawDrilling/DrawDrillingTool.d.ts create mode 100644 types/Add-on/DrawDrilling/DrawDrillingTool.d.ts.map create mode 100644 types/Add-on/DrawDrilling/DrillConfig.d.ts create mode 100644 types/Add-on/DrawDrilling/DrillConfig.d.ts.map create mode 100644 types/Add-on/DrawDrilling/DrillingReactor.d.ts create mode 100644 types/Add-on/DrawDrilling/DrillingReactor.d.ts.map create mode 100644 types/Add-on/DrawDrilling/HoleUtils.d.ts create mode 100644 types/Add-on/DrawDrilling/HoleUtils.d.ts.map create mode 100644 types/Add-on/DrawDrilling/ReverseDrillFace.d.ts create mode 100644 types/Add-on/DrawDrilling/ReverseDrillFace.d.ts.map create mode 100644 types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts create mode 100644 types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts.map create mode 100644 types/Add-on/DrawEllipse.d.ts create mode 100644 types/Add-on/DrawEllipse.d.ts.map create mode 100644 types/Add-on/DrawExtrude.d.ts create mode 100644 types/Add-on/DrawExtrude.d.ts.map create mode 100644 types/Add-on/DrawFloor.d.ts create mode 100644 types/Add-on/DrawFloor.d.ts.map create mode 100644 types/Add-on/DrawGripStretch.d.ts create mode 100644 types/Add-on/DrawGripStretch.d.ts.map create mode 100644 types/Add-on/DrawLight/DrawPointLight.d.ts create mode 100644 types/Add-on/DrawLight/DrawPointLight.d.ts.map create mode 100644 types/Add-on/DrawLight/DrawRectAreaLight.d.ts create mode 100644 types/Add-on/DrawLight/DrawRectAreaLight.d.ts.map create mode 100644 types/Add-on/DrawLight/DrawSpotLight.d.ts create mode 100644 types/Add-on/DrawLight/DrawSpotLight.d.ts.map create mode 100644 types/Add-on/DrawLine.d.ts create mode 100644 types/Add-on/DrawLine.d.ts.map create mode 100644 types/Add-on/DrawPoint.d.ts create mode 100644 types/Add-on/DrawPoint.d.ts.map create mode 100644 types/Add-on/DrawPolyline.d.ts create mode 100644 types/Add-on/DrawPolyline.d.ts.map create mode 100644 types/Add-on/DrawRect.d.ts create mode 100644 types/Add-on/DrawRect.d.ts.map create mode 100644 types/Add-on/DrawRegion.d.ts create mode 100644 types/Add-on/DrawRegion.d.ts.map create mode 100644 types/Add-on/DrawRevolve.d.ts create mode 100644 types/Add-on/DrawRevolve.d.ts.map create mode 100644 types/Add-on/DrawSky.d.ts create mode 100644 types/Add-on/DrawSky.d.ts.map create mode 100644 types/Add-on/DrawSphere.d.ts create mode 100644 types/Add-on/DrawSphere.d.ts.map create mode 100644 types/Add-on/DrawSpline.d.ts create mode 100644 types/Add-on/DrawSpline.d.ts.map create mode 100644 types/Add-on/DrawTestReg.d.ts create mode 100644 types/Add-on/DrawTestReg.d.ts.map create mode 100644 types/Add-on/DrawText.d.ts create mode 100644 types/Add-on/DrawText.d.ts.map create mode 100644 types/Add-on/DrawTopline.d.ts create mode 100644 types/Add-on/DrawTopline.d.ts.map create mode 100644 types/Add-on/DrawViewport.d.ts create mode 100644 types/Add-on/DrawViewport.d.ts.map create mode 100644 types/Add-on/DrawWineRack/ConfigureWineRack.d.ts create mode 100644 types/Add-on/DrawWineRack/ConfigureWineRack.d.ts.map create mode 100644 types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts create mode 100644 types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts.map create mode 100644 types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts create mode 100644 types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts.map create mode 100644 types/Add-on/DrawWineRack/DrawWinRackTool.d.ts create mode 100644 types/Add-on/DrawWineRack/DrawWinRackTool.d.ts.map create mode 100644 types/Add-on/DrawWineRack/DrawWineRack.d.ts create mode 100644 types/Add-on/DrawWineRack/DrawWineRack.d.ts.map create mode 100644 types/Add-on/DrawWineRack/EditorWineRack.d.ts create mode 100644 types/Add-on/DrawWineRack/EditorWineRack.d.ts.map create mode 100644 types/Add-on/DrawWineRack/Polyline2Winerack.d.ts create mode 100644 types/Add-on/DrawWineRack/Polyline2Winerack.d.ts.map create mode 100644 types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts create mode 100644 types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts.map create mode 100644 types/Add-on/DrawZeroCircle.d.ts create mode 100644 types/Add-on/DrawZeroCircle.d.ts.map create mode 100644 types/Add-on/EndTempEditor.d.ts create mode 100644 types/Add-on/EndTempEditor.d.ts.map create mode 100644 types/Add-on/EntityMoveToZ0.d.ts create mode 100644 types/Add-on/EntityMoveToZ0.d.ts.map create mode 100644 types/Add-on/Entsel.d.ts create mode 100644 types/Add-on/Entsel.d.ts.map create mode 100644 types/Add-on/Erase.d.ts create mode 100644 types/Add-on/Erase.d.ts.map create mode 100644 types/Add-on/EraseLineAndArc.d.ts create mode 100644 types/Add-on/EraseLineAndArc.d.ts.map create mode 100644 types/Add-on/EraseNoSelect.d.ts create mode 100644 types/Add-on/EraseNoSelect.d.ts.map create mode 100644 types/Add-on/Erp/ErpCommands.d.ts create mode 100644 types/Add-on/Erp/ErpCommands.d.ts.map create mode 100644 types/Add-on/Erp/ErpView.d.ts create mode 100644 types/Add-on/Erp/ErpView.d.ts.map create mode 100644 types/Add-on/Erp/ExceedBlocksMind.d.ts create mode 100644 types/Add-on/Erp/ExceedBlocksMind.d.ts.map create mode 100644 types/Add-on/Erp/HostURL.d.ts create mode 100644 types/Add-on/Erp/HostURL.d.ts.map create mode 100644 types/Add-on/Erp/Models/CadBlock.d.ts create mode 100644 types/Add-on/Erp/Models/CadBlock.d.ts.map create mode 100644 types/Add-on/Erp/Models/CadBlockInfo.d.ts create mode 100644 types/Add-on/Erp/Models/CadBlockInfo.d.ts.map create mode 100644 types/Add-on/Erp/Models/CadModel.d.ts create mode 100644 types/Add-on/Erp/Models/CadModel.d.ts.map create mode 100644 types/Add-on/Erp/Models/CadObject.d.ts create mode 100644 types/Add-on/Erp/Models/CadObject.d.ts.map create mode 100644 types/Add-on/Erp/Models/ErpRouteInfo.d.ts create mode 100644 types/Add-on/Erp/Models/ErpRouteInfo.d.ts.map create mode 100644 types/Add-on/Erp/Models/ErpRoutes.d.ts create mode 100644 types/Add-on/Erp/Models/ErpRoutes.d.ts.map create mode 100644 types/Add-on/Erp/ParseData.d.ts create mode 100644 types/Add-on/Erp/ParseData.d.ts.map create mode 100644 types/Add-on/Erp/ParseParts.d.ts create mode 100644 types/Add-on/Erp/ParseParts.d.ts.map create mode 100644 types/Add-on/Esc.d.ts create mode 100644 types/Add-on/Esc.d.ts.map create mode 100644 types/Add-on/Explode.d.ts create mode 100644 types/Add-on/Explode.d.ts.map create mode 100644 types/Add-on/ExplosionMap.d.ts create mode 100644 types/Add-on/ExplosionMap.d.ts.map create mode 100644 types/Add-on/Export2View.d.ts create mode 100644 types/Add-on/Export2View.d.ts.map create mode 100644 types/Add-on/ExportData.d.ts create mode 100644 types/Add-on/ExportData.d.ts.map create mode 100644 types/Add-on/Exports/ExportSTL.d.ts create mode 100644 types/Add-on/Exports/ExportSTL.d.ts.map create mode 100644 types/Add-on/Extends.d.ts create mode 100644 types/Add-on/Extends.d.ts.map create mode 100644 types/Add-on/File/OpenHistory.d.ts create mode 100644 types/Add-on/File/OpenHistory.d.ts.map create mode 100644 types/Add-on/Fillet.d.ts create mode 100644 types/Add-on/Fillet.d.ts.map create mode 100644 types/Add-on/FilletUtils.d.ts create mode 100644 types/Add-on/FilletUtils.d.ts.map create mode 100644 types/Add-on/FindBoardModelingKnife.d.ts create mode 100644 types/Add-on/FindBoardModelingKnife.d.ts.map create mode 100644 types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts create mode 100644 types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts.map create mode 100644 types/Add-on/Group.d.ts create mode 100644 types/Add-on/Group.d.ts.map create mode 100644 types/Add-on/HideSelected.d.ts create mode 100644 types/Add-on/HideSelected.d.ts.map create mode 100644 types/Add-on/Insert.d.ts create mode 100644 types/Add-on/Insert.d.ts.map create mode 100644 types/Add-on/Join.d.ts create mode 100644 types/Add-on/Join.d.ts.map create mode 100644 types/Add-on/KJL/KJLToken.d.ts create mode 100644 types/Add-on/KJL/KJLToken.d.ts.map create mode 100644 types/Add-on/KJL/KjlExport.d.ts create mode 100644 types/Add-on/KJL/KjlExport.d.ts.map create mode 100644 types/Add-on/KJLImport.d.ts create mode 100644 types/Add-on/KJLImport.d.ts.map create mode 100644 types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts create mode 100644 types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts.map create mode 100644 types/Add-on/LatticeDrawer/EditorLattice.d.ts create mode 100644 types/Add-on/LatticeDrawer/EditorLattice.d.ts.map create mode 100644 types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts create mode 100644 types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts.map create mode 100644 types/Add-on/Length.d.ts create mode 100644 types/Add-on/Length.d.ts.map create mode 100644 types/Add-on/Lisp.d.ts create mode 100644 types/Add-on/Lisp.d.ts.map create mode 100644 types/Add-on/LoadConfig.d.ts create mode 100644 types/Add-on/LoadConfig.d.ts.map create mode 100644 types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts create mode 100644 types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts.map create mode 100644 types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts create mode 100644 types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts.map create mode 100644 types/Add-on/Mirror.d.ts create mode 100644 types/Add-on/Mirror.d.ts.map create mode 100644 types/Add-on/Move.d.ts create mode 100644 types/Add-on/Move.d.ts.map create mode 100644 types/Add-on/MoveToWCS0.d.ts create mode 100644 types/Add-on/MoveToWCS0.d.ts.map create mode 100644 types/Add-on/Offset.d.ts create mode 100644 types/Add-on/Offset.d.ts.map create mode 100644 types/Add-on/OffsetX.d.ts create mode 100644 types/Add-on/OffsetX.d.ts.map create mode 100644 types/Add-on/Open.d.ts create mode 100644 types/Add-on/Open.d.ts.map create mode 100644 types/Add-on/PasteClip.d.ts create mode 100644 types/Add-on/PasteClip.d.ts.map create mode 100644 types/Add-on/Pedit.d.ts create mode 100644 types/Add-on/Pedit.d.ts.map create mode 100644 types/Add-on/Print.d.ts create mode 100644 types/Add-on/Print.d.ts.map create mode 100644 types/Add-on/Purge.d.ts create mode 100644 types/Add-on/Purge.d.ts.map create mode 100644 types/Add-on/ReOpen.d.ts create mode 100644 types/Add-on/ReOpen.d.ts.map create mode 100644 types/Add-on/RestoreColor.d.ts create mode 100644 types/Add-on/RestoreColor.d.ts.map create mode 100644 types/Add-on/Reverse.d.ts create mode 100644 types/Add-on/Reverse.d.ts.map create mode 100644 types/Add-on/Rotate.d.ts create mode 100644 types/Add-on/Rotate.d.ts.map create mode 100644 types/Add-on/RotateLayerBoard.d.ts create mode 100644 types/Add-on/RotateLayerBoard.d.ts.map create mode 100644 types/Add-on/Save.d.ts create mode 100644 types/Add-on/Save.d.ts.map create mode 100644 types/Add-on/Scale.d.ts create mode 100644 types/Add-on/Scale.d.ts.map create mode 100644 types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts create mode 100644 types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts.map create mode 100644 types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts create mode 100644 types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts.map create mode 100644 types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts create mode 100644 types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts.map create mode 100644 types/Add-on/ShowLines.d.ts create mode 100644 types/Add-on/ShowLines.d.ts.map create mode 100644 types/Add-on/ShowProcessingGroupModal.d.ts create mode 100644 types/Add-on/ShowProcessingGroupModal.d.ts.map create mode 100644 types/Add-on/ShowRecycleBin.d.ts create mode 100644 types/Add-on/ShowRecycleBin.d.ts.map create mode 100644 types/Add-on/Sky.d.ts create mode 100644 types/Add-on/Sky.d.ts.map create mode 100644 types/Add-on/Stretch.d.ts create mode 100644 types/Add-on/Stretch.d.ts.map create mode 100644 types/Add-on/Sweep.d.ts create mode 100644 types/Add-on/Sweep.d.ts.map create mode 100644 types/Add-on/SwitchCamera.d.ts create mode 100644 types/Add-on/SwitchCamera.d.ts.map create mode 100644 types/Add-on/SwitchVisualStyles.d.ts create mode 100644 types/Add-on/SwitchVisualStyles.d.ts.map create mode 100644 types/Add-on/SyncData.d.ts create mode 100644 types/Add-on/SyncData.d.ts.map create mode 100644 types/Add-on/Tangent.d.ts create mode 100644 types/Add-on/Tangent.d.ts.map create mode 100644 types/Add-on/Template/BoardReplaceTemplate.d.ts create mode 100644 types/Add-on/Template/BoardReplaceTemplate.d.ts.map create mode 100644 types/Add-on/Template/DrawVisualSpaceBox.d.ts create mode 100644 types/Add-on/Template/DrawVisualSpaceBox.d.ts.map create mode 100644 types/Add-on/Template/RotateTemplateSpace.d.ts create mode 100644 types/Add-on/Template/RotateTemplateSpace.d.ts.map create mode 100644 types/Add-on/Template/ShowFrame.d.ts create mode 100644 types/Add-on/Template/ShowFrame.d.ts.map create mode 100644 types/Add-on/Template/ShowTemplate.d.ts create mode 100644 types/Add-on/Template/ShowTemplate.d.ts.map create mode 100644 types/Add-on/Template/ShowTemplateDesign.d.ts create mode 100644 types/Add-on/Template/ShowTemplateDesign.d.ts.map create mode 100644 types/Add-on/Template/ShowTopline.d.ts create mode 100644 types/Add-on/Template/ShowTopline.d.ts.map create mode 100644 types/Add-on/Template/SplitTemplate.d.ts create mode 100644 types/Add-on/Template/SplitTemplate.d.ts.map create mode 100644 types/Add-on/Template/TemplateTagCommand.d.ts create mode 100644 types/Add-on/Template/TemplateTagCommand.d.ts.map create mode 100644 types/Add-on/TemplateSearch.d.ts create mode 100644 types/Add-on/TemplateSearch.d.ts.map create mode 100644 types/Add-on/TestFb.d.ts create mode 100644 types/Add-on/TestFb.d.ts.map create mode 100644 types/Add-on/TestPointPickParse.d.ts create mode 100644 types/Add-on/TestPointPickParse.d.ts.map create mode 100644 types/Add-on/Text2Curve.d.ts create mode 100644 types/Add-on/Text2Curve.d.ts.map create mode 100644 types/Add-on/ToggleUI.d.ts create mode 100644 types/Add-on/ToggleUI.d.ts.map create mode 100644 types/Add-on/Trim.d.ts create mode 100644 types/Add-on/Trim.d.ts.map create mode 100644 types/Add-on/Undo.d.ts create mode 100644 types/Add-on/Undo.d.ts.map create mode 100644 types/Add-on/UpdateEntityDrawTask.d.ts create mode 100644 types/Add-on/UpdateEntityDrawTask.d.ts.map create mode 100644 types/Add-on/ViewChange.d.ts create mode 100644 types/Add-on/ViewChange.d.ts.map create mode 100644 types/Add-on/Viewport/OneKeyLayout.d.ts create mode 100644 types/Add-on/Viewport/OneKeyLayout.d.ts.map create mode 100644 types/Add-on/Viewport/OneKeyPrint.d.ts create mode 100644 types/Add-on/Viewport/OneKeyPrint.d.ts.map create mode 100644 types/Add-on/Wblock.d.ts create mode 100644 types/Add-on/Wblock.d.ts.map create mode 100644 types/Add-on/ZoomE.d.ts create mode 100644 types/Add-on/ZoomE.d.ts.map create mode 100644 types/Add-on/closetest.d.ts create mode 100644 types/Add-on/closetest.d.ts.map create mode 100644 types/Add-on/instest.d.ts create mode 100644 types/Add-on/instest.d.ts.map create mode 100644 types/Add-on/interfere.d.ts create mode 100644 types/Add-on/interfere.d.ts.map create mode 100644 types/Add-on/loadfbx.d.ts create mode 100644 types/Add-on/loadfbx.d.ts.map create mode 100644 types/Add-on/polytest.d.ts create mode 100644 types/Add-on/polytest.d.ts.map create mode 100644 types/Add-on/showModal/ShowKnifeManageModal.d.ts create mode 100644 types/Add-on/showModal/ShowKnifeManageModal.d.ts.map create mode 100644 types/Add-on/showModal/ShowModal.d.ts create mode 100644 types/Add-on/showModal/ShowModal.d.ts.map create mode 100644 types/Add-on/test/TestOffset/OffsetTestUtil.d.ts create mode 100644 types/Add-on/test/TestOffset/OffsetTestUtil.d.ts.map create mode 100644 types/Add-on/test/TestOffset/TestOffset.d.ts create mode 100644 types/Add-on/test/TestOffset/TestOffset.d.ts.map create mode 100644 types/Add-on/test/TestTape.d.ts create mode 100644 types/Add-on/test/TestTape.d.ts.map create mode 100644 types/Add-on/test/TestUtil.d.ts create mode 100644 types/Add-on/test/TestUtil.d.ts.map create mode 100644 types/Add-on/test/testIntersect.d.ts create mode 100644 types/Add-on/test/testIntersect.d.ts.map create mode 100644 types/Add-on/testEntity/DrawShapeManage.d.ts create mode 100644 types/Add-on/testEntity/DrawShapeManage.d.ts.map create mode 100644 types/Add-on/testEntity/ParseMaterialImage.d.ts create mode 100644 types/Add-on/testEntity/ParseMaterialImage.d.ts.map create mode 100644 types/Add-on/testEntity/SimplifyPolyline.d.ts create mode 100644 types/Add-on/testEntity/SimplifyPolyline.d.ts.map create mode 100644 types/Add-on/testEntity/TestBoundaryBox.d.ts create mode 100644 types/Add-on/testEntity/TestBoundaryBox.d.ts.map create mode 100644 types/Add-on/testEntity/TestBox.d.ts create mode 100644 types/Add-on/testEntity/TestBox.d.ts.map create mode 100644 types/Add-on/testEntity/TestCurve.d.ts create mode 100644 types/Add-on/testEntity/TestCurve.d.ts.map create mode 100644 types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts create mode 100644 types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts.map create mode 100644 types/Add-on/testEntity/TestFilletCode.d.ts create mode 100644 types/Add-on/testEntity/TestFilletCode.d.ts.map create mode 100644 types/Add-on/testEntity/TestPointInCurveDirection.d.ts create mode 100644 types/Add-on/testEntity/TestPointInCurveDirection.d.ts.map create mode 100644 types/Add-on/testEntity/TestRegionParse.d.ts create mode 100644 types/Add-on/testEntity/TestRegionParse.d.ts.map create mode 100644 types/Add-on/testEntity/TestSweepMaxLength.d.ts create mode 100644 types/Add-on/testEntity/TestSweepMaxLength.d.ts.map create mode 100644 types/Add-on/testEntity/TestTemplateDelete.d.ts create mode 100644 types/Add-on/testEntity/TestTemplateDelete.d.ts.map create mode 100644 types/Add-on/testEntity/TestVPath.d.ts create mode 100644 types/Add-on/testEntity/TestVPath.d.ts.map create mode 100644 types/Add-on/testEntity/test.d.ts create mode 100644 types/Add-on/testEntity/test.d.ts.map create mode 100644 types/Add-on/testEntity/testCollision.d.ts create mode 100644 types/Add-on/testEntity/testCollision.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts create mode 100644 types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts create mode 100644 types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts create mode 100644 types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Modals/R2b2.d.ts create mode 100644 types/Add-on/twoD2threeD/Modals/R2b2.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts create mode 100644 types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts.map create mode 100644 types/Add-on/twoD2threeD/ParseBoardData.d.ts create mode 100644 types/Add-on/twoD2threeD/ParseBoardData.d.ts.map create mode 100644 types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts create mode 100644 types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Polyline2Board.d.ts create mode 100644 types/Add-on/twoD2threeD/Polyline2Board.d.ts.map create mode 100644 types/Add-on/twoD2threeD/R2B2Store.d.ts create mode 100644 types/Add-on/twoD2threeD/R2B2Store.d.ts.map create mode 100644 types/Add-on/twoD2threeD/R2BCommon.d.ts create mode 100644 types/Add-on/twoD2threeD/R2BCommon.d.ts.map create mode 100644 types/Add-on/twoD2threeD/R2BProcessComponent.d.ts create mode 100644 types/Add-on/twoD2threeD/R2BProcessComponent.d.ts.map create mode 100644 types/Add-on/twoD2threeD/R2bConfigComponent.d.ts create mode 100644 types/Add-on/twoD2threeD/R2bConfigComponent.d.ts.map create mode 100644 types/Add-on/twoD2threeD/R2bInterface.d.ts create mode 100644 types/Add-on/twoD2threeD/R2bInterface.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Rec2BrStore.d.ts create mode 100644 types/Add-on/twoD2threeD/Rec2BrStore.d.ts.map create mode 100644 types/Add-on/twoD2threeD/Rect2Board.d.ts create mode 100644 types/Add-on/twoD2threeD/Rect2Board.d.ts.map create mode 100644 types/ApplicationServices/Application.d.ts create mode 100644 types/ApplicationServices/Application.d.ts.map create mode 100644 types/ApplicationServices/HostApplicationServices.d.ts create mode 100644 types/ApplicationServices/HostApplicationServices.d.ts.map create mode 100644 types/ApplicationServices/WebSocketClientServer.d.ts create mode 100644 types/ApplicationServices/WebSocketClientServer.d.ts.map create mode 100644 types/ApplicationServices/mesh/createBoard.d.ts create mode 100644 types/ApplicationServices/mesh/createBoard.d.ts.map create mode 100644 types/Common/ActiveElementWatch.d.ts create mode 100644 types/Common/ActiveElementWatch.d.ts.map create mode 100644 types/Common/AddEntityDrawObject.d.ts create mode 100644 types/Common/AddEntityDrawObject.d.ts.map create mode 100644 types/Common/AppCache.d.ts create mode 100644 types/Common/AppCache.d.ts.map create mode 100644 types/Common/ArrayExt.d.ts create mode 100644 types/Common/ArrayExt.d.ts.map create mode 100644 types/Common/BoardKeyList.d.ts create mode 100644 types/Common/BoardKeyList.d.ts.map create mode 100644 types/Common/BoardUtil.d.ts create mode 100644 types/Common/BoardUtil.d.ts.map create mode 100644 types/Common/CheckoutVaildValue.d.ts create mode 100644 types/Common/CheckoutVaildValue.d.ts.map create mode 100644 types/Common/ColorPalette.d.ts create mode 100644 types/Common/ColorPalette.d.ts.map create mode 100644 types/Common/CommandNames.d.ts create mode 100644 types/Common/CommandNames.d.ts.map create mode 100644 types/Common/CommonSelectOption.d.ts create mode 100644 types/Common/CommonSelectOption.d.ts.map create mode 100644 types/Common/CurveUtils.d.ts create mode 100644 types/Common/CurveUtils.d.ts.map create mode 100644 types/Common/DataAdapter.d.ts create mode 100644 types/Common/DataAdapter.d.ts.map create mode 100644 types/Common/Deving.d.ts create mode 100644 types/Common/Deving.d.ts.map create mode 100644 types/Common/Dispose.d.ts create mode 100644 types/Common/Dispose.d.ts.map create mode 100644 types/Common/ErrorMonitoring.d.ts create mode 100644 types/Common/ErrorMonitoring.d.ts.map create mode 100644 types/Common/FileSystem.d.ts create mode 100644 types/Common/FileSystem.d.ts.map create mode 100644 types/Common/HostUrl.d.ts create mode 100644 types/Common/HostUrl.d.ts.map create mode 100644 types/Common/InputState.d.ts create mode 100644 types/Common/InputState.d.ts.map create mode 100644 types/Common/InterfereUtil.d.ts create mode 100644 types/Common/InterfereUtil.d.ts.map create mode 100644 types/Common/JigMove.d.ts create mode 100644 types/Common/JigMove.d.ts.map create mode 100644 types/Common/KeyEnum.d.ts create mode 100644 types/Common/KeyEnum.d.ts.map create mode 100644 types/Common/LightUtils.d.ts create mode 100644 types/Common/LightUtils.d.ts.map create mode 100644 types/Common/Log.d.ts create mode 100644 types/Common/Log.d.ts.map create mode 100644 types/Common/Material.d.ts create mode 100644 types/Common/Material.d.ts.map create mode 100644 types/Common/Matrix4Utils.d.ts create mode 100644 types/Common/Matrix4Utils.d.ts.map create mode 100644 types/Common/NumberDecimalAdjustment.d.ts create mode 100644 types/Common/NumberDecimalAdjustment.d.ts.map create mode 100644 types/Common/Report.d.ts create mode 100644 types/Common/Report.d.ts.map create mode 100644 types/Common/Request.d.ts create mode 100644 types/Common/Request.d.ts.map create mode 100644 types/Common/SerializeMaterial.d.ts create mode 100644 types/Common/SerializeMaterial.d.ts.map create mode 100644 types/Common/SetMaterial.d.ts create mode 100644 types/Common/SetMaterial.d.ts.map create mode 100644 types/Common/ShowSelectObjects.d.ts create mode 100644 types/Common/ShowSelectObjects.d.ts.map create mode 100644 types/Common/Singleton.d.ts create mode 100644 types/Common/Singleton.d.ts.map create mode 100644 types/Common/Sleep.d.ts create mode 100644 types/Common/Sleep.d.ts.map create mode 100644 types/Common/Status.d.ts create mode 100644 types/Common/Status.d.ts.map create mode 100644 types/Common/StoreageKeys.d.ts create mode 100644 types/Common/StoreageKeys.d.ts.map create mode 100644 types/Common/StretchParse.d.ts create mode 100644 types/Common/StretchParse.d.ts.map create mode 100644 types/Common/SystemEnum.d.ts create mode 100644 types/Common/SystemEnum.d.ts.map create mode 100644 types/Common/TempVar.d.ts create mode 100644 types/Common/TempVar.d.ts.map create mode 100644 types/Common/Toaster.d.ts create mode 100644 types/Common/Toaster.d.ts.map create mode 100644 types/Common/TypeOperator.d.ts create mode 100644 types/Common/TypeOperator.d.ts.map create mode 100644 types/Common/Utils.d.ts create mode 100644 types/Common/Utils.d.ts.map create mode 100644 types/Common/ZIndex.d.ts create mode 100644 types/Common/ZIndex.d.ts.map create mode 100644 types/Common/binary/ArraybufferUtils.d.ts create mode 100644 types/Common/binary/ArraybufferUtils.d.ts.map create mode 100644 types/Common/binary/Base64Utils.d.ts create mode 100644 types/Common/binary/Base64Utils.d.ts.map create mode 100644 types/Common/binary/BufferUtils.d.ts create mode 100644 types/Common/binary/BufferUtils.d.ts.map create mode 100644 types/Common/eval.d.ts create mode 100644 types/Common/eval.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/CylinderHole.d.ts create mode 100644 types/DatabaseServices/3DSolid/CylinderHole.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/Cylineder.d.ts create mode 100644 types/DatabaseServices/3DSolid/Cylineder.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/ExtrudeHole.d.ts create mode 100644 types/DatabaseServices/3DSolid/ExtrudeHole.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/Hole.d.ts create mode 100644 types/DatabaseServices/3DSolid/Hole.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/RevolveSolid.d.ts create mode 100644 types/DatabaseServices/3DSolid/RevolveSolid.d.ts.map create mode 100644 types/DatabaseServices/3DSolid/SweepSolid.d.ts create mode 100644 types/DatabaseServices/3DSolid/SweepSolid.d.ts.map create mode 100644 types/DatabaseServices/AllObjectData.d.ts create mode 100644 types/DatabaseServices/AllObjectData.d.ts.map create mode 100644 types/DatabaseServices/AutoRecord.d.ts create mode 100644 types/DatabaseServices/AutoRecord.d.ts.map create mode 100644 types/DatabaseServices/BlockTable.d.ts create mode 100644 types/DatabaseServices/BlockTable.d.ts.map create mode 100644 types/DatabaseServices/BlockTableRecord.d.ts create mode 100644 types/DatabaseServices/BlockTableRecord.d.ts.map create mode 100644 types/DatabaseServices/BoardLinesReactor.d.ts create mode 100644 types/DatabaseServices/BoardLinesReactor.d.ts.map create mode 100644 types/DatabaseServices/CADFactory.d.ts create mode 100644 types/DatabaseServices/CADFactory.d.ts.map create mode 100644 types/DatabaseServices/CADFiler.d.ts create mode 100644 types/DatabaseServices/CADFiler.d.ts.map create mode 100644 types/DatabaseServices/CADObject.d.ts create mode 100644 types/DatabaseServices/CADObject.d.ts.map create mode 100644 types/DatabaseServices/CommandHistoryRecord.d.ts create mode 100644 types/DatabaseServices/CommandHistoryRecord.d.ts.map create mode 100644 types/DatabaseServices/CommandServer.d.ts create mode 100644 types/DatabaseServices/CommandServer.d.ts.map create mode 100644 types/DatabaseServices/Contour.d.ts create mode 100644 types/DatabaseServices/Contour.d.ts.map create mode 100644 types/DatabaseServices/CreateObjectData.d.ts create mode 100644 types/DatabaseServices/CreateObjectData.d.ts.map create mode 100644 types/DatabaseServices/Database.d.ts create mode 100644 types/DatabaseServices/Database.d.ts.map create mode 100644 types/DatabaseServices/DeepCloneFiler.d.ts create mode 100644 types/DatabaseServices/DeepCloneFiler.d.ts.map create mode 100644 types/DatabaseServices/Dimension/2LineAngularDimension.d.ts create mode 100644 types/DatabaseServices/Dimension/2LineAngularDimension.d.ts.map create mode 100644 types/DatabaseServices/Dimension/AlignedDimension.d.ts create mode 100644 types/DatabaseServices/Dimension/AlignedDimension.d.ts.map create mode 100644 types/DatabaseServices/Dimension/DimDiameter.d.ts create mode 100644 types/DatabaseServices/Dimension/DimDiameter.d.ts.map create mode 100644 types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts create mode 100644 types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts.map create mode 100644 types/DatabaseServices/Dimension/LinearDimension.d.ts create mode 100644 types/DatabaseServices/Dimension/LinearDimension.d.ts.map create mode 100644 types/DatabaseServices/Dimension/RadiusDimension.d.ts create mode 100644 types/DatabaseServices/Dimension/RadiusDimension.d.ts.map create mode 100644 types/DatabaseServices/Entity/Arc.d.ts create mode 100644 types/DatabaseServices/Entity/Arc.d.ts.map create mode 100644 types/DatabaseServices/Entity/Board.d.ts create mode 100644 types/DatabaseServices/Entity/Board.d.ts.map create mode 100644 types/DatabaseServices/Entity/BoxSolid.d.ts create mode 100644 types/DatabaseServices/Entity/BoxSolid.d.ts.map create mode 100644 types/DatabaseServices/Entity/Circle.d.ts create mode 100644 types/DatabaseServices/Entity/Circle.d.ts.map create mode 100644 types/DatabaseServices/Entity/CompositeEntity.d.ts create mode 100644 types/DatabaseServices/Entity/CompositeEntity.d.ts.map create mode 100644 types/DatabaseServices/Entity/Curve.d.ts create mode 100644 types/DatabaseServices/Entity/Curve.d.ts.map create mode 100644 types/DatabaseServices/Entity/DragPointType.d.ts create mode 100644 types/DatabaseServices/Entity/DragPointType.d.ts.map create mode 100644 types/DatabaseServices/Entity/Ellipse.d.ts create mode 100644 types/DatabaseServices/Entity/Ellipse.d.ts.map create mode 100644 types/DatabaseServices/Entity/Entity.d.ts create mode 100644 types/DatabaseServices/Entity/Entity.d.ts.map create mode 100644 types/DatabaseServices/Entity/EntityRef.d.ts create mode 100644 types/DatabaseServices/Entity/EntityRef.d.ts.map create mode 100644 types/DatabaseServices/Entity/Extrude.d.ts create mode 100644 types/DatabaseServices/Entity/Extrude.d.ts.map create mode 100644 types/DatabaseServices/Entity/ExtrudeConfig.d.ts create mode 100644 types/DatabaseServices/Entity/ExtrudeConfig.d.ts.map create mode 100644 types/DatabaseServices/Entity/Line.d.ts create mode 100644 types/DatabaseServices/Entity/Line.d.ts.map create mode 100644 types/DatabaseServices/Entity/Point.d.ts create mode 100644 types/DatabaseServices/Entity/Point.d.ts.map create mode 100644 types/DatabaseServices/Entity/Polyline.d.ts create mode 100644 types/DatabaseServices/Entity/Polyline.d.ts.map create mode 100644 types/DatabaseServices/Entity/Region.d.ts create mode 100644 types/DatabaseServices/Entity/Region.d.ts.map create mode 100644 types/DatabaseServices/EraseEntityData.d.ts create mode 100644 types/DatabaseServices/EraseEntityData.d.ts.map create mode 100644 types/DatabaseServices/FaceEntity.d.ts create mode 100644 types/DatabaseServices/FaceEntity.d.ts.map create mode 100644 types/DatabaseServices/FileServer.d.ts create mode 100644 types/DatabaseServices/FileServer.d.ts.map create mode 100644 types/DatabaseServices/GroupTable.d.ts create mode 100644 types/DatabaseServices/GroupTable.d.ts.map create mode 100644 types/DatabaseServices/GroupTableRecord.d.ts create mode 100644 types/DatabaseServices/GroupTableRecord.d.ts.map create mode 100644 types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts create mode 100644 types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts.map create mode 100644 types/DatabaseServices/Hardware/HardwareTopline.d.ts create mode 100644 types/DatabaseServices/Hardware/HardwareTopline.d.ts.map create mode 100644 types/DatabaseServices/HistoricManage.d.ts create mode 100644 types/DatabaseServices/HistoricManage.d.ts.map create mode 100644 types/DatabaseServices/HistorycRecord.d.ts create mode 100644 types/DatabaseServices/HistorycRecord.d.ts.map create mode 100644 types/DatabaseServices/ISerialize.d.ts create mode 100644 types/DatabaseServices/ISerialize.d.ts.map create mode 100644 types/DatabaseServices/IdMaping.d.ts create mode 100644 types/DatabaseServices/IdMaping.d.ts.map create mode 100644 types/DatabaseServices/Lights/AmbientLight.d.ts create mode 100644 types/DatabaseServices/Lights/AmbientLight.d.ts.map create mode 100644 types/DatabaseServices/Lights/DirectionalLight.d.ts create mode 100644 types/DatabaseServices/Lights/DirectionalLight.d.ts.map create mode 100644 types/DatabaseServices/Lights/HemisphereLight.d.ts create mode 100644 types/DatabaseServices/Lights/HemisphereLight.d.ts.map create mode 100644 types/DatabaseServices/Lights/Light.d.ts create mode 100644 types/DatabaseServices/Lights/Light.d.ts.map create mode 100644 types/DatabaseServices/Lights/PointLight.d.ts create mode 100644 types/DatabaseServices/Lights/PointLight.d.ts.map create mode 100644 types/DatabaseServices/Lights/RectAreaLight.d.ts create mode 100644 types/DatabaseServices/Lights/RectAreaLight.d.ts.map create mode 100644 types/DatabaseServices/Lights/SpotLight.d.ts create mode 100644 types/DatabaseServices/Lights/SpotLight.d.ts.map create mode 100644 types/DatabaseServices/MaterialDictionary.d.ts create mode 100644 types/DatabaseServices/MaterialDictionary.d.ts.map create mode 100644 types/DatabaseServices/MaterialTable.d.ts create mode 100644 types/DatabaseServices/MaterialTable.d.ts.map create mode 100644 types/DatabaseServices/MaterialTableRecord.d.ts create mode 100644 types/DatabaseServices/MaterialTableRecord.d.ts.map create mode 100644 types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts create mode 100644 types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts.map create mode 100644 types/DatabaseServices/ObjectCollection.d.ts create mode 100644 types/DatabaseServices/ObjectCollection.d.ts.map create mode 100644 types/DatabaseServices/ObjectId.d.ts create mode 100644 types/DatabaseServices/ObjectId.d.ts.map create mode 100644 types/DatabaseServices/PhysicalMaterialRecord.d.ts create mode 100644 types/DatabaseServices/PhysicalMaterialRecord.d.ts.map create mode 100644 types/DatabaseServices/PointInPolyline.d.ts create mode 100644 types/DatabaseServices/PointInPolyline.d.ts.map create mode 100644 types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts create mode 100644 types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts.map create mode 100644 types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts create mode 100644 types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts.map create mode 100644 types/DatabaseServices/RemoveObjectData.d.ts create mode 100644 types/DatabaseServices/RemoveObjectData.d.ts.map create mode 100644 types/DatabaseServices/Shape.d.ts create mode 100644 types/DatabaseServices/Shape.d.ts.map create mode 100644 types/DatabaseServices/Shape2.d.ts create mode 100644 types/DatabaseServices/Shape2.d.ts.map create mode 100644 types/DatabaseServices/ShapeManager.d.ts create mode 100644 types/DatabaseServices/ShapeManager.d.ts.map create mode 100644 types/DatabaseServices/Spline.d.ts create mode 100644 types/DatabaseServices/Spline.d.ts.map create mode 100644 types/DatabaseServices/SymbolTable.d.ts create mode 100644 types/DatabaseServices/SymbolTable.d.ts.map create mode 100644 types/DatabaseServices/SymbolTableRecord.d.ts create mode 100644 types/DatabaseServices/SymbolTableRecord.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TemplateAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TemplateAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts create mode 100644 types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts.map create mode 100644 types/DatabaseServices/Template/Param/TemplateParam.d.ts create mode 100644 types/DatabaseServices/Template/Param/TemplateParam.d.ts.map create mode 100644 types/DatabaseServices/Template/Param/TemplateParamType.d.ts create mode 100644 types/DatabaseServices/Template/Param/TemplateParamType.d.ts.map create mode 100644 types/DatabaseServices/Template/Positioning/Positioning.d.ts create mode 100644 types/DatabaseServices/Template/Positioning/Positioning.d.ts.map create mode 100644 types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts create mode 100644 types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts.map create mode 100644 types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts create mode 100644 types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts.map create mode 100644 types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts create mode 100644 types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts.map create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts create mode 100644 types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts.map create mode 100644 types/DatabaseServices/Template/TempateUtils.d.ts create mode 100644 types/DatabaseServices/Template/TempateUtils.d.ts.map create mode 100644 types/DatabaseServices/Template/TemplateRecord.d.ts create mode 100644 types/DatabaseServices/Template/TemplateRecord.d.ts.map create mode 100644 types/DatabaseServices/Template/TemplateTable.d.ts create mode 100644 types/DatabaseServices/Template/TemplateTable.d.ts.map create mode 100644 types/DatabaseServices/Template/TemplateTest.d.ts create mode 100644 types/DatabaseServices/Template/TemplateTest.d.ts.map create mode 100644 types/DatabaseServices/Template/TemplateType.d.ts create mode 100644 types/DatabaseServices/Template/TemplateType.d.ts.map create mode 100644 types/DatabaseServices/Text/FontExt.d.ts create mode 100644 types/DatabaseServices/Text/FontExt.d.ts.map create mode 100644 types/DatabaseServices/Text/FontLoader.d.ts create mode 100644 types/DatabaseServices/Text/FontLoader.d.ts.map create mode 100644 types/DatabaseServices/Text/Text.d.ts create mode 100644 types/DatabaseServices/Text/Text.d.ts.map create mode 100644 types/DatabaseServices/Text/TextArea.d.ts create mode 100644 types/DatabaseServices/Text/TextArea.d.ts.map create mode 100644 types/DatabaseServices/Texture.d.ts create mode 100644 types/DatabaseServices/Texture.d.ts.map create mode 100644 types/DatabaseServices/TextureTable.d.ts create mode 100644 types/DatabaseServices/TextureTable.d.ts.map create mode 100644 types/DatabaseServices/Transaction.d.ts create mode 100644 types/DatabaseServices/Transaction.d.ts.map create mode 100644 types/DatabaseServices/TransactionManager.d.ts create mode 100644 types/DatabaseServices/TransactionManager.d.ts.map create mode 100644 types/DatabaseServices/ViewportEntity.d.ts create mode 100644 types/DatabaseServices/ViewportEntity.d.ts.map create mode 100644 types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts create mode 100644 types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts.map create mode 100644 types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts create mode 100644 types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts.map create mode 100644 types/DatabaseServices/WblockCloneFiler.d.ts create mode 100644 types/DatabaseServices/WblockCloneFiler.d.ts.map create mode 100644 types/Debug/DebugObject.d.ts create mode 100644 types/Debug/DebugObject.d.ts.map create mode 100644 types/Editor/AutoSave.d.ts create mode 100644 types/Editor/AutoSave.d.ts.map create mode 100644 types/Editor/BoardMoveTool.d.ts create mode 100644 types/Editor/BoardMoveTool.d.ts.map create mode 100644 types/Editor/BufferGeometry2GeometryCacheMap.d.ts create mode 100644 types/Editor/BufferGeometry2GeometryCacheMap.d.ts.map create mode 100644 types/Editor/CameraControls.d.ts create mode 100644 types/Editor/CameraControls.d.ts.map create mode 100644 types/Editor/CommandMachine.d.ts create mode 100644 types/Editor/CommandMachine.d.ts.map create mode 100644 types/Editor/CommandRegister.d.ts create mode 100644 types/Editor/CommandRegister.d.ts.map create mode 100644 types/Editor/CommandState.d.ts create mode 100644 types/Editor/CommandState.d.ts.map create mode 100644 types/Editor/ContextMenu.d.ts create mode 100644 types/Editor/ContextMenu.d.ts.map create mode 100644 types/Editor/DbClick/DBClickPolyline.d.ts create mode 100644 types/Editor/DbClick/DBClickPolyline.d.ts.map create mode 100644 types/Editor/DbClick/DbClick.d.ts create mode 100644 types/Editor/DbClick/DbClick.d.ts.map create mode 100644 types/Editor/DefaultConfig.d.ts create mode 100644 types/Editor/DefaultConfig.d.ts.map create mode 100644 types/Editor/Editor.d.ts create mode 100644 types/Editor/Editor.d.ts.map create mode 100644 types/Editor/Gesture.d.ts create mode 100644 types/Editor/Gesture.d.ts.map create mode 100644 types/Editor/GetDistanceServices.d.ts create mode 100644 types/Editor/GetDistanceServices.d.ts.map create mode 100644 types/Editor/GetEntityServices.d.ts create mode 100644 types/Editor/GetEntityServices.d.ts.map create mode 100644 types/Editor/GetKeyWordService.d.ts create mode 100644 types/Editor/GetKeyWordService.d.ts.map create mode 100644 types/Editor/GetPointServices.d.ts create mode 100644 types/Editor/GetPointServices.d.ts.map create mode 100644 types/Editor/GetRectServices.d.ts create mode 100644 types/Editor/GetRectServices.d.ts.map create mode 100644 types/Editor/GetSelectionServices.d.ts create mode 100644 types/Editor/GetSelectionServices.d.ts.map create mode 100644 types/Editor/GetStringService.d.ts create mode 100644 types/Editor/GetStringService.d.ts.map create mode 100644 types/Editor/GripDragServices.d.ts create mode 100644 types/Editor/GripDragServices.d.ts.map create mode 100644 types/Editor/InitKeyword.d.ts create mode 100644 types/Editor/InitKeyword.d.ts.map create mode 100644 types/Editor/Jig.d.ts create mode 100644 types/Editor/Jig.d.ts.map create mode 100644 types/Editor/JigUtils.d.ts create mode 100644 types/Editor/JigUtils.d.ts.map create mode 100644 types/Editor/KeyBoardControls.d.ts create mode 100644 types/Editor/KeyBoardControls.d.ts.map create mode 100644 types/Editor/LayoutTool.d.ts create mode 100644 types/Editor/LayoutTool.d.ts.map create mode 100644 types/Editor/MaterialEditor.d.ts create mode 100644 types/Editor/MaterialEditor.d.ts.map create mode 100644 types/Editor/MaterialMouseControl.d.ts create mode 100644 types/Editor/MaterialMouseControl.d.ts.map create mode 100644 types/Editor/MouseControls.d.ts create mode 100644 types/Editor/MouseControls.d.ts.map create mode 100644 types/Editor/ObjectSnapMode.d.ts create mode 100644 types/Editor/ObjectSnapMode.d.ts.map create mode 100644 types/Editor/PointPick.d.ts create mode 100644 types/Editor/PointPick.d.ts.map create mode 100644 types/Editor/PromptOptions.d.ts create mode 100644 types/Editor/PromptOptions.d.ts.map create mode 100644 types/Editor/PromptResult.d.ts create mode 100644 types/Editor/PromptResult.d.ts.map create mode 100644 types/Editor/RegisterGesture.d.ts create mode 100644 types/Editor/RegisterGesture.d.ts.map create mode 100644 types/Editor/SelectBase.d.ts create mode 100644 types/Editor/SelectBase.d.ts.map create mode 100644 types/Editor/SelectBox.d.ts create mode 100644 types/Editor/SelectBox.d.ts.map create mode 100644 types/Editor/SelectControls.d.ts create mode 100644 types/Editor/SelectControls.d.ts.map create mode 100644 types/Editor/SelectFilter.d.ts create mode 100644 types/Editor/SelectFilter.d.ts.map create mode 100644 types/Editor/SelectLine.d.ts create mode 100644 types/Editor/SelectLine.d.ts.map create mode 100644 types/Editor/SelectPick.d.ts create mode 100644 types/Editor/SelectPick.d.ts.map create mode 100644 types/Editor/SelectSet.d.ts create mode 100644 types/Editor/SelectSet.d.ts.map create mode 100644 types/Editor/ShowSnapMenu.d.ts create mode 100644 types/Editor/ShowSnapMenu.d.ts.map create mode 100644 types/Editor/SnapMenuFixed.d.ts create mode 100644 types/Editor/SnapMenuFixed.d.ts.map create mode 100644 types/Editor/SnapServices.d.ts create mode 100644 types/Editor/SnapServices.d.ts.map create mode 100644 types/Editor/SnapStatusWrap.d.ts create mode 100644 types/Editor/SnapStatusWrap.d.ts.map create mode 100644 types/Editor/TempEditor.d.ts create mode 100644 types/Editor/TempEditor.d.ts.map create mode 100644 types/Editor/TranstrolControl/Axes.d.ts create mode 100644 types/Editor/TranstrolControl/Axes.d.ts.map create mode 100644 types/Editor/TranstrolControl/CoorAxes.d.ts create mode 100644 types/Editor/TranstrolControl/CoorAxes.d.ts.map create mode 100644 types/Editor/TranstrolControl/RotateAxes.d.ts create mode 100644 types/Editor/TranstrolControl/RotateAxes.d.ts.map create mode 100644 types/Editor/TranstrolControl/TransformServices.d.ts create mode 100644 types/Editor/TranstrolControl/TransformServices.d.ts.map create mode 100644 types/Editor/TranstrolControl/TranslateAxes.d.ts create mode 100644 types/Editor/TranstrolControl/TranslateAxes.d.ts.map create mode 100644 types/Editor/UCSServices.d.ts create mode 100644 types/Editor/UCSServices.d.ts.map create mode 100644 types/Editor/UserConfig.d.ts create mode 100644 types/Editor/UserConfig.d.ts.map create mode 100644 types/Editor/VisualSpaceBox.d.ts create mode 100644 types/Editor/VisualSpaceBox.d.ts.map create mode 100644 types/GLSL/GoochShader.d.ts create mode 100644 types/GLSL/GoochShader.d.ts.map create mode 100644 types/GLSL/GoochShader1.d.ts create mode 100644 types/GLSL/GoochShader1.d.ts.map create mode 100644 types/Geometry/BSPGroupParse.d.ts create mode 100644 types/Geometry/BSPGroupParse.d.ts.map create mode 100644 types/Geometry/BoardUVGenerator.d.ts create mode 100644 types/Geometry/BoardUVGenerator.d.ts.map create mode 100644 types/Geometry/Box.d.ts create mode 100644 types/Geometry/Box.d.ts.map create mode 100644 types/Geometry/BufferGeometryUtils.d.ts create mode 100644 types/Geometry/BufferGeometryUtils.d.ts.map create mode 100644 types/Geometry/CheckIntersect.d.ts create mode 100644 types/Geometry/CheckIntersect.d.ts.map create mode 100644 types/Geometry/CoordinateSystem.d.ts create mode 100644 types/Geometry/CoordinateSystem.d.ts.map create mode 100644 types/Geometry/Count.d.ts create mode 100644 types/Geometry/Count.d.ts.map create mode 100644 types/Geometry/CreateContour2.d.ts create mode 100644 types/Geometry/CreateContour2.d.ts.map create mode 100644 types/Geometry/CreateWireframe.d.ts create mode 100644 types/Geometry/CreateWireframe.d.ts.map create mode 100644 types/Geometry/CurveIntersection.d.ts create mode 100644 types/Geometry/CurveIntersection.d.ts.map create mode 100644 types/Geometry/CurveMap.d.ts create mode 100644 types/Geometry/CurveMap.d.ts.map create mode 100644 types/Geometry/DoIntersect.d.ts create mode 100644 types/Geometry/DoIntersect.d.ts.map create mode 100644 types/Geometry/DrillParse/BoardGetFace.d.ts create mode 100644 types/Geometry/DrillParse/BoardGetFace.d.ts.map create mode 100644 types/Geometry/DrillParse/CollisionDetection.d.ts create mode 100644 types/Geometry/DrillParse/CollisionDetection.d.ts.map create mode 100644 types/Geometry/DrillParse/Face.d.ts create mode 100644 types/Geometry/DrillParse/Face.d.ts.map create mode 100644 types/Geometry/EdgeGeometry.d.ts create mode 100644 types/Geometry/EdgeGeometry.d.ts.map create mode 100644 types/Geometry/ExportObj.d.ts create mode 100644 types/Geometry/ExportObj.d.ts.map create mode 100644 types/Geometry/ExportObj2.d.ts create mode 100644 types/Geometry/ExportObj2.d.ts.map create mode 100644 types/Geometry/ExtrudeEdgeGeometry.d.ts create mode 100644 types/Geometry/ExtrudeEdgeGeometry.d.ts.map create mode 100644 types/Geometry/ExtrudeEdgeGeometry2.d.ts create mode 100644 types/Geometry/ExtrudeEdgeGeometry2.d.ts.map create mode 100644 types/Geometry/FastOffset.d.ts create mode 100644 types/Geometry/FastOffset.d.ts.map create mode 100644 types/Geometry/FuzzVector.d.ts create mode 100644 types/Geometry/FuzzVector.d.ts.map create mode 100644 types/Geometry/GeUtils.d.ts create mode 100644 types/Geometry/GeUtils.d.ts.map create mode 100644 types/Geometry/IVec3.d.ts create mode 100644 types/Geometry/IVec3.d.ts.map create mode 100644 types/Geometry/Matrix2.d.ts create mode 100644 types/Geometry/Matrix2.d.ts.map create mode 100644 types/Geometry/OBB/obb.d.ts create mode 100644 types/Geometry/OBB/obb.d.ts.map create mode 100644 types/Geometry/OBJExporter.d.ts create mode 100644 types/Geometry/OBJExporter.d.ts.map create mode 100644 types/Geometry/Orbit.d.ts create mode 100644 types/Geometry/Orbit.d.ts.map create mode 100644 types/Geometry/Plane.d.ts create mode 100644 types/Geometry/Plane.d.ts.map create mode 100644 types/Geometry/PointShapeUtils.d.ts create mode 100644 types/Geometry/PointShapeUtils.d.ts.map create mode 100644 types/Geometry/RegionParse.d.ts create mode 100644 types/Geometry/RegionParse.d.ts.map create mode 100644 types/Geometry/RotateUV.d.ts create mode 100644 types/Geometry/RotateUV.d.ts.map create mode 100644 types/Geometry/Simplify.d.ts create mode 100644 types/Geometry/Simplify.d.ts.map create mode 100644 types/Geometry/SortEntityByBox.d.ts create mode 100644 types/Geometry/SortEntityByBox.d.ts.map create mode 100644 types/Geometry/SpaceParse/ClampSpaceParse.d.ts create mode 100644 types/Geometry/SpaceParse/ClampSpaceParse.d.ts.map create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts.map create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts.map create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts.map create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts create mode 100644 types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts.map create mode 100644 types/Geometry/SpaceParse/ISpaceParse.d.ts create mode 100644 types/Geometry/SpaceParse/ISpaceParse.d.ts.map create mode 100644 types/Geometry/SpaceParse/Point2SpaceParse.d.ts create mode 100644 types/Geometry/SpaceParse/Point2SpaceParse.d.ts.map create mode 100644 types/Geometry/SpaceParse/Point3SpaceParse,.d.ts create mode 100644 types/Geometry/SpaceParse/Point3SpaceParse,.d.ts.map create mode 100644 types/Geometry/SpaceParse/PointSelectBoards.d.ts create mode 100644 types/Geometry/SpaceParse/PointSelectBoards.d.ts.map create mode 100644 types/Geometry/SpaceParse/PointSelectSpace.d.ts create mode 100644 types/Geometry/SpaceParse/PointSelectSpace.d.ts.map create mode 100644 types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts create mode 100644 types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts.map create mode 100644 types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts create mode 100644 types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts.map create mode 100644 types/Geometry/SpaceParse/SurroundOutlineParse.d.ts create mode 100644 types/Geometry/SpaceParse/SurroundOutlineParse.d.ts.map create mode 100644 types/Geometry/SpaceParse/SurroundSpaceParse.d.ts create mode 100644 types/Geometry/SpaceParse/SurroundSpaceParse.d.ts.map create mode 100644 types/Geometry/SpaceParse/TotalSpaceParse.d.ts create mode 100644 types/Geometry/SpaceParse/TotalSpaceParse.d.ts.map create mode 100644 types/Geometry/SweepGeometry.d.ts create mode 100644 types/Geometry/SweepGeometry.d.ts.map create mode 100644 types/Geometry/UVUtils.d.ts create mode 100644 types/Geometry/UVUtils.d.ts.map create mode 100644 types/GraphicsSystem/BoolOperateUtils.d.ts create mode 100644 types/GraphicsSystem/BoolOperateUtils.d.ts.map create mode 100644 types/GraphicsSystem/CalcEdgeSealing.d.ts create mode 100644 types/GraphicsSystem/CalcEdgeSealing.d.ts.map create mode 100644 types/GraphicsSystem/CameraUpdate.d.ts create mode 100644 types/GraphicsSystem/CameraUpdate.d.ts.map create mode 100644 types/GraphicsSystem/Cursor.d.ts create mode 100644 types/GraphicsSystem/Cursor.d.ts.map create mode 100644 types/GraphicsSystem/FXAAPass.d.ts create mode 100644 types/GraphicsSystem/FXAAPass.d.ts.map create mode 100644 types/GraphicsSystem/GripScene.d.ts create mode 100644 types/GraphicsSystem/GripScene.d.ts.map create mode 100644 types/GraphicsSystem/IView.d.ts create mode 100644 types/GraphicsSystem/IView.d.ts.map create mode 100644 types/GraphicsSystem/IntersectWith.d.ts create mode 100644 types/GraphicsSystem/IntersectWith.d.ts.map create mode 100644 types/GraphicsSystem/Octree.d.ts create mode 100644 types/GraphicsSystem/Octree.d.ts.map create mode 100644 types/GraphicsSystem/OffsetPolyline.d.ts create mode 100644 types/GraphicsSystem/OffsetPolyline.d.ts.map create mode 100644 types/GraphicsSystem/OutlinePass.d.ts create mode 100644 types/GraphicsSystem/OutlinePass.d.ts.map create mode 100644 types/GraphicsSystem/PreViewer.d.ts create mode 100644 types/GraphicsSystem/PreViewer.d.ts.map create mode 100644 types/GraphicsSystem/RenderPerformanceStatus.d.ts create mode 100644 types/GraphicsSystem/RenderPerformanceStatus.d.ts.map create mode 100644 types/GraphicsSystem/RenderType.d.ts create mode 100644 types/GraphicsSystem/RenderType.d.ts.map create mode 100644 types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts create mode 100644 types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts.map create mode 100644 types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts create mode 100644 types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts.map create mode 100644 types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts create mode 100644 types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts.map create mode 100644 types/GraphicsSystem/Viewer.d.ts create mode 100644 types/GraphicsSystem/Viewer.d.ts.map create mode 100644 types/Hot/HotCommand.d.ts create mode 100644 types/Hot/HotCommand.d.ts.map create mode 100644 types/IndexedDb/IndexedDbStore.d.ts create mode 100644 types/IndexedDb/IndexedDbStore.d.ts.map create mode 100644 types/Loader/ExrLoader.d.ts create mode 100644 types/Loader/ExrLoader.d.ts.map create mode 100644 types/Loader/FBXLoader.d.ts create mode 100644 types/Loader/FBXLoader.d.ts.map create mode 100644 types/Loader/ImageLoader.d.ts create mode 100644 types/Loader/ImageLoader.d.ts.map create mode 100644 types/Nest/Common/ArrayExt.d.ts create mode 100644 types/Nest/Common/ArrayExt.d.ts.map create mode 100644 types/Nest/Common/Box2.d.ts create mode 100644 types/Nest/Common/Box2.d.ts.map create mode 100644 types/Nest/Common/ClipperCpp.d.ts create mode 100644 types/Nest/Common/ClipperCpp.d.ts.map create mode 100644 types/Nest/Common/ComparePoint.d.ts create mode 100644 types/Nest/Common/ComparePoint.d.ts.map create mode 100644 types/Nest/Common/ConvexHull2D.d.ts create mode 100644 types/Nest/Common/ConvexHull2D.d.ts.map create mode 100644 types/Nest/Common/Filer.d.ts create mode 100644 types/Nest/Common/Filer.d.ts.map create mode 100644 types/Nest/Common/Point.d.ts create mode 100644 types/Nest/Common/Point.d.ts.map create mode 100644 types/Nest/Common/Random.d.ts create mode 100644 types/Nest/Common/Random.d.ts.map create mode 100644 types/Nest/Common/Shuffle.d.ts create mode 100644 types/Nest/Common/Shuffle.d.ts.map create mode 100644 types/Nest/Common/Sleep.d.ts create mode 100644 types/Nest/Common/Sleep.d.ts.map create mode 100644 types/Nest/Common/Util.d.ts create mode 100644 types/Nest/Common/Util.d.ts.map create mode 100644 types/Nest/Common/Vector2.d.ts create mode 100644 types/Nest/Common/Vector2.d.ts.map create mode 100644 types/Nest/Converter/ConverBoard2Part.d.ts create mode 100644 types/Nest/Converter/ConverBoard2Part.d.ts.map create mode 100644 types/Nest/Converter/Curves2Parts.d.ts create mode 100644 types/Nest/Converter/Curves2Parts.d.ts.map create mode 100644 types/Nest/Converter/Path2Polyline.d.ts create mode 100644 types/Nest/Converter/Path2Polyline.d.ts.map create mode 100644 types/Nest/Converter/Simplify2.d.ts create mode 100644 types/Nest/Converter/Simplify2.d.ts.map create mode 100644 types/Nest/Core/Container.d.ts create mode 100644 types/Nest/Core/Container.d.ts.map create mode 100644 types/Nest/Core/DefaultBin.d.ts create mode 100644 types/Nest/Core/DefaultBin.d.ts.map create mode 100644 types/Nest/Core/GNestConfig.d.ts create mode 100644 types/Nest/Core/GNestConfig.d.ts.map create mode 100644 types/Nest/Core/Individual.d.ts create mode 100644 types/Nest/Core/Individual.d.ts.map create mode 100644 types/Nest/Core/NestCache.d.ts create mode 100644 types/Nest/Core/NestCache.d.ts.map create mode 100644 types/Nest/Core/NestDatabase.d.ts create mode 100644 types/Nest/Core/NestDatabase.d.ts.map create mode 100644 types/Nest/Core/OptimizeMachine.d.ts create mode 100644 types/Nest/Core/OptimizeMachine.d.ts.map create mode 100644 types/Nest/Core/OptimizeWorker.worker.d.ts create mode 100644 types/Nest/Core/OptimizeWorker.worker.d.ts.map create mode 100644 types/Nest/Core/Part.d.ts create mode 100644 types/Nest/Core/Part.d.ts.map create mode 100644 types/Nest/Core/PartState.d.ts create mode 100644 types/Nest/Core/PartState.d.ts.map create mode 100644 types/Nest/Core/Path.d.ts create mode 100644 types/Nest/Core/Path.d.ts.map create mode 100644 types/Nest/Core/PathGenerator.d.ts create mode 100644 types/Nest/Core/PathGenerator.d.ts.map create mode 100644 types/Nest/Core/PlaceType.d.ts create mode 100644 types/Nest/Core/PlaceType.d.ts.map create mode 100644 types/Nest/Test/PlaceUtil.d.ts create mode 100644 types/Nest/Test/PlaceUtil.d.ts.map create mode 100644 types/Nest/Test/TestData.d.ts create mode 100644 types/Nest/Test/TestData.d.ts.map create mode 100644 types/Nest/Test/TestHull.d.ts create mode 100644 types/Nest/Test/TestHull.d.ts.map create mode 100644 types/Nest/Test/TestNFP.d.ts create mode 100644 types/Nest/Test/TestNFP.d.ts.map create mode 100644 types/Nest/Test/TestOffset.d.ts create mode 100644 types/Nest/Test/TestOffset.d.ts.map create mode 100644 types/Nest/Test/TestPlace.d.ts create mode 100644 types/Nest/Test/TestPlace.d.ts.map create mode 100644 types/Nest/Test/TestSimply.d.ts create mode 100644 types/Nest/Test/TestSimply.d.ts.map create mode 100644 types/Nest/Test/TestVariant.d.ts create mode 100644 types/Nest/Test/TestVariant.d.ts.map create mode 100644 types/Nest/Test/TestYH2.d.ts create mode 100644 types/Nest/Test/TestYH2.d.ts.map create mode 100644 types/Nest/Test/TestYHSingle.d.ts create mode 100644 types/Nest/Test/TestYHSingle.d.ts.map create mode 100644 types/Nest/Test/TestYHWorker.d.ts create mode 100644 types/Nest/Test/TestYHWorker.d.ts.map create mode 100644 types/Production/GetProjectedArea.d.ts create mode 100644 types/Production/GetProjectedArea.d.ts.map create mode 100644 types/Production/ParseBoardHoleData.d.ts create mode 100644 types/Production/ParseBoardHoleData.d.ts.map create mode 100644 types/Production/Product.d.ts create mode 100644 types/Production/Product.d.ts.map create mode 100644 types/Reactor/CommandReactor.d.ts create mode 100644 types/Reactor/CommandReactor.d.ts.map create mode 100644 types/Reactor/RelevanceCuttingReactor.d.ts create mode 100644 types/Reactor/RelevanceCuttingReactor.d.ts.map create mode 100644 types/Reactor/SyncDataReactor.d.ts create mode 100644 types/Reactor/SyncDataReactor.d.ts.map create mode 100644 types/UI/Components/Asset.d.ts create mode 100644 types/UI/Components/Asset.d.ts.map create mode 100644 types/UI/Components/BBS/BBSCommon.d.ts create mode 100644 types/UI/Components/BBS/BBSCommon.d.ts.map create mode 100644 types/UI/Components/BBS/BBSEditor.d.ts create mode 100644 types/UI/Components/BBS/BBSEditor.d.ts.map create mode 100644 types/UI/Components/BBS/BoardInfosList.d.ts create mode 100644 types/UI/Components/BBS/BoardInfosList.d.ts.map create mode 100644 types/UI/Components/BBS/BoardLIst.d.ts create mode 100644 types/UI/Components/BBS/BoardLIst.d.ts.map create mode 100644 types/UI/Components/BBS/LookOverBoardInfos.d.ts create mode 100644 types/UI/Components/BBS/LookOverBoardInfos.d.ts.map create mode 100644 types/UI/Components/Board/BehindBoardModal.d.ts create mode 100644 types/UI/Components/Board/BehindBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/BoardCommon.d.ts create mode 100644 types/UI/Components/Board/BoardCommon.d.ts.map create mode 100644 types/UI/Components/Board/BoardConfigModal.d.ts create mode 100644 types/UI/Components/Board/BoardConfigModal.d.ts.map create mode 100644 types/UI/Components/Board/BoardFindCommon.d.ts create mode 100644 types/UI/Components/Board/BoardFindCommon.d.ts.map create mode 100644 types/UI/Components/Board/BoardFindModify.d.ts create mode 100644 types/UI/Components/Board/BoardFindModify.d.ts.map create mode 100644 types/UI/Components/Board/BoardModal.d.ts create mode 100644 types/UI/Components/Board/BoardModal.d.ts.map create mode 100644 types/UI/Components/Board/BoardOptionModal.d.ts create mode 100644 types/UI/Components/Board/BoardOptionModal.d.ts.map create mode 100644 types/UI/Components/Board/BoardProcessModal.d.ts create mode 100644 types/UI/Components/Board/BoardProcessModal.d.ts.map create mode 100644 types/UI/Components/Board/ClosingStripModal.d.ts create mode 100644 types/UI/Components/Board/ClosingStripModal.d.ts.map create mode 100644 types/UI/Components/Board/CommonBoardOption.d.ts create mode 100644 types/UI/Components/Board/CommonBoardOption.d.ts.map create mode 100644 types/UI/Components/Board/Door/DoorCommon.d.ts create mode 100644 types/UI/Components/Board/Door/DoorCommon.d.ts.map create mode 100644 types/UI/Components/Board/Door/DoorConfigModal.d.ts create mode 100644 types/UI/Components/Board/Door/DoorConfigModal.d.ts.map create mode 100644 types/UI/Components/Board/Door/DoorModal.d.ts create mode 100644 types/UI/Components/Board/Door/DoorModal.d.ts.map create mode 100644 types/UI/Components/Board/Door/DoorPreviewComponent.d.ts create mode 100644 types/UI/Components/Board/Door/DoorPreviewComponent.d.ts.map create mode 100644 types/UI/Components/Board/Door/DoorPreviewItem.d.ts create mode 100644 types/UI/Components/Board/Door/DoorPreviewItem.d.ts.map create mode 100644 types/UI/Components/Board/DrillCommon.d.ts create mode 100644 types/UI/Components/Board/DrillCommon.d.ts.map create mode 100644 types/UI/Components/Board/DrillRules.d.ts create mode 100644 types/UI/Components/Board/DrillRules.d.ts.map create mode 100644 types/UI/Components/Board/GangDrillModal.d.ts create mode 100644 types/UI/Components/Board/GangDrillModal.d.ts.map create mode 100644 types/UI/Components/Board/LastExtractBoardContour.d.ts create mode 100644 types/UI/Components/Board/LastExtractBoardContour.d.ts.map create mode 100644 types/UI/Components/Board/LayerBoardModal.d.ts create mode 100644 types/UI/Components/Board/LayerBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/Rect2Winerack.d.ts create mode 100644 types/UI/Components/Board/Rect2Winerack.d.ts.map create mode 100644 types/UI/Components/Board/SingleBoardModal.d.ts create mode 100644 types/UI/Components/Board/SingleBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/SpecialBoardModal.d.ts create mode 100644 types/UI/Components/Board/SpecialBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/TopBottomBoardModal.d.ts create mode 100644 types/UI/Components/Board/TopBottomBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/UpdateBoardInfointerface.d.ts create mode 100644 types/UI/Components/Board/UpdateBoardInfointerface.d.ts.map create mode 100644 types/UI/Components/Board/UpdateBoardInfos.d.ts create mode 100644 types/UI/Components/Board/UpdateBoardInfos.d.ts.map create mode 100644 types/UI/Components/Board/UserConfig.d.ts create mode 100644 types/UI/Components/Board/UserConfig.d.ts.map create mode 100644 types/UI/Components/Board/VerticalBoardModal.d.ts create mode 100644 types/UI/Components/Board/VerticalBoardModal.d.ts.map create mode 100644 types/UI/Components/Board/WineRack.d.ts create mode 100644 types/UI/Components/Board/WineRack.d.ts.map create mode 100644 types/UI/Components/Board/leftRightBoardModal.d.ts create mode 100644 types/UI/Components/Board/leftRightBoardModal.d.ts.map create mode 100644 types/UI/Components/BoardBatchCurtailModal.d.ts create mode 100644 types/UI/Components/BoardBatchCurtailModal.d.ts.map create mode 100644 types/UI/Components/Button.d.ts create mode 100644 types/UI/Components/Button.d.ts.map create mode 100644 types/UI/Components/CameraControlButton/CameraControlBtn.d.ts create mode 100644 types/UI/Components/CameraControlButton/CameraControlBtn.d.ts.map create mode 100644 types/UI/Components/CameraControlButton/IVisualType.d.ts create mode 100644 types/UI/Components/CameraControlButton/IVisualType.d.ts.map create mode 100644 types/UI/Components/Carousel.d.ts create mode 100644 types/UI/Components/Carousel.d.ts.map create mode 100644 types/UI/Components/ColorPanel.d.ts create mode 100644 types/UI/Components/ColorPanel.d.ts.map create mode 100644 types/UI/Components/CommandInput/CommandInput.d.ts create mode 100644 types/UI/Components/CommandInput/CommandInput.d.ts.map create mode 100644 types/UI/Components/CommandInput/CommandInputManage.d.ts create mode 100644 types/UI/Components/CommandInput/CommandInputManage.d.ts.map create mode 100644 types/UI/Components/CommandInput/CommandInputUI.d.ts create mode 100644 types/UI/Components/CommandInput/CommandInputUI.d.ts.map create mode 100644 types/UI/Components/CommandInput/TransparentTerminal.d.ts create mode 100644 types/UI/Components/CommandInput/TransparentTerminal.d.ts.map create mode 100644 types/UI/Components/CommandLine.d.ts create mode 100644 types/UI/Components/CommandLine.d.ts.map create mode 100644 types/UI/Components/CommandLineContainer.d.ts create mode 100644 types/UI/Components/CommandLineContainer.d.ts.map create mode 100644 types/UI/Components/CommandPanel/CmdPanel.d.ts create mode 100644 types/UI/Components/CommandPanel/CmdPanel.d.ts.map create mode 100644 types/UI/Components/CommandPanel/CommandItem.d.ts create mode 100644 types/UI/Components/CommandPanel/CommandItem.d.ts.map create mode 100644 types/UI/Components/CommandPanel/CommandList.d.ts create mode 100644 types/UI/Components/CommandPanel/CommandList.d.ts.map create mode 100644 types/UI/Components/Common.d.ts create mode 100644 types/UI/Components/Common.d.ts.map create mode 100644 types/UI/Components/Common/CommonIframe.d.ts create mode 100644 types/UI/Components/Common/CommonIframe.d.ts.map create mode 100644 types/UI/Components/Common/Confirm.d.ts create mode 100644 types/UI/Components/Common/Confirm.d.ts.map create mode 100644 types/UI/Components/Common/Datalist.d.ts create mode 100644 types/UI/Components/Common/Datalist.d.ts.map create mode 100644 types/UI/Components/Common/PopoverButton.d.ts create mode 100644 types/UI/Components/Common/PopoverButton.d.ts.map create mode 100644 types/UI/Components/ComponentObjectId.d.ts create mode 100644 types/UI/Components/ComponentObjectId.d.ts.map create mode 100644 types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts create mode 100644 types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts.map create mode 100644 types/UI/Components/ContextMenu/MenuItem.d.ts create mode 100644 types/UI/Components/ContextMenu/MenuItem.d.ts.map create mode 100644 types/UI/Components/EntityModal/EntityColorList.d.ts create mode 100644 types/UI/Components/EntityModal/EntityColorList.d.ts.map create mode 100644 types/UI/Components/EntityModal/EntityModal.d.ts create mode 100644 types/UI/Components/EntityModal/EntityModal.d.ts.map create mode 100644 types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts create mode 100644 types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts.map create mode 100644 types/UI/Components/LatticeDrawer.d.ts create mode 100644 types/UI/Components/LatticeDrawer.d.ts.map create mode 100644 types/UI/Components/MainContent/Content.d.ts create mode 100644 types/UI/Components/MainContent/Content.d.ts.map create mode 100644 types/UI/Components/MainContent/Login.d.ts create mode 100644 types/UI/Components/MainContent/Login.d.ts.map create mode 100644 types/UI/Components/MainContent/MainContent.d.ts create mode 100644 types/UI/Components/MainContent/MainContent.d.ts.map create mode 100644 types/UI/Components/MainContent/Regist.d.ts create mode 100644 types/UI/Components/MainContent/Regist.d.ts.map create mode 100644 types/UI/Components/MaterialContainer.d.ts create mode 100644 types/UI/Components/MaterialContainer.d.ts.map create mode 100644 types/UI/Components/MaterialExplorer.d.ts create mode 100644 types/UI/Components/MaterialExplorer.d.ts.map create mode 100644 types/UI/Components/Modal/ActivityLayerBoard.d.ts create mode 100644 types/UI/Components/Modal/ActivityLayerBoard.d.ts.map create mode 100644 types/UI/Components/Modal/ArrayModal.d.ts create mode 100644 types/UI/Components/Modal/ArrayModal.d.ts.map create mode 100644 types/UI/Components/Modal/CadModal.d.ts create mode 100644 types/UI/Components/Modal/CadModal.d.ts.map create mode 100644 types/UI/Components/Modal/DrillingTemplateList.d.ts create mode 100644 types/UI/Components/Modal/DrillingTemplateList.d.ts.map create mode 100644 types/UI/Components/Modal/DrillingTemplateManage.d.ts create mode 100644 types/UI/Components/Modal/DrillingTemplateManage.d.ts.map create mode 100644 types/UI/Components/Modal/FrameManager.d.ts create mode 100644 types/UI/Components/Modal/FrameManager.d.ts.map create mode 100644 types/UI/Components/Modal/HardwareModal.d.ts create mode 100644 types/UI/Components/Modal/HardwareModal.d.ts.map create mode 100644 types/UI/Components/Modal/InsertModal.d.ts create mode 100644 types/UI/Components/Modal/InsertModal.d.ts.map create mode 100644 types/UI/Components/Modal/InterfereModal.d.ts create mode 100644 types/UI/Components/Modal/InterfereModal.d.ts.map create mode 100644 types/UI/Components/Modal/LightModal.d.ts create mode 100644 types/UI/Components/Modal/LightModal.d.ts.map create mode 100644 types/UI/Components/Modal/MaskManage.d.ts create mode 100644 types/UI/Components/Modal/MaskManage.d.ts.map create mode 100644 types/UI/Components/Modal/ModalContainer.d.ts create mode 100644 types/UI/Components/Modal/ModalContainer.d.ts.map create mode 100644 types/UI/Components/Modal/ModalInterface.d.ts create mode 100644 types/UI/Components/Modal/ModalInterface.d.ts.map create mode 100644 types/UI/Components/Modal/ModalsManage.d.ts create mode 100644 types/UI/Components/Modal/ModalsManage.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/FrameList.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/FrameList.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts.map create mode 100644 types/UI/Components/Modal/OptionModal/SystemConfig.d.ts create mode 100644 types/UI/Components/Modal/OptionModal/SystemConfig.d.ts.map create mode 100644 types/UI/Components/Modal/ProcessingGroupModal.d.ts create mode 100644 types/UI/Components/Modal/ProcessingGroupModal.d.ts.map create mode 100644 types/UI/Components/Modal/RecycleBin.d.ts create mode 100644 types/UI/Components/Modal/RecycleBin.d.ts.map create mode 100644 types/UI/Components/Modal/SavaAsModal.d.ts create mode 100644 types/UI/Components/Modal/SavaAsModal.d.ts.map create mode 100644 types/UI/Components/Modal/SnapModal.d.ts create mode 100644 types/UI/Components/Modal/SnapModal.d.ts.map create mode 100644 types/UI/Components/Panel.d.ts create mode 100644 types/UI/Components/Panel.d.ts.map create mode 100644 types/UI/Components/RightPanel/BoardPropsComponent.d.ts create mode 100644 types/UI/Components/RightPanel/BoardPropsComponent.d.ts.map create mode 100644 types/UI/Components/RightPanel/BoardTemplatePanel.d.ts create mode 100644 types/UI/Components/RightPanel/BoardTemplatePanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/CommonMetalPanel.d.ts create mode 100644 types/UI/Components/RightPanel/CommonMetalPanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts create mode 100644 types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/DrillComponent.d.ts create mode 100644 types/UI/Components/RightPanel/DrillComponent.d.ts.map create mode 100644 types/UI/Components/RightPanel/MatalsPanel.d.ts create mode 100644 types/UI/Components/RightPanel/MatalsPanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/Modeling/KnifeList.d.ts create mode 100644 types/UI/Components/RightPanel/Modeling/KnifeList.d.ts.map create mode 100644 types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts create mode 100644 types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts.map create mode 100644 types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts create mode 100644 types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts.map create mode 100644 types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts create mode 100644 types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts.map create mode 100644 types/UI/Components/RightPanel/ModelingComponent.d.ts create mode 100644 types/UI/Components/RightPanel/ModelingComponent.d.ts.map create mode 100644 types/UI/Components/RightPanel/RightPanel.d.ts create mode 100644 types/UI/Components/RightPanel/RightPanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/RightPanelButton.d.ts create mode 100644 types/UI/Components/RightPanel/RightPanelButton.d.ts.map create mode 100644 types/UI/Components/RightPanel/RightPanelInterface.d.ts create mode 100644 types/UI/Components/RightPanel/RightPanelInterface.d.ts.map create mode 100644 types/UI/Components/RightPanel/ScenePanel.d.ts create mode 100644 types/UI/Components/RightPanel/ScenePanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/SealingComponent.d.ts create mode 100644 types/UI/Components/RightPanel/SealingComponent.d.ts.map create mode 100644 types/UI/Components/RightPanel/TemplateParamPanel.d.ts create mode 100644 types/UI/Components/RightPanel/TemplateParamPanel.d.ts.map create mode 100644 types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts create mode 100644 types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts.map create mode 100644 types/UI/Components/RotateLayerBoard.d.ts create mode 100644 types/UI/Components/RotateLayerBoard.d.ts.map create mode 100644 types/UI/Components/SelectMarquee.d.ts create mode 100644 types/UI/Components/SelectMarquee.d.ts.map create mode 100644 types/UI/Components/SettingPanel/SettingPanel.d.ts create mode 100644 types/UI/Components/SettingPanel/SettingPanel.d.ts.map create mode 100644 types/UI/Components/SimpleDialog.d.ts create mode 100644 types/UI/Components/SimpleDialog.d.ts.map create mode 100644 types/UI/Components/SourceManage/CommonPanel.d.ts create mode 100644 types/UI/Components/SourceManage/CommonPanel.d.ts.map create mode 100644 types/UI/Components/SourceManage/FileList.d.ts create mode 100644 types/UI/Components/SourceManage/FileList.d.ts.map create mode 100644 types/UI/Components/SourceManage/FilePanel.d.ts create mode 100644 types/UI/Components/SourceManage/FilePanel.d.ts.map create mode 100644 types/UI/Components/SourceManage/HandleDirComponent.d.ts create mode 100644 types/UI/Components/SourceManage/HandleDirComponent.d.ts.map create mode 100644 types/UI/Components/SourceManage/ImgList.d.ts create mode 100644 types/UI/Components/SourceManage/ImgList.d.ts.map create mode 100644 types/UI/Components/SourceManage/MaterialList.d.ts create mode 100644 types/UI/Components/SourceManage/MaterialList.d.ts.map create mode 100644 types/UI/Components/SourceManage/MaterialPanel.d.ts create mode 100644 types/UI/Components/SourceManage/MaterialPanel.d.ts.map create mode 100644 types/UI/Components/SourceManage/Pagination.d.ts create mode 100644 types/UI/Components/SourceManage/Pagination.d.ts.map create mode 100644 types/UI/Components/SourceManage/SelectDataList.d.ts create mode 100644 types/UI/Components/SourceManage/SelectDataList.d.ts.map create mode 100644 types/UI/Components/SourceManage/SoucePanel.d.ts create mode 100644 types/UI/Components/SourceManage/SoucePanel.d.ts.map create mode 100644 types/UI/Components/SourceManage/SpaceInfoBar.d.ts create mode 100644 types/UI/Components/SourceManage/SpaceInfoBar.d.ts.map create mode 100644 types/UI/Components/SourceManage/TexturePanel.d.ts create mode 100644 types/UI/Components/SourceManage/TexturePanel.d.ts.map create mode 100644 types/UI/Components/SourceManage/UploadCom.d.ts create mode 100644 types/UI/Components/SourceManage/UploadCom.d.ts.map create mode 100644 types/UI/Components/SpeechBox/SpeechBox.d.ts create mode 100644 types/UI/Components/SpeechBox/SpeechBox.d.ts.map create mode 100644 types/UI/Components/SpeechBox/SpeechBoxManage.d.ts create mode 100644 types/UI/Components/SpeechBox/SpeechBoxManage.d.ts.map create mode 100644 types/UI/Components/Status.d.ts create mode 100644 types/UI/Components/Status.d.ts.map create mode 100644 types/UI/Components/Template/ActionTree.d.ts create mode 100644 types/UI/Components/Template/ActionTree.d.ts.map create mode 100644 types/UI/Components/Template/GetRoomCabName.d.ts create mode 100644 types/UI/Components/Template/GetRoomCabName.d.ts.map create mode 100644 types/UI/Components/Template/KuGanDetail.d.ts create mode 100644 types/UI/Components/Template/KuGanDetail.d.ts.map create mode 100644 types/UI/Components/Template/TemplateActionDiglog.d.ts create mode 100644 types/UI/Components/Template/TemplateActionDiglog.d.ts.map create mode 100644 types/UI/Components/Template/TemplateActionList.d.ts create mode 100644 types/UI/Components/Template/TemplateActionList.d.ts.map create mode 100644 types/UI/Components/Template/TemplateComponent.d.ts create mode 100644 types/UI/Components/Template/TemplateComponent.d.ts.map create mode 100644 types/UI/Components/Template/TemplateDetail.d.ts create mode 100644 types/UI/Components/Template/TemplateDetail.d.ts.map create mode 100644 types/UI/Components/Template/TemplateEditor.d.ts create mode 100644 types/UI/Components/Template/TemplateEditor.d.ts.map create mode 100644 types/UI/Components/Template/TemplateInterface.d.ts create mode 100644 types/UI/Components/Template/TemplateInterface.d.ts.map create mode 100644 types/UI/Components/Template/TemplateList.d.ts create mode 100644 types/UI/Components/Template/TemplateList.d.ts.map create mode 100644 types/UI/Components/Template/TemplateParamList.d.ts create mode 100644 types/UI/Components/Template/TemplateParamList.d.ts.map create mode 100644 types/UI/Components/Template/TemplateSaveDir.d.ts create mode 100644 types/UI/Components/Template/TemplateSaveDir.d.ts.map create mode 100644 types/UI/Components/Template/TemplateSelect.d.ts create mode 100644 types/UI/Components/Template/TemplateSelect.d.ts.map create mode 100644 types/UI/Components/Template/TemplateTagCom.d.ts create mode 100644 types/UI/Components/Template/TemplateTagCom.d.ts.map create mode 100644 types/UI/Components/Template/ToplineList.d.ts create mode 100644 types/UI/Components/Template/ToplineList.d.ts.map create mode 100644 types/UI/Components/Template/ToplineManage.d.ts create mode 100644 types/UI/Components/Template/ToplineManage.d.ts.map create mode 100644 types/UI/Components/Toaster.d.ts create mode 100644 types/UI/Components/Toaster.d.ts.map create mode 100644 types/UI/Components/ToolBar/PropertiesPanel.d.ts create mode 100644 types/UI/Components/ToolBar/PropertiesPanel.d.ts.map create mode 100644 types/UI/Components/ToolBar/PropertiesStore.d.ts create mode 100644 types/UI/Components/ToolBar/PropertiesStore.d.ts.map create mode 100644 types/UI/Components/ToolBar/Properties_Dim.d.ts create mode 100644 types/UI/Components/ToolBar/Properties_Dim.d.ts.map create mode 100644 types/UI/Components/ToolBar/Properties_Text.d.ts create mode 100644 types/UI/Components/ToolBar/Properties_Text.d.ts.map create mode 100644 types/UI/Components/ToolBar/ToolBar.d.ts create mode 100644 types/UI/Components/ToolBar/ToolBar.d.ts.map create mode 100644 types/UI/Components/ToolBar/ToolbarContainer.d.ts create mode 100644 types/UI/Components/ToolBar/ToolbarContainer.d.ts.map create mode 100644 types/UI/Components/TopToolBar/DimensionPanel.d.ts create mode 100644 types/UI/Components/TopToolBar/DimensionPanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/DrawingPanel.d.ts create mode 100644 types/UI/Components/TopToolBar/DrawingPanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/FileOperationPanel.d.ts create mode 100644 types/UI/Components/TopToolBar/FileOperationPanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/RenderPanel.d.ts create mode 100644 types/UI/Components/TopToolBar/RenderPanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts create mode 100644 types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts create mode 100644 types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts.map create mode 100644 types/UI/Components/TopToolBar/ToolsBlock.d.ts create mode 100644 types/UI/Components/TopToolBar/ToolsBlock.d.ts.map create mode 100644 types/UI/Components/TopToolBar/ToolsBlockStore.d.ts create mode 100644 types/UI/Components/TopToolBar/ToolsBlockStore.d.ts.map create mode 100644 types/UI/Components/TopToolBar/TopToolBar.d.ts create mode 100644 types/UI/Components/TopToolBar/TopToolBar.d.ts.map create mode 100644 types/UI/Components/TopToolBar/TopToolBarInterface.d.ts create mode 100644 types/UI/Components/TopToolBar/TopToolBarInterface.d.ts.map create mode 100644 types/UI/Components/commandLineInput/InputHint.d.ts create mode 100644 types/UI/Components/commandLineInput/InputHint.d.ts.map create mode 100644 types/UI/DynamicPrompt/AngleDynamicInput.d.ts create mode 100644 types/UI/DynamicPrompt/AngleDynamicInput.d.ts.map create mode 100644 types/UI/DynamicPrompt/DynamicInputBase.d.ts create mode 100644 types/UI/DynamicPrompt/DynamicInputBase.d.ts.map create mode 100644 types/UI/DynamicPrompt/DynamicInputManage.d.ts create mode 100644 types/UI/DynamicPrompt/DynamicInputManage.d.ts.map create mode 100644 types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts create mode 100644 types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts.map create mode 100644 types/UI/DynamicPrompt/GetPointPromptBlock.d.ts create mode 100644 types/UI/DynamicPrompt/GetPointPromptBlock.d.ts.map create mode 100644 types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts create mode 100644 types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts.map create mode 100644 types/UI/DynamicPrompt/PromptBlock.d.ts create mode 100644 types/UI/DynamicPrompt/PromptBlock.d.ts.map create mode 100644 types/UI/DynamicPrompt/RealDynamicInput.d.ts create mode 100644 types/UI/DynamicPrompt/RealDynamicInput.d.ts.map create mode 100644 types/UI/Editor/Asset/Asset.d.ts create mode 100644 types/UI/Editor/Asset/Asset.d.ts.map create mode 100644 types/UI/Editor/Asset/MaterialRenderer.d.ts create mode 100644 types/UI/Editor/Asset/MaterialRenderer.d.ts.map create mode 100644 types/UI/Editor/Material/dialog.d.ts create mode 100644 types/UI/Editor/Material/dialog.d.ts.map create mode 100644 types/UI/IconEnum.d.ts create mode 100644 types/UI/IconEnum.d.ts.map create mode 100644 types/UI/JsPlugin/Dialog.d.ts create mode 100644 types/UI/JsPlugin/Dialog.d.ts.map create mode 100644 types/UI/JsPlugin/InputAutoSize.d.ts create mode 100644 types/UI/JsPlugin/InputAutoSize.d.ts.map create mode 100644 types/UI/JsPlugin/SelectMarquee.d.ts create mode 100644 types/UI/JsPlugin/SelectMarquee.d.ts.map create mode 100644 types/UI/JsPlugin/Symbol.d.ts create mode 100644 types/UI/JsPlugin/Symbol.d.ts.map create mode 100644 types/UI/Layout/ApplicationLayout.d.ts create mode 100644 types/UI/Layout/ApplicationLayout.d.ts.map create mode 100644 types/UI/Layout/LayoutOnSizeEventManage.d.ts create mode 100644 types/UI/Layout/LayoutOnSizeEventManage.d.ts.map create mode 100644 types/UI/Layout/LayoutUtils.d.ts create mode 100644 types/UI/Layout/LayoutUtils.d.ts.map create mode 100644 types/UI/Layout/MaterialEditorLayout.d.ts create mode 100644 types/UI/Layout/MaterialEditorLayout.d.ts.map create mode 100644 types/UI/MaterialEditor/GoodsList.d.ts create mode 100644 types/UI/MaterialEditor/GoodsList.d.ts.map create mode 100644 types/UI/MaterialEditor/MaterialCommon.d.ts create mode 100644 types/UI/MaterialEditor/MaterialCommon.d.ts.map create mode 100644 types/UI/MaterialEditor/MaterialEditorContent.d.ts create mode 100644 types/UI/MaterialEditor/MaterialEditorContent.d.ts.map create mode 100644 types/UI/MaterialEditor/MaterialLinkShop.d.ts create mode 100644 types/UI/MaterialEditor/MaterialLinkShop.d.ts.map create mode 100644 types/UI/MaterialEditor/MaterialShop.d.ts create mode 100644 types/UI/MaterialEditor/MaterialShop.d.ts.map create mode 100644 types/UI/MaterialEditor/PropertiesPane.d.ts create mode 100644 types/UI/MaterialEditor/PropertiesPane.d.ts.map create mode 100644 types/UI/MaterialEditor/TextureContent.d.ts create mode 100644 types/UI/MaterialEditor/TextureContent.d.ts.map create mode 100644 types/UI/MaterialEditor/TextureItem.d.ts create mode 100644 types/UI/MaterialEditor/TextureItem.d.ts.map create mode 100644 types/UI/MaterialEditor/TextureList.d.ts create mode 100644 types/UI/MaterialEditor/TextureList.d.ts.map create mode 100644 types/UI/Store/ActivityLayerBoardStore.d.ts create mode 100644 types/UI/Store/ActivityLayerBoardStore.d.ts.map create mode 100644 types/UI/Store/BBSEditorStore.d.ts create mode 100644 types/UI/Store/BBSEditorStore.d.ts.map create mode 100644 types/UI/Store/BoardFindInterface.d.ts create mode 100644 types/UI/Store/BoardFindInterface.d.ts.map create mode 100644 types/UI/Store/BoardFindModifyStore.d.ts create mode 100644 types/UI/Store/BoardFindModifyStore.d.ts.map create mode 100644 types/UI/Store/BoardInterface.d.ts create mode 100644 types/UI/Store/BoardInterface.d.ts.map create mode 100644 types/UI/Store/BoardStore.d.ts create mode 100644 types/UI/Store/BoardStore.d.ts.map create mode 100644 types/UI/Store/CommandStore.d.ts create mode 100644 types/UI/Store/CommandStore.d.ts.map create mode 100644 types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts create mode 100644 types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts.map create mode 100644 types/UI/Store/DoorDrawerStore/DoorStore.d.ts create mode 100644 types/UI/Store/DoorDrawerStore/DoorStore.d.ts.map create mode 100644 types/UI/Store/DoorDrawerStore/DrawerStore.d.ts create mode 100644 types/UI/Store/DoorDrawerStore/DrawerStore.d.ts.map create mode 100644 types/UI/Store/DoorInterface.d.ts create mode 100644 types/UI/Store/DoorInterface.d.ts.map create mode 100644 types/UI/Store/DownPanelStore.d.ts create mode 100644 types/UI/Store/DownPanelStore.d.ts.map create mode 100644 types/UI/Store/DrillStore.d.ts create mode 100644 types/UI/Store/DrillStore.d.ts.map create mode 100644 types/UI/Store/EntityStore.d.ts create mode 100644 types/UI/Store/EntityStore.d.ts.map create mode 100644 types/UI/Store/KuGanStore.d.ts create mode 100644 types/UI/Store/KuGanStore.d.ts.map create mode 100644 types/UI/Store/LatticeDrawerStore.d.ts create mode 100644 types/UI/Store/LatticeDrawerStore.d.ts.map create mode 100644 types/UI/Store/LatticeInterface.d.ts create mode 100644 types/UI/Store/LatticeInterface.d.ts.map create mode 100644 types/UI/Store/MaterialStore.d.ts create mode 100644 types/UI/Store/MaterialStore.d.ts.map create mode 100644 types/UI/Store/Rect2WinerackStore.d.ts create mode 100644 types/UI/Store/Rect2WinerackStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts create mode 100644 types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/DrillingStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/DrillingStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/HardwareStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/HardwareStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/LightStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/LightStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/Modeling2Store.d.ts create mode 100644 types/UI/Store/RightPanelStore/Modeling2Store.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/ModelingStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/ModelingStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/RightPanelStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/RightPanelStore.d.ts.map create mode 100644 types/UI/Store/RightPanelStore/SealingStore.d.ts create mode 100644 types/UI/Store/RightPanelStore/SealingStore.d.ts.map create mode 100644 types/UI/Store/TemplateEditorStore.d.ts create mode 100644 types/UI/Store/TemplateEditorStore.d.ts.map create mode 100644 types/UI/Store/TextureStore.d.ts create mode 100644 types/UI/Store/TextureStore.d.ts.map create mode 100644 types/UI/Store/TopPanelStore.d.ts create mode 100644 types/UI/Store/TopPanelStore.d.ts.map create mode 100644 types/UI/Store/UpdateBoardInfoStore.d.ts create mode 100644 types/UI/Store/UpdateBoardInfoStore.d.ts.map create mode 100644 types/UI/Store/UserConfigStore.d.ts create mode 100644 types/UI/Store/UserConfigStore.d.ts.map create mode 100644 types/UI/Store/WineRackInterface.d.ts create mode 100644 types/UI/Store/WineRackInterface.d.ts.map create mode 100644 types/UI/Store/WineRackStore.d.ts create mode 100644 types/UI/Store/WineRackStore.d.ts.map create mode 100644 types/UI/Store/drillInterface.d.ts create mode 100644 types/UI/Store/drillInterface.d.ts.map create mode 100644 types/WebCADView/WebCADView.d.ts create mode 100644 types/WebCADView/WebCADView.d.ts.map create mode 100644 types/api.d.ts create mode 100644 types/api.d.ts.map create mode 100644 types/csg/core/CAG.d.ts create mode 100644 types/csg/core/CAG.d.ts.map create mode 100644 types/csg/core/CAGFactories.d.ts create mode 100644 types/csg/core/CAGFactories.d.ts.map create mode 100644 types/csg/core/CSG.d.ts create mode 100644 types/csg/core/CSG.d.ts.map create mode 100644 types/csg/core/FuzzyFactory.d.ts create mode 100644 types/csg/core/FuzzyFactory.d.ts.map create mode 100644 types/csg/core/FuzzyFactory2d.d.ts create mode 100644 types/csg/core/FuzzyFactory2d.d.ts.map create mode 100644 types/csg/core/FuzzyFactory3d.d.ts create mode 100644 types/csg/core/FuzzyFactory3d.d.ts.map create mode 100644 types/csg/core/Geometry2CSG.d.ts create mode 100644 types/csg/core/Geometry2CSG.d.ts.map create mode 100644 types/csg/core/constants.d.ts create mode 100644 types/csg/core/constants.d.ts.map create mode 100644 types/csg/core/math/IsMirrot.d.ts create mode 100644 types/csg/core/math/IsMirrot.d.ts.map create mode 100644 types/csg/core/math/Line2.d.ts create mode 100644 types/csg/core/math/Line2.d.ts.map create mode 100644 types/csg/core/math/OrthoNormalBasis.d.ts create mode 100644 types/csg/core/math/OrthoNormalBasis.d.ts.map create mode 100644 types/csg/core/math/Plane.d.ts create mode 100644 types/csg/core/math/Plane.d.ts.map create mode 100644 types/csg/core/math/Polygon3.d.ts create mode 100644 types/csg/core/math/Polygon3.d.ts.map create mode 100644 types/csg/core/math/Side.d.ts create mode 100644 types/csg/core/math/Side.d.ts.map create mode 100644 types/csg/core/math/Vector2.d.ts create mode 100644 types/csg/core/math/Vector2.d.ts.map create mode 100644 types/csg/core/math/Vector3.d.ts create mode 100644 types/csg/core/math/Vector3.d.ts.map create mode 100644 types/csg/core/math/Vertex2.d.ts create mode 100644 types/csg/core/math/Vertex2.d.ts.map create mode 100644 types/csg/core/math/Vertex3.d.ts create mode 100644 types/csg/core/math/Vertex3.d.ts.map create mode 100644 types/csg/core/math/lineUtils.d.ts create mode 100644 types/csg/core/math/lineUtils.d.ts.map create mode 100644 types/csg/core/math/reTesselateCoplanarPolygons.d.ts create mode 100644 types/csg/core/math/reTesselateCoplanarPolygons.d.ts.map create mode 100644 types/csg/core/trees.d.ts create mode 100644 types/csg/core/trees.d.ts.map create mode 100644 types/csg/core/utils.d.ts create mode 100644 types/csg/core/utils.d.ts.map create mode 100644 types/csg/core/utils/cagValidation.d.ts create mode 100644 types/csg/core/utils/cagValidation.d.ts.map create mode 100644 types/csg/core/utils/canonicalize.d.ts create mode 100644 types/csg/core/utils/canonicalize.d.ts.map create mode 100644 types/csg/core/utils/csgMeasurements.d.ts create mode 100644 types/csg/core/utils/csgMeasurements.d.ts.map create mode 100644 types/csg/core/utils/retesellate.d.ts create mode 100644 types/csg/core/utils/retesellate.d.ts.map create mode 100644 types/index.d.ts create mode 100644 types/index.d.ts.map create mode 100644 types/ueapi.d.ts create mode 100644 types/ueapi.d.ts.map create mode 100644 types/webview.d.ts create mode 100644 types/webview.d.ts.map diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..84737da --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.history + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +#custom +/dist* +/package-lock.json +yarn.lock + +#导出的WebCADApi +api diff --git a/api.esm.js b/api.esm.js new file mode 100644 index 0000000..12efe99 --- /dev/null +++ b/api.esm.js @@ -0,0 +1,20324 @@ +import { Vector3, LineDashedMaterial, Vector2, MeshBasicMaterial, LineBasicMaterial, DoubleSide, ShaderMaterial, Color, Matrix4, Box3, Object3D, BufferGeometry, Shape as Shape$1, ShapeGeometry, BufferAttribute, EllipseCurve, ExtrudeGeometry, Mesh, Plane as Plane$1, Line3, Line as Line$1, MathUtils, Geometry, Face3, Path, LineSegments, InstancedInterleavedBuffer, InterleavedBufferAttribute, CylinderBufferGeometry, Float32BufferAttribute, ShapeUtils, CatmullRomCurve3, BoxBufferGeometry, BoxGeometry } from 'three'; +import { Line2 } from 'three/examples/jsm/lines/Line2'; +import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry'; +import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial'; + +function observable() { }; +function toJS() { }; + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +/** + * 删除数组中指定的元素,返回数组本身 + * @param {Array} arr 需要操作的数组 + * @param {*} el 需要移除的元素 + */ +function arrayRemoveOnce(arr, el) { + let index = arr.indexOf(el); + if (index !== -1) + arr.splice(index, 1); + return arr; +} +/** + * 删除通过函数校验的元素 + * @param {(e: T) => boolean} checkFuntion 校验函数 + */ +function arrayRemoveIf(arr, checkFuntion) { + let j = 0; + for (let i = 0, l = arr.length; i < l; i++) { + if (!checkFuntion(arr[i])) { + arr[j++] = arr[i]; + } + } + arr.length = j; + return arr; +} +function arrayLast(arr) { + return arr[arr.length - 1]; +} +/** + * 根据数值从小到大排序数组 + * @param {Array} arr + * @returns {Array} 返回自身 + */ +function arraySortByNumber(arr) { + arr.sort(sortNumberCompart); + return arr; +} +/** + * 对排序好的数组进行去重操作 + * @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数 + * @returns {Array} 返回自身 + */ +function arrayRemoveDuplicateBySort(arr, checkFuction = checkEqual) { + if (arr.length < 2) + return arr; + let j = 1; + for (let i = 1, l = arr.length; i < l; i++) + if (!checkFuction(arr[j - 1], arr[i])) + arr[j++] = arr[i]; + arr.length = j; + return arr; +} +function sortNumberCompart(e1, e2) { + return e1 - e2; +} +function checkEqual(e1, e2) { + return e1 === e2; +} +/** + * 改变数组的值顺序 + * @param arr 需要改变初始值位置的数组 + * @param index //将index位置以后的值放到起始位置 + */ +function changeArrayStartIndex(arr, index) { + arr.unshift(...arr.splice(index)); + return arr; +} +function equalArray(a, b, checkF = checkEqual) { + if (a === b) + return true; + if (a.length !== b.length) + return false; + for (var i = 0; i < a.length; ++i) + if (!checkF(a[i], b[i])) + return false; + return true; +} +function arrayClone(arr) { + return arr.slice(); +} +function arraySum(arr) { + let sum = 0; + for (let n of arr) + sum += n; + return sum; +} + +function GetGoodShaderSimple(color = new Vector3) { + return { + uniforms: { + "SurfaceColor": { value: color } + }, + vertexShader: "", + fragmentShader: "", + polygonOffset: true, + polygonOffsetFactor: 1, + polygonOffsetUnits: 1 + }; +} + +const ColorPalette = [ + [0, 0, 0, 0], + //[255, 255, 255, 255],//----- 0 - ByBlock - White + [255, 0, 0, 255], + // [255, 0, 0, 255], //----- 1 - Red + [255, 255, 0, 255], + [0, 255, 0, 255], + [0, 255, 255, 255], + [0, 0, 255, 255], + [255, 0, 255, 255], + // [255, 0, 0, 255], //----- 7 - More red Red + // [255, 0, 0, 255], //----- 8 - More red Red + // [255, 0, 0, 255], //----- 9 - More red Red + [255, 255, 255, 255], + [128, 128, 128, 255], + [192, 192, 192, 255], + [255, 0, 0, 255], + [255, 127, 127, 255], + [165, 0, 0, 255], + [165, 82, 82, 255], + [127, 0, 0, 255], + [127, 63, 63, 255], + [76, 0, 0, 255], + [76, 38, 38, 255], + [38, 0, 0, 255], + [38, 19, 19, 255], + [255, 63, 0, 255], + [255, 159, 127, 255], + [165, 41, 0, 255], + [165, 103, 82, 255], + [127, 31, 0, 255], + [127, 79, 63, 255], + [76, 19, 0, 255], + [76, 47, 38, 255], + [38, 9, 0, 255], + [38, 23, 19, 255], + [255, 127, 0, 255], + [255, 191, 127, 255], + [165, 82, 0, 255], + [165, 124, 82, 255], + [127, 63, 0, 255], + [127, 95, 63, 255], + [76, 38, 0, 255], + [76, 57, 38, 255], + [38, 19, 0, 255], + [38, 28, 19, 255], + [255, 191, 0, 255], + [255, 223, 127, 255], + [165, 124, 0, 255], + [165, 145, 82, 255], + [127, 95, 0, 255], + [127, 111, 63, 255], + [76, 57, 0, 255], + [76, 66, 38, 255], + [38, 28, 0, 255], + [38, 33, 19, 255], + [255, 255, 0, 255], + [255, 255, 127, 255], + [165, 165, 0, 255], + [165, 165, 82, 255], + [127, 127, 0, 255], + [127, 127, 63, 255], + [76, 76, 0, 255], + [76, 76, 38, 255], + [38, 38, 0, 255], + [38, 38, 19, 255], + [191, 255, 0, 255], + [223, 255, 127, 255], + [124, 165, 0, 255], + [145, 165, 82, 255], + [95, 127, 0, 255], + [111, 127, 63, 255], + [57, 76, 0, 255], + [66, 76, 38, 255], + [28, 38, 0, 255], + [33, 38, 19, 255], + [127, 255, 0, 255], + [191, 255, 127, 255], + [82, 165, 0, 255], + [124, 165, 82, 255], + [63, 127, 0, 255], + [95, 127, 63, 255], + [38, 76, 0, 255], + [57, 76, 38, 255], + [19, 38, 0, 255], + [28, 38, 19, 255], + [63, 255, 0, 255], + [159, 255, 127, 255], + [41, 165, 0, 255], + [103, 165, 82, 255], + [31, 127, 0, 255], + [79, 127, 63, 255], + [19, 76, 0, 255], + [47, 76, 38, 255], + [9, 38, 0, 255], + [23, 38, 19, 255], + [0, 255, 0, 255], + [127, 255, 127, 255], + [0, 165, 0, 255], + [82, 165, 82, 255], + [0, 127, 0, 255], + [63, 127, 63, 255], + [0, 76, 0, 255], + [38, 76, 38, 255], + [0, 38, 0, 255], + [19, 38, 19, 255], + [0, 255, 63, 255], + [127, 255, 159, 255], + [0, 165, 41, 255], + [82, 165, 103, 255], + [0, 127, 31, 255], + [63, 127, 79, 255], + [0, 76, 19, 255], + [38, 76, 47, 255], + [0, 38, 9, 255], + [19, 38, 23, 255], + [0, 255, 127, 255], + [127, 255, 191, 255], + [0, 165, 82, 255], + [82, 165, 124, 255], + [0, 127, 63, 255], + [63, 127, 95, 255], + [0, 76, 38, 255], + [38, 76, 57, 255], + [0, 38, 19, 255], + [19, 38, 28, 255], + [0, 255, 191, 255], + [127, 255, 223, 255], + [0, 165, 124, 255], + [82, 165, 145, 255], + [0, 127, 95, 255], + [63, 127, 111, 255], + [0, 76, 57, 255], + [38, 76, 66, 255], + [0, 38, 28, 255], + [19, 38, 33, 255], + [0, 255, 255, 255], + [127, 255, 255, 255], + [0, 165, 165, 255], + [82, 165, 165, 255], + [0, 127, 127, 255], + [63, 127, 127, 255], + [0, 76, 76, 255], + [38, 76, 76, 255], + [0, 38, 38, 255], + [19, 38, 38, 255], + [0, 191, 255, 255], + [127, 223, 255, 255], + [0, 124, 165, 255], + [82, 145, 165, 255], + [0, 95, 127, 255], + [63, 111, 127, 255], + [0, 57, 76, 255], + [38, 66, 76, 255], + [0, 28, 38, 255], + [19, 33, 38, 255], + [0, 127, 255, 255], + [127, 191, 255, 255], + [0, 82, 165, 255], + [82, 124, 165, 255], + [0, 63, 127, 255], + [63, 95, 127, 255], + [0, 38, 76, 255], + [38, 57, 76, 255], + [0, 19, 38, 255], + [19, 28, 38, 255], + [0, 63, 255, 255], + [127, 159, 255, 255], + [0, 41, 165, 255], + [82, 103, 165, 255], + [0, 31, 127, 255], + [63, 79, 127, 255], + [0, 19, 76, 255], + [38, 47, 76, 255], + [0, 9, 38, 255], + [19, 23, 38, 255], + [0, 0, 255, 255], + [127, 127, 255, 255], + [0, 0, 165, 255], + [82, 82, 165, 255], + [0, 0, 127, 255], + [63, 63, 127, 255], + [0, 0, 76, 255], + [38, 38, 76, 255], + [0, 0, 38, 255], + [19, 19, 38, 255], + [63, 0, 255, 255], + [159, 127, 255, 255], + [41, 0, 165, 255], + [103, 82, 165, 255], + [31, 0, 127, 255], + [79, 63, 127, 255], + [19, 0, 76, 255], + [47, 38, 76, 255], + [9, 0, 38, 255], + [23, 19, 38, 255], + [127, 0, 255, 255], + [191, 127, 255, 255], + [82, 0, 165, 255], + [124, 82, 165, 255], + [63, 0, 127, 255], + [95, 63, 127, 255], + [38, 0, 76, 255], + [57, 38, 76, 255], + [19, 0, 38, 255], + [28, 19, 38, 255], + [191, 0, 255, 255], + [223, 127, 255, 255], + [124, 0, 165, 255], + [145, 82, 165, 255], + [95, 0, 127, 255], + [111, 63, 127, 255], + [57, 0, 76, 255], + [66, 38, 76, 255], + [28, 0, 38, 255], + [33, 19, 38, 255], + [255, 0, 255, 255], + [255, 127, 255, 255], + [165, 0, 165, 255], + [165, 82, 165, 255], + [127, 0, 127, 255], + [127, 63, 127, 255], + [76, 0, 76, 255], + [76, 38, 76, 255], + [38, 0, 38, 255], + [38, 19, 38, 255], + [255, 0, 191, 255], + [255, 127, 223, 255], + [165, 0, 124, 255], + [165, 82, 145, 255], + [127, 0, 95, 255], + [127, 63, 111, 255], + [76, 0, 57, 255], + [76, 38, 66, 255], + [38, 0, 28, 255], + [38, 19, 33, 255], + [255, 0, 127, 255], + [255, 127, 191, 255], + [165, 0, 82, 255], + [165, 82, 124, 255], + [127, 0, 63, 255], + [127, 63, 95, 255], + [76, 0, 38, 255], + [76, 38, 57, 255], + [38, 0, 19, 255], + [38, 19, 28, 255], + [255, 0, 63, 255], + [255, 127, 159, 255], + [165, 0, 41, 255], + [165, 82, 103, 255], + [127, 0, 31, 255], + [127, 63, 79, 255], + [76, 0, 19, 255], + [76, 38, 47, 255], + [38, 0, 9, 255], + [38, 19, 23, 255], + [84, 84, 84, 255], + [118, 118, 118, 255], + [152, 152, 152, 255], + [186, 186, 186, 255], + [220, 220, 220, 255], + [255, 255, 255, 255], + [0, 0, 0, 0] //----- ByLayer - White +]; +const LINE_WIDTH = 2; +//颜色材质,对于二维图像来说可能有用,应该不对三维对象使用该材质 +class ColorMaterial { + constructor() { } + static GetLineMaterial(color) { + if (this._LineMaterialMap.has(color)) + return this._LineMaterialMap.get(color); + let mat = new LineBasicMaterial({ color: this.GetColor(color) }); + this._LineMaterialMap.set(color, mat); + return mat; + } + static GetBasicMaterial(color) { + if (this._BasicMaterialMap.has(color)) + return this._BasicMaterialMap.get(color); + let mtl = new MeshBasicMaterial({ color: this.GetColor(color) }); + this._BasicMaterialMap.set(color, mtl); + return mtl; + } + static GetBasicMaterialDoubleSide(color) { + if (this._BasicDoubleSideMaterialMap.has(color)) + return this._BasicDoubleSideMaterialMap.get(color); + let mtl = new MeshBasicMaterial({ color: this.GetColor(color), side: DoubleSide }); + this._BasicDoubleSideMaterialMap.set(color, mtl); + return mtl; + } + static GetConceptualMaterial(color) { + if (this._ConceptualMaterial.has(color)) + return this._ConceptualMaterial.get(color); + let shaderParams = GetGoodShaderSimple(new Vector3().fromArray(this.GetColor(color).toArray())); + let mtl = new ShaderMaterial(shaderParams); + this._ConceptualMaterial.set(color, mtl); + return mtl; + } + static GetPrintConceptualMaterial() { + if (!this._printConceptualMaterial) { + this._printConceptualMaterial = new ShaderMaterial({ + uniforms: { + "SurfaceColor": { value: [1.0, 1.0, 1.0] } + }, + vertexShader: "", + fragmentShader: "", + polygonOffset: true, + polygonOffsetFactor: 1, + polygonOffsetUnits: LINE_WIDTH + }); + } + return this._printConceptualMaterial; + } + static GetBasicMaterialTransparent(color, opacity) { + let key = `${color},${opacity}`; + let mat = this._BasicTransparentMaterialMap.get(key); + if (mat) + return mat; + mat = new MeshBasicMaterial({ transparent: true, opacity: opacity, side: DoubleSide }); + this._BasicTransparentMaterialMap.set(key, mat); + return mat; + } + static GetBasicMaterialTransparent2(color, opacity) { + let key = `${color},${opacity}`; + let mat = this._BasicTransparentMaterialMap2.get(key); + if (mat) + return mat; + mat = new MeshBasicMaterial({ transparent: true, opacity: opacity }); + this._BasicTransparentMaterialMap2.set(key, mat); + return mat; + } + static GetColor(color) { + let rgb = ColorPalette[color]; + if (rgb) + return new Color(rgb[0] / 255, rgb[1] / 255, rgb[2] / 255); + //避免无法获得到颜色而产生的错误 + return new Color(); + } +} +ColorMaterial._LineMaterialMap = new Map(); +ColorMaterial._BasicMaterialMap = new Map(); +ColorMaterial._BasicDoubleSideMaterialMap = new Map(); +ColorMaterial._ConceptualMaterial = new Map(); +ColorMaterial._BasicTransparentMaterialMap = new Map(); +ColorMaterial._BasicTransparentMaterialMap2 = new Map(); +//橡皮筋材质: 黄色 点划线 +ColorMaterial.RubberBandMaterial = new LineDashedMaterial({ + color: 0xF0B41E, + dashSize: 20, + gapSize: 8, +}); +//极轴材质: 绿色 点划线 +ColorMaterial.SnapAxisMaterial = new LineDashedMaterial({ + color: 0x008B00, + dashSize: 5, + gapSize: 5 +}); +ColorMaterial.PrintLineMatrial = new LineMaterial({ + color: 0x000000, + linewidth: LINE_WIDTH, + dashed: false, + resolution: new Vector2(1000, 1000) +}); +ColorMaterial.GrayTransparentMeshMaterial = new MeshBasicMaterial({ + color: 0xcccccc, + transparent: true, + opacity: 0.3, +}); +ColorMaterial.TransparentMeshMaterial = new MeshBasicMaterial({ + transparent: true, + opacity: 0, +}); +ColorMaterial.TransparentLineMaterial = new MeshBasicMaterial({ + transparent: true, + opacity: 0, +}); + +/** + * 坐标系运算. + */ +class CoordinateSystem { + constructor(postion, xAxis, yAxis, zAxis) { + this.Postion = postion || new Vector3(0, 0, 0); + this.XAxis = xAxis || new Vector3(1, 0, 0); + this.YAxis = yAxis || new Vector3(0, 1, 0); + this.ZAxis = zAxis || new Vector3(0, 0, 1); + } + applyMatrix4(mat4) { + this.Postion.applyMatrix4(mat4); + let roMat = mat4.clone().setPosition(new Vector3()); + this.XAxis.applyMatrix4(roMat); + this.YAxis.applyMatrix4(roMat); + this.ZAxis.applyMatrix4(roMat); + return this; + } + getMatrix4() { + let m = new Matrix4(); + m.makeBasis(this.XAxis, this.YAxis, this.ZAxis); + m.setPosition(this.Postion); + return m; + } + CopyForm(mat4) { + this.Postion.setFromMatrixPosition(mat4); + mat4.extractBasis(this.XAxis, this.YAxis, this.ZAxis); + return this; + } + extractBasis(xAxisA, yAxisA, zAxisA) { + xAxisA.copy(this.XAxis); + yAxisA.copy(this.YAxis); + zAxisA.copy(this.ZAxis); + } + copy(cs) { + this.Postion.copy(cs.Postion); + this.XAxis.copy(cs.XAxis); + this.YAxis.copy(cs.YAxis); + this.ZAxis.copy(cs.ZAxis); + return this; + } + clone() { + let r = new CoordinateSystem(); + r.Postion = this.Postion.clone(); + r.XAxis = this.XAxis.clone(); + r.YAxis = this.YAxis.clone(); + r.ZAxis = this.ZAxis.clone(); + return r; + } +} + +let HostApplicationServices = { ShowHistoryLog: true }; + +/** + * 销毁Object对象的Geometry,并不会销毁材质(新版本销毁材质,好像问题不大?) + */ +function DisposeThreeObj(obj) { + for (let o of obj.children) { + let oany = o; + //文字的geometry缓存保留下来 + if (oany.geometry && oany.geometry.name !== "Text") + oany.geometry.dispose(); + if (oany.material) + if (Array.isArray(oany.material)) { + for (let m of oany.material) + m.dispose(); + } + else { + oany.material.dispose(); + } + DisposeThreeObj(o); + // 下面这个代码可能导致Object3d无法复用,删除它应该问题不大 + // o.parent = null; + // o.dispatchEvent({ type: "removed" }); + } + // 下面这个代码可能导致Object3d无法复用,删除它应该问题不大 + // obj.children.length = 0; + return obj; +} +function Object3DRemoveAll(obj) { + for (let o of obj.children) { + o.parent = null; + o.dispatchEvent({ type: "removed" }); + } + obj.children.length = 0; + return obj; +} + +var Status; +(function (Status) { + Status[Status["False"] = 0] = "False"; + Status[Status["True"] = 1] = "True"; + Status[Status["Canel"] = -1] = "Canel"; + Status[Status["ConverToCircle"] = 101] = "ConverToCircle"; + Status[Status["DuplicateRecordName"] = 102] = "DuplicateRecordName"; +})(Status || (Status = {})); +var UpdateDraw; +(function (UpdateDraw) { + UpdateDraw[UpdateDraw["None"] = 0] = "None"; + UpdateDraw[UpdateDraw["Matrix"] = 1] = "Matrix"; + UpdateDraw[UpdateDraw["Geometry"] = 2] = "Geometry"; + UpdateDraw[UpdateDraw["Material"] = 4] = "Material"; + UpdateDraw[UpdateDraw["All"] = 63] = "All"; +})(UpdateDraw || (UpdateDraw = {})); +/** + * WblockClne时,遇到重复记录的操作方式 + */ +var DuplicateRecordCloning; +(function (DuplicateRecordCloning) { + DuplicateRecordCloning[DuplicateRecordCloning["Ignore"] = 1] = "Ignore"; + DuplicateRecordCloning[DuplicateRecordCloning["Replace"] = 2] = "Replace"; + DuplicateRecordCloning[DuplicateRecordCloning["Rename"] = 3] = "Rename"; +})(DuplicateRecordCloning || (DuplicateRecordCloning = {})); + +/** + * 场景的渲染类型. + */ +var RenderType; +(function (RenderType) { + /** + * 线框模式 + */ + RenderType[RenderType["Wireframe"] = 1] = "Wireframe"; + /** + * 概念 + */ + RenderType[RenderType["Conceptual"] = 2] = "Conceptual"; + /** + * 物理着色PBR + */ + RenderType[RenderType["Physical"] = 3] = "Physical"; + RenderType[RenderType["Jig"] = 4] = "Jig"; + RenderType[RenderType["Print"] = 5] = "Print"; + /**物理带线框 */ + RenderType[RenderType["Physical2"] = 6] = "Physical2"; + RenderType[RenderType["Edge"] = 7] = "Edge"; + /******************************************** 在视口时的渲染模式 */ + /** + * 线框模式 + */ + RenderType[RenderType["WireframePrint"] = 101] = "WireframePrint"; + /** + * 概念 + */ + RenderType[RenderType["ConceptualPrint"] = 102] = "ConceptualPrint"; + /** + * 物理着色PBR + */ + RenderType[RenderType["PhysicalPrint"] = 103] = "PhysicalPrint"; + RenderType[RenderType["JigPrint"] = 104] = "JigPrint"; + RenderType[RenderType["PrintPrint"] = 105] = "PrintPrint"; + /**物理带线框 */ + RenderType[RenderType["Physical2Print"] = 106] = "Physical2Print"; +})(RenderType || (RenderType = {})); + +var StoreageKeys; +(function (StoreageKeys) { + StoreageKeys["IsLogin"] = "isLogin"; + StoreageKeys["PlatSession"] = "platSession"; + StoreageKeys["PlatToken"] = "platToken"; + StoreageKeys["UserName"] = "userName"; + StoreageKeys["UserPhone"] = "userPhone"; + StoreageKeys["RenderType"] = "renderType"; + StoreageKeys["ExactDrill"] = "openExactDrill"; + StoreageKeys["ConfigName"] = "configName_"; + StoreageKeys["IsNewErp"] = "isNewErp"; + StoreageKeys["RoomName"] = "roomName"; + StoreageKeys["LastOpenFileId"] = "lastfid"; + StoreageKeys["Uid"] = "uid"; + StoreageKeys["Goods"] = "Goods_"; + StoreageKeys["DrillTemp"] = "drilltemp_"; + StoreageKeys["DrillReactor"] = "drillRreactor"; + StoreageKeys["kjlConfig"] = "kjl"; +})(StoreageKeys || (StoreageKeys = {})); + +var AAType; +(function (AAType) { + AAType[AAType["FXAA"] = 0] = "FXAA"; + AAType[AAType["SMAA"] = 1] = "SMAA"; +})(AAType || (AAType = {})); +var ViewDirType; +(function (ViewDirType) { + ViewDirType[ViewDirType["FS"] = 0] = "FS"; + ViewDirType[ViewDirType["YAS"] = 1] = "YAS"; + ViewDirType[ViewDirType["ZS"] = 2] = "ZS"; + ViewDirType[ViewDirType["YS"] = 3] = "YS"; + ViewDirType[ViewDirType["QS"] = 4] = "QS"; + ViewDirType[ViewDirType["HS"] = 5] = "HS"; + ViewDirType[ViewDirType["XN"] = 6] = "XN"; +})(ViewDirType || (ViewDirType = {})); + +class UserConfig { + constructor() { + this._version = 13; + this._renderType = RenderType.Wireframe; + this.maxSize = { + isShow: false, + height: 2440, + width: 1220, + }; + this._drillConfigs = new Map(); + this.openDrillingReactor = true; + this.openAutoCuttingReactor = true; + /**打开将检测排钻是否在板件内*/ + this.openExactDrill = true; + this.userConfigName = {}; + this.modeling2HoleRad = 20; //圆造型小于等于该值拆成孔数据 + this.isAdmin = false; + this.isMaster = false; + this.rights = []; + this.kjlConfig = { + grooveAddLength: "0", + grooveAddWidth: "0", + grooveAddDepth: "1", + }; + this.SystemConfig = { + maxHightightCount: 15000, + snapSize: 15, + aaType: AAType.FXAA, + background: "#000000", + layoutBackground: "#cccccc", + }; + this.viewDirType = ViewDirType.XN; + this.useCtrlRotate = true; + this.cursorSize = { + D2: 1000, + D3: 100, + SquareSize: 10, + }; + this.autoSaveConfig = { + enable: true, + time: 1, + }; + this.showLines = false; + this.keepConfig = false; + this.autoClearHistory = true; + this.chaidanOption = { + changXiuBian: 6, + duanXiuBian: 6, + useDefaultRad: false, + radius: 2.5, + modeling2HoleRad: 20, + isCheckInterfere: false, + noModeingData: "", + }; + this.autoLines = false; + this.dimTextHeight = 60; + this.performanceConfig = { + fakersweep: false, + disablerefcut: false, + disablecheckgroove: false, + }; + this.lineWidth = 2; //打印线框 + this.forceFilterPxl = true; + this.checkSealing = false; + this.sealingColorMap = []; + this.configName = "default"; + this.configsNames = []; + this.Init(); + } + Init() { + let type = Number(localStorage.getItem(StoreageKeys.RenderType)); + if (type && type !== RenderType.Edge) + this._renderType = type; + } + set RenderType(t) { + if (t !== this._renderType) { + this._renderType = t; + this.checkSealing = t === RenderType.Edge; + this.SetRenderTypeEvent(); + localStorage.setItem(StoreageKeys.RenderType, t.toString()); + } + } + get RenderType() { return this._renderType; } + SetRenderTypeEvent() { } + get DrillConfigs() { + return this._drillConfigs || new Map(); + } + set DrillConfigs(config) { + observable(this._drillConfigs).replace(config); + this.SetDrillConfigsEvent(); + } + SetDrillConfigsEvent() { } + InitOption() { + this.openDrillingReactor = true; + this.openAutoCuttingReactor = true; + Object.assign(this.maxSize, { + height: 2440, + width: 1220 + }); + Object.assign(this.kjlConfig, { + grooveAddLength: "0", + grooveAddWidth: "0", + grooveAddDepth: "1" + }); + Object.assign(this.chaidanOption, { + changXiuBian: 6, + duanXiuBian: 6, + useDefaultRad: false, + radius: 2.5, + modeling2HoleRad: 20, + noModeingData: "", + }); + this.dimTextHeight = 60; + } + SaveConfig() { + return { + option: { + version: this._version, + openDrillingReactor: this.openDrillingReactor, + openAutoCuttingReactor: this.openAutoCuttingReactor, + maxSize: toJS(this.maxSize), + kjlConfig: toJS(this.kjlConfig), + systemConfig: toJS(this.SystemConfig), + viewDirType: this.viewDirType, + useCtrlRotate: this.useCtrlRotate, + cursorSize: toJS(this.cursorSize), + autoSaveConfig: toJS(this.autoSaveConfig), + showLines: this.showLines, + keepConfig: this.keepConfig, + autoClearHistory: this.autoClearHistory, + chaidanOption: toJS(this.chaidanOption), + autoLines: this.autoLines, + dimTextHeight: this.dimTextHeight, + lineWidth: this.lineWidth, + forceFilterPxl: this.forceFilterPxl, + checkSealing: this.checkSealing, + sealingColorMap: this.sealingColorMap + } + }; + } + UpdateOption(config) { + this.openDrillingReactor = config.option.openDrillingReactor; + this.openAutoCuttingReactor = config.option.openAutoCuttingReactor; + Object.assign(this.maxSize, config.option.maxSize); + Object.assign(this.kjlConfig, config.option.kjlConfig); + this.modeling2HoleRad = config.option.modeling2HoleRad; + if (config.option.version > 1) { + Object.assign(this.SystemConfig, config.option.systemConfig); + } + if (config.option.version > 2) { + this.viewDirType = config.option.viewDirType; + this.useCtrlRotate = config.option.useCtrlRotate; + } + if (config.option.version > 3) { + Object.assign(this.cursorSize, config.option.cursorSize); + } + if (config.option.version > 4) { + Object.assign(this.autoSaveConfig, config.option.autoSaveConfig); + } + if (config.option.version > 5) { + this.showLines = config.option.showLines; + } + if (config.option.version > 6) { + this.keepConfig = config.option.keepConfig; + } + if (config.option.version > 7) { + this.autoClearHistory = config.option.autoClearHistory; + } + if (config.option.version > 8) { + config.option.chaidanOption.modeling2HoleRad = Number(config.option.chaidanOption.modeling2HoleRad); + Object.assign(this.chaidanOption, config.option.chaidanOption); + this.autoLines = config.option.autoLines; + } + else + this.chaidanOption.modeling2HoleRad = this.modeling2HoleRad; + if (config.option.version > 9) + this.dimTextHeight = config.option.dimTextHeight; + if (config.option.version > 10) + this.lineWidth = config.option.lineWidth; + if (config.option.version > 11) + this.forceFilterPxl = config.option.forceFilterPxl; + if (config.option.version > 12) { + this.checkSealing = config.option.checkSealing; + this.sealingColorMap = config.option.sealingColorMap; + } + } +} +__decorate([ + observable +], UserConfig.prototype, "maxSize", void 0); +__decorate([ + observable +], UserConfig.prototype, "_drillConfigs", void 0); +__decorate([ + observable +], UserConfig.prototype, "openDrillingReactor", void 0); +__decorate([ + observable +], UserConfig.prototype, "openAutoCuttingReactor", void 0); +__decorate([ + observable +], UserConfig.prototype, "openExactDrill", void 0); +__decorate([ + observable +], UserConfig.prototype, "isAdmin", void 0); +__decorate([ + observable +], UserConfig.prototype, "kjlConfig", void 0); +__decorate([ + observable +], UserConfig.prototype, "SystemConfig", void 0); +__decorate([ + observable +], UserConfig.prototype, "viewDirType", void 0); +__decorate([ + observable +], UserConfig.prototype, "useCtrlRotate", void 0); +__decorate([ + observable +], UserConfig.prototype, "cursorSize", void 0); +__decorate([ + observable +], UserConfig.prototype, "autoSaveConfig", void 0); +__decorate([ + observable +], UserConfig.prototype, "showLines", void 0); +__decorate([ + observable +], UserConfig.prototype, "keepConfig", void 0); +__decorate([ + observable +], UserConfig.prototype, "autoClearHistory", void 0); +__decorate([ + observable +], UserConfig.prototype, "chaidanOption", void 0); +__decorate([ + observable +], UserConfig.prototype, "autoLines", void 0); +__decorate([ + observable +], UserConfig.prototype, "performanceConfig", void 0); +__decorate([ + observable +], UserConfig.prototype, "forceFilterPxl", void 0); +const userConfig = new UserConfig(); + +/** + * 盒子的切割类型 + */ +var SplitType; +(function (SplitType) { + SplitType[SplitType["X"] = 0] = "X"; + SplitType[SplitType["Y"] = 1] = "Y"; + SplitType[SplitType["Z"] = 2] = "Z"; +})(SplitType || (SplitType = {})); +/** + * 扩展Box3,添加切割方法,体积等 + */ +class Box3Ext extends Box3 { + get Volume() { + let size = this.getSize(new Vector3()); + return size.x * size.y * size.z; + } + //每个轴的大小必须大于最小的size + isSolid(minSize = 1) { + return this.getSize(new Vector3()).toArray().every(x => x > minSize); + } + substract(b, spaceType) { + let interBox = this.clone().intersect(b); + if (interBox.isEmpty() || !interBox.isSolid()) + return [this]; + let p1 = interBox.min.clone().setComponent(spaceType, this.min.getComponent(spaceType)); + let p2 = interBox.max.clone().setComponent(spaceType, interBox.min.getComponent(spaceType)); + let p3 = interBox.min.clone().setComponent(spaceType, interBox.max.getComponent(spaceType)); + let p4 = interBox.max.clone().setComponent(spaceType, this.max.getComponent(spaceType)); + return [ + new Box3Ext(p1, p2), + new Box3Ext(p3, p4) + ].filter(b => b.isSolid()); + } + clampSpace(b2, splitType) { + let interBox = this.clone(); + interBox.min.max(b2.min); + interBox.max.min(b2.max); + interBox.min.setComponent(splitType, Math.min(this.max.getComponent(splitType), b2.max.getComponent(splitType))); + interBox.max.setComponent(splitType, Math.max(this.min.getComponent(splitType), b2.min.getComponent(splitType))); + return interBox; + } + intersectsBox(box, fuzz = 1e-8) { + return IntersectsBox(this, box, fuzz); + } +} +function IntersectsBox(box1, box2, fuzz = 1e-6) { + return box2.max.x < box1.min.x - fuzz || box2.min.x > box1.max.x + fuzz || + box2.max.y < box1.min.y - fuzz || box2.min.y > box1.max.y + fuzz || + box2.max.z < box1.min.z - fuzz || box2.min.z > box1.max.z + fuzz ? false : true; +} +/**盒子二维面是否相交 */ +function IntersectBox2(box1, box2, fuzz = 1e-3) { + return box2.max.x < box1.min.x - fuzz || box2.min.x > box1.max.x + fuzz || + box2.max.y < box1.min.y - fuzz || box2.min.y > box1.max.y + fuzz ? false : true; +} + +const ISPROXYKEY = "_isProxy"; +/** + * 自动对CADObject的属性添加属性记录器,自动调用 `WriteAllObjectRecord` + * 如果属性是数组,那么自动添加`Proxy`. + * 可以使用`ISPROXYKEY`覆盖这个函数的代理行为(使用CADObject.CreateProxyArray快速覆盖) + * + * @param target + * @param property + * @param [descriptor] + */ +function AutoRecord(target, property, descriptor) { + let privateKey = '__' + property; + Object.defineProperty(target, property, { + set: function (value) { + if (value instanceof Array) { + 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; + //实体先被删除后在触发length = xxx + if (key === "splice" || key === "pop" || key === "shift") + this.WriteAllObjectRecord(); + return Reflect.get(target, key, receiver); + } + }); + } + else { + let arr = this[privateKey]; + arr.length = 0; + arr.push(...value); + } + } + else { + let oldv = this[privateKey]; + if (oldv !== value) { + this.WriteAllObjectRecord(); + this[privateKey] = value; + } + } + }, + get: function () { + return this[privateKey]; + }, + enumerable: true, + configurable: true + }); +} + +/** + * CAD对象工厂,通过注册 和暴露的创建方法,动态创建对象 + */ +class CADFactory { + constructor() { + this.objectNameMap = new Map(); + } + static RegisterObject(C) { + this.factory.objectNameMap.set(C.name, C); + } + static RegisterObjectAlias(C, name) { + this.factory.objectNameMap.set(name, C); + } + static CreateObject(name) { + let C = this.factory.objectNameMap.get(name); + if (C) + return new C(); + } +} +CADFactory.factory = new CADFactory(); +//可以通过添加装饰器 在类前面(@Factory),自动注册工厂的序列化 +function Factory(target) { + CADFactory.RegisterObject(target); +} + +var RelevancyType; +(function (RelevancyType) { + RelevancyType[RelevancyType["General"] = 0] = "General"; + RelevancyType[RelevancyType["Soft"] = 1] = "Soft"; + RelevancyType[RelevancyType["Hard"] = 2] = "Hard"; +})(RelevancyType || (RelevancyType = {})); +/* +CADObject对象拥有Id属性,用来记录引用关系. +通过id可以得到对应的关联实体,或者记录实体的关联关系. + +ObjectId必须使用 Database分配(db里面会存id的列表,以便同时更新id指向实体) + +*/ +class ObjectId { + constructor(index = 0, obj) { + this.index = index; + this.obj = obj; + this._RelevancyType = RelevancyType.General; + } + get IsErase() { + return !this.obj || this.obj.IsErase; + } + set Object(obj) { + this.obj = obj; + } + get Object() { + return this.obj; + } + get Index() { + return this.index; + } + set Index(index) { + this.index = index; + } +} + +/** + * CAD文件数据 + */ +class CADFiler { + constructor(_datas = []) { + this._datas = _datas; + this.readIndex = 0; + } + Destroy() { + delete this._datas; + delete this.readIndex; + } + get Data() { + return this._datas; + } + set Data(data) { + this._datas = data; + this.Reset(); + } + Clear() { + this._datas.length = 0; + return this.Reset(); + } + Reset() { + this.readIndex = 0; + return this; + } + WriteString(str) { + this._datas.push(str); + return this; + } + ReadString() { + return this._datas[this.readIndex++]; + } + WriteObject(obj) { + if (!obj) { + this.Write(""); + return; + } + this.WriteString(obj.constructor.name); + obj.WriteFile(this); + return this; + } + ReadObject(obj) { + let className = this.ReadString(); + if (className) { + if (obj === undefined) { + obj = CADFactory.CreateObject(className); + if (this.database !== undefined && obj instanceof CADObject) + obj.SetDefaultDb(this.database); + } + obj.ReadFile(this); + return obj; + } + } + CloneObjects(objects, clonedObjects = []) { + for (let o of objects) + this.WriteObject(o); + let count = objects.length; + for (let i = 0; i < count; i++) { + let obj = this.ReadObject(); + if (obj instanceof Entity) + obj.CloneDrawObject(objects[i]); + clonedObjects.push(obj); + } + return clonedObjects; + } + Write(data) { + if (data instanceof ObjectId) + this._datas.push(data.Index); + else + this._datas.push(data); + return this; + } + Read() { + return this._datas[this.readIndex++]; + } + ReadArray(count) { + let arr = this._datas.slice(this.readIndex, this.readIndex + count); + this.readIndex += count; + return arr; + } + //------------------------ID序列化------------------------ + /* + Id关联分为三种情况: + 1.普通关联:关联对象未被拷贝时,关联到空对象. + 2.软关联 :关联对象未被拷贝时,关联到原先的对象. + 3.硬关联 :对象被拷贝时,被关联的对象必须也被拷贝. + */ + //-------1.普通关联 + WriteObjectId(id) { + if (id) + this.Write(id.Index); + else + this.Write(0); + return this; + } + ReadObjectId() { + let index = this.Read(); + if (this.database) + return this.database.GetObjectId(index, true); + } + //-------2.软关联 + WriteSoftObjectId(id) { + return this.WriteObjectId(id); + } + ReadSoftObjectId() { + return this.ReadObjectId(); + } + //-------3.硬关联 + WriteHardObjectId(id) { + return this.WriteObjectId(id); + } + ReadHardObjectId() { + return this.ReadObjectId(); + } + //序列化 + ToString() { + return JSON.stringify(this._datas); + } + FromString(str) { + this._datas = JSON.parse(str); + } +} + +/** + * 保存对象创建或者修改时的所有数据记录 + */ +let AllObjectData = class AllObjectData { + constructor(obj) { + this.file = new CADFiler(); + if (obj) + obj.WriteFile(this.file); + } + //#region -------------------------File------------------------- + //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 + //对象从文件中读取数据,初始化自身 + ReadFile(file) { + let ver = file.Read(); + let data = file.Read(); + this.file.Data = data; + return this; + } + //对象将自身数据写入到文件. + WriteFile(file) { + file.Write(1); + file.Write(this.file.Data); + return this; + } +}; +AllObjectData = __decorate([ + Factory +], AllObjectData); + +let EraseEntityData = class EraseEntityData { + constructor(isErase = true) { + this.isErase = isErase; + } + ReadFile(file) { + this.isErase = file.Read(); + return this; + } + WriteFile(file) { + file.Write(this.isErase); + return this; + } +}; +EraseEntityData = __decorate([ + Factory +], EraseEntityData); + +class CADObject { + constructor() { + //-------------------------DB End------------------------- + // -------------------------isErase------------------------- + this._isErase = false; + } + set Owner(owner) { + this._Owner = owner; + } + get Owner() { + return this._Owner; + } + Destroy() { + //在效果图同步反应器中,需要知道被删除的实体的id,所以不删除这个属性 + // this.objectId = undefined; + this._db = undefined; + } + //对象被彻底遗弃 + GoodBye() { + this.Destroy(); + this.Erase(true); + } + /** + * 当实体异步更新绘制实体完成后触发这个函数. + * Application通过注入的方式得知这个事件,刷新视图显示. + */ + AsyncUpdated() { + } + get Db() { + return this._db; + } + //对象在加入数据库时,必须指定一个源数据库,否则无法读取引用id. + SetDefaultDb(db) { + if (!this._db) + this._db = db; + else + console.warn("重复设置默认Database!"); + return this; + } + //private 私有的方法,暴露给Db的添加对象,方法使用. + //只用对象加入到db中,我们才初始化ObjectId. + //从db池中分配id给自身使用. 除非你创建对象往db里面加,否则不要调用该方法 + SetOwnerDatabase(db) { + if (!this._db) { + this._db = db; + this.objectId = db.AllocateId(); + this.objectId.Object = this; + } + else + console.warn("重复设置源Database!"); + return this; + } + /** + * WblockClone 的时候,id是db分配的,此刻我们只需要设置它的db + */ + SetDatabase(db) { + this._db = db; + } + get IsErase() { + return this._isErase; + } + Erase(isErase = true) { + if (isErase === this._isErase) + return; + let undoData = this.UndoRecord(); + if (undoData) + undoData.CreateEraseHistory(this, isErase); + this._isErase = isErase; + } + get Id() { + return this.objectId; + } + // -------------------------id End------------------------- + // -------------------------File------------------------- + //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 + //对象从文件中读取数据,初始化自身 + ReadFile(file) { + let ver = file.Read(); + //write Id; + let id = file.ReadObjectId(); + if (!this.objectId && id) //避免CopyFrom时错误的修改自身Id + { + this.objectId = id; + id.Object = this; + } + this._isErase = file.Read(); + if (ver > 1) + this.Owner = file.ReadObjectId(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + file.Write(2); + file.WriteObjectId(this.objectId); + file.Write(this._isErase); + file.WriteObjectId(this.Owner); + } + //局部撤销 + ApplyPartialUndo(undoData) { + if (undoData instanceof AllObjectData) { + undoData.file.database = this._db; + undoData.file.Reset(); + this.ReadFile(undoData.file); + } + else if (undoData instanceof EraseEntityData) { + this.Erase(undoData.isErase); + } + } + //撤销所保存的位置 + UndoRecord() { + if (this._db && this.objectId) + return this._db.hm.UndoData; + } + //写入所有的对象数据 以便还原对象 + WriteAllObjectRecord() { + let undoData = this.UndoRecord(); + if (undoData) { + undoData.WriteObjectSnapshoot(this); + return true; + } + return false; + } + //复制出一个实体,如果存在关联,则指向原关联实体 + Clone() { + let newObject = CADFactory.CreateObject(this.constructor.name); + //备份 + let bakId = this.objectId; + this.objectId = undefined; + let file = new CADFiler(); + file.database = this._db; + this.WriteFile(file); + file.Reset(); + newObject.ReadFile(file); + newObject.objectId = undefined; + newObject._db = undefined; + this.objectId = bakId; + return newObject; + } + DeepClone(ownerObject, cloneObejct, idMaping = undefined, isPrimary = true) { + return this; + } + //从一个实体拷贝数据,实体类型必须相同. + CopyFrom(obj) { + let idBak = this.objectId; + let ownerBak = this._Owner; + this.WriteAllObjectRecord(); + let f = new CADFiler(); + obj.WriteFile(f); + this.ReadFile(f); + this.objectId = idBak; + this._Owner = ownerBak; + } + //-------------------------File End------------------------- + //Utils + /** + * 配合 `@AutoRecord` 使用 + * 使用这个方法来覆盖AutoRecord的监听行为. + * 这个行为只能用来监听实体添加和实体修改. + * 实体删除行为暂时无法监听 + * @param setCallback 设置新的实体到数组时的回调函数 + */ + CreateProxyArray(setCallback) { + return new Proxy([], { + set: (target, key, value, receiver) => { + if (Reflect.get(target, key, receiver) !== value) { + this.WriteAllObjectRecord(); + setCallback(value); + } + return Reflect.set(target, key, value, receiver); + }, + get: (target, key, receiver) => { + if (key === ISPROXYKEY) + return true; + //实体先被删除后在触发length = xxx + if (key === "splice" || key === "pop" || key === "shift") { + this.WriteAllObjectRecord(); + setCallback(undefined); + } + return Reflect.get(target, key, receiver); + } + }); + } +} +__decorate([ + iaop +], CADObject.prototype, "AsyncUpdated", null); + +var Entity_1; +/** + * Entity 是所有图元的基类,绘制的实体都集成该类. + */ +let Entity = Entity_1 = class Entity extends CADObject { + constructor() { + super(...arguments); + this.IsEmbedEntity = false; + /** + * 该实体的只有一个渲染类型,任何渲染类型都一个样 + */ + this.OnlyRenderType = false; + this._CacheDrawObject = new Map(); + this._Color = 7; + //自身坐标系 + this._Matrix = new Matrix4(); + //模块空间的标系 + this._SpaceOCS = new Matrix4(); + this._Visible = true; + //加工组 + this.ProcessingGroupList = []; + /** + * 当AutoUpdate为false时,记录需要更新的标志. + * 以便延迟更新时找到相应的更新标志. + */ + this.NeedUpdateFlag = UpdateDraw.None; + this.AutoUpdate = true; + //实体绘制更新版本号 + this.__UpdateVersion__ = 0; + //#endregion + } + get SpaceOCS() { + return this._SpaceOCS.clone(); + } + get SpaceOCSInv() { + return new Matrix4().getInverse(this._SpaceOCS); + } + set SpaceOCS(m) { + this.WriteAllObjectRecord(); + this._SpaceOCS.copy(m); + } + set Material(materialId) { + this.WriteAllObjectRecord(); + this.materialId = materialId; + this.Update(); + } + get Material() { + return this.materialId; + } + set ColorIndex(color) { + if (color !== this._Color) { + this.WriteAllObjectRecord(); + this._Color = color; + this.Update(UpdateDraw.Material); + } + } + get ColorIndex() { + return this._Color; + } + /** + * 炸开实体 + */ + Explode() { return []; } + /** + * 返回对象的包围框. + */ + get BoundingBox() { + return new Box3(); + } + /** + * 返回对象在自身坐标系下的Box + */ + get BoundingBoxInOCS() { + let mtxBak = this._Matrix; + this._Matrix = IdentityMtx4; + let box = this.BoundingBox; + this._Matrix = mtxBak; + return new Box3Ext().copy(box); + } + GetBoundingBoxInMtx(mtx) { + return this.BoundingBoxInOCS.applyMatrix4(this.OCS.premultiply(mtx)); + } + get BoundingBoxInSpaceCS() { + return this.GetBoundingBoxInMtx(this.SpaceOCSInv); + } + get OCS() { + return this._Matrix.clone(); + } + get OCSNoClone() { + return this._Matrix; + } + //直接设置实体的矩阵,谨慎使用该函数,没有更新实体. + set OCS(mat4) { + this._Matrix.copy(mat4); + } + get Normal() { + return new Vector3().setFromMatrixColumn(this._Matrix, 2); + } + get Position() { + return new Vector3().setFromMatrixPosition(this._Matrix); + } + set Position(pt) { + let moveX = pt.x - this._Matrix.elements[12]; + let moveY = pt.y - this._Matrix.elements[13]; + let moveZ = pt.z - this._Matrix.elements[14]; + if (moveX === 0 && moveY === 0 && moveZ === 0) + return; + this.WriteAllObjectRecord(); + this._Matrix.setPosition(pt); + this._SpaceOCS.elements[12] += moveX; + this._SpaceOCS.elements[13] += moveY; + this._SpaceOCS.elements[14] += moveZ; + this.Update(UpdateDraw.Matrix); + } + //Z轴归0 + Z0() { + if (this._Matrix.elements[14] === 0) + return this; + this.WriteAllObjectRecord(); + this._Matrix.elements[14] = 0; + this.Update(UpdateDraw.Matrix); + return this; + } + //坐标系二维化 + MatrixPlanarizere() { + let z = this._Matrix.elements[10]; + if (equaln(Math.abs(z), 1, 1e-4)) { + this.WriteAllObjectRecord(); + MatrixPlanarizere(this._Matrix, false); + } + return this; + } + get OCSInv() { + return new Matrix4().getInverse(this._Matrix); + } + /** + * 与指定实体是否共面. + */ + IsCoplaneTo(e) { + return matrixIsCoplane(this._Matrix, e.OCS, 1e-4); + } + /** + * 测试两个实体的包围盒是否相交. + */ + BoundingBoxIntersectWith(en) { + let box = this.BoundingBox; + let box2 = en.BoundingBox; + return box && box2 && box.intersectsBox(box2); + } + //#region Draw + ClearDraw() { + if (this._drawObject) { + DisposeThreeObj(this._drawObject); + this._drawObject = undefined; + } + for (let [, obj] of this._CacheDrawObject) + DisposeThreeObj(obj); + this._CacheDrawObject.clear(); + return this; + } + ClearDrawOfJig() { + let jig = this._CacheDrawObject.get(RenderType.Jig); + if (jig) + this._CacheDrawObject.delete(RenderType.Jig); + for (let [type, obj] of this._CacheDrawObject) + DisposeThreeObj(obj); + this._CacheDrawObject.clear(); + if (jig) + this._CacheDrawObject.set(RenderType.Jig, jig); + } + get IsOnlyRender() { + return this.OnlyRenderType; + } + get DrawObject() { + if (this._drawObject) + return this._drawObject; + this._drawObject = new Object3D(); + if (!this.IsEmbedEntity) + this._drawObject.userData.Entity = this; + if (this.IsVisible) { + this._CurRenderType = userConfig.RenderType; + let obj = this.GetDrawObjectFromRenderType(userConfig.RenderType); + if (obj) + this._drawObject.add(obj); + } + else + this._drawObject.visible = false; + return this._drawObject; + } + get JigObject() { + let obj = this.GetDrawObjectFromRenderType(RenderType.Jig); + if (obj && !this.IsEmbedEntity) + obj.userData.Entity = this; + return obj; + } + DestroyJigObject() { + let obj = this._CacheDrawObject.get(RenderType.Jig); + if (obj) { + this._CacheDrawObject.delete(RenderType.Jig); + DisposeThreeObj(obj); + if (obj.parent) + obj.parent.remove(obj); + } + } + UpdateRenderType(type) { + if (this._CurRenderType !== type || this.DrawObject.children.length === 0) { + this._CurRenderType = type; + if ((this.OnlyRenderType && this.DrawObject.children.length > 0) || !this.Visible) + return; + Object3DRemoveAll(this.DrawObject); + let obj = this.GetDrawObjectFromRenderType(type); + if (obj) + this.DrawObject.add(obj); + } + } + GetDrawObjectFromRenderType(renderType = RenderType.Wireframe) { + if (this.OnlyRenderType) { + if (renderType === RenderType.Jig) + return; + if (renderType < 100) + renderType = RenderType.Wireframe; + else + renderType = RenderType.WireframePrint; + } + if (this._CacheDrawObject.has(renderType)) { + return this._CacheDrawObject.get(renderType); + } + else { + let drawObj = this.InitDrawObject(renderType); + if (drawObj === undefined) { + if (renderType > 100) //如果实体没有实现打印类型,那么就使用原先的实体的渲染类型 + return this.GetDrawObjectFromRenderType(renderType - 100); + return; + } + //矩阵直接使用指针,因为已经关闭自动更新,所以矩阵不会被Object3D修改. + drawObj.matrixAutoUpdate = false; + drawObj.matrix = this._Matrix; + drawObj.updateMatrixWorld(true); + drawObj.traverse(UpdateBoundingSphere); + if (!this.IsEmbedEntity) + drawObj.userData.Entity = this; + this._CacheDrawObject.set(renderType, drawObj); + return drawObj; + } + } + /** + * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体. + */ + InitDrawObject(renderType = RenderType.Wireframe) { + return undefined; + } + /** + * 当实体数据改变时,绘制的实体必须做出改变.供框架调用 + */ + Update(mode = UpdateDraw.All) { + this.__UpdateVersion__++; + this.NeedUpdateFlag |= mode; + if (this.AutoUpdate) + this.DeferUpdate(); + } + //三维实体总是一起生成线框实体和网格实体,这个通知更新,然后统一更新就好了 + //避免重复更新 + UpdateDrawGeometry() { } + DeferUpdate() { + let mode = this.NeedUpdateFlag; + if (mode === 0) + return; + if (mode & UpdateDraw.Geometry && this._CacheDrawObject.size > 0) + this.UpdateDrawGeometry(); + this.UpdateVisible(); + let isJigIng = this._CacheDrawObject.has(RenderType.Jig); + for (let [type, obj] of this._CacheDrawObject) { + if (isJigIng && type !== RenderType.Jig) + continue; + if (mode & UpdateDraw.Geometry) { + if (obj.userData.IsClone) { + let parent = obj.parent; + DisposeThreeObj(obj); + this._CacheDrawObject.delete(type); + let newObj = this.GetDrawObjectFromRenderType(type); + if (parent) { + parent.remove(obj); + parent.add(newObj); + } + obj = newObj; + } + else + this.UpdateDrawObject(type, obj); + } + if (mode & UpdateDraw.Material) + this.UpdateDrawObjectMaterial(type, obj); + if (mode & UpdateDraw.Matrix || mode & UpdateDraw.Geometry) { + obj.updateMatrixWorld(true); + // if (this.Id)//如果这个是Jig实体,那么我们更新这个盒子球似乎也没有意义 (虽然这在某些情况能改进性能,但是在绘制圆弧的时候,因为没有更新圆弧的盒子,导致绘制出来的圆弧无法被选中) + obj.traverse(UpdateBoundingSphere); + } + } + this.NeedUpdateFlag = UpdateDraw.None; + } + /** + * 当实体需要更新时,需要重载该方法,实现实体更新 + */ + UpdateDrawObject(type, en) { + } + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type, obj, material) { + } + get MeshMaterial() { + if (this.materialId && this.materialId.Object) + return this.materialId.Object.Material; + return HostApplicationServices.DefaultMeshMaterial; + } + /** + * 更新实体Jig状态时的材质 + */ + UpdateJigMaterial(color = 8) { + } + RestoreJigMaterial() { + for (let [type, en] of this._CacheDrawObject) + this.UpdateDrawObjectMaterial(type, en); + } + get Visible() { + return this._Visible; + } + set Visible(v) { + if (v !== this._Visible) { + this.WriteAllObjectRecord(); + this._Visible = v; + this.UpdateVisible(); + } + } + get IsVisible() { + return !this._isErase && this._Visible; + } + UpdateVisible() { + if (this._drawObject) { + this._drawObject.visible = this.IsVisible; + if (this.IsVisible) + this.UpdateRenderType(userConfig.RenderType); + } + } + //#endregion + GoodBye() { + super.GoodBye(); + if (this._drawObject && this._drawObject.parent) + this._drawObject.parent.remove(this._drawObject); + this.ClearDraw(); + } + Erase(isErase = true) { + if (isErase === this._isErase) + return; + this.__UpdateVersion__++; + super.Erase(isErase); + this.UpdateVisible(); + this.EraseEvent(isErase); + } + EraseEvent(isErase) { + } + /** + * 使用统一的方法设置对象的矩阵. + * 需要对缩放矩形进行重载.避免对象矩阵不是单位矩阵 + */ + ApplyMatrix(m) { + this.WriteAllObjectRecord(); + if (equaln(m.getMaxScaleOnAxis(), 1)) { + let xA = new Vector3(); + let yA = new Vector3(); + let zA = new Vector3(); + m.extractBasis(xA, yA, zA); + this._Matrix.multiplyMatrices(m, this._Matrix); + this._SpaceOCS.multiplyMatrices(m, this._SpaceOCS); + if (!equalv3(xA.clone().cross(yA).normalize(), zA)) + this.ApplyMirrorMatrix(m); + else + this.Update(UpdateDraw.Matrix); + } + else { + this.ApplyScaleMatrix(m); + } + return this; + } + ApplyScaleMatrix(m) { + return this; + } + ApplyMirrorMatrix(m) { + return this; + } + GetGripPoints() { + return []; + } + MoveGripPoints(indexList, vec) { + } + /** + * + * @param snapMode 捕捉模式(单一) + * @param pickPoint const + * @param lastPoint const + * @param viewXform const 最近点捕捉需要这个变量 + * @returns object snap points + */ + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + return []; + } + GetStretchPoints() { + return []; + } + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList, vec) { + } + IntersectWith(curve, intType) { return; } + //#region -------------------------File------------------------- + Clone() { + let ent = super.Clone(); + ent._CurRenderType = this._CurRenderType; + ent.Template = undefined; + ent.CloneDrawObject(this); + return ent; + } + CloneDrawObject(from) { + for (let [type, obj] of from._CacheDrawObject) { + let oldUserDaata = obj.userData; + obj.traverse(o => o.userData = {}); + let newObj = obj.clone(); + obj.userData = oldUserDaata; + obj.userData.IsClone = true; + newObj.matrix = this._Matrix; + newObj.userData = { Entity: this }; + newObj.userData.IsClone = true; + this._CacheDrawObject.set(type, newObj); + } + this.NeedUpdateFlag = UpdateDraw.None; + } + get ReadFileIng() { + return this.__ReadFileIng__ || Entity_1.__ReadFileIng__; + } + /** + * 从文件读取,序列化自身,如果需要,重载_ReadFile + */ + ReadFile(file) { + this.__ReadFileIng__ = true; + this._ReadFile(file); + this.Update(); + this.__ReadFileIng__ = false; + } + //对象从文件中读取数据,初始化自身 + _ReadFile(file) { + let ver = file.Read(); + super.ReadFile(file); + this._Color = file.Read(); + this.materialId = file.ReadHardObjectId(); + this._Matrix.fromArray(file.Read()); + if (ver === 2) + this.Owner = file.ReadObjectId(); + if (ver > 3) + this.Template = file.ReadObjectId(); + if (ver > 4) + this.GroupId = file.ReadHardObjectId(); + if (ver > 5) + this._Visible = file.Read(); + if (ver > 6) + this._SpaceOCS.fromArray(file.Read()); + if (ver > 7) { + let count = file.Read(); + this.ProcessingGroupList.length = 0; + for (let i = 0; i < count; i++) + this.ProcessingGroupList.push(file.ReadHardObjectId()); + } + } + //对象将自身数据写入到文件. + WriteFile(file) { + file.Write(8); + super.WriteFile(file); + file.Write(this._Color); + file.WriteHardObjectId(this.materialId); + file.Write(this._Matrix.toArray()); + file.WriteObjectId(this.Template); + file.WriteHardObjectId(this.GroupId); + file.Write(this._Visible); + file.Write(this._SpaceOCS.toArray()); + file.Write(this.ProcessingGroupList.length); + for (let id of this.ProcessingGroupList) + file.WriteHardObjectId(id); + } + //局部撤销 + ApplyPartialUndo(undoData) { + super.ApplyPartialUndo(undoData); + } + CopyFrom(obj) { + let templateIdBak = this.Template; + super.CopyFrom(obj); + this.Update(); + this.Template = templateIdBak; + } +}; +__decorate([ + AutoRecord +], Entity.prototype, "GroupId", void 0); +__decorate([ + AutoRecord +], Entity.prototype, "Template", void 0); +__decorate([ + AutoRecord +], Entity.prototype, "ProcessingGroupList", void 0); +__decorate([ + iaop +], Entity.prototype, "Update", null); +__decorate([ + iaop +], Entity.prototype, "EraseEvent", null); +Entity = Entity_1 = __decorate([ + Factory +], Entity); + +let OPERATORS = new Set(["+", "-", "*", "/"]); +/** + * eval2("+10", { L: 100 }, "L") + * @param expr + * @param [params] + * @param [defaultParam] 当输入 +10 这样的表达式时,设置默认的操作变量 + * @returns 计算结果 + */ +function eval2(expr, params, defaultParam) { + let code = ""; + if (params) + for (let name in params) + code += `let ${name} = ${params[name]};`; + if (defaultParam) { + expr = expr.trimLeft(); + if (expr[0] && OPERATORS.has(expr[0])) + expr = defaultParam + expr; + } + code += expr; + let result = eval(code); + if (typeof result === "function") + return result(); + return Number(result); //防止bigint乱入 +} +function safeEval(expr, params, defaultParam) { + try { + return eval2(expr, params); + } + catch (error) { + return NaN; + } +} +const Reg_Expr = /\{[^\}]+\}/g; +/**解析大括号内的 */ +function ParseExpr(expr, params) { + let strs = expr.match(Reg_Expr); + if (!strs) + return expr; + for (let str of strs) + expr = expr.replace(str, FixedNotZero(safeEval(str.slice(1, -1), params), 2)); + return expr; +} + +/**扣除封边是否相连和连接共用精度 */ +const LINK_FUZZ = 1e-3; +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} +function FixIndex(index, arr) { + let count = (arr instanceof Array) ? arr.length : arr; + if (index < 0) + return count + index; + else if (index >= count) + return index - count; + else + return index; +} +//使用定点表示法来格式化一个数,小数点后面不尾随0. 如 FixedNotZero(1.1 , 3) => 1.1 +function FixedNotZero(v, fractionDigits = 0) { + if (typeof v === "string") + v = parseFloat(v); + if (isNaN(v)) + return ""; + if (equaln(v, 0)) + return "0"; + let str = v.toFixed(fractionDigits); + let commonIndex = str.indexOf("."); + if (commonIndex !== -1) { + let zeroCount = 0; + let strCount = str.length; + for (let l = strCount; l--;) { + if (str[l] === "0") + zeroCount++; + else + break; + } + if (zeroCount > 0) { + if (zeroCount === (strCount - commonIndex - 1)) + zeroCount++; + return str.slice(0, strCount - zeroCount); + } + } + return str; +} +/** + * To fixed + * @param v + * @param [fractionDigits] + * @returns + */ +function ToFixed(v, fractionDigits = 5) { + if (equaln(v, 0, Math.pow(0.1, fractionDigits))) + return "0"; + return v.toFixed(fractionDigits); +} + +const IdentityMtx4 = new Matrix4(); +const ZeroVec = new Vector3(); +const XAxis = new Vector3(1, 0, 0); +const XAxisN = new Vector3(-1, 0, 0); +const YAxis = new Vector3(0, 1, 0); +const YAxisN = new Vector3(0, -1, 0); +const ZAxis = new Vector3(0, 0, 1); +function AsVector2(p) { + return new Vector2(p.x, p.y); +} +function AsVector3(p) { + return new Vector3(p.x, p.y, p.z); +} +/** + * 判断一维线段a和b是否存在交集 + */ +function isIntersect(amin, amax, bmin, bmax, eps = 0) { + return Math.max(amin, bmin) < Math.min(amax, bmax) + eps; +} +function isIntersect2(a1, a2, b1, b2, eps = 0) { + if (a1 > a2) + [a1, a2] = [a2, a1]; + if (b1 > b2) + [b1, b2] = [b2, b1]; + return Math.max(a1, b1) < Math.min(a2, b2) + eps; +} +/** + * 旋转一个点,旋转中心在原点 + * @param {Vector3} p 点 + * @param {number} a 角度. + * @returns {Vector3} 返回pt不拷贝. + */ +function rotatePoint(p, a) { + let s = Math.sin(a); + let c = Math.cos(a); + let x = p.x * c - p.y * s; + let y = p.x * s + p.y * c; + p.x = x; + p.y = y; + return p; +} +function equaln(v1, v2, fuzz = 1e-5) { + return Math.abs(v1 - v2) <= fuzz; +} +function equalv3(v1, v2, fuzz = 1e-8) { + return equaln(v1.x, v2.x, fuzz) && equaln(v1.y, v2.y, fuzz) && equaln(v1.z, v2.z, fuzz); +} +function equalv2(v1, v2, fuzz = 1e-8) { + return equaln(v1.x, v2.x, fuzz) && equaln(v1.y, v2.y, fuzz); +} +/** + * 按照极坐标的方式移动一个点 + * + * @export + * @template + * @param {T} v 向量(2d,3d) + * @param {number} an 角度 + * @param {number} dis 距离 + * @returns {T} + */ +function polar(v, an, dis) { + v.x += Math.cos(an) * dis; + v.y += Math.sin(an) * dis; + return v; +} +function angle(v) { + let angle = Math.atan2(v.y, v.x); + if (equaln(angle, 0, 1e-8)) + return 0; + if (angle < 0) + angle += Math.PI * 2; + return angle; +} +/** + * 求两个向量的夹角,顺时针为负,逆时针为正 + * + * @param {Vector3} v1 + * @param {Vector3} v2 + * @param {Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1 + * @returns + */ +function angleTo(v1, v2, ref = ZAxis) { + if (v1.equals(ZeroVec) || v2.equals(ZeroVec)) + return 0; + v1 = v1.clone(); + v2 = v2.clone(); + if (ref !== ZAxis && !ref.equals(ZAxis)) { + ref = ref.clone(); + //任意轴坐标系. 使用相机的构造矩阵. + ref.multiplyScalar(-1); + let up = getLoocAtUpVec(ref); + let refOcs = new Matrix4(); + refOcs.lookAt(ZeroVec, ref, up); + let refOcsInv = new Matrix4().getInverse(refOcs); + v1.applyMatrix4(refOcsInv); + v2.applyMatrix4(refOcsInv); + v1.z = 0; + v2.z = 0; + } + if (v1.equals(ZeroVec) || v2.equals(ZeroVec)) //修复,这里有可能被更改为0 + return 0; + //平行的向量返回0向量,不需要归一化 + let cv = new Vector3().crossVectors(v1, v2); + if (equalv3(cv, ZeroVec)) + return 0; + cv.normalize(); + return equaln(cv.z, 0) ? v1.angleTo(v2) : v1.angleTo(v2) * cv.z; +} +function getLoocAtUpVec(dir) { + if (dir.equals(ZeroVec)) { + throw ("zero vector"); + } + let norm = dir.clone().normalize(); + if (norm.equals(ZAxis)) { + return new Vector3(0, 1, 0); + } + else if (norm.equals(ZAxis.clone().negate())) { + return new Vector3(0, -1, 0); + } + else { + let xv = new Vector3(); + xv.crossVectors(ZAxis, norm); + let up = new Vector3(); + up.crossVectors(norm, xv); + return up; + } +} +/** + * 判断2个向量是不是平行,尽量传入单位向量,才能保证计算精度 + */ +function isParallelTo(v1, v2, fuzz = 1e-8) { + return v1.clone().cross(v2).lengthSq() < fuzz; +} +/** + * 垂直向量 + */ +function isPerpendicularityTo(v1, v2, fuzz = 1e-8) { + return equaln(v1.dot(v2), 0, fuzz); +} +function midPoint(v1, v2) { + return v1.clone().add(v2).multiplyScalar(0.5); +} +function MoveMatrix(v) { + return new Matrix4().setPosition(v); +} +/** + * 将角度调整为0-2pi之间 + */ +function clampRad(an) { + an = an % (Math.PI * 2); + if (an < 0) + an += Math.PI * 2; + return an; +} +function updateGeometry(l, geometry) { + let geo = l.geometry; + geo.dispose(); + l.geometry = geometry; + geometry.computeBoundingSphere(); +} +function UpdateBoundingSphere(obj) { + //@ts-ignore + let geo = obj.geometry; + if (geo) + geo.computeBoundingSphere(); +} +const comparePointCache = new Map(); +/** + * 构建返回一个用来排序的函数.根据key创建排序规则. + * + * 当key = "xyz" 时,点集按 x从小到大,y从小到大 z从小到大 + * key = "X" 时,点集按 x从大到小 + * 以此类推. + * + * 例子: + * let pts:Vector3[] =...; + * pts.sort(comparePoint("x")); //x从小到大排序 + * pts.sort(comparePoint("zX")); //z从小到大 x从大到小 + * + * @export + * @param {string} sortKey + * @returns {compareVectorFn} + */ +function comparePoint(sortKey) { + if (comparePointCache.has(sortKey)) + return comparePointCache.get(sortKey); + let sortIndex = []; + const keys = ['x', 'X', 'y', 'Y', 'z', 'Z']; + for (let char of sortKey) { + let index = keys.indexOf(char); + let i2 = index / 2; + let ci = Math.floor(i2); + sortIndex.push([ci, i2 > ci ? 1 : -1]); + } + let compareFunction = (v1, v2) => { + if (!v1) + return -1; + if (!v2) + return 1; + for (let s of sortIndex) { + let vv1 = v1.getComponent(s[0]); + let vv2 = v2.getComponent(s[0]); + if (equaln(vv1, vv2)) + continue; + if (vv2 > vv1) + return s[1]; + else + return -s[1]; + } + return 0; + }; + comparePointCache.set(sortKey, compareFunction); + return compareFunction; +} +function SelectNearP(pts, refPt) { + if (pts.length > 1) { + let dist1 = refPt.distanceToSquared(pts[0]); + let dist2 = refPt.distanceToSquared(pts[1]); + return dist1 <= dist2 ? pts[0] : pts[1]; + } + return pts[0]; +} +/**n是否在AB之间,fuzz 若为负的,允许相等 */ +function IsBetweenA2B(n, A, B, fuzz = -1e-8) { + return n > A + fuzz && n < B - fuzz; +} +/** 矩阵是世界坐标系 */ +function MatrixIsIdentityCS(mtx) { + return mtx.elements[0] === 1 && mtx.elements[5] === 1 && mtx.elements[10] === 1 && mtx.elements[12] === 0 && mtx.elements[13] === 0 && mtx.elements[14] === 0; +} + +/** + * 设置矩阵的某列的向量 + * @param {Matrix4} mat 矩阵 + * @param {number} col 列索引,0x 1y 2z 3org + * @param {Vector3} v 向量或点 + */ +function matrixSetVector(mat, col, v) { + let index = col * 4; + mat.elements[index] = v.x; + mat.elements[index + 1] = v.y; + mat.elements[index + 2] = v.z; +} +/** + * 返回矩阵,该坐标系将坐标系与原点的坐标系映射为坐标系, + * 并将坐标系与X轴坐标系, + * Y轴坐标轴以及Z轴坐标系统之间的坐标系统坐标系统的原点坐标系和原点坐标系统坐标轴的坐标系分别设置为XAxis,YAxis和ZAxis + * @returns {Matrix4} 返回新的矩阵 + */ +function matrixAlignCoordSys(matrixFrom, matrixTo) { + return new Matrix4().getInverse(matrixTo).multiply(matrixFrom); +} +/** + * 判断2个矩形共面 + * @param {Matrix4} matrixFrom + * @param {Matrix4} matrixTo + * @returns {boolean} 2个矩阵共面 + */ +function matrixIsCoplane(matrixFrom, matrixTo, fuzz = 1e-5) { + let nor1 = new Vector3().setFromMatrixColumn(matrixFrom, 2); + let nor2 = new Vector3().setFromMatrixColumn(matrixTo, 2); + //法线共面 + if (!isParallelTo(nor1, nor2)) + return false; + //高共面 + let pt = new Vector3().setFromMatrixPosition(matrixTo); + //变换到自身对象坐标系. + pt.applyMatrix4(new Matrix4().getInverse(matrixFrom)); + return equaln(pt.z, 0, fuzz); +} +/** + * 修正镜像后矩阵 + */ +function reviseMirrorMatrix(mtx) { + let cs = new CoordinateSystem().applyMatrix4(mtx); + cs.YAxis.negate(); + mtx.copy(cs.getMatrix4()); + return mtx; +} +let cacheVec; +function Vector2ApplyMatrix4(mtx, vec) { + if (!cacheVec) + cacheVec = new Vector3(); + cacheVec.x = vec.x; + cacheVec.y = vec.y; + cacheVec.applyMatrix4(mtx); + vec.x = cacheVec.x; + vec.y = cacheVec.y; +} +function GetMirrorMat(v) { + let mirrorMat = new Matrix4(); + let xAxis = new Vector3(1 - 2 * v.x ** 2, -2 * v.x * v.y, -2 * v.x * v.z); + let yAxis = new Vector3(-2 * v.x * v.y, 1 - 2 * v.y ** 2, -2 * v.y * v.z); + let zAxis = new Vector3(-2 * v.x * v.z, -2 * v.y * v.z, 1 - 2 * v.z ** 2); + mirrorMat.makeBasis(xAxis, yAxis, zAxis); + return mirrorMat; +} +/** + * 把变换矩阵展平成2d矩阵,避免出现三维坐标. + */ +function MatrixPlanarizere(mtx, z0 = true) { + mtx.elements[2] = 0; + mtx.elements[6] = 0; + mtx.elements[8] = 0; + mtx.elements[9] = 0; + mtx.elements[10] = Math.sign(mtx.elements[10]); + if (z0) + mtx.elements[14] = 0; + return mtx; +} +const tempMatrix1 = new Matrix4; +const ZMirrorMatrix = GetMirrorMat(new Vector3(0, 0, 1)); + +/** + * OSMODE + */ +var ObjectSnapMode; +(function (ObjectSnapMode) { + ObjectSnapMode[ObjectSnapMode["None"] = 0] = "None"; + ObjectSnapMode[ObjectSnapMode["End"] = 1] = "End"; + ObjectSnapMode[ObjectSnapMode["Mid"] = 2] = "Mid"; + ObjectSnapMode[ObjectSnapMode["Cen"] = 4] = "Cen"; + ObjectSnapMode[ObjectSnapMode["Node"] = 8] = "Node"; + ObjectSnapMode[ObjectSnapMode["Qua"] = 16] = "Qua"; + ObjectSnapMode[ObjectSnapMode["Int"] = 32] = "Int"; + ObjectSnapMode[ObjectSnapMode["Ins"] = 64] = "Ins"; + ObjectSnapMode[ObjectSnapMode["Per"] = 128] = "Per"; + ObjectSnapMode[ObjectSnapMode["Tan"] = 256] = "Tan"; + ObjectSnapMode[ObjectSnapMode["Nea"] = 512] = "Nea"; + ObjectSnapMode[ObjectSnapMode["NotEntitySnap"] = 1024] = "NotEntitySnap"; + ObjectSnapMode[ObjectSnapMode["App"] = 2048] = "App"; + ObjectSnapMode[ObjectSnapMode["Ext"] = 4096] = "Ext"; + ObjectSnapMode[ObjectSnapMode["Par"] = 8192] = "Par"; + ObjectSnapMode[ObjectSnapMode["Axis"] = 16384] = "Axis"; + ObjectSnapMode[ObjectSnapMode["All"] = 31743] = "All"; +})(ObjectSnapMode || (ObjectSnapMode = {})); + +const BufferGeometry2GeometryCacheMap = new WeakMap(); +globalThis.fuck = BufferGeometry2GeometryCacheMap; + +var BufferGeometryUtils; +(function (BufferGeometryUtils) { + function CreateFromPts(pts) { + return new BufferGeometry().setFromPoints(pts); + } + BufferGeometryUtils.CreateFromPts = CreateFromPts; + /** + * 更新BufferGeometry的顶点 + * @param geo + * @param pts + * @returns 当成功时返回true,更新失败时返回false + */ + function UpdatePts(geo, pts) { + let bf = geo.getAttribute("position"); + if (bf === undefined) + geo.setFromPoints(pts); + else if (bf.count >= pts.length) { + bf.copyVector3sArray(pts); + bf.needsUpdate = true; + geo.drawRange.count = pts.length; + } + else + return false; + BufferGeometry2GeometryCacheMap.delete(geo); + return true; + } + BufferGeometryUtils.UpdatePts = UpdatePts; + let arrowGeometry; + function ArrowGeometry() { + if (arrowGeometry) + return arrowGeometry; + else { + let arrowShape = new Shape$1(); + arrowShape.lineTo(-0.5, -1.8); + arrowShape.lineTo(0.5, -1.8); + arrowGeometry = new ShapeGeometry(arrowShape); + arrowGeometry.computeBoundingBox(); + return arrowGeometry; + } + } + BufferGeometryUtils.ArrowGeometry = ArrowGeometry; + function MergeBufferGeometries(geometries, useGroups = false) { + if (geometries.length === 0) + return new BufferGeometry(); + let isIndexed = geometries[0].index !== null; + let attributesUsed = new Set(Object.keys(geometries[0].attributes)); + let morphAttributesUsed = new Set(Object.keys(geometries[0].morphAttributes)); + let attributes = {}; + let morphAttributes = {}; + let morphTargetsRelative = geometries[0].morphTargetsRelative; + let mergedGeometry = new BufferGeometry(); + let offset = 0; + for (let i = 0; i < geometries.length; ++i) { + let geometry = geometries[i]; + // ensure that all geometries are indexed, or none + if (isIndexed !== (geometry.index !== null)) + return null; + // gather attributes, exit early if they're different + for (let name in geometry.attributes) { + if (!attributesUsed.has(name)) + continue; + if (attributes[name] === undefined) + attributes[name] = []; + attributes[name].push(geometry.attributes[name]); + } + // gather morph attributes, exit early if they're different + if (morphTargetsRelative !== geometry.morphTargetsRelative) + return null; + for (let name in geometry.morphAttributes) { + if (!morphAttributesUsed.has(name)) + continue; + if (morphAttributes[name] === undefined) + morphAttributes[name] = []; + morphAttributes[name].push(geometry.morphAttributes[name]); + } + // gather .userData + mergedGeometry.userData.mergedUserData = mergedGeometry.userData.mergedUserData || []; + mergedGeometry.userData.mergedUserData.push(geometry.userData); + if (useGroups) { + let count; + if (isIndexed) { + count = geometry.index.count; + } + else if (geometry.attributes.position !== undefined) { + count = geometry.attributes.position.count; + } + else { + return null; + } + mergedGeometry.addGroup(offset, count, i); + offset += count; + } + } + // merge indices + if (isIndexed) { + let indexOffset = 0; + let mergedIndex = []; + for (let i = 0; i < geometries.length; ++i) { + let index = geometries[i].index; + for (let j = 0; j < index.count; ++j) { + mergedIndex.push(index.getX(j) + indexOffset); + } + indexOffset += geometries[i].attributes.position.count; + } + mergedGeometry.setIndex(mergedIndex); + } + // merge attributes + for (let name in attributes) { + let mergedAttribute = MergeBufferAttributes(attributes[name]); + if (!mergedAttribute) + return null; + mergedGeometry.setAttribute(name, mergedAttribute); + } + // merge morph attributes + for (let name in morphAttributes) { + let numMorphTargets = morphAttributes[name][0].length; + if (numMorphTargets === 0) + break; + mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {}; + mergedGeometry.morphAttributes[name] = []; + for (let i = 0; i < numMorphTargets; ++i) { + let morphAttributesToMerge = []; + for (let j = 0; j < morphAttributes[name].length; ++j) { + morphAttributesToMerge.push(morphAttributes[name][j][i]); + } + let mergedMorphAttribute = MergeBufferAttributes(morphAttributesToMerge); + if (!mergedMorphAttribute) + return null; + mergedGeometry.morphAttributes[name].push(mergedMorphAttribute); + } + } + return mergedGeometry; + } + BufferGeometryUtils.MergeBufferGeometries = MergeBufferGeometries; + function MergeBufferAttributes(attributes) { + let TypedArray; + let itemSize; + let normalized; + let arrayLength = 0; + for (let i = 0; i < attributes.length; ++i) { + let attribute = attributes[i]; + if (TypedArray === undefined) + TypedArray = attribute.array.constructor; + if (TypedArray !== attribute.array.constructor) + return null; + if (itemSize === undefined) + itemSize = attribute.itemSize; + if (itemSize !== attribute.itemSize) + return null; + if (normalized === undefined) + normalized = attribute.normalized; + if (normalized !== attribute.normalized) + return null; + arrayLength += attribute.array.length; + } + let array = new TypedArray(arrayLength); + let offset = 0; + for (let i = 0; i < attributes.length; ++i) { + array.set(attributes[i].array, offset); + offset += attributes[i].array.length; + } + return new BufferAttribute(array, itemSize, normalized); + } + BufferGeometryUtils.MergeBufferAttributes = MergeBufferAttributes; +})(BufferGeometryUtils || (BufferGeometryUtils = {})); + +class Shape2 extends Shape$1 { + getPoints(divisions = 12) { + divisions = divisions || 12; + let points = [], last; + for (let i = 0, curves = this.curves; i < curves.length; i++) { + let curve = curves[i]; + //@ts-ignore + let resolution = (curve && curve.isEllipseCurve) ? clamp(curve.getLength() / 20, divisions * 2, 60) + //@ts-ignore + : (curve && (curve.isLineCurve || curve.isLineCurve3)) ? 1 + //@ts-ignore + : (curve && curve.isSplineCurve) ? divisions * curve.points.length + : divisions; + let pts = curve.getPoints(resolution); + for (let j = 0; j < pts.length; j++) { + let point = pts[j]; + if (last && equalv2(last, point, 1e-4)) + continue; // ensures no consecutive points are duplicates + points.push(point); + last = point; + if (j === pts.length - 1) + point["_mask_"] = true; + } + } + if (this.autoClose + && points.length > 1 + && !points[points.length - 1].equals(points[0])) { + points.push(points[0]); + } + return points; + } + absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) { + let curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation); + /* + if (this.curves.length > 0) + { + // if a previous curve is present, attempt to join + let firstPoint = curve.getPoint(0); + if (!equalv2(firstPoint, this.currentPoint)) + { + this.lineTo(firstPoint.x, firstPoint.y); + } + } + */ + this.curves.push(curve); + let lastPoint = curve.getPoint(1); + this.currentPoint.copy(lastPoint); + return this; + } +} + +class Matrix2 { + constructor() { + //column-major + this.el = [1, 0, 0, 1]; //ix iy jx jy [a c b d] + } + set(ix, iy, jx, jy) { + this.el[0] = ix; + this.el[1] = iy; + this.el[2] = jx; + this.el[3] = jy; + } + applyVector(vec) { + let x = vec.x; + let y = vec.y; + let e = this.el; + vec.x = e[0] * x + e[2] * y; + vec.y = e[1] * x + e[3] * y; + return this; + } + fromMatrix4(mtx4) { + this.set(mtx4.elements[0], mtx4.elements[1], mtx4.elements[3], mtx4.elements[4]); + } + setRotate(theta) { + let c = Math.cos(theta); + let s = Math.sin(theta); + this.set(c, s, -s, c); + return this; + } + //自我求逆矩阵,返回自身 + invert() { + //ref:https://www.mathsisfun.com/algebra/matrix-inverse.html + let [a, c, b, d] = this.el; + let det = 1 / (a * d - b * c); + this.set(d * det, -c * det, -b * det, a * det); + return this; + } +} + +let r = new Matrix2(); +function RotateUVs(geo) { + r.set(0, -1, 1, 0); + for (let uvs of geo.faceVertexUvs) { + for (let uv of uvs) { + for (let v of uv) + r.applyVector(v); + } + } + geo.uvsNeedUpdate = true; +} + +var CreateBoardUtil; +(function (CreateBoardUtil) { + //解析二维圆弧 + class Arc2d { + constructor(p1, p2, bul) { + this._StartPoint = p1.clone(); + this._EndPoint = p2.clone(); + let vec = p2.clone().sub(p1); + let len = vec.length(); + let an = vec.angle(); + this._Radius = len / Math.sin(2 * Math.atan(bul)) / 2; + let delDis = bul * len / 2; + let toDis = this._Radius - delDis; + an += Math.PI * 0.5; + this._Center = p1.clone().add(p2); + this._Center.multiplyScalar(0.5); + polar(this._Center, an, toDis); + this._StartAn = p1.clone().sub(this._Center).angle(); + this._EndAn = p2.clone().sub(this._Center).angle(); + if (bul < 0) { + //一个神奇的特性 它需要这么做 + this._StartAn -= Math.PI; + this._EndAn -= Math.PI; + } + } + } + CreateBoardUtil.Arc2d = Arc2d; + //创建轮廓 通过点表和凸度 + function CreatePath(pts, buls) { + let shape = new Shape2(); + if (pts.length === 0) + return shape; + let firstPt = pts[0]; + shape.moveTo(firstPt.x, firstPt.y); + for (let i = 0; i < pts.length - 1; i++) { + let nextPt = pts[i + 1]; + if (equaln(buls[i], 0, 1e-8)) { + shape.lineTo(nextPt.x, nextPt.y); + } + else { + let pt = pts[i]; + //参考 + //http://www.dorodnic.com/blog/tag/three-js/ 绘制一个齿轮 + //https://www.kirupa.com/html5/drawing_circles_canvas.htm //html5 + let arc2 = new Arc2d(pt, nextPt, buls[i]); + let cen = arc2._Center; + shape.absarc(cen.x, cen.y, arc2._Radius, arc2._StartAn, arc2._EndAn, buls[i] < 0); + } + } + return shape; + } + CreateBoardUtil.CreatePath = CreatePath; + //创建板件 暂时这么写 + function createBoard(boardData) { + var pts = new Array(); + var buls = new Array(); + var boardPts = boardData["Pts"]; + var boardBuls = boardData["Buls"]; + let boardHeight = boardData["H"]; + var boardMat = new Matrix4(); + var matInv = new Matrix4(); + //InitBoardMat + { + var xD = AsVector3(boardData["XVec"]); + var yD = AsVector3(boardData["YVec"]); + var ZD = AsVector3(boardData["ZVec"]); + var pBase = AsVector3(boardData["BasePoint"]).multiplyScalar(0.001); + boardMat.makeBasis(xD, yD, ZD); + boardMat.setPosition(pBase); + matInv.getInverse(boardMat); + } + for (let i = 0; i < boardPts.length; i++) { + var pt = AsVector3(boardPts[i]).multiplyScalar(0.001); + pt.applyMatrix4(matInv); + pts.push(new Vector2(pt.x, pt.y)); + buls.push(boardBuls[i]); + } + var sp = CreatePath(pts, buls); + var extrudeSettings = { + steps: 1, + bevelEnabled: false, + amount: boardHeight * 0.001 + }; + var ext = new ExtrudeGeometry(sp, extrudeSettings); + ext.translate(0, 0, -boardHeight * 0.001); + ext.applyMatrix4(boardMat); + if (boardData["BoardName"] === "地脚线") { + RotateUVs(ext); + } + var mesh = new Mesh(ext); + return mesh; + } + CreateBoardUtil.createBoard = createBoard; +})(CreateBoardUtil || (CreateBoardUtil = {})); + +/** + * 曲线连接图 + * 所有的顶点和边的关系 + */ +class CurveMap { + constructor(numdimensions = 4, _RemoveSortLine = false, multiplier = 10 ** numdimensions) { + this.numdimensions = numdimensions; + this._RemoveSortLine = _RemoveSortLine; + this.multiplier = multiplier; + /* + 节点图. + 每个节点对应下一个路口的路线表. + 路口表使用逆时针排序,起始角度使用正x轴. + */ + this._VerticeMap = new Map(); + this._Vertices = []; + this._LookupTable = {}; + } + /** + * 得到节点图的所有站点列表 + */ + get Stands() { + return this._Vertices; + } + /** + * @param curve + * @param [isArc=curve instanceof Arc] + * @param [removeDuplicate=false] + * @returns 加入成功? + */ + AddCurveToMap(curve, isArc = curve instanceof Arc, removeDuplicate = false, parseAngle = false) { + let sp = curve.StartPoint; + let ep = curve.EndPoint; + let startS = this.GetOnlyVertice(sp); + let endS = this.GetOnlyVertice(ep); + //在面域分析中,路线指向同一个顶点已经没有意义了 + if (this._RemoveSortLine && startS === endS) + return false; + if (removeDuplicate) //删除重复 + { + let index = startS.routes.findIndex(r => { + if (r.to === endS && r.curve.constructor.name === curve.constructor.name) { + if (isArc) + return equalv3(curve.GetPointAtParam(0.5), r.curve.GetPointAtParam(0.5)); + return true; + } + }); + if (index !== -1) + return false; + } + let length = curve.Length; + curve.TempData = 0; + let routeS2E = { curve, isReverse: false, length, from: startS, to: endS, s: sp, e: ep }; + let routeE2S = { curve, isReverse: true, length, from: endS, to: startS, e: sp, s: ep }; + if (!isArc && parseAngle) { + let an = angle(endS.position.clone().sub(startS.position)); + routeS2E.an = an; + routeE2S.an = clampRad(an + Math.PI); + } + startS.routes.push(routeS2E); + endS.routes.push(routeE2S); + return true; + } + /** + * 获得唯一的顶点 + */ + GetOnlyVertice(p) { + let gp = this.GenerateP(p); + if (this._VerticeMap.has(gp)) + return this._VerticeMap.get(gp); + let vertice = { position: gp, routes: [] }; + this._VerticeMap.set(p, vertice); + this._Vertices.push(vertice); + return vertice; + } + /** + * 生成一个唯一的向量. + */ + GenerateP(p) { + let key = ""; + let els = p.toArray(); + for (let n of els) { + let valueQuantized = Math.round(n * this.multiplier); + key += valueQuantized + '/'; + } + if (key in this._LookupTable) + return this._LookupTable[key]; + let hashparts = els.map((el) => { + let q0 = Math.floor(el * this.multiplier); + let q1 = q0 + 1; + return ['' + q0 + '/', '' + q1 + '/']; + }); + let numelements = els.length; + let numhashes = 1 << numelements; + for (let hashmask = 0; hashmask < numhashes; ++hashmask) { + let hashmaskShifted = hashmask; + key = ''; + hashparts.forEach(function (hashpart) { + key += hashpart[hashmaskShifted & 1]; + hashmaskShifted >>= 1; + }); + this._LookupTable[key] = p; + } + return p; + } +} + +/** +面域分析,基于最小循环图重新实现的版本,拓展了实现求最大轮廓。 +当最大轮廓=最小轮廓时,只绘制最大轮廓(独立轮廓无分裂)。 + +算法只实现去重模式,业务场景应该没有非去重模式。 +如果需要非去重模式,那么应该获取到多个CurveMap,然后对多个CurveMap进行面域分析,得出多个重叠的面域。 + */ +class RegionParse { + /** + * @param cuList 请不要传递圆和椭圆. + * @param [numDimensions=3] 精度:小数点后个数 + * @param [removeDuplicate=true] 删除重复(现在必须是true,请不要修改它) + */ + constructor(cuList, numDimensions = 3, removeDuplicate = true) { + this.numDimensions = numDimensions; + this.removeDuplicate = removeDuplicate; + //区域列表 通常是外轮廓 + this.RegionsOutline = []; + //区域列表 通常是内轮廓 + this.RegionsInternal = []; + //碎线 曲线进入到这里会被炸开. + this.ExpLineMap = new Map(); + //需要搜索的站 + let vertices = this.GenerateVerticeMap(cuList); + //移除细丝 + while (true) { + let v = vertices.find(v => v.routes.length < 2); + if (v) + this.RemoveFilamentAt(v, vertices); + else + break; + } + let lowerVertice; + while (vertices.length > 0) { + lowerVertice = (lowerVertice === null || lowerVertice === void 0 ? void 0 : lowerVertice.routes.length) > 1 ? lowerVertice : this.FindLowerLeftStand(vertices); + let minWalk = ClosedWalkFrom(lowerVertice, this._CurveCount, WalkType.Min); + let maxWalk = ClosedWalkFrom(lowerVertice, this._CurveCount, WalkType.Max); + this.RemoveEdge(minWalk[0]); + this.RemoveFilamentAt(minWalk[0].from, vertices); + this.RemoveFilamentAt(minWalk[0].to, vertices); + minWalk = ReduceWalk(minWalk); + maxWalk = ReduceWalk(maxWalk); + if (maxWalk.length > 1) { + this.RegionsOutline.push(maxWalk); + if (minWalk.length === maxWalk.length && minWalk.every((w1, index) => w1 === maxWalk[index])) //大小重叠 + { + //直接remove,不用计算引用个数 + for (let w of minWalk) { + this.RemoveEdge(w); + this.RemoveFilamentAt(w.from, vertices); + this.RemoveFilamentAt(w.to, vertices); + } + continue; //继续循环 + } + else + for (let w of maxWalk) + w.curve.TempData = 1; + } + if (minWalk.length > 1) // && minWalk.every(w => (w.curve.TempData) < 2) 没有重复线应该不会被用2次 + { + this.RegionsInternal.push(minWalk); + for (let w of minWalk) { + w.curve.TempData++; + if (w.curve.TempData === 2) { + this.RemoveEdge(w); + this.RemoveFilamentAt(w.from, vertices); + this.RemoveFilamentAt(w.to, vertices); + } + } + } + } + } + RemoveFilamentAt(v, vertices) { + let current = v; + while (current && current.routes.length < 2) { + vertices = arrayRemoveOnce(vertices, current); + let r = current.routes[0]; + if (r) { + this.RemoveEdge(r); + current = r.to; + } + else + current = undefined; + } + } + RemoveEdge(r) { + let index = r.from.routes.findIndex(rr => rr.curve === r.curve); + if (index !== -1) + r.from.routes.splice(index, 1); + index = r.to.routes.findIndex(rr => rr.curve === r.curve); + if (index !== -1) + r.to.routes.splice(index, 1); + } + /** + * 找到最下方并且最左边的站 yx + */ + FindLowerLeftStand(vertices) { + return vertices.reduce((m, v) => { + let dy = v.position.y - m.position.y; + if (dy < 0) + return v; + if (dy > 0) + return m; + return v.position.x - m.position.x < 0 ? v : m; + }); + } + /** + * 构造路线图. 每个节点对应下一个路口的路线表. 路口表使用逆时针排序,起始角度使用正x轴. + * @returns 所有的顶点 + */ + GenerateVerticeMap(curveList) { + let curveMap = new CurveMap(this.numDimensions, true); + //将多段线炸开 + let plcus = []; + arrayRemoveIf(curveList, c => { + if (c instanceof Polyline) { + let cus = c.Explode(); + //如果为圆弧,提前打断 + let arcs = []; + arrayRemoveIf(cus, c => { + if (c.Length < 1e-5) + return true; + if (c instanceof Arc) { + let arcBrs = this.BreakArc(c); + for (let arc of arcBrs) + arcs.push(arc); + } + return false; + }); + //加入到计算 + cus.push(...arcs); + this.ExpLineMap.set(c, cus); + plcus.push(...cus); + return true; + } + return false; + }); + curveList.push(...plcus); + this._CurveCount = curveList.length; + for (let cu of curveList) { + //由于圆弧可能导致最低点计算错误的问题. + if (cu instanceof Arc) { + let arcs = this.BreakArc(cu); + if (arcs.length > 1) { + arcs.forEach(a => curveMap.AddCurveToMap(a, true, this.removeDuplicate, true)); + this.ExpLineMap.set(cu, arcs); + continue; + } + else + curveMap.AddCurveToMap(cu, true, this.removeDuplicate, true); + } + else + curveMap.AddCurveToMap(cu, false, this.removeDuplicate, true); + } + //排序,根据角度逆时针排序. + for (let v of curveMap._Vertices) { + let minLength = Infinity; + for (let r of v.routes) + if (r.length < minLength) + minLength = r.length; + for (let r of v.routes) + CalcRouteAngle(r, minLength * 0.2); + v.routes.sort((r1, r2) => r1.an - r2.an); + } + return curveMap.Stands; + } + BreakArc(arc) { + let underPt = arc.Center.add(new Vector3(0, -arc.Radius)); + let param = arc.GetParamAtPoint(underPt); + if (param > 0.01 && param < 0.99) + return arc.GetSplitCurves(param); + else + return [arc]; + } + /** + * 曲线是否已经被算法使用 + */ + GetCueveUsed(cu) { + if (this.ExpLineMap.has(cu)) { + let use = this.ExpLineMap.get(cu).some(c => c.TempData > 0); + if (!use) + this.ExpLineMap.delete(cu); + return use; + } + else + return cu.TempData > 0; + } +} +function CalcRouteAngle(r, length) { + if (r.an !== undefined) + return; + let cu = r.curve; + let p = r.isReverse ? + cu.GetPointAtParam(cu.GetParamAtDist(r.length - length)) + : cu.GetPointAtParam(cu.GetParamAtDist(length)); + r.an = angle(p.sub(r.from.position)); +} +var WalkType; +(function (WalkType) { + WalkType[WalkType["Min"] = 1] = "Min"; + WalkType[WalkType["Max"] = -1] = "Max"; +})(WalkType || (WalkType = {})); +function ClosedWalkFrom(startVertice, maxRoute, type = WalkType.Min) { + let walk = []; + let curVertice = startVertice; + let preRoute; + // console.log("start", type, startVertice.position.toArray()); + do { + let route = GetNextRoute(curVertice, preRoute, type); + if (type === WalkType.Max && route.curve.TempData > 0) + return []; + // console.log(route.to.position.toArray()); + walk.push(route); + [curVertice, preRoute] = [route.to, route]; + if (walk.length > maxRoute * 2) + throw "超过计算次数限制"; + } while (curVertice !== startVertice); + return walk; +} +/** + * 删除中途回路 + */ +function ReduceWalk(w) { + if (w.length === 0) + return w; + //未构成回路,直接回家 + if (w[0].curve === arrayLast(w).curve) + return []; + for (let i = 0; i < w.length; i++) { + let r1 = w[i]; + for (let j = w.length; j--;) { + if (i === j) + break; + let r2 = w[j]; + if (r1.to === r2.to) { + if (j > i) + w.splice(i + 1, j - i); + break; + } + } + } + return w; +} +function GetNextRoute(v, prev, type = WalkType.Min) { + if (!prev) + return arrayLast(v.routes); //顺时针 cw \|/ 从左往右 + //逆时针 ccw 往左 + let index = v.routes.findIndex(r => r.curve === prev.curve); + let newIndex = FixIndex(index + 1 * type, v.routes); + return v.routes[newIndex]; +} + +var BoolOpeartionType; +(function (BoolOpeartionType) { + BoolOpeartionType[BoolOpeartionType["Intersection"] = 0] = "Intersection"; + BoolOpeartionType[BoolOpeartionType["Union"] = 1] = "Union"; + BoolOpeartionType[BoolOpeartionType["Subtract"] = 2] = "Subtract"; +})(BoolOpeartionType || (BoolOpeartionType = {})); +const fuzz = 1e-3; +let fuzzV3 = new Vector3(fuzz, fuzz, fuzz); +//判断曲线是否在源封闭曲线内 +function isTargetCurInOrOnSourceCur(sourceCur, targetCur) { + if (!sourceCur.BoundingBox.expandByVector(fuzzV3).containsBox(targetCur.BoundingBox)) + return false; + let cus = []; + if (targetCur instanceof Polyline) + cus = targetCur.Explode(); + else + cus = [targetCur]; + return cus.every(c => { + let pts = getIntPtContextPts(sourceCur, c); + if (pts.length <= 1) + pts.push(c.StartPoint, c.EndPoint); + return IsPtsAllInOrOnReg(sourceCur, pts); + }); +} +//获取交点处上下距0.01par的点 +function getIntPtContextPts(sourceCur, cu, pts = []) { + let interPts = cu.IntersectWith(sourceCur, IntersectOption.OnBothOperands); + if (interPts.length > 0) { + let pars = interPts.map(pt => cu.GetParamAtPoint(pt)); + for (let par of pars) { + if (par >= 0.02) + pts.push(cu.GetPointAtParam(par - 0.01)); + if (par <= (cu.EndParam - 0.02)) + pts.push(cu.GetPointAtParam(par + 0.01)); + } + } + return pts; +} +//判断点点是否全部都在封闭区域内或者在曲线上 +function IsPtsAllInOrOnReg(sourceReg, pts) { + return pts.every(pt => { + //是否点在封闭曲线内 + return sourceReg.PtOnCurve(pt) || sourceReg.PtInCurve(pt); + }); +} + +var ExtendType; +(function (ExtendType) { + /** + * 前后都不延伸 + */ + ExtendType[ExtendType["None"] = 0] = "None"; + /** + * 只允许延伸前面 + */ + ExtendType[ExtendType["Front"] = 1] = "Front"; + /** + * 只允许延伸后面 + */ + ExtendType[ExtendType["Back"] = 2] = "Back"; + /** + * 前后延伸 + */ + ExtendType[ExtendType["Both"] = 3] = "Both"; +})(ExtendType || (ExtendType = {})); +/** + * 曲线的基类,子类请实现以下方法. + */ +let Curve = class Curve extends Entity { + constructor() { + super(); + //------------------绘制相关------------------ + //重载 + this.OnlyRenderType = true; + } + get Is2D() { + return equaln(this._Matrix.elements[14], 0); + } + get StartPoint() { return; } + set StartPoint(v) { return; } + get StartParam() { return; } + get EndPoint() { return; } + set EndPoint(v) { return; } + /** 曲线中点 */ + get Midpoint() { + return this.GetPointAtParam(this.MidParam); + } + get MidParam() { + if (this.EndParam === 1) + return 0.5; + else + return this.GetParamAtDist(this.Length * 0.5); + } + get EndParam() { return; } + get Area() { return 0; } + /** + *获得曲线的面积,逆时针为正,顺时针为负. + */ + get Area2() { return 0; } + get Length() { return 0; } + get IsClose() { return false; } + /** 曲线为顺时针 */ + get IsClockWise() { return this.Area2 < 0; } + GetPointAtParam(param) { return; } + GetPointAtDistance(distance) { return; } + GetDistAtParam(param) { return; } + GetDistAtPoint(pt) { return; } + GetParamAtPoint(pt) { return; } + GetParamAtPoint2(pt) { return this.GetParamAtPoint(pt); } + GetParamAtDist(d) { return; } + /** + * 返回曲线在指定位置的一阶导数(在wcs内) + * + * @param {(number | Vector3)} param + * @returns {Vector3} + * @memberof Curve + */ + GetFistDeriv(param) { return; } + GetFistDerivAngle(param) { + let d = this.GetFistDeriv(param); + return Math.atan2(d.y, d.x); + } + /** + * 返回切割曲线后的结果.总是从起点开始切割,并且按顺序返回曲线. + * @param {(number[] | number)} param + * @returns {Array} + */ + GetSplitCurves(param) { return; } + //未完善 + GetCurveAtParamRange(startParam, EndParam) { return; } + GetSplitCurvesByPts(pt) { + let pts = Array.isArray(pt) ? pt : [pt]; + let pars = pts.map(p => this.GetParamAtPoint(p)); + return this.GetSplitCurves(pars); + } + SplitParamSort(param) { + if (Array.isArray(param)) { + param = param.filter(p => this.ParamOnCurve(p)); + if (param.length === 0) + return []; + param.push(0, this.EndParam); + arraySortByNumber(param); + arrayRemoveDuplicateBySort(param, (e1, e2) => equaln(e1, e2, 1e-7)); + return param; + } + else if (this.ParamOnCurve(param)) + return [0, param, this.EndParam]; + else + return []; + } + Extend(newParam) { } + /** + * 连接曲线到本曲线,如果成功返回true + * @param {Curve} cu 需要连接的曲线 + * @returns {boolean} 连接成功 + * @memberof Curve + */ + Join(cu, allowGap = false, tolerance = 1e-4) { return Status.False; } + //翻转曲线.首尾调换. + Reverse() { return this; } + //点在曲线上 + PtOnCurve(pt, fuzz = 1e-6) { + return equalv3(this.StartPoint, pt, fuzz) || equalv3(this.EndPoint, pt, fuzz) || this.ParamOnCurve(this.GetParamAtPoint(pt)); + } + //点在曲线中,不在起点或者终点. + PtOnCurve2(pt) { + return !(equalv3(this.StartPoint, pt, 1e-6) || equalv3(this.EndPoint, pt, 1e-6)) && this.ParamOnCurve(this.GetParamAtPoint(pt), 0); + } + //点在曲线上,已经确定点在曲线的延伸线上 + PtOnCurve3(p, fuzz = 1e-6) { + return this.PtOnCurve(p, fuzz); + } + //参数在曲线上 容差,1e-6 + ParamOnCurve(param, fuzz = 1e-6) { return !isNaN(param) && param >= -fuzz && param <= this.EndParam + fuzz; } + GetOffsetCurves(offsetDist) { return; } + GetClosestPointTo(pt, extend) { return; } + /** + * 曲线相交点 + */ + IntersectWith(curve, intType, tolerance = 1e-6) { + return this.IntersectWith2(curve, intType, tolerance).map(r => r.pt); + } + /** + * 曲线相交点和点的参数 + */ + IntersectWith2(curve, intType, tolerance = 1e-6) { return []; } + /** + * 拽托点个数 + */ + GetDragPointCount(drag) { return 0; } + /** + * 重载:更新实体材质 + */ + UpdateDrawObjectMaterial(type, obj, material) { + if (type === RenderType.WireframePrint) ; + else { + let m = obj; + m.material = material || ColorMaterial.GetLineMaterial(this._Color); + } + } + UpdateJigMaterial(color = 8) { + for (let [type, obj] of this._CacheDrawObject) { + this.UpdateDrawObjectMaterial(type, obj, ColorMaterial.GetLineMaterial(color)); + } + } +}; +Curve = __decorate([ + Factory +], Curve); + +let cache = new WeakMap(); +const COMBINE_FUZZ = 1e-2; +class Contour { + SetCurve(cu) { + if (cu instanceof Polyline) { + if (cu.Area2 < 0) + cu.Reverse(); + } + this._Curve = cu; + } + /**会将传入的闭合轮廓改为逆时针 */ + static CreateContour(cus, needLink = true) { + if (cus instanceof Curve) { + if (cus.IsClose) { + let c = new Contour(); + c.SetCurve(cus); + return c; + } + return; + } + let closeCurve = Contour.Combine(cus, needLink, COMBINE_FUZZ); + if (closeCurve && closeCurve.IsClose) { + if (closeCurve instanceof Polyline && closeCurve.CloseMark === false) { + closeCurve.CloseMark = true; + closeCurve.RemoveVertexAt(closeCurve.NumberOfVertices - 1); + } + let c = new Contour(); + c.SetCurve(closeCurve); + return c; + } + } + get Curve() { + return this._Curve; + } + get Area() { + return this._Curve.Area; + } + get BoundingBox() { + return this._Curve.BoundingBox; + } + /** + * 不等比例缩放 + * @param {number} ref 缩放参考值,大于该值的点缩放 + * @param {number} dist 缩放距离 + * @param {string} dir x y z + */ + UnEqualProportionScale(ref, dist, dir) { + let cu = this._Curve; + if (cu instanceof Polyline) { + let lineData = cu.LineData; + let length = lineData.length; + let p = cu.Position[dir]; + let moveIndexs = []; + for (let i = 0; i < length; i++) { + if (lineData[i].pt[dir] + p > ref) + moveIndexs.push(i); + } + let moveVec = new Vector3(); + moveVec[dir] = dist; + cu.MoveStretchPoints(moveIndexs, moveVec); + return true; + } + return false; + } + Clone() { + return Contour.CreateContour([this._Curve.Clone()]); + } + //交集:结果数组为空则失败 + IntersectionBoolOperation(target) { + if (!IntersectBox2(this.BoundingBox, target.BoundingBox)) + return []; + let resultCus = this.GetIntersetAndUnionList(target); + return Contour.GetAllContour(resultCus.intersectionList); + } + //并集:结果轮廓数组长度大于2,则失败.等于1则成功. + UnionBoolOperation(target) { + let resultCus = this.GetIntersetAndUnionList(target); + //快速 + if (resultCus.unionList.every(c => c.IsClose)) + return { + contours: Contour.GetAllContour(resultCus.unionList), + holes: [], + }; + //并集后的线段表如果有共线的直接合并起来 + let cus = []; + for (let pl of resultCus.unionList) { + if (pl instanceof Polyline) + cus.push(...pl.Explode()); + else + cus.push(pl); + } + let cuGroups = curveLinkGroup(cus); + for (let g of cuGroups) { + for (let i = 0; i < g.length; i++) { + let c1 = g[i]; + let nextI = FixIndex(i + 1, g); + let c2 = g[nextI]; + let status = c1.Join(c2); + if (status === Status.True) { + g.splice(nextI, 1); + i--; + } + else if (status === Status.ConverToCircle) { + g.length = 0; + let a = c1; + g.push(new Circle(a.Center, a.Radius)); + break; + } + } + } + let allContour = Contour.GetAllContour(cuGroups); + if (allContour.length < 2) { + return { + contours: allContour, + holes: [], + }; + } + else { + let cache = new WeakMap(); + for (let c of allContour) + cache.set(c, c.Area); + allContour.sort((a, b) => cache.get(b) - cache.get(a)); + return { + contours: [allContour[0]], + holes: allContour.slice(1) + }; + } + } + //差集:等于0完全被减去 + SubstactBoolOperation(target) { + let subtractList = this.GetSubtractList(target); + //纯网洞 + if (subtractList.every(c => c.IsClose)) + return Contour.GetAllContour(subtractList); + let regParse = new RegionParse(subtractList, 2); + let contours = []; + //分析封闭包围区域 + const parseRoute = (routeSet) => { + for (let routes of routeSet) { + let cs = routes.map(r => r.curve); + let c = Contour.CreateContour(cs, false); + if (c + && !equalCurve(c.Curve, this.Curve) + && !equalCurve(c.Curve, target.Curve) + && c.Area > 1e-3) + contours.push(c); + } + }; + parseRoute(regParse.RegionsOutline); + parseRoute(regParse.RegionsInternal); + return contours; + } + /** + * 计算与目标轮廓布尔运算后的结果曲线. + */ + GetIntersetAndUnionList(target) { + let intersectionList = []; + let unionList = []; + let sourceOutline = this._Curve; + let targetOutline = target.Curve; + let isEqualNormal = equalv3(sourceOutline.Normal, targetOutline.Normal, 1e-3); + //可能会有提升,但是好像不大(并且还有更慢的趋势) + // if (!sourceOutline.BoundingBox.intersectsBox(targetOutline.BoundingBox, 1e-3)) + // return { intersectionList, unionList }; + let interPts = sourceOutline.IntersectWith2(targetOutline, IntersectOption.OnBothOperands, COMBINE_FUZZ); + let sourceContainerTarget; + let targetContainerSource; + if (sourceOutline.Area > targetOutline.Area) { + sourceContainerTarget = interPts.length === 0 ? fastCurveInCurve(sourceOutline, targetOutline) : this.CuInOutline(targetOutline); + targetContainerSource = false; + } + else { + sourceContainerTarget = false; + targetContainerSource = interPts.length === 0 ? fastCurveInCurve(targetOutline, sourceOutline) : target.CuInOutline(sourceOutline); + } + //包含.相交.分离(三种状态) + if (sourceContainerTarget) //源包含目标 + { + intersectionList.push(targetOutline); + unionList.push(sourceOutline); + } + else if (targetContainerSource) //目标包含源 + { + unionList.push(targetOutline); + intersectionList.push(sourceOutline); + } + else if (interPts.length <= 1) //分离 + { + unionList.push(sourceOutline, targetOutline); + } + else //相交 interPts.length > 0 + { + let pars1 = interPts.map(r => r.thisParam); + let pars2 = interPts.map(r => r.argParam); + let sourceCus = sourceOutline.GetSplitCurves(pars1); + let targetCus = targetOutline.GetSplitCurves(pars2); + for (let pl of sourceCus) { + let hasEqualCus = false; + for (let i = 0; i < targetCus.length; i++) { + let cu = targetCus[i]; + hasEqualCus = fastEqualCurve(cu, pl); + if (hasEqualCus) { + //方向相同 + if (equalv3(cu.GetFistDeriv(cu.EndParam * 0.5).normalize(), pl.GetFistDeriv(pl.EndParam * 0.5).normalize(), 1e-3) + === isEqualNormal) { + unionList.push(pl); + intersectionList.push(pl); + } + targetCus.splice(i, 1); + break; + } + } + if (hasEqualCus) + continue; + if (fastCurveInCurve(targetOutline, pl)) + intersectionList.push(pl); + else + unionList.push(pl); + } + for (let pl of targetCus) { + if (fastCurveInCurve(sourceOutline, pl)) + intersectionList.push(pl); + else + unionList.push(pl); + } + //特殊的分离 + if (intersectionList.length === 0 && unionList.length === (sourceCus.length + targetCus.length)) { + return { intersectionList, unionList: [sourceOutline, targetOutline] }; + } + } + return { intersectionList, unionList }; + } + GetSubtractList(target) { + let sourceOutline = this._Curve; + let targetOutline = target.Curve; + let isEqualNormal = equalv3(sourceOutline.Normal, targetOutline.Normal, 1e-3); + let interPts = sourceOutline.IntersectWith2(targetOutline, IntersectOption.OnBothOperands, COMBINE_FUZZ); + if (interPts.length <= 1) { + //反包含 + if (fastCurveInCurve2(targetOutline, sourceOutline) || equalCurve(targetOutline, sourceOutline)) + return []; + //包含 + if (fastCurveInCurve2(sourceOutline, targetOutline)) + return [sourceOutline, targetOutline]; + else //分离 + return [sourceOutline]; + } + //相交 + let subtractList = []; + let sourceCus = sourceOutline.GetSplitCurves(interPts.map(r => r.thisParam)); + let targetCus = targetOutline.GetSplitCurves(interPts.map(r => r.argParam)); + for (let pl of sourceCus) { + let plMidParam = pl.MidParam; + let plDir = pl.GetFistDeriv(plMidParam).normalize(); + let index = targetCus.findIndex(cu => fastEqualCurve(cu, pl)); + if (index !== -1) { + let cu = targetCus[index]; + let cuMidParam = cu.MidParam; + let cuDir = cu.GetFistDeriv(cuMidParam).normalize(); + if (isEqualNormal === !equalv3(cuDir, plDir, 1e-3)) //不同向 + subtractList.push(pl); + targetCus.splice(index, 1); + continue; + } + if (!fastCurveInCurve(targetOutline, pl)) + subtractList.push(pl); + } + //源对象没有被破坏 + let sourceNotBreak = subtractList.length === sourceCus.length; + for (let pl of targetCus) + if (fastCurveInCurve(sourceOutline, pl)) + subtractList.push(pl); + if (sourceNotBreak && subtractList.length === sourceCus.length) + return [sourceOutline]; + return subtractList; + } + GetSubtractListByMoreTargets(targets) { + let { holes, subtractList } = this.GetSubListWithCus(targets); + //纯网洞 + if (subtractList.every(c => c.IsClose)) + return { + holes: holes.map(h => Contour.CreateContour(h)), + outlines: Contour.GetAllContour(subtractList) + }; + let regParse = new RegionParse(subtractList, 2); + let contours = []; + //分析封闭包围区域 + const parseRoute = (routeSet) => { + for (let routes of routeSet) { + let cs = routes.map(r => r.curve); + let c = Contour.CreateContour(cs, false); + if (c + && !equalCurve(c.Curve, this.Curve) + && targets.every(target => !equalCurve(c.Curve, target.Curve)) + && c.Area > 1e-3) + contours.push(c); + } + }; + parseRoute(regParse.RegionsOutline); + parseRoute(regParse.RegionsInternal); + return { + holes: holes.map(h => Contour.CreateContour(h)), + outlines: contours + }; + } + GetSubListWithCus(targets) { + let sourceOutline = this._Curve; + let subtractList = []; + let holes = []; + let intPars = []; + let cuMap = new Map(); + let outBox = sourceOutline.BoundingBox; + for (let con of targets) { + const targetOutline = con.Curve; + if (!IntersectBox2(outBox, targetOutline.BoundingBox)) + continue; + let pts = sourceOutline.IntersectWith2(con.Curve, IntersectOption.OnBothOperands, COMBINE_FUZZ); + if (pts.length <= 1) { + //反包含 + if (fastCurveInCurve2(targetOutline, sourceOutline) || equalCurve(targetOutline, sourceOutline)) + return { holes, subtractList }; + //包含 + if (fastCurveInCurve2(sourceOutline, targetOutline)) + holes.push(targetOutline); + } + else { + intPars.push(...pts.map(r => r.thisParam)); + cuMap.set(targetOutline, pts.map(r => r.argParam)); + } + } + intPars.sort((a, b) => a - b); + arrayRemoveDuplicateBySort(intPars, (e1, e2) => equaln(e1, e2, 1e-8)); + let sourceCus = sourceOutline.GetSplitCurves(intPars); + let targetCus = []; + let targetMap = new WeakMap(); + let isEqualNormal; + for (let [c, pars] of cuMap) { + let cus = c.GetSplitCurves(pars); + cus.forEach(cu => targetMap.set(cu, c)); + targetCus.push(...cus); + } + for (let pl of sourceCus) { + let plMidParam = pl.MidParam; + let plDir = pl.GetFistDeriv(plMidParam).normalize(); + let index = targetCus.findIndex(cu => fastEqualCurve(cu, pl, 0.05)); + if (index !== -1) { + let cu = targetCus[index]; + isEqualNormal = equalv3(sourceOutline.Normal, targetMap.get(cu).Normal, 1e-3); + let cuMidParam = cu.MidParam; + let cuDir = cu.GetFistDeriv(cuMidParam).normalize(); + if (isEqualNormal === !equalv3(cuDir, plDir, 1e-3)) //不同向 + subtractList.push(pl); + targetCus.splice(index, 1); + continue; + } + if (targets.every(t => !fastCurveInCurve(t.Curve, pl))) + subtractList.push(pl); + } + //源对象没有被破坏 + let sourceNotBreak = subtractList.length === sourceCus.length; + for (let pl of targetCus) + if (fastCurveInCurve(sourceOutline, pl)) + subtractList.push(pl); + if (sourceNotBreak && subtractList.length === sourceCus.length) + return { subtractList: [sourceOutline], holes }; + return { subtractList, holes }; + } + /** + * 获得全部闭合曲线 + * @若传入二维曲线数据,将默认子数组为闭合曲线段 + */ + static GetAllContour(cus) { + if (cus.length === 0) + return []; + let cuGroups; + if (Array.isArray(cus[0])) + cuGroups = cus; + else + cuGroups = curveLinkGroup(cus); + let contours = []; + for (let g of cuGroups) + contours.push(Contour.CreateContour(g, false)); + return contours.filter(c => c !== undefined && !equaln(c.Area, 0, 1e-6)); + } + /** + * 合并曲线组成为多段线 + * @param cus 曲线组 + * @param [needLink=true] 需要解析成首尾连接状态 + * @returns 单一曲线,如果返回超过1个,其他的将被遗弃. + */ + static Combine(cus, needLink = true, tolerance = 1e-3) { + if (cus.length === 0) + return undefined; + let groups = needLink ? curveLinkGroup(cus) : [cus]; + for (let g of groups) { + if (g.length === 1) + return g[0].Clone(); + else { + if (cache.has(g)) + return cache.get(g); + let gclone = g.map(c => c.Clone()); + arrayRemoveDuplicateBySort(gclone, (cu1, cu2) => cu1.Join(cu2, false, tolerance) === Status.True); + if (gclone.length > 1 && gclone[0].Join(arrayLast(gclone), false, tolerance)) + gclone.pop(); + let pl = Polyline.Combine(gclone, tolerance); + cache.set(g, pl); + return pl; + } + } + } + get Shape() { + return this._Curve.Shape; + } + CuInOutline(targetCur) { + return isTargetCurInOrOnSourceCur(this._Curve, targetCur); + } + Equal(tar) { + return equalCurve(this._Curve, tar._Curve); + } +} +/** + * 对于轮廓切割后的曲线判断相同,使用这个函数进行快速判断 + */ +function fastEqualCurve(c1, c2, tolerance = 1e-3) { + let sp1 = c1.StartPoint; + let ep1 = c1.EndPoint; + let sp2 = c2.StartPoint; + let ep2 = c2.EndPoint; + if (!((equalv3(sp1, sp2, tolerance) && equalv3(ep1, ep2, tolerance)) + || (equalv3(sp1, ep2, tolerance) && equalv3(ep1, sp2, tolerance)))) + return false; + return equalv3(c1.Midpoint, c2.Midpoint, tolerance); +} +//对于双多段线互相切割后的结果,快速判断曲线是否在另一条曲线内部 +//也许有一天这个中点算法需要改一下, 使用 src\Geometry\ExtrudeEdgeGeometry2.ts->CenterPoint 会比较稳妥 +function fastCurveInCurve(sourceCu, targetCu) { + return sourceCu.PtInCurve(targetCu.GetPointAtParam(targetCu.EndParam * 0.5)); +} +function fastCurveInCurve2(sourceCu, targetCu) { + return sourceCu.PtInCurve(targetCu.StartPoint) && + sourceCu.PtInCurve(targetCu.GetPointAtParam(targetCu.EndParam * 0.5)); +} + +class PlaneExt extends Plane$1 { + constructor(normal = new Vector3(0, 0, 1), constant) { + super(normal); + if (typeof constant === "number") + this.constant = constant; + else if (constant) + this.constant = -this.normal.dot(constant); + } + intersectLine(line, optionalTarget = new Vector3(), extendLine = false) { + let v1 = new Vector3(); + let direction = line.delta(v1); + let denominator = this.normal.dot(direction); + if (denominator === 0) { + // line is coplanar, return origin + if (this.distanceToPoint(line.start) === 0) { + return optionalTarget.copy(line.start); + } + // Unsure if this is the correct method to handle this case. + return undefined; + } + let t = -(line.start.dot(this.normal) + this.constant) / denominator; + //If you not extendLine,check intersect point in Line + if (!extendLine && (t < -1e-6 || t > 1)) { + return undefined; + } + return optionalTarget.copy(direction).multiplyScalar(t).add(line.start); + } + intersectRay(ray, optionalTarget, extendLine) { + // 从射线初始位置 + let line = new Line3(ray.origin.clone(), ray.origin.clone().add(ray.direction)); + return this.intersectLine(line, optionalTarget, extendLine); + } +} + +var Ellipse_1; +let Ellipse = Ellipse_1 = class Ellipse extends Curve { + constructor(center, radX = 1e-3, radY = 1e-3, angle = 0) { + super(); + this._startAngle = 0; + this._endAngle = Math.PI * 2; + center && this._Matrix.setPosition(center); + this._radX = radX; + this._radY = radY; + this._rotate = angle; + } + get StartParam() { + return 0; + } + get EndParam() { + return 1; + } + get StartPoint() { + return this.GetPointAtParam(0); + } + get EndPoint() { + return this.GetPointAtParam(1); + } + get Shape() { + let sp = new Shape$1(); + sp.ellipse(0, 0, this._radX, this._radY, this._startAngle, this._endAngle, false, this._rotate); + return sp; + } + get IsClose() { + return equaln(this.TotalAngle, Math.PI * 2); + } + get Center() { + return new Vector3().setFromMatrixPosition(this._Matrix); + } + set Center(v) { + this.WriteAllObjectRecord(); + this._Matrix.setPosition(v); + this.Update(); + } + get RadX() { + return this._radX; + } + set RadX(v) { + this.WriteAllObjectRecord(); + this._radX = v; + this.Update(); + } + get RadY() { + return this._radY; + } + set RadY(v) { + this.WriteAllObjectRecord(); + this._radY = v; + this.Update(); + } + get Rotation() { + return this._rotate; + } + set Rotation(v) { + this.WriteAllObjectRecord(); + this._rotate = v; + this.Update(); + } + get StartAngle() { + return this._startAngle; + } + get EndAngle() { + return this._startAngle; + } + set StartAngle(v) { + this.WriteAllObjectRecord(); + this._startAngle = v; + this.Update(); + } + set EndAngle(v) { + this.WriteAllObjectRecord(); + this._endAngle = v; + this.Update(); + } + get Length() { + let a = this._radX; + let b = this._radY; + return Math.PI * Math.abs(3 * (a + b) - Math.sqrt((3 * a + b) * (a + 3 * b))) * this.TotalAngle / Math.PI * 0.5; + } + get Area() { + let area = Math.PI * this._radX * this._radY; + let an = this._endAngle - this._startAngle; + if (an < 0) + an = Math.PI * 2 + an; + area *= an / Math.PI * 0.5; + let area2 = Math.abs(getDeterminantFor2V(AsVector2(this.StartPoint.sub(this.Center)), AsVector2(this.EndPoint.sub(this.Center)))) / 2; + if (an < Math.PI) + area -= area2; + else + area += area2; + return area; + } + get TotalAngle() { + let totolAngle = this._endAngle - this._startAngle; + if (totolAngle < 0) + totolAngle = Math.PI * 2 + totolAngle; + return totolAngle; + } + get BoundingBox() { + return new Box3().setFromPoints(this.GetGripPoints()); + } + PtInCurve(pt) { + let p = rotatePoint(pt.clone().sub(this.Center), -this.Rotation); + return p.x ** 2 / this.RadX ** 2 + p.y ** 2 / this.RadY ** 2 < 1; + } + PtOnCurve(pt) { + if (this.PtOnEllipse(pt)) { + let a = this.GetCircleAngleAtPoint(pt); + return a <= this.TotalAngle + 1e-6; + } + return false; + } + PtOnEllipse(pt) { + let p = rotatePoint(pt.clone().applyMatrix4(this.OCSInv), -this.Rotation); + return equaln(p.x ** 2 / this.RadX ** 2 + p.y ** 2 / this.RadY ** 2, 1, 1e-3); + } + GetPointAtParam(param) { + let an = this.TotalAngle * param + this._startAngle; + if (an > Math.PI) + an -= 2 * Math.PI; + let a = this.RadX; + let b = this.RadY; + let pt = new Vector3(a * Math.cos(an), b * Math.sin(an), 0); + pt.applyMatrix4(new Matrix4().makeRotationZ(this._rotate)); + return pt.applyMatrix4(this.OCS); + } + GetParamAtPoint(pt) { + if (!this.PtOnEllipse(pt)) { + return NaN; + } + let an = this.GetCircleAngleAtPoint(pt); + let par = an / this.TotalAngle; + if (this.IsClose || par < 1 + 1e-6) + return par; + else { + let diffPar = Math.PI * 2 / this.TotalAngle - 1; + if (par - 1 < diffPar / 2) + return par; + else + return par - 1 - diffPar; + } + } + GetPointAtDistance(distance) { + let param = distance / this.Length; + return this.GetPointAtParam(param); + } + GetDistAtParam(param) { + return this.Length * param; + } + GetDistAtPoint(pt) { + let param = this.GetParamAtPoint(pt); + return this.GetDistAtParam(param); + } + GetParamAtDist(d) { + return d / this.Length; + } + GetAngleAtParam(par) { + let pt = this.GetPointAtParam(par).applyMatrix4(this.OCSInv).applyMatrix4(new Matrix4().makeRotationZ(-this.Rotation)); + return angle(pt) + this._startAngle; + } + GetCircleAngleAtPoint(pt) { + pt = pt.clone().applyMatrix4(this.OCSInv); + let an = angle(pt) - this._rotate; + if (an < 0) + an = Math.PI * 2 - an; + if (an > Math.PI * 2) + an -= Math.PI * 2; + let dist = pt.length(); + let k = dist * Math.cos(an) / this._radX; + if (Math.abs(k) > 1) + k = Math.floor(Math.abs(k)) * Math.sign(k); + if (Math.abs(an) <= Math.PI) + an = Math.acos(k); + else + an = Math.PI * 2 - Math.acos(k); + an -= this._startAngle; + if (an < 0) + an = Math.PI * 2 + an; + return an; + } + GetFistDeriv(pt) { + if (typeof pt === "number") + pt = this.GetPointAtParam(pt); + else + pt = pt.clone(); + let refPts = this.GetGripPoints(); + let p = pt.clone().applyMatrix4(this.OCSInv).applyMatrix4(new Matrix4().makeRotationZ(-this._rotate)); + let vec = new Vector3(); + if (equalv3(pt, refPts[0])) + vec.set(0, 1, 0); + else if (equalv3(pt, refPts[1])) { + vec.set(0, -1, 0); + } + else if (p.y > 0) { + let k = -(this._radY ** 2 * p.x) / (this._radX ** 2 * p.y); + vec.set(-1, -k, 0); + } + else { + let k = -(this._radY ** 2 * p.x) / (this._radX ** 2 * p.y); + vec.set(1, k, 0); + } + vec.applyMatrix4(new Matrix4().makeRotationZ(this._rotate)); + return vec.applyMatrix4(new Matrix4().extractRotation(this.OCS)); + } + GetClosestPointTo(p, extend) { + //参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/ + let ro = new Matrix4().makeRotationZ(this._rotate); + let roInv = new Matrix4().getInverse(ro); + let pt = p.clone().applyMatrix4(this.OCSInv).setZ(0).applyMatrix4(roInv); + let px = pt.x; + let py = pt.y; + let t = angle(pt); + let a = this._radX; + let b = this._radY; + let x, y; + for (let i = 0; i < 3; i++) { + x = a * Math.cos(t); + y = b * Math.sin(t); + let ex = (a ** 2 - b ** 2) * Math.cos(t) ** 3 / a; + let ey = (b * b - a * a) * Math.sin(t) ** 3 / b; + let rx = x - ex; + let ry = y - ey; + let qx = px - ex; + let qy = py - ey; + let r = Math.sqrt(ry ** 2 + rx ** 2); + let q = Math.sqrt(qy ** 2 + qx ** 2); + let dc = r * Math.asin((rx * qy - ry * qx) / (r * q)); + let dt = dc / Math.sqrt(a * a + b * b - x * x - y * y); + t += dt; + } + let retPt = new Vector3(x, y).applyMatrix4(ro).applyMatrix4(this.OCS); + if (this.IsClose || extend) { + return retPt; + } + else if (this.PtOnCurve(retPt)) { + return retPt; + } + else { + let d1 = p.distanceToSquared(this.StartPoint); + let d2 = p.distanceToSquared(this.EndPoint); + return d1 < d2 ? this.StartPoint : this.EndPoint; + } + } + GetOffsetCurves(offsetDist) { + if ((offsetDist + Math.min(this._radX, this._radY)) > 0) { + let el = this.Clone(); + el.RadX = this._radX + offsetDist; + el.RadY = this._radY + offsetDist; + return [el]; + } + return []; + } + GetSplitCurves(param) { + let params; + if (param instanceof Array) { + params = param.filter(p => this.ParamOnCurve(p)); + params.sort((a1, a2) => a2 - a1); //从大到小 + } + else + params = [param]; + //补上最后一个到第一个的弧 + if (this.IsClose) + params.unshift(arrayLast(params)); + else { + params.unshift(1); + params.push(0); + } + arrayRemoveDuplicateBySort(params); + let anglelist = params.map(param => this.TotalAngle * param + this._startAngle); + let elllist = []; + for (let i = 0; i < anglelist.length - 1; i++) { + let sa = anglelist[i]; + let ea = anglelist[i + 1]; + let el = this.Clone(); + if (!equaln(sa, ea, 1e-6)) { + el.StartAngle = ea; + el.EndAngle = equaln(sa, 0) ? Math.PI * 2 : sa; + elllist.push(el); + } + } + return elllist; + } + Join(el) { + if (this.IsClose || el.IsClose || !this.IsCoplaneTo(el) || !equalv3(el.Center, this.Center)) + return Status.False; + let status = Status.False; + if (equaln(this._endAngle, this._startAngle)) { + this.EndAngle = this._endAngle; + status = Status.True; + } + else if (equaln(this._startAngle, el._endAngle)) { + this.StartAngle = el._startAngle; + status = Status.True; + } + if (status === Status.True && !this.IsClose && equaln(this._startAngle, this._endAngle)) { + this.StartAngle = 0; + this.EndAngle = Math.PI * 2; + } + return status; + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + { + let pts = this.GetGripPoints(); + return pts; + } + case ObjectSnapMode.Cen: + return [this.Center]; + case ObjectSnapMode.Nea: + { + return getArcOrCirNearPts(this, pickPoint, viewXform); + } + case ObjectSnapMode.Per: + if (lastPoint) { + if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10)) + return []; + return [this.GetClosestPointTo(lastPoint, false)]; + } + case ObjectSnapMode.Tan: + { + //TODO:过某点获取椭圆全部切点 + if (lastPoint) { + return getTanPtsOnEllipse(); + } + } + default: + return []; + } + } + IntersectWith2(curve, intType) { + //TODO:优化椭圆和椭圆,椭圆和圆相交 + if (curve instanceof Line) { + return SwapParam(IntersectEllipseAndLine(curve, this, reverseIntersectOption(intType))); + } + else if (curve instanceof Circle || curve instanceof Arc) { + return IntersectEllipseAndCircleOrArc(this, curve, intType); + } + else if (curve instanceof Polyline) { + return SwapParam(IntersectPolylineAndCurve(curve, this, intType)); + } + else if (curve instanceof Ellipse_1) { + return IntersectEllipse(this, curve); + } + else + return []; + } + InitDrawObject(renderType = RenderType.Wireframe) { + let line = new Line$1(this.UpdateGeometry(), ColorMaterial.GetLineMaterial(this._Color)); + this.UpdateDrawObject(renderType, line); + return line; + } + UpdateDrawObject(type, obj) { + let geo = obj.geometry; + this.UpdateGeometry(geo); + } + //更新Geometry + UpdateGeometry(geo) { + if (!geo) + geo = new BufferGeometry(); + let curve = this.Shape; + geo.setFromPoints(curve.getPoints(60)); + return geo; + } + GetStretchPoints() { + return this.GetGripPoints(); + } + GetGripPoints() { + let tmpMat4 = new Matrix4().makeRotationZ(this.Rotation); + let pts = [ + new Vector3(this._radX, 0), + new Vector3(-this._radX, 0), + new Vector3(0, this._radY), + new Vector3(0, -this._radY) + ].map(p => p.applyMatrix4(tmpMat4).applyMatrix4(this.OCS)); + if (!equaln(0, this._startAngle)) + pts.push(this.StartPoint); + if (!equaln(0, this._endAngle)) + pts.push(this.EndPoint); + pts.push(this.Center); + return pts; + } + MoveStretchPoints(indexList, vec) { + this.ApplyMatrix(MoveMatrix(vec)); + } + MoveGripPoints(indexList, vec) { + let pts = this.GetStretchPoints(); + if (indexList.length > 0) { + let p = pts[indexList[0]].clone(); + p.add(vec); + if (indexList[0] <= 1) + this.RadX = p.distanceTo(this.Center); + else if (indexList[0] <= 3) + this.RadY = p.distanceTo(this.Center); + else { + let p1 = pts[indexList[0]]; + //TODO:跟cad不一致待优化 + if (equalv3(p1, this.StartPoint)) { + let v1 = p1.clone().sub(this.Center); + let v2 = p.clone().sub(this.Center); + let an = angleTo(v1, v2); + this.StartAngle = this.StartAngle + an; + } + else if (equalv3(p1, this.EndPoint)) { + let v1 = p1.clone().sub(this.Center); + let v2 = p.clone().sub(this.Center); + let an = angleTo(v2, v1); + this.EndAngle = this.EndAngle + an; + } + else + this.Center = p; + } + } + } + Convert2Polyline(count = 0) { + const MIN_LEN = 80; + const par = this.TotalAngle / Math.PI * 0.5; + if (!count) { + count = Math.floor(this.Length / par / MIN_LEN); + count = MathUtils.clamp(count, 15, 80); + } + count = Math.floor(count * par); + if ((count & 1) === 0) + count++; + let pts = this.Shape.getPoints(count); + if (this.IsClose) + pts.pop(); + let pl = Pts2Polyline(pts, this.IsClose); + pl.ApplyMatrix(this.OCS); + if (this.IsClose) + pl.CloseMark = true; + return pl; + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); + this._radX = file.Read(); + this._radY = file.Read(); + this._rotate = file.Read(); + this._startAngle = file.Read(); + this._endAngle = file.Read(); + this.Update(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(1); + file.Write(this.RadX); + file.Write(this.RadY); + file.Write(this.Rotation); + file.Write(this._startAngle); + file.Write(this._endAngle); + } +}; +Ellipse = Ellipse_1 = __decorate([ + Factory +], Ellipse); + +var Line_1; +let Line = Line_1 = class Line extends Curve { + constructor(_StartPoint = new Vector3, _EndPoint = new Vector3) { + super(); + this._StartPoint = _StartPoint; + this._EndPoint = _EndPoint; + } + get Is2D() { + return super.Is2D && equaln(this._StartPoint.z, 0) && equaln(this._EndPoint.z, 0); + } + get Shape() { + return new Shape$1([AsVector2(this._StartPoint), AsVector2(this._EndPoint)]); + } + Z0() { + this.WriteAllObjectRecord(); + this.StartPoint = this.StartPoint.setZ(0); + this.EndPoint = this.EndPoint.setZ(0); + return this; + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + this.StartPoint = this.StartPoint.applyMatrix4(m); + this.EndPoint = this.EndPoint.applyMatrix4(m); + return this; + } + ApplyMirrorMatrix(m) { + this.WriteAllObjectRecord(); + let sp = this.StartPoint; + let ep = this.EndPoint; + reviseMirrorMatrix(this._Matrix); + this.StartPoint = sp; + this.EndPoint = ep; + return this; + } + InitDrawObject(renderType = RenderType.Wireframe) { + let geo = BufferGeometryUtils.CreateFromPts([this._StartPoint, this._EndPoint]); + if (renderType === RenderType.WireframePrint) { + var geometry = new LineGeometry(); + geometry.setPositions(geo.attributes.position.array); + return new Line2(geometry, ColorMaterial.PrintLineMatrial); + } + return new Line$1(geo, ColorMaterial.GetLineMaterial(this.ColorIndex)); + } + UpdateDrawObject(type, lineObj) { + BufferGeometryUtils.UpdatePts(lineObj.geometry, [this._StartPoint, this._EndPoint]); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return [this.StartPoint, this.EndPoint]; + case ObjectSnapMode.Mid: + return [this.GetPointAtParam(0.5)]; + case ObjectSnapMode.Nea: + { + let derv = this.GetFistDeriv(0).normalize(); + let viewNormal = new Vector3().fromArray(viewXform.elements, 2 * 3); + //平行不捕捉 + if (isParallelTo(viewNormal, derv)) + return []; + let fNormal = new Vector3().crossVectors(viewNormal, derv); + fNormal.crossVectors(derv, fNormal); + let plane = new PlaneExt(fNormal, this.StartPoint); + let plocal = plane.intersectLine(new Line3(pickPoint, pickPoint.clone().add(viewNormal)), new Vector3(), true); + let pclosest = this.GetClosestPointTo(plocal, false); + return [pclosest]; + } + case ObjectSnapMode.Ext: + return [this.GetClosestPointTo(pickPoint, true)]; + case ObjectSnapMode.Per: + if (lastPoint) { + let { closestPt, param } = this.GetClosestAtPoint(lastPoint, true); + if (this.ParamOnCurve(param)) + return [closestPt]; + } + } + return []; + } + GetGripPoints() { + return [this.StartPoint, this.GetPointAtParam(0.5), this.EndPoint]; + } + MoveGripPoints(indexList, vec) { + this.WriteAllObjectRecord(); + for (let index of indexList) { + if (index === 0) + this.StartPoint = this.StartPoint.add(vec); + else if (index === 2) + this.EndPoint = this.EndPoint.add(vec); + else { + let m = MoveMatrix(vec); + this.ApplyMatrix(m); + } + } + } + GetStretchPoints() { + return [this.StartPoint, this.EndPoint]; + } + MoveStretchPoints(indexList, vec) { + this.WriteAllObjectRecord(); + for (let index of indexList) { + if (index === 0) + this.StartPoint = this.StartPoint.add(vec); + else + this.EndPoint = this.EndPoint.add(vec); + } + } + GetFistDeriv(param) { + return this.EndPoint.sub(this.StartPoint); + } + IntersectWith2(curve, intType, tolerance = 1e-4) { + if (curve instanceof Line_1) { + return IntersectLineAndLine(this, curve, intType, tolerance); + } + if (curve instanceof Arc) { + return IntersectLineAndArc(this, curve, intType, tolerance); + } + if (curve instanceof Circle) { + return IntersectLineAndCircle(this, curve, intType, tolerance); + } + if (curve instanceof Polyline) { + return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType), tolerance)); + } + if (curve instanceof Ellipse) + return IntersectEllipseAndLine(this, curve, intType, tolerance); + //其他的尚未实现. + return []; + } + //Param + GetPointAtParam(param) { + return this.StartPoint.add(this.GetFistDeriv(0).multiplyScalar(param)); + } + GetParamAtPoint(pt) { + let { closestPt, param } = this.GetClosestAtPoint(pt, true); + if (!equalv3(closestPt, pt, 1e-5)) + return NaN; + return param; + } + GetParamAtDist(d) { + return d / this.Length; + } + GetPointAtDistance(distance) { + return this.GetPointAtParam(this.GetParamAtDist(distance)); + } + GetDistAtParam(param) { + return this.Length * param; + } + GetDistAtPoint(pt) { + return this.GetDistAtParam(this.GetParamAtPoint(pt)); + } + GetSplitCurves(param) { + let params = this.SplitParamSort(param); + let pts = params.map(param => this.GetPointAtParam(param)); + let ret = new Array(); + if (pts.length >= 2) { + for (let i = 0; i < pts.length - 1; i++) { + let newLine = this.Clone(); + newLine.ColorIndex = this.ColorIndex; + newLine.StartPoint = pts[i]; + newLine.EndPoint = pts[i + 1]; + ret.push(newLine); + } + } + return ret; + } + GetParamAtPoint2(pt) { + let { param } = this.GetClosestAtPoint(pt, true); + return param; + } + //点在曲线上,已经确定点在曲线的延伸线上 + PtOnCurve3(p, fuzz = 1e-6) { + let { param } = this.GetClosestAtPoint(p, true); + return this.ParamOnCurve(param, fuzz); + } + GetClosestAtPoint(pt, extend) { + let sp = this.StartPoint; + let ep = this.EndPoint; + if (equalv3(pt, sp, 1e-8)) + return { closestPt: sp, param: 0 }; + else if (equalv3(pt, ep, 1e-8)) + return { closestPt: ep, param: 1 }; + let direction = this.GetFistDeriv(0); + let length = direction.length(); + if (length === 0) { + let param = NaN; + if (equalv3(pt, this.StartPoint, 1e-6)) + param = 0; + return { closestPt: sp, param: param }; + } + direction.divideScalar(length); + let diff = pt.clone().sub(sp); + let param = direction.dot(diff); + let closestPt; + if (extend) + closestPt = sp.add(direction.multiplyScalar(param)); + else if (param < 0) { + closestPt = sp; + param = 0; + } + else if (param > length) { + closestPt = this.EndPoint; + param = length; + } + else + closestPt = sp.add(direction.multiplyScalar(param)); + return { + closestPt: closestPt, + param: param / length + }; + } + GetClosestPointTo(pt, extend) { + return this.GetClosestAtPoint(pt, extend).closestPt; + } + Extend(newParam) { + this.WriteAllObjectRecord(); + if (newParam < this.StartParam) { + this.StartPoint = this.GetPointAtParam(newParam); + } + else if (newParam > this.EndParam) { + this.EndPoint = this.GetPointAtParam(newParam); + } + } + Join(cu, allowGap = false, tolerance = 1e-5) { + if (cu instanceof Line_1) { + //平行 + if (!isParallelTo(this.GetFistDeriv(0).normalize(), cu.GetFistDeriv(0).normalize())) + return Status.False; + let sp = cu.StartPoint; + let { closestPt: cp1, param: param1 } = this.GetClosestAtPoint(sp, true); + if (!equalv3(sp, cp1, tolerance)) //点在曲线上,允许较低的精度 + return Status.False; + let ep = cu.EndPoint; + let { closestPt: cp2, param: param2 } = this.GetClosestAtPoint(ep, true); + if (!equalv3(ep, cp2, tolerance)) + return Status.False; + if (param1 > param2) { + [param1, param2] = [param2, param1]; + [sp, ep] = [ep, sp]; + } + if (allowGap || Math.max(0, param1) < Math.min(1, param2) + tolerance / this.Length) //这里的容差是值容差,但是我们用它来判断参数,所以进行转换 + { + if (param1 < 0) + this.StartPoint = sp; + if (param2 > 1) + this.EndPoint = ep; + return Status.True; + } + } + return Status.False; + } + Reverse() { + this.WriteAllObjectRecord(); + [this._StartPoint, this._EndPoint] = [this._EndPoint, this._StartPoint]; + return this; + } + GetOffsetCurves(offsetDist) { + let derv = this.GetFistDeriv(0).normalize().multiplyScalar(offsetDist); + derv.applyMatrix4(new Matrix4().makeRotationAxis(this.Normal, -Math.PI / 2)); + let newLine = this.Clone(); + newLine.StartPoint = this.StartPoint.add(derv); + newLine.EndPoint = this.EndPoint.add(derv); + return [newLine]; + } + get BoundingBox() { + return new Box3().setFromPoints([this.StartPoint, this.EndPoint]); + } + get StartParam() { + return 0; + } + get EndParam() { + return 1; + } + //属性 + get Length() { return this._StartPoint.distanceTo(this._EndPoint); } + //#region -----------------------------File----------------------------- + //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 + //对象从文件中读取数据,初始化自身 + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + this._StartPoint.fromArray(file.Read()); + this._EndPoint.fromArray(file.Read()); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(1); //ver + file.Write(this._StartPoint.toArray()); + file.Write(this._EndPoint.toArray()); + } + //#endregion-----------------------------File End----------------------------- + //#region 属性 + set StartPoint(p) { + this.WriteAllObjectRecord(); + this._StartPoint.copy(p).applyMatrix4(this.OCSInv); + this.Update(); + } + get StartPoint() { + return this._StartPoint.clone().applyMatrix4(this.OCS); + } + get EndPoint() { + return this._EndPoint.clone().applyMatrix4(this.OCS); + } + set EndPoint(p) { + this.WriteAllObjectRecord(); + this._EndPoint.copy(p).applyMatrix4(this.OCSInv); + this.Update(); + } +}; +Line = Line_1 = __decorate([ + Factory +], Line); + +class CurveTreeNode { + constructor(curve, box) { + this.curve = curve; + this.box = box || curve.BoundingBox; + } + TrimBy(contour, box) { + if (IntersectsBox(box, this.box)) { + if (this.children !== undefined) { + for (let c of this.children) + c.TrimBy(contour, box); + } + else { + if (contour.Curve instanceof Circle && this.curve instanceof Arc) { + if (equalv3(contour.Curve.Center, this.curve.Center)) { + if (contour.Curve.Radius > this.curve.Radius + 1e-4) + this.children = []; + return; + } + } + //交点参数列表 + let iParams = this.curve.IntersectWith(contour.Curve, IntersectOption.OnBothOperands) + .map(p => this.curve.GetParamAtPoint2(p)); + let cus = this.curve.GetSplitCurves(iParams); + if (cus.length === 0) { + let p = this.curve.GetPointAtParam(0.5); + if (box.containsPoint(p) && (contour.Curve.PtInCurve(p) && !contour.Curve.PtOnCurve(p))) + this.children = []; + } + else { + this.children = []; + for (let c of cus) { + let p = c.GetPointAtParam(0.5); + if (CurveIsFine(c) && (!(box.containsPoint(p) && contour.Curve.PtInCurve(p)) || contour.Curve.PtOnCurve(p))) + this.children.push(new CurveTreeNode(c)); + } + if (this.children.length === cus.length) + this.children = undefined; + } + } + } + } + get Nodes() { + if (!this.children) + return [this]; + else { + let cus = []; + for (let c of this.children) + cus.push(...c.Nodes); + return cus; + } + } +} +class OffsetPolyline { + constructor(_Polyline, _OffsetDist, _ToolPath = false, _OffsetDistSq = (_OffsetDist ** 2) * 2.1 //对直角走刀不进行圆弧过度 + ) { + this._Polyline = _Polyline; + this._OffsetDist = _OffsetDist; + this._ToolPath = _ToolPath; + this._OffsetDistSq = _OffsetDistSq; + } + Do() { + this._OffsetDistSign = Math.sign(this._OffsetDist); + this._TrimPolylineContours = []; + this._TrimCircleContours = []; + this._TrimArcContours = []; + this._RetCurves = []; + this._CurveTreeNodes = []; + this.InitSubCurves(); + if (this._SubCurves.length === 0) + return this._RetCurves; + this.GeneralCirclesAndVertexs(); + this.OffsetSubCurves(); + this.LinkSubCurves(); + if (this._SubOffsetedCurves.length === 0) { + this._SubOffsetedCurves.push({ curve: this._Circles[0], index: 0, paddingCurve: this._Circles.slice(1) }); + this._TrimPolylineContours.push(...this._Circles.map(c => Contour.CreateContour(c, false)), ...this._SubCurves.map(c => Contour.CreateContour([c, new Line(c.StartPoint, c.EndPoint)], false))); + } + else + this.GeneralTrimContours(); + this.TrimByContours(); + this.FilterInvalidCurve(); + this.JoinCollinear(); + this.LinkResultPolyline(); + return this._RetCurves; + } + InitSubCurves() { + this._CacheOCS = this._Polyline.OCS; + this._IsClose = this._Polyline.IsClose; + this._Polyline.OCS = IdentityMtx4; + this._SubCurves = this._Polyline.Explode().filter(c => c.Length > 1e-4); + this._Polyline.OCS = this._CacheOCS; + return this; + } + GeneralCirclesAndVertexs() { + this._Vertexs = this._SubCurves.map(c => c.StartPoint); + let lastCu = arrayLast(this._SubCurves); + if (!equalv3(lastCu.EndPoint, this._Vertexs[0], 1e-3)) + this._Vertexs.push(lastCu.EndPoint); + let radius = Math.abs(this._OffsetDist); + this._Circles = this._Vertexs.map(p => new Circle(p, radius)); + } + OffsetSubCurves() { + this._SubOffsetedCurves = []; + for (let index = 0; index < this._SubCurves.length; index++) { + let curveOld = this._SubCurves[index]; + if (curveOld.Length > 1e-6) { + let curve = curveOld.GetOffsetCurves(this._OffsetDist)[0]; + if (curve) + this._SubOffsetedCurves.push({ curve, index }); + else + this._TrimArcContours.push(Contour.CreateContour([curveOld, new Line(curveOld.StartPoint, curveOld.EndPoint)], false)); + } + } + } + //连接(延伸)曲线,或者补(圆弧,直线) + LinkSubCurves() { + let count = this._SubOffsetedCurves.length; + if (!this._IsClose) + count--; + for (let i = 0; i < count; i++) { + let curveResNow = this._SubOffsetedCurves[i]; + let iNext = FixIndex(i + 1, this._SubOffsetedCurves); + let curveResNext = this._SubOffsetedCurves[iNext]; + let curveNow = curveResNow.curve; + let curveNext = curveResNext.curve; + let isNeighbor = FixIndex(curveResNow.index + 1, this._SubCurves) === curveResNext.index; + if (isNeighbor) { + let sp = curveNow.EndPoint; + let ep = curveNext.StartPoint; + //直连 + if (equalv3(sp, ep, 1e-3)) + continue; + let iPts = curveNow.IntersectWith(curveNext, IntersectOption.ExtendBoth); + let tPts = iPts.filter(p => curveNow.PtOnCurve3(p) && curveNext.PtOnCurve3(p)); + let code = EntityEncode2(curveNow, curveNext); + let tp; + if (code === 1) { + if (tPts.length > 0) //不走刀或者有真交点 this._ToolPath === false || + tp = iPts[0]; + else { + if (iPts.length > 0 && curveNow.GetParamAtPoint(iPts[0]) > 1) { + let refP = this._Vertexs[curveResNext.index]; + let distSq = iPts[0].distanceToSquared(refP); + if (this._ToolPath && distSq > this._OffsetDistSq) { + curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)]; + this._TrimCircleContours.push(this._Circles[curveResNext.index]); + } + else + tp = iPts[0]; + } + // else + // curveResNow.paddingCurve = [new Line(sp, ep)]; + } + } + else { + let refP = this._Vertexs[curveResNext.index]; + if (tPts.length > 0) //ipts = 1 or ipts = 2 + tp = SelectNearP(iPts, refP); + else //补单圆 或者尝试连接 + { + let arc = this.CreateArc(refP, sp, ep); + if (iPts.length > 0 && !this._ToolPath && this.IsSharpCorner(curveResNow, curveResNext, refP)) { + //设置新的连接点,并且备份旧点 + let oldp; + if (curveResNow.sp) { + oldp = curveNow.StartPoint; + curveNow.StartPoint = curveResNow.sp; + } + let oldp2; + if (curveResNext.ep) { + oldp2 = curveNext.EndPoint; + curveNext.EndPoint = curveResNext.ep; + } + let p; + if (code === 2 && iPts.length === 2) { + let c = curveNow; + let minArc = new Arc(c.Center, c.Radius, c.EndAngle, 0, c.IsClockWise); + let p1 = iPts[0]; + let a1 = minArc.GetAngleAtPoint(p1); + let anAll1 = c.ParamOnCurve(c.GetParamAtAngle(a1)) ? Infinity : minArc.ComputeAnlge(a1); + let p2 = iPts[1]; + let a2 = minArc.GetAngleAtPoint(p2); + let anAll2 = c.ParamOnCurve(c.GetParamAtAngle(a2)) ? Infinity : minArc.ComputeAnlge(a2); + if (anAll2 < anAll1) + p = p2; + else + p = p1; + } + else + p = SelectNearP(iPts, refP); + let onPre; + let param = curveNow.GetParamAtPoint2(p); + if (curveNow instanceof Line) + onPre = param > 1; + else + onPre = param < 0 || param > 1; + let onNext = false; + if (onPre) { + let param2 = curveNext.GetParamAtPoint2(p); + if (curveNext instanceof Line) + onNext = param2 < 0; + else + onNext = param2 < 0 || param2 > 1; + } + if (curveResNow.sp) + curveNow.StartPoint = oldp; + if (curveResNext.ep) + curveNext.EndPoint = oldp2; + if (onPre && onNext) + tp = p; + else + curveResNow.paddingCurve = [arc]; + } + else + curveResNow.paddingCurve = [arc]; + this._TrimCircleContours.push(this._Circles[curveResNext.index]); + } + } + if (tp) { + curveResNow.ep = tp; + curveResNext.sp = tp; + curveResNow.nextArc = curveNext; + curveResNext.preArc = curveNow; + } + } + else { + let padCirs = []; + for (let s = FixIndex(curveResNow.index + 1, this._Circles);; s = FixIndex(s + 1, this._Circles)) { + let c = this._Circles[s]; + this._TrimCircleContours.push(c); + padCirs.push(c); + if (s === curveResNext.index) + break; + } + curveResNow.paddingCurve = padCirs; + } + } + } + IsSharpCorner(curveResNow, curveResNext, refP) { + let v1 = this._SubCurves[curveResNow.index].GetPointAtParam(0.9); + let v2 = this._SubCurves[curveResNext.index].GetPointAtParam(0.1); + v1.subVectors(refP, v1); + v2.sub(refP); + v1.cross(v2); + return Math.sign(v1.z) === this._OffsetDistSign; + } + GeneralTrimContours() { + for (let d of this._SubOffsetedCurves) { + let cu2 = d.curve; + if (d.sp && d.ep) { + let param1 = cu2.GetParamAtPoint(d.sp); + let param2 = cu2.GetParamAtPoint(d.ep); + if (cu2.ParamOnCurve(param1) && cu2.ParamOnCurve(param2) && param1 > param2) + [d.sp, d.ep] = [d.ep, d.sp]; + } + if (d.sp) + cu2.StartPoint = d.sp; + if (d.ep) + cu2.EndPoint = d.ep; + //这是极端情况,圆弧被压缩成0长度圆弧,本质是空圆弧(我们会在下面判断它)(因为精度的问题) + //因为精度的问题,这种0圆心角的圆弧会被当成全圆,但是偏移算法中,应该不可能出现全圆弧的圆弧,所以我们压扁它 + if (cu2 instanceof Arc + && equaln(cu2.StartAngle, cu2.EndAngle, 1e-6) + // && !equaln((this._SubCurves[d.index]).AllAngle, Math.PI * 2, 1e-3) 应该不会出现 + ) { + if (cu2.IsClockWise) + cu2.StartAngle = cu2.EndAngle + 1e-6; + else + cu2.EndAngle = cu2.StartAngle + 1e-6; + } + } + for (let d of this._SubOffsetedCurves) { + let cu1 = this._SubCurves[d.index]; + let cu2 = d.curve; + let [p1, p2, p3, p4] = [cu1.StartPoint, cu2.StartPoint, cu1.EndPoint, cu2.EndPoint]; + let l1 = new Line(p1, p2); + let l2 = new Line(p3, p4); + let ipts = l1.IntersectWith(l2, IntersectOption.OnBothOperands, 1e-8); + if (ipts.length > 0) { + let p = ipts[0]; + l1.EndPoint = p; + l2.EndPoint = p; + let cus = [cu1, l1, l2]; + let contour = Contour.CreateContour(cus, false); + if (contour) { + this._TrimPolylineContours.push(contour); + continue; + } + else { + console.error("未预料到的错误,构建轮廓失败" + this._OffsetDist); + } + } + //真理1:针脚线不可能同时被两个圆弧所切割 + let l1Intact = true; + let l2Intact = true; + if (cu2 instanceof Arc) { + if (Math.sign(cu2.Bul) !== this._OffsetDistSign) { + let ipts1 = cu2.IntersectWith(l1, IntersectOption.OnBothOperands); + let ipts2 = cu2.IntersectWith(l2, IntersectOption.OnBothOperands); + let sp; + let ep; + if (ipts1.length === 2) + sp = SelectNearP(ipts1, p1); + if (ipts2.length === 2) + ep = SelectNearP(ipts2, p3); + if (sp || ep) + cu2 = cu2.Clone(); + if (sp) { + l1.EndPoint = sp; + cu2.StartPoint = sp; + l1Intact = false; + } + if (ep) { + l2.EndPoint = ep; + cu2.EndPoint = ep; + l2Intact = false; + } + } + } + let l1PadArc; + let l2PadArc; + //真理2:隔壁的圆弧不可能破坏当前的圆弧,只能破坏当前的针脚 + if (l1Intact && d.preArc && d.preArc instanceof Arc) { + let a = d.preArc; + if (Math.sign(a.Bul) !== this._OffsetDistSign && a.AllAngle > 1e-6) { + let ipts = a.IntersectWith(l1, IntersectOption.OnBothOperands); + if (ipts.length === 2) { + let sp = SelectNearP(ipts, p1); + l1.EndPoint = sp; + l1PadArc = a.Clone(); + l1PadArc.StartPoint = sp; + } + } + } + if (l2Intact && d.nextArc && d.nextArc instanceof Arc) { + let a = d.nextArc; + if (Math.sign(a.Bul) !== this._OffsetDistSign && a.AllAngle > 1e-6) { + let ipts = a.IntersectWith(l2, IntersectOption.OnBothOperands); + if (ipts.length === 2) { + let ep = SelectNearP(ipts, p3); + l2.EndPoint = ep; + l2PadArc = a.Clone(); + l2PadArc.EndPoint = ep; + } + } + } + let pl = new Polyline(); + let cus = [cu1, l1]; + if (l1PadArc) + cus.push(l1PadArc); + cus.push(cu2, l2); + if (l2PadArc) + cus.push(l2PadArc); + for (let c of cus) + pl.Join(c); + let contour = Contour.CreateContour(pl, false); + if (contour) + this._TrimPolylineContours.push(contour); + else + console.error("未预料到的错误,构建轮廓失败" + this._OffsetDist); + } + if (!this._IsClose) { + if (this._TrimCircleContours[0] !== this._Circles[0]) + this._TrimCircleContours.push(this._Circles[0]); + let lastTrimCircle = arrayLast(this._TrimCircleContours); + let lastCircle = arrayLast(this._Circles); + if (lastTrimCircle !== lastCircle) + this._TrimCircleContours.push(lastCircle); + if (this._SubOffsetedCurves[0].index !== 0) + this._TrimCircleContours.push(this._Circles[this._SubOffsetedCurves[0].index]); + let lastIndex = this._Circles.length - 1; + let lastD = arrayLast(this._SubOffsetedCurves); + if (lastIndex !== lastD.index) + this._TrimCircleContours.push(this._Circles[lastD.index + 1]); + } + this._TrimPolylineContours.push(...this._TrimCircleContours.map(c => Contour.CreateContour(c, false)), ...this._TrimArcContours); + } + // 通过构建的轮廓对偏移曲线进行裁剪 + TrimByContours() { + for (let d of this._SubOffsetedCurves) { + let c = d.curve; + if (CurveIsFine(c)) + this._CurveTreeNodes.push(new CurveTreeNode(c)); + if (d.paddingCurve) + this._CurveTreeNodes.push(...d.paddingCurve.map(c => new CurveTreeNode(c))); + } + for (let i = 0; i < this._TrimPolylineContours.length; i++) { + let c = this._TrimPolylineContours[i]; + let cbox = c.BoundingBox; + for (let curveNode of this._CurveTreeNodes) + curveNode.TrimBy(c, cbox); + } + } + //过滤方向相反和0长度线 + FilterInvalidCurve() { + this._CurveTrimedTreeNodes = []; + for (let n of this._CurveTreeNodes) { + let ns = n.Nodes; + for (let sn of ns) { + if (this.CheckPointDir(sn.curve.GetPointAtParam(0.5))) + this._CurveTrimedTreeNodes.push(sn); + } + } + } + //合并共线 + JoinCollinear() { + for (let i = 0; i < this._CurveTrimedTreeNodes.length; i++) { + let n = this._CurveTrimedTreeNodes[i]; + if (n.used) + continue; + let sp = n.curve.StartPoint; + for (let j = i + 1; j < this._CurveTrimedTreeNodes.length; j++) { + let n2 = this._CurveTrimedTreeNodes[j]; + if (n2.used) + continue; + let status = n.curve.Join(n2.curve); + if (status === Status.ConverToCircle) { + n.used = true; + n2.used = true; + let circle = new Circle(n.curve.Center, n.curve.Radius); + n.curve = circle; + this._RetCurves.push(ConverCircleToPolyline(circle).ApplyMatrix(this._CacheOCS)); + } + else if (status === Status.True) { + if (equalv3(sp, n.curve.StartPoint)) + n2.used = true; + else { + n.used = true; + n2.curve = n.curve; + break; + } + } + } + } + } + //连接结果曲线,返回最终多段线 + LinkResultPolyline() { + let used = new Set(); + let cuMap = new CurveMap(1); + for (let n of this._CurveTrimedTreeNodes) { + if (!n.used) + cuMap.AddCurveToMap(n.curve); + } + let preP; + let searchNext = (s, pl) => { + let minDist = Infinity; + let minR; + for (let r of s.routes) { + if (used.has(r.curve)) + continue; + if (preP) { + let d = r.s.distanceToSquared(preP); + if (d < minDist) { + minR = r; + minDist = d; + } + } + else { + minR = r; + break; + } + } + if (minR) { + used.add(minR.curve); + preP = minR.e; + let status = pl.Join(minR.curve, false, 5e-2); + if (status !== Status.True) + console.warn("连接失败"); + return minR.to; + } + }; + for (let s of cuMap.Stands) { + preP = undefined; + let pl = new Polyline(); + let ss = s; + while (ss && !pl.IsClose) + ss = searchNext(ss, pl); + ss = s; + while (ss && !pl.IsClose) + ss = searchNext(ss, pl); + if (pl.NumberOfVertices > 1) { + //避免0长度的线 + if (pl.NumberOfVertices === 2 && pl.Length < 1e-6) + continue; + let d = pl.LineData; + let ld = arrayLast(d); + if (equalv2(d[0].pt, ld.pt, 1e-2)) + ld.pt.copy(d[0].pt); + this._RetCurves.push(pl.ApplyMatrix(this._CacheOCS)); + } + } + } + CheckPointDir(pt) { + return this.GetPointAtCurveDir(pt) === this._OffsetDistSign; + } + GetPointAtCurveDir(pt) { + let minIndex = Infinity; + let minDist = Infinity; + let minCp; + for (let i = 0; i < this._SubCurves.length; i++) { + let c = this._SubCurves[i]; + let cp = c.GetClosestPointTo(pt, false); + if (equalv3(cp, pt, 1e-5)) + return 0; + let dist = cp.distanceToSquared(pt); + if (dist < minDist) { + minDist = dist; + minIndex = i; + minCp = cp; + } + } + let c = this._SubCurves[minIndex]; + let param = c.GetParamAtPoint(minCp); + if (equaln(param, 0) && ((minIndex === 0) ? this._IsClose : true)) { + let preIndex = FixIndex(minIndex - 1, this._SubCurves); + let preCurve = this._SubCurves[preIndex]; + if (!equalv3(c.GetFistDeriv(0).normalize(), preCurve.GetFistDeriv(1).normalize())) { + let p = c.StartPoint; + let l1 = c.Length; + let l2 = preCurve.Length; + let minLength = Math.min(l1, l2) * 0.2; + let nextP; + let preP; + if (c instanceof Arc) + nextP = c.GetPointAtDistance(minLength); + else + nextP = c.EndPoint; + if (preCurve instanceof Arc) + preP = preCurve.GetPointAtDistance(l2 - minLength); + else + preP = preCurve.StartPoint; + let arc = new Arc(p, 1, angle(preP.sub(p)), angle(nextP.sub(p))); + let dir = arc.PtOnCurve3(pt) ? -1 : 1; + return dir; + } + } + else if (equaln(param, 1) && ((minIndex === this._SubCurves.length - 1) ? this._IsClose : true)) { + let nextIndex = FixIndex(minIndex + 1, this._SubCurves); + let nextCurve = this._SubCurves[nextIndex]; + if (!equalv3(c.GetFistDeriv(1).normalize(), nextCurve.GetFistDeriv(0).normalize())) { + let p = c.EndPoint; + let l1 = c.Length; + let l2 = nextCurve.Length; + let minLength = Math.min(l1, l2) * 0.2; + let nextP; + let preP; + if (c instanceof Arc) + preP = c.GetPointAtDistance(l1 - minLength); + else + preP = c.StartPoint; + if (nextCurve instanceof Arc) + nextP = nextCurve.GetPointAtDistance(minLength); + else + nextP = nextCurve.EndPoint; + let arc = new Arc(p, 1, angle(preP.sub(p)), angle(nextP.sub(p))); + let dir = arc.PtOnCurve3(pt) ? -1 : 1; + return dir; + } + } + let dri = c.GetFistDeriv(param); + let cross = dri.cross(pt.clone().sub(minCp)); + return -Math.sign(cross.z); + } + CreateArc(center, startP, endP) { + let sa = angle(startP.clone().sub(center)); + let ea = endP ? angle(endP.clone().sub(center)) : sa; + let arc = new Arc(center, Math.abs(this._OffsetDist), sa, ea, this._OffsetDist < 0); + return arc; + } +} +function EntityEncode(c) { + if (c instanceof Line) + return 1; + else + return 2; +} +function EntityEncode2(c1, c2) { + return EntityEncode(c1) & EntityEncode(c2); +} +//表示这个是一个正常的曲线,不是0长度的线,也不是0长度的圆弧 +function CurveIsFine(curve) { + if (curve instanceof Arc && curve.AllAngle < 2e-6) + return false; + return curve.Length > 5e-5; +} + +/** + * 判断点在多段线内外 + * @param pl 多段线 + * @param pt 点 + * @returns 点在多段线内部 + */ +function IsPointInPolyLine(pl, pt) { + let crossings = 0; + let insLine = new Line(pt, pt.clone().add(new Vector3(0, 10, 0))); + for (let i = 0; i < pl.EndParam; i++) { + if (equaln(pl.GetBuilgeAt(i), 0, 5e-6)) //直线 + { + let sp = pl.GetPointAtParam(i); + let ep = pl.GetPointAtParam(i + 1); + //点位于线上面 + if (pt.y > Math.max(sp.y, ep.y)) + continue; + //线垂直Y轴 + let derX = ep.x - sp.x; + if (equaln(derX, 0, 5e-6)) + continue; + //起点 + if (equaln(sp.x, pt.x, 5e-6)) { + if (sp.y > pt.y && derX < 0) + crossings++; + continue; + } + //终点 + if (equaln(ep.x, pt.x, 5e-6)) { + if (ep.y > pt.y && derX > 0) + crossings++; + continue; + } + //快速求交,只验证有没有交点 + let [x1, x2] = sp.x > ep.x ? [ep.x, sp.x] : [sp.x, ep.x]; + if (pt.x > x1 && pt.x < x2) { + let derY = ep.y - sp.y; + let k = derY / derX; + if ((pt.x - sp.x) * k + sp.y > pt.y) + crossings++; + } + } + else //圆弧 + { + let arc = pl.GetCurveAtIndex(i); + let sp = arc.StartPoint; + let ep = arc.EndPoint; + //如果相切 + if (equaln(Math.abs(pt.x - arc.Center.x), arc.Radius)) { + //当点和起点或者终点和点相切时 + if (equaln(sp.x, pt.x) && sp.y > pt.y) { + if (ep.x - sp.x < -1e-5) + crossings++; + } + else if (equaln(ep.x, pt.x) && ep.y > pt.y) { + if (ep.x - sp.x > 1e-5) + crossings++; + } + continue; + } + if (equaln(sp.x, pt.x) && sp.y > pt.y) { + let der = arc.GetFistDeriv(0); + if (der.x < -1e-5) + crossings++; + } + if (equaln(ep.x, pt.x) && ep.y > pt.y) { + let der = arc.GetFistDeriv(1); + if (der.x > 1e-5) + crossings++; + } + for (let pti of arc.IntersectWith(insLine, IntersectOption.ExtendArg)) { + if (pti.y < pt.y || equalv3(sp, pti, 1e-5) || equalv3(ep, pti, 1e-5)) + continue; + let der = arc.GetFistDeriv(pti); + if (!equaln(der.x, 0)) //相切. + crossings++; + } + } + } + return (crossings % 2) === 1; +} + +var DragPointType; +(function (DragPointType) { + DragPointType[DragPointType["Grip"] = 0] = "Grip"; + DragPointType[DragPointType["Stretch"] = 1] = "Stretch"; +})(DragPointType || (DragPointType = {})); + +var Polyline_1; +let Polyline = Polyline_1 = class Polyline extends Curve { + constructor(_LineData = []) { + super(); + this._LineData = _LineData; + this._ClosedMark = false; + } + UpdateMatrixTo(m) { + this.WriteAllObjectRecord(); + let p = new Vector3().setFromMatrixPosition(m); + p.applyMatrix4(this.OCSInv); + if (equaln(p.z, 0)) { + let dir = Math.sign(this.Area2); + let tm = matrixAlignCoordSys(this.OCS, m); + for (let p of this._LineData) { + let p3 = AsVector3(p.pt); + p3.applyMatrix4(tm); + p.pt.set(p3.x, p3.y); + } + this.OCS = m; + let newDir = Math.sign(this.Area2); + if (dir !== newDir) + for (let p of this._LineData) + p.bul *= -1; + } + } + /** + * 原地翻转,仅改变法向量 + */ + Flip() { + this.WriteAllObjectRecord(); + let x = new Vector3(); + let y = new Vector3(); + let z = new Vector3(); + this._Matrix.extractBasis(x, y, z); + z.negate(); + y.crossVectors(z, x); + let p = this.Position; + this._Matrix.makeBasis(x, y, z).setPosition(p); + for (let d of this._LineData) { + d.pt.y *= -1; + d.bul *= -1; + } + this.Update(); + return this; + } + //翻转曲线,首尾调换 + Reverse() { + if (this._LineData.length === 0) + return this; + this.WriteAllObjectRecord(); + let pts = []; + let buls = []; + for (let data of this._LineData) { + pts.push(data.pt); + buls.push(-data.bul); + } + let lastBul = buls.pop(); + buls.reverse(); + buls.push(lastBul); + pts.reverse(); + if (this._ClosedMark && !equalv2(pts[0], arrayLast(pts))) { + pts.unshift(pts.pop()); + buls.unshift(buls.pop()); + } + for (let i = 0; i < pts.length; i++) { + let d = this._LineData[i]; + d.pt = pts[i]; + d.bul = buls[i]; + } + return this; + } + set LineData(data) { + this.WriteAllObjectRecord(); + this._LineData = data; + this.Update(); + } + get LineData() { + return this._LineData; + } + get NumberOfVertices() { + return this._LineData.length; + } + /** + * 在指定位置插入点. + * 例如: + * pl.AddVertexAt(pl.NumberOfVerticesk,p);//在末尾插入一个点 + * + * @param {number} index 索引位置 + * @param {Vector2} pt 点 + * @returns {this} + * @memberof Polyline + */ + AddVertexAt(index, pt) { + this.WriteAllObjectRecord(); + let pts; + if (Array.isArray(pt)) { + pts = pt.map(p => { + return { + pt: p.clone(), + bul: 0 + }; + }); + } + else + pts = [{ pt: pt.clone(), bul: 0 }]; + this._LineData.splice(index, 0, ...pts); + this.Update(); + return this; + } + RemoveVertexAt(index) { + if (index < this._LineData.length) { + this.WriteAllObjectRecord(); + this._LineData.splice(index, 1); + this.Update(); + } + return this; + } + RemoveVertexIn(from, to) { + if (from + 1 < this._LineData.length && to > from) { + this.WriteAllObjectRecord(); + this._LineData.splice(from + 1, to - from - 1); + this.Update(); + } + return this; + } + /** + * 重设闭合多段线的起点 + * @param index 起始index,如果index非整数,将用最接近的整数作为起始索引 + */ + ResetStartPoint(index) { + if (!this.IsClose || index >= this.EndParam) + return false; + if (equalv2(this._LineData[0].pt, arrayLast(this._LineData).pt)) + this._LineData.pop(); + changeArrayStartIndex(this._LineData, Math.floor(index + 0.5)); + this._LineData.push({ + pt: this._LineData[0].pt.clone(), + bul: 0 + }); + return true; + } + GetPoint2dAt(index) { + if (index >= 0 && this._LineData.length > index) + return this._LineData[index].pt.clone(); + } + /** + * 设置指定点的位置 + * + * @param {number} index + * @param {Vector2} pt + * @memberof Polyline + */ + SetPointAt(index, pt) { + let d = this._LineData[index]; + if (d) { + this.WriteAllObjectRecord(); + d.pt.copy(pt); + this.Update(); + } + return this; + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + for (let i = 0; i <= this.EndParam; i++) { + let p = this.GetPointAtParam(i); + p.applyMatrix4(m).applyMatrix4(this.OCSInv); + this.SetPointAt(i, AsVector2(p)); + } + return this; + } + ApplyMirrorMatrix(m) { + this.WriteAllObjectRecord(); + let oldPts = this.GetStretchPoints(); + reviseMirrorMatrix(this._Matrix); + for (let i = 0; i < oldPts.length; i++) { + let newP = oldPts[i].applyMatrix4(this.OCSInv); + let newBul = -this.GetBuilgeAt(i); + this.SetPointAt(i, AsVector2(newP)); + this.SetBulgeAt(i, newBul); + } + this.Reverse(); + return this; + } + SetBulgeAt(index, bul) { + let d = this._LineData[index]; + if (d) { + this.WriteAllObjectRecord(); + d.bul = bul; + this.Update(); + } + return this; + } + GetBuilgeAt(index) { + return this._LineData[index].bul; + } + Rectangle(length, height) { + this.LineData = [ + { pt: new Vector2(), bul: 0 }, + { pt: new Vector2(length), bul: 0 }, + { pt: new Vector2(length, height), bul: 0 }, + { pt: new Vector2(0, height), bul: 0 } + ]; + this.CloseMark = true; + return this; + } + RectangleFrom2Pt(p1, p2) { + let box = new Box3(); + box.setFromPoints([p2, p1].map((p) => p.clone().applyMatrix4(this.OCSInv))); + let px1 = AsVector2(box.min); + let px3 = AsVector2(box.max); + let px2 = new Vector2(px3.x, px1.y); + let px4 = new Vector2(px1.x, px3.y); + this.LineData = [ + { pt: px1, bul: 0 }, + { pt: px2, bul: 0 }, + { pt: px3, bul: 0 }, + { pt: px4, bul: 0 } + ]; + this.CloseMark = true; + return this; + } + //多段线起点 + get StartPoint() { + if (this._LineData.length > 0) + return AsVector3(this._LineData[0].pt).applyMatrix4(this.OCS); + return new Vector3(); + } + set StartPoint(p) { + this.WriteAllObjectRecord(); + p = p.clone().applyMatrix4(this.OCSInv); + if (this._LineData.length === 0) + this.AddVertexAt(0, AsVector2(p)); + else if (this._LineData.length === 1) + this.SetPointAt(0, AsVector2(p)); + else { + let bul = this.GetBuilgeAt(0); + if (bul !== 0) { + let arc = this.GetCurveAtParam(0); + arc.StartPoint = p; + //前面线的凸度调整 + this.SetBulgeAt(0, Math.tan(arc.AllAngle / 4) * Math.sign(bul)); + } + this.SetPointAt(0, AsVector2(p)); + } + } + get EndPoint() { + if (this._ClosedMark) + return this.StartPoint; + if (this._LineData.length > 0) + return AsVector3(this._LineData[this.EndParam].pt).applyMatrix4(this.OCS); + return new Vector3(); + } + set EndPoint(p) { + if (this._LineData.length < 2 || this.CloseMark) + return; + this.WriteAllObjectRecord(); + p = p.clone().applyMatrix4(this.OCSInv); + let bul = this.GetBuilgeAt(this.EndParam - 1); + if (bul !== 0) { + let arc = this.GetCurveAtParam(this.EndParam - 1); + arc.ApplyMatrix(this.OCSInv); + arc.EndPoint = p; + //前面线的凸度调整 + this.SetBulgeAt(this.EndParam - 1, Math.tan(arc.AllAngle / 4) * Math.sign(bul)); + } + this.SetPointAt(this.EndParam, AsVector2(p)); + } + get CurveCount() { + return this.EndParam; + } + get StartParam() { + return 0; + } + /** + * 表示最后一条曲线的终止参数,使用该参数可以直接遍历到多段线的所有子线段. for(i 1 && (equalv3(this.StartPoint, this.EndPoint, 1e-4))); + } + set CloseMark(v) { + this.WriteAllObjectRecord(); + this._ClosedMark = v; + this.Update(); + } + DigestionCloseMark() { + if (this._ClosedMark && this._LineData.length > 1) { + this.WriteAllObjectRecord(); + this._ClosedMark = false; + if (!equalv2(this._LineData[0].pt, arrayLast(this._LineData).pt)) + this._LineData.push({ pt: AsVector2(this._LineData[0].pt), bul: 0 }); + } + } + get Length() { + return this.Explode().reduce((l, cu) => l + cu.Length, 0); + } + /** + * 获得指定参数所在的点. + * 当曲线存在闭合标志时,参数必须在曲线内部. + * 当曲线不存在闭合标志时,参数允许延伸出曲线. + * + * @param {number} param 参数 + * @returns {Vector3} 三维点,可为空 + * @memberof Polyline + */ + GetPointAtParam(param) { + if (param === Math.floor(param) && this.ParamOnCurve(param)) + return AsVector3(this.GetPoint2dAt(FixIndex(param, this.NumberOfVertices))).applyMatrix4(this.OCS); + let cu = this.GetCurveAtParam(param); + if (cu) + return cu.GetPointAtParam(this.GetCurveParamAtParam(param)); + return undefined; + } + GetDistAtParam(param) { + if (this._ClosedMark && !this.ParamOnCurve(param)) + return NaN; + //参数 整数 + let paramFloor = Math.floor(param); + //需要计算的曲线个数 + let cuCout = paramFloor > this.EndParam ? this.EndParam : paramFloor; + let dist = 0; + //首先计算完整曲线的长度 + for (let i = 0; i < cuCout; i++) { + dist += this.GetCurveAtIndex(i).Length; + } + //参数已经大于索引,证明参数在线外. + if (paramFloor !== cuCout) { + dist += this.GetCurveAtParam(param).GetDistAtParam(param - cuCout); + } + else if (param > paramFloor) { + let lastParam = param - paramFloor; + dist += this.GetCurveAtParam(param).GetDistAtParam(lastParam); + } + return dist; + } + GetPointAtDistance(dist) { + let param = this.GetParamAtDist(dist); + return this.GetPointAtParam(param); + } + /** + * 返回参数所在的点. 如果曲线不闭合,会试图返回延伸点参数 + * + * @param {Vector3} pt + * @returns {number} + * @memberof Polyline + */ + GetParamAtPoint(pt) { + let cus = this.Explode(); + if (cus.length === 0) + return NaN; + for (let i = 0; i < cus.length; i++) { + let cu = cus[i]; + let param = cu.GetParamAtPoint(pt); + if (cu.ParamOnCurve(param)) + return i + param; //返回点在曲线内部的参数 + } + //当曲线闭合时,不需要延伸首尾去判断参数 + if (this._ClosedMark) + return NaN; + //起点终点参数集合 + let seParams = []; + //点在第一条曲线上的参数 + let startParam = cus[0].GetParamAtPoint(pt); + if (!isNaN(startParam) && startParam < 0) + seParams.push(startParam); + //点在最后一条线上的参数 + let endParam = cus[cus.length - 1].GetParamAtPoint(pt); + if (!isNaN(endParam) && endParam > 0) + seParams.push(endParam + this.EndParam - 1); + if (seParams.length == 1) { + return seParams[0]; + } + else if (seParams.length == 2) { + //返回较近的参数 + if (pt.distanceToSquared(this.StartPoint) + < pt.distanceToSquared(this.EndPoint)) + return seParams[0]; + else + return seParams[1]; + } + return NaN; + } + GetParamAtDist(dist) { + let cus = this.Explode(); + for (let i = 0; i < cus.length; i++) { + let cu = cus[i]; + let len = cu.Length; + if (dist <= len) + return i + cu.GetParamAtDist(dist); + else if (equaln(dist, len, 1e-8)) + return i + 1; + dist -= len; + } + if (!this._ClosedMark) + return cus.length + cus[cus.length - 1].GetParamAtDist(dist); + return NaN; + } + GetDistAtPoint(pt) { + let param = this.GetParamAtPoint(pt); + if (!this.ParamOnCurve(param)) + return NaN; + return this.GetDistAtParam(param); + } + /** + * 返回曲线的一阶导数. + * 当曲线闭合(标志)且点不在曲线上. + * 或者曲线不闭合(标志) 且点不在曲线上也不在延伸上 + * + * @param {(number | Vector3)} param + * @returns {Vector3} + * @memberof Polyline + */ + GetFistDeriv(param) { + if (param instanceof Vector3) + param = this.GetParamAtPoint(param); + if (isNaN(param)) + return undefined; + let cu = this.GetCurveAtParam(param); + if (!cu) + return undefined; + return cu.GetFistDeriv(this.GetCurveParamAtParam(param)); + } + GetSplitCurves(param) { + //参数需要转化为参数数组 + let params; + if (typeof param == "number") + params = [param]; + else + params = param; + //校验参数在曲线中,修正参数 + let endParam = this.EndParam; + params = params.filter(p => this.ParamOnCurve(p) && p > -1e-6) + .map(a => { + if (a < 0) + return 0; + if (a > endParam) + return endParam; + if (equaln(a, Math.floor(a + 0.5), 1e-8)) + return Math.floor(a + 0.5); + return a; + }); + //排序 + params.sort((a, b) => a - b); + let hasEndParam = arrayLast(params) === this.EndParam; + //必须加入最后一个参数,保证切割后的曲线完整 + if (!hasEndParam) + params.push(this.EndParam); + arrayRemoveDuplicateBySort(params, (e1, e2) => equaln(e1, e2, 1e-8)); + params = params.filter(p => this.ParamOnCurve(p)); + if (params.length === 0) + return []; + //判断是否存在0参数 + let hasZeroParam = params[0] === 0; + if (hasZeroParam) + params.shift(); + let { pts, buls } = this.PtsBuls; + //返回的多段线集合 + let pls = []; + let len = 0; //已经走过的参数长度(整数) + //上一个切割参数的位置 0-1 + let prePa = 0; + for (let pa of params) { + //参数所在点 + let pt = AsVector2(this.GetPointAtParam(pa).applyMatrix4(this.OCSInv)); + pa -= len; + let pafloor = Math.floor(pa); + len += pafloor; + let plData = []; + //添加点 + for (let i = 0; i < pafloor; i++) { + if (i === 0 && !equaln(buls[0], 0, 1e-8)) { + buls[0] = Math.tan((1 - prePa) * Math.atan(buls[0])); + } + plData.push({ pt: pts[0], bul: buls[0] }); + pts.shift(); + buls.shift(); + } + if (equaln(pa, pafloor, 1e-8)) //如果pa在点上 + { + plData.push({ pt: pts[0].clone(), bul: buls[0] }); + } + else //在曲线上 + { + let bul = buls[0]; + if (!equaln(bul, 0, 1e-6)) + bul = Math.tan((pa - pafloor - (0 === pafloor ? prePa : 0)) * Math.atan(buls[0])); //->凸度 + //加入顶点+凸度 + plData.push({ pt: pts[0].clone(), bul }); + //终点 + plData.push({ pt, bul: 0 }); + //修正剩余的点表和凸度表 + pts[0].copy(pt); + } + prePa = pa - pafloor; + if (plData.length > 1) { + let pl = new Polyline_1(plData).ApplyMatrix(this.OCS); + pl.ColorIndex = this.ColorIndex; + pls.push(pl); + } + } + //当曲线为闭合曲线,并且不存在0切割参数时,首尾连接曲线 + if (this._ClosedMark && !hasZeroParam && !hasEndParam) { + let lastPl = pls[pls.length - 1]; + if (equalv2(arrayLast(lastPl._LineData).pt, pls[0]._LineData[0].pt)) + lastPl._LineData.pop(); + lastPl._LineData.push(...pls[0]._LineData); + pls.shift(); + } + return pls; + } + //未完善 + GetCurveAtParamRange(startParam, endParam) { + let sfloor = Math.floor(startParam + 0.5); + if (equaln(sfloor, startParam, 1e-8)) + startParam = sfloor; + else + sfloor = Math.floor(startParam); + let efloor = Math.floor(endParam + 0.5); + if (equaln(efloor, endParam, 1e-8)) + endParam = efloor; + else + efloor = Math.floor(efloor); + const GetCurve = (index) => { + let d = this._LineData[index]; + let next = this._LineData[index + 1]; + if (!equaln(d.bul, 0, 1e-8)) + return new Arc().ParseFromBul(d.pt, next.pt, d.bul); + else + return new Line(AsVector3(d.pt), AsVector3(next.pt)); + }; + let lined = []; + if (startParam === sfloor) { + let d = this._LineData[sfloor]; + lined.push({ pt: d.pt.clone(), bul: d.bul }); + } + else { + let d = this._LineData[sfloor]; + let cu = GetCurve(sfloor); + let remParam = startParam - sfloor; + let p = cu.GetPointAtParam(remParam); + let bul = d.bul; + if (!equaln(bul, 0)) + bul = Math.tan(Math.atan(bul) * (1 - remParam)); + lined.push({ pt: AsVector2(p), bul: bul }); + } + for (let i = sfloor + 1; i < efloor; i++) { + let d = this._LineData[i]; + lined.push({ pt: d.pt.clone(), bul: d.bul }); + } + if (efloor !== endParam) { + let d = this.LineData[efloor]; + let remParam = endParam - efloor; + let cu = GetCurve(efloor); + let p = cu.GetPointAtParam(remParam); + let bul = d.bul; + if (!equaln(bul, 0)) { + arrayLast(lined).bul = Math.tan(Math.atan(bul) * remParam); + bul = Math.tan(Math.atan(bul) * (1 - remParam)); + } + lined.push({ pt: AsVector2(p), bul }); + } + let pl = new Polyline_1(lined); + pl.OCS = this.OCSNoClone; + return; + } + Extend(newParam) { + if (this.CloseMark || this.ParamOnCurve(newParam)) + return; + this.WriteAllObjectRecord(); + let ptIndex; + let bulIndex; + if (newParam < 0) { + ptIndex = 0; + bulIndex = 0; + } + else if (newParam > this.EndParam) { + ptIndex = this.EndParam; + bulIndex = ptIndex - 1; + } + //修改顶点 + this._LineData[ptIndex].pt = AsVector2(this.GetPointAtParam(newParam).applyMatrix4(this.OCSInv)); + //修改凸度 + let oldBul = this._LineData[bulIndex].bul; + if (oldBul != 0) + this._LineData[bulIndex].bul = Math.tan(Math.atan(oldBul) * (1 + newParam - ptIndex)); + this.Update(); + } + //const this + MatrixAlignTo2(toMatrix) { + if (!matrixIsCoplane(this._Matrix, toMatrix, 1e-4)) + return this.PtsBuls; + let m = matrixAlignCoordSys(this._Matrix, toMatrix); + let z1 = this.Normal; + let z2 = new Vector3().setFromMatrixColumn(toMatrix, 2); + let isMirror = equalv3(z1, z2.negate()); + let pts = []; + let buls = []; + for (let d of this._LineData) { + let p = AsVector2(AsVector3(d.pt).applyMatrix4(m)); + pts.push(p); + buls.push(isMirror ? -d.bul : d.bul); + } + return { pts, buls }; + } + Join(cu, allowGap = false, tolerance = 1e-4) { + this.WriteAllObjectRecord(); + if (this._ClosedMark) + return Status.False; + let [sp, ep, cuSp, cuEp] = [this.StartPoint, this.EndPoint, cu.StartPoint, cu.EndPoint]; + let ocsInv = this.OCSInv; + let [cuSp2, cuEp2] = [cuSp, cuEp].map(p => AsVector2(p.clone().applyMatrix4(ocsInv))); + if (this._LineData.length === 0) { + if (cu instanceof Line) { + this._LineData.push({ pt: cuSp2, bul: 0 }); + this._LineData.push({ pt: cuEp2, bul: 0 }); + } + else if (cu instanceof Arc) { + this._LineData.push({ pt: cuSp2, bul: cu.Bul }); + this._LineData.push({ pt: cuEp2, bul: 0 }); + } + else if (cu instanceof Polyline_1) { + let f = new CADFiler(); + cu.WriteFile(f); + this.ReadFile(f); + } + else + return Status.False; + } + else { + let LinkType; + (function (LinkType) { + LinkType[LinkType["None"] = 0] = "None"; + LinkType[LinkType["SpSp"] = 1] = "SpSp"; + LinkType[LinkType["SpEp"] = 2] = "SpEp"; + LinkType[LinkType["EpSp"] = 3] = "EpSp"; + LinkType[LinkType["EpEp"] = 4] = "EpEp"; + })(LinkType || (LinkType = {})); + let spspDisSq = cuSp.distanceToSquared(sp); + let spepDisSq = cuSp.distanceToSquared(ep); + let epspDisSq = cuEp.distanceToSquared(sp); + let epepDisSq = cuEp.distanceToSquared(ep); + let minDis = tolerance * tolerance; + let linkType = LinkType.None; + if (spspDisSq < minDis) { + linkType = LinkType.SpSp; + minDis = spspDisSq; + } + if (spepDisSq < minDis) { + linkType = LinkType.SpEp; + minDis = spepDisSq; + } + if (epspDisSq < minDis) { + linkType = LinkType.EpSp; + minDis = epspDisSq; + } + if (epepDisSq < minDis) + linkType = LinkType.EpEp; + if (linkType === LinkType.None) + return Status.False; + if (cu instanceof Line) { + if (linkType === LinkType.SpSp) { + this._LineData.unshift({ pt: cuEp2, bul: 0 }); + } + else if (linkType === LinkType.SpEp) { + this._LineData.push({ pt: cuEp2, bul: 0 }); + } + else if (linkType === LinkType.EpSp) { + this._LineData.unshift({ pt: cuSp2, bul: 0 }); + } + else if (linkType === LinkType.EpEp) { + this._LineData.push({ pt: cuSp2, bul: 0 }); + } + } + else if (cu instanceof Arc) { + let dir = equalv3(this.Normal, cu.Normal.negate()) ? -1 : 1; + let bul = cu.Bul * dir; + if (linkType === LinkType.SpSp) { + this._LineData.unshift({ pt: cuEp2, bul: -bul }); + } + else if (linkType === LinkType.SpEp) { + arrayLast(this._LineData).bul = bul; + this._LineData.push({ pt: cuEp2, bul: 0 }); + } + else if (linkType === LinkType.EpSp) { + this._LineData.unshift({ pt: cuSp2, bul: bul }); + } + else if (linkType === LinkType.EpEp) { + arrayLast(this._LineData).bul = -bul; + this._LineData.push({ pt: cuSp2, bul: 0 }); + } + } + else if (cu instanceof Polyline_1) { + if (cu.CloseMark) + return Status.False; + let { pts, buls } = this.PtsBuls; + if (linkType === LinkType.SpSp) { + cu.Reverse(); + let cuPtsBul = cu.MatrixAlignTo2(this.OCS); + cuPtsBul.pts.pop(); + cuPtsBul.buls.pop(); + pts = cuPtsBul.pts.concat(pts); + buls = cuPtsBul.buls.concat(buls); + } + else if (linkType === LinkType.SpEp) { + pts.pop(); + buls.pop(); + let cuPtsBul = cu.MatrixAlignTo2(this.OCS); + pts = pts.concat(cuPtsBul.pts); + buls = buls.concat(cuPtsBul.buls); + } + else if (linkType === LinkType.EpSp) { + let cuPtsBul = cu.MatrixAlignTo2(this.OCS); + cuPtsBul.pts.pop(); + cuPtsBul.buls.pop(); + pts = cuPtsBul.pts.concat(pts); + buls = cuPtsBul.buls.concat(buls); + } + else if (linkType === LinkType.EpEp) { + pts.pop(); + buls.pop(); + cu.Reverse(); + let cuPtsBul = cu.MatrixAlignTo2(this.OCS); + pts = pts.concat(cuPtsBul.pts); + buls = buls.concat(cuPtsBul.buls); + } + this._LineData.length = 0; + for (let i = 0; i < pts.length; i++) { + this._LineData.push({ pt: pts[i], bul: buls[i] }); + } + } + else + return Status.False; + } + //在上面的其他分支已经返回了假 所以这里直接返回真. + this.Update(); + return Status.True; + } + /** + * 将曲线数组组合成多段线 + * @param curves 已经使用CurveLinked的数组,总是首尾相连 + * @returns + */ + static Combine(curves, tolerance = 1e-5) { + if (!curves || curves.length === 0) + return; + let pl = new Polyline_1; + pl.OCS = ComputerCurvesNormalOCS(curves); + for (let cu of curves) + pl.Join(cu, false, tolerance); + let d = pl.LineData; + if (d.length > 1) { + let ld = arrayLast(d).pt; + if (equalv2(d[0].pt, ld, tolerance)) + ld.copy(d[0].pt); + } + return pl; + } + /**首尾相连的曲线直接连接 */ + static FastCombine(curves, tolerance = 1e-5) { + if (!curves || curves.length === 0) + return; + let pl = new Polyline_1; + pl.OCS = ComputerCurvesNormalOCS(curves); + let ocsInv = pl.OCSInv; + let lineData = []; + for (let i = 0; i < curves.length; i++) { + let cu = curves[i]; + let bul = 0; + if (cu instanceof Arc) + bul = cu.Bul; + lineData.push({ + pt: AsVector2(cu.StartPoint.applyMatrix4(ocsInv)), + bul + }); + if (i === curves.length - 1) { + lineData.push({ + pt: AsVector2(cu.EndPoint.applyMatrix4(ocsInv)), + bul: 0 + }); + } + } + if (lineData.length > 1) { + let ld = arrayLast(lineData).pt; + if (equalv2(lineData[0].pt, ld, tolerance)) + ld.copy(lineData[0].pt); + } + pl.LineData = lineData; + return pl; + } + PtOnCurve(pt) { + for (let i = 0; i < this.EndParam; i++) { + let c = this.GetCurveAtIndex(i); + if (c.PtOnCurve(pt)) + return true; + } + return false; + } + //点在曲线上,已经确定点在曲线的延伸线上 + PtOnCurve3(p, fuzz = 1e-6) { + for (let i = 0; i < this.EndParam; i++) { + let c = this.GetCurveAtIndex(i); + if (c.PtOnCurve3(p, fuzz)) + return true; + } + return false; + } + PtInCurve(pt) { + return this.IsClose && IsPointInPolyLine(this, pt); + } + GetClosestPointTo(pt, extend) { + return this.GetClosestPointTo2(pt, extend ? ExtendType.Both : ExtendType.None); + } + GetClosestPointTo2(pt, extType) { + //当曲线空时,返回空 + if (this.EndParam < 1) + return undefined; + //当有闭合标志时,曲线在任何位置都不延伸 + if (this._ClosedMark) + extType = ExtendType.None; + //最近点 + let ptC = undefined; + //最近点的距离 + let ptCDist = Infinity; + for (let i = 0; i < this.EndParam; i++) { + let cu = this.GetCurveAtIndex(i); + //前延伸 + if (i === 0 && (extType & ExtendType.Front) > 0) { + let ptCFirst = cu.GetClosestPointTo(pt, true); + if (cu.GetParamAtPoint(ptCFirst) <= 1) { + ptC = ptCFirst; + ptCDist = ptC.distanceToSquared(pt); + } + if (extType === ExtendType.Front) + continue; + } + let ptCloseNew; //新的最近点 + //后延伸 (此处与前延伸分开if 如果线只有一段,那么前后延伸都能同时触发) + if (i === (this.EndParam - 1) && (extType & ExtendType.Back) > 0) { + let ptCLast = cu.GetClosestPointTo(pt, true); + if (cu.GetParamAtPoint(ptCLast) >= 0) + ptCloseNew = ptCLast; + else //如果延伸之后并不在曲线或者曲线的后延伸上 + ptCloseNew = cu.EndPoint; + } + else { + ptCloseNew = cu.GetClosestPointTo(pt, false); + } + let newDist = ptCloseNew.distanceToSquared(pt); + if (newDist < ptCDist) { + ptC = ptCloseNew; + ptCDist = newDist; + } + } + return ptC; + } + //偏移 + GetOffsetCurves(offsetDist) { + if (equaln(offsetDist, 0)) + return []; + let polyOffestUtil = new OffsetPolyline(this, offsetDist); + let curves = polyOffestUtil.Do(); + for (let cu of curves) + cu.ColorIndex = this.ColorIndex; + return curves; + } + GetFeedingToolPath(offsetDist, offsetDistSq = (offsetDist ** 2) * 2.1) { + if (equaln(offsetDist, 0)) + return []; + let polyOffestUtil = new OffsetPolyline(this, offsetDist, true, offsetDistSq); + return polyOffestUtil.Do(); + } + /** + * 分解 + */ + Explode() { + let exportCus = []; + for (let i = 0; i < this.EndParam; i++) { + exportCus.push(this.GetCurveAtIndex(i)); + } + return exportCus; + } + /** + * 根据参数得到参数所在的子曲线. + * + * 当曲线存在闭合标志时,参数必须在曲线内部,否则返回空. + * + * @param {number} param 参数值 + * @returns {Curve} 曲线(直线或者圆弧) 或空 + * @memberof Polyline + */ + GetCurveAtParam(param) { + if (this._ClosedMark && !this.ParamOnCurve(param)) + return undefined; + if (param < 0) + return this.GetCurveAtIndex(0); + else if (param >= this.EndParam) + return this.GetCurveAtIndex(this.EndParam - 1); + else + return this.GetCurveAtIndex(Math.floor(param)); + } + /** + * 得到参数在子曲线中的表示 + * + * @param {number} param 参数在多段线中表示 + * @returns {number} 参数在子曲线中表示 + * @memberof Polyline + */ + GetCurveParamAtParam(param) { + if (param >= this.EndParam) + param -= this.EndParam - 1; + else if (param > 0) + param -= Math.floor(param); + return param; + } + /** + * 获得曲线,来自索引位置. + * @param {number} i 索引位置 整数 + */ + GetCurveAtIndex(i) { + if (i >= this._LineData.length) + return undefined; + if (!this.ParamOnCurve(i)) + return undefined; + if (!this._ClosedMark && i === this._LineData.length - 1) + return undefined; + let d1 = this._LineData[i]; + let d2 = this._LineData[FixIndex(i + 1, this._LineData)]; + let curve; + if (equaln(d1.bul, 0, 1e-8)) + curve = new Line(AsVector3(d1.pt), AsVector3(d2.pt)).ApplyMatrix(this.OCS); + else + curve = new Arc().ParseFromBul(d1.pt, d2.pt, d1.bul).ApplyMatrix(this.OCS); + curve.ColorIndex = this._Color; + return curve; + } + IntersectWith2(curve, intType, tolerance = 1e-5) { + return IntersectPolylineAndCurve(this, curve, intType, tolerance); + } + //计算自交点. + IntersectSelf() { + let cus = this.Explode(); + if (cus.length === 0) + return []; + let intParams = []; + for (let i = 0; i < cus.length; i++) { + let c = cus[i]; + for (let j = i + 2; j < cus.length; j++) { + let c2 = cus[j]; + let pts = c.IntersectWith(c2, IntersectOption.OnBothOperands); + for (let p of pts) { + intParams.push(i + c.GetParamAtPoint(p)); + intParams.push(j + c2.GetParamAtPoint(p)); + } + } + } + return intParams; + } + IsIntersectSelf() { + let cus = this.Explode().filter(c => !equaln(c.Length, 0, 1e-3)); + for (let i = 0; i < cus.length - 1; i++) { + let c1 = cus[i]; + let c1IsLine = c1 instanceof Line; + let d1 = c1.GetFistDeriv(c1IsLine ? 0 : 1).normalize(); + for (let j = i + 1; j < cus.length; j++) { + let c2 = cus[j]; + let c2IsLine = c2 instanceof Line; + let d2 = c2.GetFistDeriv(0).normalize(); + if (j === i + 1) { + if (c1IsLine === c2IsLine) { + if (c1IsLine) { + if (equalv3(d1, d2.negate())) + return true; + continue; + } + else { + if (equalv3(d1, d2.negate()) && equalv3(c1.Center, c2.Center)) + return true; + } + } + } + let intPts = c1.IntersectWith2(c2, 0); + let intPtsLen = intPts.length; + if (intPtsLen > 0) { + if (intPtsLen === 2 && equalv3(intPts[0].pt, intPts[1].pt, 1e-3)) { + intPtsLen = 1; + intPts.pop(); + } + if (intPtsLen === 2 && j === i + 1 && cus.length === 2) { + if (intPts.every(r => equaln(r.thisParam, 0, 1e-3) || equaln(r.thisParam, 1, 1e-3))) + continue; + } + if (j === i + 1 && intPtsLen === 1) + continue; + if (this.IsClose && i === 0 && j === cus.length - 1 && intPtsLen === 1) + continue; + return true; + } + } + } + return false; + } + get BoundingBox() { + let box = new Box3Ext(); + for (let i = 0; i < this.EndParam; i++) { + let cu = this.GetCurveAtIndex(i); + box.union(cu.BoundingBox); + } + return box; + } + /** + * 得到曲线有用的点表和凸度(闭合曲线首尾重复) + */ + get PtsBuls() { + let pts = []; + let buls = []; + if (this._LineData.length === 0) + return { pts, buls }; + for (let data of this._LineData) { + pts.push(data.pt.clone()); + buls.push(data.bul); + } + //闭合且起点不等于终点 + if (this._ClosedMark && + !this._LineData[0].pt.equals(arrayLast(this._LineData).pt)) { + pts.push(pts[0].clone()); + buls.push(buls[0]); + } + return { pts, buls }; + } + get IsBulge() { + if (!this.IsClose) + return false; + let refDir = Math.sign(this.Area2); + let c1; + let c2; + for (let i = 0; i < this.EndParam; i++) { + c1 = this.GetCurveAtIndex(i); + c2 = this.GetCurveAtIndex(FixIndex(i + 1, this.EndParam)); + let len1 = c1.Length; + let len2 = c2.Length; + let minLen = Math.min(len1, len2) * 0.2; + let p = c1.EndPoint; + let p1; + let p2; + if (c1 instanceof Arc) { + let dir = c1.IsClockWise ? -1 : 1; + if (dir !== refDir) + return false; + p1 = c1.GetPointAtDistance(len1 - minLen); + } + else + p1 = c1.StartPoint; + if (c2 instanceof Arc) { + let dir = c2.IsClockWise ? -1 : 1; + if (dir !== refDir) + return false; + p2 = c2.GetPointAtDistance(minLen); + } + else + p2 = c2.EndPoint; + let vec1 = p.clone().sub(p1); + let vec2 = p2.sub(p); + let dir = Math.sign(vec1.cross(vec2).z); + if (dir !== 0 && dir !== refDir) + return false; + } + return true; + } + get Shape() { + let { pts, buls } = this.PtsBuls; + let curve = CreateBoardUtil.CreatePath(pts, buls); + return curve; + } + get SVG() { + let sp = this.StartPoint; + let str = `M${sp.x} ${sp.y} `; + for (let i = 1; i <= this.EndParam; i++) { + let bul = this.GetBuilgeAt(i - 1); + let p = this.GetPointAtParam(i); + if (bul === 0) + str += `L${p.x} ${p.y} `; + else { + let arc = this.GetCurveAtIndex(i - 1); + str += `A ${arc.Radius} ${arc.Radius} 0 ${Math.abs(bul) >= 1 ? 1 : 0} ${arc.IsClockWise ? 0 : 1} ${p.x} ${p.y}`; + } + } + return str; + } + InitDrawObject(renderType = RenderType.Wireframe) { + let shape = this.Shape; + let geo = BufferGeometryUtils.CreateFromPts(shape.getPoints(50).map(AsVector3)); + if (renderType === RenderType.WireframePrint) { + var geometry = new LineGeometry().setPositions(geo.attributes.position.array); + return new Line2(geometry, ColorMaterial.PrintLineMatrial); + } + let obj = new Line$1(geo, ColorMaterial.GetLineMaterial(this._Color)); + return obj; + } + UpdateDrawObject(type, en) { + let shape = this.Shape; + let pts = shape.getPoints(50).map(AsVector3); + let plObj = en; + let geo = plObj.geometry; + if (!BufferGeometryUtils.UpdatePts(geo, pts)) { + updateGeometry(plObj, BufferGeometryUtils.CreateFromPts(pts)); + } + } + GetDragPointCount(drag) { + if (drag === DragPointType.Grip) { + let count = this.EndParam * 2 + 1; + if (this.CloseMark) + count--; + return count; + } + else { + return this._LineData.length; + } + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetStretchPoints(); + case ObjectSnapMode.Mid: + let midPts = []; + let enParam = this.EndParam; + for (let i = 0.5; i < enParam; i++) { + let p = this.GetPointAtParam(i); + p && midPts.push(p); + } + return midPts; + case ObjectSnapMode.Nea: + { + let nea = []; + for (let cu of this.Explode()) { + let neaa = cu.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform); + if (neaa) + nea.push(...neaa); + } + return nea; + } + case ObjectSnapMode.Ext: + { + let cp = this.GetClosestPointTo(pickPoint, true); + if (cp) + return [cp]; + break; + } + case ObjectSnapMode.Cen: + let cenPts = []; + for (let i = 0; i < this._LineData.length; i++) { + let data = this._LineData[i]; + if (!equaln(data.bul, 0)) { + let cu = this.GetCurveAtIndex(i); + if (cu) //end bul !== 0 但是并没有圆弧 + cenPts.push(cu.Center); + } + } + return cenPts; + case ObjectSnapMode.Per: + if (lastPoint) { + let cp = this.GetClosestPointTo(pickPoint, false); + if (!cp) + return []; + let cparam = this.GetParamAtPoint(cp); + let cu = this.GetCurveAtParam(cparam); + if (cu) { + let closestPt = cu.GetClosestPointTo(lastPoint, true); + if (closestPt && this.PtOnCurve(closestPt)) + return [closestPt]; + } + } + case ObjectSnapMode.Tan: + if (lastPoint) { + let clostPt = this.GetClosestPointTo(pickPoint, false); + if (!clostPt) + return []; + let par = this.GetParamAtPoint(clostPt); + let cu = this.GetCurveAtParam(par); + if (cu instanceof Arc) + return cu.GetObjectSnapPoints(snapMode, pickPoint, lastPoint); + return []; + } + } + return []; + } + GetGripPoints() { + let ptList = []; + if (this._LineData.length < 2) + return ptList; + let enParam = this.EndParam; + if (this.CloseMark) + enParam -= 0.5; + for (let i = 0; i < enParam + 0.5; i += 0.5) { + let p = this.GetPointAtParam(i); + ptList.push(p); + } + return ptList; + } + MoveGripPoints(indexList, moveVec) { + this.WriteAllObjectRecord(); + let moveVLoc = AsVector2(moveVec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv))); + let calcIndexList = indexList; + if (indexList.length > 1) { + let centerIndexes = indexList.filter(i => i % 2 === 0); + if (centerIndexes.length > 0) + calcIndexList = centerIndexes; + } + for (let index of calcIndexList) { + if (index % 2 === 0) { + let cuIndex = index / 2; + let ptCout = this._LineData.length; + let frontIndex = cuIndex - 1; + if (this._ClosedMark) + frontIndex = FixIndex(frontIndex, ptCout); + if (frontIndex >= 0 && this.GetBuilgeAt(frontIndex)) { + let arc = this.GetCurveAtIndex(frontIndex); + arc.MoveGripPoints([2], moveVec); + this._LineData[frontIndex].bul = arc.Bul; + } + if ((cuIndex !== ptCout - 1) && this.GetBuilgeAt(cuIndex)) { + let arc = this.GetCurveAtIndex(cuIndex); + arc.MoveGripPoints([0], moveVec); + this._LineData[cuIndex].bul = arc.Bul; + } + this._LineData[cuIndex].pt.add(moveVLoc); + } + else { + let ptIndex = (index - 1) / 2; + let nextIndex = (FixIndex(ptIndex + 1, this._LineData)); + let d = this._LineData[ptIndex]; + if (d.bul == 0) { + this._LineData[ptIndex].pt.add(moveVLoc); + this._LineData[nextIndex].pt.add(moveVLoc); + } + else { + let arc = this.GetCurveAtIndex(ptIndex); + arc.MoveGripPoints([1], moveVec); + this._LineData[ptIndex].bul = arc.Bul; + } + } + } + this.Update(); + } + GetStretchPoints() { + let iswcs = MatrixIsIdentityCS(this._Matrix); + let pts = []; + for (let data of this._LineData) { + let p = AsVector3(data.pt); + if (!iswcs) + p.applyMatrix4(this._Matrix); + pts.push(p); + } + return pts; + } + /** + * 范围拉伸(stretch),对夹点进行拉伸. + * 如果对圆弧的一侧进行拉伸,那么修改bul + * + * @param {Array} indexList + * @param {Vector3} vec + */ + MoveStretchPoints(indexList, vec) { + this.WriteAllObjectRecord(); + //本地坐标系移动向量 + let moveVLoc = vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv)); + let ptCout = this._LineData.length; + for (let index of indexList) { + if (index >= ptCout) + throw "在拉伸多段线顶点时,尝试拉伸不存在的顶点!(通常是因为模块中的板轮廓被破坏,导致的顶点丢失!)"; + let frontIndex = index - 1; + let nextIndex = index + 1; + if (this._ClosedMark) { + frontIndex = FixIndex(frontIndex, ptCout); + nextIndex = FixIndex(nextIndex, ptCout); + } + /** + * 根据新的拉伸点修改凸度. + * + * @param {number} nextIndex 隔壁点索引 + * @param {number} bulIndex 需要修改凸度位置的索引 + * @returns + */ + const ChangeBul = (nextIndex, bulIndex) => { + //需要修改的点的数据 + let d = this._LineData[bulIndex]; + if (d === undefined || d.bul == 0) + return; + //如果隔壁点不在拉伸列表中 + if (indexList.indexOf(nextIndex) === -1) { + let needChangeP = this.GetPointAtParam(index); + let notChangeP = this.GetPointAtParam(nextIndex); + //原先的弦长的一半 + let oldChordLengthHalf = needChangeP.distanceTo(notChangeP) * 0.5; + //弓高 + let arcHeight = oldChordLengthHalf * d.bul; + needChangeP.add(vec); + let newChordLengthHalf = needChangeP.distanceTo(notChangeP) * 0.5; + d.bul = arcHeight / newChordLengthHalf; + } + }; + ChangeBul(frontIndex, frontIndex); + ChangeBul(nextIndex, index); + //修改顶点 + this._LineData[index].pt.add(AsVector2(moveVLoc)); + } + this.Update(); + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); + this._LineData.length = 0; + let cout = file.Read(); + for (let i = 0; i < cout; i++) { + let v = new Vector2().fromArray(file.Read()); + let bul = file.Read(); + this._LineData.push({ pt: v, bul: bul }); + } + if (ver > 1) + this._ClosedMark = file.Read(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(2); + file.Write(this._LineData.length); + for (let l of this._LineData) { + file.Write(l.pt.toArray()); + file.Write(l.bul); + } + file.Write(this._ClosedMark); + } +}; +Polyline = Polyline_1 = __decorate([ + Factory +], Polyline); +const TempPolyline = new Polyline(); + +/** + * 相交延伸选项. + * + * @export + * @enum {number} + */ +var IntersectOption; +(function (IntersectOption) { + /** + * 两者都不延伸 + */ + IntersectOption[IntersectOption["OnBothOperands"] = 0] = "OnBothOperands"; + /** + * 延伸自身 + */ + IntersectOption[IntersectOption["ExtendThis"] = 1] = "ExtendThis"; + /** + * 延伸参数 + */ + IntersectOption[IntersectOption["ExtendArg"] = 2] = "ExtendArg"; + /** + * 延伸两者 + */ + IntersectOption[IntersectOption["ExtendBoth"] = 3] = "ExtendBoth"; +})(IntersectOption || (IntersectOption = {})); +//延伸自身还是参数反转 +function reverseIntersectOption(intType) { + if (intType === IntersectOption.ExtendThis) + intType = IntersectOption.ExtendArg; + else if (intType === IntersectOption.ExtendArg) + intType = IntersectOption.ExtendThis; + return intType; +} +/** + * 校验相交点是否满足延伸选项 + * 算法会计算无限延伸状态下的曲线交点,调用该方法进行校验返回校验后的点表 + * + * @param {Vector3[]} intRes 相交点.曲线当作完全状态下的相交点 + * @param {Curve} c1 曲线1 由this参数传入 + * @param {Curve} c2 曲线2 由arg 参数传入 + * @param {Intersect} extType 延伸选项. + * @returns {Array} 校验完成后的点表 + */ +function CheckPointOnCurve(intRes, c1, c2, extType, tolerance = 1e-6) { + return intRes.filter(r => { + if (!(extType & IntersectOption.ExtendThis)) + if (!c1.ParamOnCurve(r.thisParam, tolerance / c1.Length)) + return false; + if (!(extType & IntersectOption.ExtendArg)) + if (!c2.ParamOnCurve(r.argParam, tolerance / c2.Length)) + return false; + return true; + }); +} +function IntersectCircleAndCircle(cu1, cu2) { + if (!cu1.IsCoplaneTo(cu2)) + return []; + let c1OcsInv = cu1.OCSInv; + let c1Ocs = cu1.OCS; + let center1 = cu1.Center.applyMatrix4(c1OcsInv); + let center2 = cu2.Center.applyMatrix4(c1OcsInv); + let radius1 = cu1.Radius; + let radius2 = cu2.Radius; + let pts = []; + let dist = center2.distanceTo(center1); + if (dist < Math.abs(radius1 - radius2) - 1e-3 + || dist > (radius1 + radius2 + 1e-3)) + return pts; + if (equaln(dist, 0, 1e-6)) + return pts; + let dstsqr = dist * dist; + let r1sqr = radius1 * radius1; + let r2sqr = radius2 * radius2; + let a = (dstsqr - r2sqr + r1sqr) / (2 * dist); + let h = Math.sqrt(Math.abs(r1sqr - (a * a))); + let ratio_a = a / dist; + let ratio_h = h / dist; + let dx = center2.x - center1.x; + let dy = center2.y - center1.y; + let phix = center1.x + (ratio_a * dx); + let phiy = center1.y + (ratio_a * dy); + dx *= ratio_h; + dy *= ratio_h; + let p1 = new Vector3(phix + dy, phiy - dx); + let p2 = new Vector3(phix - dy, phiy + dx); + p1.applyMatrix4(c1Ocs); + p2.applyMatrix4(c1Ocs); + pts.push({ + pt: p1, + thisParam: cu1.GetParamAtPoint(p1), + argParam: cu2.GetParamAtPoint(p1), + }); + if (!equalv3(p1, p2)) //防止点重复 + pts.push({ + pt: p2, + thisParam: cu1.GetParamAtPoint(p2), + argParam: cu2.GetParamAtPoint(p2), + }); + return pts; +} +/** + * 计算圆与圆弧的交点. + * + * @export + * @param {Circle} circle 圆 + * @param {Arc} arc 圆弧 + * @param {IntersectOption} extType 延伸选项 + * @returns 交点集合 + */ +function IntersectCircleAndArc(circle, arc, extType, tolerance = 1e-6) { + let pts = IntersectCircleAndCircle(circle, arc); + return CheckPointOnCurve(pts, circle, arc, extType | IntersectOption.ExtendThis, tolerance); +} +/** + * 计算圆弧与圆弧的交点 + * + * @export + * @param {Arc} arc1 圆弧 + * @param {Arc} arc2 圆弧 + * @param {IntersectOption} extType 延伸选项 + * @returns 交点集合 + */ +function IntersectArcAndArc(arc1, arc2, extType, tolerance = 1e-5) { + let pts = IntersectCircleAndCircle(arc1, arc2); + return CheckPointOnCurve(pts, arc1, arc2, extType, tolerance); +} +function IntersectEllipseAndLine(l, el, extType, tolerance = 1e-6) { + let pts = IntersectLineAndEllipseFor2D(l, el); + return CheckPointOnCurve(pts, l, el, extType, tolerance); +} +/** + * 通用方法:计算直线与圆的交点,默认延伸全部 + * + * @export + * @param {Line} line 直线 + * @param {(Circle | Arc)} circle 圆或圆弧 + * @returns 交点集合 + */ +function IntersectLineAndCircleOrArc(line, circle) { + let lineOrg = line.StartPoint; + let lineDirection = line.EndPoint.sub(lineOrg); + let dirLen = lineDirection.length(); + if (equaln(dirLen, 0)) + return []; + lineDirection.divideScalar(dirLen); + let diff = lineOrg.clone().sub(circle.Center); + let a0 = diff.dot(diff) - circle.Radius ** 2; + let a1 = lineDirection.dot(diff); + let discr = a1 ** 2 - a0; + if (equaln(discr, 0, 1e-7)) { + let pt = lineOrg.add(lineDirection.multiplyScalar(-a1)); + return [{ + pt, + thisParam: -a1 / dirLen, + argParam: circle.GetParamAtPoint(pt) + }]; + } + else if (discr > 0) { + let root = Math.sqrt(discr); + let p1 = lineOrg.clone().add(lineDirection.clone().multiplyScalar(-a1 + root)); + let p2 = lineOrg.add(lineDirection.multiplyScalar(-a1 - root)); + return [ + { + pt: p1, + thisParam: (-a1 + root) / dirLen, + argParam: circle.GetParamAtPoint(p1) + }, { + pt: p2, + thisParam: (-a1 - root) / dirLen, + argParam: circle.GetParamAtPoint(p2) + } + ]; + } + return []; +} +//直线和圆 +function IntersectLineAndCircle(line, circle, extType, tolerance = 1e-6) { + let ptArr = IntersectLineAndCircleOrArc(line, circle); + return CheckPointOnCurve(ptArr, line, circle, extType | IntersectOption.ExtendArg); +} +//直线和圆弧 +function IntersectLineAndArc(line, arc, extType, tolerance = 1e-6) { + let ptArr = IntersectLineAndCircleOrArc(line, arc); + return CheckPointOnCurve(ptArr, line, arc, extType, tolerance); +} +function IntersectLAndLFor2D2(p1, p2, p3, p4) { + let dx1 = p1.x - p2.x; + let dx2 = p3.x - p4.x; + let dx3 = p4.x - p2.x; + let dy1 = p1.y - p2.y; + let dy2 = p3.y - p4.y; + let dy3 = p4.y - p2.y; + let det = (dx2 * dy1) - (dy2 * dx1); + if (equaln(det, 0.0, 1e-5)) { + if (equaln(dx2 * dy3, dy2 * dx3, 1e-5)) + return [p1, p2, p3, p4]; + return []; + } + let pt = new Vector3; + let ratio = ((dx1 * dy3) - (dy1 * dx3)) / det; + pt.x = (ratio * dx2) + p4.x; + pt.y = (ratio * dy2) + p4.y; + return [pt]; +} +/** + * 三维中两行之间最短的直线 + * ref:https://stackoverflow.com/questions/2316490/the-algorithm-to-find-the-point-of-intersection-of-two-3d-line-segment + * ref:http://paulbourke.net/geometry/pointlineplane/ + * ref:http://paulbourke.net/geometry/pointlineplane/calclineline.cs + * + * @export + * @param {Vector3} p1 l1.start + * @param {Vector3} p2 l1.end + * @param {Vector3} p3 l2.start + * @param {Vector3} p4 l2.end + * @returns 交点集合 + */ +function ShortestLine3AndLine3(p1, p2, p3, p4, epsilon = 1e-6) { + let p43 = p4.clone().sub(p3); + if (p43.lengthSq() < epsilon) + return; + let p21 = p2.clone().sub(p1); + if (p21.lengthSq() < epsilon) + return; + let p13 = p1.clone().sub(p3); + let d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z; + let d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z; + let d1321 = p13.x * p21.x + p13.y * p21.y + p13.z * p21.z; + let d4343 = p43.x * p43.x + p43.y * p43.y + p43.z * p43.z; + let d2121 = p21.x * p21.x + p21.y * p21.y + p21.z * p21.z; + let denom = d2121 * d4343 - d4321 * d4321; + if (Math.abs(denom) < epsilon) + return; + let numer = d1343 * d4321 - d1321 * d4343; + let mua = numer / denom; + let mub = (d1343 + d4321 * (mua)) / d4343; + let resultSegmentPoint1 = new Vector3(); + resultSegmentPoint1.x = p1.x + mua * p21.x; + resultSegmentPoint1.y = p1.y + mua * p21.y; + resultSegmentPoint1.z = p1.z + mua * p21.z; + let resultSegmentPoint2 = new Vector3(); + resultSegmentPoint2.x = p3.x + mub * p43.x; + resultSegmentPoint2.y = p3.y + mub * p43.y; + resultSegmentPoint2.z = p3.z + mub * p43.z; + return [resultSegmentPoint1, resultSegmentPoint2]; +} +//直线和直线 +function IntersectLineAndLine(l1, l2, extType, fuzz = 1e-4) { + let [pt1, pt2, pt3, pt4] = [l1.StartPoint, l1.EndPoint, l2.StartPoint, l2.EndPoint]; + let ipts; + if (equaln(pt1.z, 0, fuzz) && equaln(pt2.z, 0, fuzz) && equaln(pt3.z, 0, fuzz) && equaln(pt4.z, 0, fuzz)) { + ipts = IntersectLAndLFor2D2(pt1, pt2, pt3, pt4); + ipts.sort(comparePoint("xy")); + arrayRemoveDuplicateBySort(ipts, (p1, p2) => equalv3(p1, p2, fuzz)); + } + else { + ipts = ShortestLine3AndLine3(pt1, pt2, pt3, pt4); + if (!ipts) + return []; + if (ipts.length === 2) + ipts.pop(); + } + let ints = []; + for (let pt of ipts) { + let { closestPt: p1, param: param1 } = l1.GetClosestAtPoint(pt, true); + if (!equalv3(pt, p1, fuzz)) + return []; + if (!(extType & IntersectOption.ExtendThis)) + if (!(l1.ParamOnCurve(param1, 0) || equalv3(pt1, pt, fuzz) || equalv3(pt2, pt, fuzz))) + return []; + let { closestPt: p2, param: param2 } = l2.GetClosestAtPoint(pt, true); + if (!equalv3(pt, p2, fuzz)) + return []; + if (!(extType & IntersectOption.ExtendArg)) + if (!(l2.ParamOnCurve(param2, 0) || equalv3(pt3, pt, fuzz) || equalv3(pt4, pt, fuzz))) + return []; + ints.push({ pt, thisParam: param1, argParam: param2 }); + } + return ints; +} +function IntersectPolylineAndCurve(pl, cu, extType, tolerance = 1e-6) { + let cus = pl.Explode(); + let cus2; + if (cu instanceof Polyline) + cus2 = cu.Explode(); + else + cus2 = [cu]; + let intRes = []; + for (let i = 0; i < cus.length; i++) { + let cu1 = cus[i]; + for (let j = 0; j < cus2.length; j++) { + let cu2 = cus2[j]; + let ext = extType; + let isStart = i === 0; + let isEnd = i === cus.length - 1; + let isStart2 = j === 0; + let isEnd2 = j === cus2.length - 1; + //当曲线闭合时,或者当前的子曲线不是起始和不是结束,那么不延伸曲线. + if (pl.CloseMark || !(isStart || isEnd)) + ext = ext & ~IntersectOption.ExtendThis; + if ((cu instanceof Polyline && cu.CloseMark) || !(isStart2 || isEnd2)) + ext = ext & ~IntersectOption.ExtendArg; + let ptPars = cu1.IntersectWith2(cu2, ext, tolerance).filter(r1 => intRes.every(r2 => !equalv3(r1.pt, r2.pt))); + //校验延伸 + if (IntersectOption.ExtendThis & ext) { + //如果曲线是起始又是结束,那么不校验. + if (isStart && isEnd) ; + else if (isStart) { + ptPars = ptPars.filter(res => res.thisParam <= 1); + } + else if (isEnd) { + ptPars = ptPars.filter(res => res.thisParam >= 0); + } + } + if (IntersectOption.ExtendArg & ext) { + //如果曲线是起始又是结束,那么不校验. + if (isStart2 && isEnd2) ; + else if (isStart2) { + ptPars = ptPars.filter(res => res.argParam + j <= cu2.EndParam); + } + else if (isEnd2) { + ptPars = ptPars.filter(res => res.argParam + j >= 0); + } + } + intRes.push(...ptPars.map(r => { + return { + pt: r.pt, + thisParam: i + r.thisParam, + argParam: j + r.argParam, + }; + })); + } + } + return intRes; +} +function IntersectLineAndEllipseFor2D(l, el) { + if (!l.IsCoplaneTo(el)) + return []; + let mat = new Matrix4().makeRotationZ(-el.Rotation).multiply(el.OCSInv); + let a = el.RadX; + let b = el.RadY; + let sp = l.StartPoint.applyMatrix4(mat); + let ep = l.EndPoint.applyMatrix4(mat); + let pts = []; + if (equaln(sp.x, ep.x)) { + let c = sp.x; + let j = (b ** 2) * (1 - (c ** 2) / (a ** 2)); + if (equaln(j, 0)) { + pts = [new Vector3(sp.x, 0)]; + } + else if (j < 0) + return []; + else { + let y1 = Math.sqrt(j); + let y2 = -Math.sqrt(j); + pts = [ + new Vector3(c, y1), + new Vector3(c, y2) + ]; + } + } + else { + let k = (sp.y - ep.y) / (sp.x - ep.x); + let c = sp.y - sp.x * k; + let j = (2 * a * a * k * c) * (2 * a * a * k * c) - 4 * (b * b + a * a * k * k) * a * a * (c * c - b * b); + if (equaln(j, 0)) { + let x1 = -2 * k * c * a * a / (2 * (b * b + a * a * k * k)); + let y1 = k * x1 + c; + pts = [new Vector3(x1, y1)]; + } + else if (j < 0) + return []; + else { + let x1 = (-2 * k * c * a * a + Math.sqrt(j)) / (2 * (b * b + a * a * k * k)); + let y1 = k * x1 + c; + let x2 = (-2 * k * c * a * a - Math.sqrt(j)) / (2 * (b * b + a * a * k * k)); + let y2 = k * x2 + c; + pts = [ + new Vector3(x1, y1), + new Vector3(x2, y2) + ]; + } + } + let matInv = new Matrix4().getInverse(mat); + return pts.map(p => { + let pt = p.applyMatrix4(matInv); + return { + pt, + thisParam: l.GetParamAtPoint(pt), + argParam: el.GetParamAtPoint(pt) + }; + }); +} +function IntersectEllipseAndCircleOrArc(el, cir, type) { + if (!el.IsCoplaneTo(cir)) + return []; + let a = Math.max(el.RadX, el.RadY); + let dist = el.Center.distanceTo(cir.Center); + let disVail = dist > (a + cir.Radius); + if (disVail) + return []; + if (equalv3(el.Center, cir.Center)) { + let a = el.RadX; + let b = el.RadY; + let r = cir.Radius; + let j = ((a * b) ** 2 - (b * r) ** 2) / (a ** 2 - b ** 2); + let pts = []; + if (equaln(j, 0) || equaln(j, r ** 2)) { + if (equaln(j, 0)) + pts = [ + new Vector3(a, 0), + new Vector3(-a, 0) + ]; + else + pts = [ + new Vector3(0, r), + new Vector3(0, -r) + ]; + } + else if (j < 0) + return []; + else { + let y1 = Math.sqrt(j); + let y2 = -Math.sqrt(j); + let n = r ** 2 - j; + let x1 = Math.sqrt(n); + let x2 = -Math.sqrt(n); + pts = [ + new Vector3(x1, y1), + new Vector3(x1, y2), + new Vector3(x2, y1), + new Vector3(x2, y2), + ]; + } + let ro = new Matrix4().makeRotationZ(el.Rotation); + let res = pts.map(p => { + let pt = p.applyMatrix4(ro).applyMatrix4(el.OCS); + return { + pt, + thisParam: el.GetParamAtPoint(pt), + argParam: cir.GetParamAtPoint(pt) + }; + }); + return CheckPointOnCurve(res, el, cir, type); + } + else { + let pts = el.Shape.getPoints(60); + let lineData = pts.map(p => { + return { pt: p, bul: 0 }; + }); + let pl = new Polyline(lineData); + let cirClone = cir.Clone().ApplyMatrix(el.OCSInv); + if (type === IntersectOption.ExtendBoth) + type = IntersectOption.ExtendArg; + else if (type !== IntersectOption.ExtendArg) + type = IntersectOption.OnBothOperands; + let intPts = IntersectPolylineAndCurve(pl, cirClone, type); + intPts.forEach(r => r.pt.applyMatrix4(el.OCS)); + return intPts; + } +} +function IntersectEllipse(el1, el2, type) { + if (!el1.IsCoplaneTo(el2)) + return []; + let isEqul = equalv3(el1.Center, el2.Center) + && equaln(el1.RadX, el2.RadX) + && equaln(el1.RadY, el2.RadY) + && equalv3(el1.StartPoint, el2.StartPoint); + if (isEqul) + return []; + let a1 = Math.max(el1.RadX, el1.RadY); + let a2 = Math.max(el2.RadX, el2.RadY); + let dist = el1.Center.distanceToSquared(el2.Center); + if (dist > (a1 + a2) ** 2) { + return []; + } + if (!el1.BoundingBox.intersectsBox(el2.BoundingBox)) + return []; + let diffMat = el1.OCSInv.multiply(el2.OCS); + let pts1 = el1.Shape.getPoints(60); + let pts2 = el2.Shape.getPoints(60); + let lineData1 = pts1.map(p => { + return { pt: p, bul: 0 }; + }); + let lineData2 = pts2.map(p => { + return { pt: p, bul: 0 }; + }); + let pl1 = new Polyline(lineData1); + let pl2 = new Polyline(lineData2).ApplyMatrix(diffMat); + let intPts = pl1.IntersectWith2(pl2, 0); + intPts.forEach(r => r.pt.applyMatrix4(el1.OCS)); + return intPts; +} + +var Arc_1; +/** + * 圆弧实体类 + * 与ACAD不同,这个类加入了时针变量,并且默认构造的圆弧为顺时针圆弧. + * + * 关于时针圆弧: + * 起始圆弧到终止圆弧总是在0-2PI之间.(一个完整的圆). + * 圆弧的绘制从起始圆弧绘制到终止圆弧. 按照时针绘制. + * 参考计算圆弧的完整角度方法查看该计算方式. + */ +let Arc = Arc_1 = class Arc extends Curve { + constructor(center = new Vector3(), radius = 0.1, startAngle = 0.1, endAngle = 0, clockwise = true) { + super(); + /** + * 曲线为顺时针 + */ + this._Clockwise = true; + this._Matrix.setPosition(center); + this._Radius = radius; + this._StartAngle = clampRad(startAngle); + this._EndAngle = clampRad(endAngle); + this._Clockwise = clockwise; + } + get Shape() { + let sp = new Shape$1(); + sp.absarc(0, 0, this._Radius, this._StartAngle, this._EndAngle, this._Clockwise); + return sp; + } + get Center() { + return this.Position; + } + set Center(v) { + this.Position = v; + } + get Normal() { + return new Vector3().setFromMatrixColumn(this._Matrix, 2); + } + set Normal(v) { + this.WriteAllObjectRecord(); + matrixSetVector(this._Matrix, 2, v); + this.Update(); + } + get Area() { + return 0.5 * this.AllAngle * this.Radius * this.Radius; + } + //获得曲线的面积,逆时针为正,顺时针为负. + get Area2() { + let clockwise = this._Clockwise ? -1 : 1; + return 0.5 * this.AllAngle * this.Radius * this.Radius * clockwise; + } + get IsClose() { + return false; + } + get BoundingBox() { + let pts = [this.StartPoint, this.EndPoint]; + //TODO:考虑三维圆弧. + let addPts = [ + this.Center.add(new Vector3(this._Radius, 0)), + this.Center.add(new Vector3(0, this._Radius)), + this.Center.add(new Vector3(-this._Radius, 0)), + this.Center.add(new Vector3(0, -this._Radius)), + ]; + addPts.forEach(p => { + if (this.PtOnCurve(p)) + pts.push(p); + }); + return new Box3().setFromPoints(pts); + } + get Radius() { + return this._Radius; + } + set Radius(v) { + this.WriteAllObjectRecord(); + this._Radius = v <= 0 ? 1e-19 : v; + this.Update(); + } + get IsClockWise() { + return this._Clockwise; + } + set IsClockWise(v) { + if (v !== this._Clockwise) { + this.WriteAllObjectRecord(); + this._Clockwise = v; + this.Update(); + } + } + get StartAngle() { + return this._StartAngle; + } + set StartAngle(v) { + this.WriteAllObjectRecord(); + this._StartAngle = v; + this.Update(); + } + get EndAngle() { + return this._EndAngle; + } + set EndAngle(v) { + this.WriteAllObjectRecord(); + this._EndAngle = v; + this.Update(); + } + //******************** Curve function start*****************// + get StartPoint() { + return polar(new Vector3(), this._StartAngle, this._Radius).applyMatrix4(this.OCS); + } + set StartPoint(v) { + let vTemp = v.clone().applyMatrix4(this.OCSInv); + this.StartAngle = angle(vTemp); + } + get EndPoint() { + return polar(new Vector3(), this._EndAngle, this._Radius).applyMatrix4(this.OCS); + } + set EndPoint(v) { + let vTemp = v.clone().applyMatrix4(this.OCSInv); + this.EndAngle = angle(vTemp); + } + get StartParam() { + return 0; + } + get EndParam() { + return 1; + } + get Length() { + return this.AllAngle * this._Radius; + } + GetParamAtPoint2(pt) { + return this.GetParamAtAngle(this.GetAngleAtPoint(pt)); + } + //点在曲线上,已经确定点在曲线的延伸线上 + PtOnCurve3(p, fuzz = 1e-6) { + let param = this.GetParamAtPoint2(p); + return this.ParamOnCurve(param, fuzz); + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + this.Center = this.Center.applyMatrix4(m); + this.Radius = this.Radius * m.getMaxScaleOnAxis(); + return this; + } + ApplyMirrorMatrix(m) { + this.WriteAllObjectRecord(); + let sp = this.StartPoint; + let ep = this.EndPoint; + reviseMirrorMatrix(this._Matrix); + this._Clockwise = !this._Clockwise; + this.StartPoint = sp; + this.EndPoint = ep; + return this; + } + GetPointAtParam(param) { + let an = this.GetAngleAtParam(param); + return polar(new Vector3(), an, this._Radius).applyMatrix4(this.OCS); + } + GetPointAtDistance(distance) { + let len = this.Length; + if (len == 0) + return; + return this.GetPointAtParam(distance / len); + } + GetDistAtParam(param) { + return Math.abs(param * this.Length); + } + GetDistAtPoint(pt) { + let param = this.GetParamAtPoint(pt); + return this.GetDistAtParam(param); + } + GetParamAtPoint(pt) { + if (this._Radius == 0 || + this.AllAngle == 0 || + !equaln(pt.distanceTo(this.Center), this._Radius, 1e-6)) + return NaN; + return this.GetParamAtAngle(this.GetAngleAtPoint(pt)); + } + /** + * 利用角度计算该角度在圆弧中代表的参数. + * 如果角度在圆弧内,那么返回0-1 + * 如果角度不在圆弧内,那么尝试返回离圆弧起始或者结束的较近的参数 + * + * @param {number} an + * @returns + * @memberof Arc + */ + GetParamAtAngle(an) { + //如果以pt为终点,那么所有的角度为 + let ptAllAn = this.ComputeAnlge(an); + let allAn = this.AllAngle; + //减去圆弧角度,剩余角度的一半 + let surplusAngleHalf = Math.PI - allAn / 2; + if (ptAllAn > allAn + surplusAngleHalf) //返回负数 + return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn; + else //返回正数 + return ptAllAn / allAn; + } + /** + * 根据角度获得参数,不过在这里我们可以指定我们是要获取前面的参数还是后面的参数(正负) + * @param an + * @param [isStart] true:返回负数,false 返回正数 + * @returns + */ + GetParamAtAngle2(an, isStart = true) { + //如果以pt为终点,那么所有的角度为 + let ptAllAn = this.ComputeAnlge(an); + let allAn = this.AllAngle; + //减去圆弧角度,剩余角度的一半 + let surplusAngleHalf = Math.PI - allAn / 2; + if (isStart) //返回负数 + return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn; + else //返回正数 + return ptAllAn / allAn; + } + GetAngleAtPoint(pt) { + let ptTmp = pt.clone().applyMatrix4(this.OCSInv); + return angle(ptTmp); + } + GetAngleAtParam(param) { + return clampRad(this._StartAngle + param * this.AllAngle * (this._Clockwise ? -1 : 1)); + } + GetSplitCurves(param) { + let params = this.SplitParamSort(param); + //角度列表 + let ans = params.map(p => this.GetAngleAtParam(p)); + //返回圆弧表 + let arcs = []; + for (let i = 0; i < ans.length - 1; i++) { + let arc = this.Clone(); + arc.ColorIndex = this.ColorIndex; + arc.StartAngle = ans[i]; + arc.EndAngle = ans[i + 1]; + arcs.push(arc); + } + return arcs; + } + GetOffsetCurves(offsetDist) { + if (this._Clockwise) + offsetDist *= -1; + if ((offsetDist + this._Radius) > 0) { + let arc = this.Clone(); + arc.Radius = offsetDist + this._Radius; + return [arc]; + } + return []; + } + Extend(newParam) { + this.WriteAllObjectRecord(); + if (newParam < 0) { + this._StartAngle = this.GetAngleAtParam(newParam); + } + else if (newParam > 1) { + this._EndAngle = this.GetAngleAtParam(newParam); + } + this.Update(); + } + Join(cu) { + if (cu instanceof Arc_1) { + //非常小的圆弧直接结束 + if (cu.AllAngle < 5e-6) + return Status.False; + if (equalv3(cu.Center, this.Center) && equaln(cu._Radius, this._Radius)) { + this.WriteAllObjectRecord(); + let [sa, ea] = [cu.StartAngle, cu.EndAngle]; + if (cu._Clockwise != this._Clockwise) + [sa, ea] = [ea, sa]; + let allAn = this.AllAngle; + let saAllan = this.ComputeAnlge(sa); + let eaAllan = this.ComputeAnlge(ea); + if (equaln(sa, this._StartAngle)) //this起点对起点 + { + if (eaAllan > allAn) + this.EndAngle = ea; + return Status.True; + } + else if (equaln(sa, this._EndAngle)) //this终点对起点 + { + if (eaAllan < allAn || equaln(ea, this._StartAngle)) + return Status.ConverToCircle; + else + this.EndAngle = ea; + return Status.True; + } + else if (equaln(ea, this.StartAngle)) //this起点对终点 + { + if (saAllan < allAn) + return Status.ConverToCircle; + else + this.StartAngle = sa; + return Status.True; + } + else if (equaln(ea, this._EndAngle)) //this终点对终点 + { + if (saAllan > allAn) + this.StartAngle = sa; + return Status.True; + } + else if (this.ParamOnCurve(this.GetParamAtAngle(sa))) { + if (eaAllan < saAllan) + return Status.ConverToCircle; + else if (eaAllan > allAn) + this.EndAngle = ea; + return Status.True; + } + else if (this.ParamOnCurve(this.GetParamAtAngle(ea))) { + this.StartAngle = sa; + return Status.True; + } + //使用按负方向去计算它的参数 + let saParam; + if (saAllan > allAn) + saParam = (saAllan - Math.PI * 2) / allAn; + else + saParam = saAllan / allAn; + let eaParam; + if (eaAllan > saAllan && saAllan > allAn) + eaParam = (eaAllan - Math.PI * 2) / allAn; + else + eaParam = eaAllan / allAn; + let pMin = Math.max(0, saParam); + let pMax = Math.min(1, eaParam); + if (pMin <= pMax + 1e-5) { + if (saParam < 0) + this.StartAngle = sa; + if (eaParam > 1) + this.EndAngle = ea; + return Status.True; + } + } + } + return Status.False; + } + Reverse() { + this.WriteAllObjectRecord(); + this._Clockwise = !this._Clockwise; + [this._StartAngle, this._EndAngle] = [this._EndAngle, this._StartAngle]; + return this; + } + IntersectWith2(curve, intType, tolerance = 1e-4) { + if (curve instanceof Arc_1) { + return IntersectArcAndArc(this, curve, intType); + } + if (curve instanceof Line) { + return SwapParam(IntersectLineAndArc(curve, this, reverseIntersectOption(intType), tolerance)); + } + if (curve instanceof Circle) { + return SwapParam(IntersectCircleAndArc(curve, this, reverseIntersectOption(intType), tolerance)); + } + if (curve instanceof Polyline) + return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType), tolerance)); + if (curve instanceof Ellipse) + return SwapParam(IntersectEllipseAndCircleOrArc(curve, this, intType)); + return []; + } + /** + * 计算出圆弧所包含的角度 + * + * @readonly + * @type {number} + * @memberof Arc + */ + get AllAngle() { + return this.ComputeAnlge(this._EndAngle); + } + get Bul() { + if (equaln(this.AllAngle, Math.PI * 2)) + return 1; + return Math.tan(this.AllAngle * 0.25) * (this.IsClockWise ? -1 : 1); + } + /** + * 计算所包含的角度 + * + * @private + * @param {number} endAngle 结束的角度 + * @returns + * @memberof Arc + */ + ComputeAnlge(endAngle) { + //顺时针 + if (this._Clockwise) { + if (this._StartAngle > endAngle) + return this.StartAngle - endAngle; + else //越过0点绘制圆弧 + return (Math.PI * 2) - (endAngle - this._StartAngle); + } + else { + if (endAngle > this._StartAngle) + return endAngle - this._StartAngle; + else + return (Math.PI * 2) - (this._StartAngle - endAngle); + } + } + /** + * 解析两点和凸度所构成的圆弧 + * + * @param {Vector2} p1 + * @param {Vector2} p2 + * @param {number} bul 凸度,在cad中,凸度为 <(四分之一圆心角)的正切值> + */ + ParseFromBul(p1, p2, bul) { + if (p1 instanceof Vector2) + p1 = AsVector3(p1); + if (p2 instanceof Vector2) + p2 = AsVector3(p2); + let ocsInv = this.OCSInv; + p1 = p1.clone().applyMatrix4(ocsInv); + p2 = p2.clone().applyMatrix4(ocsInv); + //弦向量 + let chordV = p2.clone().sub(p1); + //弦角度 + let chordAn = angle(chordV); + //弦长度/2 + let chordLengthHalf = chordV.length() / 2; + let allAngle = Math.atan(bul) * 4; + let HalfAngle = allAngle * 0.5; + //半径 + this._Radius = chordLengthHalf / Math.sin(HalfAngle); + //指向圆心的角度 + let toCenterAn = chordAn + Math.PI * 0.5; //弦角度转90 + //圆心 + let center = midPoint(p1, p2); + polar(center, toCenterAn, this._Radius - (bul * chordLengthHalf)); + this.Center = center.clone().applyMatrix4(this.OCS); + this._Radius = Math.abs(this._Radius); + this._StartAngle = angle(p1.clone().sub(center)); + this._EndAngle = angle(p2.clone().sub(center)); + this._Clockwise = bul < 0; + return this; + } + FromThreePoint(pt1, pt2, pt3) { + if (!(pt1 && pt2 && pt3)) + return; + let ocsInv = this.OCSInv; + pt1 = pt1.clone().applyMatrix4(ocsInv).setZ(0); + pt2 = pt2.clone().applyMatrix4(ocsInv).setZ(0); + pt3 = pt3.clone().applyMatrix4(ocsInv).setZ(0); + let center = getCircleCenter(pt1, pt2, pt3); + this.Center = center.clone().applyMatrix4(this.OCS); + //用圆心和其中一个点求距离得到半径: + this._Radius = center.distanceTo(pt1); + //起始角度 端点角度 + this._StartAngle = angle(pt1.clone().sub(center)); + this._EndAngle = angle(pt3.clone().sub(center)); + //求出向量p1->p2,p1->p3 + let p1 = pt2.clone().sub(pt1); + let p2 = pt3.clone().sub(pt1); + this._Clockwise = p1.cross(p2).z < 0; + return this; + } + /** + * 重载: 初始化绘制实体. + * + * @param {RenderType} [renderType=RenderType.Wireframe] + */ + InitDrawObject(renderType = RenderType.Wireframe) { + let geo = BufferGeometryUtils.CreateFromPts(this.Shape.getPoints(60).map(AsVector3)); + if (renderType === RenderType.WireframePrint) { + var geometry = new LineGeometry(); + geometry.setPositions(geo.attributes.position.array); + return new Line2(geometry, ColorMaterial.PrintLineMatrial); + } + return new Line$1(geo, ColorMaterial.GetLineMaterial(this._Color)); + } + //更新Geometry + UpdateGeometry(geo) { + let pts = this.Shape.getPoints(60).map(AsVector3); + BufferGeometryUtils.UpdatePts(geo, pts); + } + /** + * 重载:更新绘制的实体 + * + * @param {RenderType} type + * @param {Object3D} obj + * @memberof Arc + */ + UpdateDrawObject(type, obj) { + let geo = obj["geometry"]; + this.UpdateGeometry(geo); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return [this.StartPoint, this.EndPoint]; + case ObjectSnapMode.Mid: + return [this.GetPointAtParam(0.5)]; + case ObjectSnapMode.Nea: + return getArcOrCirNearPts(this, pickPoint, viewXform) + .filter(p => this.PtOnCurve(p)); + case ObjectSnapMode.Ext: + return [this.GetClosestPointTo(pickPoint, true)]; + case ObjectSnapMode.Cen: + return [this.Center]; + case ObjectSnapMode.Per: + if (lastPoint) { + if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10)) + return []; + let l = new Line(this.Center, lastPoint); + return l.IntersectWith(this, IntersectOption.ExtendBoth).filter(p => this.PtOnCurve(p)); + } + case ObjectSnapMode.Tan: + let pts = GetTanPtsOnArcOrCircle(this, lastPoint); + if (pts) + return pts.filter(p => this.PtOnCurve(p)); + } + return []; + } + GetGripPoints() { + return [ + this.StartPoint, + this.GetPointAtParam(0.5), + this.EndPoint, + this.Center.clone(), + ]; + } + MoveGripPoints(indexList, vec) { + if (indexList.length > 0) { + this.WriteAllObjectRecord(); + let ptsArr = this.GetGripPoints(); + let index = indexList[0]; + let p = ptsArr[index]; + if (p) { + p.add(vec); + if (index > 2) + this.Center = this.Center.add(vec); + else + this.FromThreePoint(ptsArr[0], ptsArr[1], ptsArr[2]); + this.Update(); + } + } + } + GetStretchPoints() { + return [this.StartPoint, this.EndPoint]; + } + MoveStretchPoints(indexList, vec) { + if (indexList.length === 0) + return; + this.WriteAllObjectRecord(); + if (indexList.length === 2) + this.ApplyMatrix(MoveMatrix(vec)); + else + for (let index of indexList) { + let pts = [this.StartPoint, this.EndPoint]; + let [sp, ep] = pts; + let oldChordLengthHalf = sp.distanceTo(ep) * 0.5; + let arcHeight = oldChordLengthHalf * this.Bul; + pts[index].add(vec); + let newChordLengthHalf = sp.distanceTo(ep) * 0.5; + let newBul = arcHeight / newChordLengthHalf; + //根据凸度构造新的弧 + this.ParseFromBul(sp, ep, newBul); + this.Update(); + } + } + GetParamAtDist(d) { + return d / this.Length; + } + GetFistDeriv(pt) { + let an; + if (typeof pt === "number") + an = this.GetAngleAtParam(pt); + else + an = angle(pt.clone().applyMatrix4(this.OCSInv)); + an += Math.PI * 0.5 * (this._Clockwise ? -1 : 1); + let ocs = new Matrix4().extractRotation(this.OCS); + return polar(new Vector3(), an, this._Radius).applyMatrix4(ocs); + } + GetClosestPointTo(pt, extend) { + let l = new Line(this.Center, pt); + let inPts = this.IntersectWith(l, extend ? IntersectOption.ExtendBoth : IntersectOption.ExtendArg); + if (inPts.length < 2) + inPts.push(this.StartPoint, this.EndPoint); + return inPts.reduce((p1, p2) => p1.distanceToSquared(pt) < p2.distanceToSquared(pt) ? p1 : p2); + } + //#region -------------------------File------------------------- + //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 + //对象从文件中读取数据,初始化自身 + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); + if (ver === 1) { + this.Center = new Vector3().fromArray(file.Read()); + this.Normal = new Vector3().fromArray(file.Read()); + } + this._Radius = file.Read(); + this._StartAngle = file.Read(); + this._EndAngle = file.Read(); + this._Clockwise = file.Read(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(2); + file.Write(this._Radius); + file.Write(this._StartAngle); + file.Write(this._EndAngle); + file.Write(this._Clockwise); + } +}; +Arc = Arc_1 = __decorate([ + Factory +], Arc); + +/** + * 一个简单的计数器实现,本质是使用一个Map来保存元素的个数 + * + * 例: + * let count = new Count(); + * count.AddCount("Test", 1); + * count.GetCount("Test");//现在 Test 的个数为1 + */ +class Count { + constructor() { + this.m_CountMap = new WeakMap(); + } + GetCount(obj) { + let count = this.m_CountMap.get(obj); + if (!count) { + this.m_CountMap.set(obj, 0); + count = 0; + } + return count; + } + AddCount(obj, add) { + this.m_CountMap.set(obj, this.GetCount(obj) + add); + } +} + +/** + * 轨道控制的数学类,观察向量和角度的互相转换 + * 当x当抬头或者低头到90度时,触发万向锁. + */ +class Orbit { + constructor() { + //抬头低头 正数抬头 负数低头 + this.phi = 0; //Φ + //身体旋转 0为正右边 逆时针旋转 + this.theta = 0; //θ + } + get RoX() { + return this.phi; + } + set RoX(v) { + this.phi = MathUtils.clamp(v, Math.PI * -0.49, Math.PI * 0.49); + } + /** + * 使用旋转角度 计算观察向量 + * @param [outDirection] 引用传入,如果传入,那么就不构造新的向量 + * @returns 返回观察向量 + */ + UpdateDirection(outDirection = new Vector3()) { + outDirection.z = Math.sin(this.phi); + //归一化专用. + let d = Math.abs(Math.cos(this.phi)); + outDirection.x = Math.cos(this.theta) * d; + outDirection.y = Math.sin(this.theta) * d; + return outDirection; + } + /** + * 使用观察向量,计算旋转角度 + * @param dir 这个向量会被修改成单位向量. + */ + SetFromDirection(dir) { + dir.normalize(); + this.phi = Math.asin(dir.z); + if (equaln(dir.x, 0) && equaln(dir.y, 0)) + if (dir.z > 0) + this.theta = Math.PI * -0.5; + else + this.theta = Math.PI * 0.5; + else + this.theta = Math.atan2(dir.y, dir.x); + } + /** + * 参考任意轴坐标系算法. + * http://help.autodesk.com/view/ACD/2017/CHS/?guid=GUID-E19E5B42-0CC7-4EBA-B29F-5E1D595149EE + */ + static ComputUpDirection(n, ay = new Vector3(), ax = new Vector3()) { + n.normalize(); + if (Math.abs(n.x) < 0.015625 && Math.abs(n.y) < 0.015625) + ax.crossVectors(YAxis, n); + else + ax.crossVectors(ZAxis, n); + ay.crossVectors(n, ax); + ax.normalize(); + ay.normalize(); + return ay; + } +} + +//3点获取圆心 +function getCircleCenter(pt1, pt2, pt3) { + if (!(pt1 && pt2 && pt3)) + return; + let A1 = pt1.x - pt2.x; + let B1 = pt1.y - pt2.y; + let C1 = (Math.pow(pt1.x, 2) - Math.pow(pt2.x, 2) + Math.pow(pt1.y, 2) - Math.pow(pt2.y, 2)) / 2; + let A2 = pt3.x - pt2.x; + let B2 = pt3.y - pt2.y; + let C2 = (Math.pow(pt3.x, 2) - Math.pow(pt2.x, 2) + Math.pow(pt3.y, 2) - Math.pow(pt2.y, 2)) / 2; + //令temp = A1*B2 - A2*B1 + let temp = A1 * B2 - A2 * B1; + let center = new Vector3(); + //判断三点是否共线 + if (temp === 0) { + //共线则将第一个点pt1作为圆心 + center.x = pt1.x; + center.y = pt1.y; + } + else { + //不共线则求出圆心: + center.x = (C1 * B2 - C2 * B1) / temp; + center.y = (A1 * C2 - A2 * C1) / temp; + } + return center; +} +//行列式 +function getDeterminantFor2V(v1, v2) { + return v1.x * v2.y - v1.y * v2.x; +} +/** + * 曲线根据连接来分组,每组都是一条首尾相连的曲线表. + * + * @export + * @param {Curve[]} cus 传入的分组的曲线表 + * @returns {Array>} 返回如下 + * [ + * [c1,c2,c3...],//后面的曲线的起点总是等于上一个曲线的终点 + * [c1,c2,c3...], + * ] + */ +function curveLinkGroup(cus) { + //返回的曲线组 + let groupCus = new Array(); + //将封闭的曲线先提取出来 + cus = cus.filter(c => { + let isClose = c.IsClose; + if (isClose) + groupCus.push([c]); + return !isClose; + }); + if (cus.length === 0) + return groupCus; + //曲线节点图 + let cuMap = new CurveMap(); + cus.forEach(c => cuMap.AddCurveToMap(c)); + //曲线站点表 + let stands = cuMap.Stands; + //曲线使用计数 + let cuCount = new Count(); + /** + * 从站点的路线中任意取一条,加入到曲线数组中. + * + * @param {Curve[]} cus 已经连接的曲线列表 + * @param {boolean} isEndSeach true:从终点搜索,false:从起点搜索 + * @returns {Stand} 如果站点中存在可以取得的曲线,返回下个站点,否则返回undefined + */ + function linkCurve(stand, cus, isEndSeach) { + for (let route of stand.routes) { + let cu = route.curve; + if (cuCount.GetCount(cu) === 0) { + if (isEndSeach) { + //保证曲线总是从起点连接到终点 + if (!equalv3(cu.StartPoint, stand.position)) + cu.Reverse(); + cus.push(cu); + } + else { + //保证曲线总是从起点连接到终点 + if (!equalv3(cu.EndPoint, stand.position)) + cu.Reverse(); + cus.unshift(cu); + } + cuCount.AddCount(cu, 1); + return route.to; + } + } + } + for (let stand of stands) { + let startStand = stand; + let cus = []; //形成合并轮廓的曲线组 + while (startStand) + startStand = linkCurve(startStand, cus, true); + if (cus.length > 0) { + startStand = cuMap.GetOnlyVertice(cus[0].StartPoint); + while (startStand) + startStand = linkCurve(startStand, cus, false); + } + if (cus.length > 0) + groupCus.push(cus); + } + return groupCus; +} +function equalCurve(cu1, cu2, tolerance = 1e-4) { + if ((cu1 instanceof Polyline) && (cu2 instanceof Polyline)) { + if (cu1.IsClose !== cu2.IsClose || !isParallelTo(cu1.Normal, cu2.Normal)) + return false; + let area1 = cu1.Area2; + let area2 = cu2.Area2; + if (!equaln(Math.abs(area1), Math.abs(area2), 0.1)) + return false; + let ptsBuls1 = cu1.PtsBuls; + let ptsBuls2 = cu2.PtsBuls; + let pts1 = ptsBuls1.pts; + let pts2 = ptsBuls2.pts; + let buls1 = ptsBuls1.buls; + let buls2 = ptsBuls2.buls; + let isEqualArea = equaln(area1, area2, 0.1); + if (!equalv3(cu1.Normal, cu2.Normal)) { + if (isEqualArea) { + pts2.reverse(); + buls2.reverse(); + buls2.push(buls2.shift()); + } + else + buls2 = buls2.map(bul => -bul); + } + else if (!isEqualArea) { + pts2.reverse(); + buls2.reverse(); + buls2 = buls2.map(bul => -bul); + buls2.push(buls2.shift()); + } + if (cu1.IsClose && equalv2(pts1[0], arrayLast(pts1), tolerance)) { + pts1.pop(); + buls1.pop(); + } + if (cu2.IsClose && equalv2(pts2[0], arrayLast(pts2), tolerance)) { + pts2.pop(); + buls2.pop(); + } + let cu1Sp = AsVector2(cu1.StartPoint.applyMatrix4(cu2.OCSInv)); + let index = pts2.findIndex(p => equalv2(cu1Sp, p, tolerance)); + changeArrayStartIndex(buls2, index); + changeArrayStartIndex(pts2, index); + return equalArray(buls1, buls2, equaln) && + equalArray(pts1, pts2, (p1, p2) => equalv3(AsVector3(p1).applyMatrix4(cu1.OCS), AsVector3(p2).applyMatrix4(cu2.OCS), tolerance)); + } + else if (cu1 instanceof Circle && cu2 instanceof Circle) { + return equalv3(cu1.Center, cu2.Center) && equaln(cu1.Radius, cu2.Radius, 1e-6); + } + else if (cu1 instanceof Arc && cu2 instanceof Arc) { + if (!equalv3(cu1.StartPoint, cu2.EndPoint)) + cu1.Reverse(); + return equalv3(cu1.Center, cu2.Center) + && equaln(cu1.Radius, cu2.Radius, 1e-6) + && equaln(cu1.StartAngle, cu2.StartAngle) + && equaln(cu1.EndAngle, cu2.EndAngle); + } + else if (cu1 instanceof Ellipse && cu2 instanceof Ellipse) { + return equalv3(cu1.Center, cu2.Center) + && equaln(cu1.RadX, cu2.RadX) + && equaln(cu1.RadY, cu2.RadY) + && equalv3(cu1.StartPoint, cu2.StartPoint); + } + else if (cu1 instanceof Line && cu2 instanceof Line) { + let ps1 = [cu1.StartPoint, cu1.EndPoint]; + let ps2 = [cu2.StartPoint, cu2.EndPoint]; + return ps1.every(p => ps2.some(p1 => equalv3(p1, p))); + } + return false; +} +/** +* 计算点在曲线前进方向的方位,左边或者右边 +* +* @param {Curve} cu +* @param {Vector3} pt +* @returns {boolean} 左边为-1,右边为1 +*/ +function GetPointAtCurveDir(cu, pt) { + if (cu instanceof Circle) + return cu.PtInCurve(pt) ? -1 : 1; + else if (cu instanceof Polyline) { + let u = new OffsetPolyline(cu, 1); + u.InitSubCurves(); + return u.GetPointAtCurveDir(pt.clone().applyMatrix4(cu.OCSInv).setZ(0)); + } + //最近点 + let cp = cu.GetClosestPointTo(pt, false); + if (equalv3(cp, pt, 1e-6)) + return 0; + //最近点参数 + let cparam = cu.GetParamAtPoint(cp); + let dri = cu.GetFistDeriv(cparam); + let cross = dri.cross(pt.clone().sub(cp)).applyMatrix4(cu.OCSInv); + return -Math.sign(cross.z); +} +function ConverCircleToPolyline(cir) { + //该写法不支持三维坐标系 + // let pl = new Polyline(); + // let bul = Math.tan(Math.PI * 0.125); + // for (let i = 0; i < 4; i++) + // { + // let p = cir.GetPointAtParam(i * 0.25); + // pl.AddVertexAt(i, Vec3DTo2D(p)); + // pl.SetBulgeAt(i, bul); + // } + // pl.CloseMark = true; + // return pl; + let arcs = cir.GetSplitCurves([0, 0.5]); + let pl = new Polyline(); + pl.OCS = cir.OCS; + pl.Join(arcs[0]); + pl.Join(arcs[1]); + return pl; +} +function GetTanPtsOnArcOrCircle(cu, lastPoint) { + if (lastPoint) { + //ref:wykobi + let ocsInv = cu.OCSInv; + let v = lastPoint.clone().applyMatrix4(ocsInv); + let lengthSq = v.lengthSq(); + let radiusSq = cu.Radius ** 2; + if (lengthSq >= radiusSq) { + let ratio = 1 / lengthSq; + let deltaDist = Math.sqrt(lengthSq - radiusSq); + let pts = [ + new Vector3(cu.Radius * (cu.Radius * v.x - v.y * deltaDist) * ratio, cu.Radius * (cu.Radius * v.y + v.x * deltaDist) * ratio), + new Vector3(cu.Radius * (cu.Radius * v.x + v.y * deltaDist) * ratio, cu.Radius * (cu.Radius * v.y - v.x * deltaDist) * ratio), + ]; + for (let p of pts) + p.applyMatrix4(cu.OCS); + return pts; + } + } +} +function getArcOrCirNearPts(cu, pickPoint, viewXform) { + let viewNormal = new Vector3().fromArray(viewXform.elements, 2 * 3); + let plane = new PlaneExt(cu.Normal, cu.Center); + let pickLocal = plane.intersectLine(new Line3(pickPoint, pickPoint.clone().add(viewNormal)), new Vector3(), true); + if (pickLocal) { + let x = new Vector3().fromArray(viewXform.elements, 0).add(pickLocal); + let y = new Vector3().fromArray(viewXform.elements, 3).add(pickLocal); + x = plane.intersectLine(new Line3(x, x.clone().add(viewNormal)), new Vector3(), true); + y = plane.intersectLine(new Line3(y, y.clone().add(viewNormal)), new Vector3(), true); + let lx = new Line(pickLocal, x); + let ly = new Line(pickLocal, y); + let ins = cu.IntersectWith(lx, IntersectOption.ExtendBoth); + ins.push(...cu.IntersectWith(ly, IntersectOption.ExtendBoth)); + return ins; + } + else { + let ptLocal = plane.projectPoint(pickPoint, new Vector3()); + let lz = new Line(ptLocal, ptLocal.clone().add(viewNormal)); + return cu.IntersectWith(lz, IntersectOption.ExtendBoth); + } +} +function getTanPtsOnEllipse(cu, lastPoint) { + return []; +} +function IsRect(cu) { + if (cu instanceof Polyline) { + if (!cu.IsClose) + return { isRect: false }; + let pts = cu.GetStretchPoints(); + if (pts.length < 4) + return { isRect: false }; + let xVec; + let p1 = pts[0]; + for (let i = 1; i < pts.length; i++) { + xVec = pts[i].clone().sub(p1).normalize(); + if (!equalv3(xVec, ZeroVec)) + break; + } + if (!xVec) + return { isRect: false }; + let zVec = cu.Normal; + let yVec = zVec.clone().cross(xVec).normalize(); + let rectOCS = new Matrix4().makeBasis(xVec, yVec, zVec); + let rectOCSInv = new Matrix4().getInverse(rectOCS); + for (let p of pts) + p.applyMatrix4(rectOCSInv); + let box = new Box3().setFromPoints(pts); + let size = box.getSize(new Vector3); + if (equaln(size.x * size.y, cu.Area, 0.1)) { + return { + isRect: true, + size, + box, + OCS: rectOCS, + }; + } + } + return { isRect: false }; +} +function MergeCurvelist(cus) { + for (let i = 0; i < cus.length; i++) { + let c1 = cus[i]; + let nextI = FixIndex(i + 1, cus); + let c2 = cus[nextI]; + let status = equaln(c2.Length, 0, LINK_FUZZ) ? Status.True : c1.Join(c2, false, LINK_FUZZ); + if (status === Status.True) { + cus.splice(nextI, 1); + i--; + } + else if (status === Status.ConverToCircle) { + cus.length = 0; + let a = c1; + cus.push(new Circle(a.Center, a.Radius)); + break; + } + } + return cus; +} +function SwapParam(res) { + for (let r of res) + [r.thisParam, r.argParam] = [r.argParam, r.thisParam]; + return res; +} +function ComputerCurvesNormalOCS(curves, allowAutoCalc = true) { + if (!curves || curves.length === 0) + return; + //准备计算多段线的法向量 + let normal; + let firstV; + for (let c of curves) { + if (c instanceof Arc) { + normal = c.Normal; + break; + } + else if (firstV) { + let v = c.GetFistDeriv(0); + v.cross(firstV); + if (!equalv3(v, ZeroVec)) { + normal = v.normalize(); + break; + } + } + else { + let cus = c.Explode(); + let ocs = ComputerCurvesNormalOCS(cus, false); + if (ocs) + return ocs; + let fv = c.GetFistDeriv(0); + if (fv && !equalv3(fv, ZeroVec, 1e-5)) + firstV = fv; + } + } + if (!normal && !allowAutoCalc) + return; + let x = new Vector3(); + let y = new Vector3(); + if (!normal) { + if (!firstV) + return curves[0].OCS; + normal = firstV.normalize(); + Orbit.ComputUpDirection(normal, y, x); + [x, y, normal] = [normal, x, y]; + } + else { + if (equalv3(normal, curves[0].Normal.negate())) + normal.negate(); + Orbit.ComputUpDirection(normal, y, x); + } + return new Matrix4().makeBasis(x, y, normal).setPosition(curves[0].StartPoint); +} +function Pts2Polyline(pts, isClose) { + let pl = new Polyline(); + for (let i = 0; i < pts.length; i += 2) { + let p1 = AsVector3(pts[i]); + let arc; + let p2; + let p3; + if (isClose) { + p2 = AsVector3(pts[FixIndex(i + 1, pts.length)]); + p3 = AsVector3(pts[FixIndex(i + 2, pts.length)]); + } + else { + if (i >= pts.length - 2) + break; + p2 = AsVector3(pts[i + 1]); + p3 = AsVector3(pts[i + 2]); + } + let v1 = p1.clone().sub(p2); + let v2 = p2.clone().sub(p3); + if (equaln(v1.angleTo(v2), 0)) + arc = new Line(p1, p3); + else + arc = new Arc().FromThreePoint(p1, p2, p3); + pl.Join(arc); + } + return pl; +} +const PolylineSpliteRectFuzz = 1e-3; +/**封闭多段线 分割成矩形 */ +function PolylineSpliteRect(outline) { + if (!outline.IsClose || IsRect(outline).isRect) + return [outline]; + let firstDerv = outline.GetFistDeriv(0).normalize(); + if (!isParallelTo(firstDerv, XAxis, PolylineSpliteRectFuzz) && !isParallelTo(firstDerv, YAxis, PolylineSpliteRectFuzz)) + return [outline]; + let cus = outline.Explode(); + let yCus = []; + for (let c of cus) { + if (c instanceof Arc) + return [outline]; + let derv = c.GetFistDeriv(0).normalize(); + if (isParallelTo(derv, YAxis, PolylineSpliteRectFuzz)) + yCus.push(c); + else if (!isParallelTo(derv, XAxis, PolylineSpliteRectFuzz)) { + return [outline]; + } + } + yCus.sort((c1, c2) => c1.StartPoint.x - c2.StartPoint.x); + let rects = []; + for (let i = 0; i < yCus.length - 1; i++) { + let c1 = yCus[i]; + let c2 = yCus[i + 1]; + let x1 = c1.StartPoint.x; + let x2 = c2.StartPoint.x; + if (equaln(x1, x2)) + continue; + let y1; + let y2; + let res = c1.IntersectWith2(outline, IntersectOption.ExtendThis); + let res2 = c2.IntersectWith2(outline, IntersectOption.ExtendThis); + let pars = [...res.map(r => Math.floor(r.argParam)), ...res2.map(r => Math.floor(r.argParam))]; + pars = [...new Set(pars)]; + pars.sort((a, b) => a - b); + let ys = []; + for (let par of pars) { + let c = outline.GetCurveAtParam(par); + let derv = c.GetFistDeriv(0).normalize(); + if (isParallelTo(derv, XAxis, PolylineSpliteRectFuzz)) { + let x3 = c.StartPoint.x; + let x4 = c.EndPoint.x; + if (x3 > x4) + [x3, x4] = [x4, x3]; + if (isIntersect(x1, x2, x3, x4, -PolylineSpliteRectFuzz)) + ys.push(c.StartPoint.y); + } + } + if (ys.length < 2) + return [outline]; + ys.sort((a, b) => a - b); + y1 = ys[0]; + y2 = arrayLast(ys); + rects.push(new Polyline().RectangleFrom2Pt(new Vector3(x1, y1), new Vector3(x2, y2))); + } + return rects; +} + +var Circle_1; +let circleGeometry; +function GetCircleGeometry() { + if (!circleGeometry) + circleGeometry = BufferGeometryUtils.CreateFromPts(new EllipseCurve(0, 0, 1, 1, 0, 2 * Math.PI, false, 0).getPoints(360).map(AsVector3)); + return circleGeometry; +} +let Circle = Circle_1 = class Circle extends Curve { + constructor(center, radius = 1e-6) { + super(); + center && this._Matrix.setPosition(center); + this._Radius = radius; + } + get Shape() { + let sp = new Shape2(); + sp.ellipse(0, 0, this._Radius, this._Radius, 0, 2 * Math.PI, false, 0); + return sp; + } + get Center() { + return new Vector3().setFromMatrixPosition(this._Matrix); + } + set Center(v) { + this.WriteAllObjectRecord(); + this._Matrix.setPosition(v); + this.Update(); + } + get Radius() { + return this._Radius; + } + set Radius(v) { + this.WriteAllObjectRecord(); + this._Radius = clamp(v, 1e-9, 1e19); + this.Update(); + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + this.Center = this.Center.applyMatrix4(m); + this.Radius = this.Radius * m.getMaxScaleOnAxis(); + return this; + } + ApplyMirrorMatrix(m) { + this.WriteAllObjectRecord(); + reviseMirrorMatrix(this._Matrix); + return this; + } + //******************** Curve function start*****************// + get StartPoint() { + return this.GetPointAtParam(0); + } + get StartParam() { + return 0; + } + get EndPoint() { + return this.GetPointAtParam(0); + } + get EndParam() { + return 1; + } + PtInCurve(pt) { + return pt.distanceToSquared(this.Center) < Math.pow(this.Radius, 2); + } + get Area() { + return Math.PI * this._Radius ** 2; + } + get Area2() { + return Math.PI * this._Radius ** 2; + } + get Length() { + return Math.PI * 2 * this._Radius; + } + get IsClose() { + return true; + } + //曲线为顺时针 + get IsClockWise() { return false; } + GetPointAtParam(param) { + return polar(new Vector3(), param * 2 * Math.PI, this._Radius).applyMatrix4(this._Matrix); + } + GetPointAtDistance(distance) { + let param = distance / (Math.PI * 2 * this._Radius); + return this.GetPointAtParam(param); + } + GetDistAtParam(param) { + return Math.PI * 2 * this._Radius * param; + } + GetDistAtPoint(pt) { + let param = this.GetParamAtPoint(pt); + return this.GetDistAtParam(param); + } + GetParamAtDist(d) { + return d / (Math.PI * 2 * this._Radius); + } + GetSplitCurves(param) { + let params; + if (param instanceof Array) { + params = param.filter(p => this.ParamOnCurve(p)); + params.sort((a1, a2) => a2 - a1); //从大到小 + arrayRemoveDuplicateBySort(params); + if (params.length < 2) + return []; + } + else //圆不能被单个参数切割 + return []; + //补上最后一个到第一个的弧 + params.unshift(arrayLast(params)); + let anglelist = params.map(param => Math.PI * 2 * param); + let curvelist = new Array(); + for (let i = 0; i < anglelist.length - 1; i++) { + let sa = anglelist[i]; + let ea = anglelist[i + 1]; + if (!equaln(sa, ea, 1e-6)) { + let arc = new Arc(new Vector3(), this._Radius, ea, sa, false); + arc.ColorIndex = this.ColorIndex; + arc.ApplyMatrix(this.OCS); + curvelist.push(arc); + } + } + return curvelist; + } + GetParamAtPoint(pt) { + if (!this.PtOnCurve(pt)) + return NaN; + return angle(pt.clone().applyMatrix4(this.OCSInv)) / (Math.PI * 2); + } + PtOnCurve(pt) { + return equaln(pt.distanceToSquared(this.Center), this._Radius * this._Radius, 1e-5); + } + GetOffsetCurves(offsetDist) { + if ((offsetDist + this._Radius) > 0) { + let circle = this.Clone(); + circle.Radius = this._Radius + offsetDist; + return [circle]; + } + return []; + } + IntersectWith2(curve, intType) { + if (curve instanceof Arc) { + return IntersectCircleAndArc(this, curve, intType); + } + if (curve instanceof Line) { + return SwapParam(IntersectLineAndCircle(curve, this, reverseIntersectOption(intType))); + } + if (curve instanceof Circle_1) { + return IntersectCircleAndCircle(this, curve); + } + if (curve instanceof Ellipse) { + return SwapParam(IntersectEllipseAndCircleOrArc(curve, this, intType)); + } + if (curve instanceof Polyline) + return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType))); + return []; + } + //******************** Curve function end*****************// + get BoundingBox() { + return new Box3Ext().setFromPoints(this.GetGripPoints()); + } + InitDrawObject(renderType = RenderType.Wireframe) { + let obj = new Object3D(); + let cirGeo = GetCircleGeometry(); + if (renderType === RenderType.WireframePrint) { + let geometry = new LineGeometry().setPositions(cirGeo.attributes.position.array); + obj.add(new Line2(geometry, ColorMaterial.PrintLineMatrial)); + } + else { + let line = new Line$1(cirGeo, ColorMaterial.GetLineMaterial(this._Color)); + obj.add(line); + } + this.UpdateDrawObject(renderType, obj); + return obj; + } + UpdateDrawObject(type, obj) { + obj.children[0].scale.set(this._Radius, this._Radius, this._Radius); + obj.children[0].updateMatrix(); + } + UpdateDrawObjectMaterial(type, obj, material) { + if (type === RenderType.WireframePrint) ; + else { + let m = obj.children[0]; + m.material = material ? material : ColorMaterial.GetLineMaterial(this._Color); + return obj; + } + } + GetDragPointCount(drag) { + if (drag === DragPointType.Grip) + return 5; + else + return 1; + } + GetGripPoints() { + let pts = [ + new Vector3(), + new Vector3(0, this._Radius), + new Vector3(0, -this._Radius), + new Vector3(-this._Radius, 0), + new Vector3(this._Radius, 0), + ]; + let ocs = this.OCS; + pts.forEach(p => p.applyMatrix4(ocs)); + return pts; + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.Nea: + { + return getArcOrCirNearPts(this, pickPoint, viewXform); + } + case ObjectSnapMode.Cen: + return [this.Center]; + case ObjectSnapMode.Per: + if (lastPoint) { + if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10)) + return []; + let l = new Line(this.Center, lastPoint); + return l.IntersectWith(this, IntersectOption.ExtendBoth); + } + case ObjectSnapMode.Tan: + let pts = GetTanPtsOnArcOrCircle(this, lastPoint); + if (pts) + return pts; + case ObjectSnapMode.End: + { + let pts = this.GetGripPoints(); + pts.shift(); + return pts; + } + } + return []; + } + MoveGripPoints(indexList, vec) { + let pts = this.GetGripPoints(); + if (indexList.length > 0) { + let index = indexList[0]; + let p = pts[index]; + if (p) { + if (index > 0) { + p.add(vec); + this.Radius = p.distanceTo(this.Center); + } + else { + this.Center = this.Center.add(vec); + } + } + } + } + GetStretchPoints() { + let pts = [new Vector3()]; + let ocs = this.OCS; + pts.forEach(p => p.applyMatrix4(ocs)); + return pts; + } + MoveStretchPoints(indexList, vec) { + if (indexList.length > 0) { + let mat = MoveMatrix(vec); + this.ApplyMatrix(mat); + } + } + GetFistDeriv(pt) { + if (typeof pt === "number") + pt = this.GetPointAtParam(pt); + else + pt = pt.clone(); + pt.applyMatrix4(this.OCSInv); + let an = angle(pt) + Math.PI * 0.5; + return polar(new Vector3(), an, 1).applyMatrix4(new Matrix4().extractRotation(this.OCS)); + } + GetClosestPointTo(pt, extend) { + pt = pt.clone().applyMatrix4(this.OCSInv).setZ(0).applyMatrix4(this.OCS); + if (equaln(pt.distanceToSquared(this.Center), 0, 1e-10)) + return this.GetPointAtParam(0); + let l = new Line(this.Center, pt); + let pts = l.IntersectWith(this, IntersectOption.ExtendBoth); + pts.sort((p1, p2) => { + return p1.distanceToSquared(pt) - p2.distanceToSquared(pt); + }); + return pts[0]; + } + //#region -------------------------File------------------------- + //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化 + //对象从文件中读取数据,初始化自身 + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); + this._Radius = file.Read(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(1); + file.Write(this._Radius); + } +}; +Circle = Circle_1 = __decorate([ + Factory +], Circle); + +const _LogInjectFunctions = []; +function Log(message, ...optionalParams) { + for (let f of _LogInjectFunctions) + f(message, ...optionalParams); +} + +let x = new Vector3(); +let y = new Vector3(); +let z = new Vector3(); +function IsMirror(mtx) { + mtx.extractBasis(x, y, z); + // for a true orthogonal, non-mirrored base, u.cross(v) == w + // If they have an opposite direction then we are mirroring + const mirrorvalue = x.cross(y).dot(z); + const ismirror = (mirrorvalue < 0); + return ismirror; +} + +/** Epsilon used during determination of near zero distances. + * @default + */ +const EPS = 1e-5; +// Tag factory: we can request a unique tag through CSG.getTag() +let staticTag = 1; +const getTag = () => staticTag++; + +/** Class Vector3D + * Represents a 3D vector with X, Y, Z coordinates. + */ +class Vector3D extends Vector3 { + clone() { + return new Vector3D(this.x, this.y, this.z); + } + // find a vector that is somewhat perpendicular to this one + randomNonParallelVector() { + let x = Math.abs(this.x); + let y = Math.abs(this.y); + let z = Math.abs(this.z); + if (x <= y && x <= z) + return new Vector3D(1, 0, 0); + else if (y <= x && y <= z) + return new Vector3D(0, 1, 0); + else + return new Vector3D(0, 0, 1); + } + toString() { + return ("(" + + this.x.toFixed(5) + + ", " + + this.y.toFixed(5) + + ", " + + this.z.toFixed(5) + + ")"); + } +} + +class Vector2D extends Vector2 { + // extend to a 3D vector by adding a z coordinate: + toVector3D(z) { + return new Vector3D(this.x, this.y, z); + } + clone() { + return new Vector2D(this.x, this.y); + } + // returns the vector rotated by 90 degrees clockwise + normal() { + return new Vector2D(this.y, -this.x); + } + cross(a) { + return this.x * a.y - this.y * a.x; + } +} + +// # class Vertex +// Represents a vertex of a polygon. Use your own vertex class instead of this +// one to provide additional features like texture coordinates and vertex +// colors. Custom vertex classes need to provide a `pos` property +// `flipped()`, and `interpolate()` methods that behave analogous to the ones +// FIXME: And a lot MORE (see plane.fromVector3Ds for ex) ! This is fragile code +// defined by `Vertex`. +class Vertex3D { + constructor(pos, uv = new Vector2D()) { + this.pos = pos; + this.uv = uv; + } + clone() { + return new Vertex3D(this.pos.clone(), this.uv.clone()); + } + // Return a vertex with all orientation-specific data (e.g. vertex normal) flipped. Called when the + // orientation of a polygon is flipped. + flipped() { + return this; + } + getTag() { + let result = this.tag; + if (!result) { + result = getTag(); + this.tag = result; + } + return result; + } + // Create a new vertex between this vertex and `other` by linearly + // interpolating all properties using a parameter of `t`. Subclasses should + // override this to interpolate additional properties. + interpolate(other, t) { + let pos = this.pos.clone().lerp(other.pos, t); + let uv = this.uv.clone().lerp(other.uv, t); + return new Vertex3D(pos, uv); + } + // Affine transformation of vertex. Returns a new Vertex + transform(matrix4x4) { + const newpos = this.pos.clone().applyMatrix4(matrix4x4); + return new Vertex3D(newpos, this.uv); + } +} + +// # class Plane +// Represents a plane in 3D space. +class Plane { + constructor(normal, w) { + this.normal = normal; + this.w = w; + } + flipped() { + return new Plane(this.normal.clone().negate(), -this.w); + } + getTag() { + if (!this.tag) + this.tag = getTag(); + return this.tag; + } + coplanarTo(plane) { + return equalv3(this.normal, plane.normal, 1e-4) && equaln(this.w, plane.w, 1e-4); + } + transform(matrix4x4) { + // get two vectors in the plane: + let r = this.normal.randomNonParallelVector(); + let u = this.normal.clone().cross(r); + let v = this.normal.clone().cross(u); + // get 3 points in the plane: + let point1 = this.normal.clone().multiplyScalar(this.w); + let point2 = u.add(point1); + let point3 = v.add(point1); + // transform the points: + point1.applyMatrix4(matrix4x4); + point2.applyMatrix4(matrix4x4); + point3.applyMatrix4(matrix4x4); + // and create a new plane from the transformed points: + let newplane = Plane.fromVector3Ds(point1, point2, point3); + if (IsMirror(matrix4x4)) { + // the transform is mirroring + // We should mirror the plane: + newplane = newplane.flipped(); + } + return newplane; + } + splitLineBetweenPoints(p1, p2) { + let direction = p2.pos.clone().sub(p1.pos); + let labda = (this.w - this.normal.dot(p1.pos)) / this.normal.dot(direction); + if (isNaN(labda)) + labda = 0; + if (labda > 1) + labda = 1; + if (labda < 0) + labda = 0; + let pos = p1.pos.clone().add(direction.multiplyScalar(labda)); + let uv = p1.uv.clone().lerp(p2.uv, labda); + return new Vertex3D(pos, uv); + } + static fromVector3Ds(a, b, c) { + let n = b.clone() + .sub(a) + .cross(c.clone().sub(a)) + .normalize(); + return new Plane(n, n.dot(a)); + } +} + +var Type; +(function (Type) { + Type[Type["CoplanarFront"] = 0] = "CoplanarFront"; + Type[Type["CoplanarBack"] = 1] = "CoplanarBack"; + Type[Type["Front"] = 2] = "Front"; + Type[Type["Back"] = 3] = "Back"; + Type[Type["Spanning"] = 4] = "Spanning"; +})(Type || (Type = {})); +/** Class Polygon + * Represents a convex polygon. The vertices used to initialize a polygon must + * be coplanar and form a convex loop. They do not have to be `Vertex` + * instances but they must behave similarly (duck typing can be used for + * customization). + *
+ * Each convex polygon has a `shared` property, which is shared between all + * polygons that are clones of each other or were split from the same polygon. + * This can be used to define per-polygon properties (such as surface color). + *
+ * The plane of the polygon is calculated from the vertex coordinates if not provided. + * The plane can alternatively be passed as the third argument to avoid calculations. + * + *表示凸多边形。 用于初始化多边形的顶点必须共面并形成凸环。 + *多边形是彼此克隆或从同一多边形分割的多边形。 + *这可用于定义每个多边形属性(例如表面颜色)。 + */ +class Polygon { + constructor(vertices, plane) { + this.vertices = vertices; + this.plane = plane; + if (!plane) + this.plane = Plane.fromVector3Ds(vertices[0].pos, vertices[1].pos, vertices[2].pos); + } + /** Check whether the polygon is convex. (it should be, otherwise we will get unexpected results)*/ + checkIfConvex() { + return Polygon.verticesConvex(this.vertices, this.plane.normal); + } + // returns an array with a Vector3D (center point) and a radius + boundingSphere() { + if (!this.cachedBoundingSphere) { + let box = this.boundingBox(); + let middle = box[0].clone().add(box[1]).multiplyScalar(0.5); + let radius3 = box[1].clone().sub(middle); + let radius = radius3.length(); + this.cachedBoundingSphere = [middle, radius]; + } + return this.cachedBoundingSphere; + } + // returns an array of two Vector3Ds (minimum coordinates and maximum coordinates) + boundingBox() { + if (!this.cachedBoundingBox) { + let minpoint; + let maxpoint; + let vertices = this.vertices; + let numvertices = vertices.length; + if (numvertices === 0) + minpoint = new Vector3D(0, 0, 0); + else + minpoint = vertices[0].pos.clone(); + maxpoint = minpoint.clone(); + for (let i = 1; i < numvertices; i++) { + let point = vertices[i].pos; + minpoint.min(point); + maxpoint.max(point); + } + this.cachedBoundingBox = [minpoint, maxpoint]; + } + return this.cachedBoundingBox; + } + flipped() { + let newvertices = this.vertices.map(v => v.flipped()); + newvertices.reverse(); + let newplane = this.plane.flipped(); + return new Polygon(newvertices, newplane); + } + // Affine transformation of polygon. Returns a new Polygon + transform(matrix4x4) { + let newvertices = this.vertices.map(v => v.transform(matrix4x4)); + let newplane = this.plane.transform(matrix4x4); + if (IsMirror(matrix4x4)) { + // need to reverse the vertex order + // in order to preserve the inside/outside orientation: + newvertices.reverse(); + } + return new Polygon(newvertices, newplane); + } + splitByPlane(plane) { + let result = { type: null, front: null, back: null }; + // cache in local lets (speedup): + let planeNormal = plane.normal; + let vertices = this.vertices; + let numVertices = vertices.length; + if (this.plane.coplanarTo(plane)) { + result.type = Type.CoplanarFront; + } + else { + let thisW = plane.w; + let hasFront = false; + let hasBack = false; + let vertexIsBack = []; + let MINEPS = -EPS; + for (let i = 0; i < numVertices; i++) { + let t = planeNormal.dot(vertices[i].pos) - thisW; + let isBack = t < 0; + vertexIsBack.push(isBack); + if (t > EPS) + hasFront = true; + if (t < MINEPS) + hasBack = true; + } + if (!hasFront && !hasBack) { + // all points coplanar + let t = planeNormal.dot(this.plane.normal); + result.type = t >= 0 ? Type.CoplanarFront : Type.CoplanarBack; + } + else if (!hasBack) + result.type = Type.Front; + else if (!hasFront) + result.type = Type.Back; + else { + result.type = Type.Spanning; + let frontVertices = []; + let backVertices = []; + let isBack = vertexIsBack[0]; + for (let vertexIndex = 0; vertexIndex < numVertices; vertexIndex++) { + let vertex = vertices[vertexIndex]; + let nextVertexindex = vertexIndex + 1; + if (nextVertexindex >= numVertices) + nextVertexindex = 0; + let nextIsBack = vertexIsBack[nextVertexindex]; + if (isBack === nextIsBack) { + // line segment is on one side of the plane: + if (isBack) + backVertices.push(vertex); + else + frontVertices.push(vertex); + } + else { + let intersectionVertex = plane.splitLineBetweenPoints(vertex, vertices[nextVertexindex]); + if (isBack) { + backVertices.push(vertex); + backVertices.push(intersectionVertex); + frontVertices.push(intersectionVertex); + } + else { + frontVertices.push(vertex); + frontVertices.push(intersectionVertex); + backVertices.push(intersectionVertex); + } + } + isBack = nextIsBack; + } // for vertexindex + // remove duplicate vertices: + let EPS_SQUARED = EPS * EPS; + arrayRemoveDuplicateBySort(backVertices, (v1, v2) => { + return v1.pos.distanceToSquared(v2.pos) < EPS_SQUARED; + }); + arrayRemoveDuplicateBySort(frontVertices, (v1, v2) => { + return v1.pos.distanceToSquared(v2.pos) < EPS_SQUARED; + }); + if (frontVertices.length >= 3) + result.front = new Polygon(frontVertices, this.plane); + if (backVertices.length >= 3) + result.back = new Polygon(backVertices, this.plane); + } + } + return result; + } + static verticesConvex(vertices, planenormal) { + let count = vertices.length; + if (count < 3) + return false; + let prevPrevPos = vertices[count - 2].pos; + let prevPos = vertices[count - 1].pos; + for (let i = 0; i < count; i++) { + let pos = vertices[i].pos; + if (!Polygon.isConvexPoint(prevPrevPos, prevPos, pos, planenormal)) + return false; + prevPrevPos = prevPos; + prevPos = pos; + } + return true; + } + // 计算3点是否凸角 + static isConvexPoint(prevpoint, point, nextpoint, normal) { + let crossproduct = point.clone().sub(prevpoint).cross(nextpoint.clone().sub(point)); + let crossdotnormal = crossproduct.dot(normal); + return crossdotnormal >= 0; + } +} + +// # class PolygonTreeNode +// This class manages hierarchical splits of polygons +// At the top is a root node which doesn hold a polygon, only child PolygonTreeNodes +// Below that are zero or more 'top' nodes; each holds a polygon. The polygons can be in different planes +// splitByPlane() splits a node by a plane. If the plane intersects the polygon, two new child nodes +// are created holding the splitted polygon. +// getPolygons() retrieves the polygon from the tree. If for PolygonTreeNode the polygon is split but +// the two split parts (child nodes) are still intact, then the unsplit polygon is returned. +// This ensures that we can safely split a polygon into many fragments. If the fragments are untouched, +// getPolygons() will return the original unsplit polygon instead of the fragments. +// remove() removes a polygon from the tree. Once a polygon is removed, the parent polygons are invalidated +// since they are no longer intact. +// constructor creates the root node: +//此类管理多边形的层次分割 +//顶部是一个根节点,它不包含多边形,只有子PolygonTreeNodes +//下面是零个或多个“顶部”节点; 每个都有一个多边形。 多边形可以位于不同的平面中 +// splitByPlane()按平面拆分节点。 如果平面与多边形相交,则会有两个新的子节点 +//创建持有分割多边形。 +// getPolygons()从树中检索多边形。 如果对于PolygonTreeNode,则多边形被拆分但是 +//两个分割部分(子节点)仍然完好无损,然后返回未分割的多边形。 +//这确保我们可以安全地将多边形拆分为多个片段。 如果碎片未受影响, +// getPolygons()将返回原始的未分割多边形而不是片段。 +// remove()从树中删除多边形。 删除多边形后,父多边形将失效 +//因为它们不再完好无损 +//构造函数创建根节点: +class PolygonTreeNode { + constructor(polygon) { + this.children = []; + this.removed = false; + this.polygon = polygon; + } + // fill the tree with polygons. Should be called on the root node only; child nodes must + // always be a derivate (split) of the parent node. + addPolygons(polygons) { + // new polygons can only be added to root node; children can only be splitted polygons + if (!this.isRootNode()) + throw new Error("Assertion failed"); + for (let polygon of polygons) + this.addChild(polygon); + } + // remove a node + // - the siblings become toplevel nodes + // - the parent is removed recursively + remove() { + if (this.removed) + return; + this.removed = true; + // remove ourselves from the parent's children list: + let parentschildren = this.parent.children; + let i = parentschildren.indexOf(this); + if (i < 0) + throw new Error("Assertion failed"); + parentschildren.splice(i, 1); + // invalidate the parent's polygon, and of all parents above it: + this.parent.recursivelyInvalidatePolygon(); + } + isRemoved() { + return this.removed; + } + isRootNode() { + return !this.parent; + } + // invert all polygons in the tree. Call on the root node + invert() { + if (!this.isRootNode()) + throw new Error("Assertion failed"); // can only call this on the root node + this.invertSub(); + } + getPolygon() { + if (!this.polygon) + throw new Error("Assertion failed"); // doesn't have a polygon, which means that it has been broken down + return this.polygon; + } + getPolygons(outPolygons = []) { + let children = [this]; + let queue = [children]; + for (let i = 0; i < queue.length; ++i) { + // queue size can change in loop, don't cache length + children = queue[i]; + for (let node of children) { + if (node.polygon) + // the polygon hasn't been broken yet. We can ignore the children and return our polygon: + outPolygons.push(node.polygon); + else + // our polygon has been split up and broken, so gather all subpolygons from the children + queue.push(node.children); + } + } + return outPolygons; + } + // split the node by a plane; add the resulting nodes to the frontnodes and backnodes array + // If the plane doesn't intersect the polygon, the 'this' object is added to one of the arrays + // If the plane does intersect the polygon, two new child nodes are created for the front and back fragments, + // and added to both arrays. + splitByPlane(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes) { + if (this.children.length) { + let queue = [this.children]; + for (let i = 0; i < queue.length; i++) { + // queue.length can increase, do not cache + let nodes = queue[i]; + for (let j = 0, l = nodes.length; j < l; j++) { + // ok to cache length + let node = nodes[j]; + if (node.children.length) + queue.push(node.children); + else { + // no children. Split the polygon: + node.splitByPlaneNotChildren(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes); + } + } + } + } + else { + this.splitByPlaneNotChildren(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes); + } + } + // only to be called for nodes with no children + // 仅用于没有子节点的节点 + splitByPlaneNotChildren(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes) { + if (!this.polygon) + return; + let polygon = this.polygon; + let bound = polygon.boundingSphere(); + let sphereradius = bound[1] + EPS; // FIXME Why add imprecision? + let planenormal = plane.normal; + let spherecenter = bound[0]; + let d = planenormal.dot(spherecenter) - plane.w; + if (d > sphereradius) + frontNodes.push(this); + else if (d < -sphereradius) + backNodes.push(this); + else { + let splitresult = polygon.splitByPlane(plane); + switch (splitresult.type) { + case Type.CoplanarFront: + coplanarFrontNodes.push(this); + break; + case Type.CoplanarBack: + coplanarBackNodes.push(this); + break; + case Type.Front: + frontNodes.push(this); + break; + case Type.Back: + backNodes.push(this); + break; + case Type.Spanning: + if (splitresult.front) { + let frontNode = this.addChild(splitresult.front); + frontNodes.push(frontNode); + } + if (splitresult.back) { + let backNode = this.addChild(splitresult.back); + backNodes.push(backNode); + } + break; + } + } + } + // add child to a node + // this should be called whenever the polygon is split + // a child should be created for every fragment of the split polygon + // returns the newly created child + addChild(polygon) { + let newchild = new PolygonTreeNode(polygon); + newchild.parent = this; + this.children.push(newchild); + return newchild; + } + invertSub() { + let queue = [[this]]; + for (let i = 0; i < queue.length; i++) { + let children = queue[i]; + for (let j = 0, l = children.length; j < l; j++) { + let node = children[j]; + if (node.polygon) + node.polygon = node.polygon.flipped(); + queue.push(node.children); + } + } + } + recursivelyInvalidatePolygon() { + let node = this; + while (node.polygon) { + node.polygon = null; + if (node.parent) + node = node.parent; + } + } +} +// # class Tree +// This is the root of a BSP tree +// We are using this separate class for the root of the tree, to hold the PolygonTreeNode root +// The actual tree is kept in this.rootnode +class Tree { + constructor(polygons) { + this.polygonTree = new PolygonTreeNode(); + this.rootNode = new Node(null); + this.addPolygons(polygons); + } + invert() { + this.polygonTree.invert(); + this.rootNode.invert(); + } + // Remove all polygons in this BSP tree that are inside the other BSP tree + /** + * this 减去 tree 删除此BSP树中位于其他BSP树内的所有多边形 + * @param tree 不会被修改 + * @param [alsoRemovecoplanarFront=false] 同时删除共面 + */ + clipTo(tree, alsoRemovecoplanarFront = false) { + this.rootNode.clipTo(tree, alsoRemovecoplanarFront); + } + allPolygons() { + return this.polygonTree.getPolygons(); + } + addPolygons(polygons) { + if (polygons.length > 1e4) + return; + let polygonTreeNodes = polygons.map((p) => this.polygonTree.addChild(p)); + this.rootNode.addPolygonTreeNodes(polygonTreeNodes); + } +} +// # class Node +// Holds a node in a BSP tree. A BSP tree is built from a collection of polygons +// by picking a polygon to split along. +// Polygons are not stored directly in the tree, but in PolygonTreeNodes, stored in +// this.polygontreenodes. Those PolygonTreeNodes are children of the owning +// Tree.polygonTree +// This is not a leafy BSP tree since there is +// no distinction between internal and leaf nodes. +class Node { + constructor(parent) { + this.polygonTreeNodes = []; + this.parent = parent; + } + // Convert solid space to empty space and empty space to solid space. + invert() { + let queue = [this]; + for (let i = 0; i < queue.length; i++) { + let node = queue[i]; + if (node.plane) + node.plane = node.plane.flipped(); + if (node.front) + queue.push(node.front); + if (node.back) + queue.push(node.back); + let temp = node.front; + node.front = node.back; + node.back = temp; + } + } + // clip polygontreenodes to our plane + // calls remove() for all clipped PolygonTreeNodes + //将polygontreenodes剪辑到我们的飞机上 + //为所有剪切的PolygonTreeNodes调用remove() + clipPolygons(polygonTreeNodes, alsoRemoveCoplanarFront) { + let args = { node: this, polygonTreeNodes }; + let stack = []; + do { + let node = args.node; + let polygonTreeNodes1 = args.polygonTreeNodes; + // begin "function" + if (node.plane) { + let backnodes = []; + let frontnodes = []; + let coplanarfrontnodes = alsoRemoveCoplanarFront ? backnodes : frontnodes; + let plane = node.plane; + for (let node1 of polygonTreeNodes1) { + if (!node1.isRemoved()) + node1.splitByPlane(plane, coplanarfrontnodes, backnodes, frontnodes, backnodes); + } + if (node.front && frontnodes.length > 0) + stack.push({ node: node.front, polygonTreeNodes: frontnodes }); + let numbacknodes = backnodes.length; + if (node.back && numbacknodes > 0) + stack.push({ node: node.back, polygonTreeNodes: backnodes }); + else { + // there's nothing behind this plane. Delete the nodes behind this plane: + // 这架飞机背后什么也没有。 删除此平面后面的节点: + for (let i = 0; i < numbacknodes; i++) + backnodes[i].remove(); + } + } + args = stack.pop(); + } while (args); + } + // Remove all polygons in this BSP tree that are inside the other BSP tree + // `tree`. + clipTo(tree, alsoRemovecoplanarFront) { + let node = this; + let stack = []; + do { + if (node.polygonTreeNodes.length > 0) { + tree.rootNode.clipPolygons(node.polygonTreeNodes, alsoRemovecoplanarFront); + } + if (node.front) + stack.push(node.front); + if (node.back) + stack.push(node.back); + node = stack.pop(); + } while (node); + } + addPolygonTreeNodes(polygonTreeNodes) { + let args = { node: this, polygontreenodes: polygonTreeNodes }; + let stack = []; + do { + let node = args.node; + polygonTreeNodes = args.polygontreenodes; + if (polygonTreeNodes.length === 0) { + args = stack.pop(); + continue; + } + if (!node.plane) { + let bestplane = polygonTreeNodes[Math.floor(polygonTreeNodes.length / 2)].getPolygon().plane; + node.plane = bestplane; + } + let frontNodes = []; + let backNodes = []; + for (let i = 0, n = polygonTreeNodes.length; i < n; ++i) { + polygonTreeNodes[i].splitByPlane(node.plane, node.polygonTreeNodes, backNodes, frontNodes, backNodes); + } + if (frontNodes.length > 0) { + if (!node.front) + node.front = new Node(node); + stack.push({ node: node.front, polygontreenodes: frontNodes }); + } + if (backNodes.length > 0) { + if (!node.back) + node.back = new Node(node); + stack.push({ node: node.back, polygontreenodes: backNodes }); + } + args = stack.pop(); + } while (args); + } + getParentPlaneNormals(normals, maxdepth) { + if (maxdepth > 0) { + if (this.parent) { + normals.push(this.parent.plane.normal); + this.parent.getParentPlaneNormals(normals, maxdepth - 1); + } + } + } +} + +// ////////////////////////////// +// ## class fuzzyFactory +// This class acts as a factory for objects. We can search for an object with approximately +// the desired properties (say a rectangle with width 2 and height 1) +// The lookupOrCreate() method looks for an existing object (for example it may find an existing rectangle +// with width 2.0001 and height 0.999. If no object is found, the user supplied callback is +// called, which should generate a new object. The new object is inserted into the database +// so it can be found by future lookupOrCreate() calls. +// Constructor: +// numdimensions: the number of parameters for each object +// for example for a 2D rectangle this would be 2 +// tolerance: The maximum difference for each parameter allowed to be considered a match +class FuzzyFactory { + constructor(numdimensions, tolerance) { + this.lookuptable = {}; + this.multiplier = 1.0 / tolerance; + } + // let obj = f.lookupOrCreate([el1, el2, el3], function(elements) {/* create the new object */}); + // Performs a fuzzy lookup of the object with the specified elements. + // If found, returns the existing object + // If not found, calls the supplied callback function which should create a new object with + // the specified properties. This object is inserted in the lookup database. + lookupOrCreate(els, object) { + let hash = ""; + let multiplier = this.multiplier; + for (let el of els) { + let valueQuantized = Math.round(el * multiplier); + hash += valueQuantized + "/"; + } + if (hash in this.lookuptable) + return this.lookuptable[hash]; + else { + let hashparts = els.map(el => { + let q0 = Math.floor(el * multiplier); + let q1 = q0 + 1; + return ["" + q0 + "/", "" + q1 + "/"]; + }); + let numelements = els.length; + let numhashes = 1 << numelements; + for (let hashmask = 0; hashmask < numhashes; ++hashmask) { + let hashmaskShifted = hashmask; + hash = ""; + hashparts.forEach(hashpart => { + hash += hashpart[hashmaskShifted & 1]; + hashmaskShifted >>= 1; + }); + this.lookuptable[hash] = object; + } + return object; + } + } +} + +class FuzzyCSGFactory { + constructor() { + this.vertexfactory = new FuzzyFactory(3, EPS); + this.planefactory = new FuzzyFactory(4, EPS); + } + getVertex(sourcevertex) { + let elements = [sourcevertex.pos.x, sourcevertex.pos.y, sourcevertex.pos.z]; + let result = this.vertexfactory.lookupOrCreate(elements, sourcevertex); + return result; + } + getPlane(sourceplane) { + let elements = [sourceplane.normal.x, sourceplane.normal.y, sourceplane.normal.z, sourceplane.w]; + let result = this.planefactory.lookupOrCreate(elements, sourceplane); + return result; + } + getPolygon(sourcePolygon, outputPolygon = sourcePolygon) { + let newPlane = this.getPlane(sourcePolygon.plane); + let newVertices = sourcePolygon.vertices.map(vertex => this.getVertex(vertex)); + // two vertices that were originally very close may now have become + // truly identical (referring to the same Vertex object). + // Remove duplicate vertices: + let newVerticesDedup = []; //新的顶点列表(已过滤重复) + if (newVertices.length > 0) { + let prevVertexTag = newVertices[newVertices.length - 1].getTag(); + for (let vertex of newVertices) { + let vertextag = vertex.getTag(); + if (vertextag !== prevVertexTag) + newVerticesDedup.push(vertex); + prevVertexTag = vertextag; + } + } + // If it's degenerate, remove all vertices: + if (newVerticesDedup.length < 3) + newVerticesDedup = []; + outputPolygon.vertices = newVertices; + outputPolygon.plane = newPlane; + return outputPolygon; + } +} + +/** + * Returns a cannoicalized version of the input csg : ie every very close + * points get deduplicated + * + * 返回删除重复点的csg,重复点将被合并 + */ +function canonicalizeCSG(csg) { + const factory = new FuzzyCSGFactory(); + let result = CSGFromCSGFuzzyFactory(factory, csg); + result.isCanonicalized = true; + result.isRetesselated = csg.isRetesselated; + return result; +} +function CSGFromCSGFuzzyFactory(factory, sourcecsg) { + let newpolygons = sourcecsg.polygons.filter(poly => { + return factory.getPolygon(poly).vertices.length >= 3; + }); + return new CSG(newpolygons); +} + +/** + * Returns an array of Vector3D, providing minimum coordinates and maximum coordinates + * of this solid. + * @example + * let bounds = A.getBounds() + * let minX = bounds[0].x + */ +function bounds(csg) { + if (!csg.cachedBoundingBox) { + let minpoint; + let maxpoint; + let polygons = csg.polygons; + let numpolygons = polygons.length; + for (let i = 0; i < numpolygons; i++) { + let polygon = polygons[i]; + let bounds = polygon.boundingBox(); + if (i === 0) { + minpoint = bounds[0].clone(); + maxpoint = bounds[1].clone(); + } + else { + minpoint.min(bounds[0]); + maxpoint.max(bounds[1]); + } + } + // FIXME: not ideal, we are mutating the input, we need to move some of it out + csg.cachedBoundingBox = [minpoint, maxpoint]; + } + return csg.cachedBoundingBox; +} + +function fnNumberSort(a, b) { + return a - b; +} +function insertSorted(array, element, comparefunc) { + let leftbound = 0; + let rightbound = array.length; + while (rightbound > leftbound) { + let testindex = Math.floor((leftbound + rightbound) / 2); + let testelement = array[testindex]; + let compareresult = comparefunc(element, testelement); + if (compareresult > 0) + // element > testelement + leftbound = testindex + 1; + else + rightbound = testindex; + } + array.splice(leftbound, 0, element); +} +// Get the x coordinate of a point with a certain y coordinate, interpolated between two +// points (CSG.Vector2D). +// Interpolation is robust even if the points have the same y coordinate +function interpolateBetween2DPointsForY(point1, point2, y) { + let f1 = y - point1.y; + let f2 = point2.y - point1.y; + if (f2 < 0) { + f1 = -f1; + f2 = -f2; + } + let t; + if (f1 <= 0) + t = 0.0; + else if (f1 >= f2) + t = 1.0; + else if (f2 < 1e-10) + // FIXME Should this be CSG.EPS? + t = 0.5; + else + t = f1 / f2; + let result = point1.x + t * (point2.x - point1.x); + return result; +} + +/** class Line2D + * Represents a directional line in 2D space + * A line is parametrized by its normal vector (perpendicular to the line, rotated 90 degrees counter clockwise) + * and w. The line passes through the point .times(w). + * Equation: p is on line if normal.dot(p)==w + */ +class Line2D { + constructor(normal, w) { + this.normal = normal.clone(); + let l = this.normal.length(); + w *= l; + this.normal.normalize(); + this.w = w; + } + direction() { + return this.normal; + } + static fromPoints(p1, p2) { + let direction = p2.clone().sub(p1); + let normal = direction + .normal() + .negate() + .normalize(); + let w = p1.dot(normal); + return new Line2D(normal, w); + } +} + +/** class OrthoNormalBasis + * Reprojects points on a 3D plane onto a 2D plane + * or from a 2D plane back onto the 3D plane + */ +class OrthoNormalBasis { + constructor(plane, rightVector = plane.normal.randomNonParallelVector()) { + this.plane = plane; + this.v = plane.normal.clone().cross(rightVector).normalize(); + this.u = this.v.clone().cross(plane.normal); + this.plane = plane; + this.planeorigin = plane.normal.clone().multiplyScalar(plane.w); + } + to2D(vec3) { + return new Vector2D(vec3.dot(this.u), vec3.dot(this.v)); + } + to3D(vec2) { + return this.planeorigin.clone() + .add(this.u.clone().multiplyScalar(vec2.x)) + .add(this.v.clone().multiplyScalar(vec2.y)); + } +} + +//一组共面多边形的Retesselation函数。 请参阅此文件顶部的介绍。 +function reTesselateCoplanarPolygons(sourcePolygons, destpolygons = []) { + let numPolygons = sourcePolygons.length; + if (numPolygons < 2) { + destpolygons.push(...sourcePolygons); + return; + } + let plane = sourcePolygons[0].plane; + let orthobasis = new OrthoNormalBasis(plane); + // let xcoordinatebins = {} + let yCoordinateBins = {}; //整数map + let yCoordinateBinningFactor = (1.0 / EPS) * 10; + let polygonVertices2d = []; // (Vector2[])[]; + let polygonTopVertexIndexes = []; // 每个多边形最顶层顶点的索引数组 minIndex + let topY2PolygonIndexes = {}; // Map + let yCoordinateToPolygonIndexes = {}; // Map > Y坐标映射所有的多边形 + //将多边形转换为2d点表 polygonVertices2d + //建立y对应的多边形Map yCoordinateToPolygonIndexes + for (let polygonIndex = 0; polygonIndex < numPolygons; polygonIndex++) { + let poly3d = sourcePolygons[polygonIndex]; + let numVertices = poly3d.vertices.length; + if (numVertices === 0) + continue; + let vertices2d = []; //Vector2d[]; + let minIndex = -1; + let miny, maxy; + for (let i = 0; i < numVertices; i++) { + let pos2d = orthobasis.to2D(poly3d.vertices[i].pos); + // perform binning of y coordinates: If we have multiple vertices very + // close to each other, give them the same y coordinate: + let yCoordinatebin = Math.floor(pos2d.y * yCoordinateBinningFactor); + let newy; + if (yCoordinatebin in yCoordinateBins) + newy = yCoordinateBins[yCoordinatebin]; + else if (yCoordinatebin + 1 in yCoordinateBins) + newy = yCoordinateBins[yCoordinatebin + 1]; + else if (yCoordinatebin - 1 in yCoordinateBins) + newy = yCoordinateBins[yCoordinatebin - 1]; + else { + newy = pos2d.y; + yCoordinateBins[yCoordinatebin] = pos2d.y; + } + pos2d = new Vector2D(pos2d.x, newy); + vertices2d.push(pos2d); + if (i === 0 || newy < miny) { + miny = newy; + minIndex = i; + } + if (i === 0 || newy > maxy) + maxy = newy; + if (!(newy in yCoordinateToPolygonIndexes)) + yCoordinateToPolygonIndexes[newy] = {}; + yCoordinateToPolygonIndexes[newy][polygonIndex] = true; + } + //退化多边形,所有顶点都具有相同的y坐标。 从现在开始忽略它: + if (miny >= maxy) + continue; + if (!(miny in topY2PolygonIndexes)) + topY2PolygonIndexes[miny] = []; + topY2PolygonIndexes[miny].push(polygonIndex); + // reverse the vertex order: + vertices2d.reverse(); + minIndex = numVertices - minIndex - 1; + polygonVertices2d.push(vertices2d); + polygonTopVertexIndexes.push(minIndex); + } + //所有的y坐标,从小到大排序 + let yCoordinates = []; + for (let ycoordinate in yCoordinateToPolygonIndexes) + yCoordinates.push(ycoordinate); + yCoordinates.sort(fnNumberSort); + //迭代y坐标 从低到高 + // activepolygons :'active'的源多边形,即与y坐标相交 + // 多边形是从左往右排序的 + // activepolygons 中的每个元素都具有以下属性: + // polygonindex 源多边形的索引(即sourcepolygons的索引 和polygonvertices2d数组) + // leftvertexindex 左边 在当前y坐标处或刚好在当前y坐标之上 + // rightvertexindex 右边 + // topleft bottomleft 与当前y坐标交叉的多边形左侧的坐标 + // topright bottomright 与当前y坐标交叉的多边形右侧的坐标 + let activePolygons = []; + let prevOutPolygonRow = []; //上一个输出多边形行? + for (let yindex = 0; yindex < yCoordinates.length; yindex++) { + let yCoordinateStr = yCoordinates[yindex]; + let yCoordinate = Number(yCoordinateStr); + // 用当前的y 更新 activePolygons + // - 删除以y坐标结尾的所有多边形 删除polygon maxy = y 的多边形 + // - 更新 leftvertexindex 和 rightvertexindex (指向当前顶点索引) + // 在多边形的左侧和右侧 + // 迭代在Y坐标处有一个角的所有多边形 + let polygonIndexeSwithCorner = yCoordinateToPolygonIndexes[yCoordinateStr]; + for (let activePolygonIndex = 0; activePolygonIndex < activePolygons.length; activePolygonIndex++) { + let activepolygon = activePolygons[activePolygonIndex]; + let polygonindex = activepolygon.polygonindex; + if (!polygonIndexeSwithCorner[polygonindex]) //如果不在角内 + continue; + //多边形在此y坐标处有一个角 + let vertices2d = polygonVertices2d[polygonindex]; + let numvertices = vertices2d.length; + let newleftvertexindex = activepolygon.leftvertexindex; + let newrightvertexindex = activepolygon.rightvertexindex; + //看看我们是否需要增加 leftvertexindex 或减少 rightvertexindex : + while (true) { + let nextleftvertexindex = newleftvertexindex + 1; + if (nextleftvertexindex >= numvertices) + nextleftvertexindex = 0; + if (vertices2d[nextleftvertexindex].y !== yCoordinate) + break; + newleftvertexindex = nextleftvertexindex; + } + //减少 rightvertexindex + let nextrightvertexindex = newrightvertexindex - 1; + if (nextrightvertexindex < 0) + nextrightvertexindex = numvertices - 1; + if (vertices2d[nextrightvertexindex].y === yCoordinate) + newrightvertexindex = nextrightvertexindex; + if (newleftvertexindex !== activepolygon.leftvertexindex //有向上更新 + && newleftvertexindex === newrightvertexindex //指向同一个点 + ) { + // We have increased leftvertexindex or decreased rightvertexindex, and now they point to the same vertex + // This means that this is the bottom point of the polygon. We'll remove it: + //我们增加了leftvertexindex或减少了rightvertexindex,现在它们指向同一个顶点 + //这意味着这是多边形的底点。 我们将删除它: + activePolygons.splice(activePolygonIndex, 1); + --activePolygonIndex; + } + else { + activepolygon.leftvertexindex = newleftvertexindex; + activepolygon.rightvertexindex = newrightvertexindex; + activepolygon.topleft = vertices2d[newleftvertexindex]; + activepolygon.topright = vertices2d[newrightvertexindex]; + let nextleftvertexindex = newleftvertexindex + 1; + if (nextleftvertexindex >= numvertices) + nextleftvertexindex = 0; + activepolygon.bottomleft = vertices2d[nextleftvertexindex]; + let nextrightvertexindex = newrightvertexindex - 1; + if (nextrightvertexindex < 0) + nextrightvertexindex = numvertices - 1; + activepolygon.bottomright = vertices2d[nextrightvertexindex]; + } + } + let nextYCoordinate; // number y + if (yindex >= yCoordinates.length - 1) { + // last row, all polygons must be finished here: + // 最后一行,所有多边形必须在这里完成: + activePolygons = []; + } + else // yindex < ycoordinates.length-1 + { + nextYCoordinate = Number(yCoordinates[yindex + 1]); + let middleYCoordinate = 0.5 * (yCoordinate + nextYCoordinate); + // update activepolygons by adding any polygons that start here: + // 添加从这里开始的多边形 到 activePolygons + let startingPolygonIndexes = topY2PolygonIndexes[yCoordinateStr]; + for (let polygonindex_key in startingPolygonIndexes) { + let polygonindex = startingPolygonIndexes[polygonindex_key]; + let vertices2d = polygonVertices2d[polygonindex]; + let numvertices = vertices2d.length; + let topVertexIndex = polygonTopVertexIndexes[polygonindex]; + // the top of the polygon may be a horizontal line. In that case topvertexindex can point to any point on this line. + // Find the left and right topmost vertices which have the current y coordinate: + // 顶部可以是一条直线,寻找最左边的点和最右边的点 + let topleftvertexindex = topVertexIndex; + while (true) { + let i = topleftvertexindex + 1; + if (i >= numvertices) + i = 0; + if (vertices2d[i].y !== yCoordinate) + break; + if (i === topVertexIndex) + break; // should not happen, but just to prevent endless loops + topleftvertexindex = i; + } + let toprightvertexindex = topVertexIndex; + while (true) { + let i = toprightvertexindex - 1; + if (i < 0) + i = numvertices - 1; + if (vertices2d[i].y !== yCoordinate) + break; + if (i === topleftvertexindex) + break; // should not happen, but just to prevent endless loops + toprightvertexindex = i; + } + let nextleftvertexindex = topleftvertexindex + 1; + if (nextleftvertexindex >= numvertices) + nextleftvertexindex = 0; + let nextrightvertexindex = toprightvertexindex - 1; + if (nextrightvertexindex < 0) + nextrightvertexindex = numvertices - 1; + let newactivepolygon = { + polygonindex: polygonindex, + leftvertexindex: topleftvertexindex, + rightvertexindex: toprightvertexindex, + topleft: vertices2d[topleftvertexindex], + topright: vertices2d[toprightvertexindex], + bottomleft: vertices2d[nextleftvertexindex], + bottomright: vertices2d[nextrightvertexindex] + }; + //二分插入 + insertSorted(activePolygons, newactivepolygon, function (el1, el2) { + let x1 = interpolateBetween2DPointsForY(el1.topleft, el1.bottomleft, middleYCoordinate); + let x2 = interpolateBetween2DPointsForY(el2.topleft, el2.bottomleft, middleYCoordinate); + if (x1 > x2) + return 1; + if (x1 < x2) + return -1; + return 0; + }); + } + } + //#region + // if( (yindex === ycoordinates.length-1) || (nextycoordinate - ycoordinate > EPS) ) + // if(true) + // { + let newOutPolygonRow = []; //输出多边形 + // Build the output polygons for the next row in newOutPolygonRow: + //现在 activepolygons 是最新的 + //为 newOutPolygonRow 中的下一行构建输出多边形: + for (let activepolygonKey in activePolygons) { + let activepolygon = activePolygons[activepolygonKey]; + let x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, yCoordinate); + let topleft = new Vector2D(x, yCoordinate); + x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, yCoordinate); + let topright = new Vector2D(x, yCoordinate); + x = interpolateBetween2DPointsForY(activepolygon.topleft, activepolygon.bottomleft, nextYCoordinate); + let bottomleft = new Vector2D(x, nextYCoordinate); + x = interpolateBetween2DPointsForY(activepolygon.topright, activepolygon.bottomright, nextYCoordinate); + let bottomright = new Vector2D(x, nextYCoordinate); + let outPolygon = { + topleft: topleft, + topright: topright, + bottomleft: bottomleft, + bottomright: bottomright, + leftline: Line2D.fromPoints(topleft, bottomleft), + rightline: Line2D.fromPoints(bottomright, topright) + }; + if (newOutPolygonRow.length > 0) { + let prevoutpolygon = newOutPolygonRow[newOutPolygonRow.length - 1]; + let d1 = outPolygon.topleft.distanceTo(prevoutpolygon.topright); + let d2 = outPolygon.bottomleft.distanceTo(prevoutpolygon.bottomright); + if (d1 < EPS && d2 < EPS) { + // we can join this polygon with the one to the left: + outPolygon.topleft = prevoutpolygon.topleft; + outPolygon.leftline = prevoutpolygon.leftline; + outPolygon.bottomleft = prevoutpolygon.bottomleft; + newOutPolygonRow.splice(newOutPolygonRow.length - 1, 1); + } + } + newOutPolygonRow.push(outPolygon); + } + if (yindex > 0) { + // try to match the new polygons against the previous row: + //尝试将新多边形与上一行匹配: + let prevContinuedIndexes = {}; + let matchedIndexes = {}; + for (let i = 0; i < newOutPolygonRow.length; i++) { + let thispolygon = newOutPolygonRow[i]; + for (let ii = 0; ii < prevOutPolygonRow.length; ii++) { + if (!matchedIndexes[ii]) { + // not already processed? + // We have a match if the sidelines are equal or if the top coordinates + // are on the sidelines of the previous polygon + let prevpolygon = prevOutPolygonRow[ii]; + if (prevpolygon.bottomleft.distanceTo(thispolygon.topleft) < EPS) { + if (prevpolygon.bottomright.distanceTo(thispolygon.topright) < EPS) { + // Yes, the top of this polygon matches the bottom of the previous: + matchedIndexes[ii] = true; + // Now check if the joined polygon would remain convex: + let d1 = thispolygon.leftline.direction().x - prevpolygon.leftline.direction().x; + let d2 = thispolygon.rightline.direction().x - prevpolygon.rightline.direction().x; + let leftlinecontinues = Math.abs(d1) < EPS; + let rightlinecontinues = Math.abs(d2) < EPS; + let leftlineisconvex = leftlinecontinues || d1 >= 0; + let rightlineisconvex = rightlinecontinues || d2 >= 0; + if (leftlineisconvex && rightlineisconvex) { + // yes, both sides have convex corners: + // This polygon will continue the previous polygon + thispolygon.outpolygon = prevpolygon.outpolygon; + thispolygon.leftlinecontinues = leftlinecontinues; + thispolygon.rightlinecontinues = rightlinecontinues; + prevContinuedIndexes[ii] = true; + } + break; + } + } + } // if(!prevcontinuedindexes[ii]) + } // for ii + } // for i + for (let ii = 0; ii < prevOutPolygonRow.length; ii++) { + if (!prevContinuedIndexes[ii]) { + // polygon ends here + // Finish the polygon with the last point(s): + let prevpolygon = prevOutPolygonRow[ii]; + prevpolygon.outpolygon.rightpoints.push(prevpolygon.bottomright); + if (prevpolygon.bottomright.distanceTo(prevpolygon.bottomleft) > EPS) { + // polygon ends with a horizontal line: + prevpolygon.outpolygon.leftpoints.push(prevpolygon.bottomleft); + } + // reverse the left half so we get a counterclockwise circle: + prevpolygon.outpolygon.leftpoints.reverse(); + let points2d = prevpolygon.outpolygon.rightpoints.concat(prevpolygon.outpolygon.leftpoints); + let vertices = points2d.map(v => new Vertex3D(orthobasis.to3D(v))); + let polygon = new Polygon(vertices, plane); + destpolygons.push(polygon); + } + } + } + for (let i = 0; i < newOutPolygonRow.length; i++) { + let thispolygon = newOutPolygonRow[i]; + if (!thispolygon.outpolygon) { + // polygon starts here: + thispolygon.outpolygon = { + leftpoints: [], + rightpoints: [] + }; + thispolygon.outpolygon.leftpoints.push(thispolygon.topleft); + if (thispolygon.topleft.distanceTo(thispolygon.topright) > EPS) { + // we have a horizontal line at the top: + thispolygon.outpolygon.rightpoints.push(thispolygon.topright); + } + } + else { + // continuation of a previous row + if (!thispolygon.leftlinecontinues) { + thispolygon.outpolygon.leftpoints.push(thispolygon.topleft); + } + if (!thispolygon.rightlinecontinues) { + thispolygon.outpolygon.rightpoints.push(thispolygon.topright); + } + } + } + prevOutPolygonRow = newOutPolygonRow; + // } + //#endregion + } // for yindex +} + +function reTesselate(csg) { + if (csg.isRetesselated) + return csg; + let polygonsPerPlane = {}; + let isCanonicalized = csg.isCanonicalized; + let fuzzyfactory = new FuzzyCSGFactory(); + for (let polygon of csg.polygons) { + let plane = polygon.plane; + if (!isCanonicalized) { + // in order to identify polygons having the same plane, we need to canonicalize the planes + // We don't have to do a full canonizalization (including vertices), to save time only do the planes and the shared data: + plane = fuzzyfactory.getPlane(plane); + } + let tag = plane.getTag(); + if (!(tag in polygonsPerPlane)) + polygonsPerPlane[tag] = [polygon]; + else + polygonsPerPlane[tag].push(polygon); + } + let destpolygons = []; + for (let planetag in polygonsPerPlane) { + let sourcepolygons = polygonsPerPlane[planetag]; + reTesselateCoplanarPolygons(sourcepolygons, destpolygons); + } + let resultCSG = new CSG(destpolygons); + resultCSG.isRetesselated = true; + return resultCSG; +} + +/** Class CSG + * Holds a binary space partition tree representing a 3D solid. Two solids can + * be combined using the `union()`, `subtract()`, and `intersect()` methods. + * @constructor + */ +class CSG { + constructor(polygons = []) { + this.polygons = polygons; + /** # 是否已精简重复点 */ + this.isCanonicalized = false; + /** # 是否已合并轮廓 */ + this.isRetesselated = false; + } + /** + * Return a new CSG solid representing the space in either this solid or + * in the given solids. Neither this solid nor the given solids are modified. + * @param {CSG[]} csg - list of CSG objects + * @returns {CSG} new CSG object + * @example + * let C = A.union(B) + * @example + * +-------+ +-------+ + * | | | | + * | A | | | + * | +--+----+ = | +----+ + * +----+--+ | +----+ | + * | B | | | + * | | | | + * +-------+ +-------+ + */ + union(csg) { + let csgs; + if (csg instanceof Array) { + csgs = csg.slice(0); + csgs.push(this); + } + else + csgs = [this, csg]; + let i; + // combine csg pairs in a way that forms a balanced binary tree pattern + for (i = 1; i < csgs.length; i += 2) { + csgs.push(csgs[i - 1].unionSub(csgs[i])); + } + return csgs[i - 1].reTesselated().canonicalized(); + } + unionSub(csg, retesselate = false, canonicalize = false) { + if (!this.mayOverlap(csg)) + return this.unionForNonIntersecting(csg); + let a = new Tree(this.polygons); + let b = new Tree(csg.polygons); + a.clipTo(b); + // b.clipTo(a, true); // ERROR: this doesn't work + b.clipTo(a); + b.invert(); + b.clipTo(a); + b.invert(); + let newpolygons = [...a.allPolygons(), ...b.allPolygons()]; + let resultCSG = new CSG(newpolygons); + if (retesselate) + resultCSG = resultCSG.reTesselated(); + if (canonicalize) + resultCSG = resultCSG.canonicalized(); + return resultCSG; + } + // Like union, but when we know that the two solids are not intersecting + // Do not use if you are not completely sure that the solids do not intersect! + unionForNonIntersecting(csg) { + let newpolygons = [...this.polygons, ...csg.polygons]; + let result = new CSG(newpolygons); + result.isCanonicalized = this.isCanonicalized && csg.isCanonicalized; + result.isRetesselated = this.isRetesselated && csg.isRetesselated; + return result; + } + /** + * Return a new CSG solid representing space in this solid but + * not in the given solids. Neither this solid nor the given solids are modified. + * @returns new CSG object + * @example + * let C = A.subtract(B) + * @example + * +-------+ +-------+ + * | | | | + * | A | | | + * | +--+----+ = | +--+ + * +----+--+ | +----+ + * | B | + * | | + * +-------+ + */ + subtract(csg) { + let csgs; + if (csg instanceof Array) + csgs = csg; + else + csgs = [csg]; + let result = this; + for (let i = 0; i < csgs.length; i++) { + let islast = i === csgs.length - 1; + result = result.subtractSub(csgs[i], islast, islast); + } + return result; + } + subtractSub(csg, retesselate = false, canonicalize = false) { + let a = new Tree(this.polygons); + let b = new Tree(csg.polygons); + a.invert(); + a.clipTo(b); + b.clipTo(a, true); + a.addPolygons(b.allPolygons()); + a.invert(); + let result = new CSG(a.allPolygons()); + // if (retesselate) result = result.reTesselated(); + // if (canonicalize) result = result.canonicalized(); + return result; + } + /** + * Return a new CSG solid representing space in both this solid and + * in the given solids. Neither this solid nor the given solids are modified. + * let C = A.intersect(B) + * @returns new CSG object + * @example + * +-------+ + * | | + * | A | + * | +--+----+ = +--+ + * +----+--+ | +--+ + * | B | + * | | + * +-------+ + */ + intersect(csg) { + let csgs; + if (csg instanceof Array) + csgs = csg; + else + csgs = [csg]; + let result = this; + for (let i = 0; i < csgs.length; i++) { + let islast = i === csgs.length - 1; + result = result.intersectSub(csgs[i], islast, islast); + } + return result; + } + intersectSub(csg, retesselate = false, canonicalize = false) { + let a = new Tree(this.polygons); + let b = new Tree(csg.polygons); + a.invert(); + b.clipTo(a); + b.invert(); + a.clipTo(b); + b.clipTo(a); + a.addPolygons(b.allPolygons()); + a.invert(); + let result = new CSG(a.allPolygons()); + // if (retesselate) result = result.reTesselated(); + // if (canonicalize) result = result.canonicalized(); + return result; + } + /** + * Return a new CSG solid with solid and empty space switched. + * This solid is not modified. + */ + invert() { + let flippedpolygons = this.polygons.map(p => p.flipped()); + return new CSG(flippedpolygons); + } + // Affine transformation of CSG object. Returns a new CSG object + transform1(matrix4x4) { + let newpolygons = this.polygons.map(p => { + return p.transform(matrix4x4); + }); + let result = new CSG(newpolygons); + result.isCanonicalized = this.isCanonicalized; + result.isRetesselated = this.isRetesselated; + return result; + } + /** + * Return a new CSG solid that is transformed using the given Matrix. + * Several matrix transformations can be combined before transforming this solid. + * @param {CSG.Matrix4x4} matrix4x4 - matrix to be applied + * @returns {CSG} new CSG object + * @example + * var m = new CSG.Matrix4x4() + * m = m.multiply(CSG.Matrix4x4.rotationX(40)) + * m = m.multiply(CSG.Matrix4x4.translation([-.5, 0, 0])) + * let B = A.transform(m) + */ + transform(matrix4x4) { + let ismirror = IsMirror(matrix4x4); + let transformedvertices = {}; + let transformedplanes = {}; + let newpolygons = this.polygons.map(p => { + let newplane; + let plane = p.plane; + let planetag = plane.getTag(); + if (planetag in transformedplanes) { + newplane = transformedplanes[planetag]; + } + else { + newplane = plane.transform(matrix4x4); + transformedplanes[planetag] = newplane; + } + let newvertices = p.vertices.map(v => { + let newvertex; + let vertextag = v.getTag(); + if (vertextag in transformedvertices) { + newvertex = transformedvertices[vertextag]; + } + else { + newvertex = v.transform(matrix4x4); + transformedvertices[vertextag] = newvertex; + } + return newvertex; + }); + if (ismirror) + newvertices.reverse(); + return new Polygon(newvertices, newplane); + }); + let result = new CSG(newpolygons); + result.isRetesselated = this.isRetesselated; + result.isCanonicalized = this.isCanonicalized; + return result; + } + canonicalized() { + if (this.isCanonicalized) + return this; + return canonicalizeCSG(this); + } + reTesselated() { + if (this.isRetesselated) + return this; + return reTesselate(this); + } + //如果两个实体有可能重叠,返回true + mayOverlap(csg) { + if (this.polygons.length === 0 || csg.polygons.length === 0) + return false; + let mybounds = bounds(this); + let otherbounds = bounds(csg); + if (mybounds[1].x < otherbounds[0].x) + return false; + if (mybounds[0].x > otherbounds[1].x) + return false; + if (mybounds[1].y < otherbounds[0].y) + return false; + if (mybounds[0].y > otherbounds[1].y) + return false; + if (mybounds[1].z < otherbounds[0].z) + return false; + if (mybounds[0].z > otherbounds[1].z) + return false; + return true; + } + toTriangles() { + let polygons = []; + for (let poly of this.polygons) { + let firstVertex = poly.vertices[0]; + for (let i = poly.vertices.length - 3; i >= 0; i--) { + polygons.push(new Polygon([ + firstVertex, + poly.vertices[i + 1], + poly.vertices[i + 2] + ], poly.plane)); + } + } + return polygons; + } +} + +function Geometry2CSG(geometry) { + if (geometry instanceof BufferGeometry) + geometry = new Geometry().fromBufferGeometry(geometry); + let polygons = []; + for (let i = 0; i < geometry.faces.length; i++) { + let face = geometry.faces[i]; + let faceVertexUvs = geometry.faceVertexUvs[0][i]; + let vertices = []; + if (face instanceof Face3) { + let uv = faceVertexUvs ? faceVertexUvs[0].clone() : null; + let vertex1 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.a]), new Vector2D(uv.x, uv.y)); + vertices.push(vertex1); + uv = faceVertexUvs ? faceVertexUvs[1].clone() : null; + let vertex2 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.b]), new Vector2D(uv.x, uv.y)); + vertices.push(vertex2); + uv = faceVertexUvs ? faceVertexUvs[2].clone() : null; + let vertex3 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.c]), new Vector2D(uv.x, uv.y)); + vertices.push(vertex3); + } + let polygon = new Polygon(vertices); + let normal = Vector3DToVector3(polygon.plane.normal); + if (!isNaN(polygon.plane.w) && !equalv3(normal, new Vector3())) + polygons.push(polygon); + } + return new CSG(polygons); +} +function Vector3ToVector3D(v) { + return new Vector3D(v.x, v.y, v.z); +} +function Vector3DToVector3(v) { + return new Vector3(v.x, v.y, v.z); +} + +class BoardUVGenerator { + generateTopUV(geometry, vertices, indexA, indexB, indexC) { + var a_x = vertices[indexA * 3]; + var a_y = vertices[indexA * 3 + 1]; + var b_x = vertices[indexB * 3]; + var b_y = vertices[indexB * 3 + 1]; + var c_x = vertices[indexC * 3]; + var c_y = vertices[indexC * 3 + 1]; + return [ + new Vector2(a_x, a_y), + new Vector2(b_x, b_y), + new Vector2(c_x, c_y) + ]; + } + generateSideWallUV(geometry, vertices, indexA, indexB, indexC, indexD) { + var a_x = vertices[indexA * 3]; + var a_y = vertices[indexA * 3 + 1]; + var a_z = vertices[indexA * 3 + 2]; + var b_x = vertices[indexB * 3]; + var b_y = vertices[indexB * 3 + 1]; + var b_z = vertices[indexB * 3 + 2]; + var c_x = vertices[indexC * 3]; + var c_y = vertices[indexC * 3 + 1]; + var c_z = vertices[indexC * 3 + 2]; + var d_x = vertices[indexD * 3]; + var d_y = vertices[indexD * 3 + 1]; + var d_z = vertices[indexD * 3 + 2]; + let pts; + if (Math.abs(a_y - b_y) < 0.01) { + pts = [ + new Vector2(a_z - 1, a_x), + new Vector2(b_z - 1, b_x), + new Vector2(c_z - 1, c_x), + new Vector2(d_z - 1, d_x) + ]; + } + else { + pts = [ + new Vector2(a_z - 1, a_y), + new Vector2(b_z - 1, b_y), + new Vector2(c_z - 1, c_y), + new Vector2(d_z - 1, d_y) + ]; + } + return pts; + } +} +class BoardUVGenerator2 extends BoardUVGenerator { + generateTopUV(geometry, vertices, indexA, indexB, indexC) { + var a_x = vertices[indexA * 3]; + var a_y = vertices[indexA * 3 + 1]; + var b_x = vertices[indexB * 3]; + var b_y = vertices[indexB * 3 + 1]; + var c_x = vertices[indexC * 3]; + var c_y = vertices[indexC * 3 + 1]; + return [ + new Vector2(a_y, a_x), + new Vector2(b_y, b_x), + new Vector2(c_y, c_x) + ]; + } +} +let boardUVGenerator = new BoardUVGenerator(); +let boardUVGenerator2 = new BoardUVGenerator2(); + +/** + * 解决 THREEBSP(CSG) 产生的结果没有办法得到分裂的个数. + * 本类分析了THREEBSP的组合情况. + * + * Example: + * + * let topology = new BSPGroupParse(csg); + * topology.parse(); + */ +class BSPGroupParse { + constructor(bsp, fractionDigits = 1) { + this.fractionDigits = fractionDigits; + this.map = new Map(); + this.vecMap = new Map(); + if (bsp) + for (let poly of bsp.polygons) + this.Add(poly); + } + Add(poly) { + let strs = poly.vertices.map(p => this.GenerateP(p.pos)); + let str0 = strs[0]; + let s0 = this.Get(str0); + for (let i = 1; i < strs.length; i++) { + let stri = strs[i]; + s0.add(stri); + this.Get(stri).add(str0); + } + } + /** + * 返回组合点 + */ + Parse() { + let set = new Set([...this.map.keys()]); + let res = []; + while (set.size > 0) { + let fp = set[Symbol.iterator]().next().value; + set.delete(fp); + let cset = new Set(); + cset.add(fp); + this.GetPts(fp, cset, set); + let pts = [...cset].map(str => { + let v3 = this.vecMap.get(str); + return new Vector3(v3.x, v3.y, v3.z); + }); + res.push(pts); + } + return res; + } + Get(vstr) { + if (!this.map.has(vstr)) { + let s = new Set(); + this.map.set(vstr, s); + return s; + } + return this.map.get(vstr); + } + GetPts(p, cset, oset) { + let strs = this.map.get(p); + for (let str of strs) { + if (!cset.has(str)) { + cset.add(str); + oset.delete(str); + this.GetPts(str, cset, oset); + } + } + } + GenerateP(v) { + let str = [v.x, v.y, v.z].map(n => ToFixed(n, this.fractionDigits)).join(","); + this.vecMap.set(str, v); + return str; + } +} + +function ScaleUV(geo, scale = 1e-3) { + for (let uvsg of geo.faceVertexUvs) { + for (let uvs of uvsg) { + for (let uv of uvs) { + uv.multiplyScalar(scale); + } + } + } +} +function ScaleUV2(geo, ocs, xScale = 1e-3, yScale = 1e-3, isInvert = false) { + for (let uvsg of geo.faceVertexUvs) { + for (let uvs of uvsg) { + for (let uv of uvs) { + let p = new Vector3(uv.x, uv.y).applyMatrix4(ocs); + uv.x = p.x; + uv.y = p.y; + if (isInvert) { + uv.x /= yScale; + uv.y /= xScale; + } + else { + uv.x /= xScale; + uv.y /= yScale; + } + } + } + } +} + +class Shape { + constructor(out, hols) { + this._Holes = []; + this._Shape = new Shape$1(); + this._Outline = out || new Contour(); + hols && this._Holes.push(...hols); + } + get Outline() { + return this._Outline; + } + get Holes() { + return this._Holes; + } + get Area() { + let outlineArea = this._Outline.Area; + let holeArea = this._Holes.map(l => l.Area).reduce((a1, a2) => a1 + a2, 0); + return outlineArea - holeArea; + } + get BoundingBox() { + return this._Outline.BoundingBox; + } + set Outline(cus) { + this._Outline = cus; + this.UpdateShape(); + } + set Holes(cus) { + this._Holes = cus; + this.UpdateShape(); + } + get Shape() { + this.UpdateShape(); + return this._Shape; + } + get Position() { + return this._Outline.Curve.Position; + } + set Position(p) { + let vec = p.clone().sub(this._Outline.Curve.Position); + this._Outline.Curve.Position = p; + for (let h of this._Holes) + h.Curve.Position = h.Curve.Position.add(vec); + } + Z0() { + this._Outline.Curve.Z0(); + for (let h of this._Holes) + h.Curve.Z0(); + return this; + } + MatrixPlanarizere() { + this._Outline.Curve.MatrixPlanarizere(); + for (let h of this._Holes) + h.Curve.MatrixPlanarizere(); + } + ApplyMatrix(m) { + this._Outline.Curve.ApplyMatrix(m); + this._Holes.forEach(h => h.Curve.ApplyMatrix(m)); + return this; + } + ApplyScaleMatrix(m) { + let cu = this.Outline.Curve; + let cus = this._Holes.map(h => h.Curve); + cus.unshift(cu); + for (let c of cus) { + c.ApplyMatrix(c.OCS); + c.ApplyMatrix(m); + c.ApplyMatrix(c.OCSInv); + } + return this; + } + Explode() { + let cus = []; + let contours = [this._Outline, ...this._Holes]; + for (let con of contours) { + if (con.Curve instanceof Polyline) + cus.push(...con.Curve.Explode()); + else + cus.push(con.Curve.Clone()); + } + return cus; + } + Clone() { + let shape = new Shape(); + shape.Outline = this._Outline.Clone(); + shape.Holes = this.Holes.map(h => h.Clone()); + return shape; + } + SetColor(color) { + this._Outline.Curve.ColorIndex = color; + this._Holes.forEach(h => h.Curve.ColorIndex = color); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetStretchPoints(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + { + let cus = [this._Outline.Curve]; + for (let h of this._Holes) { + cus.push(h.Curve); + } + let pts = []; + for (let c of cus) { + pts.push(...c.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + } + return pts; + } + } + return []; + } + GetGripPoints() { + let pts = this.Outline.Curve.GetGripPoints(); + for (let h of this._Holes) { + pts.push(...h.Curve.GetGripPoints()); + } + return pts; + } + MoveGripPoints(indexList, vec) { + let i = indexList[0]; + let outlineIndex = this._Outline.Curve.GetGripPoints().length; + let cu = this._Outline.Curve; + if (i >= outlineIndex) { + for (let h of this._Holes) { + let len = h.Curve.GetGripPoints().length; + if (indexList[0] < outlineIndex + len) { + indexList = [indexList[0] - outlineIndex]; + cu = h.Curve; + break; + } + outlineIndex += len; + } + } + cu.MoveGripPoints(indexList, vec); + } + GetStretchPoints() { + let pts = this.Outline.Curve.GetStretchPoints(); + for (let h of this._Holes) { + pts.push(...h.Curve.GetStretchPoints()); + } + return pts; + } + MoveStretchPoints(indexList, vec) { + let outlen = 0; + for (let cu of [this._Outline.Curve, ...this._Holes.map(h => h.Curve)]) { + let count = cu.GetStretchPoints().length; + let refIndex = outlen + count; + let curIndexs = []; + while (indexList.length) { + if (indexList[0] < refIndex) + curIndexs.push(indexList.shift() - outlen); + else + break; + } + cu.MoveStretchPoints(curIndexs, vec); + if (indexList.length === 0) + break; + outlen += count; + } + } + //交集 如果成功返回一个面域 失败返回0个 + IntersectionBoolOperation(targetShape) { + let resOutlines = this._Outline.IntersectionBoolOperation(targetShape._Outline); + let cus = this.targetOutlineSubHoleOutline(resOutlines, Shape.mergeContours([...this._Holes, ...targetShape._Holes])); + return Shape.pairHoleAndOutline(cus); + } + //并集,如果成功返回1个形状,不成功返回2个形状 + UnionBoolOperation(targetShape, checkIntersect = false) { + if (checkIntersect && !this.BoundingBox.intersectsBox(targetShape.BoundingBox, 1e-3)) + return [this, targetShape]; + let { contours, holes } = this._Outline.UnionBoolOperation(targetShape._Outline); + let shapes = []; + //提取出所有的孔洞, 目标线段孔洞和原线段差,如果孔洞和目标相减后有被包围轮廓,应把这个单独提取出来作为形状 + let unionHoles = []; + //合并运算时提取出运算后的孔洞和形状 + const pickUpHoleOrShape = (srcHoles, tarHoles, outline) => { + srcHoles.forEach(cu => { + let tmpContours = cu.SubstactBoolOperation(outline).sort((a, b) => b.Area - a.Area); + let isAllContainered = tmpContours.length > 1 && tmpContours.slice(1).every((cu, index) => tmpContours[0].CuInOutline(cu.Curve)); + //洞是否被最大的洞包含,是,则把被包含的洞都提取出来加入形状数组 + if (isAllContainered) { + shapes.push(...this.targetOutlinesSubHoles(tmpContours.slice(1).map(c => new Shape(c)), tarHoles.map(c => new Shape(c)))); + } + else + unionHoles.push(...tmpContours); + }); + }; + pickUpHoleOrShape(targetShape._Holes, this._Holes, this._Outline); + pickUpHoleOrShape(this._Holes, targetShape._Holes, targetShape._Outline); + targetShape._Holes.forEach(cu => { + this._Holes.forEach(c => { + unionHoles.push(...c.IntersectionBoolOperation(cu)); + }); + }); + shapes.push(...this.targetOutlinesSubHoles(contours.map(c => new Shape(c, holes)), unionHoles.map(c => new Shape(c)))); + return shapes; + } + /** + * 如果完全被减掉,就返回0个.其他的返回1个或者n个 + * @param targetShapes 已经是合并后的形状数组 + */ + SubstactBoolOperation(targetShapes) { + let originOutline = this.Outline; + let targetOutlines = targetShapes.map(s => s.Outline); + const { holes, outlines } = originOutline.GetSubtractListByMoreTargets(targetOutlines); + holes.push(...this.Holes); + let newShapes = []; + if (outlines.length === 1 && equaln(outlines[0].Area, originOutline.Area)) { + newShapes = [new Shape(outlines[0], Shape.mergeContours(holes))]; + } + else if (holes.length === 0) { + newShapes = outlines.map(o => new Shape(o)); + } + else { + for (let outline of outlines) + newShapes.push(...new Shape(outline).SubstactBoolOperation(holes.map(h => new Shape(h)))); + } + let holeShape = this.Holes.map(h => new Shape(h)); + for (let target of targetShapes) { + let tmpInterList = []; + if (target.Holes.length === 0) + continue; + for (let hole of target.Holes) { + let list = hole.IntersectionBoolOperation(originOutline); + tmpInterList.push(...list); + } + for (let ot of tmpInterList) { + let subShapes = []; + subShapes.push(...holeShape); + for (let t of targetShapes) { + if (t !== target) + subShapes.push(new Shape(t.Outline)); + } + newShapes.push(...new Shape(ot).SubstactBoolOperation(subShapes)); + } + } + return newShapes; + } + Equal(targetShape) { + if (this._Outline.Equal(targetShape._Outline)) { + return this._Holes.length === targetShape._Holes.length + && this._Holes.every(h1 => targetShape._Holes.some(h2 => h1.Equal(h2))); + } + return false; + } + targetOutlinesSubHoles(targetShapes, holeShapes) { + let resultShapes = []; + for (let ts of targetShapes) { + let res = ts.SubstactBoolOperation(holeShapes); + resultShapes.push(...res); + } + return resultShapes; + } + /** + * 目标轮廓减去洞 + * + * @private + * @param {Contour[]} tarContours 轮廓列表 + * @param {Contour[]} holes 洞列表 + * @returns {Contour[]} 新的轮廓列表 + * @memberof Shape + */ + targetOutlineSubHoleOutline(tarContours, holes) { + if (!holes.length) + return tarContours; + let resultContours = []; + for (let minuendContour of tarContours) { + //需要被差集的形状列表 + let tmpContour = [minuendContour]; + for (let hole of holes) { + //缓存差集生成的轮廓 + let tmps = []; + tmpContour.forEach(r => { + let cus = r.SubstactBoolOperation(hole); + tmps.push(...cus); + }); + tmpContour = tmps; //使用新生成的进行下一轮计算 + } + resultContours.push(...tmpContour); + } + return resultContours; + } + //整理轮廓数组,匹配洞和外轮廓 + static pairHoleAndOutline(contours) { + let shapes = []; + contours.sort((a, b) => b.Area - a.Area); + while (contours.length) { + //洞列表 + let tmpHoles = []; + let outline = contours.shift(); + //取出包含的洞 + arrayRemoveIf(contours, (con) => { + let bisIn = outline.CuInOutline(con.Curve); + if (bisIn) + tmpHoles.push(con); + return bisIn; + }); + let holes = Shape.removeBeContaineredHoles(tmpHoles); + shapes.push(new Shape(outline, holes)); + } + return shapes; + } + /** + * 合并洞,本质是使用(并集算法)将可以并集的洞合并在一起,减少洞的数量. + * canSidewipe 用于走刀,擦边的,包含的,是否合并 + */ + static mergeContours(holes, canSidewipe = true) { + if (holes.length <= 1) + return holes; + let rets = []; //返回的合并轮廓 + let cache = new Map(); + while (holes.length > 0) { + let c = holes.shift(); //取第一个 + let b1 = cache.get(c); + if (!b1) { + b1 = c.BoundingBox; + cache.set(c, b1); + } + while (true) { + //剩余的 不相交的形状表 remaining + let remHoles = holes.filter(ic => { + let b2 = cache.get(ic); + if (!b2) { + b2 = ic.BoundingBox; + cache.set(ic, b2); + } + if (!IntersectBox2(b1, b2)) + return true; + let unions = c.UnionBoolOperation(ic); + if (unions.holes.length > 0) + console.warn("未知情况"); + if (unions.contours.length === 1) //并集成功 + { + if (!canSidewipe) { + if (equaln(c.Area + ic.Area, unions.contours[0].Area, 0.1)) + return true; + if (equaln(unions.contours[0].Area, Math.max(c.Area, ic.Area), 0.1)) + return true; + } + c = unions.contours[0]; //更新c + b1 = c.BoundingBox; + cache.set(c, b1); + } + return unions.contours.length !== 1; //过滤出并集失败的形状 + }); + //如果c和剩余的轮廓都不相交,那么退出 + if (remHoles.length === holes.length) { + rets.push(c); //c已经是一个独立的轮廓,不和任意轮廓相交(不能合并了) + break; //退出循环.下一个 + } + else + holes = remHoles; //更新为剩下的轮廓列表 + } + } + return rets; + } + /** + * 移除被包含的洞.(移除无效的洞,已经被更大的洞包含) + * + * @private + * @param {Contour[]} tmpHoles 洞列表 + * @returns {Contour[]} 返回的洞列表都不会互相包含. + * @memberof Shape + */ + static removeBeContaineredHoles(tmpHoles) { + let holes = []; + if (tmpHoles.length <= 1) + return tmpHoles; + tmpHoles.sort((a, b) => b.Area - a.Area); + while (tmpHoles.length) { + let srcHole = tmpHoles.shift(); + holes.push(srcHole); + //移除包含的洞 + arrayRemoveIf(tmpHoles, h => srcHole.CuInOutline(h.Curve)); + } + return holes; + } + UpdateShape() { + this._Shape = this.Outline.Shape; + for (let h of this._Holes) { + if (h.Curve instanceof Polyline) + h.Curve.UpdateMatrixTo(this.Outline.Curve.OCS); + if (h.Curve instanceof Circle) { + let sp = new Path(); + let cen = h.Curve.Center.applyMatrix4(this.Outline.Curve.OCSInv); + sp.ellipse(cen.x, cen.y, h.Curve.Radius, h.Curve.Radius, 0, 2 * Math.PI, false, 0); + this._Shape.holes.push(sp); + } + else + this._Shape.holes.push(h.Shape); + } + } + //读写文件 + ReadFile(file) { + let ver = file.Read(); //1 + this._Outline = Contour.CreateContour([file.ReadObject()]); + let count = file.Read(); + for (let i = 0; i < count; i++) { + this._Holes.push(Contour.CreateContour([file.ReadObject()])); + } + } + //对象将自身数据写入到文件. + WriteFile(file) { + file.Write(1); //ver + file.WriteObject(this._Outline.Curve); + file.Write(this._Holes.length); + this._Holes.forEach(h => file.WriteObject(h.Curve)); + } +} + +class ShapeManager { + constructor() { + this._ShapeList = []; + } + get ShapeList() { + return this._ShapeList.slice(); + } + get ShapeCount() { + return this._ShapeList.length; + } + get ShapeArea() { + return this._ShapeList.map(s => s.Area).reduce((a1, a2) => a1 + a2, 0); + } + AppendShapeList(shapes) { + Array.isArray(shapes) ? this._ShapeList.push(...shapes) : this._ShapeList.push(shapes); + return this; + } + Clear() { + this._ShapeList.length = 0; + } + BoolOper(otherMg, booltype) { + switch (booltype) { + case BoolOpeartionType.Intersection: + return this.IntersectionBoolOperation(otherMg); + case BoolOpeartionType.Union: + return this.UnionBoolOperation(otherMg); + case BoolOpeartionType.Subtract: + return this.SubstactBoolOperation(otherMg); + } + } + //交集 如果成功返回一个面域 失败返回0个 + IntersectionBoolOperation(target) { + let shapes = []; + for (let srcShape of this._ShapeList) { + for (let tarShape of target._ShapeList) { + let tmpShapes = srcShape.IntersectionBoolOperation(tarShape); + shapes.push(...tmpShapes); + } + } + this.Clear(); + this._ShapeList = shapes; + return this._ShapeList.length > 0; + } + //并集,如果有一个形状并集成功,就成功 + UnionBoolOperation(targetMg) { + let isSuccess = false; + let srcShapes = this._ShapeList; + let tarShapes = targetMg._ShapeList; + let alones = []; //孤立的形状 + const boxCache = new WeakMap(); + for (let src of srcShapes) { + let notUnions = []; //未被合并的形状列表 来自tarShapes + let srcBox = src.BoundingBox; + for (let tar of tarShapes) { + let tarBox = boxCache.get(tar); + if (!tarBox) { + tarBox = tar.BoundingBox; + boxCache.set(tar, tarBox); + } + if (!IntersectBox2(srcBox, tarBox)) { + notUnions.push(tar); + continue; + } + let unions = src.UnionBoolOperation(tar); + if (unions.length === 1) //并集成功 + { + isSuccess = true; + src = unions[0]; //src设置为 合并完的形状 + } + else //并集失败 + notUnions.push(tar); //设置为未计算 + } + //如果发现src和任意一个形状并集成功,那么 + if (notUnions.length != tarShapes.length) { + notUnions.push(src); //加入src 进行下一轮 + tarShapes = notUnions; + } + else + alones.push(src); //它是孤独的一个形状 + } + this._ShapeList = alones.concat(tarShapes); + return isSuccess; + } + SubstactBoolOperation(target) { + let newShapes = []; + for (let s of this._ShapeList) { + let ss = s.SubstactBoolOperation(target.ShapeList); + newShapes.push(...ss); + } + this._ShapeList = newShapes; + return true; + } + /** + * 与region.ApplyMatrix不同的是,这个是直接操作内部对象. + * 通常用来计算布尔运算时需要真实的移动这个位置. + * 并且将不会刷新显示 + * + * @param {Matrix4} mat4 + * @memberof ShapeManager + */ + ApplyMatrix(mat4) { + for (let s of this._ShapeList) { + s.Outline.Curve.ApplyMatrix(mat4); + s.Holes.forEach(o => o.Curve.ApplyMatrix(mat4)); + } + } + ReadFile(file) { + let ver = file.Read(); //1 + let cout = file.Read(); + for (let i = 0; i < cout; i++) { + let obj = new Shape(); + obj.ReadFile(file); + this._ShapeList.push(obj); + } + } + WriteFile(file) { + file.Write(1); //ver + file.Write(this.ShapeList.length); + for (let s of this.ShapeList) { + s.WriteFile(file); + } + } +} + +var Region_1; +let Region = Region_1 = class Region extends Entity { + constructor(_ShapeManager = new ShapeManager()) { + super(); + this._ShapeManager = _ShapeManager; + } + static CreateFromCurves(cus) { + let shapes = Contour.GetAllContour(cus).map(out => new Shape(out)); + if (shapes.length > 0) { + let reg = new Region_1(); + //MarkX:曲线同面域一起移动 + reg.ApplyMatrix(shapes[0].Outline.Curve.OCS); + reg.ShapeManager.AppendShapeList(shapes); + return reg; + } + } + //如果需要修改获取到的属性,需要Clone后进行操作,否则会对原实体进行破坏 + get ShapeManager() { + return this._ShapeManager; + } + get Area() { + return this.ShapeManager.ShapeArea; + } + get BoundingBox() { + let box = new Box3(); + for (let s of this._ShapeManager.ShapeList) + box.union(s.BoundingBox); + return box; + } + Explode() { + let shapeList = this._ShapeManager.ShapeList; + if (shapeList.length <= 1) { + return shapeList[0].Explode(); + } + else { + let regs = []; + shapeList.forEach(s => { + let reg = new Region_1().ApplyMatrix(this.OCS); + reg.ShapeManager.AppendShapeList(s); + regs.push(reg); + }); + return regs; + } + } + /** + * 对于布尔操作,这个将会变换内部轮廓到对方坐标系. + * 并且这个变换不会更新图形绘制. + * @param {Matrix4} m + * @memberof Region + */ + ShapeApplyMatrix(m) { + this.WriteAllObjectRecord(); + this._ShapeManager.ApplyMatrix(m); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetGripPoints(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + { + let pts = []; + for (let s of this._ShapeManager.ShapeList) { + pts.push(...s.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + } + return pts; + } + } + return []; + } + GetGripPoints() { + let pts = []; + for (let s of this._ShapeManager.ShapeList) + pts.push(...s.GetStretchPoints()); + return pts; + } + MoveGripPoints(indexList, moveVec) { + this.WriteAllObjectRecord(); + let moveVLoc = moveVec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv)); + this.ApplyMatrix(MoveMatrix(moveVLoc)); + } + ApplyMatrix(m) { + this.WriteAllObjectRecord(); + //面域移动,组成面域的曲线也要移动 MarkX:曲线同面域一起移动 + this._ShapeManager.ShapeList.forEach(s => s.ApplyMatrix(m)); + return super.ApplyMatrix(m); + } + get Position() { + return super.Position; + } + set Position(pt) { + this.WriteAllObjectRecord(); + let moveX = pt.x - this._Matrix.elements[12]; + let moveY = pt.y - this._Matrix.elements[13]; + let moveZ = pt.z - this._Matrix.elements[14]; + this._Matrix.setPosition(pt); + this._SpaceOCS.elements[12] += moveX; + this._SpaceOCS.elements[13] += moveY; + this._SpaceOCS.elements[14] += moveZ; + let m = new Matrix4().setPosition(moveX, moveY, moveZ); + for (let s of this.ShapeManager.ShapeList) + s.ApplyMatrix(m); + this.Update(UpdateDraw.Matrix); + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + for (let s of this._ShapeManager.ShapeList) + s.ApplyScaleMatrix(m); + this.Update(UpdateDraw.Geometry); + return this; + } + //Z轴归0 + Z0() { + super.Z0(); + for (let s of this._ShapeManager.ShapeList) + s.Z0(); + return this; + } + MatrixPlanarizere() { + super.MatrixPlanarizere(); + for (let s of this._ShapeManager.ShapeList) + s.MatrixPlanarizere(); + return this; + } + ApplyMirrorMatrix(m) { + return this; + } + /** + * 请注意:该计算会操作otherRegion的矩阵 + * @param {Region} otherRegion + * @param {BoolOpeartionType} boolType + */ + BooleanOper(otherRegion, boolType) { + if (this.IsCoplaneTo(otherRegion)) { + this.WriteAllObjectRecord(); + let oldOcs = this.OCS; + //把形状曲线转移到二维屏幕计算后还原回来 + this.ShapeApplyMatrix(this.OCSInv); + otherRegion.ShapeApplyMatrix(this.OCSInv); + let isSuccess = this._ShapeManager.BoolOper(otherRegion._ShapeManager, boolType); + this.ShapeApplyMatrix(oldOcs); + this.Update(); + return isSuccess; + } + return false; + } + get MeshGeometry() { + if (this._MeshGeometry) + return this._MeshGeometry; + this.UpdateGeometry(); + return this._MeshGeometry; + } + get EdgeGeometry() { + if (this._EdgeGeometry) + return this._EdgeGeometry; + this.UpdateGeometry(); + return this._EdgeGeometry; + } + UpdateGeometry() { + let shapeList = this._ShapeManager.ShapeList; + let edgePts = []; + let meshGeoms = []; + const AddEdgePts = (pts, diffMat) => { + for (let i = 0; i < pts.length; i++) { + let p = AsVector3(pts[i]); + p.applyMatrix4(diffMat); + edgePts.push(p); + if (i !== 0 && i !== pts.length - 1) + edgePts.push(p); + } + }; + for (let i = 0; i < shapeList.length; i++) { + let shape = shapeList[i]; + let geometry = new ShapeGeometry(shape.Shape, 60); //60 可以优化. + let diffMat = this.OCSInv.clone().multiply(shape.Outline.Curve.OCSNoClone); + geometry.applyMatrix4(diffMat); + ScaleUV(geometry); + meshGeoms.push(new BufferGeometry().fromGeometry(geometry)); + let shapeInfo = shape.Shape.extractPoints(60); + let pts = shapeInfo.shape; + AddEdgePts(pts, diffMat); + let holePtss = shapeInfo.holes; + for (let holePts of holePtss) + AddEdgePts(holePts, diffMat); + } + this._EdgeGeometry = BufferGeometryUtils.CreateFromPts(edgePts); + this._MeshGeometry = BufferGeometryUtils.MergeBufferGeometries(meshGeoms); + this._MeshGeometry["IsMesh"] = true; + this._MeshGeometry.computeVertexNormals(); + } + UpdateDrawGeometry() { + this._EdgeGeometry = undefined; + this._MeshGeometry = undefined; + } + InitDrawObject(renderType = RenderType.Wireframe) { + if (renderType === RenderType.Wireframe) { + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)); + } + else if (renderType === RenderType.Conceptual) { + return new Object3D().add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)), new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex))); + } + else if (renderType === RenderType.Physical) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return mesh; + } + else if (renderType === RenderType.Print) { + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(0)); + } + else if (renderType === RenderType.Physical2) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return new Object3D().add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)), mesh); + } + } + UpdateDrawObject(renderType, obj) { + DisposeThreeObj(obj); + Object3DRemoveAll(obj); + if (renderType === RenderType.Wireframe) { + let l = obj; + l.geometry = this.EdgeGeometry; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Conceptual) { + return obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)), new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex))); + } + else if (renderType === RenderType.Physical) { + let mesh = obj; + mesh.geometry = this.MeshGeometry; + mesh.material = this.MeshMaterial; + } + else if (renderType === RenderType.Physical2) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)), mesh); + } + else if (renderType === RenderType.Print) { + let l = obj; + l.geometry = this.EdgeGeometry; + l.material = ColorMaterial.GetLineMaterial(0); + } + } + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type, obj, material) { + if (type === RenderType.Wireframe || type === RenderType.Print) { + let line = obj; + line.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (type === RenderType.Conceptual) { + for (let i = 0; i < obj.children.length; i++) { + if (i % 2 === 0) { + let l = obj.children[i]; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else { + let mesh = obj.children[i]; + mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex); + } + } + } + else { + for (let m of obj.children) { + let mesh = m; + mesh.material = this.MeshMaterial; + } + } + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + this._ShapeManager.Clear(); + this._ShapeManager.ReadFile(file); + } + WriteFile(file) { + super.WriteFile(file); + file.Write(1); //ver + this._ShapeManager.WriteFile(file); + } +}; +Region = Region_1 = __decorate([ + Factory +], Region); + +/** + * 把板件炸开成面域,0,1为正反面,其余的为边面(没有圆弧面) + */ +function Board2Regions(br) { + let ocs = br.OCS; + let cu = br.ContourCurve.Clone(); + if (cu instanceof Circle) + cu = ConverCircleToPolyline(cu); + let frontReg = Region.CreateFromCurves([cu.Clone()]); + let regFrontOcs = ocs.clone(); + regFrontOcs.setPosition(br.Position.add(br.Normal.multiplyScalar(br.Thickness))); + frontReg.ApplyMatrix(regFrontOcs); + let backReg = Region.CreateFromCurves([cu.Flip()]); + backReg.ApplyMatrix(ocs); + let resultRegs = [frontReg, backReg]; + //edges + let lines = cu.Explode().filter(c => c instanceof Line); + for (let l of lines) { + let rectPl = new Polyline().Rectangle(l.Length, br.Thickness); + let reg = Region.CreateFromCurves([rectPl]); + if (!reg) + continue; + let p = l.StartPoint.applyMatrix4(ocs); + let x = l.GetFistDeriv(0).transformDirection(ocs); + let y = br.Normal; + let z = new Vector3().crossVectors(x, y); + let mtx = new Matrix4().makeBasis(x, y, z).setPosition(p); + reg.ApplyMatrix(mtx); + resultRegs.push(reg); + } + return resultRegs; +} + +/**统一板件属性key的命名,修改值会导致无法 .xxx该属性 */ +var EBoardKeyList; +(function (EBoardKeyList) { + EBoardKeyList["Height"] = "height"; + EBoardKeyList["Width"] = "width"; + EBoardKeyList["Thick"] = "thickness"; + EBoardKeyList["RoomName"] = "roomName"; + EBoardKeyList["CabinetName"] = "cabinetName"; + EBoardKeyList["BrMat"] = "boardName"; + EBoardKeyList["Mat"] = "material"; + EBoardKeyList["Color"] = "color"; + EBoardKeyList["Lines"] = "lines"; + EBoardKeyList["ProcessGroup"] = "ProcessGroup"; + EBoardKeyList["BigHole"] = "bigHoleDir"; + /** + * 排钻类型,当没有定义每个边的排钻数据时,使用统一的排钻类型 + */ + EBoardKeyList["DrillType"] = "drillType"; + EBoardKeyList["ComposingFace"] = "composingFace"; + /** + * 封边数组,定义每个边的封边信息 + */ + EBoardKeyList["HighSealed"] = "highSealed"; + EBoardKeyList["UpSealed"] = "sealedUp"; + EBoardKeyList["DownSealed"] = "sealedDown"; + EBoardKeyList["LeftSealed"] = "sealedLeft"; + EBoardKeyList["RightSealed"] = "sealedRight"; + EBoardKeyList["KnifeRad"] = "knifeRadius"; + EBoardKeyList["SpliteHeight"] = "spliteHeight"; + EBoardKeyList["SpliteWidth"] = "spliteWidth"; + EBoardKeyList["SpliteThickness"] = "spliteThickness"; +})(EBoardKeyList || (EBoardKeyList = {})); + +/**序列化板件数据 */ +function serializeBoardData(file, processData) { + file.Write(processData[EBoardKeyList.RoomName]); + file.Write(processData[EBoardKeyList.CabinetName]); + file.Write(processData[EBoardKeyList.BrMat]); + file.Write(processData[EBoardKeyList.Mat]); + file.Write(processData[EBoardKeyList.Color]); + file.Write(processData[EBoardKeyList.Lines]); + file.Write(processData[EBoardKeyList.BigHole]); + file.Write(processData[EBoardKeyList.DrillType]); + file.Write(processData[EBoardKeyList.ComposingFace]); + file.Write(processData[EBoardKeyList.HighSealed].length); + for (let n of processData[EBoardKeyList.HighSealed]) { + file.Write(n.size); + } + file.Write(processData[EBoardKeyList.UpSealed]); + file.Write(processData[EBoardKeyList.DownSealed]); + file.Write(processData[EBoardKeyList.LeftSealed]); + file.Write(processData[EBoardKeyList.RightSealed]); + file.Write(processData.spliteHeight); + file.Write(processData.spliteWidth); + file.Write(processData.spliteThickness); + file.Write(processData.highDrill.length); + for (let n of processData.highDrill) + file.Write(n); + file.Write(processData.frontDrill); + file.Write(processData.backDrill); + file.Write(processData.remarks.length); + for (let d of processData.remarks) { + file.Write(d[0]); + file.Write(d[1]); + } +} +//反序列化板件数据 +function deserializationBoardData(file, processData, ver) { + processData[EBoardKeyList.RoomName] = file.Read(); + processData[EBoardKeyList.CabinetName] = file.Read(); + processData[EBoardKeyList.BrMat] = file.Read(); + processData[EBoardKeyList.Mat] = file.Read(); + processData[EBoardKeyList.Color] = file.Read(); + processData[EBoardKeyList.Lines] = file.Read(); + processData[EBoardKeyList.BigHole] = file.Read(); + processData[EBoardKeyList.DrillType] = file.Read(); + processData[EBoardKeyList.ComposingFace] = file.Read(); + let count = file.Read(); + processData[EBoardKeyList.HighSealed].length = 0; + for (let i = 0; i < count; i++) { + let size = file.Read(); + if (ver < 4) { + file.Read(); + } + processData[EBoardKeyList.HighSealed].push({ size }); + } + processData[EBoardKeyList.UpSealed] = file.Read(); + processData[EBoardKeyList.DownSealed] = file.Read(); + processData[EBoardKeyList.LeftSealed] = file.Read(); + processData[EBoardKeyList.RightSealed] = file.Read(); + processData.spliteHeight = file.Read(); + processData.spliteWidth = file.Read(); + processData.spliteThickness = file.Read(); + count = file.Read(); + processData.highDrill = file.ReadArray(count); + processData.frontDrill = file.Read(); + processData.backDrill = file.Read(); + if (ver >= 7) { + let count = file.Read(); + processData.remarks.length = 0; + for (let i = 0; i < count; i++) { + let d = ["", ""]; + d[0] = file.Read(); + d[1] = file.Read(); + processData.remarks.push(d); + } + } +} +function SerializeBoard2DModeingData(file, modelList) { + file.Write(modelList.length); + for (let data of modelList) { + file.WriteObject(data.path); + file.Write(data.dir); + file.Write(data.items.length); + for (let item of data.items) { + file.Write(item.depth); + file.Write(item.offset); + file.Write(item.knife.id); + file.Write(item.knife.radius); + file.Write(item.knife.angle); + file.Write(item.knife.name); + } + } +} +function SerializeBoard3DModeingData(file, modelList) { + file.Write(modelList.length); + for (let item of modelList) { + file.Write(item.path.length); + for (let d of item.path) { + file.Write(d.pt.toArray()); + file.Write(d.bul); + } + file.Write(item.dir); + file.Write(item.knife.id); + file.Write(item.knife.radius); + file.Write(item.knife.angle); + file.Write(item.knife.name); + } +} +//反序列化板件数据 +function DeserializationBoard2DModeingData(file, data, ver) { + data.length = 0; + const count = file.Read(); + for (let i = 0; i < count; i++) { + let path = file.ReadObject(); + let dir = file.Read(); + let m = { + path, + dir, + items: [] + }; + const itemCount = file.Read(); + for (let j = 0; j < itemCount; j++) { + let depth = file.Read(); + let offset = file.Read(); + let knifeId = file.Read(); + let knifeRad = file.Read(); + let knifeAngle = file.Read(); + let knifeName = file.Read(); + m.items.push({ + depth, offset, knife: { id: knifeId, radius: knifeRad, angle: knifeAngle, name: knifeName } + }); + } + data.push(m); + } +} +//反序列化板件数据 +function DeserializationBoard3DModeingData(file, data, ver) { + data.length = 0; + const count = file.Read(); + for (let i = 0; i < count; i++) { + let pathCount = file.Read(); + let path = []; + for (let i = 0; i < pathCount; i++) { + let pt = new Vector3().fromArray(file.Read()); + let bul = file.Read(); + path.push({ pt, bul }); + } + let dir = file.Read(); + let knifeId = file.Read(); + let knifeRad = file.Read(); + let knifeAngle = file.Read(); + let knifeName = file.Read(); + data.push({ + path, dir, knife: { id: knifeId, radius: knifeRad, angle: knifeAngle, name: knifeName } + }); + } +} + +var BoardType; +(function (BoardType) { + BoardType[BoardType["Layer"] = 0] = "Layer"; + BoardType[BoardType["Vertical"] = 1] = "Vertical"; + BoardType[BoardType["Behind"] = 2] = "Behind"; //背板 +})(BoardType || (BoardType = {})); +//排钻类型 +var DrillType; +(function (DrillType) { + DrillType["Yes"] = "\u6392"; + DrillType["None"] = "\u4E0D\u6392"; + DrillType["More"] = "**\u591A\u79CD**"; + DrillType["Invail"] = "\u65E0\u6548\u914D\u7F6E"; +})(DrillType || (DrillType = {})); +//偏心轮类型 +var FaceDirection; +(function (FaceDirection) { + FaceDirection[FaceDirection["Front"] = 0] = "Front"; + FaceDirection[FaceDirection["Back"] = 1] = "Back"; +})(FaceDirection || (FaceDirection = {})); +//纹路类型 +var LinesType; +(function (LinesType) { + /** 正纹 */ + LinesType[LinesType["Positive"] = 0] = "Positive"; + /** 反纹 */ + LinesType[LinesType["Reverse"] = 1] = "Reverse"; + /** 可翻转 */ + LinesType[LinesType["CanReversal"] = 2] = "CanReversal"; +})(LinesType || (LinesType = {})); +// 排版面 +var ComposingType; +(function (ComposingType) { + ComposingType[ComposingType["Positive"] = 0] = "Positive"; + ComposingType[ComposingType["Reverse"] = 1] = "Reverse"; + ComposingType[ComposingType["Arbitrary"] = 2] = "Arbitrary"; +})(ComposingType || (ComposingType = {})); +/** + *背板靠上还是靠下 + * + * @export + * @enum {number} + */ +var BehindHeightPositon; +(function (BehindHeightPositon) { + BehindHeightPositon["ForTop"] = "top"; + BehindHeightPositon["ForBottom"] = "bottom"; + BehindHeightPositon["AllHeight"] = "all"; //总高 +})(BehindHeightPositon || (BehindHeightPositon = {})); +/** + *板件相对位置 + * + * @export + * @enum {number} + */ +var BrRelativePos; +(function (BrRelativePos) { + BrRelativePos["Front"] = "front"; + BrRelativePos["Back"] = "back"; + BrRelativePos["Top"] = "top"; + BrRelativePos["Bottom"] = "bottom"; + BrRelativePos["Left"] = "left"; + BrRelativePos["Right"] = "right"; + BrRelativePos["Div"] = "div"; +})(BrRelativePos || (BrRelativePos = {})); +var StripType; +(function (StripType) { + StripType["H"] = "h"; + StripType["V"] = "v"; +})(StripType || (StripType = {})); +var CurtailType; +(function (CurtailType) { + CurtailType["PerBr"] = "0"; + CurtailType["Total"] = "1"; +})(CurtailType || (CurtailType = {})); +var BoardOpenDir; +(function (BoardOpenDir) { + BoardOpenDir[BoardOpenDir["Left"] = 1] = "Left"; + BoardOpenDir[BoardOpenDir["Right"] = 2] = "Right"; + BoardOpenDir[BoardOpenDir["Up"] = 3] = "Up"; + BoardOpenDir[BoardOpenDir["Down"] = 4] = "Down"; + BoardOpenDir[BoardOpenDir["None"] = 0] = "None"; +})(BoardOpenDir || (BoardOpenDir = {})); + +function GenerateExtrudeEdgeGeometry(contourPoints, height) { + let pts = []; + for (let cs of contourPoints) + pts.push(...GenerateExtrudeEdgeGeometryPoints(cs, height)); + let geo = new BufferGeometry().setFromPoints(pts); + return geo; +} +function GenerateExtrudeEdgeGeometryPoints(contourPoints, height) { + if (contourPoints.length < 3) + return []; + if (equalv3(contourPoints[0], arrayLast(contourPoints))) + contourPoints.pop(); + let pts = []; + let hpts = contourPoints.map(p => new Vector3(p.x, p.y, height)); + let count = contourPoints.length; + for (let i = 0; i < count; i++) { + pts.push(contourPoints[i], contourPoints[FixIndex(i + 1, count)], hpts[i], hpts[FixIndex(i + 1, count)], contourPoints[i], hpts[i]); + } + return pts; +} + +// Quote from: +// https://github.com/Mugen87/yume/blob/master/src/javascript/engine/etc/OBB.js +// 即obb.js(本项目中已存在) +// Reference material: +//https://stackoverflow.com/questions/28499800/oriented-box-intersection-in-threejs +//http://www.cnblogs.com/iamzhanglei/archive/2012/06/07/2539751.html +//https://github.com/Mugen87/yume/blob/master/src/javascript/engine/etc/OBB.js +class OBB { + constructor(ocs, halfSizes) { + this.ocs = ocs; + this.halfSizes = halfSizes; + this._EPSILON = 1e-3; + this.center = halfSizes.clone().applyMatrix4(ocs); + } + intersectsOBB(obb, is2D, ucsInv) { + let newCenter; + let newObbCenter; + let cs; + let obbcs; + if (is2D) { + let mtx1 = new Matrix4().multiplyMatrices(ucsInv, this.ocs); + let mtx2 = new Matrix4().multiplyMatrices(ucsInv, obb.ocs); + cs = mtx1; + obbcs = mtx2; + cs.elements[14] = 0; + obbcs.elements[14] = 0; + newCenter = this.halfSizes.clone().applyMatrix4(cs); + newObbCenter = obb.halfSizes.clone().applyMatrix4(obbcs); + } + let xAxisA = new Vector3(); + let yAxisA = new Vector3(); + let zAxisA = new Vector3(); + let xAxisB = new Vector3(); + let yAxisB = new Vector3(); + let zAxisB = new Vector3(); + let translation = new Vector3(); + let vector = new Vector3(); + let axisA = []; + let axisB = []; + let rotationMatrix = [[], [], []]; + let rotationMatrixAbs = [[], [], []]; + let halfSizeA, halfSizeB; + let t, i; + // extract each axis + (cs !== null && cs !== void 0 ? cs : this.ocs).extractBasis(xAxisA, yAxisA, zAxisA); + (obbcs !== null && obbcs !== void 0 ? obbcs : obb.ocs).extractBasis(xAxisB, yAxisB, zAxisB); + // push basis vectors into arrays, so you can access them via indices + axisA.push(xAxisA, yAxisA, zAxisA); + axisB.push(xAxisB, yAxisB, zAxisB); + // get displacement vector + vector.subVectors(newObbCenter !== null && newObbCenter !== void 0 ? newObbCenter : obb.center, newCenter !== null && newCenter !== void 0 ? newCenter : this.center); + // express the translation vector in the coordinate frame of the current + // OBB (this) + for (i = 0; i < 3; i++) { + translation.setComponent(i, vector.dot(axisA[i])); + } + // generate a rotation matrix that transforms from world space to the + // OBB's coordinate space + for (i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + rotationMatrix[i][j] = axisA[i].dot(axisB[j]); + rotationMatrixAbs[i][j] = Math.abs(rotationMatrix[i][j]) + this._EPSILON; + } + } + // test the three major axes of this OBB + for (i = 0; i < 3; i++) { + vector.set(rotationMatrixAbs[i][0], rotationMatrixAbs[i][1], rotationMatrixAbs[i][2]); + halfSizeA = this.halfSizes.getComponent(i); + halfSizeB = obb.halfSizes.dot(vector); + if (Math.abs(translation.getComponent(i)) > halfSizeA + halfSizeB) { + return false; + } + } + // test the three major axes of other OBB + for (i = 0; i < 3; i++) { + vector.set(rotationMatrixAbs[0][i], rotationMatrixAbs[1][i], rotationMatrixAbs[2][i]); + halfSizeA = this.halfSizes.dot(vector); + halfSizeB = obb.halfSizes.getComponent(i); + vector.set(rotationMatrix[0][i], rotationMatrix[1][i], rotationMatrix[2][i]); + t = translation.dot(vector); + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + } + // test the 9 different cross-axes + // A.x B.x + halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][0] + this.halfSizes.z * rotationMatrixAbs[1][0]; + halfSizeB = obb.halfSizes.y * rotationMatrixAbs[0][2] + obb.halfSizes.z * rotationMatrixAbs[0][1]; + t = translation.z * rotationMatrix[1][0] - translation.y * rotationMatrix[2][0]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.x < cross> B.y + halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][1] + this.halfSizes.z * rotationMatrixAbs[1][1]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[0][2] + obb.halfSizes.z * rotationMatrixAbs[0][0]; + t = translation.z * rotationMatrix[1][1] - translation.y * rotationMatrix[2][1]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.x B.z + halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][2] + this.halfSizes.z * rotationMatrixAbs[1][2]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[0][1] + obb.halfSizes.y * rotationMatrixAbs[0][0]; + t = translation.z * rotationMatrix[1][2] - translation.y * rotationMatrix[2][2]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.y B.x + halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][0] + this.halfSizes.z * rotationMatrixAbs[0][0]; + halfSizeB = obb.halfSizes.y * rotationMatrixAbs[1][2] + obb.halfSizes.z * rotationMatrixAbs[1][1]; + t = translation.x * rotationMatrix[2][0] - translation.z * rotationMatrix[0][0]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.y B.y + halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][1] + this.halfSizes.z * rotationMatrixAbs[0][1]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[1][2] + obb.halfSizes.z * rotationMatrixAbs[1][0]; + t = translation.x * rotationMatrix[2][1] - translation.z * rotationMatrix[0][1]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.y B.z + halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][2] + this.halfSizes.z * rotationMatrixAbs[0][2]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[1][1] + obb.halfSizes.y * rotationMatrixAbs[1][0]; + t = translation.x * rotationMatrix[2][2] - translation.z * rotationMatrix[0][2]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.z B.x + halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][0] + this.halfSizes.y * rotationMatrixAbs[0][0]; + halfSizeB = obb.halfSizes.y * rotationMatrixAbs[2][2] + obb.halfSizes.z * rotationMatrixAbs[2][1]; + t = translation.y * rotationMatrix[0][0] - translation.x * rotationMatrix[1][0]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.z B.y + halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][1] + this.halfSizes.y * rotationMatrixAbs[0][1]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[2][2] + obb.halfSizes.z * rotationMatrixAbs[2][0]; + t = translation.y * rotationMatrix[0][1] - translation.x * rotationMatrix[1][1]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // A.z B.z + halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][2] + this.halfSizes.y * rotationMatrixAbs[0][2]; + halfSizeB = obb.halfSizes.x * rotationMatrixAbs[2][1] + obb.halfSizes.y * rotationMatrixAbs[2][0]; + t = translation.y * rotationMatrix[0][2] - translation.x * rotationMatrix[1][2]; + if (Math.abs(t) > halfSizeA + halfSizeB) { + return false; + } + // no separating axis exists, so the two OBB don't intersect + return true; + } +} + +let Hole = class Hole extends Entity { + get Height() { + return this._Height; + } + set Height(v) { + if (this._Height !== v) { + this.WriteAllObjectRecord(); + this._Height = v; + this.Update(); + } + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + if (ver <= 4) { + //临时兼容旧图纸排钻,更新旧图纸后去掉兼容代码 + file['readIndex']--; + } + else { + this._Height = file.Read(); + this.FId = file.ReadSoftObjectId(); + this.MId = file.ReadSoftObjectId(); + } + } + WriteFile(file) { + super.WriteFile(file); + file.Write(5); //ver + file.Write(this._Height); + file.WriteSoftObjectId(this.FId); + file.WriteSoftObjectId(this.MId); + } +}; +__decorate([ + AutoRecord +], Hole.prototype, "FId", void 0); +__decorate([ + AutoRecord +], Hole.prototype, "MId", void 0); +Hole = __decorate([ + Factory +], Hole); + +let ExtrudeHole = class ExtrudeHole extends Hole { + constructor() { + super(...arguments); + this._contourCurve = new Polyline(); + this._knifeRadius = 3; + this.isHole = true; + this.isThrough = false; + } + get KnifeRadius() { + return this._knifeRadius; + } + set KnifeRadius(v) { + if (!equaln(v, this._knifeRadius)) { + this.WriteAllObjectRecord(); + this._knifeRadius = v; + } + } + Explode() { + return [this.ContourCurve.Clone().ApplyMatrix(this.OCS)]; + } + get ContourCurve() { + return this._contourCurve; + } + set ContourCurve(curve) { + if (!curve.IsClose) + return; + if (curve instanceof Polyline) { + curve.CloseMark = true; + let pts = curve.LineData; + if (equalv2(pts[0].pt, arrayLast(pts).pt)) + pts.pop(); + //如果曲线被旋转了,那么修正它的旋转矩阵,避免纹路错误 + let ocs = curve.OCS; + if (!equaln(ocs.elements[0], 1)) // || ocs.elements[9] || ocs.elements[10] + { + for (let p of pts) + Vector2ApplyMatrix4(ocs, p.pt); + curve.OCS = new Matrix4(); + } + curve.ClearDraw(); + } + this.WriteAllObjectRecord(); + this._contourCurve = curve; + this.CheckContourCurve(); + this.Update(); + } + CheckContourCurve() { + let box = this._contourCurve.BoundingBox; + //修正轮廓基点 + if (!equalv3(box.min, ZeroVec)) { + this._contourCurve.Position = + this._contourCurve.Position.sub(box.min); + let v = box.min.applyMatrix4(this.OCS.setPosition(ZeroVec)); + this._Matrix.setPosition(this.Position.add(v)); + } + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + let cu = this.ContourCurve; + cu.ApplyMatrix(this.OCS); + cu.ApplyMatrix(m); + cu.ApplyMatrix(this.OCSInv); + this.CheckContourCurve(); + this.Update(); + return this; + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetStretchPoints(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + { + let contour = this.ContourCurve.Clone(); + contour.ApplyMatrix(this.OCS); + let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform); + contour.Position = contour.Position.add(this.Normal.multiplyScalar(this.Height)); + pts.push(...contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + if (snapMode === ObjectSnapMode.Mid) + pts.push(...contour.GetStretchPoints().map(p => p.add(this.Normal.multiplyScalar(-this.Height / 2)))); + return pts; + } + } + return []; + } + get Shape() { + let contour = Contour.CreateContour(this.ContourCurve.Clone(), false); + return new Shape(contour); + } + get BoundingBoxInOCS() { + let box = new Box3Ext().copy(this.ContourCurve.BoundingBox); + box.max.add(new Vector3(0, 0, this.Height)); + return box; + } + get BoundingBox() { + let box = this.ContourCurve.BoundingBox; + box.max.add(new Vector3(0, 0, this.Height)); + box.applyMatrix4(this.OCS); + return box; + } + get EdgeGeometry() { + if (this._EdgeGeometry) + return this._EdgeGeometry; + let pts = [this.ContourCurve.Shape.getPoints(6).map(AsVector3)]; + this._EdgeGeometry = GenerateExtrudeEdgeGeometry(pts, this.Height).applyMatrix4(this._contourCurve.OCSNoClone); + return this._EdgeGeometry; + } + get MeshGeometry() { + if (this._MeshGeometry) + return this._MeshGeometry; + this._MeshGeometry = this.GeneralMeshGeometry(); + return this._MeshGeometry; + } + GeneralMeshGeometry() { + let extrudeSettings = { + curveSegments: 12, + steps: 1, + bevelEnabled: false, + depth: this.Height, + }; + let geo = new ExtrudeGeometry(this.ContourCurve.Shape, extrudeSettings); + geo.applyMatrix4(this._contourCurve.OCS); + return geo; + } + GetGripOrStretchPoints(dragType) { + let isGrip = dragType === DragPointType.Grip; + let pts = isGrip ? this.ContourCurve.GetGripPoints() : this.ContourCurve.GetStretchPoints(); + let v = new Vector3(0, 0, this.Height); + pts.push(...pts.map(p => p.clone().add(v))); + pts.forEach(p => { p.applyMatrix4(this.OCS); }); + return pts; + } + GetStrectchPointCountList(dragType) { + return this.ContourCurve.GetDragPointCount(dragType) * 2; + } + MoveGripOrStretchPoints(indexList, vec, dragType) { + this.WriteAllObjectRecord(); + if (dragType === DragPointType.Stretch && indexList.length === this.GetStrectchPointCountList(dragType)) { + this.Position = this.Position.add(vec); + return; + } + arraySortByNumber(indexList); + this.MoveGripOrStretchPointsOnly(indexList, vec, dragType); + this.CheckContourCurve(); + this.Update(); + } + IsStretchHeight(indexs) { + let count = this.ContourCurve.GetStretchPoints().length; + if (indexs.length === count) { + let isF = indexs[0] < count; + return indexs.every(i => isF === (i < count)); + } + return false; + } + MoveGripOrStretchPointsOnly(indexList, vec, dragType) { + let stretchCount = this.ContourCurve.GetDragPointCount(dragType); + if (dragType === DragPointType.Stretch) { + //Move + if (indexList.length === stretchCount * 2) { + this.Position = this.Position.add(vec); + return; + } + //判断是否拉伸厚度 + if (this.IsStretchHeight(indexList)) { + let isFront = indexList[0] < stretchCount; + if (indexList.every(v => v < stretchCount === isFront)) { + //Change thickness + let lvec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec)); + if (isFront) { + this.Height -= lvec.z; + //移动位置而不改变内部拉槽 + let v = this.Normal.multiplyScalar(lvec.z); + this._Matrix.elements[12] += v.x; + this._Matrix.elements[13] += v.y; + this._Matrix.elements[14] += v.z; + } + else { + this.Height += lvec.z; + } + return; + } + } + indexList = arrayClone(indexList); + } + //修正点的索引 + for (let i = 0; i < indexList.length; i++) { + let index = indexList[i]; + if (index >= stretchCount) { + index -= stretchCount; + indexList[i] = index; + } + } + indexList = [...new Set(indexList)]; + let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec)); + if (dragType === DragPointType.Grip) { + if (this.ContourCurve instanceof Polyline + && indexList.length === 1 + && indexList[0] % 2 === 1) { + let param = indexList[0] / 2; + if (this.ContourCurve.GetBuilgeAt(Math.floor(param)) === 0) { + let der = this.ContourCurve.GetFistDeriv(param).normalize(); + [der.x, der.y] = [der.y, -der.x]; + let d = localVec.dot(der); + localVec.copy(der).multiplyScalar(d); + } + } + this.ContourCurve.MoveGripPoints(indexList, localVec); + } + else + this.ContourCurve.MoveStretchPoints(indexList, localVec); + } + GetGripPoints() { + return this.GetGripOrStretchPoints(DragPointType.Grip); + } + GetStretchPoints() { + return this.GetGripOrStretchPoints(DragPointType.Stretch); + } + MoveGripPoints(indexList, vec) { + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip); + } + MoveStretchPoints(indexList, vec) { + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch); + } + Convert2ExtrudeSolid() { + let g = new ExtrudeSolid(); + g.KnifeRadius = this.KnifeRadius; + g.SetContourCurve(this.ContourCurve); + g.Thickness = this.Height; + g.ApplyMatrix(this.OCS); + return g; + } + GetPrintObject3D() { + let geometry = new LineGeometry(); + let lineSegments = new Float32Array(this.EdgeGeometry.attributes.position.array); + let instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); + geometry.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0)); + geometry.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3)); + let line = new Line2(geometry, ColorMaterial.PrintLineMatrial); + let mesh = new Mesh(this.MeshGeometry, ColorMaterial.GetPrintConceptualMaterial()); + return [line, mesh]; + } + InitDrawObject(renderType = RenderType.Wireframe) { + if (renderType === RenderType.Wireframe || renderType === RenderType.Edge) { + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)); + } + else if (renderType === RenderType.Conceptual || renderType === RenderType.Physical || renderType === RenderType.Physical2) { + return new Object3D().add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Jig) { + return new Object3D().add(...FastWireframe2(this)); + } + else if (renderType === RenderType.Print) { + return new Object3D().add(...this.GetPrintObject3D()); + } + } + UpdateDrawObject(renderType, obj) { + DisposeThreeObj(obj); + if (renderType !== RenderType.Wireframe) + Object3DRemoveAll(obj); + this._EdgeGeometry = undefined; + this._MeshGeometry = undefined; + this.MeshGeometry; + if (renderType === RenderType.Wireframe || renderType === RenderType.Edge) { + let l = obj; + l.geometry = this.EdgeGeometry; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Print) { + obj.add(...this.GetPrintObject3D()); + } + else if (renderType === RenderType.Conceptual || renderType === RenderType.Physical || renderType === RenderType.Physical2) { + obj.add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Jig) + obj.add(...FastWireframe2(this)); + return obj; + } + UpdateDrawObjectMaterial(renderType, obj) { + if (renderType === RenderType.Wireframe || renderType === RenderType.Edge) { + let l = obj; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType !== RenderType.Jig && renderType !== RenderType.Print) { + let mesh = obj.children[0]; + mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex); + } + } + get OBB() { + let size = this.ContourCurve.BoundingBox.getSize(new Vector3).setZ(this.Height); + return new OBB(this.OCS, size.multiplyScalar(0.5)); + } + ReadFile(file) { + super.ReadFile(file); + let ver = file.Read(); + this._contourCurve = file.ReadObject(); + this._knifeRadius = file.Read(); + if (ver > 1) { + this.isHole = file.Read(); + } + if (ver > 2) + this.isThrough = file.Read(); + this.Update(); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(3); + file.WriteObject(this._contourCurve); + file.Write(this._knifeRadius); + file.Write(this.isHole); + file.Write(this.isThrough); + } +}; +__decorate([ + AutoRecord +], ExtrudeHole.prototype, "isHole", void 0); +__decorate([ + AutoRecord +], ExtrudeHole.prototype, "isThrough", void 0); +ExtrudeHole = __decorate([ + Factory +], ExtrudeHole); + +//将嵌入的实体绘制对象添加到当前的绘制对象(由于内嵌的实体可能被重复引用) +function AddEntityDrawObject(obj, embedEntity, renderType = RenderType.Wireframe) { + let embedObject = embedEntity.GetDrawObjectFromRenderType(renderType); + if (embedObject.parent) + obj.children.push(embedObject); //为了避免这个内嵌实体加入到不同的Object中(因为我们有PrintObject),这个写法能行,是因为我们会在其他地方更新它的矩阵 + else + obj.add(embedObject); +} + +var CompositeEntity_1; +let CompositeEntity = CompositeEntity_1 = class CompositeEntity extends Entity { + constructor() { + super(); + //如果你需要修改内部实体,则需要写入记录 + this.Entitys = []; + } + //#region 绘制 + // OnlyRenderType = true; //我们现在不需要这样,因为我们每个绘制类型的Object的子实体都有子实体的渲染类型(唯一的缺点可能是渲染速度变慢了?) + /** + * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体. + */ + Explode() { + return this.Entitys.map(e => { + let cloneE = e.Clone(); + cloneE.Material = e.Material; + return cloneE.ApplyMatrix(this.OCS); + }); + } + Traverse(callback) { + callback(this); + for (let en of this.Entitys) { + if (en instanceof CompositeEntity_1) + en.Traverse(callback); + else + callback(en); + } + } + get BoundingBox() { + let box = new Box3Ext(); + for (let e of this.Entitys) + box.union(e.BoundingBox); + return box.applyMatrix4(this.OCS); + } + InitDrawObject(renderType = RenderType.Wireframe) { + /** + * 如果复合实体里面有圆,并且使用了拉伸夹点功能,在UpdateDrawObject时,会因为无法得到Jig对象而导致的错误. + * 索性我们去掉Jig实体的功能. + */ + if (renderType === RenderType.Jig) + return; + let object = new Object3D(); + this.UpdateDrawObject(renderType, object); + return object; + } + UpdateDrawObject(renderType, obj) { + Object3DRemoveAll(obj); + for (let e of this.Entitys) { + e.IsEmbedEntity = true; + // //内嵌实体在某些时候可能被清理,修复它 + // if (e.DrawObject.children.length === 0) + // e.ClearDraw(); + let o = e.GetDrawObjectFromRenderType(renderType); + if (o) { + o.traverse(obj => obj.userData = {}); + AddEntityDrawObject(obj, e, renderType); + } + } + } + get ColorIndex() { + return super.ColorIndex; + } + set ColorIndex(color) { + if (color !== this._Color) { + this.WriteAllObjectRecord(); + this._Color = color; + this.Traverse(e => { + if (e === this) + return; + // if (e instanceof CompositeEntity) //有点奇怪 + // e._Color = color; + // else + e.ColorIndex = color; + }); + } + } + get Material() { + return super.Material; + } + set Material(id) { + super.Material = id; + for (let e of this.Entitys) + e.Material = id; + } + UpdateDrawObjectMaterial(renderType, obj) { + this.UpdateDrawObject(renderType, obj); + } + RestoreJigMaterial() { + //我们不做任何事情,避免更新材质引起的重绘,因为我们没有实现Jig材质,所以我们也不需要还原它 + } + //#endregion + //#region 交互操作 + /** + * + * @param snapMode 捕捉模式(单一) + * @param pickPoint const + * @param lastPoint const + * @param viewXform const 最近点捕捉需要这个变量 + * @returns object snap points + */ + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + let pts = []; + for (let e of this.Entitys) { + pts.push(...e.Clone().ApplyMatrix(this.OCS).GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + } + return pts; + } + GetGripPoints() { + return this.GetGripOrStretchPoints(DragPointType.Grip); + } + MoveGripPoints(indexList, vec) { + this.WriteAllObjectRecord(); + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip); + } + GetStretchPoints() { + return this.GetGripOrStretchPoints(DragPointType.Stretch); + } + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList, vec) { + this.WriteAllObjectRecord(); + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch); + } + GetGripOrStretchPoints(type) { + let pts = []; + for (let e of this.Entitys) + pts.push(...(type === DragPointType.Grip ? e.GetGripPoints() : e.GetStretchPoints())); + for (let p of pts) + p.applyMatrix4(this._Matrix); + return pts; + } + GetStrectchPointCountList(dragType) { + let counts = this.Entitys.map(e => { + return (dragType === DragPointType.Grip ? e.GetGripPoints() : e.GetStretchPoints()).length; + }); + return counts; + } + MoveGripOrStretchPoints(indexList, vec, dragType) { + this.WriteAllObjectRecord(); + let counts = this.GetStrectchPointCountList(dragType); + if (dragType === DragPointType.Stretch && indexList.length === arraySum(counts)) { + this.Position = this.Position.add(vec); + return; + } + vec = vec.clone().applyMatrix4(this.OCSInv.setPosition(0, 0, 0)); + arraySortByNumber(indexList); + let i = 0; + let j = 0; + let icount = indexList.length; + let offset = 0; + for (let count of counts) { + offset += count; + let ilist = []; + for (; i < icount; i++) { + if (indexList[i] < offset) + ilist.push(indexList[i] - offset + count); + else + break; + } + let ent = this.Entitys[j]; + dragType === DragPointType.Grip ? ent.MoveGripPoints(ilist, vec) : ent.MoveStretchPoints(ilist, vec); + if (ent instanceof ExtrudeSolid) //取消优化判断this.Objectid,因为这个实体可能被复合在另一个实体中,导致这个id是不存在的,所以我们无法判断它在拽拖. + ent.CheckContourCurve(); + ent.Update(); + j++; + } + this.__UpdateVersion__++; + //如何绘制对象是克隆的,那么我们将重绘它(避免无法更新) + //我们也不大需要下面的判断,我们如果持续的更新它,其实并不会有多大的问题,因为我们总是从缓存里面拿绘制对象 + // if (this._drawObject && this._drawObject.children[0]?.userData.IsClone) + this.Update(); + } + CloneDrawObject(from) { + for (let [type, obj] of from._CacheDrawObject) { + let oldUserDaata = obj.userData; + obj.userData = {}; + let newObj = obj.clone(true); + obj.userData = oldUserDaata; + obj.userData.IsClone = true; + newObj.matrix = this._Matrix; + newObj.userData = { Entity: this }; + newObj.userData.IsClone = true; + this._CacheDrawObject.set(type, newObj); + } + this.NeedUpdateFlag = UpdateDraw.None; + } + //#endregion + //#region 文件序列化 + _ReadFile(file) { + let v = file.Read(); + super._ReadFile(file); + let count = file.Read(); + this.Entitys.length = 0; + for (let i = 0; i < count; i++) { + let ent = file.ReadObject(); + if (ent) + this.Entitys.push(ent); + } + } + //对象将自身数据写入到文件. + WriteFile(file) { + file.Write(1); + super.WriteFile(file); + file.Write(this.Entitys.length); + for (let e of this.Entitys) + file.WriteObject(e); + } +}; +__decorate([ + AutoRecord +], CompositeEntity.prototype, "Entitys", void 0); +CompositeEntity = CompositeEntity_1 = __decorate([ + Factory +], CompositeEntity); + +var EWineRackType; +(function (EWineRackType) { + EWineRackType[EWineRackType["Oblique"] = 0] = "Oblique"; + EWineRackType[EWineRackType["Upright"] = 1] = "Upright"; +})(EWineRackType || (EWineRackType = {})); +var EWRackArrayType; +(function (EWRackArrayType) { + EWRackArrayType[EWRackArrayType["ByWidth"] = 0] = "ByWidth"; + EWRackArrayType[EWRackArrayType["ByCount"] = 1] = "ByCount"; + EWRackArrayType[EWRackArrayType["Fixed"] = 2] = "Fixed"; +})(EWRackArrayType || (EWRackArrayType = {})); +/**铺满方式 */ +var EFullType; +(function (EFullType) { + EFullType[EFullType["ByHeight"] = 0] = "ByHeight"; + EFullType[EFullType["ByWidth"] = 1] = "ByWidth"; + EFullType[EFullType["Symmetry"] = 2] = "Symmetry"; +})(EFullType || (EFullType = {})); +/**高度优先时靠左还是靠右 */ +var EFullDir; +(function (EFullDir) { + EFullDir[EFullDir["Left"] = 0] = "Left"; + EFullDir[EFullDir["Right"] = 1] = "Right"; +})(EFullDir || (EFullDir = {})); + +var EFindType; +(function (EFindType) { + EFindType[EFindType["Find"] = 0] = "Find"; + EFindType[EFindType["Modify"] = 1] = "Modify"; + EFindType[EFindType["FindMaxSize"] = 2] = "FindMaxSize"; + EFindType[EFindType["FindSplite"] = 3] = "FindSplite"; + EFindType[EFindType["GetOption"] = 4] = "GetOption"; + EFindType[EFindType["RemoveModeling"] = 5] = "RemoveModeling"; + EFindType[EFindType["RemoveSpecialShape"] = 6] = "RemoveSpecialShape"; + EFindType[EFindType["RemoveModelingAndSpecial"] = 7] = "RemoveModelingAndSpecial"; + EFindType[EFindType["ModifyHardware"] = 8] = "ModifyHardware"; + EFindType[EFindType["FindMinSize"] = 9] = "FindMinSize"; +})(EFindType || (EFindType = {})); +var ECompareType; +(function (ECompareType) { + ECompareType["Equal"] = "="; + ECompareType["UnEqual"] = "!="; + ECompareType["Greater"] = ">="; + ECompareType["Less"] = "<="; +})(ECompareType || (ECompareType = {})); + +var ELatticeArrayType; +(function (ELatticeArrayType) { + ELatticeArrayType[ELatticeArrayType["ByWidth"] = 0] = "ByWidth"; + ELatticeArrayType[ELatticeArrayType["ByCount"] = 1] = "ByCount"; +})(ELatticeArrayType || (ELatticeArrayType = {})); + +//门板位置类型 +var DoorPosType; +(function (DoorPosType) { + DoorPosType[DoorPosType["Out"] = 0] = "Out"; + DoorPosType[DoorPosType["In"] = 1] = "In"; +})(DoorPosType || (DoorPosType = {})); +var HandleHorPos; +(function (HandleHorPos) { + HandleHorPos[HandleHorPos["Left"] = 0] = "Left"; + HandleHorPos[HandleHorPos["Right"] = 1] = "Right"; + HandleHorPos[HandleHorPos["Mid"] = 2] = "Mid"; +})(HandleHorPos || (HandleHorPos = {})); +var HandleVePos; +(function (HandleVePos) { + HandleVePos[HandleVePos["Top"] = 0] = "Top"; + HandleVePos[HandleVePos["Bottom"] = 1] = "Bottom"; + HandleVePos[HandleVePos["Mid"] = 2] = "Mid"; +})(HandleVePos || (HandleVePos = {})); +//门板开门类型 +var DoorOpenDir; +(function (DoorOpenDir) { + DoorOpenDir["Left"] = "lf"; + DoorOpenDir["Right"] = "rt"; + DoorOpenDir["Top"] = "tp"; + DoorOpenDir["Bottom"] = "bm"; + DoorOpenDir["None"] = "none"; +})(DoorOpenDir || (DoorOpenDir = {})); + +var EMetalsType; +(function (EMetalsType) { + EMetalsType["Metals"] = "\u4E94\u91D1"; + EMetalsType["Comp"] = "\u7EC4\u4EF6"; +})(EMetalsType || (EMetalsType = {})); + +const DefaultLayerBoardConfig = { + version: 2, + type: BoardType.Layer, + name: "层板", + frontShrink: 0, + leftShrink: 0, + rightShrink: 0, + calcHeight: "W", + isTotalLength: true, + boardRelative: BrRelativePos.Div, + thickness: 18, + count: 1, + spaceSize: 300, + isActive: false, + calcSpaceSize: "0", + calcFrontShrink: "0", + calcLeftShrink: "0", + calcRightShrink: "0", +}; +Object.freeze(DefaultLayerBoardConfig); +const DefaultVerticalBoardConfig = { + version: 2, + type: BoardType.Vertical, + name: "立板", + frontShrink: 0, + bottomShrink: 0, + calcWidth: "W", + calcHeight: "H", + isTotalLength: true, + isTotalWidth: true, + boardRelative: BrRelativePos.Div, + thickness: 18, + count: 1, + spaceSize: 0, + calcSpaceSize: "0", + calcBottomShrink: "0", + calcFrontShrink: "0", +}; +Object.freeze(DefaultVerticalBoardConfig); +const DefaultBehindBoardConfig = { + version: 2, + type: BoardType.Behind, + name: "背板", + leftExt: 0, + rightExt: 0, + topExt: 0, + bottomExt: 0, + thickness: 18, + boardPosition: BehindHeightPositon.AllHeight, + calcHeight: "H", + moveDist: 0, + boardRelative: BrRelativePos.Back, + spaceSize: 0, + count: 1, + calcSpaceSize: "0", + calcMoveDist: "0", +}; +Object.freeze(DefaultBehindBoardConfig); +const DefaultWineRackConfig = { + version: 1, + type: EWineRackType.Oblique, + arrayType: EWRackArrayType.ByWidth, + fullType: EFullType.ByWidth, + isFull: false, + isLock: false, + fullDir: EFullDir.Left, + heightCount: 3.5, + widthCount: 3.5, + isTotalDepth: true, + depth: 0, + gripWidth: 100, + calcDepth: "W", + boardThick: 18, + grooveWidthAdd: 0, + leftEdge: 1, + rightEdge: 1, + topEdge: 1, + bottomEdge: 1, + frontCut: 0, + leftCut: 0, + rightCut: 0, + topCut: 0, + grooveLengthAdd: 3, + isDrawLy: false, + isDrawVer: false, + brThick2: 18, +}; +Object.freeze(DefaultWineRackConfig); +const DefaultTopBoardOption = { + version: 2, + type: BoardType.Layer, + name: "顶板", + isDraw: true, + thickness: 18, + frontDist: 0, + behindDistance: 0, + isWrapSide: false, + useLFData: true, + leftExt: 0, + rightExt: 0, + offset: 0, +}; +Object.freeze(DefaultTopBoardOption); +const DefaultBottomBoardOption = { + version: 2, + type: BoardType.Layer, + name: "底板", + isDraw: true, + thickness: 18, + frontDist: 0, + behindDistance: 0, + isWrapSide: false, + useLFData: true, + leftExt: 0, + rightExt: 0, + offset: 80, + footThickness: 18, + isDrawFooter: true, + footBehindShrink: 0, + isDrawBackFooter: false, + isDrawStrengthenStrip: false, + footerOffset: 0, + divCount: 1, +}; +Object.freeze(DefaultBottomBoardOption); +const DefaultSideBoardOption = { + version: 2, + type: BoardType.Vertical, + name: "", + height: 2000, + width: 600, + thickness: 18, + spaceSize: 1200, + leftShrink: 0, + rightShrink: 0, +}; +Object.freeze(DefaultSideBoardOption); +const DefaultSingleBoardOption = { + version: 1, + name: "层板", + type: BoardType.Layer, + height: 1200, + width: 600, + thickness: 18, + rotateX: 0, + rotateY: 0, + rotateZ: 0 +}; +Object.freeze(DefaultSingleBoardOption); +const DefaultClosingStripOption = { + version: 2, + type: BoardType.Vertical, + name: "收口条", + striptype: StripType.H, + boardRelative: BrRelativePos.Left, + width: 54, + thickness: 18, + frontShrink: 0, + isDrawFuZhu: true, + fzWidth: 80, + fzThickness: 18, +}; +Object.freeze(DefaultClosingStripOption); +const DefaultBoardFindOption = { + version: 5, + condition: { + layer: false, + height: false, + width: false, + thickness: false, + useWood: false, + useDrill: false, + useNail: false, + useDoor: false, + useDim: false, + useSpecial: false, + useModeling: false, + roomName: false, + cabinetName: false, + brName: false, + material: false, + lines: false, + bigHoleDir: false, + drillType: false, + useKeyWord: false, + composingFace: false, + sealedUp: false, + sealedDown: false, + sealedLeft: false, + sealedRight: false, + upDrill: false, + downDrill: false, + leftDrill: false, + rightDrill: false, + useZhengFanDrill: false, + useChaidan: false, + [EBoardKeyList.KnifeRad]: false, + }, + compareType: { + height: ECompareType.Equal, + width: ECompareType.Equal, + thickness: ECompareType.Equal, + roomName: ECompareType.Equal, + cabinetName: ECompareType.Equal, + brName: ECompareType.Equal, + [EBoardKeyList.Mat]: ECompareType.Equal, + [EBoardKeyList.Color]: ECompareType.Equal, + [EBoardKeyList.BrMat]: ECompareType.Equal, + lines: ECompareType.Equal, + bigHoleDir: ECompareType.Equal, + drillType: ECompareType.Equal, + composingFace: ECompareType.Equal, + [EBoardKeyList.KnifeRad]: ECompareType.Equal, + }, + tolerance: { + height: "", + width: "", + thickness: "", + [EBoardKeyList.KnifeRad]: "", + }, + layer: "0", + height: "", + width: "", + thickness: "", + roomName: "", + cabinetName: "", + brName: "", + [EBoardKeyList.BrMat]: "", + material: "", + color: "", + lines: LinesType.Positive, + bigHoleDir: FaceDirection.Front, + drillType: "", + composingFace: ComposingType.Positive, + sealedUp: "", + sealedDown: "", + sealedLeft: "", + sealedRight: "", + highDrill: [], + upDownDrill: [true, true], + isClose: false, + remarks: Array.from({ length: 10 }, () => ["", ""]), + isChaidan: false, + [EBoardKeyList.KnifeRad]: "", +}; +Object.freeze(DefaultBoardFindOption); +const DefaultLatticOption = { + version: 1, + arrayType: ELatticeArrayType.ByWidth, + gripWidth: 100, + gripDepth: 100, + widthCount: 3, + depthCount: 4, + knifeRad: 3, + thickness: 18, + arcLen: 50, + downDist: 0, + space: 0.2, + grooveAddWidth: 0.2, + upSealed: 1, + downSealed: 1, + leftSealed: 1, + rightSealed: 1, + isAuto: true, + isChange: true, + isOpenCut: false, + upCut: 0, + downCut: 4, +}; +Object.freeze(DefaultLatticOption); +const DefaultDoorOption = { + version: 3, + col: 2, + row: 1, + isAllSelect: true, + topOffset: 0, + bottomOffset: 0, + doorPosType: DoorPosType.Out, + offset: 0, + topExt: 18, + bottomExt: 18, + leftExt: 18, + rightExt: 18, + topSpace: 2, + bottomSpace: 2, + leftSpace: 2, + rightSpace: 2, + midSpace: 2, + thickness: 18, + depth: 0, + isAuto: true, + boardName: "", + doorThickness: 18, + topBrSeal: 1, + bottomBrSeal: 1, + leftBrSeal: 1, + rightBrSeal: 1, + topDoorSeal: 1, + bottomDoorSeal: 1, + leftDoorSeal: 1, + rightDoorSeal: 1, + handleAngle: 0, + handleHorPos: HandleHorPos.Right, + horSpacing: 50, + handleVePos: HandleVePos.Mid, + veSpacing: 10, + hingeCount: 0, + hindeTopDist: 0, + hindeBottomDist: 0, + downOffsetExpr: "0", + upOffsetExpr: "0", +}; +Object.freeze(DefaultDoorOption); +const DefaultDrawerOption = { + version: 4, + col: 1, + row: 1, + isAllSelect: true, + topOffset: 0, + bottomOffset: 0, + doorPosType: DoorPosType.Out, + offset: 0, + topExt: 18, + bottomExt: 18, + leftExt: 18, + rightExt: 18, + topSpace: 2, + bottomSpace: 2, + leftSpace: 2, + rightSpace: 2, + midSpace: 2, + thickness: 18, + depth: 0, + isAuto: true, + boardName: "", + handleAngle: 90, + handleHorPos: HandleHorPos.Mid, + horSpacing: 10, + handleVePos: HandleVePos.Mid, + veSpacing: 10, + drawerTotalDepth: 0, + trackDepth: 0, + isAutoSelectTrack: true, + isLockTopOffset: false, + isLockBottomOffset: false, + downOffsetExpr: "0", + upOffsetExpr: "0", +}; +Object.freeze(DefaultDrawerOption); +const DefaultBoardBatchCurtailOption = { + version: 1, + type: CurtailType.Total, + front: 0, + back: 0, + left: 0, + right: 0, + moveBrs: false, +}; +Object.freeze(DefaultBoardBatchCurtailOption); +const DefaultLatticeConfig = { + arrayType: ELatticeArrayType.ByWidth, + gripWidth: 100, + gripDepth: 100, + widthCount: 3, + depthCount: 4, + knifeRad: 3, + thickness: 18, + arcLen: 50, + downDist: 0, + space: 0.5, + grooveAddWidth: 0, + upSealed: 1, + downSealed: 0, + leftSealed: 0, + rightSealed: 0, + isAuto: true, + isChange: true, + isOpenCut: false, + upCut: 0, + downCut: 4, +}; +Object.freeze(DefaultLatticeConfig); +const DefaultNailOption = { + version: 1, + isDraw: true, + addCount: 0, + dist: 50, + isGroup: false, + isInBack: false, + front: 50, + behind: 50, + count: 2, + rad: 2.5, + length: 34, + depth: 11 +}; +Object.freeze(DefaultNailOption); +const DefaultCylinederMetalsOption = { + version: 2, + rad: 50, + height: 200, + name: "圆柱体", + unit: "", + roomName: "", + cabinetName: "", + costExpr: "L*R*R*3.14", + actualExpr: "L*R*R*3.14*3", + model: "X-1", + factory: "晨丰", + brand: "晨丰", + spec: "个", + count: "1", + comments: "", + isHole: true, +}; +Object.freeze(DefaultCylinederMetalsOption); +const DefaultExtruderMetalsOption = { + version: 1, + thickness: 100, + knifeRad: 0, + isHole: true, + addLen: 0, + name: "拉伸实体", + unit: "", + roomName: "", + cabinetName: "", + costExpr: "L*W*H*100", + actualExpr: "L*W*H*200", + model: "X-1", + factory: "晨丰", + brand: "晨丰", + spec: "个", + count: "1", + comments: "", +}; +Object.freeze(DefaultExtruderMetalsOption); +const DefaultCompositeMetalsOption = { + version: 2, + type: EMetalsType.Metals, + isSplite: false, + isSplitePrice: false, + name: "复合实体", + unit: "", + roomName: "", + cabinetName: "", + costExpr: "L*W*H*100", + actualExpr: "L*W*H*300", + model: "X-1", + factory: "晨丰", + brand: "晨丰", + spec: "个", + count: "1", + color: "", + material: "", + comments: "", + isHole: true, +}; +Object.freeze(DefaultCompositeMetalsOption); +const DefaultToplineMetalsOption = { + version: 3, + name: "顶线", + unit: "毫米", + roomName: "", + cabinetName: "", + costExpr: "", + actualExpr: "", + model: "", + factory: "", + brand: "", + spec: "", + comments: "", + addLen: "0", + isHole: false, +}; +Object.freeze(DefaultToplineMetalsOption); +const DefaultBoardProcessOption = { + version: 3, + roomName: "", + cabinetName: "", + boardName: "", + material: "", + color: "", + lines: LinesType.Positive, + bigHoleDir: FaceDirection.Front, + drillType: "", + composingFace: ComposingType.Arbitrary, + highSealed: [], + sealedUp: "1", + sealedDown: "1", + sealedLeft: "1", + sealedRight: "1", + spliteHeight: "", + spliteWidth: "", + spliteThickness: "", + highDrill: [], + frontDrill: true, + backDrill: true, + remarks: [], + useBoardProcessOption: true, +}; +Object.freeze(DefaultBoardProcessOption); +const DefaultCurve2RecOption = { + version: 1, + isSaveMax: false, + isSaveSmall: true, + width: 90, + isAnaly: true, + gap: 3 +}; +Object.freeze(DefaultCurve2RecOption); +const DefaultUpdateInfoOption = { + [EBoardKeyList.RoomName]: "", + [EBoardKeyList.CabinetName]: "", + [EBoardKeyList.Lines]: LinesType.Positive, + [EBoardKeyList.BigHole]: FaceDirection.Front, + [EBoardKeyList.DrillType]: "", + [EBoardKeyList.ComposingFace]: ComposingType.Arbitrary, + upDownDrill: [true, true], + [EBoardKeyList.UpSealed]: "1", + [EBoardKeyList.DownSealed]: "1", + [EBoardKeyList.LeftSealed]: "1", + [EBoardKeyList.RightSealed]: "1", + [EBoardKeyList.KnifeRad]: "3", + remarks: Array.from({ length: 10 }, () => ["", ""]), + [EBoardKeyList.BrMat]: "", + [EBoardKeyList.Mat]: "", + [EBoardKeyList.Color]: "", + grooveAddDepth: "0", + grooveAddLength: "0", + grooveAddWidth: "0", + highDrill: [], + condition: { + [EBoardKeyList.RoomName]: false, + [EBoardKeyList.CabinetName]: false, + [EBoardKeyList.Lines]: true, + [EBoardKeyList.BigHole]: true, + [EBoardKeyList.DrillType]: true, + [EBoardKeyList.ComposingFace]: true, + [EBoardKeyList.UpSealed]: true, + [EBoardKeyList.DownSealed]: true, + [EBoardKeyList.LeftSealed]: true, + [EBoardKeyList.RightSealed]: true, + useZhengFanDrill: true, + remarks: true, + [EBoardKeyList.KnifeRad]: true, + [EBoardKeyList.Mat]: true, + grooveAddDepth: true, + grooveAddLength: true, + grooveAddWidth: true, + upDrill: true, + downDrill: true, + leftDrill: true, + rightDrill: true, + } +}; +Object.freeze(DefaultUpdateInfoOption); +const DefaultKuGanOption = { + count: 1, + isHor: false, + depth: 0, + isDefault: true, + leftDist: 0, + rightDist: 0, +}; +Object.freeze(DefaultKuGanOption); +const DefaultR2bOption = { + version: 2, + cabinetDeep: 400, + cabinetBrThick: 18, + cabinetCurtail: 0, + backBrThick: 18, + backBrBiggerThanHeight: 200, + backBrBiggerThanWidth: 200, + backBrFrontMove: 0, + backBrLeftExtend: 0, + backBrRightExtend: 0, + backBrUpExtend: 0, + backBrDownExtend: 0, + verticalBrShrink: 0, + layerBrShrink: 0, + topBrShrink: 0, + bottomBrShrink: 0, + groundLineBrShrink: 0, + farLeftVerticalBrName: "左侧板", + farRightVerticalBrName: "右侧板", + topMostLayerBrName: "顶板", + bottomMostLayerBrName: "底板", + bottomMostBackBrName: "地脚线", + stripeBrName: "收口条", + cabinetName: "", + isfarLeftVerticalBrName: true, + isfarRightVerticalBrName: true, + istopMostLayerBrName: true, + isbottomMostLayerBrName: true, + isbottomMostBackBrName: true, + isstripeBrName: true, + iscabinetName: false, + isMultiBackBr: false, + grooveOption: { + grooveAddLength: "0", + grooveAddWidth: "0", + grooveAddDepth: "0", + knifeRadius: "3", + }, + roomName: "", + boardMatName: "", + material: "", + color: "", + drillType: "", + sealedDown: "1", + sealedLeft: "1", + sealedRight: "1", + sealedUp: "1", + backBrUseTemplate: false, + backBrTemplate: null, + remarks: Array.from({ length: 12 }, () => ["", ""]), + maxThickness: 20, + useBrName: true, + configName: "", + backBrName: "背板", + behindIsRelative: false, + footerThickness: 18, +}; +Object.freeze(DefaultR2bOption); +const DefaultR2b2Option = { + version: 1, + depthExpr: "W", + drillType: "", + sealedDown: "1", + sealedLeft: "1", + sealedRight: "1", + sealedUp: "1", + remarks: Array.from({ length: 12 }, () => ["", ""]), + maxThickness: 20, + layerShrink: 0, + vertialShrink: 0, +}; +Object.freeze(DefaultR2b2Option); + +var HardwareCompositeEntity_1; +let HardwareCompositeEntity = HardwareCompositeEntity_1 = class HardwareCompositeEntity extends CompositeEntity { + constructor() { + super(); + this.HardwareOption = { ...DefaultCompositeMetalsOption }; + this.DataList = []; + this.RelevanceBoards = []; + } + GetAllEntity(isHole = false, filter) { + let holes = []; + for (let e of this.Entitys) { + if (e instanceof HardwareCompositeEntity_1) { + if (!isHole || e.HardwareOption.isHole) + holes.push(...e.GetAllEntity(isHole, filter).map(h => h.ApplyMatrix(this.OCS))); + } + else { + if (!filter || filter(e)) { + holes.push(e.Clone().ApplyMatrix(this.OCS)); + } + } + } + return holes; + } + _ReadFile(file) { + super._ReadFile(file); + let v = file.Read(); + this.HardwareOption.type = file.Read(); + this.HardwareOption.isSplite = file.Read(); + this.HardwareOption.isSplitePrice = file.Read(); + this.HardwareOption.color = file.Read(); + this.HardwareOption.material = file.Read(); + this.HardwareOption.name = file.Read(); + this.HardwareOption.roomName = file.Read(); + this.HardwareOption.cabinetName = file.Read(); + this.HardwareOption.costExpr = file.Read(); + this.HardwareOption.actualExpr = file.Read(); + this.HardwareOption.model = file.Read(); + this.HardwareOption.factory = file.Read(); + this.HardwareOption.brand = file.Read(); + this.HardwareOption.spec = file.Read(); + this.HardwareOption.count = file.Read(); + this.HardwareOption.comments = file.Read(); + this.HardwareOption.unit = file.Read(); + let count = file.Read(); + this.DataList.length = 0; + for (let i = 0; i < count; i++) { + let d = ["", ""]; + d[0] = file.Read(); + d[1] = file.Read(); + this.DataList.push(d); + } + if (v > 1) + this.HardwareOption.isHole = file.Read(); + if (v >= 3) { + let count = file.Read(); + this.RelevanceBoards.length = 0; + for (let i = 0; i < count; i++) { + this.RelevanceBoards.push(file.ReadSoftObjectId()); + } + } + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + file.Write(3); + file.Write(this.HardwareOption.type); + file.Write(this.HardwareOption.isSplite); + file.Write(this.HardwareOption.isSplitePrice); + file.Write(this.HardwareOption.color); + file.Write(this.HardwareOption.material); + file.Write(this.HardwareOption.name); + file.Write(this.HardwareOption.roomName); + file.Write(this.HardwareOption.cabinetName); + file.Write(this.HardwareOption.costExpr); + file.Write(this.HardwareOption.actualExpr); + file.Write(this.HardwareOption.model); + file.Write(this.HardwareOption.factory); + file.Write(this.HardwareOption.brand); + file.Write(this.HardwareOption.spec); + file.Write(this.HardwareOption.count); + file.Write(this.HardwareOption.comments); + file.Write(this.HardwareOption.unit); + file.Write(this.DataList.length); + for (let data of this.DataList) { + file.Write(data[0]); + file.Write(data[1]); + } + file.Write(this.HardwareOption.isHole); + file.Write(this.RelevanceBoards.length); + for (let id of this.RelevanceBoards) + file.WriteSoftObjectId(id); + } +}; +__decorate([ + AutoRecord +], HardwareCompositeEntity.prototype, "HardwareOption", void 0); +__decorate([ + AutoRecord +], HardwareCompositeEntity.prototype, "DataList", void 0); +__decorate([ + AutoRecord +], HardwareCompositeEntity.prototype, "RelevanceBoards", void 0); +HardwareCompositeEntity = HardwareCompositeEntity_1 = __decorate([ + Factory +], HardwareCompositeEntity); + +class PointShapeUtils { + //方形点表 + static SquarePts(size) { + return [ + new Vector3(-size, -size), + new Vector3(size, -size), + new Vector3(size, size), + new Vector3(-size, size), + new Vector3(-size, -size), + ]; + } + //方形外圈十字直线点表 + static OutsideLinePts(squareSize, lineLength) { + return [ + //-X + new Vector3(-squareSize, 0), + new Vector3(-lineLength, 0), + //X + new Vector3(squareSize, 0), + new Vector3(lineLength, 0), + //Y + new Vector3(0, squareSize), + new Vector3(0, lineLength), + //-Y + new Vector3(0, -squareSize), + new Vector3(0, -lineLength), + ]; + } + //十字直线点表 + static CrossLinePts(lineLength) { + return [ + new Vector3(0, -lineLength), + new Vector3(0, lineLength), + new Vector3(lineLength, 0), + new Vector3(-lineLength, 0), + ]; + } + static CrossLine3DPts(lineLength) { + return [ + [new Vector3(lineLength, 0), + new Vector3(-lineLength / 2, 0)], + [new Vector3(0, -lineLength / 2), + new Vector3(0, lineLength)], + [new Vector3(0, 0, -lineLength / 2), + new Vector3(0, 0, lineLength)], + ]; + } + static TrianglePts(size) { + return [ + new Vector3(size, -size), + new Vector3(0, size), + new Vector3(-size, -size), + new Vector3(size, -size), + ]; + } + static CirclePts(size) { + let pts = []; + let a = Math.PI * 2 / 8; + for (let i = 0; i < 9; i++) + pts.push(new Vector3(Math.sin(a * i) * size, Math.cos(a * i) * size)); + return pts; + } + static ObliqueCrossPts(size) { + return [new Vector3(-size, size), new Vector3(size, -size), new Vector3(-size, -size), new Vector3(size, size)]; + } + static ObliqueCrossLinePts(size) { + return [new Vector3(-size, size), new Vector3(size, -size), new Vector3(), new Vector3(-size, -size), new Vector3(size, size)]; + } + static SandClockPts(size) { + return [ + new Vector3(size, size), + new Vector3(-size, size), + new Vector3(size, -size), + new Vector3(-size, -size), + new Vector3(size, size), + ]; + } + static TangentPts(size) { + let pts = [ + new Vector3(-size, size), + new Vector3(size, size), + new Vector3(size / 2, size), + ]; + let a = Math.PI * 2 / 8; + for (let i = 0; i < 9; i++) + pts.push(new Vector3(Math.sin(a * i + Math.PI / 2) * size, Math.cos(a * i + Math.PI / 2) * size)); + return pts; + } + static PerPts(size) { + return [ + new Vector3(-size, size), + new Vector3(-size, -size), + new Vector3(size, -size), + new Vector3(0, -size), + new Vector3(0, 0), + new Vector3(-size, 0), + ]; + } + static LinesDirPts(len, width, lineType) { + if (lineType === LinesType.Reverse) { + return [ + new Vector3(-len / 2), new Vector3(-len / 2 + width / 2, width / 2), + new Vector3(-len / 2), new Vector3(-len / 2 + width / 2, -width / 2), + new Vector3(-len / 2), new Vector3(len / 2), + new Vector3(len / 2), new Vector3(len / 2 - width / 2, width / 2), + new Vector3(len / 2), new Vector3(len / 2 - width / 2, -width / 2), + ]; + } + else if (lineType === LinesType.Positive) + return [ + new Vector3(0, -len / 2), new Vector3(-width / 2, -len / 2 + width / 2), + new Vector3(0, -len / 2), new Vector3(width / 2, -len / 2 + width / 2), + new Vector3(0, -len / 2), new Vector3(0, len / 2), + new Vector3(0, len / 2), new Vector3(-width / 2, len / 2 - width / 2), + new Vector3(0, len / 2), new Vector3(width / 2, len / 2 - width / 2), + ]; + else { + let w1 = Math.min(len, width) / 5; + return [ + new Vector3(0, len / 2), new Vector3(0, -len / 2), + new Vector3(-width / 2), new Vector3(width / 2), + new Vector3(-width / 2), new Vector3(-width / 2 + w1, w1), + new Vector3(-width / 2), new Vector3(-width / 2 + w1, -w1), + new Vector3(width / 2), new Vector3(width / 2 - w1, w1), + new Vector3(width / 2), new Vector3(width / 2 - w1, -w1), + new Vector3(0, len / 2), new Vector3(-w1, len / 2 - w1), + new Vector3(0, len / 2), new Vector3(w1, len / 2 - w1), + new Vector3(0, -len / 2), new Vector3(-w1, -len / 2 + w1), + new Vector3(0, -len / 2), new Vector3(w1, -len / 2 + w1), + ]; + } + } +} + +var CylinderHole_1; +var GangDrillType; +(function (GangDrillType) { + /**偏心轮 */ + GangDrillType[GangDrillType["Pxl"] = 0] = "Pxl"; + /**连接杆 */ + GangDrillType[GangDrillType["Ljg"] = 1] = "Ljg"; + /**预埋件 */ + GangDrillType[GangDrillType["Ymj"] = 2] = "Ymj"; + /**层板钉 */ + GangDrillType[GangDrillType["Nail"] = 3] = "Nail"; + /** 木销 */ + GangDrillType[GangDrillType["Wood"] = 4] = "Wood"; + /** 通孔 */ + GangDrillType[GangDrillType["TK"] = 5] = "TK"; + GangDrillType[GangDrillType["WoodPXL"] = 6] = "WoodPXL"; +})(GangDrillType || (GangDrillType = {})); +let TempCircle1 = new Circle(); +let TempCircle2 = new Circle(); +let CylinderHole = CylinderHole_1 = class CylinderHole extends Hole { + constructor() { + super(); + this._Radius = 1; + this.type = GangDrillType.Pxl; + this._Color = 1; + } + static CreateCylHole(radius, height, type) { + let drill = new CylinderHole_1(); + drill.Height = height; + drill._Radius = radius; + drill.type = type; + return drill; + } + get Type() { + return this.type; + } + set Type(t) { + if (this.type !== t) { + this.WriteAllObjectRecord(); + this.type = t; + } + } + set Radius(r) { + if (r !== this._Radius) { + this.WriteAllObjectRecord(); + this._MeshGeometry = null; + this._EdgeGeometry = null; + this._Radius = r; + this.Update(); + } + } + get Height() { + return super.Height; + } + set Height(v) { + if (this._Height !== v) { + this._MeshGeometry = null; + this._EdgeGeometry = null; + super.Height = v; + } + } + get Radius() { + return this._Radius; + } + get BoundingBox() { + let box = new Box3(new Vector3(-this._Radius, -this._Radius, 0), new Vector3(this._Radius, this._Radius, this._Height)); + return box.applyMatrix4(this.OCS); + } + get MeshGeometry() { + if (this._MeshGeometry) + return this._MeshGeometry; + this._MeshGeometry = FastDrillingMeshGeometry(this.Radius, this.Height); + return this._MeshGeometry; + } + get EdgeGeometry() { + if (this._EdgeGeometry) + return this._EdgeGeometry; + this._EdgeGeometry = FastDrillingEdgeGeometry(this._Radius, this.Height); + return this._EdgeGeometry; + } + GetGripPoints() { + let cir = new Circle(new Vector3(), this._Radius); + let pts = cir.GetGripPoints(); + pts.push(...pts.map(p => p.clone().add(new Vector3(0, 0, this.Height)))); + return pts.map(p => p.applyMatrix4(this.OCS)); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + let pts = []; + TempCircle1.Radius = this.Radius; + TempCircle1.OCS = this._Matrix; + TempCircle2.Radius = this.Radius; + TempCircle2.OCS = this._Matrix; + TempCircle2.Position = TempCircle2.Position.add(this.Normal.multiplyScalar(this.Height)); + for (let c of [TempCircle2, TempCircle1]) { + pts.push(...c.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + } + return pts; + } + InitDrawObject(renderType) { + return this.GetObject3DByRenderType(renderType); + } + GetObject3DByRenderType(renderType) { + if (renderType === RenderType.Wireframe) + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)); + else + return new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)); + } + UpdateDrawObject(type, obj) { + DisposeThreeObj(obj); + Object3DRemoveAll(obj); + obj.add(this.GetObject3DByRenderType(type)); + } + UpdateDrawObjectMaterial(type, obj) { + if (type === RenderType.Wireframe) { + let l = obj; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else { + let mesh = obj; + mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex); + } + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + this._Radius = file.Read(); + if (ver <= 4) { + //临时兼容旧排钻 + this._Height = file.Read(); + this.type = file.Read(); + this.FId = file.ReadSoftObjectId(); + this.MId = file.ReadSoftObjectId(); + } + else { + this.type = file.Read(); + } + } + WriteFile(file) { + super.WriteFile(file); + file.Write(5); //ver + file.Write(this._Radius); + file.Write(this.type); + } +}; +CylinderHole = CylinderHole_1 = __decorate([ + Factory +], CylinderHole); +let cache$1 = new Map(); +let ro = new Matrix4(); +ro.makeRotationX(Math.PI / 2); +function FastDrillingMeshGeometry(radius, height) { + let key = `${radius},${height}`; + if (cache$1.has(key)) + return cache$1.get(key); + let geo = new CylinderBufferGeometry(radius, radius, height, 8, 1); + geo.applyMatrix4(ro); + geo.translate(0, 0, height / 2); + cache$1.set(key, geo); + return geo; +} +let cache2 = new Map(); +function FastDrillingEdgeGeometry(radius, height) { + let key = `${radius},${height}`; + if (cache2.has(key)) + return cache2.get(key); + let sp = new Shape$1(); + sp.ellipse(0, 0, radius, radius, 0, 2 * Math.PI, false, 0); + let pts = sp.getPoints(4); + let geo = new BufferGeometry(); + let coords = []; + for (let i = 0; i < pts.length; i++) { + let p = pts[i]; + let np = pts[FixIndex(i + 1, pts.length)]; + coords.push(p.x, p.y, 0, np.x, np.y, 0); //bottom + coords.push(p.x, p.y, height, np.x, np.y, height); //top + coords.push(p.x, p.y, 0, p.x, p.y, height); //edge + } + geo.setAttribute('position', new Float32BufferAttribute(coords, 3)); + cache2.set(key, geo); + return geo; +} +CADFactory.RegisterObjectAlias(CylinderHole, "GangDrill"); + +const SCALAR = 0.1; +function CyHoleInBoard(cys, br, ocs) { + if (cys.length === 1 && cys[0].Type === GangDrillType.Ymj) + return true; + const outline = br.ContourCurve; + let box = new Box3(); + let pxl; + let ljg; + let ymj; + let wood; + let woodPXL; + let pxl2; + for (let cy of cys) { + box.union(cy.BoundingBox); + if (cy.Type === GangDrillType.Pxl) { + if (pxl) + pxl2 = cy; + else + pxl = cy; + } + else if (cy.Type === GangDrillType.Ljg) + ljg = cy; + else if (cy.Type === GangDrillType.Wood) + wood = cy; + else if (cy.Type === GangDrillType.WoodPXL) + woodPXL = cy; + else + ymj = cy; + } + box.applyMatrix4(ocs); + let outlineBox = outline.BoundingBox; + outlineBox.max.setZ(br.Thickness); + if (!box.intersectsBox(outlineBox)) + return false; + let nor = new Vector3(); + if (ljg) + nor.copy(ljg.Normal); + else if (ymj) + nor.copy(ymj.Normal); + else if (wood) + nor.copy(wood.Normal); + nor.applyMatrix4(ocs.clone().setPosition(new Vector3)); + if (isParallelTo(nor, ZAxis)) { + if (ymj) { + let center = ymj.Position.applyMatrix4(ocs).setZ(0); + let cir = new Circle(center, ymj.Radius - SCALAR); + return outline.IntersectWith(cir, 0).length === 0 && outline.PtInCurve(center); + } + } + else { + if (pxl) { + let plxs = [pxl]; + if (pxl2) + plxs.push(pxl2); + if (plxs.every(cy => { + let center = cy.Position.applyMatrix4(ocs).setZ(0); + let cir = new Circle(center, pxl.Radius - SCALAR); + if (userConfig.forceFilterPxl) + return outline.IntersectWith(cir, 0).length > 0 || !outline.PtInCurve(center); + else + return outline.IntersectWith(cir, 0).length <= 1 && !outline.PtInCurve(center); + })) + return false; + } + if (woodPXL) { + let center = woodPXL.Position.applyMatrix4(ocs).setZ(0); + let cir = new Circle(center, woodPXL.Radius - SCALAR); + if (outline.IntersectWith(cir, 0).length > 0 || !outline.PtInCurve(center)) + return false; + } + if (ljg) { + let c1 = ljg.Position.applyMatrix4(ocs).setZ(0); + let minPt = c1.clone().add(nor.clone().multiplyScalar(ljg.Height / 2)); + let c2 = c1.clone().add(nor.clone().multiplyScalar(ljg.Height - SCALAR)); + c1.add(nor.clone().multiplyScalar(SCALAR)); + rotatePoint(nor, Math.PI / 2); + c1.add(nor.multiplyScalar(ljg.Radius)); + c2.add(nor.negate()); + let rect = new Polyline().RectangleFrom2Pt(c1, c2); + let intPtsLen = outline.IntersectWith(rect, 0).length; + if (intPtsLen > 2 || (intPtsLen === 0 && !outline.PtInCurve(minPt))) + return false; + } + if (wood) { + let c1 = wood.Position.applyMatrix4(ocs).setZ(0); + let c2 = c1.clone().add(nor.clone().multiplyScalar(wood.Height)); + rotatePoint(nor, Math.PI / 2); + let dir = nor.multiplyScalar(wood.Radius); + let p1 = c1.clone().add(dir); + let p2 = c2.clone().add(dir); + let p3 = c1.clone().add(dir.negate()); + let p4 = c2.clone().add(dir); + let l1 = new Line(p1, p2); + let l2 = new Line(p3, p4); + if (l1.IntersectWith(outline, 0).length !== 1 || l2.IntersectWith(outline, 0).length !== 1) + return false; + } + } + return true; +} +const TempRectHoleOption = { + up: "", + down: "", + left: "", + right: "", +}; +/**分析上下左右排钻 */ +function InitRectBoardHoleOption(br, option) { + let dir = Math.sign(br.ContourCurve.Area2); + let hightDrill = br.BoardProcessOption.highDrill; + let cus = br.ContourCurve.Explode(); + for (let i = 0; i < cus.length; i++) { + let c = cus[i]; + let derv = c.GetFistDeriv(0).multiplyScalar(dir); + let an = angle(derv); + if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4)) + option.down = hightDrill[i]; + else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8) + option.right = hightDrill[i]; + else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8) + option.up = hightDrill[i]; + else + option.left = hightDrill[i]; + } +} +/**上下左右排钻写入板件 */ +function SetRectHighHole(br, option) { + let dir = Math.sign(br.ContourCurve.Area2); + let highDrill = br.BoardProcessOption.highDrill; + let cus = br.ContourCurve.Explode(); + highDrill.length = 0; + for (let i = 0; i < cus.length; i++) { + let c = cus[i]; + let derv = c.GetFistDeriv(0).multiplyScalar(dir); + let an = angle(derv); + if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4)) + highDrill.push(option.down); + else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8) + highDrill.push(option.right); + else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8) + highDrill.push(option.up); + else + highDrill.push(option.left); + } + let types = new Set(highDrill); + if (types.size === 1 && highDrill[0] !== DrillType.None) + br.BoardProcessOption[EBoardKeyList.DrillType] = highDrill[0]; + else if (types.size > 1) + br.BoardProcessOption[EBoardKeyList.DrillType] = DrillType.More; +} + +var Intent; +(function (Intent) { + Intent["NONE"] = "none"; + Intent["PRIMARY"] = "primary"; + Intent["SUCCESS"] = "success"; + Intent["WARNING"] = "warning"; + Intent["DANGER"] = "danger"; +})(Intent || (Intent = {})); +const ToasterInjectFunctions = []; +function Toaster(option) { + for (let f of ToasterInjectFunctions) + f(option); +} + +function FixIndex$1(index, arr) { + let count = (arr instanceof Array) ? arr.length : arr; + if (index < 0) + return count + index; + else if (index >= count) + return index - count; + else + return index; +} + +/** + * 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体. + * 该几何体需要轮廓和路径的起始截面垂直,否则构造的实体将会错误. + */ +class SweepGeometry extends Geometry { + constructor(contour, path) { + super(); + this.edgePts = []; + this.AddShape(contour, path); + this.computeVertexNormals(); + this.computeFaceNormals(); + } + AddShape(contour, path) { + //路径点表 + let pathPts2d = path.Shape.getPoints(8); + let pathPts = pathPts2d.map(AsVector3); + arrayRemoveDuplicateBySort(pathPts, equalv3); + for (let p of pathPts) + p.applyMatrix4(path.OCS); + let shapePts2d = contour.Shape.getPoints(3); + if (!ShapeUtils.isClockWise(shapePts2d)) + shapePts2d.reverse(); + //轮廓点表 + let shapePts3d = shapePts2d.map(AsVector3); + for (let p of shapePts3d) + p.applyMatrix4(contour.OCS); + let isClosePath = path.IsClose; + let verts = []; //所有路径上的轮廓点 + //计算所有需要的几何点,本质是不断的投影 + if (isClosePath) + verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[0], pathPts[pathPts.length - 2], pathPts[1])); + else + verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[0], undefined, pathPts[1])); + //遍历所有的路径节点进行顶点投射 + for (let i = 1; i < pathPts.length; i++) { + if (i === pathPts.length - 1) { + if (isClosePath) + verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1], pathPts[1])); + else + verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1])); + } + else { + verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1], pathPts[i + 1])); + } + } + this.BuildSideFaces(shapePts2d, pathPts2d, pathPts, verts); + if (!isClosePath) + this.BuildLid(shapePts2d, verts); + } + BuildSideFaces(shapePts2d, pathPts2d, pathPts, verts) { + let addCount = 0; //补充个数 + shapePts2d[0]["_mask_"] = true; + for (let p of shapePts2d) + if (p["_mask_"]) + addCount++; + let sumCount = addCount + shapePts2d.length; //实际个数 + const f4 = (a, b, c, d, uvs) => { + let f1 = new Face3(a, b, c); + let f2 = new Face3(b, d, c); + this.faces.push(f1, f2); + this.faceVertexUvs[0].push([uvs[0].clone(), uvs[1].clone(), uvs[2].clone()], [uvs[1].clone(), uvs[3].clone(), uvs[2].clone()]); + }; + let vs = [0]; //vs 对应 y轴 + for (let i = 1; i < shapePts2d.length; i++) + vs.push((vs[i - 1] + shapePts2d[i].distanceTo(shapePts2d[i - 1]) * 1e-3)); + let lastStartX = 0; + for (let pathIndex = 0; pathIndex < verts.length; pathIndex++) { + let pts = verts[pathIndex]; + let pts2 = verts[FixIndex$1(pathIndex + 1, verts)]; + let startIndex = this.vertices.length; + let pBase = pts[0]; + let p1 = pathPts[pathIndex]; + let p2 = pathPts[FixIndex$1(pathIndex + 1, pathPts.length)]; + let p1Dir = p2.clone().sub(p1).normalize(); + let tempStartX = 0; + for (let contourIndex = 0; contourIndex < shapePts2d.length; contourIndex++) { + let p1 = pts[contourIndex]; + let p2 = pts2[contourIndex]; + let p2d = shapePts2d[contourIndex]; + if (pathIndex !== verts.length - 1) + if (contourIndex === 0 || p2d["_mask_"]) + this.edgePts.push(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z); + if (contourIndex === 0 || p2d["_mask_"]) + this.vertices.push(p1); //补点 + if (pathIndex !== verts.length - 1) { + let curIndex = this.vertices.length; + let nextIndex = startIndex + FixIndex$1(curIndex - startIndex + 1, sumCount); + let curIndex2 = curIndex + sumCount; + let nextIndex2 = nextIndex + sumCount; + let x1 = lastStartX + p1.clone().sub(pBase).dot(p1Dir) * 1e-3; + let x2 = lastStartX + pts[FixIndex$1(contourIndex + 1, shapePts2d)].clone().sub(pBase).dot(p1Dir) * 1e-3; + let x3 = lastStartX + p2.clone().sub(pBase).dot(p1Dir) * 1e-3; + let x4 = lastStartX + pts2[FixIndex$1(contourIndex + 1, shapePts2d)].clone().sub(pBase).dot(p1Dir) * 1e-3; + if (contourIndex === 0) + tempStartX = x3; + let v1 = vs[contourIndex]; + let v2 = vs[FixIndex$1(contourIndex + 1, vs)]; + let uvs = [ + new Vector2(v1, x1), + new Vector2(v2, x2), + new Vector2(v1, x3), + new Vector2(v2, x4), + ]; + f4(curIndex, nextIndex, curIndex2, nextIndex2, uvs); + } + this.vertices.push(p1); + } + lastStartX = tempStartX; + if (pathPts2d[FixIndex$1(pathIndex + 1, verts)]["_mask_"]) { + for (let contourIndex = 0; contourIndex < shapePts2d.length; contourIndex++) { + let p1 = pts2[contourIndex]; + let p2d = shapePts2d[contourIndex]; + if (contourIndex === 0 || p2d["_mask_"]) + this.vertices.push(p1); //补点 + this.vertices.push(p1); + let p2 = pts2[FixIndex$1(contourIndex + 1, pts2)]; + this.edgePts.push(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z); + } + } + } + } + BuildLid(shapePts2d, verts) { + //轮廓三角网格索引 + let faces = ShapeUtils.triangulateShape(shapePts2d, []); + for (let v of shapePts2d) + v.multiplyScalar(1e-3); //作为uvs + let lastIndex = this.vertices.length; + this.vertices.push(...verts[0].map(p => p.clone())); + this.vertices.push(...verts[verts.length - 1].map(p => p.clone())); + for (let i = 0; i < faces.length; i++) { + let [a, b, c] = faces[i]; + this.faces.push(new Face3(lastIndex + a, lastIndex + b, lastIndex + c)); + let uvs = faces[i].map(index => shapePts2d[index].clone()); + this.faceVertexUvs[0].push(uvs); + this.faces.push(new Face3(lastIndex + verts[0].length + c, lastIndex + verts[0].length + b, lastIndex + verts[0].length + a)); + this.faceVertexUvs[0].push(uvs.concat().reverse().map(v => v.clone())); + } + //构建线框 + for (let i = 0; i < shapePts2d.length; i++) { + let nextIndex = FixIndex$1(i + 1, shapePts2d); + let pts1 = verts[0]; + let p0 = pts1[i]; + let p1 = pts1[nextIndex]; + this.edgePts.push(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z); + let pts2 = verts[verts.length - 1]; + p0 = pts2[i]; + p1 = pts2[nextIndex]; + this.edgePts.push(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z); + } + } +} +/** + * 将轮廓变换到`路径上某个点`. + * + * @param {Vector3[]} contourPts 原始的轮廓点(在世界坐标系) + * @param {Vector3} normal 路径法向量 + * @param {Vector3} curP 路径上当前点 + * @param {Vector3} [preP] 路径的前一个点 + * @param {Vector3} [nextP] 路径下一个点 + * @returns 变换后的轮廓点表 + */ +function ProjectionToPlane(contourPts, normal, curP, preP, nextP) { + let pts; + if (!preP && nextP) { + let mat = ContourTransfromToPath(curP, normal, nextP.clone().sub(curP)); + pts = contourPts.map(p => p.clone().applyMatrix4(mat)); + } + else if (!nextP && preP) { + let mat = ContourTransfromToPath(curP, normal, curP.clone().sub(preP)); + pts = contourPts.map(p => p.clone().applyMatrix4(mat)); + } + else if (nextP && preP) { + let dir = curP.clone().sub(preP).normalize(); + let v2 = nextP.clone().sub(curP).normalize(); + //角平分线向量 + let v = dir.clone().sub(v2); + //v1v2pm向量 + let nv1v2 = dir.clone().cross(v2); + let norm = nv1v2.cross(v); + //角平分线的平面 + let plane = new PlaneExt(norm, curP); + let mat = ContourTransfromToPath(preP, normal, dir); + pts = contourPts.map(p => p.clone().applyMatrix4(mat)); + pts = pts.map(p => plane.intersectLine(new Line3(p, p.clone().add(dir)), new Vector3(), true)); + } + return pts; +} +/** + * 计算轮廓变换到`路径上某个点`的矩阵 + * + * @param {Vector3} pt 路径上的点 + * @param {Vector3} norm 曲线法向量 + * @param {Vector3} dir 点前进的方向. + * @returns {Matrix4} + */ +function ContourTransfromToPath(pt, norm, dir) { + let vy = norm; + let vz = dir.normalize(); + let vx = vz.clone().cross(vy); + let mat = new Matrix4(); + mat.makeBasis(vx, vy, vz); + mat.setPosition(pt); + return mat; +} + +let Spline = class Spline extends Curve { + constructor(points) { + super(); + this._ClosedMark = false; + this._PointList = points || []; + } + get Shape() { + return new Shape$1(); + } + get Curve3() { + return new CatmullRomCurve3(this.Points); + } + get Length() { + return this.Curve3.getLength(); + } + get Points() { + return this._PointList; + } + set Points(v) { + this.WriteAllObjectRecord(); + this._PointList = v.map(p => p.clone().applyMatrix4(this.OCSInv)); + this.Update(); + } + //闭合标志 + get CloseMark() { + return this._ClosedMark; + } + //曲线是否闭合 + get IsClose() { + return this.CloseMark || (equalv3(this.StartPoint, this.EndPoint, 1e-4)) && this.EndParam > 1; + } + set CloseMark(v) { + this.WriteAllObjectRecord(); + this._ClosedMark = v; + this.Update(); + } + get StartPoint() { + return this._PointList[0]; + } + get EndPoint() { + return arrayLast(this._PointList); + } + get StartParam() { + return 0; + } + get EndParam() { + return this._PointList.length - 1; + } + GetGripPoints() { + return this._PointList.map(p => p.clone().applyMatrix4(this.OCS)); + } + GetStretchPoints() { + return this.GetGripPoints(); + } + MoveGripPoints(indexList, vec) { + this.WriteAllObjectRecord(); + for (let index of indexList) { + this._PointList[index].add(vec); + } + this.Update(); + } + MoveStretchPoints(indexList, vec) { + this.WriteAllObjectRecord(); + for (let index of indexList) { + this._PointList[index].add(vec); + } + this.Update(); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetStretchPoints(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + } + return []; + } + InitDrawObject(renderType = RenderType.Wireframe) { + let geometry = new BufferGeometry().setFromPoints(this.Curve3.getPoints(60)); + return new Line$1(geometry, ColorMaterial.GetLineMaterial(this._Color)); + } + UpdateDrawObject(type, en) { + let spl = en; + if (this.CloseMark && !equalv3(this._PointList[0], arrayLast(this._PointList))) + this._PointList.push(this._PointList[0].clone()); + let curve = this.Curve3; + let pts = curve.getPoints(this.Points.length * 10); + if (!BufferGeometryUtils.UpdatePts(spl.geometry, pts)) { + spl.geometry.dispose(); + spl.geometry = BufferGeometryUtils.CreateFromPts(pts); + } + } + Convert2Polyline(count = 0) { + let curve3 = this.Curve3; + //修正个数 + if (!count) + count = Math.floor(curve3.getLength() / 30); + count = MathUtils.clamp(count, this._PointList.length * 5, this._PointList.length * 20); + if ((count & 1) === 1) + count++; + let pts = curve3.getPoints(count); + let isClose = this.IsClose; + if (isClose) + pts.pop(); + let pl = Pts2Polyline(pts, isClose); + pl.CloseMark = isClose; + pl.ApplyMatrix(this.OCS); + return pl; + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + let count = file.Read(); + this._PointList.length = 0; + for (let i = 0; i < count; i++) + this._PointList.push(new Vector3().fromArray(file.Read())); + } + WriteFile(file) { + super.WriteFile(file); + file.Write(1); //ver + file.Write(this._PointList.length); + this._PointList.forEach(p => file.Write(p.toArray())); + } +}; +Spline = __decorate([ + Factory +], Spline); + +var SweepSolid_1; +let SweepSolid = SweepSolid_1 = class SweepSolid extends Entity { + constructor(contour, pathCurve) { + super(); + this._Contour = contour; + this._PathCurve = pathCurve; + if (this._Contour && this._Contour.Id) + this._Contour = this._Contour.Clone(); + if (this._Contour && this._PathCurve) { + this.TransfromPathToWCS(); + this.OCS = this._PathCurve.OCS; + this._SpaceOCS.copy(this._PathCurve.OCS); + this._PathCurve.ApplyMatrix(this._PathCurve.OCSInv); + } + } + Explode() { + return [this._Contour.Clone(), this._PathCurve.Clone()]; + } + get Contour() { + return this._Contour; + } + get Path() { + return this._PathCurve; + } + Reverse() { + this.WriteAllObjectRecord(); + this._PathCurve.Reverse(); + this.Update(); + } + /**保持路径左下角在0点 */ + PathTo0() { + let min = this._PathCurve.BoundingBox.min; + this._PathCurve.Position = this._PathCurve.Position.sub(min); + this.OCS = this.OCS.multiply(MoveMatrix(min)); + } + /** + * 将轮廓变换到wcs空间,当用户选定某个与扫描线起点相切的轮廓时. + */ + TransfromPathToWCS() { + if (equalv3(this._Contour.Normal, new Vector3(0, 0, 1))) + return; + let fDir = this._PathCurve.GetFistDeriv(0); + if (isParallelTo(fDir, this._Contour.Normal)) { + //构建回家的矩阵 + let toWcsMat4Inv = new Matrix4(); + let zv = fDir.normalize(); + let yv = this._PathCurve.Normal; + let xv = zv.clone().cross(yv); + toWcsMat4Inv.makeBasis(xv, yv, zv); + toWcsMat4Inv.setPosition(this._PathCurve.StartPoint); + let toWcsMat4 = new Matrix4().getInverse(toWcsMat4Inv); + this._Contour.ApplyMatrix(toWcsMat4); + let z = this._Contour.StartPoint.z; + if (IsPointInPolyLine(this._Contour, new Vector3(0, 0, z))) { + let z = this._Contour.StartPoint.z; + this._Contour.ApplyMatrix(MoveMatrix(new Vector3(0, 0, -z))); + return; + } + else + this._Contour.ApplyMatrix(toWcsMat4Inv); + } + let lDir = this._PathCurve.GetFistDeriv(this._PathCurve.EndParam); + if (isParallelTo(lDir, this._Contour.Normal)) { + //再次构建回家的矩阵 + let toWcsMat4Inv = new Matrix4(); + let zv = lDir.negate().normalize(); + let yv = this._PathCurve.Normal; + let xv = zv.clone().cross(yv); + toWcsMat4Inv.makeBasis(xv, yv, zv); + toWcsMat4Inv.setPosition(this._PathCurve.EndPoint); + let toWcsMat4 = new Matrix4().getInverse(toWcsMat4Inv); + this._Contour.ApplyMatrix(toWcsMat4); + let z = this._Contour.StartPoint.z; + if (IsPointInPolyLine(this._Contour, new Vector3(0, 0, z))) { + let z = this._Contour.StartPoint.z; + this._Contour.ApplyMatrix(MoveMatrix(new Vector3(0, 0, -z))); + this._PathCurve.Reverse(); + return; + } + else + this._Contour.ApplyMatrix(toWcsMat4); + } + Log("错误:提供的轮廓没有和路径垂直!"); + } + get MeshGeometry() { + if (this._MeshGeometry) + return this._MeshGeometry; + try { + let contour = this._Contour; + if (SweepSolid_1.UseRectFakerContour && contour.EndParam > 10) { + let box = contour.BoundingBox; + contour = new Polyline().RectangleFrom2Pt(box.min, box.max); + } + this._MeshGeometry = new SweepGeometry(contour, this._PathCurve); + this._EdgeGeometry = new BufferGeometry().setAttribute('position', new Float32BufferAttribute(this._MeshGeometry.edgePts, 3)); + this.getLineGeo(this._MeshGeometry.edgePts); + this._MeshGeometry.edgePts = undefined; + return this._MeshGeometry; + } + catch (error) { + return new BoxBufferGeometry(1000, 1000, 1000); + } + } + getLineGeo(pts) { + this._lineGeo = new LineGeometry(); + let lineSegments = new Float32Array(pts); + var instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); + this._lineGeo.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0)); + this._lineGeo.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3)); + } + get EdgeGeometry() { + if (this._EdgeGeometry) + return this._EdgeGeometry; + this.MeshGeometry; + return this._EdgeGeometry; + } + InitDrawObject(renderType) { + if (renderType === RenderType.Wireframe || renderType === RenderType.Edge) + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)); + else if (renderType === RenderType.Conceptual) { + return new Object3D().add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Physical) + return new Mesh(this.MeshGeometry, this.MeshMaterial); + else if (renderType === RenderType.Print) { + let mat2 = ColorMaterial.GetPrintConceptualMaterial(); + let meshGeo = this.MeshGeometry; + let mesh = new Mesh(meshGeo, mat2); + let line = new Line2(this._lineGeo, ColorMaterial.PrintLineMatrial); + return new Object3D().add(line, mesh); + } + else if (renderType === RenderType.Jig) { + return new Object3D().add(this._PathCurve.DrawObject); + } + else if (renderType === RenderType.Physical2) { + return new Object3D().add(new Mesh(this.MeshGeometry, this.MeshMaterial), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + } + UpdateDrawGeometry() { + this._EdgeGeometry = undefined; + this._MeshGeometry = undefined; + } + UpdateDrawObject(renderType, obj) { + DisposeThreeObj(obj); + if (renderType === RenderType.Wireframe || renderType === RenderType.Edge) { + let l = obj; + l.geometry = this.EdgeGeometry; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Conceptual) { + Object3DRemoveAll(obj); + return obj.add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Physical) { + let mesh = obj; + mesh.geometry = this.MeshGeometry; + mesh.material = this.MeshMaterial; + } + else if (renderType === RenderType.Jig) { + Object3DRemoveAll(obj); + obj.add((this._PathCurve.DrawObject)); + } + else if (renderType === RenderType.Physical2) { + Object3DRemoveAll(obj); + return obj.add(new Mesh(this.MeshGeometry, this.MeshMaterial), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + } + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type, obj) { + if (type === RenderType.Wireframe) { + let l = obj; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (type === RenderType.Conceptual) { + let mesh = obj.children[0]; + mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex); + } + else if (type === RenderType.Physical2) { + let mesh = obj.children[0]; + mesh.material = this.MeshMaterial; + } + else { + let mesh = obj; + mesh.material = this.MeshMaterial; + } + } + get BoundingBox() { + if (!this.MeshGeometry.boundingBox) + this.MeshGeometry.computeBoundingBox(); + return this.MeshGeometry.boundingBox.clone().applyMatrix4(this._Matrix); + } + get OBB() { + let box = this.BoundingBox; + let size = box.getSize(new Vector3); + return new OBB(MoveMatrix(box.min), size.multiplyScalar(0.5)); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetEndPoint(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + { + let contour = this._PathCurve.Clone(); + contour.ApplyMatrix(this.OCS); + let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform); + if (snapMode === ObjectSnapMode.Mid) + return [...pts, ...this.GetMidPoints()]; + return pts; + } + } + return []; + } + GetGripPoints() { + let pts = this._PathCurve.GetGripPoints(); + for (let p of pts) + p.applyMatrix4(this._Matrix); + return pts; + } + GetStretchPoints() { + let pts = this._PathCurve.GetStretchPoints(); + for (let p of pts) + p.applyMatrix4(this._Matrix); + return pts; + } + UpdateEndMtx(dir, pos) { + let y = this.Normal; + let roMat = new Matrix4().extractRotation(this.OCS); + let z = dir.applyMatrix4(roMat); + let x = z.clone().cross(y); + tempMatrix1.makeBasis(x, y, z); + tempMatrix1.setPosition(pos.applyMatrix4(this.OCS)); + } + GetEndPoint() { + let conPts = this._Contour.GetStretchPoints(); + let cus; + if (this._PathCurve instanceof Polyline) + cus = this._PathCurve.Explode(); + else + cus = [this._PathCurve]; + let roMat = new Matrix4().extractRotation(this.OCS); + const pts = []; + for (let i = 0; i < cus.length; i++) { + let l1 = cus[i]; + let l2; + if (this._PathCurve.IsClose) { + l2 = cus[FixIndex(i + 1, cus.length)]; + } + else { + l2 = cus[i + 1]; + if (i === 0) { + this.UpdateEndMtx(l1.GetFistDeriv(0).normalize(), l1.StartPoint); + pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1))); + } + } + let p = l1.EndPoint; + let d1 = l1.GetFistDeriv(1).normalize(); + this.UpdateEndMtx(d1.clone(), p); + if (l2) { + let d2 = l2.GetFistDeriv(0).normalize().applyMatrix4(roMat); + d1.applyMatrix4(roMat); + d2.add(d1).normalize(); + if (isParallelTo(d1, d2)) { + if (l1 instanceof Line && l2 instanceof Line) ; + else { + let ps = conPts.map(p => p.clone().applyMatrix4(tempMatrix1)); + pts.push(...ps); + } + continue; + } + p.copy(l1.EndPoint); + //角平分线的平面; + let plane = new PlaneExt(d2, p.applyMatrix4(this.OCS)); + let ps = conPts.map(p => p.clone().applyMatrix4(tempMatrix1)); + pts.push(...ps.map(p => plane.intersectLine(new Line3(p.clone().sub(d1.clone().multiplyScalar(-100)), p.clone().add(d1)), new Vector3(), true))); + } + else { + pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1))); + } + } + return pts; + } + GetMidPoints() { + let conPts = this._Contour.GetStretchPoints(); + const pts = []; + for (let i = 0.5; i < this._PathCurve.EndParam; i++) { + let p = this._PathCurve.GetPointAtParam(i); + let d1 = this._PathCurve.GetFistDeriv(i).normalize(); + this.UpdateEndMtx(d1, p); + pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1))); + } + return pts; + } + MoveGripPoints(indexList, vec) { + this.WriteAllObjectRecord(); + this.IfPathIsLineThenZ0Vector(vec); + this._PathCurve.MoveGripPoints(indexList, vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv))); + this.Update(); + } + //如果路径是直线,我们在这里避免vec传递z轴信息 + IfPathIsLineThenZ0Vector(vec) { + if (this._PathCurve instanceof Line) { + let ocsinv = this._PathCurve.OCSInv.setPosition(0, 0, 0); + vec.applyMatrix4(ocsinv).setZ(0); + vec.applyMatrix4(this._PathCurve.OCSNoClone); + } + } + MoveStretchPoints(indexList, vec) { + this.WriteAllObjectRecord(); + this.IfPathIsLineThenZ0Vector(vec); + this._PathCurve.MoveStretchPoints(indexList, vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv))); + this.Update(); + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + this._Contour = file.ReadObject(); + this._PathCurve = file.ReadObject(); + if (this._Contour instanceof Spline || this._PathCurve instanceof Spline) { + this._isErase = true; + Log("放样实体是样条线生成的,自动删除它!"); + } + } + WriteFile(file) { + super.WriteFile(file); + file.Write(1); //ver + file.WriteObject(this._Contour); + file.WriteObject(this._PathCurve); + } +}; +SweepSolid.UseRectFakerContour = false; +SweepSolid = SweepSolid_1 = __decorate([ + Factory +], SweepSolid); + +let HardwareTopline = class HardwareTopline extends SweepSolid { + constructor() { + super(...arguments); + this.HardwareOption = { ...DefaultToplineMetalsOption }; + this.DataList = []; + this._contourRotation = 0; + } + get ContourRotation() { + return this._contourRotation; + } + get Contours() { + var _a, _b; + let c = this.Path; + let conBox = this.Contour.BoundingBox; + let cMin = conBox.min; + let cMax = conBox.max; + let y = ZAxis; + let z = c.GetFistDeriv(0).normalize(); + let x = z.clone().cross(y); + let mat = new Matrix4().makeBasis(x, y, z); + mat.setPosition(c.StartPoint); + [cMin, cMax].forEach(p => p.applyMatrix4(mat).setZ(0)); + let firstCurve; + if (c instanceof Polyline) + firstCurve = c.GetCurveAtParam(0); + else + firstCurve = c; + let closePt = firstCurve.GetClosestPointTo(cMin, false); + let offset = cMin.distanceTo(closePt); + let dir = GetPointAtCurveDir(firstCurve, cMin); + let cus = this.Path.GetOffsetCurves(offset * dir); + let l1 = (_a = cus[0]) !== null && _a !== void 0 ? _a : this.Path.Clone(); + closePt = firstCurve.GetClosestPointTo(cMax, false); + let offset2 = cMax.distanceTo(closePt); + dir = GetPointAtCurveDir(firstCurve, cMax); + cus = this.Path.GetOffsetCurves(offset2 * dir); + let l2 = (_b = cus[0]) !== null && _b !== void 0 ? _b : this.Path.Clone(); + this._ContourWidth = offset + offset2; + return [l1, l2]; + } + /** + *延伸取最大最小轮廓每段首尾到前面线段,取最长线段作为分段长 + * + */ + get Segmentations() { + const [l1, l2] = this.Contours; + if (!(l1 instanceof Polyline)) + return [l1]; + let cus1 = l1.Explode(); + let cus2 = l2.Explode(); + [cus1, cus2] = cus1.length < cus2.length ? [cus2, cus1] : [cus1, cus2]; + let sgs = []; + const AddSgs = (c1, c2) => { + sgs.push(c1.Length > c2.Length ? c1 : c2); + }; + const ExtendCurve = (c, refC, isPre) => { + let pts = c.IntersectWith2(refC, IntersectOption.ExtendBoth).filter(r => { + if (isPre) + return r.thisParam < 0; + else + return r.thisParam > 1; + }); + if (isPre) { + pts.sort((r1, r2) => r2.thisParam - r1.thisParam); + if (pts.length > 0 && pts[0].thisParam < 0) + c.Extend(pts[0].thisParam); + } + else { + pts.sort((r1, r2) => r1.thisParam - r2.thisParam); + if (pts.length > 0 && pts[0].thisParam > 1) + c.Extend(pts[0].thisParam); + } + }; + const IsNoRelativeCurve = (c1, c2) => { + if ((c1 instanceof Line) !== (c2 instanceof Line)) + return true; + let midPt = c1.GetPointAtParam(0.5); + let closePt = c2.GetClosestPointTo(midPt, false); + return !closePt || !equaln(midPt.distanceTo(closePt), this._ContourWidth, 1e-3); + }; + const HasRelativeCurveAndChange = (target, cs, isChange = false) => { + let index = cs.findIndex(c => !IsNoRelativeCurve(c, target)); + if (index !== -1) { + if (isChange && l1.IsClose) + cs.unshift(...cs.splice(index)); + return true; + } + return false; + }; + if (cus1.length !== cus2.length) + arrayRemoveIf(cus2, c => !HasRelativeCurveAndChange(c, cus1)); + for (let i = 0; i < cus1.length; i++) { + let c1 = cus1[i]; + let c2 = cus2[i]; + if (cus1.length !== cus2.length) { + if (IsNoRelativeCurve(c1, c2)) { + sgs.push(c1); + cus1.splice(i, 1); + i--; + continue; + } + } + else { + //第一段验证是否是关联段,不关联重置数组顺序 + if (i === 0) { + if (IsNoRelativeCurve(c1, c2)) { + if (!HasRelativeCurveAndChange(c1, cus2, true)) { + console.error("错误"); + return cus1; + } + i--; + continue; + } + } + } + let nextC1; + if (l1.IsClose) { + nextC1 = cus1[FixIndex$1(i + 1, cus1.length)]; + } + else { + if (i < cus1.length - 1) { + nextC1 = cus1[i + 1]; + } + } + if (nextC1) { + let derv = c1.GetFistDeriv(0).normalize(); + let derv2 = nextC1.GetFistDeriv(0).normalize(); + if (isPerpendicularityTo(derv, derv2) && isPerpendicularityTo(derv, c1.StartPoint.sub(c2.StartPoint).normalize())) { + AddSgs(c1, c2); + continue; + } + } + let nextDerv1 = c1.GetFistDeriv(1).normalize(); + let nextDerv2 = c2.GetFistDeriv(1).normalize(); + let preDerv1 = c1.GetFistDeriv(0).normalize(); + let preDerv2 = c2.GetFistDeriv(0).normalize(); + [nextDerv1, nextDerv2, preDerv1, preDerv2].forEach(d => rotatePoint(d, Math.PI / 2)); + let preRefLine1 = new Line(c1.StartPoint, c1.StartPoint.add(preDerv1)); + let preRefLine2 = new Line(c2.StartPoint, c2.StartPoint.add(preDerv2)); + let nextRefLine1 = new Line(c1.EndPoint, c1.EndPoint.add(nextDerv1)); + let nextRefLine2 = new Line(c2.EndPoint, c2.EndPoint.add(nextDerv2)); + ExtendCurve(c1, nextRefLine2, false); + ExtendCurve(c2, nextRefLine1, false); + ExtendCurve(c1, preRefLine2, true); + ExtendCurve(c2, preRefLine1, true); + AddSgs(c1, c2); + } + return sgs; + } + get MaxLength() { + return this.Segmentations.reduce((len, c) => len + c.Length, 0); + } + set ContourRotation(ro) { + if (ro === this._contourRotation) + return; + let diffRo = ro - this._contourRotation; + this._contourRotation = ro; + let mat = new Matrix4().makeRotationZ(diffRo); + this.Contour.ApplyMatrix(mat); + this.Update(); + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); //1 + this._contourRotation = file.Read(); + this.HardwareOption.addLen = file.Read(); + this.HardwareOption.name = file.Read(); + this.HardwareOption.roomName = file.Read(); + this.HardwareOption.cabinetName = file.Read(); + this.HardwareOption.costExpr = file.Read(); + this.HardwareOption.actualExpr = file.Read(); + this.HardwareOption.model = file.Read(); + this.HardwareOption.factory = file.Read(); + this.HardwareOption.brand = file.Read(); + this.HardwareOption.spec = file.Read(); + this.HardwareOption.comments = file.Read(); + let count = file.Read(); + this.DataList.length = 0; + for (let i = 0; i < count; i++) { + let d = ["", ""]; + d[0] = file.Read(); + d[1] = file.Read(); + this.DataList.push(d); + } + } + WriteFile(file) { + super.WriteFile(file); + file.Write(1); //ver + file.Write(this._contourRotation); + file.Write(this.HardwareOption.addLen); + file.Write(this.HardwareOption.name); + file.Write(this.HardwareOption.roomName); + file.Write(this.HardwareOption.cabinetName); + file.Write(this.HardwareOption.costExpr); + file.Write(this.HardwareOption.actualExpr); + file.Write(this.HardwareOption.model); + file.Write(this.HardwareOption.factory); + file.Write(this.HardwareOption.brand); + file.Write(this.HardwareOption.spec); + file.Write(this.HardwareOption.comments); + file.Write(this.DataList.length); + for (let data of this.DataList) { + file.Write(data[0]); + file.Write(data[1]); + } + } +}; +__decorate([ + AutoRecord +], HardwareTopline.prototype, "HardwareOption", void 0); +__decorate([ + AutoRecord +], HardwareTopline.prototype, "DataList", void 0); +HardwareTopline = __decorate([ + Factory +], HardwareTopline); + +class LookOverBoardInfosTool { + constructor() { + this.drillTypeMap = new Map(); + this.sealMap = new Map(); + this.boardMap = new Map(); + } + GetCount(brs, options = null) { + let drillCount = []; + let sealCount = []; + let hardwareCount = []; + let areaCount = []; + this.drillTypeMap.clear(); + this.sealMap.clear(); + this.Update(brs, options); + if (this.drillTypeMap.size > 0) + for (let [k, v] of this.drillTypeMap) { + if (v[0] instanceof Hole) + if (k === "木销") + drillCount.push({ name: k, count: v.length }); + else if (k === "层板钉") + drillCount.push({ name: k, count: v.length }); + else + drillCount.push({ name: k, count: v.length }); + else { + this.ParseHardwareCount(k, v, hardwareCount); + } + } + hardwareCount.sort((h1, h2) => h1.name.localeCompare(h2.name)); + //加入封边信息 + for (let [k, v] of this.sealMap) { + sealCount.push({ name: k, count: v / 1000, unit: "米" }); + } + for (let [k, bs] of this.boardMap) { + areaCount.push({ + entity: bs[0], + count: bs.length, + count2: this.GetBoardsArea(bs) + }); + } + return { drillCount, hardwareCount, sealCount, areaCount }; + } + ; + Update(ens, options = null) { + var _a, _b, _c, _d; + //计算排钻个数 + const addDrillToMap = (spiteName, d) => { + if (!this.drillTypeMap.has(spiteName)) + this.drillTypeMap.set(spiteName, [d]); + else { + let ds = this.drillTypeMap.get(spiteName); + if (!ds.includes(d)) + ds.push(d); + } + }; + const brsProps = []; + const hardwares = []; + for (let e of ens) { + if (e instanceof Board) + brsProps.push(e); + else + hardwares.push(e); + } + for (let h of hardwares) { + let { name, unit, factory, spec, model, brand } = h.HardwareOption; + addDrillToMap(`${name},${unit},${factory},${this.ParseSpec(h, spec)},${model},${brand}`, h); + } + this.UpdateBoardMap(brsProps); + for (let b of brsProps) { + let dlist = b.DrillList; + if (equaln(b.ContourCurve.Area, 0)) { + Toaster({ + message: `${b.BoardProcessOption.roomName} ${b.BoardProcessOption.cabinetName} ${b.Name}轮廓有有问题,请检查`, + timeout: 3000, + intent: Intent.DANGER, + }); + continue; + } + for (let [id, idList] of dlist) { + for (let ids of idList) { + findHole: for (let objId of ids) { + let gd = objId.Object; + if (!(gd === null || gd === void 0 ? void 0 : gd.IsErase)) { + if (gd instanceof CylinderHole) + switch (gd.Type) { + case GangDrillType.Ljg: + case GangDrillType.Pxl: + case GangDrillType.Ymj: + case GangDrillType.Ljg: + case GangDrillType.TK: + let spiteName = (_c = (_b = (_a = gd.GroupId) === null || _a === void 0 ? void 0 : _a.Object) === null || _b === void 0 ? void 0 : _b.Name) !== null && _c !== void 0 ? _c : "未命名"; + //读取拆单名 + addDrillToMap(spiteName, gd); + break findHole; + case GangDrillType.Wood: + case GangDrillType.WoodPXL: + addDrillToMap("木销", gd); + break findHole; + } + else { + //TODO:统计自定义排钻 + if (gd instanceof ExtrudeHole) { + if ((_d = gd === null || gd === void 0 ? void 0 : gd.GroupId) === null || _d === void 0 ? void 0 : _d.Object) { + let name = gd.GroupId.Object.Name; + let ents = gd.GroupId.Object.Entitys; + addDrillToMap(name, ents[0].Object); + } + else { + Toaster({ message: `柜名:${b.BoardProcessOption.cabinetName} 板名:${b.Name} 的排钻的编组丢失,统计排钻个数时会丢失该个数!`, timeout: 5000, intent: Intent.DANGER }); + } + } + } + } + } + } + } + // 被复制的层板钉暂未加入LayerNails数组 等做好关联后解除注释 + if (b.LayerNails.length > 0) + for (let objId of b.LayerNails) { + if (!(objId === null || objId === void 0 ? void 0 : objId.IsErase)) + addDrillToMap("层板钉", objId.Object); + } + //分析五金 + for (const mId of b.RelativeHardware) { + let metal = mId === null || mId === void 0 ? void 0 : mId.Object; + if (metal && !metal.IsErase && metal.HardwareOption) { + let { name, unit, factory, spec, model, brand } = metal.HardwareOption; + addDrillToMap(`${name},${unit},${factory},${this.ParseSpec(metal, spec)},${model},${brand}`, metal); + } + } + //封边 + let sealData = Production.GetBoardSealingData(b); + let color = b.BoardProcessOption[EBoardKeyList.Color]; + for (let data of sealData) { + if (equaln(0, data.size)) + continue; + let k = `${data.size}-${FixedNotZero(b.Thickness, 2)}-${color}`; + if (options) { + k += options.sealGruopKey(b); + } + let len = this.sealMap.get(k); + if (!len) + this.sealMap.set(k, data.length); + else + this.sealMap.set(k, len += data.length); + } + } + } + ; + ParseSpec(en, spec, len) { + let size = en instanceof Vector3 ? en : en.BoundingBoxInOCS.getSize(new Vector3); + return ParseExpr(spec, { L: len !== null && len !== void 0 ? len : size.x, W: size.y, H: size.z }) || "[ 无 ]"; + } + ParseHardwareCount(k, v, hardwareCount) { + if (v.length > 0) { + if (!(v[0] instanceof HardwareTopline)) { + let count2 = v.reduce((v, d) => { + var _a; + let size = d.BoundingBoxInOCS.getSize(new Vector3); + let c = (_a = safeEval(d.HardwareOption.count, { L: size.x, W: size.y, H: size.z })) !== null && _a !== void 0 ? _a : 0; + return v + c; + }, 0); + hardwareCount.push({ name: k.split(",")[0], count: v.length, entity: v[0], count2: FixedNotZero(count2, 2) }); + } + else { + let map = new Map(); + let name = k.split(",")[0]; + let addLen = v[0].HardwareOption.addLen; + for (let d of v) { + let e = d; + let cus = e.Segmentations; + for (let cu of cus) { + let len = parseFloat(FixedNotZero(cu.Length, 2)); + if (map.has(len)) { + map.set(len, map.get(len) + 1); + } + else { + map.set(len, 1); + } + } + } + for (let [len, count] of map) { + let count2 = parseFloat(FixedNotZero(len + parseFloat(addLen), 2)); + hardwareCount.push({ name, count, entity: v[0], count2, length: count2 }); + } + } + } + } + UpdateBoardMap(brs) { + this.boardMap.clear(); + for (let b of brs) { + let thickness = this.GetBoardThickness(b); + let brMat = b.BoardProcessOption[EBoardKeyList.BrMat]; + let mat = b.BoardProcessOption[EBoardKeyList.Mat]; + let color = b.BoardProcessOption[EBoardKeyList.Color]; + let key = `${thickness}-${brMat}-${mat}-${color}`; + let list = this.boardMap.get(key); + if (!list) { + list = []; + this.boardMap.set(key, list); + } + list.push(b); + } + } + GetBoardThickness(br) { + let size = Production.GetSpiteSize(br); + if (size) + return FixedNotZero(size.spliteThickness, 2); + else + return FixedNotZero(br.Thickness, 2); + } + GetBoardsArea(brs) { + return brs.reduce((area, b) => { + let size = Production.GetSpiteSize(b); + let ar; + if (size) + ar = size.spliteHeight * size.spliteWidth / 1e6; + else + ar = b.Width * b.Height / 1e6; + ar = parseFloat(ar.toFixed(3)); + return area + ar; + }, 0).toFixed(2); + } +} +const lookOverBoardInfosTool = new LookOverBoardInfosTool(); + +let instanceMap = new Map(); +/** + * 构造单例类的静态类. + * # Example: + * class A extends Singleton(){}; + * //获得单例 + * let a = A.GetInstance(); + */ +class Singleton { + constructor() { } + //FIXME: https://github.com/Microsoft/TypeScript/issues/5863 + static GetInstance() { + if (instanceMap.has(this)) + return instanceMap.get(this); + //@ts-ignore + let __instance__ = new this.prototype.constructor(); + instanceMap.set(this, __instance__); + return __instance__; + } +} + +const CanDrawHoleFuzz = 1e-2; +var BoardFaceType; +(function (BoardFaceType) { + BoardFaceType[BoardFaceType["Side"] = 0] = "Side"; + BoardFaceType[BoardFaceType["NoSide"] = 1] = "NoSide"; +})(BoardFaceType || (BoardFaceType = {})); +function GetSideFaceMtx(cu, inverseZ = false) { + let x = cu.GetFistDeriv(0).normalize(); + let y = ZAxis; + let z = x.clone().cross(y); + if (inverseZ) + z.negate(); + let basePt; + if ((equaln(x.x, 0) && x.y > 0) || x.x < 0) { + x.negate(); + basePt = cu.EndPoint; + } + else + basePt = cu.StartPoint; + //构建面矩阵 + return new Matrix4() + .makeBasis(x, y, z) + .setPosition(basePt); +} + +/** + * 优化走刀路径,连接偏移后的曲线数组 + * @param offsetCus 偏移后的曲线组 + * @param originShape 原始走刀形状 + * @param rad 刀半径 + * @returns tool path + */ +function OptimizeToolPath(offsetCus, originShape, rad) { + var _a; + // 去掉最外轮廓 + let outline = offsetCus.shift(); + let plList = []; + let noCloseCus = []; + for (let cu of offsetCus) { + if (!cu.IsClose) { + noCloseCus.push(cu); + continue; + } + if (cu instanceof Polyline) { + //轮廓朝下的逆时针轮廓需要翻转 + //如果走刀不止一条,第一刀为顺时针,其余为逆时针 + if (cu.IsClose) { + if (offsetCus.length === 1) { + if (cu.Normal.z * cu.Area2 < 0) + cu.Reverse(); + } + else if ((cu.Normal.z * cu.Area2 < 0) === (cu !== offsetCus[0])) + cu.Reverse(); + } + plList.push(cu); + } + else if (cu instanceof Circle) { + let c = ConverCircleToPolyline(cu); + if (offsetCus.length > 1 && cu === offsetCus[0]) + c.Reverse(); + c.ColorIndex = cu.ColorIndex; + plList.push(c); + } + else + console.warn("错误形状"); + } + if (noCloseCus.length > 0) { + let culist = []; + noCloseCus.forEach(c => { + if (c instanceof Polyline) + culist.push(...c.Explode()); + else + culist.push(c); + }); + //移除相等的曲线避免重复走刀 + RempveEqualCurves(culist); + let groups = curveLinkGroup(culist); + for (let g of groups) { + let pl = Polyline.Combine(g); + pl.ColorIndex = noCloseCus[0].ColorIndex; + plList.push(pl); + } + } + let dir = GetCurveToInDir(outline); + let cantIntCur = [outline]; + cantIntCur.push(...GetOffsetCurves(outline, rad * dir)); + if (originShape.Holes.length > 0) { + for (let h of originShape.Holes) { + let dir = Math.sign(h.Curve.Area2); + if (h.Curve instanceof Circle) + dir = 1; + cantIntCur.push(h.Curve, ...GetOffsetCurves(h.Curve, rad * dir)); + } + } + //曲线统一起点 + ChangePlListStartPt(plList); + //对多段线进行排序,按最起始点远近排序 + SortPlByStartPt(plList); + let result = []; + let firstPl = plList[0]; + firstPl.CloseMark = false; + for (let i = 1; i < plList.length; i++) { + let ePt = firstPl.EndPoint; + let isDisVail; + if (((_a = plList[i].TempData) === null || _a === void 0 ? void 0 : _a.isOut) && !equalv3(ePt, plList[i].StartPoint)) + isDisVail = true; + else { + let refLine = new Line(ePt, plList[i].StartPoint); + isDisVail = cantIntCur.some(c => c.IntersectWith(refLine, 0).length > 1); + } + if (isDisVail) { + result.push(firstPl); + firstPl = plList[i]; + firstPl.CloseMark = false; + } + else { + let alMat = matrixAlignCoordSys(plList[i].OCS, firstPl.OCS); + let cuPtsBul = plList[i].PtsBuls; + for (let i = 0; i < cuPtsBul.pts.length; i++) { + //坐标系对齐 + let p = cuPtsBul.pts[i]; + p.copy(AsVector2(AsVector3(p).applyMatrix4(alMat))); + firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[i] }); + } + } + } + result.push(firstPl); + return result; +} +/** +* 设定走刀路径起始点 +* 为了统一刀路起点,最外轮廓左左点为起始点,其余轮廓以最接近最外轮廓起始点的点左起始点 +* @param plList +*/ +function ChangePlListStartPt(plList) { + let firstPl = plList[0]; + if (firstPl.IsClose) { + let minP = undefined; + let compare = comparePoint("xy"); + for (let p of firstPl.GetStretchPoints()) { + if (!minP) + minP = p; + else if (compare(minP, p) === 1) + minP = p; + } + let par = firstPl.GetParamAtPoint(minP); + firstPl.ResetStartPoint(par); + } + let firstSpt = firstPl.StartPoint; + for (let i = 1; i < plList.length; i++) { + let pl = plList[i]; + if (pl.IsClose) { + let pts = pl.GetStretchPoints().sort((p1, p2) => { + let dist1 = p1.distanceToSquared(firstSpt); + let dist2 = p2.distanceToSquared(firstSpt); + return dist1 - dist2; + }); + let par = pl.GetParamAtPoint(pts[0]); + pl.ResetStartPoint(par); + } + else { + let sPt = pl.StartPoint; + let ePt = pl.EndPoint; + let dist1 = sPt.distanceToSquared(firstSpt); + let dist2 = ePt.distanceToSquared(firstSpt); + if (dist1 > dist2) + pl.Reverse(); + } + } +} +/** + * 排序多段线数组,按照起点之间的距离 + */ +function SortPlByStartPt(pls) { + if (pls.length <= 1) + return pls; + let result = [pls[0]]; + let usedPl = new WeakSet([pls[0]]); + let p = pls[0].StartPoint; + while (true) { + if (pls.length === result.length) + break; + let vaildPl; + let minDist = Infinity; + for (let pl of pls) { + if (usedPl.has(pl)) + continue; + let dist = pl.StartPoint.distanceToSquared(p); + if (dist < minDist) { + minDist = dist; + vaildPl = pl; + } + } + p = vaildPl.StartPoint; + result.push(vaildPl); + usedPl.add(vaildPl); + } + pls.length = 0; + pls.push(...result); +} +function RempveEqualCurves(cus) { + let needRemoveCurve = new Set(); + for (let i = 0; i < cus.length; i++) { + let cu1 = cus[i]; + if (needRemoveCurve.has(cu1)) + continue; + for (let j = i + 1; j < cus.length; j++) { + let cu2 = cus[j]; + if (needRemoveCurve.has(cu2)) + continue; + if (equalCurve(cu1, cu2)) { + needRemoveCurve.add(cu2); + } + } + } + arrayRemoveIf(cus, (c) => needRemoveCurve.has(c)); +} +/**获取内偏移的轮廓 */ +function GetOffsetCurves(cu, dist, rectInfo) { + if (cu instanceof Polyline) { + if (rectInfo === null || rectInfo === void 0 ? void 0 : rectInfo.isRect) { + let r = RectOffset(cu, rectInfo, Math.abs(dist)); + return r ? [r] : []; + } + return cu.GetFeedingToolPath(dist).filter(c => !equaln(c.Length, 0, 1e-5)); + } + else + return cu.GetOffsetCurves(dist); +} +/** 获得曲线内偏移方向*/ +function GetCurveToInDir(cu) { + return cu.IsClockWise ? 1 : -1; +} +/**矩形偏移,正为内偏移 */ +function RectOffset(rect, res, dist) { + if (!res.isRect || equaln(dist, 0)) + return; + let box = res.box; + let size = res.size; + let min = box.min.clone(); + let max = box.max.clone(); + if (dist > Math.min(size.x, size.y) / 2 + 1e-2) + return; + if (equaln(size.x / 2, dist, 1e-5)) { + let x = (box.min.x + box.max.x) * 0.5; + let sPt = new Vector3(x, box.min.y + dist); + let ePt = new Vector3(x, box.max.y - dist); + return new Polyline([{ pt: AsVector2(sPt), bul: 0 }, { pt: AsVector2(ePt), bul: 0 }]).ApplyMatrix(res.OCS); + } + else if (equaln(size.y / 2, dist, 1e-5)) { + let y = (box.min.y + box.max.y) * 0.5; + let sPt = new Vector3(box.min.x + dist, y); + let ePt = new Vector3(box.max.x - dist, y); + return new Polyline([{ pt: AsVector2(sPt), bul: 0 }, { pt: AsVector2(ePt), bul: 0 }]).ApplyMatrix(res.OCS); + } + else { + min.add(new Vector3(dist, dist)); + max.add(new Vector3(-dist, -dist)); + return new Polyline().RectangleFrom2Pt(min, max).ApplyMatrix(res.OCS); + } +} + +/** + *计算走刀工具类 + */ +class FeedingToolPath extends Singleton { + /** + * 处理形状,内偏移 + * @param shape 造型Shape + * @param knifRadius 刀半径/偏移距离 + * @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓 + */ + HandleShape(shape, knifRadius, isOut = true) { + let outline = shape.Outline.Curve; + if (isOut) + outline = outline.Clone(); + let dir = GetCurveToInDir(outline); + let offsetCus = [outline]; + //获得形状外孔轮廓 + let holes = []; + /**用于判断孤岛是否与外轮廓相交 */ + let holeOffsetCus = []; + for (let h of shape.Holes) { + if (!isOut) + holes.push(h.Clone()); + else { + let dir = -GetCurveToInDir(h.Curve); + let cus; + if (h.Curve instanceof Circle) + cus = h.Curve.GetOffsetCurves(knifRadius * dir); + else + cus = h.Curve.GetFeedingToolPath(knifRadius * dir); + holeOffsetCus.push(...h.Curve.GetOffsetCurves(knifRadius * dir).filter(c => c.IsClose)); + holes.push(...this.GetContours(cus, offsetCus)); + } + } + let offsetDist = 0; + let rectInfo = IsRect(outline); + while (true) { + if ((!isOut || offsetDist >= knifRadius) && rectInfo.isRect) + offsetDist += knifRadius * 2; + else + offsetDist += knifRadius; + let retCus = []; + let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo); + retCus.push(...tempOffsetCus); + //最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心 + if (retCus.length === 0 && rectInfo.isRect && offsetDist > knifRadius) { + offsetDist -= knifRadius; + retCus.push(...GetOffsetCurves(outline, offsetDist * dir, rectInfo)); + } + if (retCus.length === 0) + break; + //是否和孤岛相交 + let isInt = false; + for (let c of retCus) { + if (holes.length > 0) { + isInt = holes.some(h => h.Curve.IntersectWith(c, 0).length > 0 || h.CuInOutline(c)); + if (isInt) + break; + } + if (isOut && offsetDist === knifRadius) + c.TempData = { isOut: true }; + offsetCus.push(c); + } + if (isInt) { + //洞形状管理器 + let holesMg = new ShapeManager(); + if (isOut) + holes = Shape.mergeContours(holes, false); //#I1MUQD 正好擦边的孔不合并 + holesMg.AppendShapeList(holes.map(h => new Shape(h))); + let shapeMg = new ShapeManager(); + let cons = this.GetContours(retCus, offsetCus); + shapeMg.AppendShapeList(cons.map(c => new Shape(c))); + shapeMg.BoolOper(holesMg, BoolOpeartionType.Subtract); + for (let s of shapeMg.ShapeList) { + if (isOut && tempOffsetCus.length > 1) + s.Outline.Curve.TempData = { isOut: true }; + offsetCus.push(...this.HandleShape(s, knifRadius, false)); + } + break; + } + } + let vailHoles = []; + for (let i = 0; i < holes.length; i++) { + let h = holes[i]; + //如果加工洞外圈和最外轮廓相交,则去掉 + if (h.Curve.IntersectWith(outline, 0).length > 0) + continue; + let isVail = true; + //若最外轮廓内偏移一个刀半径的曲线 和最内轮廓相交或者被包含,则去掉.且不与洞曲线相等 + if (isOut) { + let outlineOffsetCus = outline.GetOffsetCurves(dir * knifRadius).filter(c => c.IsClose); + let outlineCus = GetOffsetCurves(outline, dir * knifRadius).filter(c => c.IsClose); + let ho = holeOffsetCus[i]; + let maxArea = Math.max(...(outlineOffsetCus.map(c => c.Area))); + for (let j = 0; j < outlineOffsetCus.length; j++) { + let c = outlineOffsetCus[j]; + if (h.Curve.IntersectWith(outlineCus[j], 0).length > 0) { + if (!(equalCurve(ho, c) || isTargetCurInOrOnSourceCur(c, h.Curve))) { + isVail = false; + break; + } + else if (isTargetCurInOrOnSourceCur(h.Curve, c)) { + offsetCus.push(c); + isVail = false; + break; + } + } + else if (ho.Area > maxArea) { + isVail = false; + break; + } + } + } + if (isVail) + vailHoles.push(h); + } + offsetCus.push(...vailHoles.map(h => h.Curve)); + return offsetCus; + } + /**用于测试走刀路径 */ + TestCalcPath(br, isCd = false) { + let modelings = br.BoardModeling; + let allModeling = GetModelingFromCustomDrill(br); + modelings.push(...allModeling.modeling); + if (isCd && userConfig.chaidanOption.useDefaultRad) + modelings.forEach(m => m.knifeRadius = userConfig.chaidanOption.radius); + if (isCd) + arrayRemoveIf(modelings, m => { + let c = m.shape.Outline.Curve; + if (c instanceof Circle && c.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) + return true; + return false; + }); + return this.CalcPath(modelings, br); + } + /** + * 计算走刀路径 + */ + CalcPath(modelings, br) { + let cus = []; + for (let m of modelings) { + cus.push(...this.GetModelFeedPath(br, m)); + } + return cus; + } + GetModelFeedPath(br, m) { + const brThickness = br.Thickness; + let cus = []; + let { shape, thickness, knifeRadius, addLen, addWidth, addDepth } = m; + if (!knifeRadius) + knifeRadius = 3; + if (addDepth) + thickness += addDepth; + shape = shape.Clone(); + shape.Z0(); + this.GrooveAddSize(shape, addLen, addWidth); + this.HandleThoughGroove(br, shape, knifeRadius); + //造型半径和刀半径相等,返回重合点的线 + let outline = shape.Outline.Curve; + if (outline instanceof Circle && equaln(outline.Radius, m.knifeRadius)) + return [new Polyline([{ pt: AsVector2(outline.Center), bul: 0 }, { pt: AsVector2(outline.Center), bul: 0 }])]; + if (thickness >= brThickness) { + //通孔只切一刀 + let dir = GetCurveToInDir(outline); + let paths; + if (outline instanceof Circle) + outline = ConverCircleToPolyline(outline); + paths = outline.GetFeedingToolPath(dir * knifeRadius); + for (let path of paths) { + if (dir < 0) + path.Reverse(); + // 有些走刀会变成一条线,或者某些地方退化成线,这个时候这个判断是错误的 + // if (!path.IsClockWise) + // throw "程序错误:全深网洞加工数据并不为逆时针!"; + } + cus.push(...paths); + } + else { + let offsetCus = this.HandleShape(shape, knifeRadius); + if (offsetCus.length > 1) + cus.push(...OptimizeToolPath(offsetCus, shape, knifeRadius)); + } + return cus; + } + GrooveAddSize(shape, addLen, addWidth) { + shape.Outline.Curve.Position = shape.Outline.Curve.Position.setZ(0); + //若是矩形,应用槽加长 + if (addLen > 0 || addWidth > 0) { + let curveData = IsRect(shape.Outline.Curve); + if (curveData.isRect) { + let box = curveData.box; + let size = curveData.size; + if (size.x > size.y) { + box.max.add(new Vector3(addLen / 2, addWidth / 2)); + box.min.add(new Vector3(-addLen / 2, -addWidth / 2)); + } + else { + box.max.add(new Vector3(addWidth / 2, addLen / 2)); + box.min.add(new Vector3(-addWidth / 2, -addLen / 2)); + } + let pl = new Polyline().RectangleFrom2Pt(box.min, box.max).ApplyMatrix(curveData.OCS); + shape.Outline = Contour.CreateContour(pl); + } + } + } + GetContours(cus, retCus) { + let cons = []; + for (let c of cus) { + if (c.IsClose) { + cons.push(Contour.CreateContour(c)); + } + else { + let expCus = c.Explode(); + let regParse = new RegionParse(expCus); + //分析封闭包围区域 + const parseRoute = (routeSet) => { + for (let routes of routeSet) { + let cs = routes.map(r => r.curve); + let c = Contour.CreateContour(cs, false); + if (c && c.Area > 1e-3) + cons.push(c); + } + }; + parseRoute(regParse.RegionsOutline); + parseRoute(regParse.RegionsInternal); + for (let c of expCus) { + if (!regParse.GetCueveUsed(c)) { + retCus.push(c); + } + } + } + } + return cons; + } + CheckModeling(br) { + let errorIndexs = []; + let modelings = br.BoardModeling; + for (let i = 0; i < modelings.length; i++) { + if (userConfig.chaidanOption.useDefaultRad) + modelings[i].knifeRadius = userConfig.chaidanOption.radius; + let cus = this.GetModelFeedPath(br, modelings[i]); + if (cus.length === 0) + errorIndexs.push(i); + } + return errorIndexs; + } + CheckCustomHole(br) { + let { modeling, sideModeling } = GetModelingFromCustomDrill(br); + let errHoles = []; + for (let m of [...modeling, ...sideModeling]) { + let cu = m.shape.Outline.Curve; + if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) + continue; + if (userConfig.chaidanOption.useDefaultRad) + m.knifeRadius = userConfig.chaidanOption.radius; + let cus = this.GetModelFeedPath(br, m); + if (cus.length === 0) + errHoles.push(m.originEn); + } + return errHoles; + } + HandleThoughGroove(br, shape, knifeRadius) { + let brCon = br.ContourCurve; + let outline = shape.Outline.Curve; + if (outline instanceof Circle) + return; + let cus = outline.Explode(); + MergeCurvelist(cus); + let hasChange = false; + let curveBak; + for (let i = 0; i < cus.length; i++) { + let c = cus[i]; + if (c instanceof Line) { + let mp = (curveBak !== null && curveBak !== void 0 ? curveBak : c).Midpoint; + curveBak = undefined; + if (brCon.PtOnCurve(mp)) { + hasChange = true; + let cs = c.GetOffsetCurves(knifeRadius); + cus[i] = cs[0]; + let fline = cus[FixIndex$1(i - 1, cus.length)]; + let isAddLine = false; + if (fline instanceof Line) { + let intPts = fline.IntersectWith2(cs[0], 3); + if (intPts.length === 0) { + console.error("未知错误情况"); + return; + } + if (intPts[0].thisParam >= 0 && intPts[0].argParam <= 1) { + fline.EndPoint = intPts[0].pt; + cs[0].StartPoint = intPts[0].pt; + } + else { + isAddLine = true; + } + } + else { + isAddLine = true; + } + if (isAddLine) { + let newLine = new Line(fline.EndPoint, cs[0].StartPoint); + if (i === 0) { + cus.push(newLine); + } + else { + cus.splice(i, 0, newLine); + i++; + } + } + let backLine = cus[FixIndex$1(i + 1, cus.length)]; + isAddLine = false; + if (backLine instanceof Line) { + let intPts = backLine.IntersectWith2(cs[0], 3); + if (intPts.length === 0) { + return; + } + if (intPts[0].thisParam <= 1 && intPts[0].argParam >= 0) { + curveBak = backLine.Clone(); + backLine.StartPoint = intPts[0].pt; + cs[0].EndPoint = intPts[0].pt; + } + else { + isAddLine = true; + } + } + else { + isAddLine = true; + } + if (isAddLine) { + let newLine = new Line(cs[0].EndPoint, backLine.StartPoint); + if (i + 1 === cus.length) { + cus.unshift(newLine); + } + else { + cus.splice(i + 1, 0, newLine); + i++; + } + } + } + } + } + if (hasChange) { + let con = Contour.CreateContour(Polyline.Combine(cus)); + if (con) + shape.Outline = con; + else + console.error("错误"); + } + } +} +function GetModelingFromCustomDrill(br) { + let normal = br.Normal; + let outline = GetSealedBoardContour(br, true); + let modeling = []; + let sideModeling = []; + const holes = []; + let bbox = br.BoundingBoxInOCS; + let holeBoxMap = new WeakMap(); + for (let [, idss] of br.DrillList) { + for (let ids of idss) { + for (let id of ids) { + if ((id === null || id === void 0 ? void 0 : id.Object) && !id.Object.IsErase && id.Object instanceof ExtrudeHole && id.Object.isHole) { + if (!(id.Object.ContourCurve instanceof Circle)) { + let en = id.Object; + let enBox = en.GetBoundingBoxInMtx(br.OCSInv); + holeBoxMap.set(en, enBox); + if (enBox.clone().intersect(bbox).isSolid(0.1)) + holes.push(id.Object); + } + } + else + break; + } + } + } + for (let en of holes) { + let box = holeBoxMap.get(en); + let max = box.max; + let min = box.min; + let dir; + let shape = en.Shape; + let diff = br.OCSInv.multiply(en.OCS); + shape.ApplyMatrix(diff); + let thickness; + if (isParallelTo(normal, en.Normal)) { + if (min.z > br.Thickness - 1e-6) + continue; + //在板件的世界,0.01的误差应该不能被看出来,所以我们允许0.01的容差(这样应该是没问题的) + //也避免了一些二维转三维出现的缝隙排钻不能被拆解的问题 + if (max.z >= br.Thickness - 1e-2) //较大的容差(0.01) + { + dir = FaceDirection.Front; + shape.Position = shape.Position.setZ(min.z); + thickness = br.Thickness - min.z; + } + else if (min.z < 1e-2) //较大的容差 + { + dir = FaceDirection.Back; + thickness = max.z; + } + else + continue; + if (thickness > +1e-6 && isTargetCurInOrOnSourceCur(outline, shape.Outline.Curve.Clone().Z0())) { + modeling.push({ + shape, + thickness, + dir, + knifeRadius: en.KnifeRadius, + addLen: 0, + originEn: en, + }); + } + } + else { + if (min.z <= 0 || max.z >= br.Thickness) + continue; + let spt = en.Position.applyMatrix4(br.OCSInv).setZ(0); + if (outline.PtOnCurve(spt)) + continue; + let line = new Line(spt, en.Position.add(en.Normal.multiplyScalar(en.Height)).applyMatrix4(br.OCSInv).setZ(0)); + let pt = outline.IntersectWith(line, 0)[0]; + if (!pt) + continue; + let index = Math.floor(outline.GetParamAtPoint(pt)); + let thickness = line.StartPoint.distanceTo(pt); + let shape = en.Shape.ApplyMatrix(en.OCS).ApplyMatrix(br.OCSInv); + let vec = line.GetFistDeriv(0).normalize().multiplyScalar(thickness); + shape.Position = shape.Position.add(vec); + let cu = outline.GetCurveAtIndex(index); + shape.ApplyMatrix(new Matrix4().getInverse(GetSideFaceMtx(cu))); + sideModeling.push({ + shape, + thickness, + dir: index, + knifeRadius: en.KnifeRadius, + addLen: 0, + originEn: en, + }); + } + } + return { modeling, sideModeling }; +} + +const ReportFunctionList = []; +function SendReport(msg) { + for (let f of ReportFunctionList) + f(msg); +} + +const ShowObjectsFunctionList = []; +function ShowSelectObjects(ens) { + for (let f of ShowObjectsFunctionList) + f(ens); +} + +function IsDev() { + return window.location.hostname === "localhost"; +} + +var DrillingFace; +(function (DrillingFace) { + //正反面时,使用Front和Back + DrillingFace[DrillingFace["Front"] = 0] = "Front"; + DrillingFace[DrillingFace["Back"] = 1] = "Back"; +})(DrillingFace || (DrillingFace = {})); +var Production; +(function (Production) { + /**获取板件拆单数据 */ + function GetBoardSplitOrderData(br) { + let sealedContour = GetSealedBoardContour(br, true); + if (!sealedContour || equaln(sealedContour.Area, 0)) { + Toaster({ + message: br.Name + " 轮廓错误,可能存在轮廓自交,请检查后重新拆单", + timeout: 8000, + intent: Intent.DANGER, + }); + Report([br], br.Name + " 轮廓错误"); + return undefined; + } + let outline = GetSealedBoardContour(br, false); + if (!outline || equaln(outline.Area, 0)) { + Toaster({ + message: br.Name + "扣除封边轮廓有误,请检查后重新拆单", + timeout: 8000, + intent: Intent.DANGER, + }); + Report([br], br.Name + "扣除封边轮廓有误"); + return; + } + let offsetTanslation = outline.BoundingBox.min; + outline.Position = outline.Position.sub(offsetTanslation); + let outlinePtsBul = ConverToPolylineAndSplitArc(outline); + //外轮廓去掉最后的闭合点 + outlinePtsBul.pts.pop(); + outlinePtsBul.buls.pop(); + let size = outline.BoundingBox.getSize(new Vector3); + //不扣除封边的轮廓信息 + let originOutlinePtsBul = ConverToPolylineAndSplitArc(sealedContour); + originOutlinePtsBul.pts.pop(); + originOutlinePtsBul.buls.pop(); + let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation); + let boardContour; + if (GetSpiteSize(br)) + boardContour = ConverToPolylineAndSplitArc(br.ContourCurve); + return { + info: GetBoardInfo(br, size), + originOutlin: originOutlinePtsBul, + outline: outlinePtsBul, + sealing: GetBoardSealingData(br), + modeling, + holes: GetBoardHolesData(br, offsetTanslation, sealedContour), + sideModeling, + offsetTanslation, + metalsData: GetBoardMetals(br), + boardContour, + originModelingData: GetOriginBoardModelingData(br), + modeling2D: Get2DModeing(br, offsetTanslation), + modeling3D: Get3DModeing(br, offsetTanslation), + }; + } + Production.GetBoardSplitOrderData = GetBoardSplitOrderData; + function GetBoardInfo(br, size) { + let data = br.BoardProcessOption; + let spliteSize = Production.GetSpiteSize(br); + let isRect = !!spliteSize || !br.IsSpecialShape; + return { + id: br.Id.Index, + name: br.Name, + [EBoardKeyList.RoomName]: data[EBoardKeyList.RoomName], + [EBoardKeyList.CabinetName]: data[EBoardKeyList.CabinetName], + [EBoardKeyList.Mat]: data[EBoardKeyList.Mat], + [EBoardKeyList.BrMat]: data[EBoardKeyList.BrMat], + [EBoardKeyList.Color]: data[EBoardKeyList.Color], + [EBoardKeyList.Lines]: data[EBoardKeyList.Lines], + [EBoardKeyList.DrillType]: data[EBoardKeyList.DrillType], + spliteHeight: spliteSize ? spliteSize.spliteHeight.toString() : "", + spliteThickness: spliteSize ? spliteSize.spliteThickness.toString() : "", + spliteWidth: spliteSize ? spliteSize.spliteWidth.toString() : "", + isRect, + remarks: data.remarks.slice(), + kaiLiaoWidth: size.x, + kaiLiaoHeight: size.y, + openDir: br.OpenDir, + }; + } + Production.GetBoardInfo = GetBoardInfo; + /** + * 转换成多段线并且将圆弧打断(大于1/4的话) + */ + function ConverToPolylineAndSplitArc(cu, isOutline = true, isSplite = true) { + let ptsBuls; + if (cu instanceof Circle) { + let pl = ConverCircleToPolyline(cu); + ptsBuls = pl.PtsBuls; + } + else { + if (isOutline && cu.IsClose && cu.Normal.z * cu.Area2 < 0) + cu.Reverse(); + if (isSplite) + ptsBuls = SplitePolylineAtArc(cu); + else + ptsBuls = cu.PtsBuls; + } + let ocs = cu.OCS; + if (!equaln(ocs.elements[0], 1) + || !equaln(ocs.elements[9], 0) + || !equaln(ocs.elements[10], 0)) { + for (let i = 0; i < ptsBuls.pts.length; i++) { + Vector2ApplyMatrix4(ocs, ptsBuls.pts[i]); + ptsBuls.buls[i] *= cu.Normal.z; + } + } + return ptsBuls; + } + Production.ConverToPolylineAndSplitArc = ConverToPolylineAndSplitArc; + function ConverCircleToPolyline(cir) { + let arcs = cir.GetSplitCurves([0, 0.25, 0.5, 0.75]); + let pl = new Polyline(); + pl.OCS = cir.OCS; + for (let arc of arcs) + pl.Join(arc); + return pl; + } + Production.ConverCircleToPolyline = ConverCircleToPolyline; + const SPLITBUL = Math.tan(Math.PI / 8); + function GetSpliteCount(allAngle) { + return Math.ceil(Math.abs(allAngle) / Math.PI * 2); + } + /** 打断多段线超过1/4圆的圆弧*/ + function SplitePolylineAtArc(cu, isSplite = true) { + let ptsBuls = cu.PtsBuls; + let ocsInv = cu.OCSInv; + let result = { pts: [], buls: [] }; + if (ptsBuls.pts.length === 0) + return result; + for (let i = 0; i < ptsBuls.buls.length - 1; i++) { + let bul = ptsBuls.buls[i]; + if (Math.abs(bul) > SPLITBUL + 1e-8 && isSplite) { + let allAngle = Math.atan(bul) * 4; + let splitCount = GetSpliteCount(allAngle); + let arc = cu.GetCurveAtIndex(i); + let paramDiv = 1 / splitCount; + let newBul = Math.tan((allAngle / splitCount) / 4); + for (let i = 0; i < splitCount; i++) { + let param = i * paramDiv; + let p = arc.GetPointAtParam(param).applyMatrix4(ocsInv); + let p2 = AsVector2(p); + //暂时不处理0长度段 + { + result.pts.push(p2); + result.buls.push(newBul); + } + } + } + else { + //暂时不处理0长度段 + { + result.pts.push(ptsBuls.pts[i]); + result.buls.push(ptsBuls.buls[i]); + } + } + } + result.pts.push(arrayLast(ptsBuls.pts)); + result.buls.push(arrayLast(ptsBuls.buls)); + //测试是否存在无效的边(0长度边) + // for (let i = 1; i < result.pts.length; i++) + // { + // if (equalv2(result.pts[i], result.pts[i - 1], 0.01)) + // alert("存在无效的边"); + // } + return result; + } + Production.SplitePolylineAtArc = SplitePolylineAtArc; + function SplitetArc(arc, hasEnd = false) { + let result = { pts: [], buls: [] }; + let bul = arc.Bul; + if (Math.abs(bul) > SPLITBUL + 1e-8) { + let allAngle = Math.atan(bul) * 4; + let splitCount = GetSpliteCount(allAngle); + let paramDiv = 1 / splitCount; + let newBul = Math.tan((allAngle / splitCount) / 4); + for (let i = 0; i < splitCount; i++) { + let param = i * paramDiv; + let p = arc.GetPointAtParam(param); + result.pts.push(p); + result.buls.push(newBul); + } + } + else { + result.pts.push(arc.StartPoint); + result.buls.push(bul); + } + if (hasEnd) { + result.pts.push(arc.EndPoint); + result.buls.push(0); + } + return result; + } + Production.SplitetArc = SplitetArc; + /** + * 获取封边数据 + * 封边数据未统一逆时针顺序,用于拆单 + * */ + function GetBoardSealingData(br) { + let sealCus = GetBoardSealingCurves(br); + let highSeal = GetBoardHighSeal(br, sealCus); + let sealData = []; + for (let i = 0; i < sealCus.length; i++) { + let sealCu = sealCus[i]; + let data = highSeal[i]; + let cus = []; + if (sealCu instanceof Polyline) + cus.push(...sealCu.Explode()); + else + cus.push(sealCu); + for (let cu of cus) { + if (cu instanceof Line) { + sealData.push(Object.assign({}, data, { length: cu.Length })); + } + else if (cu instanceof Arc) { + let splitCount = GetSpliteCount(cu.AllAngle); + let len = 2 * Math.PI * cu.Radius / 4; + for (let i = 0; i < splitCount; i++) { + let arcLen = i !== splitCount - 1 ? len : cu.Length - (splitCount - 1) * len; + if (!equaln(arcLen, 0)) + sealData.push(Object.assign({}, data, { length: arcLen })); + } + } + else if (cu instanceof Circle) { + let length = 2 * Math.PI * cu.Radius / 4; + sealData.push(...Array.from({ length: 4 }, () => { + return { ...data, length }; + })); + } + } + } + if (br.ContourCurve instanceof Polyline && br.ContourCurve.Area2 < 0) + sealData.reverse(); + return sealData; + } + Production.GetBoardSealingData = GetBoardSealingData; + function GetMetalTotalEntitys(md, isHole = false, filter) { + let holes = []; + if (isHole && !md.HardwareOption.isHole) + return []; + for (let e of md.Entitys) { + if (e instanceof HardwareCompositeEntity) { + if (!isHole || md.HardwareOption.isHole) + holes.push(...GetMetalTotalEntitys(e, isHole, filter).map(h => h.ApplyMatrix(md.OCS))); + } + else { + if (!filter || filter(e)) { + holes.push(e.Clone().ApplyMatrix(md.OCS)); + } + } + } + return holes; + } + Production.GetMetalTotalEntitys = GetMetalTotalEntitys; + function GetOriginBoardModelingData(br) { + const getModelings = (ms) => { + var _a; + let data = []; + for (let m of ms) { + let cu = m.shape.Outline.Curve; + if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) + continue; + if (userConfig.chaidanOption.useDefaultRad) + m.knifeRadius = userConfig.chaidanOption.radius; + data.push({ + outline: ConverToPolylineAndSplitArc(cu.Clone(), false, false), + holes: m.shape.Holes.map(h => ConverToPolylineAndSplitArc(h.Curve.Clone(), false, false)), + thickness: m.thickness + ((_a = m.addDepth) !== null && _a !== void 0 ? _a : 0), + dir: m.dir, + knifeRadius: m.knifeRadius, + }); + } + return data; + }; + let allModeling = GetModelingFromCustomDrill(br); + let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling]); + let sideModeling = getModelings(allModeling.sideModeling); + return { modeling, sideModeling }; + } + Production.GetOriginBoardModelingData = GetOriginBoardModelingData; + function GetBoardModelingData(br, offsetTanslation) { + const tool = FeedingToolPath.GetInstance(); + const tMtx = MoveMatrix(offsetTanslation.clone().negate()); + const getModelings = (ms, isSide) => { + var _a; + let data = []; + for (let m of ms) { + let cu = m.shape.Outline.Curve; + if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) + continue; + if (userConfig.chaidanOption.useDefaultRad) + m.knifeRadius = userConfig.chaidanOption.radius; + let paths = tool.GetModelFeedPath(br, m); + if (!isSide) + paths.forEach(path => path.ApplyMatrix(tMtx)); + let feeding = paths.map((c) => ConverToPolylineAndSplitArc(c, false)); + if (feeding.length > 0) + data.push({ + feeding, + thickness: m.thickness + ((_a = m.addDepth) !== null && _a !== void 0 ? _a : 0), + dir: m.dir, + knifeRadius: m.knifeRadius, + }); + else { + Toaster({ + message: "板件有造型或者自定义排钻无法加工,请运行造型检测命令确认", + timeout: 5000, + intent: Intent.DANGER, + key: "造型加工错误" + }); + } + } + return data; + }; + let allModeling = GetModelingFromCustomDrill(br); + let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling], false).filter(f => f.feeding.length > 0); + let sideModeling = getModelings(allModeling.sideModeling, true).filter(f => f.feeding.length > 0); + return { modeling, sideModeling }; + } + Production.GetBoardModelingData = GetBoardModelingData; + /**获取板件的轮廓 + *有拆单尺寸返回矩形 + *用于拆单的轮廓统一逆时针 */ + function GetSpliteOutline(br, isSplite) { + let con = GetSpliteOutlineBySpliteSize(br); + if (con) + return con; + con = br.ContourCurve; + if (con instanceof Circle) { + return con; + } + let cus = con.Explode(); + MergeCurvelist(cus); + let pl = Polyline.FastCombine(cus, LINK_FUZZ); + if (pl && isSplite && pl.Area2 < 0) + pl.Reverse(); + return pl; + } + Production.GetSpliteOutline = GetSpliteOutline; + function GetSpiteSize(br) { + let param = { L: br.Height, W: br.Width, H: br.Thickness }; + let spliteHeight = safeEval(br.BoardProcessOption.spliteHeight, param); + let spliteWidth = safeEval(br.BoardProcessOption.spliteWidth, param); + let spliteThickness = safeEval(br.BoardProcessOption.spliteThickness, param); + if (spliteHeight && spliteWidth && spliteThickness) + return { + spliteHeight, spliteWidth, spliteThickness + }; + else + return; + } + Production.GetSpiteSize = GetSpiteSize; + function GetSpliteOutlineBySpliteSize(br) { + let size = GetSpiteSize(br); + if (size) + return new Polyline().RectangleFrom2Pt(new Vector3, new Vector3(size.spliteWidth, size.spliteHeight)); + return null; + } + Production.GetSpliteOutlineBySpliteSize = GetSpliteOutlineBySpliteSize; + /**孔信息,侧孔的z 均为 从上到下距离 */ + function GetBoardHolesData(br, offsetTanslation, sealedContour) { + let data = { + frontBackHoles: [], + sideHoles: [] + }; + let brNormal = br.Normal; + // 性能优化的解析板件网洞类 + // new ParseBoardHoleData(br, offsetTanslation, sealedContour); + for (let [, driss] of br.DrillList) { + for (let dris of driss) { + for (let dId of dris) { + if (!dId || dId.IsErase) + continue; + let d = dId.Object; + if (d instanceof ExtrudeHole) + ParseExtrudeHoles(d, br, offsetTanslation, data, sealedContour); + else + ParseCylHoles(d, br, offsetTanslation, data, sealedContour); + } + } + } + if (br.RelativeHardware) { + for (let dId of br.RelativeHardware) { + if (dId.IsErase) + continue; + let d = dId.Object; + let holes = []; + if (d instanceof HardwareCompositeEntity) { + holes.push(...GetMetalTotalEntitys(d, true, (e) => e instanceof Hole)); + } + for (let h of holes) { + if (h instanceof ExtrudeHole) + ParseExtrudeHoles(h, br, offsetTanslation, data, sealedContour, true); + else + ParseCylHoles(h, br, offsetTanslation, data, sealedContour); + } + } + } + let modelings = br.BoardModeling; + for (let nid of br.LayerNails) { + if (!nid || !nid.Object || nid.IsErase) + continue; + let nail = nid.Object; + if (!isParallelTo(nail.Normal, brNormal)) + continue; + let sp = nail.Position.applyMatrix4(br.OCSInv); + let nor = nail.Normal.multiplyScalar(nail.Height); + let ep = nail.Position.add(nor).applyMatrix4(br.OCSInv); + let [z0, z1] = sp.z < ep.z ? [sp.z, ep.z] : [ep.z, sp.z]; + if (Math.max(z0, 0) < Math.min(z1, br.Thickness) - 1e-6 + && br.ContourCurve.PtInCurve(sp.setZ(0)) + && modelings.every(m => !m.shape.Outline.Curve.PtInCurve(sp))) { + let face = !equalv3(nail.Normal, brNormal, 1e-3) ? DrillingFace.Front : DrillingFace.Back; + let depth = Math.min(z1, br.Thickness) - Math.max(z0, 0); + data.frontBackHoles.push({ + type: nail.Type, + position: sp.sub(offsetTanslation), + radius: nail.Radius, + depth, + face, + }); + } + } + for (let m of modelings) { + let cu = m.shape.Outline.Curve; + if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6) { + let center = cu.Center.setZ(0).sub(offsetTanslation); + data.frontBackHoles.push({ + type: GangDrillType.Pxl, + position: center, + radius: cu.Radius, + depth: m.thickness, + face: m.dir + }); + } + } + return data; + } + Production.GetBoardHolesData = GetBoardHolesData; + /**拆单那边需要把侧孔 z 坐标转换为从上到下 */ + function InvertPosition(pos, thickness) { + pos.z = thickness - pos.z; + } + /**分析常规排钻 */ + function ParseCylHoles(d, br, offsetTanslation, data, outline) { + let processData = br.BoardProcessOption; + let brNormal = br.Normal; + let roMat = new Matrix4().extractRotation(br.OCSInv); + let position = d.Position.applyMatrix4(br.OCSInv); + let holes = data.frontBackHoles; + let face; + let isPush = false; + let endPt; + let depth = d.Height; + let diffMat = br.OCSInv.multiply(d.OCS); + let x = new Vector3().setFromMatrixColumn(diffMat, 0); + let angle = angleTo(XAxis, x); + if (d.Type === GangDrillType.Pxl || d.Type === GangDrillType.WoodPXL) { + if (isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz)) { + if (!IsBetweenA2B(position.x, -d.Radius, br.Width + d.Radius, 1e-6) + || !IsBetweenA2B(position.y, -d.Radius, br.Height + d.Radius, 1e-6) + || !IsBetweenA2B(position.z, 0, br.Thickness) + || !outline.PtInCurve(position.clone().setZ(0))) + return; + position.sub(offsetTanslation); + face = processData[EBoardKeyList.BigHole]; + isPush = true; + } + } + else if (d.Type === GangDrillType.Ljg || d.Type === GangDrillType.Wood) { + if (!isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz)) { + let z = position.z; + if (!IsBetweenA2B(z, -d.Radius, br.Thickness + d.Radius, 1e-6)) + return; + let line = new Line(position.clone().setZ(0), position.clone().setZ(0).add(d.Normal.multiplyScalar(d.Height).applyMatrix4(roMat))); + let pt = outline.IntersectWith(line, 0)[0]; + if (!pt) + return; + position = pt.clone().setZ(z); + for (let p of [line.StartPoint, line.EndPoint]) { + if (outline.PtInCurve(p)) { + endPt = p.setZ(z); + break; + } + } + if (!endPt) { + console.warn("排钻位置有问题"); + return; + } + holes = data.sideHoles; + face = Math.floor(outline.GetParamAtPoint(pt)); + isPush = true; + depth = position.distanceTo(endPt); + angle = undefined; + InvertPosition(position, br.Thickness); + InvertPosition(endPt, br.Thickness); + } + else if (d.Type === GangDrillType.Wood) { + if (!outline.PtInCurve(position.clone().setZ(0))) + return; + face = position.z > 0 ? FaceDirection.Front : FaceDirection.Back; + holes = data.frontBackHoles; + if (position.z > 0) { + let z1 = position.z - d.Height; + if (z1 > 0 && z1 < br.Thickness) { + depth = br.Thickness - z1; + isPush = true; + } + } + else { + let z1 = position.z + d.Height; + if (z1 > 0 && z1 < br.Thickness) { + depth = z1; + isPush = true; + } + } + position.sub(offsetTanslation); + } + } + else { + if (isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz)) { + let nor = d.Normal.applyMatrix4(roMat); + let pos2 = position.clone().add(nor.multiplyScalar(depth)); + if (!IsBetweenA2B(position.x, -d.Radius, br.Width + d.Radius, CanDrawHoleFuzz) + || !IsBetweenA2B(position.y, -d.Radius, br.Height + d.Radius, CanDrawHoleFuzz) + || !isIntersect2(0, br.Thickness, position.z, pos2.z, -CanDrawHoleFuzz) + || !outline.PtInCurve(position.clone().setZ(0))) + return; + position.sub(offsetTanslation); + holes = data.frontBackHoles; + face = !equalv3(d.Normal, brNormal, 1e-3) ? 0 : 1; + isPush = true; + } + } + isPush && holes.push({ + type: d.Type, + position, + radius: d.Radius, + depth, + face, + endPt, + angle + }); + } + /**分析自定义圆柱排钻 */ + function ParseExtrudeHoles(d, br, offsetTanslation, data, outline, isCheckGroove = false) { + if (!d.isHole) + return; + let brNormal = br.Normal; + let cir = d.ContourCurve; + if (cir instanceof Circle) { + let diffMtx = br.OCSInv.multiply(d.OCS); + let nor = d.Normal; + let sp = cir.Center.applyMatrix4(diffMtx); + let ep = cir.Center.add(new Vector3(0, 0, d.Height)).applyMatrix4(diffMtx); + let x = new Vector3().setFromMatrixColumn(diffMtx, 0); + //#I2DPFO 在挖穿造型内的五金不加工 + const grooves = br.Grooves.filter(g => equaln(g.Thickness, br.Thickness)); + const groovesOutlines = isCheckGroove ? grooves.map(g => g.ContourCurve.Clone().ApplyMatrix(g.OCS).ApplyMatrix(br.OCSInv).Z0()) : []; + if (isParallelTo(nor, brNormal, CanDrawHoleFuzz)) { + let z0 = Math.min(sp.z, ep.z); + let z1 = Math.max(sp.z, ep.z); + let p = sp.clone().setZ(0).sub(offsetTanslation); + if (Math.max(z0, 0) < Math.min(z1, br.Thickness) - CanDrawHoleFuzz && outline.PtInCurve(p) && groovesOutlines.every(g => !g.PtInCurve(p))) { + let depth = z0 < CanDrawHoleFuzz ? z1 : br.Thickness - z0; + let angle = angleTo(XAxis, x); + if (equaln(angle, Math.PI)) + angle = 0; + if (depth > CanDrawHoleFuzz) + data.frontBackHoles.push({ + type: d.isThrough ? GangDrillType.TK : GangDrillType.Ymj, + position: z0 < CanDrawHoleFuzz ? p : p.setZ(br.Thickness), + radius: cir.Radius, + depth, + face: z0 < CanDrawHoleFuzz ? DrillingFace.Back : DrillingFace.Front, + angle: angle, + }); + } + } + else { + let oldZ = sp.z; + let [minX, maxX] = sp.x < ep.x ? [sp.x, ep.x] : [ep.x, sp.x]; + let [minY, maxY] = sp.y < ep.y ? [sp.y, ep.y] : [ep.y, sp.y]; + if (sp.z > -cir.Radius + && sp.z < br.Thickness + cir.Radius + && Math.max(minX, 0) < Math.min(br.Width, maxX) + 1e-6 + && Math.max(minY, 0) < Math.min(br.Height, maxY) + 1e-6) { + sp.setZ(0); + ep.setZ(0); + let line = new Line(sp, ep); + let pt = outline.IntersectWith(line, 0)[0]; + if (!pt) { + console.error("排钻嵌在板件内部"); + return; + } + let position = pt.clone().setZ(oldZ); + let endPt; + let face = Math.floor(outline.GetParamAtPoint(pt)); + for (let p of [line.StartPoint, line.EndPoint]) { + if (!equalv3(p.setZ(oldZ), position) && outline.PtInCurve(p)) { + endPt = p.setZ(oldZ); + break; + } + } + if (!endPt) + return; + let depth = position.distanceTo(endPt); + if (equaln(depth, 0, CanDrawHoleFuzz)) + return; + InvertPosition(position, br.Thickness); + InvertPosition(endPt, br.Thickness); + data.sideHoles.push({ + type: GangDrillType.Ljg, + endPt, + position, + radius: cir.Radius, + depth, + face, + }); + } + } + } + } + function GetBoardMetals(br) { + let mids = br.RelativeHardware; + let metalsData = { + metals: 0, + comp: 0 + }; + for (let id of mids) { + if (!id || id.IsErase) + continue; + let metals = id.Object; + if (!metals.HardwareOption) + continue; + if (metals.HardwareOption.type === EMetalsType.Metals) { + metalsData.metals++; + } + else { + metalsData.comp++; + } + } + return metalsData; + } + function GetHardwareCompositeData(en) { + let size = en.BoundingBoxInOCS.getSize(new Vector3); + let data = { ...en.HardwareOption }; + const actualVal = safeEval(data.actualExpr, { L: size.x, W: size.y, H: size.z }); + data.actualExpr = actualVal ? actualVal.toString() : data.actualExpr; + data.spec = ParseExpr(data.spec, { L: size.x, W: size.y, H: size.z }); + data.count = (safeEval(data.count, { L: size.x, W: size.y, H: size.z }) || 0).toString(); + let metalData = { + metalsOption: data, + dataList: en.DataList, + children: [], + size: size + }; + if (en instanceof HardwareCompositeEntity && (en.HardwareOption.isSplite || en.HardwareOption.isSplitePrice)) { + if (en.Entitys.every(e => !(e instanceof HardwareCompositeEntity || e instanceof HardwareTopline))) + return metalData; + for (let e of en.Entitys) { + if (e instanceof HardwareCompositeEntity) { + let d = GetHardwareCompositeData(e); + metalData.children.push(d); + } + else if (e instanceof HardwareTopline) { + metalData.children.push(...GetHardwareToplineData(e)); + } + } + } + return metalData; + } + Production.GetHardwareCompositeData = GetHardwareCompositeData; + function GetHardwareToplineData(en) { + let data = { ...en.HardwareOption }; + let datas = []; + let map = new Map(); + let addLen = en.HardwareOption.addLen; + let cus = en.Segmentations; + let size = en.BoundingBoxInOCS.getSize(new Vector3); + for (let cu of cus) { + let len = parseFloat(FixedNotZero(cu.Length, 2)); + if (map.has(len)) { + map.set(len, map.get(len) + 1); + } + else { + map.set(len, 1); + } + } + for (let [len, count] of map) { + let totalLength = parseFloat(FixedNotZero(len + parseFloat(addLen), 2)); + let width = parseFloat(FixedNotZero(size.y, 2)); + let height = parseFloat(FixedNotZero(size.z, 2)); + for (let i = 0; i < count; i++) { + let d = { ...en.HardwareOption }; + const actualVal = safeEval(data.actualExpr, { L: totalLength, W: width, H: height }); + d.actualExpr = actualVal ? actualVal.toString() : d.actualExpr; + d.spec = ParseExpr(data.spec, { L: totalLength, W: width, H: height }); + datas.push({ + metalsOption: d, + dataList: en.DataList, + length: totalLength, + children: [], + size + }); + } + } + return datas; + } + Production.GetHardwareToplineData = GetHardwareToplineData; + /**获取排钻数量 */ + function GetTotalDrillCount(brs) { + return lookOverBoardInfosTool.GetCount(brs); + } + Production.GetTotalDrillCount = GetTotalDrillCount; + function GetCabSize(brList) { + let brMap = new Map(); + //根据柜名房名分类 + for (let b of brList) { + let k = b.BoardProcessOption[EBoardKeyList.RoomName] + '-' + b.BoardProcessOption[EBoardKeyList.CabinetName]; + if (brMap.has(k)) + brMap.get(k).push(b); + else + brMap.set(k, [b]); + } + let sizeData = new Map(); + for (let [k, brs] of brMap) { + let ocsInv = brs[0].SpaceOCSInv; + let box = new Box3(); + let size = new Vector3(); + for (let b of brs) { + sizeData.set(b, size); + box.union(b.GetBoundingBoxInMtx(ocsInv)); + } + box.getSize(size); + } + return sizeData; + } + Production.GetCabSize = GetCabSize; + function Data2Polyline(data, isClose = true) { + let pl = new Polyline(data.pts.map((p, i) => ({ pt: new Vector2(p.x, p.y), bul: data.buls[i] }))); + if (isClose) + pl.CloseMark = true; + return pl; + } + Production.Data2Polyline = Data2Polyline; + function Report(ens, msg) { + if (IsDev()) + return; + ShowSelectObjects(ens); + SendReport(msg); + } + Production.Report = Report; + function Get2DModeing(br, offset) { + let res = []; + let tmtx = MoveMatrix(offset.clone().negate()); + for (let m of br.Modeling2D) { + let path = m.path.Clone().ApplyMatrix(tmtx); + res.push({ + path: ConverToPolylineAndSplitArc(path), + dir: m.dir, + items: m.items.map(item => ({ ...item })) + }); + } + return res; + } + Production.Get2DModeing = Get2DModeing; + function Get3DModeing(br, offset) { + let res = []; + for (let m of br.Modeling3D) { + let d = { + path: { pts: [], buls: [] }, + knife: { ...m.knife }, + dir: m.dir + }; + for (let i = 0; i < m.path.length - 1; i++) { + let d1 = m.path[i]; + let d2 = m.path[i + 1]; + if (equaln(d1.bul, 0)) { + let p = d1.pt.clone(); + InvertPosition(p, br.Thickness); + p.sub(offset); + d.path.pts.push(p); + d.path.buls.push(0); + } + else { + let arc = new Arc().ParseFromBul(d1.pt.clone().sub(offset), d2.pt.clone().sub(offset), d1.bul); + let r = SplitetArc(arc, false); + r.pts.forEach(p => InvertPosition(p, br.Thickness)); + d.path.pts.push(...r.pts); + d.path.buls.push(...r.buls); + } + if (i === m.path.length - 2) { + let p = d2.pt.clone(); + InvertPosition(p, br.Thickness); + p.sub(offset); + d.path.pts.push(p); + d.path.buls.push(0); + } + } + res.push(d); + } + return res; + } + Production.Get3DModeing = Get3DModeing; +})(Production || (Production = {})); + +/** + *曲线列表分段 + * @l-arc-l,l-arc-arc-l,l-arc-l-arc-l.... + */ +function ParagraphCulist(cus) { + let newCulist = []; + let usedCu = new WeakSet(); + //归类曲线,返回归类是否成功 + const paragraph = (cu, originCu, cuList, isBack) => { + const cuIsLine = cu instanceof Line; + const originCuIsLine = originCu instanceof Line; + if (usedCu.has(cu)) + return false; + if (originCuIsLine !== cuIsLine) { + if (originCuIsLine) { + if (isBack) { + if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0))) + return false; + } + else { + if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(1))) + return false; + } + } + if (cuIsLine) { + if (isBack) { + if (!isParallelTo(originCu.GetFistDeriv(1), cu.GetFistDeriv(0))) + return false; + } + else { + if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0))) + return false; + } + } + } + else if (cuIsLine) { + //共线且相连的直线分为一组 #I11T1Z + if (!isParallelTo(cu.GetFistDeriv(0).normalize(), originCu.GetFistDeriv(0).normalize())) + return false; + let pts = [originCu.StartPoint, originCu.EndPoint]; + let pts2 = [cu.StartPoint, cu.EndPoint]; + if (pts.every(p => pts2.every(p2 => !equalv3(p, p2, 1e-6)))) + return false; + } + if (isBack) + cuList.push(cu); + else + cuList.unshift(cu); + usedCu.add(cu); + return true; + }; + let caclCus = cus.slice().filter(c => !equaln(c.Length, 0)); + while (caclCus.length > 0) { + let originCu = caclCus.shift(); + if (usedCu.has(originCu)) + continue; + let originCus = [originCu]; + usedCu.add(originCu); + //往后搜索 + for (let i = 0; i < caclCus.length; i++) { + if (!paragraph(caclCus[i], originCu, originCus, true)) + break; + originCu = caclCus[i]; + } + //只有第一条才需要往前搜索 + if (caclCus.length === cus.length - 1) { + originCu = originCus[0]; + //往前搜索 + for (let i = caclCus.length - 1; i >= 0; i--) { + if (!paragraph(caclCus[i], originCu, originCus, false)) + break; + originCu = caclCus[i]; + } + } + newCulist.push(originCus); + } + cus.length = 0; + //同组多条曲线连接为多段线 + for (let g of newCulist) { + if (g.length === 1) + cus.push(g[0]); + else { + let pl = new Polyline(); + for (let c of g) { + pl.Join(c); + } + cus.push(pl); + } + } +} +/** + *计算封边 + */ +function CalcEdgeSealing(cus) { + if (cus.length <= 1) + return; + let oldLine; + let firstLine = cus[0].Clone(); + let oldLen = cus.length; + for (let i = 0; i < cus.length; i++) { + let frontLine = cus[i]; + let laterIndex = FixIndex(i + 1, cus); + let laterLine = cus[laterIndex]; + if (!frontLine || !laterLine || cus.length < 2) { + return false; + } + let dist = frontLine.EndPoint.distanceToSquared(laterLine.StartPoint); + if (dist < LINK_FUZZ ** 2) { + if (frontLine instanceof Line && laterLine instanceof Line) { + if (frontLine.PtOnCurve(laterLine.EndPoint)) { + cus.splice(laterIndex, 1); + if (laterIndex === 0) + firstLine = cus[0].Clone(); + i -= 2; + } + else if (laterLine.PtOnCurve(frontLine.StartPoint)) { + cus.splice(i, 1); + i -= 2; + if (i < -1) + i = -1; + } + } + continue; + } + let refLine = oldLine !== null && oldLine !== void 0 ? oldLine : frontLine; + let refLine2 = i === cus.length - 1 ? firstLine : laterLine; + let iPts = refLine.IntersectWith(refLine2, IntersectOption.ExtendBoth); + let tPts = iPts.filter(p => refLine.PtOnCurve(p) + && refLine2.PtOnCurve(p)); + let iPt = SelectNearP(tPts.length > 0 ? tPts : iPts, refLine.EndPoint); + if (!iPt) { + //没交点,如果删过线,则尝试继续连接 + if (cus.length !== oldLen && cus.length > 2) { + cus.splice(i, 1); + i -= 2; + if (i < -1) + i = -1; + continue; + } + else + return false; + } + let par = refLine.GetParamAtPoint(iPt); + //前面线的点无效直接删除 + if (par < 1e-6) { + cus.splice(i, 1); + i -= 2; + if (i < -1) + i = -1; + } + else + frontLine.EndPoint = iPt; + oldLine = null; + par = laterLine.GetParamAtPoint(iPt); + //后面线点无效,如果是起始线,则删除,否则缓存原始线,继续尝试连接 + if (par > 1 - 1e-6) { + if (laterIndex === 0) { + cus.shift(); + firstLine = cus[0].Clone(); + i -= 2; + continue; + } + else + oldLine = laterLine.Clone(); + } + laterLine.StartPoint = iPt; + } + return true; +} +function GetBoardHighSeal(br, sealcus) { + let highSeals = br.BoardProcessOption.highSealed.slice().filter(d => d.size !== null && d.size !== undefined); + let sealDown = parseFloat(br.BoardProcessOption[EBoardKeyList.DownSealed]); + let sealUp = parseFloat(br.BoardProcessOption[EBoardKeyList.UpSealed]); + let sealLeft = parseFloat(br.BoardProcessOption[EBoardKeyList.LeftSealed]); + let sealRight = parseFloat(br.BoardProcessOption[EBoardKeyList.RightSealed]); + //若未设置高级封边,把上下左右封边存入高级封边 + if (sealcus.length !== highSeals.length || !br.IsSpecialShape) { + highSeals.length = 0; + let dir = Math.sign(br.ContourCurve.Area2); + for (let c of sealcus) { + let derv = c.GetFistDeriv(0).multiplyScalar(dir); + let an = angle(derv); + if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4)) + highSeals.push({ size: sealDown }); + else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8) + highSeals.push({ size: sealRight }); + else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8) + highSeals.push({ size: sealUp }); + else + highSeals.push({ size: sealLeft }); + } + } + return highSeals; +} +/**偏移前后曲线起点没改变 */ +function OffsetOutlineSpNotChange(oldcu, newCu) { + if (!newCu) + return false; + let sDerv = oldcu.GetFistDeriv(0).normalize(); + let eDerv = oldcu.GetFistDeriv(oldcu.EndParam).normalize().negate(); + sDerv.add(eDerv).normalize(); + let mDerv = newCu.StartPoint.sub(oldcu.StartPoint).normalize(); + return oldcu.EndParam === (newCu === null || newCu === void 0 ? void 0 : newCu.EndParam) && isParallelTo(mDerv, sDerv); +} +/** + * 获取板件封边轮廓线段数组 + * 消除共线的数据,不改变轮廓方向 + * isOffset-是否偏移轮廓用于查看 + * */ +function GetBoardSealingCurves(br, isOffset = false) { + let cu = Production.GetSpliteOutlineBySpliteSize(br); + if (cu) + return cu.Explode(); + let cus = []; + cu = Production.GetSpliteOutline(br, false); + if (!cu) { + Toaster({ + message: "获取封边错误", + timeout: 3000, + intent: Intent.DANGER + }); + return []; + } + if (isOffset) { + let dir = Math.sign(cu.Area2); + let newCu = cu.GetOffsetCurves(-1 * dir)[0]; + if (OffsetOutlineSpNotChange(cu, newCu)) + cu = newCu; + } + if (cu instanceof Circle) + return [cu.Clone()]; + else { + cus = cu.Explode(); + if (br.IsSpecialShape) + ParagraphCulist(cus); + return cus; + } +} +/** + * 获取板件轮廓 + * 结果轮廓拆单用,统一逆时针数据 + * hasSealing 轮廓是否包含封边 + * 用户计算拆单侧孔面id + */ +function GetSealedBoardContour(br, hasSealing) { + if (equaln(br.ContourCurve.Area, 0)) + return; + let offsetCus = []; + let cus = GetBoardSealingCurves(br); + let highSeals = GetBoardHighSeal(br, cus); + let dir = Math.sign(br.ContourCurve.Area2); + if (hasSealing) { + for (let c of cus) { + if (c instanceof Polyline) + offsetCus.push(...c.Explode()); + else + offsetCus.push(c); + } + } + else { + if (cus[0] instanceof Circle) + dir = 1; + for (let i = 0; i < cus.length; i++) { + let cs; + if (!highSeals[i].size) + cs = [cus[i].Clone()]; + else + cs = cus[i].GetOffsetCurves(-highSeals[i].size * dir); + for (let c of cs) { + if (c instanceof Polyline) + offsetCus.push(...c.Explode()); + else + offsetCus.push(c); + } + } + } + if (offsetCus.length === 1 && offsetCus[0] instanceof Circle) + return offsetCus[0]; + if (!CalcEdgeSealing(offsetCus)) + return; + let pl = Polyline.FastCombine(offsetCus, LINK_FUZZ); + if (pl && dir < 0) + pl.Reverse(); + return pl; +} + +/** + * V型刀走刀数据,第一刀直接扎进去,最后一刀提刀 + * @param polyline + * @param feedingDepth 走刀深度 + * @param knifAngle 通常为60度.按弧度表示 + */ +function VKnifToolPath(polyline, feedingDepth, knifAngle) { + let x = feedingDepth * Math.tan(knifAngle); + let cus = polyline.Explode(); + arrayRemoveIf(cus, c => c.Length < 0.01); + let offsetx = [x, -x]; + let ptsbul = []; + let isClose = polyline.IsClose; + for (let i = 0; i < cus.length; i++) { + let nextIndex = FixIndex(i + 1, cus.length); + let c1 = cus[i]; + let c2 = cus[nextIndex]; + let d = { pt: c1.StartPoint, bul: 0 }; + let curP = c1.EndPoint; + if (c1 instanceof Arc) { + d.bul = c1.Bul; + c1 = new Line(curP.clone().sub(c1.GetFistDeriv(1).multiplyScalar(100)), curP); + } + if (c2 instanceof Arc) + c2 = new Line(c2.StartPoint, c2.StartPoint.add(c2.GetFistDeriv(0).multiplyScalar(100))); + ptsbul.push(d); + if (!isClose && i === cus.length - 1) //最后一条 + { + ptsbul.push({ pt: c1.EndPoint, bul: 0 }); + break; + } + //圆弧与直线相切,此时不要提刀 + if (isParallelTo(c1.GetFistDeriv(0), c2.GetFistDeriv(0))) + continue; + //提刀 + for (let x of offsetx) { + let co1 = c1.GetOffsetCurves(x)[0]; + let co2 = c2.GetOffsetCurves(x)[0]; + if (!co1 || !co2) + continue; + let ipts = co1.IntersectWith(co2, IntersectOption.ExtendBoth); + if (ipts.length === 0) + continue; + if (co1.PtOnCurve(ipts[0])) + continue; + //抬刀路径 + ptsbul.push({ pt: curP, bul: 0 }); + ptsbul.push({ pt: ipts[0].setZ(feedingDepth), bul: 0 }); + } + } + if (isClose) { + //第一刀 + ptsbul.unshift(ptsbul[ptsbul.length - 1]); //, ptsbul[ptsbul.length - 2] + } + return ptsbul; +} +function VData2Curve(data) { + let curves = []; + for (let i = 0; i < data.length - 1; i++) { + let p1 = new Vector3(data[i].pt.x, data[i].pt.y, data[i].pt.z); + let p2 = new Vector3(data[i + 1].pt.x, data[i + 1].pt.y, data[i + 1].pt.z); + if (equaln(data[i].bul, 0)) { + curves.push(new Line(p1, p2)); + } + else { + curves.push(new Arc().ParseFromBul(p1, p2, data[i].bul)); + } + } + return curves; +} + +var Board_1; +/** + * 板件实体 + */ +let Board = Board_1 = class Board extends ExtrudeSolid { + constructor() { + super(); + this._Rotation = { + x: 0, + y: 0, + z: 0 + }; + this._Name = ""; + //板件排钻表,与之碰撞板件为key + this._DrillList = new Map(); + this._LayerNails = []; + this.RelativeHardware = []; + this.OpenDir = BoardOpenDir.None; + this._IsChaiDan = true; + this._2DModelingList = []; + this._3DModelingList = []; + this.OffsetPathCache = new Map(); + this.InitBoardData(); + } + /** + * 创建一个代理数组,数组改变时被监听 + */ + CreateArray() { + return new Proxy([], { + set: (target, key, value, receiver) => { + if (Reflect.get(target, key, receiver) !== value) + this.WriteAllObjectRecord(); + return Reflect.set(target, key, value, receiver); + } + }); + } + InitBoardData() { + let defaultData = { + roomName: "", + cabinetName: "", + boardName: "", + material: "", + color: "", + lines: LinesType.Positive, + bigHoleDir: FaceDirection.Front, + composingFace: ComposingType.Arbitrary, + highSealed: this.CreateArray(), + sealedUp: "1", + sealedDown: "1", + sealedLeft: "1", + sealedRight: "1", + spliteHeight: "", + spliteWidth: "", + spliteThickness: "", + highDrill: this.CreateArray(), + frontDrill: true, + backDrill: true, + drillType: "", + remarks: this.CreateArray(), + }; + this._BoardProcessOption = new Proxy(defaultData, { + get: function (target, key, receiver) { + return Reflect.get(target, key, receiver); + }, + set: (target, key, value, receiver) => { + if (Reflect.get(target, key, receiver) !== value) { + this.WriteAllObjectRecord(); + if (key === "highDrill" || key === EBoardKeyList.HighSealed) { + let arr = this.CreateArray(); + arr.push(...value); + target[key] = arr; + if (key === EBoardKeyList.HighSealed) + this.Update(UpdateDraw.Geometry); + return true; + } + let result = Reflect.set(target, key, value, receiver); + if (key === EBoardKeyList.Lines) + this.Update(UpdateDraw.Geometry); + return result; + } + return true; + } + }); + } + //初始化板件 来自长宽高 + InitBoard(length, width, thickness, boardType = BoardType.Layer) { + this._BoardType = boardType; + if (boardType === BoardType.Layer) { + this.ColorIndex = 2; + this._Name = "层板"; + } + else if (boardType === BoardType.Vertical) { + this.ColorIndex = 11; + this._Name = "立板"; + } + else { + this.ColorIndex = 3; + this._Name = "背板"; + } + let types = [...userConfig.DrillConfigs.keys(), "不排"]; + let type = types.includes(this.BoardProcessOption.drillType) ? this.BoardProcessOption.drillType : types[0]; + this._BoardProcessOption.drillType = type; + this._BoardProcessOption.highDrill = Array(4).fill(type); + this.ConverToRectSolid(width, length, thickness); + this.Update(UpdateDraw.Geometry); + } + static CreateBoard(length, width, thickness, boardType = BoardType.Layer) { + let board = new Board_1(); + board.InitBoard(length, width, thickness, boardType); + board.ApplyMatrix(board.RotateMat); + board._SpaceOCS.identity(); + return board; + } + get DrillList() { + return this._DrillList; + } + get LayerNails() { + return this._LayerNails; + } + AppendNails(ids) { + this.WriteAllObjectRecord(); + this._LayerNails.push(...ids); + } + ClearLayerNails() { + this.WriteAllObjectRecord(); + for (let nail of this._LayerNails) { + if (nail.Object && !nail.IsErase) + nail.Object.Erase(); + } + this._LayerNails.length = 0; + } + /** + * 你可以安心的修改它,这样会直接影响到板件,因为板件对这个对象添加了代理. + */ + get BoardProcessOption() { + return this._BoardProcessOption; + } + set BoardProcessOption(obj) { + Object.assign(this._BoardProcessOption, obj, { [EBoardKeyList.HighSealed]: obj[EBoardKeyList.HighSealed].slice() }); + } + get NeedUpdateRelevanceGroove() { + if (super.NeedUpdateRelevanceGroove) + return true; + for (let k of this.RelativeHardware) { + if (!k || !k.Object) + continue; + if (this.__CacheKnifVersion__[k.Index] !== (k.Object).__UpdateVersion__) + return true; + } + return false; + } + GetRelevanceKnifes(knifs) { + super.GetRelevanceKnifes(knifs); + for (let e of this.RelativeHardware) { + if (e.IsErase) + continue; + let hardware = e.Object; + if (hardware instanceof HardwareCompositeEntity) { + if (hardware.HardwareOption.isHole) { + let holes = hardware.GetAllEntity(true, e => e instanceof ExtrudeHole || e instanceof ExtrudeSolid); + for (let i = 0; i < holes.length; i++) { + let h = holes[i]; + let g = h instanceof ExtrudeHole ? h.Convert2ExtrudeSolid() : h; + g.__TempIndexVersion__ = { Index: hardware.Id.Index, Version: hardware.__UpdateVersion__ }; + knifs.push(g); + } + } + } + } + } + ClearRelevance(en) { + for (let id of this.RelativeHardware) { + let e = id.Object; + if (e instanceof HardwareCompositeEntity) { + arrayRemoveIf(e.RelevanceBoards, i => !i || i.Index === this.Id.Index); + } + } + this.RelativeHardware.length = 0; + super.ClearRelevance(en); + } + get SplitBoards() { + let brs = this.SplitExtrudes; + //拆单或者bbs的时候会重新加入最新的原板件的排钻和层板钉数据 + for (let br of brs) { + if (br.__OriginalEnt__) { + br._DrillList = new Map(this._DrillList.entries()); + br._LayerNails = [...this._LayerNails]; + br.ProcessingGroupList = [...this.ProcessingGroupList]; + br._BoardProcessOption = { ...this._BoardProcessOption }; + //如果是矩形板,关联切割后的板件,用上下左右封边重新填充高级封边,避免近乎矩形的板件封边看上去不对 #I2AQ9R + if (this.isRect) + br._BoardProcessOption.highSealed.length = 0; + } + } + return brs; + } + get BoardModeling() { + let models = []; + for (let g of this.grooves) { + let cu = g.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(g.OCS)); + let outline = Contour.CreateContour(cu, false); + let holes = []; + for (let subG of g.Grooves) { + let holeCu = subG.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(subG.OCS)); + holes.push(Contour.CreateContour(holeCu, false)); + } + let s = new Shape(outline, holes); + models.push({ + shape: s, + thickness: g.Thickness, + dir: equaln(g.Position.applyMatrix4(this.OCSInv).z, 0) && g.Thickness < this.thickness - 1e-6 ? FaceDirection.Back : FaceDirection.Front, + knifeRadius: g.KnifeRadius, + addLen: g.GroovesAddLength, + addWidth: g.GroovesAddWidth, + addDepth: g.GroovesAddDepth, + }); + } + return models; + } + set BoardModeling(models) { + this.WriteAllObjectRecord(); + this.grooves.length = 0; + for (let model of models) { + let g = new ExtrudeSolid(); + g.OCS = this.OCS; + g.ContourCurve = model.shape.Outline.Curve; + g.Thickness = model.thickness; + g.GroovesAddLength = model.addLen; + g.KnifeRadius = model.knifeRadius; + for (let hole of model.shape.Holes) { + let subG = new ExtrudeSolid(); + subG.OCS = this.OCS; + subG.ContourCurve = hole.Curve; + subG.Thickness = model.thickness; + g.AppendGroove(subG); + } + if (model.dir === FaceDirection.Front) + g.ApplyMatrix(MoveMatrix(new Vector3(0, 0, this.thickness - g.Thickness))); + this.grooves.push(g); + } + this.Update(); + } + get Modeling2D() { + return [...this._2DModelingList]; + } + set Modeling2D(ms) { + this.WriteAllObjectRecord(); + this._2DModelingList = ms; + this.OffsetPathCache.clear(); + this._2D3DPathObject = null; + this.Update(UpdateDraw.Geometry); + } + get Modeling3D() { + return [...this._3DModelingList]; + } + set Modeling3D(ms) { + this.WriteAllObjectRecord(); + this._2D3DPathObject = null; + this._3DModelingList = ms; + this.Update(UpdateDraw.Geometry); + } + ClearModeling2DList() { + this.WriteAllObjectRecord(); + this._2DModelingList.length = 0; + this.Update(UpdateDraw.Geometry); + } + ClearModeling3DList() { + this.WriteAllObjectRecord(); + this._3DModelingList.length = 0; + this.Update(UpdateDraw.Geometry); + } + get IsChaiDan() { + return this._IsChaiDan; + } + set IsChaiDan(v) { + if (this._IsChaiDan !== v) { + this.WriteAllObjectRecord(); + this._IsChaiDan = v; + this.Update(UpdateDraw.Geometry); + } + } + ClearBoardModeling() { + this.WriteAllObjectRecord(); + this.grooves.length = 0; + this.Update(UpdateDraw.Geometry); + } + /** + * 注意传入的排钻列表,避免指针被引用 + */ + AppendDrillList(k, drs) { + this.WriteAllObjectRecord(); + let oldDrs = this._DrillList.get(k); + if (oldDrs) + oldDrs.push(...drs); //同类型板件时,会触发这里. + else + this._DrillList.set(k, drs); + } + ClearDrillList(k) { + let drids = this._DrillList.get(k); + if (drids) { + this.WriteAllObjectRecord(); + for (let drillents of drids) { + for (let objId of drillents) { + if (!objId.IsErase) + objId.Object.Erase(); + } + } + this._DrillList.delete(k); + if (k && k.Object) { + //必须在这里删除 + let br = k.Object; + br.ClearDrillList(this.Id); + } + } + } + ClearAllDrillList() { + for (const [id] of this._DrillList) { + this.ClearDrillList(id); + } + } + Erase(isErase = true) { + if (isErase === this.IsErase) + return; + super.Erase(isErase); + if (!isErase) + return; + //记录数据,避免下面记录的时候,排钻已经被删除,导致排钻数据被优化掉. + this.WriteAllObjectRecord(); + for (const [, driss] of this._DrillList) { + for (let dris of driss) + for (let d of dris) + if (d && d.Object) + d.Object.Erase(); + } + this.ClearLayerNails(); + } + get RotateMat() { + let roMat = new Matrix4(); + switch (this._BoardType) { + case BoardType.Layer: + roMat.makeBasis(new Vector3(0, 1, 0), new Vector3(-1, 0, 0), new Vector3(0, 0, 1)); + break; + case BoardType.Vertical: + roMat.makeBasis(new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(1, 0, 0)); + break; + case BoardType.Behind: + roMat.makeBasis(new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, -1, 0)); + } + return roMat; + } + get Height() { + return this.height; + } + set Height(v) { + if (this.ContourCurve instanceof Circle) + return; + if (!equaln(v, this.height, 1e-2)) { + this.WriteAllObjectRecord(); + let refHeight = this.height / 2; + let dist = v - this.height; + let contour = Contour.CreateContour(this.ContourCurve, false); + let isSuccess = contour.UnEqualProportionScale(refHeight, dist, "y"); + if (isSuccess) { + this.height = v; + this.GrooveCheckAllAutoSplit(); + this.Update(); + } + } + } + get Width() { + return this.width; + } + set Width(v) { + if (this.ContourCurve instanceof Circle) + return; + if (!equaln(v, this.width, 1e-2)) { + this.WriteAllObjectRecord(); + let refDist = this.width / 2; + let dist = v - this.width; + let contour = Contour.CreateContour(this.ContourCurve, false); + let isSuccess = contour.UnEqualProportionScale(refDist, dist, "x"); + if (isSuccess) { + this.width = v; + this.GrooveCheckAllAutoSplit(); + this.Update(); + } + } + } + get BoardType() { + return this._BoardType; + } + set BoardType(type) { + this.WriteAllObjectRecord(); + if (type !== this._BoardType) { + let spaceCS = this._SpaceOCS.clone(); + this._BoardType = type; + this.ApplyMatrix(this.OCSInv); + this.ApplyMatrix(this.RotateMat); + this._SpaceOCS.identity(); + this.ApplyMatrix(spaceCS); + this.Update(); + } + } + //设置板件类型并且不做任何的事情 + SetBoardType(type) { + this.WriteAllObjectRecord(); + this._BoardType = type; + } + //最左下角的点 + get MinPoint() { + switch (this._BoardType) { + case BoardType.Layer: + return new Vector3(0, this.height).applyMatrix4(this.OCS); + case BoardType.Vertical: + return this.Position; + case BoardType.Behind: + return new Vector3(0, 0, this.thickness).applyMatrix4(this.OCS); + } + } + get MaxPoint() { + let pt = new Vector3(this.width, this.height, -this.thickness); + pt.applyMatrix4(this.OCS); + return pt; + } + get IsRect() { + return this.isRect; + } + get IsSpecialShape() { + return !this.isRect; + } + get HasGroove() { + return this.grooves.length > 0; + } + get Name() { + return this._Name; + } + set Name(n) { + this.WriteAllObjectRecord(); + this._Name = n; + } + /** + * 板件的轮廓,在板件坐标系中的表现方式. + */ + get ContourCurve() { + return super.ContourCurve; + } + set ContourCurve(cu) { + //标识是否被初始化 + TempRectHoleOption.up = ""; + if (!this.contourCurve || cu.EndParam !== this.contourCurve.EndParam || !this.BoardProcessOption.drillType) { + let drillTypes = [...userConfig.DrillConfigs.keys(), "不排"]; + let defaultType = this._BoardProcessOption.drillType; + if (!defaultType || !drillTypes.includes(defaultType)) { + defaultType = drillTypes[0]; + this._BoardProcessOption.drillType = defaultType; + } + this._BoardProcessOption.highDrill = Array(cu.EndParam).fill(defaultType); + } + else { + if (this.isRect) + InitRectBoardHoleOption(this, TempRectHoleOption); + } + super.ContourCurve = cu; + if (this.isRect && TempRectHoleOption.up) + SetRectHighHole(this, TempRectHoleOption); + } + Explode() { + return Board2Regions(this); + // return this.m_Shape.Explode().map(cu => cu.ApplyMatrix(this.OCS)); + } + RotateBoard(rox, roy, roz) { + this.WriteAllObjectRecord(); + this._Rotation.x = rox; + this._Rotation.y = roy; + this._Rotation.z = roz; + let spcocs = this.SpaceOCS; + let roMatX = new Matrix4().makeRotationX(rox); + let roMatY = new Matrix4().makeRotationY(roy); + let roMatZ = new Matrix4().makeRotationZ(roz); + this.ApplyMatrix(this.OCSInv) + .ApplyMatrix(this.RotateMat) + .ApplyMatrix(roMatX) + .ApplyMatrix(roMatY) + .ApplyMatrix(roMatZ) + .ApplyMatrix(spcocs); + this._SpaceOCS.copy(spcocs); + this.Update(); + } + get Rotation() { + return this._Rotation; + } + ApplyMirrorMatrix(m) { + return this; + } + get UCGenerator() { + if (this.BoardProcessOption.lines === LinesType.Positive) + return boardUVGenerator; + else + return boardUVGenerator2; + } + UpdateUV(geo, ocs, isRev = false) { + super.UpdateUV(geo, ocs, this.BoardProcessOption.lines === LinesType.Reverse); + } + //从一个实体拷贝数据,实体类型必须相同. + CopyFrom(obj) { + this.WriteAllObjectRecord(); + let drillBak = this._DrillList; + this._DrillList = new Map(); + let layerNailsBak = this._LayerNails; + this._LayerNails = []; + super.CopyFrom(obj); + this._DrillList = drillBak; + this._LayerNails = layerNailsBak; + } + Clone() { + let br = super.Clone(); + br._DrillList.clear(); + br._LayerNails.length = 0; + br.RelativeHardware.length = 0; + return br; + } + Join(target) { + let res = super.Join(target); + if (res && target.RelativeHardware) { + for (let hw of target.RelativeHardware) { + if (!this.RelativeHardware.includes(hw)) + this.RelativeHardware.push(hw); + } + } + return res; + } + GetLinesDir() { + let l; + let len; + let width; + switch (this.BoardProcessOption.lines) { + case LinesType.Positive: + len = this.height / 3; + width = Math.min(this.width, this.height) / 8; + break; + case LinesType.Reverse: + len = this.width / 2; + width = Math.min(this.width, this.height) / 8; + break; + case LinesType.CanReversal: + len = this.height / 3; + width = this.width / 2; + } + l = new LineSegments(BufferGeometryUtils.CreateFromPts(PointShapeUtils.LinesDirPts(len, width, this.BoardProcessOption.lines)), ColorMaterial.GetLineMaterial(8)); + let l1 = l.clone(); + l1.material = ColorMaterial.GetLineMaterial(7); + l.position.set(this.width / 2, this.height / 2, 0); + l1.position.set(this.width / 2, this.height / 2, this.thickness); + l.updateMatrix(); + l1.updateMatrix(); + return [l, l1]; + } + Get2DAnd3DPaths(obj) { + if (this._2D3DPathObject) + return this._2D3DPathObject; + this._2D3DPathObject = new Object3D(); + let group2 = new Object3D(); + for (let vm of this._2DModelingList) { + let path = vm.path; + for (let item of vm.items) { + let tempPath = this.GetOffsetPath(path, item); + if (tempPath) { + let curves = VData2Curve(VKnifToolPath(tempPath, item.depth, item.knife.angle / 2)); + let o = new Object3D(); + for (let c of curves) { + c.ColorIndex = tempPath.ColorIndex; + o.add(c.GetDrawObjectFromRenderType(RenderType.Wireframe)); + } + if (vm.dir === FaceDirection.Back) + o.applyMatrix4(ZMirrorMatrix); + else + o.position.setZ(this.thickness); + o.updateMatrix(); + group2.add(o); + } + } + } + let group = new Object3D(); + let tempIndex = 1; + let tempMap = new Map(); + for (let vm of this._3DModelingList) { + let key = `${vm.dir}-${vm.knife.id}`; + let color = tempMap.get(key); + if (!color) { + color = tempIndex; + tempIndex++; + tempMap.set(key, color); + } + for (let i = 0; i < vm.path.length - 1; i++) { + let d1 = vm.path[i]; + let d2 = vm.path[i + 1]; + if (equaln(d1.bul, 0)) { + let geo = BufferGeometryUtils.CreateFromPts([d1.pt, d2.pt]); + group.add(new Line$1(geo, ColorMaterial.GetLineMaterial(color))); + } + else { + let arc = new Arc().ParseFromBul(d1.pt, d2.pt, d1.bul); + arc.ColorIndex = color; + group.add(arc.GetDrawObjectFromRenderType(RenderType.Wireframe)); + } + } + } + this._2D3DPathObject.add(group); + this._2D3DPathObject.add(group2); + return this._2D3DPathObject; + } + HandleSpliteEntitys(splitEntitys) { + var _a; + let nails = []; + for (let nail of this.LayerNails) { + if ((nail === null || nail === void 0 ? void 0 : nail.Object) && !nail.IsErase) + nails.push(nail); + } + let record = this._Owner.Object; + for (let en of splitEntitys) { + let ocsInv = en.OCSInv; + let nids = []; + let needAddNailEnts = []; + nails = nails.filter(id => { + let n = id.Object; + let position = n.Position.applyMatrix4(ocsInv).setZ(0); + if (en.contourCurve.PtInCurve(position)) { + let n1 = n.Clone(); + n1.MId = n.MId; + n1.FId = n.FId; + if (n.MId === this.Id) { + n1.MId = en.Id; + needAddNailEnts.push(n1.FId.Object); + } + if (n.FId === this.Id) { + n1.FId = en.Id; + needAddNailEnts.push(n1.MId.Object); + } + n.Erase(); + record.Add(n1); + nids.push(n1.Id); + return false; + } + return true; + }); + en.AppendNails(nids); + needAddNailEnts.forEach(e => e.AppendNails(nids)); + if (!userConfig.openDrillingReactor) { + for (let [bid, idss] of this._DrillList) { + if (!bid) + continue; + let board = bid.Object; + for (let ids of idss) { + if (!((_a = ids[0]) === null || _a === void 0 ? void 0 : _a.Object) || ids[0].IsErase) + continue; + let holes = ids.map(i => i.Object); + if (holes[0] instanceof CylinderHole) { + let isInBoard = CyHoleInBoard(holes, en, en.OCSInv); + if (isInBoard) { + let cloneHoles = holes.map(h => h.Clone()); + for (let h of cloneHoles) { + if (h.FId === this.Id) { + h.FId = en.Id; + } + if (h.MId === this.Id) { + h.MId = en.Id; + } + record.Add(h); + } + for (let h of holes) + h.Erase(); + en.AppendDrillList(bid, [cloneHoles.map(c => c.Id)]); + board.AppendDrillList(en.Id, [cloneHoles.map(c => c.Id)]); + } + } + } + } + } + } + } + InitDrawObject(renderType = RenderType.Wireframe) { + let obj; + if (renderType === RenderType.Edge) { + obj = new Object3D(); + obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(8))); + this.CheckSealing(obj); + } + else { + obj = super.InitDrawObject(renderType); + } + this.HandleBoardMaterial(renderType, obj); + return obj; + } + UpdateDrawObject(renderType, obj) { + let o = super.UpdateDrawObject(renderType, obj); + if (renderType === RenderType.Edge) { + obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(8))); + this.CheckSealing(obj); + } + this.HandleBoardMaterial(renderType, obj); + return o; + } + GetOffsetPath(path, item) { + if (item.offset === 0) { + return path; + } + else { + let cache = this.OffsetPathCache.get(path); + if (!cache) { + cache = {}; + this.OffsetPathCache.set(path, cache); + } + let tempPath = cache[item.offset.toString()]; + if (!tempPath) { + tempPath = path.GetOffsetCurves(item.offset)[0]; + cache[item.offset.toString()] = tempPath; + } + return tempPath; + } + } + HandleBoardMaterial(renderType, obj) { + if (!this.IsChaiDan) { + if (renderType === RenderType.Conceptual || renderType === RenderType.Physical2) { + obj.children.length = 1; + obj.children[0].material = ColorMaterial.GrayTransparentMeshMaterial; + } + else if (renderType !== RenderType.Wireframe) { + obj.material = ColorMaterial.GrayTransparentMeshMaterial; + } + } + if ((renderType === RenderType.Wireframe || renderType === RenderType.Conceptual) && userConfig.showLines && this.IsChaiDan) + obj.add(...this.GetLinesDir()); + if (this.Id) { + let o = this.Get2DAnd3DPaths(obj); + if (o.parent) + obj.children.push(o); + else + obj.add(o); + } + } + UpdateDrawObjectMaterial(renderType, obj) { + super.UpdateDrawObjectMaterial(renderType, obj); + if (!this.IsChaiDan) { + if (renderType === RenderType.Conceptual || renderType === RenderType.Physical2) { + obj.children[0].material = ColorMaterial.GrayTransparentMeshMaterial; + } + else if (renderType !== RenderType.Wireframe) { + obj.material = ColorMaterial.GrayTransparentMeshMaterial; + } + } + } + CheckSealing(obj) { + let sealingInfo = new Map(userConfig.sealingColorMap.filter(d => d[0] && d[1])); + if (sealingInfo.size === 0) + return; + let cus = GetBoardSealingCurves(this); + let highSeals = GetBoardHighSeal(this, cus); + for (let i = 0; i < cus.length; i++) { + let size = highSeals[i].size.toString(); + let color = sealingInfo.get(size); + if (color) { + cus[i].Position = cus[i].Position.add(new Vector3(0, 0, this.thickness / 2)); + let l = cus[i].GetDrawObjectFromRenderType(RenderType.Wireframe); + l.material = ColorMaterial.GetLineMaterial(parseFloat(color)); + obj.add(l); + } + } + } + GetStretchPoints() { + let pts = this.GetGripOrStretchPoints(DragPointType.Stretch); + for (let m of this._2DModelingList) { + pts.push(...m.path.GetStretchPoints().map(p => p.add(new Vector3(0, 0, m.dir === FaceDirection.Front ? this.thickness : 0)).applyMatrix4(this.OCS))); + } + return pts; + } + MoveStretchPoints(indexList, vec) { + let exCount = arraySum(this.GetStrectchPointCountList(DragPointType.Stretch)); + let originIndexList = []; + let mIndexList = []; + for (let i of indexList) { + if (i < exCount) + originIndexList.push(i); + else + mIndexList.push(i - exCount); + } + let oldOcs = this.OCS; + super.MoveStretchPoints(originIndexList, vec); + if (!this.Id) + return; + arraySortByNumber(mIndexList); + let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec)); + let offset = 0; + let icount = mIndexList.length; + let i = 0; + for (let m of this._2DModelingList) { + let count = m.path.GetDragPointCount(DragPointType.Stretch); + offset += count; + let iList = []; + for (; i < icount; i++) { + if (mIndexList[i] < offset) + iList.push(mIndexList[i] - offset + count); + else + break; + } + if (iList.length > 0) { + m.path.MoveStretchPoints(iList, localVec); + } + m.path.ApplyMatrix(oldOcs).ApplyMatrix(this.OCSInv); + } + this.OffsetPathCache.clear(); + this._2D3DPathObject = null; + this.Update(UpdateDraw.Geometry); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + let pts = super.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform); + if (snapMode === ObjectSnapMode.End) { + for (let vm of this._2DModelingList) { + if (!this.OffsetPathCache.has(vm.path)) + continue; + for (let item of vm.items) { + if (item.offset === 0) + continue; + let paths = this.OffsetPathCache.get(vm.path); + let polyline = paths[item.offset.toString()]; + let ps = polyline.GetStretchPoints(); + for (let p of ps) { + if (vm.dir === FaceDirection.Front) + p.add(new Vector3(0, 0, this.thickness)); + p.applyMatrix4(this.OCS); + } + pts.push(...ps); + } + } + } + return pts; + } + DeferUpdate() { + if (this.NeedUpdateFlag & UpdateDraw.Matrix) { + if (this.RelativeHardware.some(id => !id.IsErase)) + this.NeedUpdateFlag |= UpdateDraw.Geometry; + } + super.DeferUpdate(); + } + _ReadFile(file) { + super._ReadFile(file); + let ver = file.Read(); + if (ver < 6) + this._SpaceOCS.fromArray(file.Read()); + this._BoardType = file.Read(); + this._Name = file.Read(); + //兼容旧版本 + if (ver > 2) { + deserializationBoardData(file, this._BoardProcessOption, ver); + } + else { + let opt = file.Read(); + this._BoardProcessOption = Object.assign(this._BoardProcessOption, typeof opt === "string" ? JSON.parse(opt) : opt); + } + //读取排钻列表 + this._DrillList.clear(); + let size = file.Read(); + //没有与任何板件关联的排钻 + let noRelevancyDrillings = []; + for (let i = 0; i < size; i++) { + let id = file.ReadObjectId(); + let drIdList = []; + let count = file.Read(); + for (let i = 0; i < count; i++) { + let drIDs = []; + let count1 = file.Read(); + for (let j = 0; j < count1; j++) { + let fileId = file.ReadObjectId(); + fileId && drIDs.push(fileId); + } + if (drIDs.length > 0) + drIdList.push(drIDs); + } + if (drIdList.length === 0) + continue; + if (!id) + noRelevancyDrillings.push(...drIdList); + else + this._DrillList.set(id, drIdList); + } + if (noRelevancyDrillings.length > 0) + this._DrillList.set(undefined, noRelevancyDrillings); + if (ver > 1) { + this._LayerNails.length = 0; + let nailsCount = file.Read(); + for (let i = 0; i < nailsCount; i++) { + let objId = file.ReadObjectId(); + if (objId) + this._LayerNails.push(objId); + } + } + if (ver > 4) + this._Rotation = { x: file.Read(), y: file.Read(), z: file.Read() }; + if (ver >= 7) { + let count = file.Read(); + this.RelativeHardware.length = 0; + for (let i = 0; i < count; i++) { + let objId = file.ReadObjectId(); + if (objId) + this.RelativeHardware.push(objId); + } + } + if (ver >= 8) + this.OpenDir = file.Read(); + if (ver >= 9) + this._IsChaiDan = file.Read(); + if (ver >= 10) { + DeserializationBoard2DModeingData(file, this._2DModelingList); + DeserializationBoard3DModeingData(file, this._3DModelingList); + } + this.OffsetPathCache.clear(); + this._2D3DPathObject = null; + } + WriteFile(file) { + super.WriteFile(file); + file.Write(10); + // file.Write(this._SpaceOCS.toArray()); ver < 6 + file.Write(this._BoardType); + file.Write(this._Name); + serializeBoardData(file, this._BoardProcessOption); + file.Write(this._DrillList.size); + for (let [id, idList] of this._DrillList) { + file.WriteObjectId(id); + file.Write(idList.length); + for (let ids of idList) { + file.Write(ids.length); + for (let id of ids) + file.WriteObjectId(id); + } + } + file.Write(this._LayerNails.length); + for (let nail of this._LayerNails) { + file.WriteObjectId(nail); + } + file.Write(this._Rotation.x); + file.Write(this._Rotation.y); + file.Write(this._Rotation.z); + file.Write(this.RelativeHardware.length); + for (let id of this.RelativeHardware) + file.WriteObjectId(id); + file.Write(this.OpenDir); + file.Write(this._IsChaiDan); + SerializeBoard2DModeingData(file, this._2DModelingList); + SerializeBoard3DModeingData(file, this._3DModelingList); + } +}; +__decorate([ + AutoRecord +], Board.prototype, "RelativeHardware", void 0); +__decorate([ + AutoRecord +], Board.prototype, "OpenDir", void 0); +Board = Board_1 = __decorate([ + Factory +], Board); + +function FastWireframe(br, color = 0) { + color = color || br.ColorIndex; + let material = ColorMaterial.GetLineMaterial(color); + let thickness = br.Thickness; + let cu = br.ContourCurve; + let pts = cu.Shape.getPoints(6); + let geo = new BufferGeometry(); + let coords = []; + let edgeCoords = []; + for (let p of pts) { + coords.push(p.x, p.y, 0); + if (p["_mask_"]) + edgeCoords.push(p.x, p.y, 0, p.x, p.y, thickness); + } + for (let p of pts) + coords.push(p.x, p.y, thickness); + let edgeGeo = new BufferGeometry(); + edgeGeo.setAttribute('position', new Float32BufferAttribute(edgeCoords, 3)); + geo.setAttribute('position', new Float32BufferAttribute(coords, 3)); + let line = new Line$1(geo, material); + line.applyMatrix4(cu.OCS); + let edge = new LineSegments(edgeGeo, material); + edge.applyMatrix4(cu.OCS); + let result = [line, edge]; + let ocsInv = br.OCSInv; + for (let g of br.Grooves) { + let m = ocsInv.clone().multiply(g.OCS); + let lines = FastWireframe(g, color); + for (let l of lines) { + l.applyMatrix4(m); + result.push(l); + } + } + return result; +} +function FastWireframe2(dr, color = 0) { + color = color || dr.ColorIndex; + let material = ColorMaterial.GetLineMaterial(color); + let height = dr.Height; + let cu = dr.ContourCurve; + let pts = cu.Shape.getPoints(6); + let geo = new BufferGeometry(); + let coords = []; + let edgeCoords = []; + for (let p of pts) { + coords.push(p.x, p.y, 0); + if (p["_mask_"]) + edgeCoords.push(p.x, p.y, 0, p.x, p.y, height); + } + for (let p of pts) + coords.push(p.x, p.y, height); + let edgeGeo = new BufferGeometry(); + edgeGeo.setAttribute('position', new Float32BufferAttribute(edgeCoords, 3)); + geo.setAttribute('position', new Float32BufferAttribute(coords, 3)); + let line = new Line$1(geo, material); + line.applyMatrix4(cu.OCS); + let edge = new LineSegments(edgeGeo, material); + edge.applyMatrix4(cu.OCS); + let result = [line, edge]; + return result; +} + +/** + * 简化优化版本的曲线求交, 优化版本可以参考(算法导论33.2 确定任意一对线段是否相交 p599) + */ +class CurveIntersection { + /** + * @param {Curve[]} cus 请注意数组的顺序会被更改,如果你在意数组的顺序,请拷贝数组后传进来 + * @memberof CurveIntersection + */ + constructor(cus, parseIntersectionParam = false, intType = IntersectOption.OnBothOperands, fuzz = 1e-6) { + this.fuzz = fuzz; + //用来缓存的曲线包围盒 + this.boxMap = new Map(); + /** + * 交点数据集,key 为曲线 value 为和它相交的(曲线和交点的Map) + */ + this.intersect = new Map(); + this.intersect2 = new Map(); + this.GenBox(cus); + //按x排序 + this.SortCurve(cus); + let count = cus.length; + for (let i = 0; i < count; i++) { + let c1 = cus[i]; + let c1d = this.GetIntersect(c1); + let c1b = this.boxMap.get(c1); + for (let j = i + 1; j < count; j++) { + let c2 = cus[j]; + //过滤掉不需要计算的曲线 + let c2b = this.boxMap.get(c2); + if (c2b.min.x - c1b.max.x > fuzz) + break; + if (c2b.min.y - c1b.max.y > fuzz) + continue; + let ints = this.IntersectWith2(c1, c2, intType); + if (ints.length > 0) { + let pts = ints.map(i => i.pt); + c1d.set(c2, pts); + this.GetIntersect(c2).set(c1, pts); + if (parseIntersectionParam) { + this.AppendIntersectionParams(c1, ints.map(i => i.thisParam)); + this.AppendIntersectionParams(c2, ints.map(i => i.argParam)); + } + } + } + } + } + IntersectWith2(c1, c2, intType) { + return c1.IntersectWith2(c2, intType); + } + AppendIntersectionParams(curve, params) { + let arr = this.intersect2.get(curve); + if (!arr) { + arr = []; + this.intersect2.set(curve, arr); + } + arr.push(...params); + } + GenBox(cus) { + for (let c of cus) + this.boxMap.set(c, c.BoundingBox); + } + SortCurve(cus) { + cus.sort((c1, c2) => { + return this.boxMap.get(c1).min.x - this.boxMap.get(c2).min.x; + }); + } + GetIntersect(cu) { + if (this.intersect.has(cu)) + return this.intersect.get(cu); + let m = new Map(); + this.intersect.set(cu, m); + return m; + } +} +class CurveIntersection2 extends CurveIntersection { + /** + * Curve2Polyline使用这个时,为了避免多余的交点导致曲线切割过度,过滤掉无关的点 + */ + IntersectWith2(c1, c2, intType) { + let pts = c1.IntersectWith2(c2, intType); + return pts.filter(p => { + let inC1 = c1.ParamOnCurve(p.thisParam) || c1.StartPoint.distanceTo(p.pt) < this.fuzz || c1.EndPoint.distanceTo(p.pt) < this.fuzz; + if (!inC1) + return false; + let inC2 = c2.ParamOnCurve(p.argParam) || c2.StartPoint.distanceTo(p.pt) < this.fuzz || c2.EndPoint.distanceTo(p.pt) < this.fuzz; + return inC2; + }); + } +} + +/** + * 某些时候我们不能创建轮廓,此时我们使用类似c2r的方法来构建一个外部轮廓. + */ +function CreateContour2(curves, fuzz = 1e-4) { + for (let c of curves) + if (c instanceof Circle) + return Contour.CreateContour(c); + let extendsMinDistSq = fuzz * fuzz; + let intersect = new CurveIntersection2(curves, false, IntersectOption.ExtendBoth, fuzz); + let curves2 = []; + //延伸+打断 + for (let [cu, pmap] of intersect.intersect) { + let sp = cu.StartPoint; + let ep = cu.EndPoint; + let epExtend; + let epDist = Infinity; + let spExtend; + let spDist = Infinity; + let isClose = cu.IsClose; + let ipts = []; + for (let [, pts] of pmap) { + ipts.push(...pts); + if (!isClose) + for (let p of pts) { + let d = p.distanceToSquared(ep); + if (d < epDist) { + epDist = d; + epExtend = p; + } + d = p.distanceToSquared(sp); + if (d < spDist) { + spDist = d; + spExtend = p; + } + } + } + if (!isClose) { + //延伸 + if (epDist > 0 && epDist < extendsMinDistSq) { + let param = cu.GetParamAtPoint(epExtend); + if (param > cu.EndParam) + cu.Extend(param); + } + if (spDist > 0 && spDist < extendsMinDistSq) { + let param = cu.GetParamAtPoint(spExtend); + if (param < 0) + cu.Extend(param); + } + } + //打断 + let curves; + if (ipts.length > 0) + curves = cu.GetSplitCurvesByPts(ipts); + else + curves = [cu]; + let tempCus = []; + for (let c of curves) { + if (c instanceof Polyline) + tempCus.push(...c.Explode()); + else + tempCus.push(c); + } + curves2.push(...tempCus); + } + let parse = new RegionParse(curves2); + for (let rs of parse.RegionsOutline) { + let curves = rs.map(r => r.curve); + return Contour.CreateContour(curves, false); + } +} + +/** + * 快速的对点表进行偏移 + * @param contour + * @param [offsetDist=1] + * @param [ignoreSpike=true] 忽略尖角优化(如果不忽略,那么尖角将会变钝(有点奇怪)) + * @returns 偏移后的点表 + */ +function FastOffset(contour, offsetDist = 1, ignoreSpike = true) { + let res = []; + for (let i = 0; i < contour.length; i++) { + let v = AsVector3(getBevelVec(contour[i], contour[FixIndex(i - 1, contour)], contour[FixIndex(i + 1, contour)])); + // TestDraw(new Line(contour[i], contour[i].clone().add(v)), 3); + let p = v.multiplyScalar(offsetDist).add(contour[i]); + res.push(p); + } + return res; +} +//Ref:threejs ExtrudeGeometry源码 +function getBevelVec(inPt, inPrev, inNext, ignoreSpike = true) { + // computes for inPt the corresponding point inPt' on a new contour + // shifted by 1 unit (length of normalized vector) to the left + // if we walk along contour clockwise, this new contour is outside the old one + // + // inPt' is the intersection of the two lines parallel to the two + // adjacent edges of inPt at a distance of 1 unit on the left side. + let v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt + // good reading for geometry algorithms (here: line-line intersection) + // http://geomalgorithms.com/a05-_intersect-1.html + const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y; + const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y; + const v_prev_lensq = (v_prev_x * v_prev_x + v_prev_y * v_prev_y); + // check for collinear edges + const collinear0 = (v_prev_x * v_next_y - v_prev_y * v_next_x); + if (Math.abs(collinear0) > Number.EPSILON) { + // not collinear + // length of vectors for normalizing + const v_prev_len = Math.sqrt(v_prev_lensq); + const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y); + // shift adjacent points by unit vectors to the left + const ptPrevShift_x = (inPrev.x - v_prev_y / v_prev_len); + const ptPrevShift_y = (inPrev.y + v_prev_x / v_prev_len); + const ptNextShift_x = (inNext.x - v_next_y / v_next_len); + const ptNextShift_y = (inNext.y + v_next_x / v_next_len); + // scaling factor for v_prev to intersection point + const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - + (ptNextShift_y - ptPrevShift_y) * v_next_x) / + (v_prev_x * v_next_y - v_prev_y * v_next_x); + // vector from inPt to intersection point + v_trans_x = (ptPrevShift_x + v_prev_x * sf - inPt.x); + v_trans_y = (ptPrevShift_y + v_prev_y * sf - inPt.y); + // Don't normalize!, otherwise sharp corners become ugly + // but prevent crazy spikes + const v_trans_lensq = (v_trans_x * v_trans_x + v_trans_y * v_trans_y); + if (v_trans_lensq <= 2 || ignoreSpike) + return new Vector2(v_trans_x, v_trans_y); + else + shrink_by = Math.sqrt(v_trans_lensq / 2); + } + else { + // handle special case of collinear edges + let direction_eq = false; // assumes: opposite + if (v_prev_x > Number.EPSILON) { + if (v_next_x > Number.EPSILON) + direction_eq = true; + } + else { + if (v_prev_x < -Number.EPSILON) { + if (v_next_x < -Number.EPSILON) + direction_eq = true; + } + else { + if (Math.sign(v_prev_y) === Math.sign(v_next_y)) + direction_eq = true; + } + } + if (direction_eq || ignoreSpike) { + // console.log("Warning: lines are a straight sequence"); + v_trans_x = -v_prev_y; + v_trans_y = v_prev_x; + shrink_by = Math.sqrt(v_prev_lensq); + } + else { + // console.log("Warning: lines are a straight spike"); + v_trans_x = v_prev_x; + v_trans_y = v_prev_y; + shrink_by = Math.sqrt(v_prev_lensq / 2); + } + } + return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by); +} + +var DepthType; +(function (DepthType) { + DepthType[DepthType["Front"] = 1] = "Front"; + DepthType[DepthType["Back"] = 2] = "Back"; + DepthType[DepthType["All"] = 3] = "All"; +})(DepthType || (DepthType = {})); +const ExtrudeBuildConfig = { bevel: false }; +/** + * 槽的几何数据,包括槽的墙面和槽的盖子 + */ +class Groove { + constructor(contour, holes, depthType, depth, allDepth, box = contour.BoundingBox) { + this.depthType = depthType; + this.depth = depth; + this.allDepth = allDepth; + this.box = box; + this.holeWalls = []; //槽的网洞的墙 + this.contourWall = new ExtudeWall(contour.Curve, depthType, depth, allDepth, DirectionType.Inner); + for (let h of holes) + this.holeWalls.push(new ExtudeWall(h.Curve, depthType, depth, allDepth, DirectionType.Outer)); + this.lid = new CurveTapeShape(contour, holes); + } + /** + * @param groove this - groove + * @param [eachOther=true] 相互裁剪 + */ + ClipTo(groove, eachOther = true) { + //相同深度和面不用操作 + if (groove.depthType === this.depthType && groove.depth === this.depth) + return; + if (!IntersectsBox(this.box, groove.box)) + return; + this.ClipLid(groove); + groove.ClipLid(this); + //一正一反,不交集 + if (this.depthType + groove.depthType === 3 && this.depth + groove.depth < this.allDepth) + return; + this.contourWall.ClipTo(groove, true); + for (let wall of this.holeWalls) + wall.ClipTo(groove, true); + if (eachOther) { + groove.contourWall.ClipTo(this, false); + for (let wall of groove.holeWalls) + wall.ClipTo(this, false); + } + } + ClipLid(groove) { + if (this.depthType === DepthType.All) + return; + if (groove.depthType === DepthType.All) + return; + if (this.depthType === groove.depthType) { + if (groove.depth > this.depth) + this.lid.ClipTo(groove.lid, true); + else + this.lid.SplitTo(groove.lid); + } + else { + if (this.depth + groove.depth >= this.allDepth) + this.lid.ClipTo(groove.lid, true); + else + this.lid.SplitTo(groove.lid); + } + } + Draw(verticesArray, uvArray, edgeBuild, rotateUv) { + this.contourWall.Draw(verticesArray, uvArray, edgeBuild); + for (let wall of this.holeWalls) + wall.Draw(verticesArray, uvArray, edgeBuild); + if (this.depthType === DepthType.All) + return; + let isFront = this.depthType === DepthType.Front; + this.lid.Draw(verticesArray, uvArray, isFront, isFront ? this.allDepth - this.depth : this.depth, rotateUv, this.allDepth); + } +} +function CreateTape(faceType, startParam, endParam, depth, allDepth) { + if (faceType === DepthType.Front) + return new Tape(startParam, endParam, allDepth - depth, allDepth); + else + return new Tape(startParam, endParam, 0, depth); +} +//朝向类型 +var DirectionType; +(function (DirectionType) { + DirectionType[DirectionType["Outer"] = 0] = "Outer"; + DirectionType[DirectionType["Inner"] = 1] = "Inner"; //内墙 +})(DirectionType || (DirectionType = {})); +//轮廓树节点,用于重新确认外墙和网洞的关系 +class ContourTreeNode { + constructor(contour, children = []) { + this.contour = contour; + this.children = children; + } + SetParent(node) { + this.parent = node; + node.children.push(this); + } + Draw(verticesArray, uvArray, front, z, rotateUv, allDepth) { + // TestDraw(this.contour.Curve, depth); + let pts = this.contour.Curve.GetStretchPoints(); + let isFace; + let ptsChoking; + if (ExtrudeBuildConfig.bevel) { + //进行内缩,使得可以正常倒角 + isFace = (z === 0 || z === 18); //是正反面 + if (isFace) { + ptsChoking = FastOffset(pts, 1, true); + [pts, ptsChoking] = [ptsChoking, pts]; + } + } + let vertices = [...pts]; + let holes = this.children.map(h => { + // TestDraw(h.contour.Curve, depth + 1); + let pts = h.contour.Curve.GetStretchPoints(); + vertices.push(...pts); + return pts; + }); + let faces = ShapeUtils.triangulateShape(pts, holes); + for (let f of faces) { + if (front) { + AddVertice(vertices[f[0]]); + AddVertice(vertices[f[1]]); + AddVertice(vertices[f[2]]); + } + else { + AddVertice(vertices[f[0]]); + AddVertice(vertices[f[2]]); + AddVertice(vertices[f[1]]); + } + } + function AddVertice(v, inz = z) { + verticesArray.push(v.x, v.y, inz); + if (rotateUv) + uvArray.push(v.y * 1e-3, v.x * 1e-3); + else + uvArray.push(v.x * 1e-3, v.y * 1e-3); + } + for (let hole of this.children) { + for (let h of hole.children) { + h.Draw(verticesArray, uvArray, front, z, rotateUv, allDepth); //, depth + 2 + } + } + if (!ExtrudeBuildConfig.bevel || !isFace) + return; //如果不倒角 就不执行下面的代码 + let z2 = front ? z - 1 : z + 1; + //构建倒角边 + for (let i = 0; i < pts.length; i++) { + let p1 = pts[i]; + let nextIndex = FixIndex(i + 1, pts); + let p2 = pts[nextIndex]; + let p3 = ptsChoking[i]; + let p4 = ptsChoking[nextIndex]; + if (front) { + AddVertice(p3, z2); + AddVertice(p4, z2); + AddVertice(p1); + AddVertice(p1); + AddVertice(p4, z2); + AddVertice(p2); + } + else { + AddVertice(p3, z2); + AddVertice(p1); + AddVertice(p4, z2); + AddVertice(p1); + AddVertice(p2); + AddVertice(p4, z2); + } + } + } + static ParseContourTree(contourNodes) { + contourNodes.sort((c1, c2) => c1.contour.Curve.Area - c2.contour.Curve.Area); + for (let i = 0; i < contourNodes.length; i++) { + const node1 = contourNodes[i]; + let p = node1.contour.Curve.StartPoint; + for (let j = i + 1; j < contourNodes.length; j++) { + const node2 = contourNodes[j]; + if (node2.contour.BoundingBox.intersectsBox(node1.contour.BoundingBox) + && node2.contour.Curve.PtInCurve(p)) { + node1.SetParent(node2); + break; + } + } + } + } +} +class EdgeGeometryBuild { + constructor(allDepth) { + this.allDepth = allDepth; + this.lineVerticesArray = []; + this.frontLines = []; + this.backLines = []; + } + AddLidLine(p1, p2, depth) { + if (depth === 0) { + p1 = p1.clone().setZ(0); + p2 = p2.clone().setZ(0); + let line = new Line(p1, p2); + this.backLines.push(line); + } + else if (depth === this.allDepth) { + p1 = p1.clone().setZ(0); + p2 = p2.clone().setZ(0); + let line = new Line(p1, p2); + this.frontLines.push(line); + } + } + BuildLid(verticesArray, uvArray, rotateUv) { + var _a; + let arr = [this.backLines, this.frontLines]; + for (let index = 0; index < 2; index++) { + let lines = arr[index]; + let parse = new RegionParse(lines, 2); + let contourNodes = []; + for (let routes of parse.RegionsOutline) { + let cs = routes.map(r => r.curve); + let c = (_a = Contour.CreateContour(cs, false)) !== null && _a !== void 0 ? _a : CreateContour2(cs); + if (c) + contourNodes.push(new ContourTreeNode(c)); + else + console.error("未能构建盖子"); + } + ContourTreeNode.ParseContourTree(contourNodes); + for (let j = contourNodes.length; j--;) { + let node = contourNodes[j]; + if (node.parent) + continue; + node.Draw(verticesArray, uvArray, index === 1, this.allDepth * index, rotateUv, this.allDepth); + } + } + } +} +/** + * 胶带 + */ +class Tape { + constructor(start, end, bottom, top) { + this.start = start; + this.end = end; + this.bottom = bottom; + this.top = top; + } + //用于测试 + get Curve() { + return new Polyline().RectangleFrom2Pt(new Vector3(this.start, this.bottom), new Vector3(this.end, this.top)); + } + Clip(t) { + let yr = IntersectRange(this.bottom, this.top, t.bottom, t.top, 1e5); + if (yr === undefined) + return [this]; + let xr = IntersectRange(this.start, this.end, t.start, t.end, 1e5); + if (xr === undefined) + return [this]; + let rem = SubtractRange(this.start, this.end, t.start, t.end, 1e5).map(r => { + return new Tape(r[0], r[1], this.bottom, this.top); + }); + let remR = SubtractRange(this.bottom, this.top, t.bottom, t.top, 1e5); + for (let hr of remR) { + rem.push(new Tape(xr[0], xr[1], hr[0], hr[1])); + } + return rem; + } + Split(xlst) { + let ret = []; + let pre = this.start; + for (let x of xlst) { + if (x > pre) { + if (x >= this.end) + x = this.end; + if (equaln(pre, x)) + continue; + ret.push(new Tape(pre, x, this.bottom, this.top)); + pre = x; + if (x === this.end) + break; + } + } + return ret; + } +} +/** + * 二维形状,内部用曲线胶带表示(用来计算盖子差集算法) + */ +class CurveTapeShape { + constructor(contour, holes) { + this.children = []; + this.contour = new CurveTape(contour, DirectionType.Outer); + this.holes = holes.map(h => new CurveTape(h, DirectionType.Inner)); + } + CloneNew() { + let s = new CurveTapeShape(this.contour.contour, this.holes.map(h => h.contour)); + return s; + } + /** + * 删除包含,同向 + */ + ClipTo(s, append = false) { + for (let c of [this.contour, ...this.holes]) + if (c.tapes.length > 0) + c.ClipTo(s); + if (append) { + let sn = s.CloneNew(); + sn.ReverseClipTo(this); + this.children.push(sn); + } + } + //合理打断(以保证三维网格对齐(否则圆弧点将无法正确的对齐)) + SplitTo(s) { + for (let c of [this.contour, ...this.holes]) { + for (let c2 of [s.contour, ...s.holes]) { + let int = GetIntersection(c.contour.Curve, c2.contour.Curve); + c.splitParams.push(...int.map(i => i.thisParam)); + } + } + } + /** + * 只保留被包含部分 + */ + ReverseClipTo(s) { + for (let c of [this.contour, ...this.holes]) + if (c.tapes.length > 0) + c.ReverseClipTo(s); + return this; + } + ChildrenClip() { + for (let i = 0; i < this.children.length; i++) { + let s1 = this.children[i]; + for (let j = i + 1; j < this.children.length; j++) { + let s2 = this.children[j]; + s1.ClipTo(s2, false); + s2.ClipTo(s1, false); + } + } + } + Draw(verticesArray, uvArray, front, z, rotateUv, allDepth) { + this.ChildrenClip(); + let polylines = this.contour.Curves; + for (let h of this.holes) + polylines.push(...h.Curves); + for (let s of this.children) { + polylines.push(...s.contour.Curves); + for (let h of s.holes) + polylines.push(...h.Curves); + } + // TestDraw(polylines, z); + let groups = curveLinkGroup(polylines); + let contourNodes = []; + for (let cus of groups) { + let c = Contour.CreateContour(cus, false); + if (c) + contourNodes.push(new ContourTreeNode(c)); + else + console.error("出错"); + } + ContourTreeNode.ParseContourTree(contourNodes); + for (let j = contourNodes.length; j--;) { + let node = contourNodes[j]; + // TestDraw(s.contour.Curve.Clone(), z); + if (node.parent) + continue; + node.Draw(verticesArray, uvArray, front, z, rotateUv, allDepth); + } + } +} +const SplitLength = 4; +const MinSplitCount = 12; +const MaxSplitCount = 360; +function SplitCurveParams(cu) { + let xparams = []; + if (cu instanceof Circle) { + let splitCount = cu.Radius / SplitLength; + splitCount = clamp(Math.floor(splitCount), MinSplitCount, MaxSplitCount); + for (let i = 0; i < splitCount; i++) + xparams.push(i / splitCount); + } + else + //分段1 + for (let i = 0; i < cu.EndParam; i++) { + xparams.push(i); + if (cu.GetBuilgeAt(i) !== 0) { + let arc = cu.GetCurveAtIndex(i); + let splitCount = arc.Radius / SplitLength; + splitCount = clamp(Math.floor(splitCount), MinSplitCount, MaxSplitCount); + if (splitCount === 0) + continue; + let a = Math.PI * 2 / splitCount; + let params = []; + for (let j = 0; j < splitCount; j++) { + let param = arc.GetParamAtAngle(a * j); + if (arc.ParamOnCurve(param)) + params.push(param); + } + arraySortByNumber(params); + if (params.length === 0) + continue; + for (let p of params) { + if (p > 1e-5 && p < 9.99999) + xparams.push(p + i); + } + } + } + xparams.push(cu.EndParam); + return xparams; +} +/** + * 曲线胶带(一维) + */ +class CurveTape { + constructor(contour, wallType) { + this.contour = contour; + this.wallType = wallType; + this.splitParams = []; + this.tapes = [[0, this.contour.Curve.EndParam]]; + } + get Curves() { + let xparams = SplitCurveParams(this.contour.Curve); + if (this.splitParams.length > 0) { + xparams.push(...this.splitParams); + arraySortByNumber(xparams); + arrayRemoveDuplicateBySort(xparams, (p1, p2) => equaln(p1, p2)); + } + let polylines = []; + function TD(p) { + return { pt: AsVector2(p), bul: 0 }; + } + const addPolyline = (t) => { + let pts = [TD(this.contour.Curve.GetPointAtParam(t[0]))]; + for (let x of xparams) { + if (x <= t[0]) + continue; + if (x >= t[1]) + break; + pts.push(TD(this.contour.Curve.GetPointAtParam(x))); + } + pts.push(TD(this.contour.Curve.GetPointAtParam(t[1]))); + let pl = new Polyline(pts); + polylines.push(pl); + }; + for (let t of this.tapes) { + if (t[0] > t[1]) { + addPolyline([0, t[1]]); + addPolyline([t[0], this.contour.Curve.EndParam]); + } + else + addPolyline(t); + } + return polylines; + } + /** + * 分析与另一个形状的包含关系 + */ + Parse(s) { + let [res1] = ParseCurveParamRangeRelation(this.contour.Curve, s.contour.contour.Curve); + if (this.wallType === DirectionType.Inner) + [res1.syntropy, res1.reverse] = [res1.reverse, res1.syntropy]; + if (res1.container.length > 0) { + for (let h of s.holes) { + let [res2] = ParseCurveParamRangeRelation(this.contour.Curve, h.contour.Curve); + if (this.wallType === DirectionType.Outer) + [res2.syntropy, res2.reverse] = [res2.reverse, res2.syntropy]; + res1.syntropy.push(...res2.syntropy); + res1.reverse.push(...res2.reverse); + res1.container = SubtractRanges(res1.container, res2.container, this.contour.Curve.EndParam); + res1.container = SubtractRanges(res1.container, res2.syntropy, this.contour.Curve.EndParam); + res1.container = SubtractRanges(res1.container, res2.reverse, this.contour.Curve.EndParam); + } + } + return res1; + } + /** + * 删除包含,同向面 + */ + ClipTo(s) { + let d = this.Parse(s); + this.tapes = SubtractRanges(this.tapes, d.container, this.contour.Curve.EndParam); + this.tapes = SubtractRanges(this.tapes, d.syntropy, this.contour.Curve.EndParam); + return this; + } + /** + * 保留被包含的部分 + */ + ReverseClipTo(s) { + this.tapes = this.Parse(s).container; + return this; + } +} +class ExtudeWall { + constructor(curve, depthType, depth, allDepth, wallType) { + this.curve = curve; + this.depthType = depthType; + this.depth = depth; + this.allDepth = allDepth; + this.wallType = wallType; + //一整段 + this.Tape = [CreateTape(depthType, 0, this.curve.EndParam, depth, allDepth)]; + } + /** + * 减去在另一个groove内的部分 + * @param groove this - groove + * @param [clipSyntropy=false] 删除同向的面 + */ + ClipTo(groove, clipSyntropy = false) { + let [res1] = ParseCurveParamRangeRelation(this.curve, groove.contourWall.curve); + if (this.wallType !== groove.contourWall.wallType) + [res1.syntropy, res1.reverse] = [res1.reverse, res1.syntropy]; + if (res1.container.length > 0) { + for (let h of groove.holeWalls) { + let [resh1] = ParseCurveParamRangeRelation(this.curve, h.curve); + //翻转 + if (this.wallType !== h.wallType) + [resh1.syntropy, resh1.reverse] = [resh1.reverse, resh1.syntropy]; + //删除在网洞内的 + let subParams; + if (clipSyntropy) + subParams = resh1.container; //删除共面, + else + subParams = [...resh1.container, ...resh1.syntropy]; //保留共面部分 + for (let i of subParams) { + let rems = []; + for (let r of res1.container) + rems.push(...SubtractRange(r[0], r[1], i[0], i[1], this.curve.EndParam)); + res1.container = rems; + } + } + } + let params = [...res1.container, ...res1.reverse]; + if (clipSyntropy) + params.push(...res1.syntropy); + for (let c of params) + this.ClipFromParam(c[0], c[1], groove.depthType, groove.depth); + } + ClipReverse(wall) { + let [res1] = ParseCurveParamRangeRelation(this.curve, wall.curve); + for (let c of res1.syntropy) + this.ClipFromParam(c[0], c[1], wall.depthType, wall.depth); + } + /** + * 当起始参数大于终止参数时,裁剪的区域经过终点 + * + * @param startParam 起始参数 + * @param endParam 终止参数 + * @param faceType 裁剪面朝向 + * @param depth 裁剪面的深度 + */ + ClipFromParam(startParam, endParam, faceType, depth) { + if (equaln(startParam, endParam)) + return; + if (startParam > endParam) { + this.ClipFromParam(startParam, this.curve.EndParam, faceType, depth); + this.ClipFromParam(0, endParam, faceType, depth); + return this; + } + let subTape = CreateTape(faceType, startParam, endParam, depth, this.allDepth); + let taps = []; + for (let t of this.Tape) + taps.push(...t.Clip(subTape)); + this.Tape = taps; + return this; + } + Draw(verticesArray, uvArray, edgeBuild) { + let xparams = SplitCurveParams(this.curve); + let isOuter = this.wallType === DirectionType.Outer; + let allDepth = this.allDepth; + function AddVertice(v) { + verticesArray.push(v.x); + verticesArray.push(v.y); + if (isOuter && ExtrudeBuildConfig.bevel) //如果倒角,则执行下面的代码 + { + if (v.z === 0) + verticesArray.push(1); + else if (v.z === allDepth) + verticesArray.push(allDepth - 1); + else + verticesArray.push(v.z); + } + else + verticesArray.push(v.z); + } + let tapes = []; + this.Tape.sort((t1, t2) => t1.start - t2.start); + for (let tape of this.Tape) + tapes.push(...tape.Split(xparams)); + for (let i = 0; i < tapes.length; i++) { + let preIndex = FixIndex(i - 1, tapes); + let nextIndex = FixIndex(i + 1, tapes); + let tape = tapes[i]; + let preTape = tapes[preIndex]; + let nextTape = tapes[nextIndex]; + let p1 = this.curve.GetPointAtParam(tape.start).setZ(tape.bottom); + let p2 = this.curve.GetPointAtParam(tape.end).setZ(tape.bottom); + let vs = [p1, p2, p2.clone().setZ(tape.top), p1.clone().setZ(tape.top), p1]; + edgeBuild.AddLidLine(p1, p2, tape.bottom); + edgeBuild.AddLidLine(p1, p2, tape.top); + //#region 构造线框 + { + let leftRanges; + let rightRange; + const IsInteger = (n) => equaln(n, Math.round(n), 1e-8); + if (!IsInteger(tape.start) && equaln(tape.start, preTape.end)) + leftRanges = SubtractRange(tape.bottom, tape.top, preTape.bottom, preTape.top, this.allDepth); + else + leftRanges = [[tape.bottom, tape.top]]; + if (equaln(tape.end, nextTape.start)) + rightRange = SubtractRange(tape.bottom, tape.top, nextTape.bottom, nextTape.top, this.allDepth); + else + rightRange = [[tape.bottom, tape.top]]; + //上下两条线 + edgeBuild.lineVerticesArray.push(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z, p1.x, p1.y, tape.top, p2.x, p2.y, tape.top); + //左右线 + for (let range of leftRanges) { + edgeBuild.lineVerticesArray.push(p1.x, p1.y, range[0], p1.x, p1.y, range[1]); + } + for (let range of rightRange) { + edgeBuild.lineVerticesArray.push(p2.x, p2.y, range[0], p2.x, p2.y, range[1]); + } + } + //#endregion + //和X平行平行 + let isXPar = (vs[0].y + vs[1].y + vs[2].y) < 0.01; + function AddUv(p) { + if (isXPar) + uvArray.push((p.z - 1) * 1e-3, p.y * 1e-3); + else + uvArray.push((p.z - 1) * 1e-3, p.x * 1e-3); + } + if (this.wallType === DirectionType.Outer) { + AddVertice(vs[0]); + AddUv(vs[0]); + AddVertice(vs[1]); + AddUv(vs[1]); + AddVertice(vs[2]); + AddUv(vs[2]); + AddVertice(vs[0]); + AddUv(vs[0]); + AddVertice(vs[2]); + AddUv(vs[2]); + AddVertice(vs[3]); + AddUv(vs[3]); + } + else { + AddVertice(vs[0]); + AddUv(vs[0]); + AddVertice(vs[2]); + AddUv(vs[2]); + AddVertice(vs[1]); + AddUv(vs[1]); + AddVertice(vs[0]); + AddUv(vs[0]); + AddVertice(vs[3]); + AddUv(vs[3]); + AddVertice(vs[2]); + AddUv(vs[2]); + } + } + } +} +/** + * 分析两个曲线关系(包含,分离,同向共线,反向共线)(用参数范围表示) + */ +function ParseCurveParamRangeRelation(cu1, cu2, reverseParse = false) { + let ins = GetIntersection(cu1, cu2); + let c1Res = { container: [], syntropy: [], reverse: [], outer: [] }; + let c2Res = { container: [], syntropy: [], reverse: [], outer: [] }; + if (ins.length === 0) { + if (cu1 instanceof Circle && cu2 instanceof Circle && equaln(cu1.Radius, cu2.Radius, 1e-4) && equalv2(cu1.Center, cu2.Center, 1e-4)) { + c1Res.syntropy.push([0, 1]); + c2Res.syntropy.push([0, 1]); + return [c1Res, c2Res]; + } + if (cu2.PtInCurve(cu1.StartPoint)) + c1Res.container.push([0, cu1.EndParam]); + else + c1Res.outer.push([0, cu1.EndParam]); + if (cu1.PtInCurve(cu2.StartPoint)) + c2Res.container.push([0, cu2.EndParam]); + else + c2Res.outer.push([0, cu2.EndParam]); + return [c1Res, c2Res]; + } + //解析出线段列表 + let c1Curves = []; + let c2Curves = []; + ins.sort((a1, a2) => a1.thisParam - a2.thisParam); + //点重复->下方ins会sort,导致交点对应不上,导致错误 + arrayRemoveDuplicateBySort(ins, (i1, i2) => equalv3(i1.pt, i2.pt, 1e-4)); + if (ins.length > 1 && equalv3(ins[0].pt, ins[ins.length - 1].pt, 1e-4)) + ins.pop(); + for (let i = 0; i < ins.length; i++) { + let n1 = ins[i]; + let n2 = ins[FixIndex(i + 1, ins)]; + c1Curves.push({ startParam: n1.thisParam, endParam: n2.thisParam, startPoint: n1.pt, endPoint: n2.pt }); + } + ins.sort((a1, a2) => a1.argParam - a2.argParam); + for (let i = 0; i < ins.length; i++) { + let n1 = ins[i]; + let n2 = ins[FixIndex(i + 1, ins)]; + c2Curves.push({ startParam: n1.argParam, endParam: n2.argParam, startPoint: n1.pt, endPoint: n2.pt }); + } + //分析共边关系和包含关系 + for (let c of c1Curves) { + let c1MidPoint = CenterPoint(cu1, c.startParam, c.endParam); + for (let c2 of c2Curves) { + if (c2.used) + continue; + let c2MidPoint = CenterPoint(cu2, c2.startParam, c2.endParam); + if (!equalv3(c1MidPoint, c2MidPoint, 1e-4)) + continue; + c.used = true; + if (c.startPoint === c2.startPoint + && c.endPoint === c2.endPoint) { + c1Res.syntropy.push([c.startParam, c.endParam]); + c2Res.syntropy.push([c2.startParam, c2.endParam]); + c2.used = true; + break; + } + else if (c.startPoint === c2.endPoint + && c.endPoint === c2.startPoint) { + c1Res.reverse.push([c.startParam, c.endParam]); + c2Res.reverse.push([c2.startParam, c2.endParam]); + c2.used = true; + break; + } + else + c.used = false; + } + if (!c.used) { + if (cu2.PtInCurve(c1MidPoint)) + c1Res.container.push([c.startParam, c.endParam]); + else + c1Res.outer.push([c.startParam, c.endParam]); + } + } + //只分析包含关系 + if (reverseParse) + for (let c of c2Curves) { + if (c.used) + continue; + let p = CenterPoint(cu2, c.startParam, c.endParam); + if (cu1.PtInCurve(p)) + c2Res.container.push([c.startParam, c.endParam]); + else + c2Res.outer.push([c.startParam, c.endParam]); + } + return [c1Res, c2Res]; +} +function CenterPoint(cu, start, end) { + let lenStart = cu.GetDistAtParam(start); + let lenEnd = cu.GetDistAtParam(end); + if (end > start) + return cu.GetPointAtDistance((lenEnd + lenStart) * 0.5); + let lenAll = cu.Length; + let lenDiv = ((lenAll - lenStart) + lenEnd) * 0.5; + if (lenStart + lenDiv >= lenAll) + return cu.GetPointAtDistance(lenStart + lenDiv - lenAll); + else + return cu.GetPointAtDistance(lenStart + lenDiv); +} +// //0-1 +// UnionRange(0.5, 0.3, 0.3, 0.5, 1);//? +// //0-1 +// UnionRange(0.4, 0.3, 0.3, 0.5, 1);//? +// //[ [ 0.8, 0.1 ], [ 0.3, 0.5 ] ] +// UnionRange(0.8, 0.1, 0.3, 0.5, 1);//? +// //[ 0.3, 0.10000000000000009 ] ]  +// UnionRange(0.8, 0.1, 0.3, 0.9, 1);//? +function SubtractRange(a, b, c, d, end) { + if (a < 0 || b < 0) + return []; + if (a > b) + return [...SubtractRange(a, end, c, d, end), ...SubtractRange(0, b, c, d, end)]; + if (c > d) { + let arr = SubtractRange(a, b, c, end, end); + let rem = []; + for (let s of arr) + rem.push(...SubtractRange(s[0], s[1], 0, d, end)); + return rem; + } + if (c >= b || d <= a) + return [[a, b]]; + if (c <= a) // c1 a1 b1 + { + if (d >= b) + return []; + return [[d, b]]; + } + if (d < b) + return [[a, c], [d, b]]; + return [[a, c]]; +} +function SubtractRange2(r, sr, end) { + return SubtractRange(r[0], r[1], sr[0], sr[1], end); +} +function SubtractRanges(ranges, subRanges, end) { + let rets = ranges; + for (let sr of subRanges) { + let temps = []; + for (let r of rets) + temps.push(...SubtractRange2(r, sr, end)); + rets = temps; + } + return rets; +} +function IntersectRange(a, b, c, d, end) { + let b1 = b < a ? b + end : b; + let d1 = d < c ? d + end : d; + let a1 = a; + let c1 = c; + if (c < a) + [a1, b1, c1, d1] = [c1, d1, a1, b1]; + if (c1 > b1) + return; + return [c1, Math.min(b1, d1)]; +} +const alMatrix4 = new Matrix4; +class ExtrudeGeometryBuilder { + constructor(br) { + this.br = br; + this.verticesArray = []; //用于构建三维网格 + this.uvArray = []; //uv + this.GenerateMeshData(br); + } + GenerateMeshData(br) { + this.edgeAndLidBuilder = new EdgeGeometryBuild(this.br.Thickness); + let rotateUv = (br instanceof Board && br.BoardProcessOption.lines === LinesType.Reverse); + //计算墙(创建轮廓取出,为了得到正确的轮廓曲线(逆时针之类的)) + let outerWall = new ExtudeWall(Contour.CreateContour(br.ContourCurve.Clone()).Curve, DepthType.All, br.Thickness, br.Thickness, DirectionType.Outer); + let grooves = this.ParseGrooves(); + for (let i = 0; i < grooves.length; i++) { + let s1 = grooves[i]; + outerWall.ClipTo(s1, false); + s1.contourWall.ClipReverse(outerWall); + for (let j = i + 1; j < grooves.length; j++) { + let s2 = grooves[j]; + s1.ClipTo(s2, true); + } + s1.Draw(this.verticesArray, this.uvArray, this.edgeAndLidBuilder, rotateUv); + } + outerWall.Draw(this.verticesArray, this.uvArray, this.edgeAndLidBuilder); + //这里构建盖子 + this.edgeAndLidBuilder.BuildLid(this.verticesArray, this.uvArray, rotateUv); + intCache.clear(); + } + get MeshGeometry() { + let geo = new BufferGeometry(); + geo.setAttribute('position', new Float32BufferAttribute(this.verticesArray, 3)); + geo.setAttribute('uv', new Float32BufferAttribute(this.uvArray, 2)); + geo.computeVertexNormals(); + return geo; + } + get EdgeGeometry() { + let geo = new BufferGeometry(); + geo.setAttribute('position', new Float32BufferAttribute(this.edgeAndLidBuilder.lineVerticesArray, 3)); + return geo; + } + ParseGrooves() { + let br = this.br; + const brOcsInv = br.OCSInv; + let grooves = []; + for (let groove of br.Grooves) { + //判断槽正反面 + let type; + if (equaln(groove.Thickness, br.Thickness)) + type = DepthType.All; + else { + if (equaln(groove.Position.applyMatrix4(brOcsInv).z, 0)) + type = DepthType.Back; + else + type = DepthType.Front; + } + alMatrix4.multiplyMatrices(brOcsInv, groove.OCSNoClone); + //槽轮廓 + let grooveContourCurve = groove.ContourCurve.Clone(); + grooveContourCurve.ApplyMatrix(alMatrix4); + grooveContourCurve.Z0(); + if (grooveContourCurve instanceof Polyline) + grooveContourCurve.UpdateMatrixTo(IdentityMtx4); //不可能改变这个 + let grooveContour = Contour.CreateContour(grooveContourCurve); + let grooveHoleContours = []; + //孤岛 + for (let grooveChild of groove.Grooves) { + let grooveChildContourCurve = grooveChild.ContourCurve.Clone(); + alMatrix4.multiplyMatrices(brOcsInv, grooveChild.OCSNoClone); + grooveChildContourCurve.ApplyMatrix(alMatrix4).Z0(); + if (grooveChildContourCurve instanceof Polyline) + grooveChildContourCurve.UpdateMatrixTo(IdentityMtx4); + let grooveChildContour = Contour.CreateContour(grooveChildContourCurve); + grooveHoleContours.push(grooveChildContour); + } + grooves.push(new Groove(grooveContour, grooveHoleContours, type, groove.Thickness, br.Thickness)); + } + return grooves; + } +} +let intCache = new Map(); +function GetIntersection(cu1, cu2) { + let m = intCache.get(cu1); + if (m) { + let r = m.get(cu2); + if (r) + return r; + } + else + m = new Map(); + intCache.set(cu1, m); + let r = cu1.IntersectWith2(cu2, IntersectOption.OnBothOperands); + let cu1EndParam = cu1.EndParam; + let cu2EndParam = cu2.EndParam; + for (let d of r) { + d.thisParam = MathUtils.clamp(d.thisParam, 0, cu1EndParam); + d.argParam = MathUtils.clamp(d.argParam, 0, cu2EndParam); + } + m.set(cu2, r); + let r2 = r.map(r => { + return { thisParam: r.argParam, argParam: r.thisParam, pt: r.pt }; + }); + let m2 = intCache.get(cu2); + if (!m2) { + m2 = new Map(); + intCache.set(cu2, m2); + } + m2.set(cu1, r2); + return r; +} + +var ExtrudeSolid_1; +let ExtrudeSolid = ExtrudeSolid_1 = class ExtrudeSolid extends Entity { + constructor() { + super(); + /* + ------------ + | | + | | + | | height + | | + | | + ----width--- + */ + this.height = 1; //y + this.width = 1; //x + /** + * 拉伸实体的厚度 + * 我们允许它是一个负数,但是这个时候这个实体已经是一个无效的拉伸实体了. + * 允许负数,用来校验凹槽的合理性. + */ + this.thickness = 1; + this.isRect = true; + this.IsKnife = false; + /** + * 正面和反面的凹槽造型 + */ + this.grooves = []; + this.knifeRadius = 3; + this.groovesAddLength = 0; + this.groovesAddWidth = 0; + this.groovesAddDepth = 0; + this.RelevanceKnifs = this.CreateProxyArray((v) => { + //可以更新自己,但是不建议,建议手动更新 + }); + this.RelevanceMeats = this.CreateProxyArray((v) => { + //可以更新肉,简单是不建议,建议手动更新 + }); + } + get KnifeRadius() { + return this.knifeRadius; + } + set KnifeRadius(v) { + if (!equaln(v, this.knifeRadius)) { + this.WriteAllObjectRecord(); + this.knifeRadius = v; + } + } + get BoundingBox() { + return this.BoundingBoxInOCS.applyMatrix4(this.OCS); + } + get BoundingBoxInOCS() { + return new Box3Ext(new Vector3(), new Vector3(this.width, this.height, this.thickness)); + } + get OBB() { + return new OBB(this.OCS, new Vector3(this.width, this.height, this.thickness).multiplyScalar(0.5)); + } + get GroovesAddLength() { + return this.groovesAddLength; + } + set GroovesAddLength(v) { + if (!equaln(v, this.groovesAddLength)) { + this.WriteAllObjectRecord(); + this.groovesAddLength = v; + //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确 + this.__UpdateVersion__++; + } + } + get GroovesAddWidth() { + return this.groovesAddWidth; + } + set GroovesAddWidth(v) { + if (!equaln(v, this.groovesAddWidth)) { + this.WriteAllObjectRecord(); + this.groovesAddWidth = v; + //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确 + this.__UpdateVersion__++; + } + } + get GroovesAddDepth() { + return this.groovesAddDepth; + } + set GroovesAddDepth(v) { + if (!equaln(v, this.groovesAddDepth)) { + this.WriteAllObjectRecord(); + this.groovesAddDepth = v; + //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确 + this.__UpdateVersion__++; + } + } + Clone() { + let en = super.Clone(); + return en; + } + ApplyMatrix(m) { + //暂时关闭更新,避免内部实体还没有更新位置时,先更新了实体的Geometry,导致后续没有进行更新 + let updateBak = this.AutoUpdate; + this.AutoUpdate = false; + super.ApplyMatrix(m); + for (let g of this.grooves) + g.ApplyMatrix(m); + //由于修改矩阵会导致矩阵错误 + this.csg = undefined; + this.AutoUpdate = updateBak; + if (!equaln(m.getMaxScaleOnAxis(), 1)) + this.Update(UpdateDraw.Geometry); + else if (this.AutoUpdate) + this.DeferUpdate(); + return this; + } + ApplyScaleMatrix(m) { + this.WriteAllObjectRecord(); + let cu = this.ContourCurve; + cu.ApplyMatrix(this.OCS); + cu.ApplyMatrix(m); + cu.ApplyMatrix(this.OCSInv); + this.CheckContourCurve(); + return this; + } + get Position() { + return super.Position; + } + set Position(p) { + let v = p.clone().sub(this.Position); + if (equalv3(v, ZeroVec)) + return; + super.Position = p; + let m = MoveMatrix(v); + for (let g of this.grooves) + g.ApplyMatrix(m); + //由于修改矩阵会导致bsp错误 + this.csg = undefined; + } + get Width() { + return this.width; + } + get Height() { + return this.height; + } + get Thickness() { + return this.thickness; + } + set Thickness(thickness) { + if (!equaln(thickness, this.thickness, 1e-3)) { + this.WriteAllObjectRecord(); + if (this.grooves.length > 0) { + let inv = this.OCSInv; + let v = this.Normal.multiplyScalar(thickness - this.thickness); + let m = new Matrix4().setPosition(v); + for (let g of this.grooves) { + let p = g.Position.applyMatrix4(inv); + if (equaln(g.thickness, this.thickness)) + g.Thickness = thickness; + else if (!equaln(p.z, 0)) + g.ApplyMatrix(m); + } + } + this.thickness = thickness; + this.Update(UpdateDraw.Geometry); + } + } + get Grooves() { + return this.grooves; + } + /** + * 返回未拷贝的轮廓曲线 + */ + get ContourCurve() { + if (!this.contourCurve) + this.GeneralRectContour(); + return this.contourCurve; + } + set ContourCurve(cu) { + this.SetContourCurve(cu); + } + /** + * 生成矩形轮廓(强制) + */ + GeneralRectContour() { + if (!this.contourCurve || !(this.contourCurve instanceof Polyline)) + this.contourCurve = new Polyline(); + this.contourCurve.Rectangle(this.width, this.height); + this.contourCurve.OCS = IdentityMtx4; + this.ContourCurve = this.contourCurve; + } + /** + * 转换成矩形拉伸实体 + */ + ConverToRectSolid(width = this.width, height = this.height, thickness = this.thickness) { + this.WriteAllObjectRecord(); + this.height = height; + this.width = width; + this.thickness = thickness; + this.isRect = true; + this.GeneralRectContour(); + return this; + } + /** + * 更新拉伸实体的轮廓 + * @param curve 曲线已经存在WCS坐标系 + */ + SetContourCurve(curve) { + if (!curve.IsClose) + return; + let area = curve.Area; + if (!area || equaln(area, 0)) + return; + if (curve instanceof Spline || curve instanceof Ellipse) + curve = curve.Convert2Polyline(); + if (curve instanceof Polyline) { + curve.CloseMark = true; + let pts = curve.LineData; + if (equalv2(pts[0].pt, arrayLast(pts).pt)) + pts.pop(); + //如果曲线被旋转了,那么修正它的旋转矩阵,避免纹路错误 + let ocs = curve.OCS; + let isMirror = equaln(ocs.elements[10], -1, 1e-4); + let isRotate = !equaln(ocs.elements[0], 1); + if (isMirror || isRotate) // || ocs.elements[9] || ocs.elements[10] + { + for (let p of pts) { + Vector2ApplyMatrix4(ocs, p.pt); + if (isMirror) + p.bul *= -1; + } + curve.OCS = IdentityMtx4; + } + } + else { + curve.OCS = new Matrix4().setPosition(curve.Position); + } + curve.ClearDraw(); + this.WriteAllObjectRecord(); + this.contourCurve = curve; + this.CheckContourCurve(); + this.Update(); + } + /** + * 在不改变Normal和实体显示的情况下,修改X轴的指向 + * @param xAxis + */ + SetXAxis(xAxis) { + let m = this.OCSInv.setPosition(ZeroVec); + let x = xAxis.applyMatrix4(m).setZ(0).normalize(); + if (equalv3(ZeroVec, x)) + return this; + this.WriteAllObjectRecord(); + let a = Math.atan2(x.y, x.x); + m.copy(this._Matrix).setPosition(ZeroVec); + x.applyMatrix4(m); + let z = this.Normal; + let y = z.cross(x); + this._Matrix.elements[0] = x.x; + this._Matrix.elements[1] = x.y; + this._Matrix.elements[2] = x.z; + this._Matrix.elements[4] = y.x; + this._Matrix.elements[5] = y.y; + this._Matrix.elements[6] = y.z; + m.makeRotationZ(-a); + this.contourCurve.ApplyMatrix(m); + this.CheckContourCurve(); + if (this.contourCurve instanceof Polyline) + this.contourCurve.UpdateMatrixTo(m.identity()); + return this; + } + /** + * 检验轮廓曲线,通常当轮廓曲线被修改时,都需要检验轮廓曲线,并更新实体大小和轮廓位置. + * >计算轮廓大小 + * >判断是否矩形 + * >修正轮廓基点 + */ + CheckContourCurve() { + let box = this.ContourCurve.BoundingBox; + let size = box.getSize(new Vector3()); + this.width = size.x; + this.height = size.y; + if (equaln(size.x, 0) || equaln(size.y, 0)) + Log(`注意!!该板件尺寸为0!`); + this.isRect = equaln(this.width * this.height, this.ContourCurve.Area, 0.1); + //修正轮廓基点 + if (!equalv3(box.min, ZeroVec)) { + this.contourCurve.Position = + this.contourCurve.Position.sub(box.min); + let v = box.min.applyMatrix4(this.OCS.setPosition(ZeroVec)); + this._Matrix.setPosition(this.Position.add(v)); + } + } + get IsRect() { + return this.isRect; + } + /** + * 这个拉伸实体的面域形状 + */ + get Shape() { + let contour = Contour.CreateContour(this.ContourCurve.Clone(), false); + let holes = []; + for (let g of this.grooves) { + if (equaln(g.thickness, this.thickness)) + holes.push(Contour.CreateContour(g.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(g.OCS)), false)); + } + return new Shape(contour, holes); + } + /** + * 实体合并(不会删除target) + */ + Join(target) { + let [n, tn] = [this.Normal, target.Normal]; + if (!isParallelTo(n, tn)) + return Status.False; + let isEqualNorm = equalv3(n, tn); + let targetZMin = target.Position.applyMatrix4(this.OCSInv).z; + let targetZMax = targetZMin + target.Thickness * (isEqualNorm ? 1 : -1); + [targetZMin, targetZMax] = arraySortByNumber([targetZMin, targetZMax]); + const MergeRelevance = () => { + if (!this.Id || !target.Id) + return; + for (let kf of target.RelevanceKnifs) { + let kfBr = kf.Object; + if (!kfBr) + continue; + if (!kfBr.RelevanceMeats.includes(this.Id)) + kfBr.RelevanceMeats.push(this.Id); + if (!this.RelevanceKnifs.includes(kf)) + this.RelevanceKnifs.push(kf); + } + for (let meat of target.RelevanceMeats) { + let meatBr = meat.Object; + if (!meatBr) + continue; + if (!meatBr.RelevanceKnifs.includes(this.Id)) + meatBr.RelevanceKnifs.push(this.Id); + if (!this.RelevanceMeats.includes(meat)) + this.RelevanceMeats.push(meat); + } + }; + if (equaln(this.thickness, target.thickness) + && equaln(0, targetZMin)) { + let matrixToLocal = this.OCSInv.multiply(target.OCS); + let thisShape = this.Shape; + let targetShape = target.Shape.ApplyMatrix(matrixToLocal).Z0(); + let unionShapes = thisShape.UnionBoolOperation(targetShape, true); + if (unionShapes.length === 1) { + this.WriteAllObjectRecord(); + // [ + ] 产生网洞. + for (let hole of unionShapes[0].Holes) { + let g = new ExtrudeSolid_1(); + g.thickness = this.thickness; + g.ContourCurve = hole.Curve; + g.ApplyMatrix(this.OCS); + this.AppendGroove(g); + } + this.ContourCurve = unionShapes[0].Outline.Curve; + this.grooves.push(...target.grooves.map(g => g.Clone())); + MergeRelevance(); + this.GrooveCheckMerge(); + this.Update(); + return Status.True; + } + } + else { + if (!isIntersect(0, this.thickness, targetZMin, targetZMax, 1e-5)) + return Status.False; + let matrixToLocal = this.OCSInv.multiply(target.OCS); + let thisCurve = this.ContourCurve; + let targetCurve = target.ContourCurve.Clone().ApplyMatrix(matrixToLocal); + targetCurve.Position = targetCurve.Position.setZ(0); + if (equalCurve(thisCurve, targetCurve)) { + this.WriteAllObjectRecord(); + if (targetZMin < 0) + this.Position = this.Position.add(n.multiplyScalar(targetZMin)); + this.Thickness = Math.max(this.Thickness, targetZMax) - Math.min(0, targetZMin); + this.grooves.push(...target.grooves.map(g => g.Clone())); + MergeRelevance(); + this.GrooveCheckMerge(); + this.Update(); + return Status.True; + } + } + return Status.False; + } + get Volume() { + let sum = this.ContourCurve.Area * this.thickness; + for (let g of this.grooves) + sum -= g.Volume; + return sum; + } + /** + * 被切割 + * @param extrudes 切割刀 + * @param [output=undefined] 如果实体被分裂,那么输出分裂的其他实体(如果为空,则尝试入当前实体的容器中) + * @param [checkIntersect=true] 检查相交,性能优化 + * @returns 切割是否成功 + */ + Subtract(extrudes, output = undefined, checkIntersect = true) { + if (checkIntersect) { + let box = this.BoundingBox; + extrudes = extrudes.filter(e => box.intersectsBox(e.BoundingBox)); + } + //清除原先的关联关系 + if (this.Id) { + let ids = new Set(); + for (let e of extrudes) { + if (!e.Id) + continue; + arrayRemoveOnce(e.RelevanceMeats, this.Id); + ids.add(e.Id.Index); + } + arrayRemoveIf(this.RelevanceKnifs, id => ids.has(id.Index)); + } + let grooves = []; + for (let br of extrudes) { + let gs = this.ConverToLocalGroove(br); + grooves.push(...gs); + } + let area1 = this.ContourCurve.Area; + let sum1 = this.Volume; + this.AppendGrooves(grooves, output); + let sum2 = this.Volume; + let area2 = this.ContourCurve.Area; + if (!equaln(sum1, sum2) || !equaln(area1, area2)) { + if (!this.ReadFileIng && this instanceof Board) { + if (this.Id) + Log(`${this.Name}(${this.Id.Index})被切割成功!`); + else if (this.__OriginalId__) + Log(`${this.Name}(${this.__OriginalId__.Index})关联切割成功更新槽!`); + } + return true; + } + return false; + } + RelevanceSubtract(knif, check = false) { + if (!this.Id || !knif.Id) + return; + //判断是否已经存在 + if (check) { + let index = this.RelevanceKnifs.findIndex(id => id.Index === knif.Id.Index); + if (index !== -1) + return; + } + this.RelevanceKnifs.push(knif.Id); + knif.RelevanceMeats.push(this.Id); + } + /** + * 当实体被分裂后,加入新图纸时,需要修复关联拉槽 + */ + RepairRelevance() { + if (!this.Id) { + console.error("不能修复未加入到图纸的板件!"); + return; + } + for (let id of this.RelevanceKnifs) { + if (id && !id.IsErase) { + let br = id.Object; + br.RelevanceMeats.push(this.Id); + } + } + for (let id of this.RelevanceMeats) { + if (id && !id.IsErase) { + let br = id.Object; + br.RelevanceKnifs.push(this.Id); + } + } + } + AppendGroove(groove) { + this.WriteAllObjectRecord(); + this.grooves.push(groove); + } + /** 添加槽进板件,并且自动分裂. + * 通常槽已经校验过准确性,所以不在校验 + */ + AppendGrooves(grooves, output = undefined) { + if (grooves.length === 0) + return; + this.WriteAllObjectRecord(); + this.grooves.push(...grooves); + this.GrooveCheckAllAutoSplit(output); + } + GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform) { + switch (snapMode) { + case ObjectSnapMode.End: + return this.GetStretchPoints(); + case ObjectSnapMode.Mid: + case ObjectSnapMode.Cen: + case ObjectSnapMode.Nea: + case ObjectSnapMode.Ext: + case ObjectSnapMode.Per: + case ObjectSnapMode.Tan: + { + let contour = this.ContourCurve.Clone(); + contour.ApplyMatrix(this.OCS); + let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform); + contour.Position = contour.Position.add(this.Normal.multiplyScalar(this.thickness)); + pts.push(...contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + let ps = this.contourCurve.GetStretchPoints(); + for (let p of ps) { + let l = new Line(p, p.clone().setZ(this.thickness)); + l.ApplyMatrix(this.OCS); + pts.push(...l.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + } + for (let g of this.grooves) + pts.push(...g.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)); + return pts; + } + } + return []; + } + //#region Stretch + GetStrectchPointCountList(dragType) { + let counts = [this.ContourCurve.GetDragPointCount(dragType) * 2]; + for (let g of this.grooves) { + let c = g.ContourCurve.GetDragPointCount(dragType) * 2; + for (let g1 of g.grooves) + c += g1.contourCurve.GetDragPointCount(dragType) * 2; + counts.push(c); + } + return counts; + } + GetGripOrStretchPoints(dragType) { + let isGrip = dragType === DragPointType.Grip; + let pts = isGrip ? this.ContourCurve.GetGripPoints() : this.ContourCurve.GetStretchPoints(); + let v = new Vector3(0, 0, this.thickness); + pts.push(...pts.map(p => p.clone().add(v))); + pts.forEach(p => { p.applyMatrix4(this.OCS); }); + for (let g of this.grooves) { + let gpts = g.GetGripOrStretchPoints(dragType); + pts.push(...gpts); + } + return pts; + } + MoveGripOrStretchPoints(indexList, vec, dragType) { + this.WriteAllObjectRecord(); + let counts = this.GetStrectchPointCountList(dragType); + if (dragType === DragPointType.Stretch && indexList.length === arraySum(counts)) { + this.Position = this.Position.add(vec); + return; + } + arraySortByNumber(indexList); + let updateBak = this.AutoUpdate; + this.AutoUpdate = false; + if (this.grooves.length === 0) { + this.MoveGripOrStretchPointsOnly(indexList, vec, dragType); + } + else { + let i = 0; + let icount = indexList.length; + let offset = 0; + let grooveIndex = -1; + for (let count of counts) { + offset += count; + let ilist = []; + for (; i < icount; i++) { + if (indexList[i] < offset) + ilist.push(indexList[i] - offset + count); + else + break; + } + if (ilist.length > 0) { + if (grooveIndex === -1) + this.MoveGripOrStretchPointsOnly(ilist, vec, dragType); + else + this.grooves[grooveIndex].MoveGripOrStretchPoints(ilist, vec, dragType); + } + grooveIndex++; + } + } + if (this.objectId) { + this.CheckContourCurve(); + let splitEntitys = []; + this.GrooveCheckAll(splitEntitys); + if (splitEntitys.length > 0 && this.Owner) { + let ms = this.Owner.Object; + for (let e of splitEntitys) + ms.Append(e); + } + } + this.AutoUpdate = updateBak; + this.Update(); + } + GetGripPoints() { + return this.GetGripOrStretchPoints(DragPointType.Grip); + } + MoveGripPoints(indexList, vec) { + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip); + } + GetStretchPoints() { + return this.GetGripOrStretchPoints(DragPointType.Stretch); + } + MoveStretchPoints(indexList, vec) { + this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch); + } + /** + * 只对自身的轮廓和厚度进行拉伸,忽略子实体 + */ + MoveGripOrStretchPointsOnly(indexList, vec, dragType) { + let stretchCount = this.ContourCurve.GetDragPointCount(dragType); + if (dragType === DragPointType.Stretch) { + //Move + if (indexList.length === stretchCount * 2) { + this.Position = this.Position.add(vec); + return; + } + //判断是否拉伸厚度 + if (this.IsStretchThickness(indexList)) { + let isFront = indexList[0] < stretchCount; + if (indexList.every(v => v < stretchCount === isFront)) { + //Change thickness + let lvec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec)); + if (isFront) { + // if (lvec.z >= this.thickness) return; + this.thickness -= lvec.z; + //移动位置而不改变内部拉槽 + let v = this.Normal.multiplyScalar(lvec.z); + this._Matrix.elements[12] += v.x; + this._Matrix.elements[13] += v.y; + this._Matrix.elements[14] += v.z; + } + else { + // if (-lvec.z > this.thickness) return; + this.thickness += lvec.z; + } + return; + } + } + indexList = arrayClone(indexList); + } + //修正点的索引 + for (let i = 0; i < indexList.length; i++) { + let index = indexList[i]; + if (index >= stretchCount) { + index -= stretchCount; + indexList[i] = index; + } + } + indexList = [...new Set(indexList)]; + let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec)); + if (dragType === DragPointType.Grip) { + if (this.ContourCurve instanceof Polyline + && indexList.length === 1 + && indexList[0] % 2 === 1) { + let param = indexList[0] / 2; + if (this.ContourCurve.GetBuilgeAt(Math.floor(param)) === 0) { + let der = this.ContourCurve.GetFistDeriv(param).normalize(); + [der.x, der.y] = [der.y, -der.x]; + let d = localVec.dot(der); + localVec.copy(der).multiplyScalar(d); + } + } + this.ContourCurve.MoveGripPoints(indexList, localVec); + } + else + this.ContourCurve.MoveStretchPoints(indexList, localVec); + } + IsStretchThickness(indexs) { + let count = this.ContourCurve.GetStretchPoints().length; + if (indexs.length === count) { + let isF = indexs[0] < count; + return indexs.every(i => isF === (i < count)); + } + return false; + } + get CSG() { + if (this.csg) + return this.csg; + this.csg = Geometry2CSG(this.MeshGeometry); + return this.csg; + } + /** + * (步骤1.2.) + * 将目标拉伸实体转换成在板件内部可用的凹槽实体 + * @param target 该对象可能被修改(内部不拷贝该实体) + * @param useClone 转换后的实体是目标实体拷贝后修改的 + */ + ConverToLocalGroove(target) { + if (!this.OBB.intersectsOBB(target.OBB)) + return []; + let n1 = this.Normal; + let n2 = target.Normal; + if (isParallelTo(n1, n2)) { + target = target.Clone().ClearDraw(); + if (!equalv3(n1, n2, 1e-6)) { + let mtx = target._Matrix; + matrixSetVector(mtx, 2, n1); + let p = n1.setFromMatrixColumn(mtx, 3); + p.add(n2.multiplyScalar(target.thickness)); + matrixSetVector(mtx, 3, p); + } + if (this.GrooveCheckPosition(target) !== Status.True) + return []; + return [target]; + } + else { + //当切割刀是矩形板,并且没有槽的时候,如果轴对齐,我们可以直接用aabb进行求交 + if (target.isRect && target.grooves.length === 0) { + let diffMtx = target.OCS.premultiply(this.OCSInv); + let box = target.BoundingBoxInOCS.applyMatrix4(diffMtx); + let size = box.getSize(new Vector3); + //轴对齐 + if (equaln(size.x * size.y * size.z, target.Width * target.Height * target.Thickness, 1)) { + let ibox = this.BoundingBoxInOCS.intersect(box); + if (!(ibox.getSize(size).toArray().every(x => x > 1))) + return []; + //构造新槽(因为我们当前的槽加长是根据槽的长短边进行加长的,所以我们可以这么构建) + let g2 = new ExtrudeSolid_1().ConverToRectSolid(size.x, size.y, size.z); + g2.Position = ibox.min; + g2.ApplyMatrix(this._Matrix); + g2.groovesAddDepth = target.groovesAddDepth; + g2.groovesAddLength = target.groovesAddLength; + g2.groovesAddWidth = target.groovesAddWidth; + g2.knifeRadius = target.knifeRadius; + return [g2]; + } + } + let grooves = []; + let project = ProjectBoard(target, this); + if (!project) { + let yv = n2; + let zv = n1; + let xv = yv.clone().cross(zv); + yv.copy(zv).cross(xv); + let m = new Matrix4().makeBasis(xv, yv, zv).copyPosition(this.OCS); + let mi = new Matrix4().getInverse(m).multiply(this.OCS); + let interBSP = this.CSG.intersect(target.CSG.transform1(this.OCSInv.multiply(target.OCS))); + let topology = new BSPGroupParse(interBSP); + let grooves = []; + for (let pts of topology.Parse()) { + for (let p of pts) + p.applyMatrix4(mi); + let box = new Box3Ext().setFromPoints(pts); + if (!box.isSolid(0.1)) + continue; + let size = box.getSize(new Vector3()); + let ext = new ExtrudeSolid_1(); + ext.groovesAddDepth = target.groovesAddDepth; + ext.groovesAddLength = target.groovesAddLength; + ext.groovesAddWidth = target.groovesAddWidth; + ext.knifeRadius = target.knifeRadius; + ext.ConverToRectSolid(size.x, size.y, size.z); + ext.OCS = m.clone().setPosition(box.min.applyMatrix4(m)); + grooves.push(ext); + } + return grooves; + } + // project.ApplyMatrix(target.OCSInv); + project.Z0(); + let c1 = Contour.CreateContour(project); + let c2 = Contour.CreateContour(target.ContourCurve); + //投影轮廓列表 + let contours = c1.IntersectionBoolOperation(c2); + let outlines = []; + for (let c of contours) { + if (c.Curve instanceof Polyline) + outlines.push(...PolylineSpliteRect(c.Curve)); + else + outlines.push(c.Curve); + } + let xv = n1; + let zv = n2; + let yv = zv.clone().cross(xv); + //把<投影轮廓>对齐到肉的侧面坐标系上 + let projection2SideMatrix4 = new Matrix4().makeBasis(xv, yv, zv); + for (let c of outlines) { + let g = target.Clone().ClearDraw(); + let gs = [g]; + g.ContourCurve = c; + g.GrooveCheckAll(gs); + for (let g1 of gs) { + //按g1的位置设置 + projection2SideMatrix4.setPosition(g1.Position); + //投影到肉的侧面坐标系,求槽在肉里面的长度(x)和厚度(z) + let alm = new Matrix4().getInverse(projection2SideMatrix4).multiply(g1.OCS); + g1.ContourCurve.ApplyMatrix(alm); //破坏它 + let box = g1.ContourCurve.BoundingBox; + let size = box.getSize(new Vector3); + if (equaln(size.x, 0, 1e-2) || equaln(size.y, 0, 1e-2)) + continue; + //构造新槽 + let g2 = new ExtrudeSolid_1().ConverToRectSolid(size.y, g1.Thickness, size.x); + g2.groovesAddDepth = target.groovesAddDepth; + g2.groovesAddLength = target.groovesAddLength; + g2.groovesAddWidth = target.groovesAddWidth; + g2.knifeRadius = target.knifeRadius; + g2.ApplyMatrix(OverturnMatrix); //翻转到和原先的投影曲线(肉侧面)一样的状态 + g2.ApplyMatrix(MoveMatrix(box.min)); //和投影曲线重叠 + g2.ApplyMatrix(projection2SideMatrix4); //按照矩形还原回去 + grooves.push(g2); + } + } + return grooves; + } + } + /** + * (步骤2) + * 更新凹槽位置和厚度(校验凹槽的Z轴位置是否存在交集) + */ + GrooveCheckPosition(target) { + if (target.Width < 1e-2 || target.Height < 1e-2 || target.Thickness < 1e-2) + return Status.False; + let tp = target.Position.applyMatrix4(this.OCSInv); + let minZ = tp.z; + let maxZ = tp.z + target.thickness; + if (minZ <= 1e-2) //背面 + { + target.Thickness = Math.min(maxZ, this.thickness); + if (!(equaln(minZ, 0))) + target.ApplyMatrix(MoveMatrix(this.Normal.multiplyScalar(-minZ))); + } + else if (maxZ >= (this.thickness - 1e-3) && minZ > 0) //正面 + target.Thickness = this.thickness - minZ; + else + return Status.False; + if (equaln(target.thickness, this.thickness, 1e-3)) + target.thickness = this.thickness; + return target.thickness > 1e-3 ? Status.True : Status.False; + } + /** + * (步骤3) + * 计算凹槽合并 + */ + GrooveCheckMerge() { + let gs = []; + while (this.grooves.length > 0) { + let g = this.grooves.pop(); + while (this.grooves.length > 0) { + //剩余的 无法合并的板件 + let remGs = this.grooves.filter(gn => { + if (equaln(g.knifeRadius, gn.knifeRadius)) + return g.Join(gn) === Status.False; + else + return true; + }); + if (remGs.length === this.grooves.length) + break; + this.grooves = remGs; + } + gs.push(g); + } + if (gs.length !== this.grooves.length) { + this.grooves = gs; + for (let g of this.grooves) + g.CheckContourCurve(); + } + } + /** + * (步骤4.1) + * 计算凹槽轮廓(可能分裂) + * @param target 不拷贝修改 + * @returns this[] 凹槽在本实体中正确的约束状态.(可能分裂成为多个) + */ + GrooveCheckContour(target) { + let matrixToTarget = target.OCSInv.multiply(this.OCS); + matrixToTarget.elements[14] = 0; //z->0 + let thisShape = this.Shape.ApplyMatrix(matrixToTarget); + let targetShape = new Shape(Contour.CreateContour([target.ContourCurve.Clone()], false)); + let inters = thisShape.IntersectionBoolOperation(targetShape); + if (inters.length === 1) { + target.ContourCurve = inters[0].Outline.Curve; + let grooves = [target]; + target.GrooveCheckAll(grooves); + return grooves; + } + else { + let grooves = []; + for (let contour of inters) { + let ext = target.Clone().ClearDraw(); + ext.ContourCurve = contour.Outline.Curve; + ext.GrooveCheckAll(grooves); + grooves.push(ext); + } + return grooves; + } + } + /** + * (步骤4.2) + * 计算本实体被全身度的凹槽差集后正确的实体轮廓,和有可能的分裂实体 + * @param splitEntitys 分裂出来的实体 + * @returns [Status] Status : 消失不见 + */ + ContourCheckSubtract(splitEntitys) { + let shapeManager = new ShapeManager(); + shapeManager.AppendShapeList(new Shape(Contour.CreateContour(this.ContourCurve.Clone(), false))); + let subtractShape = new ShapeManager(); + let grooves = []; + arrayRemoveIf(this.grooves, groove => { + if (equaln(groove.thickness, this.thickness)) { + let grooveCurve = groove.ContourCurve.Clone(); + let matrixToLocal = this.OCSInv.multiply(groove.OCS); + grooveCurve.ApplyMatrix(matrixToLocal); + subtractShape.AppendShapeList(new Shape(Contour.CreateContour([grooveCurve], false))); + grooves.push(groove); + return true; + } + return false; + }); + shapeManager.SubstactBoolOperation(subtractShape); + let shapes = shapeManager.ShapeList; + //不做任何改变 + if (shapeManager.ShapeCount === 1 && shapes[0].Holes.length === grooves.length) { + this.grooves.push(...grooves); + return true; + } + //分裂 + for (let i = 1; i < shapeManager.ShapeCount; i++) { + let ext = this.Clone(); + let shape = shapes[i]; + for (let hole of shape.Holes) { + let groove = new ExtrudeSolid_1(); + groove.OCS = this.OCS; + groove.ContourCurve = hole.Curve; + groove.thickness = this.thickness; + ext.grooves.push(groove); + } + ext.ContourCurve = shape.Outline.Curve; + ext.GrooveCheckAll(splitEntitys); + ext.Update(); + splitEntitys.push(ext); + } + if (shapes.length > 0) { + let shape = shapes[0]; + for (let hole of shape.Holes) { + let groove = new ExtrudeSolid_1(); + groove.OCS = this.OCS; + groove.ContourCurve = hole.Curve; + groove.thickness = this.thickness; + this.grooves.push(groove); + } + if (!equaln(this.contourCurve.Area, shape.Outline.Area)) + this.ContourCurve = shape.Outline.Curve; + return true; + } + else + return false; + } + /** + * 无法知道修改了轮廓是否为更新到内部凹槽. + * 无法知道修改了内部凹槽之后是否会更新到轮廓. + * 所以默认全部校验内部的凹槽 + */ + GrooveCheckAll(splitEntitys) { + if (this.IsLazyGrooveCheck) { + this.IsNeedGrooveCheck = true; + return; + } + this.IsNeedGrooveCheck = false; + this.WriteAllObjectRecord(); + //校验Z轴位置 + arrayRemoveIf(this.grooves, g => { + return this.GrooveCheckPosition(g) === Status.False; + }); + //清除全深洞的子槽 + for (let g of this.grooves) { + if (equaln(g.thickness, this.thickness, 1e-3)) { + /* + 此刻我们直接将它的子槽清空,虽然子槽可能将这个槽分裂成2个, + 但是这样的情况只能在造型应用中才会产生 + */ + g.grooves.length = 0; + } + else + arrayRemoveIf(g.grooves, subg => !equaln(g.thickness, subg.thickness, 1e-3)); + } + //合并 + this.GrooveCheckMerge(); + //修改本实体轮廓 + if (this.grooves.some(g => equaln(g.thickness, this.thickness, 1e-3))) { + if (!this.ContourCheckSubtract(splitEntitys)) { + this.Erase(); + return; + } + } + //修正凹槽轮廓 + let splitGrooves = []; + let thisArea = this.contourCurve.Area; + for (let i = 0; i < this.grooves.length; i++) { + let g = this.grooves[i]; + if (equaln(g.thickness, this.thickness, 1e-3)) + splitGrooves.push(g); + else { + let gs = this.GrooveCheckContour(g); + if (gs.length === 1) { + let gg = gs[0]; + if (gg.grooves.length === 0 && equaln(gg.contourCurve.Area, thisArea)) { + //判断正反面 + let p = gg.Position.applyMatrix4(this.OCSInv); + if (equaln(p.z, 0)) { + this.thickness -= gg.thickness; + let n = this.Normal; + n.multiplyScalar(gg.thickness); + this._Matrix.elements[12] += n.x; + this._Matrix.elements[13] += n.y; + this._Matrix.elements[14] += n.z; + } + else { + this.thickness -= gg.thickness; + } + this.grooves.splice(i, 1); + this.GrooveCheckAll(splitEntitys); + return; + } + } + splitGrooves.push(...gs); + } + } + this.grooves = splitGrooves; + this.Update(); + } + /** 校验内部槽并且自动分裂 */ + GrooveCheckAllAutoSplit(output = undefined) { + let splitEntitys = []; + this.GrooveCheckAll(splitEntitys); + if (output) + output.push(...splitEntitys); + else if (this._Owner) { + let record = this._Owner.Object; + for (let e of splitEntitys) { + record.Add(e); + e.RepairRelevance(); + } + this.HandleSpliteEntitys(splitEntitys); + } + } + HandleSpliteEntitys(splitEntitys) { } + LazyGrooveCheckAll() { + if (this.IsNeedGrooveCheck) + this.GrooveCheckAllAutoSplit(); + this.IsLazyGrooveCheck = false; + } + //#endregion + //#region Draw + GetPrintObject3D() { + let geometry = new LineGeometry(); + let lineSegments = new Float32Array(this.EdgeGeometry.attributes.position.array); + let instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1); + geometry.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0)); + geometry.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3)); + let line = new Line2(geometry, ColorMaterial.PrintLineMatrial); + let mesh = new Mesh(this.MeshGeometry, ColorMaterial.GetPrintConceptualMaterial()); + return [line, mesh]; + } + InitDrawObject(renderType = RenderType.Wireframe) { + if (renderType === RenderType.Wireframe) { + return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)); + } + else if (renderType === RenderType.Conceptual) { + return new Object3D().add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Physical) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return mesh; + } + else if (renderType === RenderType.Jig) { + return new Object3D().add(...FastWireframe(this)); + } + else if (renderType === RenderType.Print) { + return new Object3D().add(...this.GetPrintObject3D()); + } + else if (renderType === RenderType.Physical2) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return new Object3D().add(mesh, new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + } + get UCGenerator() { + return boardUVGenerator; + } + get NeedUpdateRelevanceGroove() { + if (!this.__CacheKnifVersion__) + return true; + for (let k of this.RelevanceKnifs) { + if (!k || !k.Object) + continue; + if (this.__CacheKnifVersion__[k.Index] !== (k.Object).__UpdateVersion__) + return true; + } + return false; + } + /** + * 计算关联拉槽,更新绘制对象(MeshGeometry和EdgeGeometry) + */ + CalcRelevanceGroove() { + var _a, _b, _c, _d, _e, _f; + //避免Jig实体更新,导致性能暴跌. + if (!this.Id) + return; + this.__CacheKnifVersion__ = {}; + let knifs = []; + this.GetRelevanceKnifes(knifs); + if (knifs.length > 0) { + for (let k of knifs) //复合实体(五金)的子实体没有id + this.__CacheKnifVersion__[(_b = (_a = k.Id) === null || _a === void 0 ? void 0 : _a.Index) !== null && _b !== void 0 ? _b : (_c = k.__TempIndexVersion__) === null || _c === void 0 ? void 0 : _c.Index] = (_e = (_d = k.__TempIndexVersion__) === null || _d === void 0 ? void 0 : _d.Version) !== null && _e !== void 0 ? _e : k.__UpdateVersion__; + let tempExtrude = this.Clone(); + tempExtrude.RelevanceKnifs.length = 0; //避免递归 + if (!this.ReadFileIng) + tempExtrude.__OriginalId__ = this.Id; //在读取文件时不打印日志 + let output = [tempExtrude]; + let ok = tempExtrude.Subtract(knifs, output); + this.__CacheSplitExtrudes = output; + if (ok) { + this.__CacheVolume__ = tempExtrude.Volume; + let meshs = []; + let edges = []; + let inv = this.OCSInv; + let diff = new Matrix4; + for (let e2 of output) { + diff.multiplyMatrices(inv, e2._Matrix); + meshs.push(e2.MeshGeometry.applyMatrix4(diff)); + edges.push(e2.EdgeGeometry.applyMatrix4(diff)); + this.__CacheVolume__ += e2.Volume; + } + if (output.length === 1) { + this._MeshGeometry = tempExtrude.MeshGeometry; + this._EdgeGeometry = tempExtrude.EdgeGeometry; + } + else { + this._MeshGeometry = BufferGeometryUtils.MergeBufferGeometries(meshs); + this._MeshGeometry["IsMesh"] = true; + this._EdgeGeometry = BufferGeometryUtils.MergeBufferGeometries(edges); + } + //我们加入一些拓展信息,以便排钻能够使用(或者其他的,比如发送到效果图?,BBS)(布局视口会直接添加实体到场景,所以我们只在这里设置OriginEntity) + for (let i = 0; i < this.__CacheSplitExtrudes.length; i++) { + this.__CacheSplitExtrudes[i].objectId = new ObjectId(this.Id.Index * -100 - i); + this.__CacheSplitExtrudes[i].__OriginalEnt__ = this; + } + } + else { + let id = (_f = this.Id) !== null && _f !== void 0 ? _f : this.__OriginalId__; + if (!this.ReadFileIng && + id && + this instanceof Board && + this.__CacheVolume__ !== undefined && + !equaln(this.__CacheVolume__, this.Volume)) + Log(`${this.Name}(${id.Index})关联槽已逃离!`); + this.__CacheVolume__ = undefined; + this.__CacheSplitExtrudes = [this]; + } + } + else { + if (!this.ReadFileIng && + this.Id && + this instanceof Board && + this.__CacheVolume__ !== undefined && + !equaln(this.__CacheVolume__, this.Volume)) + Log(`${this.Name}(${this.Id.Index})关联槽已逃离或者被清除!`); + this.__CacheSplitExtrudes = [this]; + this.__CacheVolume__ = undefined; + } + } + /** + * 如果实体被切割,那么将返回分裂的实体数组,否则返回自身 + */ + get SplitExtrudes() { + if (this.NeedUpdateRelevanceGroove) + this.Update(UpdateDraw.Geometry); //我们先直接更新绘制 + if (this.NeedUpdateRelevanceGroove) //如果更新失败,那么我们更新这个槽(似乎也证明了我们没有绘制实体) + this.CalcRelevanceGroove(); //注意,这也将更新绘制的实体(EdgeGeo,MeshGeo)(如果拆单也用这个,可能会带来性能损耗) + return this.__CacheSplitExtrudes; + } + GetRelevanceKnifes(knifs) { + var _a; + for (let e of this.RelevanceKnifs) { + if (!e.IsErase) + knifs.push(e.Object); + else if (this.__CacheKnifVersion__) + this.__CacheKnifVersion__[e.Index] = (_a = e === null || e === void 0 ? void 0 : e.Object) === null || _a === void 0 ? void 0 : _a.__UpdateVersion__; + } + } + ClearRelevance(en) { + if (en) { + let oldLen = this.RelevanceKnifs.length; + arrayRemoveIf(this.RelevanceKnifs, id => !(id === null || id === void 0 ? void 0 : id.Object) || id.Index === en.Id.Index); + if (this.RelevanceKnifs.length !== oldLen) + arrayRemoveIf(en.RelevanceMeats, id => !(id === null || id === void 0 ? void 0 : id.Object) || id.Index === this.Id.Index); + oldLen = this.RelevanceMeats.length; + arrayRemoveIf(this.RelevanceMeats, id => !(id === null || id === void 0 ? void 0 : id.Object) || id.Index === en.Id.Index); + if (oldLen !== this.RelevanceMeats.length) + arrayRemoveIf(en.RelevanceKnifs, id => !(id === null || id === void 0 ? void 0 : id.Object) || id.Index === this.Id.Index); + } + else { + for (let id of this.RelevanceKnifs) { + let en = id.Object; + if (en) + arrayRemoveIf(en.RelevanceMeats, i => !(i === null || i === void 0 ? void 0 : i.Object) || i.Index === this.Id.Index); + } + for (let id of this.RelevanceMeats) { + let en = id.Object; + if (en) { + arrayRemoveIf(en.RelevanceKnifs, i => !(i === null || i === void 0 ? void 0 : i.Object) || i.Index === this.Id.Index); + en.Update(); + } + } + this.RelevanceMeats.length = 0; + this.RelevanceKnifs.length = 0; + } + this.Update(); + } + get MeshGeometry() { + if (this._MeshGeometry) + return this._MeshGeometry; + if (this.thickness <= 0) + return new BufferGeometry(); + this.CalcRelevanceGroove(); + if (this._MeshGeometry) + return this._MeshGeometry; + let grooves = this.Grooves; + if (grooves.every(g => equaln(g.thickness, this.thickness)) || grooves.length === 0) { + let contour = this.ContourCurve.Clone(); + let holes = []; + let ocsInv = this.OCSInv; + let alMatrix4 = new Matrix4(); + for (let g of grooves) { + alMatrix4.multiplyMatrices(ocsInv, g.OCSNoClone); + let gContour = g.ContourCurve.Clone(); + gContour.ApplyMatrix(alMatrix4); + holes.push(Contour.CreateContour(gContour)); + } + let shape = new Shape(Contour.CreateContour(contour), holes); + let extrudeSettings = { + steps: 1, + bevelEnabled: false, + depth: this.Thickness, + UVGenerator: this.UCGenerator, + }; + let geo = new ExtrudeGeometry(shape.Shape, extrudeSettings); + geo.applyMatrix4(contour.OCSNoClone); + this.UpdateUV(geo, contour.OCSNoClone); + let bgeo = new BufferGeometry().fromGeometry(geo); + bgeo["IsMesh"] = true; + this._MeshGeometry = bgeo; + return bgeo; + } + let builder = new ExtrudeGeometryBuilder(this); + this._MeshGeometry = builder.MeshGeometry; + this._EdgeGeometry = builder.EdgeGeometry; + this.UpdateUV(null, null); + return this._MeshGeometry; + } + get EdgeGeometry() { + if (this._EdgeGeometry) + return this._EdgeGeometry; + this.CalcRelevanceGroove(); + if (this._EdgeGeometry) + return this._EdgeGeometry; + if (this.grooves.every(g => equaln(g.thickness, this.thickness)) || this.grooves.length === 0) { + let pts = [this.ContourCurve.Shape.getPoints(6).map(AsVector3)]; + let ocsInv = this.OCSInv; + let alMatrix4 = new Matrix4(); + for (let g of this.grooves) { + alMatrix4.multiplyMatrices(ocsInv, g.OCSNoClone); + let gContour = g.ContourCurve.Clone(); + gContour.ApplyMatrix(alMatrix4); + if (gContour instanceof Polyline) + gContour.UpdateMatrixTo(this.contourCurve.OCS); + if (gContour instanceof Circle) { + let sp = new Path(); + let cen = gContour.Center.applyMatrix4(this.contourCurve.OCSInv); + sp.ellipse(cen.x, cen.y, gContour.Radius, gContour.Radius, 0, 2 * Math.PI, false, 0); + pts.push(sp.getPoints(6).map(AsVector3)); + } + else + pts.push(gContour.Shape.getPoints(6).map(AsVector3)); + } + let geo = GenerateExtrudeEdgeGeometry(pts, this.thickness).applyMatrix4(this.contourCurve.OCSNoClone); + this._EdgeGeometry = geo; + return geo; + } + if (this._MeshGeometry) { + this._MeshGeometry.dispose(); + this._MeshGeometry = undefined; + } + this.MeshGeometry; + return this._EdgeGeometry; + } + UpdateUV(geo, ocs, isRev = false) { + var _a; + let mat; + if (this.Material && this.Material.Object) + mat = this.Material.Object; + else + mat = (_a = this.Db) === null || _a === void 0 ? void 0 : _a.DefaultMaterial; + if (mat && mat.IsFull) { + if (geo) + ScaleUV2(geo, ocs, this.width, this.height, isRev); + else + this.UpdateBufferGeometryUvs(isRev); + } + else { + if (geo) + ScaleUV(geo); + } + } + UpdateBufferGeometryUvs(isRev) { + let uvs = this._MeshGeometry.attributes.uv; + for (let i = 0; i < uvs.count; i++) { + let x = uvs.getX(i) * 1e3; + let y = uvs.getY(i) * 1e3; + if (isRev) + uvs.setXY(i, x / this.height, y / this.width); + else + uvs.setXY(i, x / this.width, y / this.height); + } + } + DeferUpdate() { + if (this.NeedUpdateFlag & UpdateDraw.Matrix) { + //如果是Jig实体,那么就算它有关联切割,我们也不更新实体(因为似乎没必要?) + if (this.Id && this.RelevanceKnifs.some(id => !id.IsErase)) + this.NeedUpdateFlag |= UpdateDraw.Geometry; + } + super.DeferUpdate(); + } + UpdateDrawGeometry() { + this.csg = undefined; + if (this._EdgeGeometry) + this._EdgeGeometry.dispose(); + this._EdgeGeometry = undefined; + if (this._MeshGeometry) + this._MeshGeometry.dispose(); + this._MeshGeometry = undefined; + } + UpdateDrawObject(renderType, obj) { + DisposeThreeObj(obj); + Object3DRemoveAll(obj); + if (renderType === RenderType.Wireframe) { + let l = obj; + l.geometry = this.EdgeGeometry; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Conceptual) { + return obj.add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + else if (renderType === RenderType.Physical) { + let mesh = obj; + mesh.geometry = this.MeshGeometry; + mesh.material = this.MeshMaterial; + } + else if (renderType === RenderType.Jig) { + obj.add(...FastWireframe(this)); + } + else if (renderType === RenderType.Print) { + return obj.add(...this.GetPrintObject3D()); + } + else if (renderType === RenderType.Physical2) { + let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial); + mesh.castShadow = true; + mesh.receiveShadow = true; + return obj.add(mesh, new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))); + } + } + UpdateDrawObjectMaterial(renderType, obj) { + if (renderType === RenderType.Wireframe) { + let l = obj; + l.material = ColorMaterial.GetLineMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Conceptual) { + let mesh = obj.children[0]; + mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex); + } + else if (renderType === RenderType.Physical2) { + let mesh = obj.children[0]; + mesh.material = this.MeshMaterial; + } + else { + let mesh = obj; + mesh.material = this.MeshMaterial; + } + } + UpdateJigMaterial(color = 8) { + } + //#endregion + //#region -------------------------File------------------------- + /** + * 简化的文件读取和写入,只写入必要的数据,没有id,没有其他版本号 + */ + ReadFileLite(file) { + this.ReadFileOnly(file); + this._Matrix.fromArray(file.Read()); + } + WriteFileLite(file) { + this.WriteFileOnly(file); + file.Write(this._Matrix.toArray()); + } + ReadFileOnly(file) { + let ver = file.Read(); + this.height = Number(file.Read()); + this.width = Number(file.Read()); + this.thickness = Number(file.Read()); + this.isRect = file.Read(); + this.contourCurve = file.ReadObject(); + let grooveCount = file.Read(); + this.grooves.length = 0; + for (let i = 0; i < grooveCount; i++) { + if (this.grooves[i] === undefined) + this.grooves[i] = new ExtrudeSolid_1(); + this.grooves[i].ReadFileLite(file); + } + this.knifeRadius = file.Read(); + this.groovesAddLength = file.Read(); + if (ver > 1) { + this.groovesAddWidth = file.Read(); + this.groovesAddDepth = file.Read(); + } + if (ver > 2) { + this.RelevanceMeats.length = 0; + this.RelevanceKnifs.length = 0; + let count = file.Read(); + for (let index = 0; index < count; index++) { + let id = file.ReadSoftObjectId(); + if (id) + this.RelevanceMeats.push(id); + } + count = file.Read(); + for (let index = 0; index < count; index++) { + let id = file.ReadSoftObjectId(); + if (id) + this.RelevanceKnifs.push(id); + } + } + } + WriteFileOnly(file) { + file.Write(3); + file.Write(this.height); + file.Write(this.width); + file.Write(this.thickness); + file.Write(this.isRect); + file.WriteObject(this.ContourCurve); + file.Write(this.grooves.length); + for (let groove of this.grooves) + groove.WriteFileLite(file); + file.Write(this.knifeRadius); + file.Write(this.groovesAddLength); + file.Write(this.groovesAddWidth); + file.Write(this.groovesAddDepth); + //3 + file.Write(this.RelevanceMeats.length); + for (let id of this.RelevanceMeats) + file.WriteSoftObjectId(id); + file.Write(this.RelevanceKnifs.length); + for (let id of this.RelevanceKnifs) + file.WriteSoftObjectId(id); + } + //对象从文件中读取数据,初始化自身 + _ReadFile(file) { + super._ReadFile(file); + this.ReadFileOnly(file); + } + //对象将自身数据写入到文件. + WriteFile(file) { + super.WriteFile(file); + this.WriteFileOnly(file); + } +}; +ExtrudeSolid = ExtrudeSolid_1 = __decorate([ + Factory +], ExtrudeSolid); +function FastMeshGeometry(width, height, thickness) { + let geo = new BoxGeometry(width, height, thickness); + geo.translate(width * 0.5, height * 0.5, thickness * 0.5); + return geo; +} +CADFactory.RegisterObjectAlias(ExtrudeSolid, "ExtureSolid"); +function ProjectBoard(knifBoard, projectBoard) { + let n1 = knifBoard.Normal; + let n2 = projectBoard.Normal; + if (!isPerpendicularityTo(n1, n2)) + return; + let p1 = projectBoard.Position; + let p2 = n2.clone().multiplyScalar(projectBoard.Thickness).add(p1); + let ocsInv = knifBoard.OCSInv; + p1.applyMatrix4(ocsInv).setZ(0); + p2.applyMatrix4(ocsInv).setZ(0); + let dir = new Vector3().crossVectors(n1, n2).applyMatrix4(ocsInv.clone().setPosition(ZeroVec)); + let lineLength = projectBoard.Width + projectBoard.Height; //两边之和大于第三边 + let pts = [ + dir.clone().multiplyScalar(lineLength).add(p1), + dir.clone().multiplyScalar(-lineLength).add(p1), + dir.clone().multiplyScalar(-lineLength).add(p2), + dir.clone().multiplyScalar(lineLength).add(p2), + ]; + let pl = new Polyline(pts.map(p => { + return { pt: AsVector2(p), bul: 0 }; + })); + pl.CloseMark = true; + // pl.ApplyMatrix(knifBoard.OCS); + return pl; +} +//用于翻转绘制出来的槽 +const OverturnMatrix = new Matrix4().makeBasis(YAxis, ZAxis, XAxis); + +export { Circle, ContourTreeNode, CurveTapeShape, DepthType, ExtrudeBuildConfig, ExtrudeGeometryBuilder, ExtrudeSolid, FastMeshGeometry, Groove, Polyline, TempPolyline }; +//# sourceMappingURL=api.esm.js.map diff --git a/api.esm.js.map b/api.esm.js.map new file mode 100644 index 0000000..2c14405 --- /dev/null +++ b/api.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"api.esm.js","sources":["../src/Common/ArrayExt.ts","../src/GLSL/GoochShader.ts","../src/Common/ColorPalette.ts","../src/Geometry/CoordinateSystem.ts","../src/ApplicationServices/HostApplicationServices.ts","../src/Common/Dispose.ts","../src/Common/Status.ts","../src/GraphicsSystem/RenderType.ts","../src/Common/StoreageKeys.ts","../src/Common/SystemEnum.ts","../src/Editor/UserConfig.ts","../src/Geometry/Box.ts","../src/DatabaseServices/AutoRecord.ts","../src/DatabaseServices/CADFactory.ts","../src/DatabaseServices/ObjectId.ts","../src/DatabaseServices/CADFiler.ts","../src/DatabaseServices/AllObjectData.ts","../src/DatabaseServices/EraseEntityData.ts","../src/DatabaseServices/CADObject.ts","../src/DatabaseServices/Entity/Entity.ts","../src/Common/eval.ts","../src/Common/Utils.ts","../src/Geometry/GeUtils.ts","../src/Common/Matrix4Utils.ts","../src/Editor/ObjectSnapMode.ts","../src/Editor/BufferGeometry2GeometryCacheMap.ts","../src/Geometry/BufferGeometryUtils.ts","../src/DatabaseServices/Shape2.ts","../src/Geometry/Matrix2.ts","../src/Geometry/RotateUV.ts","../src/ApplicationServices/mesh/createBoard.ts","../src/Geometry/CurveMap.ts","../src/Geometry/RegionParse.ts","../src/GraphicsSystem/BoolOperateUtils.ts","../src/DatabaseServices/Entity/Curve.ts","../src/DatabaseServices/Contour.ts","../src/Geometry/Plane.ts","../src/DatabaseServices/Entity/Ellipse.ts","../src/DatabaseServices/Entity/Line.ts","../src/GraphicsSystem/OffsetPolyline.ts","../src/DatabaseServices/PointInPolyline.ts","../src/DatabaseServices/Entity/DragPointType.ts","../src/DatabaseServices/Entity/Polyline.ts","../src/GraphicsSystem/IntersectWith.ts","../src/DatabaseServices/Entity/Arc.ts","../src/Geometry/Count.ts","../src/Geometry/Orbit.ts","../src/Common/CurveUtils.ts","../src/DatabaseServices/Entity/Circle.ts","../src/Common/Log.ts","../src/csg/core/math/IsMirrot.ts","../src/csg/core/constants.ts","../src/csg/core/math/Vector3.ts","../src/csg/core/math/Vector2.ts","../src/csg/core/math/Vertex3.ts","../src/csg/core/math/Plane.ts","../src/csg/core/math/Polygon3.ts","../src/csg/core/trees.ts","../src/csg/core/FuzzyFactory.ts","../src/csg/core/FuzzyFactory3d.ts","../src/csg/core/utils/canonicalize.ts","../src/csg/core/utils/csgMeasurements.ts","../src/csg/core/utils.ts","../src/csg/core/math/Line2.ts","../src/csg/core/math/OrthoNormalBasis.ts","../src/csg/core/math/reTesselateCoplanarPolygons.ts","../src/csg/core/utils/retesellate.ts","../src/csg/core/CSG.ts","../src/csg/core/Geometry2CSG.ts","../src/Geometry/BoardUVGenerator.ts","../src/Geometry/BSPGroupParse.ts","../src/Geometry/UVUtils.ts","../src/DatabaseServices/Shape.ts","../src/DatabaseServices/ShapeManager.ts","../src/DatabaseServices/Entity/Region.ts","../src/Add-on/BoardEditor/Board2Regions.ts","../src/Common/BoardKeyList.ts","../src/Add-on/BoardEditor/SerializeBoardData.ts","../src/UI/Store/BoardInterface.ts","../src/Geometry/ExtrudeEdgeGeometry.ts","../src/Geometry/OBB/obb.ts","../src/DatabaseServices/3DSolid/Hole.ts","../src/DatabaseServices/3DSolid/ExtrudeHole.ts","../src/Common/AddEntityDrawObject.ts","../src/DatabaseServices/Entity/CompositeEntity.ts","../src/UI/Store/WineRackInterface.ts","../src/UI/Store/BoardFindInterface.ts","../src/UI/Store/LatticeInterface.ts","../src/UI/Store/DoorInterface.ts","../src/UI/Components/RightPanel/RightPanelInterface.ts","../src/Editor/DefaultConfig.ts","../src/DatabaseServices/Hardware/HardwareCompositeEntity.ts","../src/Geometry/PointShapeUtils.ts","../src/DatabaseServices/3DSolid/CylinderHole.ts","../src/Add-on/DrawDrilling/HoleUtils.ts","../src/Common/Toaster.ts","../src/Nest/Common/Util.ts","../src/Geometry/SweepGeometry.ts","../src/DatabaseServices/Spline.ts","../src/DatabaseServices/3DSolid/SweepSolid.ts","../src/DatabaseServices/Hardware/HardwareTopline.ts","../src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts","../src/Common/Singleton.ts","../src/Geometry/DrillParse/BoardGetFace.ts","../src/GraphicsSystem/ToolPath/OptimizeToolPath.ts","../src/GraphicsSystem/ToolPath/FeedingToolPath.ts","../src/Common/Report.ts","../src/Common/ShowSelectObjects.ts","../src/Common/Deving.ts","../src/Production/Product.ts","../src/GraphicsSystem/CalcEdgeSealing.ts","../src/GraphicsSystem/ToolPath/VKnifToolPath.ts","../src/DatabaseServices/Entity/Board.ts","../src/Geometry/CreateWireframe.ts","../src/Geometry/CurveIntersection.ts","../src/Geometry/CreateContour2.ts","../src/Geometry/FastOffset.ts","../src/Geometry/ExtrudeEdgeGeometry2.ts","../src/DatabaseServices/Entity/Extrude.ts"],"sourcesContent":["/**\r\n * 删除数组中指定的元素,返回数组本身\r\n * @param {Array} arr 需要操作的数组\r\n * @param {*} el 需要移除的元素\r\n */\r\nexport function arrayRemove(arr: Array, el: T): Array\r\n{\r\n let j = 0;\r\n for (let i = 0, l = arr.length; i < l; i++)\r\n {\r\n if (arr[i] !== el)\r\n {\r\n arr[j++] = arr[i];\r\n }\r\n }\r\n arr.length = j;\r\n\r\n return arr;\r\n}\r\n\r\n\r\nexport function arrayRemoveOnce(arr: Array, el: T): Array\r\n{\r\n let index = arr.indexOf(el);\r\n if (index !== -1)\r\n arr.splice(index, 1);\r\n return arr;\r\n}\r\n\r\n/**\r\n * 删除通过函数校验的元素\r\n * @param {(e: T) => boolean} checkFuntion 校验函数\r\n */\r\nexport function arrayRemoveIf(arr: Array, checkFuntion: (e: T) => boolean): Array\r\n{\r\n let j = 0;\r\n for (let i = 0, l = arr.length; i < l; i++)\r\n {\r\n if (!checkFuntion(arr[i]))\r\n {\r\n arr[j++] = arr[i];\r\n }\r\n }\r\n arr.length = j;\r\n\r\n return arr;\r\n}\r\n\r\nexport function arrayFirst(arr: Array): T\r\n{\r\n return arr[0];\r\n}\r\n\r\nexport function arrayLast(arr: { [key: number]: T, length: number; }): T\r\n{\r\n return arr[arr.length - 1];\r\n}\r\n\r\n/**\r\n * 根据数值从小到大排序数组\r\n * @param {Array} arr\r\n * @returns {Array} 返回自身\r\n */\r\nexport function arraySortByNumber(arr: Array): Array\r\n{\r\n arr.sort(sortNumberCompart);\r\n return arr;\r\n}\r\n\r\n/**\r\n * 对排序好的数组进行去重操作\r\n * @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数\r\n * @returns {Array} 返回自身\r\n */\r\nexport function arrayRemoveDuplicateBySort(arr: Array, checkFuction: (e1: T, e2: T) => boolean = checkEqual): Array\r\n{\r\n if (arr.length < 2) return arr;\r\n let j = 1;\r\n for (let i = 1, l = arr.length; i < l; i++)\r\n if (!checkFuction(arr[j - 1], arr[i]))\r\n arr[j++] = arr[i];\r\n arr.length = j;\r\n return arr;\r\n}\r\n\r\n//原地更新数组,注意这个函数并不会比map快.\r\nexport function arrayMap(arr: Array, mapFunc: (v: T) => T): Array\r\n{\r\n for (let i = 0, count = arr.length; i < count; i++)\r\n arr[i] = mapFunc(arr[i]);\r\n return arr;\r\n}\r\n\r\nfunction sortNumberCompart(e1: any, e2: any)\r\n{\r\n return e1 - e2;\r\n}\r\n\r\nfunction checkEqual(e1: any, e2: any): boolean\r\n{\r\n return e1 === e2;\r\n}\r\n\r\n/**\r\n * 改变数组的值顺序\r\n * @param arr 需要改变初始值位置的数组\r\n * @param index //将index位置以后的值放到起始位置\r\n */\r\nexport function changeArrayStartIndex(arr: T[], index: number): T[]\r\n{\r\n arr.unshift(...arr.splice(index));\r\n return arr;\r\n}\r\n\r\nexport function equalArray(a: T[], b: T[], checkF = checkEqual)\r\n{\r\n if (a === b) return true;\r\n if (a.length !== b.length) return false;\r\n for (var i = 0; i < a.length; ++i)\r\n if (!checkF(a[i], b[i])) return false;\r\n return true;\r\n}\r\n\r\nexport function arrayClone(arr: T[]): T[]\r\n{\r\n return arr.slice();\r\n}\r\n\r\n//https://jsperf.com/merge-array-implementations/30\r\nexport function arrayPushArray(arr1: T[], arr2: T[]): T[]\r\n{\r\n let arr1Length = arr1.length;\r\n let arr2Length = arr2.length;\r\n arr1.length = arr1Length + arr2Length;\r\n for (let i = 0; i < arr2Length; i++)\r\n arr1[arr1Length + i] = arr2[i];\r\n\r\n return arr1;\r\n}\r\n\r\nexport function arraySum(arr: number[])\r\n{\r\n let sum = 0;\r\n for (let n of arr) sum += n;\r\n return sum;\r\n}\r\n\r\nexport function FilterSet(s: Set, fn: (el: T) => boolean): Set\r\n{\r\n let ns = new Set();\r\n for (let el of s)\r\n {\r\n if (fn(el))\r\n ns.add(el);\r\n }\r\n return ns;\r\n}\r\n","import { ShaderMaterialParameters, Vector3 } from \"three\";\r\n\r\n//https://github.com/arefin86/arefin86.github.io/blob/master/js/shaders/GoochShader.js\r\nexport function GetGoochShader()\r\n{\r\n return {\r\n uniforms: {\r\n \"LightPosition\": { type: \"v3\", value: new Vector3(-200, 0, 200) },\r\n \"SurfaceColor\": { type: \"v3\", value: new Vector3(1.0, 1.0, 0.) },\r\n \"WarmColor\": { type: \"v3\", value: new Vector3(1.0, 0.5, 0.0) },\r\n \"CoolColor\": { type: \"v3\", value: new Vector3(0, 0, 0.7) },\r\n \"DiffuseWarm\": { type: \"f\", value: 0.45 },\r\n \"DiffuseCool\": { type: \"f\", value: 0.1 }\r\n },\r\n\r\n vertexShader: require(\"./Goodch2.vs\"),\r\n fragmentShader: require(\"./Goodch2.fs\")\r\n };\r\n}\r\n\r\nexport function GetGoodShaderSimple(color: Vector3 = new Vector3): ShaderMaterialParameters\r\n{\r\n return {\r\n uniforms: {\r\n \"SurfaceColor\": { value: color }\r\n },\r\n vertexShader: require(\"./GoodchSimple.vs\"),\r\n fragmentShader: require(\"./GoodchSimple.fs\"),\r\n\r\n polygonOffset: true,\r\n polygonOffsetFactor: 1,\r\n polygonOffsetUnits: 1\r\n };\r\n}\r\n","import { Color, DoubleSide, LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, ShaderMaterial, Vector3, Vector2 } from 'three';\nimport { GetGoodShaderSimple } from '../GLSL/GoochShader';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial';\n\nconst ColorPalette = [\n [0, 0, 0, 0], //----- 0 - lets make it red for an example\n //[255, 255, 255, 255],//----- 0 - ByBlock - White\n [255, 0, 0, 255], //----- 1 - Red\n // [255, 0, 0, 255], //----- 1 - Red\n [255, 255, 0, 255], //----- 2 - Yellow\n [0, 255, 0, 255], //----- 3 - Green\n [0, 255, 255, 255], //----- 4 - Cyan\n [0, 0, 255, 255], //----- 5 - Blue\n [255, 0, 255, 255], //----- 6 - Magenta\n // [255, 0, 0, 255], //----- 7 - More red Red\n // [255, 0, 0, 255], //----- 8 - More red Red\n // [255, 0, 0, 255], //----- 9 - More red Red\n [255, 255, 255, 255],//----- 7 - White\n [128, 128, 128, 255],//----- 8\n [192, 192, 192, 255],//----- 9\n [255, 0, 0, 255], //----- 10\n [255, 127, 127, 255],//----- 11\n [165, 0, 0, 255], //----- 12\n [165, 82, 82, 255], //----- 13\n [127, 0, 0, 255], //----- 14\n [127, 63, 63, 255], //----- 15\n [76, 0, 0, 255], //----- 16\n [76, 38, 38, 255], //----- 17\n [38, 0, 0, 255], //----- 18\n [38, 19, 19, 255], //----- 19\n [255, 63, 0, 255], //----- 20\n [255, 159, 127, 255],//----- 21\n [165, 41, 0, 255], //----- 22\n [165, 103, 82, 255], //----- 23\n [127, 31, 0, 255], //----- 24\n [127, 79, 63, 255], //----- 25\n [76, 19, 0, 255], //----- 26\n [76, 47, 38, 255], //----- 27\n [38, 9, 0, 255], //----- 28\n [38, 23, 19, 255], //----- 29\n [255, 127, 0, 255], //----- 30\n [255, 191, 127, 255],//----- 31\n [165, 82, 0, 255], //----- 32\n [165, 124, 82, 255], //----- 33\n [127, 63, 0, 255], //----- 34\n [127, 95, 63, 255], //----- 35\n [76, 38, 0, 255], //----- 36\n [76, 57, 38, 255], //----- 37\n [38, 19, 0, 255], //----- 38\n [38, 28, 19, 255], //----- 39\n [255, 191, 0, 255], //----- 40\n [255, 223, 127, 255],//----- 41\n [165, 124, 0, 255], //----- 42\n [165, 145, 82, 255], //----- 43\n [127, 95, 0, 255], //----- 44\n [127, 111, 63, 255], //----- 45\n [76, 57, 0, 255], //----- 46\n [76, 66, 38, 255], //----- 47\n [38, 28, 0, 255], //----- 48\n [38, 33, 19, 255], //----- 49\n [255, 255, 0, 255], //----- 50\n [255, 255, 127, 255],//----- 51\n [165, 165, 0, 255], //----- 52\n [165, 165, 82, 255], //----- 53\n [127, 127, 0, 255], //----- 54\n [127, 127, 63, 255], //----- 55\n [76, 76, 0, 255], //----- 56\n [76, 76, 38, 255], //----- 57\n [38, 38, 0, 255], //----- 58\n [38, 38, 19, 255], //----- 59\n [191, 255, 0, 255], //----- 60\n [223, 255, 127, 255],//----- 61\n [124, 165, 0, 255], //----- 62\n [145, 165, 82, 255], //----- 63\n [95, 127, 0, 255], //----- 64\n [111, 127, 63, 255], //----- 65\n [57, 76, 0, 255], //----- 66\n [66, 76, 38, 255], //----- 67\n [28, 38, 0, 255], //----- 68\n [33, 38, 19, 255], //----- 69\n [127, 255, 0, 255], //----- 70\n [191, 255, 127, 255],//----- 71\n [82, 165, 0, 255], //----- 72\n [124, 165, 82, 255], //----- 73\n [63, 127, 0, 255], //----- 74\n [95, 127, 63, 255], //----- 75\n [38, 76, 0, 255], //----- 76\n [57, 76, 38, 255], //----- 77\n [19, 38, 0, 255], //----- 78\n [28, 38, 19, 255], //----- 79\n [63, 255, 0, 255], //----- 80\n [159, 255, 127, 255],//----- 81\n [41, 165, 0, 255], //----- 82\n [103, 165, 82, 255], //----- 83\n [31, 127, 0, 255], //----- 84\n [79, 127, 63, 255], //----- 85\n [19, 76, 0, 255], //----- 86\n [47, 76, 38, 255], //----- 87\n [9, 38, 0, 255], //----- 88\n [23, 38, 19, 255], //----- 89\n [0, 255, 0, 255], //----- 90\n [127, 255, 127, 255],//----- 91\n [0, 165, 0, 255], //----- 92\n [82, 165, 82, 255], //----- 93\n [0, 127, 0, 255], //----- 94\n [63, 127, 63, 255], //----- 95\n [0, 76, 0, 255], //----- 96\n [38, 76, 38, 255], //----- 97\n [0, 38, 0, 255], //----- 98\n [19, 38, 19, 255], //----- 99\n [0, 255, 63, 255], //----- 100\n [127, 255, 159, 255],//----- 101\n [0, 165, 41, 255], //----- 102\n [82, 165, 103, 255], //----- 103\n [0, 127, 31, 255], //----- 104\n [63, 127, 79, 255], //----- 105\n [0, 76, 19, 255], //----- 106\n [38, 76, 47, 255], //----- 107\n [0, 38, 9, 255], //----- 108\n [19, 38, 23, 255], //----- 109\n [0, 255, 127, 255], //----- 110\n [127, 255, 191, 255],//----- 111\n [0, 165, 82, 255], //----- 112\n [82, 165, 124, 255], //----- 113\n [0, 127, 63, 255], //----- 114\n [63, 127, 95, 255], //----- 115\n [0, 76, 38, 255], //----- 116\n [38, 76, 57, 255], //----- 117\n [0, 38, 19, 255], //----- 118\n [19, 38, 28, 255], //----- 119\n [0, 255, 191, 255], //----- 120\n [127, 255, 223, 255],//----- 121\n [0, 165, 124, 255], //----- 122\n [82, 165, 145, 255], //----- 123\n [0, 127, 95, 255], //----- 124\n [63, 127, 111, 255], //----- 125\n [0, 76, 57, 255], //----- 126\n [38, 76, 66, 255], //----- 127\n [0, 38, 28, 255], //----- 128\n [19, 38, 33, 255], //----- 129\n [0, 255, 255, 255], //----- 130\n [127, 255, 255, 255],//----- 131\n [0, 165, 165, 255], //----- 132\n [82, 165, 165, 255], //----- 133\n [0, 127, 127, 255], //----- 134\n [63, 127, 127, 255], //----- 135\n [0, 76, 76, 255], //----- 136\n [38, 76, 76, 255], //----- 137\n [0, 38, 38, 255], //----- 138\n [19, 38, 38, 255], //----- 139\n [0, 191, 255, 255], //----- 140\n [127, 223, 255, 255],//----- 141\n [0, 124, 165, 255], //----- 142\n [82, 145, 165, 255], //----- 143\n [0, 95, 127, 255], //----- 144\n [63, 111, 127, 255], //----- 145\n [0, 57, 76, 255], //----- 146\n [38, 66, 76, 255], //----- 147\n [0, 28, 38, 255], //----- 148\n [19, 33, 38, 255], //----- 149\n [0, 127, 255, 255], //----- 150\n [127, 191, 255, 255],//----- 151\n [0, 82, 165, 255], //----- 152\n [82, 124, 165, 255], //----- 153\n [0, 63, 127, 255], //----- 154\n [63, 95, 127, 255], //----- 155\n [0, 38, 76, 255], //----- 156\n [38, 57, 76, 255], //----- 157\n [0, 19, 38, 255], //----- 158\n [19, 28, 38, 255], //----- 159\n [0, 63, 255, 255], //----- 160\n [127, 159, 255, 255],//----- 161\n [0, 41, 165, 255], //----- 162\n [82, 103, 165, 255], //----- 163\n [0, 31, 127, 255], //----- 164\n [63, 79, 127, 255], //----- 165\n [0, 19, 76, 255], //----- 166\n [38, 47, 76, 255], //----- 167\n [0, 9, 38, 255], //----- 168\n [19, 23, 38, 255], //----- 169\n [0, 0, 255, 255], //----- 170\n [127, 127, 255, 255],//----- 171\n [0, 0, 165, 255], //----- 172\n [82, 82, 165, 255], //----- 173\n [0, 0, 127, 255], //----- 174\n [63, 63, 127, 255], //----- 175\n [0, 0, 76, 255], //----- 176\n [38, 38, 76, 255], //----- 177\n [0, 0, 38, 255], //----- 178\n [19, 19, 38, 255], //----- 179\n [63, 0, 255, 255], //----- 180\n [159, 127, 255, 255],//----- 181\n [41, 0, 165, 255], //----- 182\n [103, 82, 165, 255], //----- 183\n [31, 0, 127, 255], //----- 184\n [79, 63, 127, 255], //----- 185\n [19, 0, 76, 255], //----- 186\n [47, 38, 76, 255], //----- 187\n [9, 0, 38, 255], //----- 188\n [23, 19, 38, 255], //----- 189\n [127, 0, 255, 255], //----- 190\n [191, 127, 255, 255],//----- 191\n [82, 0, 165, 255], //----- 192\n [124, 82, 165, 255], //----- 193\n [63, 0, 127, 255], //----- 194\n [95, 63, 127, 255], //----- 195\n [38, 0, 76, 255], //----- 196\n [57, 38, 76, 255], //----- 197\n [19, 0, 38, 255], //----- 198\n [28, 19, 38, 255], //----- 199\n [191, 0, 255, 255], //----- 200\n [223, 127, 255, 255],//----- 201\n [124, 0, 165, 255], //----- 202\n [145, 82, 165, 255], //----- 203\n [95, 0, 127, 255], //----- 204\n [111, 63, 127, 255], //----- 205\n [57, 0, 76, 255], //----- 206\n [66, 38, 76, 255], //----- 207\n [28, 0, 38, 255], //----- 208\n [33, 19, 38, 255], //----- 209\n [255, 0, 255, 255], //----- 210\n [255, 127, 255, 255],//----- 211\n [165, 0, 165, 255], //----- 212\n [165, 82, 165, 255], //----- 213\n [127, 0, 127, 255], //----- 214\n [127, 63, 127, 255], //----- 215\n [76, 0, 76, 255], //----- 216\n [76, 38, 76, 255], //----- 217\n [38, 0, 38, 255], //----- 218\n [38, 19, 38, 255], //----- 219\n [255, 0, 191, 255], //----- 220\n [255, 127, 223, 255],//----- 221\n [165, 0, 124, 255], //----- 222\n [165, 82, 145, 255], //----- 223\n [127, 0, 95, 255], //----- 224\n [127, 63, 111, 255], //----- 225\n [76, 0, 57, 255], //----- 226\n [76, 38, 66, 255], //----- 227\n [38, 0, 28, 255], //----- 228\n [38, 19, 33, 255], //----- 229\n [255, 0, 127, 255], //----- 230\n [255, 127, 191, 255],//----- 231\n [165, 0, 82, 255], //----- 232\n [165, 82, 124, 255], //----- 233\n [127, 0, 63, 255], //----- 234\n [127, 63, 95, 255], //----- 235\n [76, 0, 38, 255], //----- 236\n [76, 38, 57, 255], //----- 237\n [38, 0, 19, 255], //----- 238\n [38, 19, 28, 255], //----- 239\n [255, 0, 63, 255], //----- 240\n [255, 127, 159, 255],//----- 241\n [165, 0, 41, 255], //----- 242\n [165, 82, 103, 255], //----- 243\n [127, 0, 31, 255], //----- 244\n [127, 63, 79, 255], //----- 245\n [76, 0, 19, 255], //----- 246\n [76, 38, 47, 255], //----- 247\n [38, 0, 9, 255], //----- 248\n [38, 19, 23, 255], //----- 249\n [84, 84, 84, 255], //----- 250\n [118, 118, 118, 255],//----- 251\n [152, 152, 152, 255],//----- 252\n [186, 186, 186, 255],//----- 253\n [220, 220, 220, 255],//----- 254\n [255, 255, 255, 255],//----- 255\n [0, 0, 0, 0] //----- ByLayer - White\n];\n\nexport const LINE_WIDTH = 2;\n\n//颜色材质,对于二维图像来说可能有用,应该不对三维对象使用该材质\nexport class ColorMaterial\n{\n private constructor() { }\n private static _LineMaterialMap = new Map();\n private static _BasicMaterialMap = new Map();\n static GetLineMaterial(color: number): LineBasicMaterial\n {\n if (this._LineMaterialMap.has(color))\n return this._LineMaterialMap.get(color);\n let mat = new LineBasicMaterial({ color: this.GetColor(color) });\n this._LineMaterialMap.set(color, mat);\n return mat;\n }\n\n static GetBasicMaterial(color: number): MeshBasicMaterial\n {\n if (this._BasicMaterialMap.has(color))\n return this._BasicMaterialMap.get(color);\n let mtl = new MeshBasicMaterial({ color: this.GetColor(color) });\n this._BasicMaterialMap.set(color, mtl);\n return mtl;\n }\n\n private static _BasicDoubleSideMaterialMap = new Map();\n static GetBasicMaterialDoubleSide(color: number): MeshBasicMaterial\n {\n if (this._BasicDoubleSideMaterialMap.has(color))\n return this._BasicDoubleSideMaterialMap.get(color);\n let mtl = new MeshBasicMaterial({ color: this.GetColor(color), side: DoubleSide });\n this._BasicDoubleSideMaterialMap.set(color, mtl);\n return mtl;\n }\n\n private static _ConceptualMaterial: Map = new Map();\n static GetConceptualMaterial(color: number)\n {\n if (this._ConceptualMaterial.has(color))\n return this._ConceptualMaterial.get(color);\n\n let shaderParams = GetGoodShaderSimple(\n new Vector3().fromArray(this.GetColor(color).toArray())\n );\n let mtl = new ShaderMaterial(shaderParams);\n this._ConceptualMaterial.set(color, mtl);\n return mtl;\n }\n private static _printConceptualMaterial: ShaderMaterial;\n static GetPrintConceptualMaterial()\n {\n if (!this._printConceptualMaterial)\n {\n this._printConceptualMaterial = new ShaderMaterial({\n uniforms: {\n \"SurfaceColor\": { value: [1.0, 1.0, 1.0] }\n },\n vertexShader: require(\"../GLSL/GoodchSimple.vs\"),\n fragmentShader: require(\"../GLSL/GoodchSimple2.fs\"),\n polygonOffset: true,\n polygonOffsetFactor: 1,\n polygonOffsetUnits: LINE_WIDTH\n });\n }\n return this._printConceptualMaterial;\n }\n\n private static _BasicTransparentMaterialMap: Map = new Map();\n static GetBasicMaterialTransparent(color: number, opacity: number)\n {\n let key = `${color},${opacity}`;\n let mat = this._BasicTransparentMaterialMap.get(key);\n if (mat) return mat;\n mat = new MeshBasicMaterial({ transparent: true, opacity: opacity, side: DoubleSide });\n this._BasicTransparentMaterialMap.set(key, mat);\n return mat;\n }\n\n private static _BasicTransparentMaterialMap2: Map = new Map();\n static GetBasicMaterialTransparent2(color: number, opacity: number)\n {\n let key = `${color},${opacity}`;\n let mat = this._BasicTransparentMaterialMap2.get(key);\n if (mat) return mat;\n mat = new MeshBasicMaterial({ transparent: true, opacity: opacity });\n this._BasicTransparentMaterialMap2.set(key, mat);\n return mat;\n }\n\n static GetColor(color: number)\n {\n let rgb = ColorPalette[color];\n if (rgb)\n return new Color(rgb[0] / 255, rgb[1] / 255, rgb[2] / 255);\n\n //避免无法获得到颜色而产生的错误\n return new Color();\n }\n\n //橡皮筋材质: 黄色 点划线\n static RubberBandMaterial = new LineDashedMaterial({\n color: 0xF0B41E,\n dashSize: 20,\n gapSize: 8,\n });\n\n //极轴材质: 绿色 点划线\n static SnapAxisMaterial = new LineDashedMaterial({\n color: 0x008B00,\n dashSize: 5,\n gapSize: 5\n });\n static PrintLineMatrial = new LineMaterial({\n color: 0x000000,\n linewidth: LINE_WIDTH,\n dashed: false,\n resolution: new Vector2(1000, 1000)\n });\n static GrayTransparentMeshMaterial = new MeshBasicMaterial({\n color: 0xcccccc,\n transparent: true,\n opacity: 0.3,\n });\n static TransparentMeshMaterial = new MeshBasicMaterial({\n transparent: true,\n opacity: 0,\n });\n static TransparentLineMaterial = new MeshBasicMaterial({\n transparent: true,\n opacity: 0,\n });\n}\n","import { Matrix4, Vector3 } from 'three';\r\n\r\n/**\r\n * 坐标系运算.\r\n */\r\nexport class CoordinateSystem\r\n{\r\n Postion: Vector3;\r\n XAxis: Vector3;\r\n YAxis: Vector3;\r\n ZAxis: Vector3;\r\n\r\n constructor(postion?: Vector3, xAxis?: Vector3, yAxis?: Vector3, zAxis?: Vector3)\r\n {\r\n this.Postion = postion || new Vector3(0, 0, 0);\r\n this.XAxis = xAxis || new Vector3(1, 0, 0);\r\n this.YAxis = yAxis || new Vector3(0, 1, 0);\r\n this.ZAxis = zAxis || new Vector3(0, 0, 1);\r\n }\r\n\r\n applyMatrix4(mat4: Matrix4)\r\n {\r\n this.Postion.applyMatrix4(mat4);\r\n let roMat = mat4.clone().setPosition(new Vector3());\r\n this.XAxis.applyMatrix4(roMat);\r\n this.YAxis.applyMatrix4(roMat);\r\n this.ZAxis.applyMatrix4(roMat);\r\n return this;\r\n }\r\n\r\n getMatrix4(): Matrix4\r\n {\r\n let m = new Matrix4();\r\n m.makeBasis(this.XAxis, this.YAxis, this.ZAxis);\r\n m.setPosition(this.Postion);\r\n return m;\r\n }\r\n CopyForm(mat4: Matrix4)\r\n {\r\n this.Postion.setFromMatrixPosition(mat4);\r\n mat4.extractBasis(this.XAxis, this.YAxis, this.ZAxis);\r\n return this;\r\n }\r\n\r\n extractBasis(xAxisA: Vector3, yAxisA: Vector3, zAxisA: Vector3)\r\n {\r\n xAxisA.copy(this.XAxis);\r\n yAxisA.copy(this.YAxis);\r\n zAxisA.copy(this.ZAxis);\r\n }\r\n copy(cs: CoordinateSystem): CoordinateSystem\r\n {\r\n this.Postion.copy(cs.Postion);\r\n this.XAxis.copy(cs.XAxis);\r\n this.YAxis.copy(cs.YAxis);\r\n this.ZAxis.copy(cs.ZAxis);\r\n return this;\r\n }\r\n clone()\r\n {\r\n let r = new CoordinateSystem();\r\n r.Postion = this.Postion.clone();\r\n r.XAxis = this.XAxis.clone();\r\n r.YAxis = this.YAxis.clone();\r\n r.ZAxis = this.ZAxis.clone();\r\n return r;\r\n }\r\n}\r\n","import { ApplicationService } from './Application';\r\nimport { MeshBasicMaterial, MeshStandardMaterial } from 'three';\r\n\r\ninterface IHostApplicationServices\r\n{\r\n Application?: ApplicationService;\r\n DefaultMeshMaterial?: MeshBasicMaterial | MeshStandardMaterial;\r\n UseShadow?: boolean;\r\n ShowHistoryLog?: boolean;\r\n}\r\n\r\nexport let HostApplicationServices: IHostApplicationServices = { ShowHistoryLog: true };\r\n","import { Object3D } from \"three\";\r\n\r\n/**\r\n * 销毁Object对象的Geometry,并不会销毁材质(新版本销毁材质,好像问题不大?)\r\n */\r\nexport function DisposeThreeObj(obj: Object3D)\r\n{\r\n for (let o of obj.children)\r\n {\r\n let oany = o as any;\r\n //文字的geometry缓存保留下来\r\n if (oany.geometry && oany.geometry.name !== \"Text\")\r\n oany.geometry.dispose();\r\n\r\n if (oany.material)\r\n if (Array.isArray(oany.material))\r\n {\r\n for (let m of oany.material)\r\n m.dispose();\r\n }\r\n else\r\n {\r\n oany.material.dispose();\r\n }\r\n\r\n DisposeThreeObj(o);\r\n\r\n // 下面这个代码可能导致Object3d无法复用,删除它应该问题不大\r\n // o.parent = null;\r\n // o.dispatchEvent({ type: \"removed\" });\r\n }\r\n // 下面这个代码可能导致Object3d无法复用,删除它应该问题不大\r\n // obj.children.length = 0;\r\n return obj;\r\n}\r\n\r\nexport function Object3DRemoveAll(obj: Object3D)\r\n{\r\n for (let o of obj.children)\r\n {\r\n o.parent = null;\r\n o.dispatchEvent({ type: \"removed\" });\r\n }\r\n obj.children.length = 0;\r\n return obj;\r\n}\r\n","\r\n\r\n\r\nexport enum Status\r\n{\r\n False = 0,\r\n True = 1,\r\n Canel = -1,\r\n\r\n ConverToCircle = 101,\r\n\r\n DuplicateRecordName = 102,\r\n}\r\n\r\nexport enum UpdateDraw\r\n{\r\n None = 0,\r\n Matrix = 1,\r\n Geometry = 2,\r\n Material = 4,\r\n All = ~(~0 << 6)\r\n}\r\n\r\n/**\r\n * WblockClne时,遇到重复记录的操作方式\r\n */\r\nexport enum DuplicateRecordCloning\r\n{\r\n Ignore = 1,\r\n Replace = 2,\r\n Rename = 3,\r\n}\r\n","\r\n/**\r\n * 场景的渲染类型.\r\n */\r\nexport enum RenderType\r\n{\r\n /**\r\n * 线框模式\r\n */\r\n Wireframe = 1,\r\n\r\n /**\r\n * 概念\r\n */\r\n Conceptual = 2,\r\n\r\n\r\n /**\r\n * 物理着色PBR\r\n */\r\n Physical = 3,\r\n\r\n Jig = 4,\r\n Print = 5,\r\n /**物理带线框 */\r\n Physical2 = 6,\r\n Edge = 7,\r\n\r\n /******************************************** 在视口时的渲染模式 */\r\n /**\r\n * 线框模式\r\n */\r\n WireframePrint = 101,\r\n\r\n /**\r\n * 概念\r\n */\r\n ConceptualPrint = 102,\r\n\r\n\r\n /**\r\n * 物理着色PBR\r\n */\r\n PhysicalPrint = 103,\r\n\r\n JigPrint = 104,\r\n PrintPrint = 105,\r\n /**物理带线框 */\r\n Physical2Print = 106,\r\n}\r\n","export enum StoreageKeys\r\n{\r\n IsLogin = \"isLogin\",\r\n PlatSession = \"platSession\",\r\n PlatToken = \"platToken\",\r\n UserName = \"userName\",\r\n UserPhone = \"userPhone\",\r\n RenderType = \"renderType\",\r\n ExactDrill = \"openExactDrill\",\r\n ConfigName = \"configName_\",\r\n IsNewErp = \"isNewErp\",\r\n RoomName = \"roomName\",\r\n LastOpenFileId = \"lastfid\",\r\n Uid = \"uid\",\r\n Goods = \"Goods_\",\r\n DrillTemp = \"drilltemp_\",\r\n DrillReactor = \"drillRreactor\",\r\n kjlConfig = \"kjl\",\r\n}\r\n","export enum AAType\r\n{\r\n FXAA = 0,//快速近似抗锯齿(性能更好)\r\n SMAA = 1,//多重采样抗锯齿(质量更好)\r\n}\r\n\r\nexport enum ViewDirType\r\n{\r\n FS = 0,\r\n YAS = 1,\r\n ZS = 2,\r\n YS = 3,\r\n QS = 4,\r\n HS = 5,\r\n XN = 6,\r\n}\r\n","import { RenderType } from \"../GraphicsSystem/RenderType\";\r\nimport { DrillingOption } from \"../UI/Store/drillInterface\";\r\nimport { observable, reaction, toJS } from \"mobx\";\r\nimport { StoreageKeys } from \"../Common/StoreageKeys\";\r\nimport { IWineRackOption } from \"../UI/Store/WineRackInterface\";\r\nimport { IBaseOption, IGrooveOption } from \"../UI/Store/BoardInterface\";\r\nimport { IConfigStore } from \"../UI/Store/BoardStore\";\r\nimport { IConfigOption } from \"../UI/Components/Board/UserConfig\";\r\nimport { AAType, ViewDirType } from \"../Common/SystemEnum\";\r\n\r\nexport interface IMaxSizeProps extends IBaseOption\r\n{\r\n height: number;\r\n width: number;\r\n isShow: boolean;\r\n}\r\n\r\nexport interface ISystemConfig extends IBaseOption\r\n{\r\n aaType: AAType;\r\n maxHightightCount: number;\r\n snapSize: number;\r\n background: string;\r\n layoutBackground: string;\r\n}\r\n\r\nexport interface ICursorConfig extends IBaseOption\r\n{\r\n D2: number;\r\n D3: number;\r\n SquareSize: number;\r\n}\r\n\r\nexport class UserConfig implements IConfigStore\r\n{\r\n private readonly _version = 13;\r\n _renderType: RenderType = RenderType.Wireframe;\r\n @observable maxSize: IMaxSizeProps = {\r\n isShow: false,\r\n height: 2440,\r\n width: 1220,\r\n };\r\n @observable private _drillConfigs: Map = new Map();\r\n @observable openDrillingReactor = true;\r\n @observable openAutoCuttingReactor = true;\r\n /**打开将检测排钻是否在板件内*/\r\n @observable openExactDrill = true;\r\n winerackConfig: IWineRackOption;\r\n userConfigName: { [key: string]: string; } = {};\r\n private modeling2HoleRad = 20; //圆造型小于等于该值拆成孔数据\r\n @observable isAdmin = false;\r\n isMaster = false;\r\n rights = [];\r\n @observable kjlConfig: IGrooveOption = {\r\n grooveAddLength: \"0\",\r\n grooveAddWidth: \"0\",\r\n grooveAddDepth: \"1\",\r\n };\r\n @observable SystemConfig: ISystemConfig = {\r\n maxHightightCount: 15000,\r\n snapSize: 15,\r\n aaType: AAType.FXAA,\r\n background: \"#000000\",\r\n layoutBackground: \"#cccccc\",\r\n };\r\n @observable viewDirType: ViewDirType = ViewDirType.XN;\r\n @observable useCtrlRotate = true;\r\n @observable cursorSize: ICursorConfig = {\r\n D2: 1000,\r\n D3: 100,\r\n SquareSize: 10,\r\n };\r\n @observable autoSaveConfig = {\r\n enable: true,\r\n time: 1,\r\n };\r\n @observable showLines = false;\r\n @observable keepConfig = false;\r\n @observable autoClearHistory = true;\r\n @observable chaidanOption = {\r\n changXiuBian: 6,\r\n duanXiuBian: 6,\r\n useDefaultRad: false,\r\n radius: 2.5,\r\n modeling2HoleRad: 20, //圆造型小于等于该值拆成孔数据\r\n isCheckInterfere: false,\r\n noModeingData: \"\", //非造型遭数据\r\n };\r\n @observable autoLines = false;\r\n dimTextHeight = 60;\r\n\r\n @observable performanceConfig = {\r\n fakersweep: false,\r\n disablerefcut: false,\r\n disablecheckgroove: false,\r\n };\r\n lineWidth = 2; //打印线框\r\n @observable forceFilterPxl = true;\r\n checkSealing = false;\r\n sealingColorMap: [string, string][] = [];\r\n constructor()\r\n {\r\n this.Init();\r\n }\r\n Init()\r\n {\r\n let type = Number(localStorage.getItem(StoreageKeys.RenderType));\r\n if (type && type !== RenderType.Edge)\r\n this._renderType = type;\r\n }\r\n set RenderType(t: RenderType)\r\n {\r\n if (t !== this._renderType)\r\n {\r\n this._renderType = t;\r\n this.checkSealing = t === RenderType.Edge;\r\n this.SetRenderTypeEvent();\r\n\r\n localStorage.setItem(StoreageKeys.RenderType, t.toString());\r\n }\r\n }\r\n\r\n get RenderType() { return this._renderType; }\r\n\r\n SetRenderTypeEvent() { }\r\n get DrillConfigs()\r\n {\r\n return this._drillConfigs || new Map();\r\n }\r\n set DrillConfigs(config: Map)\r\n {\r\n observable(this._drillConfigs).replace(config);\r\n this.SetDrillConfigsEvent();\r\n }\r\n SetDrillConfigsEvent() { }\r\n configName = \"default\";\r\n configsNames: string[] = [];\r\n InitOption()\r\n {\r\n this.openDrillingReactor = true;\r\n this.openAutoCuttingReactor = true;\r\n Object.assign(this.maxSize, {\r\n height: 2440,\r\n width: 1220\r\n });\r\n Object.assign(this.kjlConfig, {\r\n grooveAddLength: \"0\",\r\n grooveAddWidth: \"0\",\r\n grooveAddDepth: \"1\"\r\n });\r\n Object.assign(this.chaidanOption, {\r\n changXiuBian: 6,\r\n duanXiuBian: 6,\r\n useDefaultRad: false,\r\n radius: 2.5,\r\n modeling2HoleRad: 20,\r\n noModeingData: \"\",\r\n });\r\n this.dimTextHeight = 60;\r\n }\r\n SaveConfig()\r\n {\r\n return {\r\n option: {\r\n version: this._version,\r\n openDrillingReactor: this.openDrillingReactor,\r\n openAutoCuttingReactor: this.openAutoCuttingReactor,\r\n maxSize: toJS(this.maxSize),\r\n kjlConfig: toJS(this.kjlConfig),\r\n systemConfig: toJS(this.SystemConfig),\r\n viewDirType: this.viewDirType,\r\n useCtrlRotate: this.useCtrlRotate,\r\n cursorSize: toJS(this.cursorSize),\r\n autoSaveConfig: toJS(this.autoSaveConfig),\r\n showLines: this.showLines,\r\n keepConfig: this.keepConfig,\r\n autoClearHistory: this.autoClearHistory,\r\n chaidanOption: toJS(this.chaidanOption),\r\n autoLines: this.autoLines,\r\n dimTextHeight: this.dimTextHeight,\r\n lineWidth: this.lineWidth,\r\n forceFilterPxl: this.forceFilterPxl,\r\n checkSealing: this.checkSealing,\r\n sealingColorMap: this.sealingColorMap\r\n }\r\n };\r\n }\r\n UpdateOption(config: IConfigOption)\r\n {\r\n this.openDrillingReactor = config.option.openDrillingReactor;\r\n this.openAutoCuttingReactor = config.option.openAutoCuttingReactor;\r\n Object.assign(this.maxSize, config.option.maxSize);\r\n Object.assign(this.kjlConfig, config.option.kjlConfig);\r\n this.modeling2HoleRad = config.option.modeling2HoleRad;\r\n\r\n if (config.option.version > 1)\r\n {\r\n Object.assign(this.SystemConfig, config.option.systemConfig);\r\n }\r\n if (config.option.version > 2)\r\n {\r\n this.viewDirType = config.option.viewDirType;\r\n this.useCtrlRotate = config.option.useCtrlRotate;\r\n }\r\n\r\n if (config.option.version > 3)\r\n {\r\n Object.assign(this.cursorSize, config.option.cursorSize);\r\n }\r\n if (config.option.version > 4)\r\n {\r\n Object.assign(this.autoSaveConfig, config.option.autoSaveConfig);\r\n }\r\n if (config.option.version > 5)\r\n {\r\n this.showLines = config.option.showLines;\r\n }\r\n if (config.option.version > 6)\r\n {\r\n this.keepConfig = config.option.keepConfig;\r\n }\r\n if (config.option.version > 7)\r\n {\r\n this.autoClearHistory = config.option.autoClearHistory;\r\n }\r\n if (config.option.version > 8)\r\n {\r\n config.option.chaidanOption.modeling2HoleRad = Number(config.option.chaidanOption.modeling2HoleRad);\r\n Object.assign(this.chaidanOption, config.option.chaidanOption);\r\n this.autoLines = config.option.autoLines;\r\n }\r\n else\r\n this.chaidanOption.modeling2HoleRad = this.modeling2HoleRad;\r\n\r\n if (config.option.version > 9)\r\n this.dimTextHeight = config.option.dimTextHeight;\r\n if (config.option.version > 10)\r\n this.lineWidth = config.option.lineWidth;\r\n\r\n if (config.option.version > 11)\r\n this.forceFilterPxl = config.option.forceFilterPxl;\r\n\r\n if (config.option.version > 12)\r\n {\r\n this.checkSealing = config.option.checkSealing;\r\n this.sealingColorMap = config.option.sealingColorMap;\r\n }\r\n }\r\n}\r\n\r\nexport const userConfig = new UserConfig();\r\n","import { Vector3, Box3 } from 'three';\r\n\r\n/**\r\n * 盒子的切割类型\r\n */\r\nexport enum SplitType\r\n{\r\n X = 0,\r\n Y = 1,\r\n Z = 2,\r\n}\r\n\r\n/**\r\n * 扩展Box3,添加切割方法,体积等\r\n */\r\nexport class Box3Ext extends Box3\r\n{\r\n TempData: any;\r\n get Volume()\r\n {\r\n let size = this.getSize(new Vector3());\r\n return size.x * size.y * size.z;\r\n }\r\n\r\n //每个轴的大小必须大于最小的size\r\n isSolid(minSize = 1)\r\n {\r\n return this.getSize(new Vector3()).toArray().every(x => x > minSize);\r\n }\r\n substract(b: Box3Ext, spaceType: SplitType)\r\n {\r\n let interBox = this.clone().intersect(b) as this;\r\n if (interBox.isEmpty() || !interBox.isSolid())\r\n return [this];\r\n\r\n let p1 = interBox.min.clone().setComponent(spaceType, this.min.getComponent(spaceType));\r\n let p2 = interBox.max.clone().setComponent(spaceType, interBox.min.getComponent(spaceType));\r\n\r\n let p3 = interBox.min.clone().setComponent(spaceType, interBox.max.getComponent(spaceType));\r\n let p4 = interBox.max.clone().setComponent(spaceType, this.max.getComponent(spaceType));\r\n\r\n return [\r\n new Box3Ext(p1, p2),\r\n new Box3Ext(p3, p4)\r\n ].filter(b => b.isSolid());\r\n }\r\n clampSpace(b2: Box3Ext, splitType: SplitType)\r\n {\r\n let interBox = this.clone();\r\n interBox.min.max(b2.min);\r\n interBox.max.min(b2.max);\r\n interBox.min.setComponent(splitType, Math.min(this.max.getComponent(splitType), b2.max.getComponent(splitType)));\r\n interBox.max.setComponent(splitType, Math.max(this.min.getComponent(splitType), b2.min.getComponent(splitType)));\r\n return interBox;\r\n }\r\n intersectsBox(box: Box3, fuzz = 1e-8): boolean\r\n {\r\n return IntersectsBox(this, box, fuzz);\r\n }\r\n}\r\n\r\nexport function IntersectsBox(box1: Box3, box2: Box3, fuzz = 1e-6): boolean\r\n{\r\n return box2.max.x < box1.min.x - fuzz || box2.min.x > box1.max.x + fuzz ||\r\n box2.max.y < box1.min.y - fuzz || box2.min.y > box1.max.y + fuzz ||\r\n box2.max.z < box1.min.z - fuzz || box2.min.z > box1.max.z + fuzz ? false : true;\r\n}\r\n\r\n/**盒子二维面是否相交 */\r\nexport function IntersectBox2(box1: Box3, box2: Box3, fuzz = 1e-3)\r\n{\r\n return box2.max.x < box1.min.x - fuzz || box2.min.x > box1.max.x + fuzz ||\r\n box2.max.y < box1.min.y - fuzz || box2.min.y > box1.max.y + fuzz ? false : true;\r\n}\r\n","\r\n\r\nexport const ISPROXYKEY = \"_isProxy\";\r\n\r\n/**\r\n * 自动对CADObject的属性添加属性记录器,自动调用 `WriteAllObjectRecord`\r\n * 如果属性是数组,那么自动添加`Proxy`.\r\n * 可以使用`ISPROXYKEY`覆盖这个函数的代理行为(使用CADObject.CreateProxyArray快速覆盖)\r\n *\r\n * @param target\r\n * @param property\r\n * @param [descriptor]\r\n */\r\nexport function AutoRecord(\r\n target: { WriteAllObjectRecord: () => void; },\r\n property: string,\r\n descriptor?: PropertyDecorator)\r\n{\r\n let privateKey = '__' + property;\r\n Object.defineProperty(target, property,\r\n {\r\n set: function (value)\r\n {\r\n if (value instanceof Array)\r\n {\r\n if (!this[privateKey])\r\n {\r\n if (value[ISPROXYKEY])\r\n this[privateKey] = value;\r\n else\r\n this[privateKey] = new Proxy(value, {\r\n set: (target, key, value, receiver) =>\r\n {\r\n if (Reflect.get(target, key, receiver) !== value)\r\n this.WriteAllObjectRecord();\r\n return Reflect.set(target, key, value, receiver);\r\n },\r\n get: (target, key, receiver) =>\r\n {\r\n if (key === ISPROXYKEY)\r\n return true;\r\n //实体先被删除后在触发length = xxx\r\n if (key === \"splice\" || key === \"pop\" || key === \"shift\")\r\n this.WriteAllObjectRecord();\r\n return Reflect.get(target, key, receiver);\r\n }\r\n });\r\n }\r\n else\r\n {\r\n let arr = this[privateKey] as Array;\r\n arr.length = 0;\r\n arr.push(...value);\r\n }\r\n }\r\n else\r\n {\r\n let oldv = this[privateKey];\r\n if (oldv !== value)\r\n {\r\n this.WriteAllObjectRecord();\r\n this[privateKey] = value;\r\n }\r\n }\r\n },\r\n get: function ()\r\n {\r\n return this[privateKey];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n }\r\n );\r\n}\r\n","\r\n/**\r\n * CAD对象工厂,通过注册 和暴露的创建方法,动态创建对象\r\n */\r\nexport class CADFactory\r\n{\r\n private constructor() { }\r\n private objectNameMap = new Map();\r\n private static factory = new CADFactory();\r\n static RegisterObject(C: any)\r\n {\r\n this.factory.objectNameMap.set(C.name, C);\r\n }\r\n static RegisterObjectAlias(C: any, name: string)\r\n {\r\n this.factory.objectNameMap.set(name, C);\r\n }\r\n static CreateObject(name: string): any\r\n {\r\n let C = this.factory.objectNameMap.get(name);\r\n if (C) return new C();\r\n }\r\n}\r\n\r\n//可以通过添加装饰器 在类前面(@Factory),自动注册工厂的序列化\r\nexport function Factory(target: Object)\r\n{\r\n CADFactory.RegisterObject(target);\r\n}\r\n","import { CADObject } from './CADObject';\r\n\r\nexport enum RelevancyType\r\n{\r\n General = 0,\r\n Soft = 1,\r\n Hard = 2,\r\n}\r\n\r\n/*\r\nCADObject对象拥有Id属性,用来记录引用关系.\r\n通过id可以得到对应的关联实体,或者记录实体的关联关系.\r\n\r\nObjectId必须使用 Database分配(db里面会存id的列表,以便同时更新id指向实体)\r\n\r\n*/\r\nexport class ObjectId\r\n{\r\n _RelevancyType = RelevancyType.General;\r\n constructor(private index = 0, private obj?: CADObject)\r\n {\r\n }\r\n\r\n get IsErase(): boolean\r\n {\r\n return !this.obj || this.obj.IsErase;\r\n }\r\n set Object(obj: CADObject)\r\n {\r\n this.obj = obj;\r\n }\r\n get Object(): CADObject\r\n {\r\n return this.obj;\r\n }\r\n get Index(): number\r\n {\r\n return this.index;\r\n }\r\n set Index(index: number)\r\n {\r\n this.index = index;\r\n }\r\n}\r\n","import { CADFactory } from './CADFactory';\r\nimport { CADObject } from './CADObject';\r\nimport { Database } from './Database';\r\nimport { ISerialize } from './ISerialize';\r\nimport { ObjectId } from './ObjectId';\r\nimport { Entity } from './Entity/Entity';\r\n\r\n/**\r\n * CAD文件数据\r\n */\r\nexport class CADFiler\r\n{\r\n database: Database;\r\n private readIndex: number = 0;\r\n constructor(protected _datas: any[] = [])\r\n {\r\n }\r\n\r\n Destroy()\r\n {\r\n delete this._datas;\r\n delete this.readIndex;\r\n }\r\n\r\n get Data(): any[]\r\n {\r\n return this._datas;\r\n }\r\n\r\n set Data(data: any[])\r\n {\r\n this._datas = data;\r\n this.Reset();\r\n }\r\n\r\n Clear()\r\n {\r\n this._datas.length = 0;\r\n return this.Reset();\r\n }\r\n Reset()\r\n {\r\n this.readIndex = 0;\r\n return this;\r\n }\r\n\r\n WriteString(str: string)\r\n {\r\n this._datas.push(str);\r\n return this;\r\n }\r\n\r\n ReadString(): string\r\n {\r\n return this._datas[this.readIndex++] as string;\r\n }\r\n\r\n WriteObject(obj: ISerialize)\r\n {\r\n if (!obj)\r\n {\r\n this.Write(\"\");\r\n return;\r\n }\r\n this.WriteString(obj.constructor.name);\r\n obj.WriteFile(this);\r\n\r\n return this;\r\n }\r\n\r\n ReadObject(obj?: T): T\r\n {\r\n let className = this.ReadString();\r\n if (className)\r\n {\r\n if (obj === undefined)\r\n {\r\n obj = CADFactory.CreateObject(className);\r\n if (this.database !== undefined && obj instanceof CADObject)\r\n obj.SetDefaultDb(this.database);\r\n }\r\n obj.ReadFile(this);\r\n return obj;\r\n }\r\n }\r\n\r\n CloneObjects(objects: CADObject[], clonedObjects: CADObject[] = [])\r\n {\r\n for (let o of objects)\r\n this.WriteObject(o);\r\n let count = objects.length;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let obj = this.ReadObject();\r\n if (obj instanceof Entity)\r\n obj.CloneDrawObject(objects[i] as Entity);\r\n clonedObjects.push(obj);\r\n }\r\n\r\n return clonedObjects;\r\n }\r\n\r\n Write(data: any)\r\n {\r\n if (data instanceof ObjectId)\r\n this._datas.push(data.Index);\r\n else\r\n this._datas.push(data);\r\n\r\n return this;\r\n }\r\n\r\n Read(): any\r\n {\r\n return this._datas[this.readIndex++];\r\n }\r\n\r\n ReadArray(count: number): any[]\r\n {\r\n let arr = this._datas.slice(this.readIndex, this.readIndex + count);\r\n this.readIndex += count;\r\n return arr;\r\n }\r\n\r\n //------------------------ID序列化------------------------\r\n /*\r\n Id关联分为三种情况:\r\n 1.普通关联:关联对象未被拷贝时,关联到空对象.\r\n 2.软关联 :关联对象未被拷贝时,关联到原先的对象.\r\n 3.硬关联 :对象被拷贝时,被关联的对象必须也被拷贝.\r\n */\r\n\r\n //-------1.普通关联\r\n WriteObjectId(id: ObjectId): this\r\n {\r\n if (id)\r\n this.Write(id.Index);\r\n else\r\n this.Write(0);\r\n return this;\r\n }\r\n\r\n ReadObjectId(): ObjectId\r\n {\r\n let index = this.Read();\r\n if (this.database)\r\n return this.database.GetObjectId(index, true);\r\n }\r\n\r\n //-------2.软关联\r\n WriteSoftObjectId(id: ObjectId): this\r\n {\r\n return this.WriteObjectId(id);\r\n }\r\n ReadSoftObjectId(): ObjectId\r\n {\r\n return this.ReadObjectId();\r\n }\r\n\r\n //-------3.硬关联\r\n WriteHardObjectId(id: ObjectId): this\r\n {\r\n return this.WriteObjectId(id);\r\n }\r\n ReadHardObjectId()\r\n {\r\n return this.ReadObjectId();\r\n }\r\n\r\n //序列化\r\n ToString()\r\n {\r\n return JSON.stringify(this._datas);\r\n }\r\n FromString(str: string)\r\n {\r\n this._datas = JSON.parse(str);\r\n }\r\n}\r\n","import { Factory } from './CADFactory';\r\nimport { CADFiler } from './CADFiler';\r\nimport { ISerialize } from './ISerialize';\r\nimport { CADObject } from './CADObject';\r\n\r\n/**\r\n * 保存对象创建或者修改时的所有数据记录\r\n */\r\n@Factory\r\nexport class AllObjectData implements ISerialize\r\n{\r\n file: CADFiler;\r\n constructor(obj?: CADObject)\r\n {\r\n this.file = new CADFiler();\r\n if (obj)\r\n obj.WriteFile(this.file);\r\n }\r\n //#region -------------------------File-------------------------\r\n //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化\r\n //对象从文件中读取数据,初始化自身\r\n ReadFile(file: CADFiler)\r\n {\r\n let ver = file.Read();\r\n let data = file.Read();\r\n this.file.Data = data;\r\n return this;\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n file.Write(1);\r\n file.Write(this.file.Data);\r\n return this;\r\n }\r\n}\r\n","import { Factory } from './CADFactory';\r\nimport { CADFiler } from './CADFiler';\r\nimport { ISerialize } from './ISerialize';\r\n@Factory\r\nexport class EraseEntityData implements ISerialize\r\n{\r\n ReadFile(file: CADFiler): this\r\n {\r\n this.isErase = file.Read();\r\n return this;\r\n }\r\n WriteFile(file: CADFiler): this\r\n {\r\n file.Write(this.isErase);\r\n return this;\r\n }\r\n constructor(public isErase = true)\r\n {\r\n }\r\n}\r\n","import { iaop } from 'xaop';\r\nimport { AllObjectData } from './AllObjectData';\r\nimport { ISPROXYKEY } from './AutoRecord';\r\nimport { CADFactory } from './CADFactory';\r\nimport { CADFiler } from './CADFiler';\r\nimport { CommandHistoryRecord } from './CommandHistoryRecord';\r\nimport { Database } from './Database';\r\nimport { EraseEntityData } from './EraseEntityData';\r\nimport { ISerialize } from './ISerialize';\r\nimport { ObjectId } from './ObjectId';\r\n\r\nexport abstract class CADObject\r\n{\r\n protected _Owner: ObjectId;\r\n /**\r\n * 用于储存临时数据\r\n */\r\n public TempData: any;\r\n\r\n //下面的三个数据由Rect2Board使用\r\n __CacheBox__: any;\r\n __CacheBoard__: any;\r\n __CacheSize__: any;\r\n __CachePolyline__: any;\r\n\r\n set Owner(owner: ObjectId)\r\n {\r\n this._Owner = owner;\r\n }\r\n get Owner()\r\n {\r\n return this._Owner;\r\n }\r\n\r\n Destroy()\r\n {\r\n //在效果图同步反应器中,需要知道被删除的实体的id,所以不删除这个属性\r\n // this.objectId = undefined;\r\n this._db = undefined;\r\n }\r\n\r\n //对象被彻底遗弃\r\n GoodBye(): any\r\n {\r\n this.Destroy();\r\n this.Erase(true);\r\n }\r\n\r\n /**\r\n * 当实体异步更新绘制实体完成后触发这个函数.\r\n * Application通过注入的方式得知这个事件,刷新视图显示.\r\n */\r\n @iaop\r\n AsyncUpdated()\r\n {\r\n }\r\n\r\n //-------------------------DB-------------------------\r\n protected _db: Database;\r\n get Db(): Database\r\n {\r\n return this._db;\r\n }\r\n\r\n //对象在加入数据库时,必须指定一个源数据库,否则无法读取引用id.\r\n SetDefaultDb(db: Database)\r\n {\r\n if (!this._db)\r\n this._db = db;\r\n else\r\n console.warn(\"重复设置默认Database!\");\r\n\r\n return this;\r\n }\r\n\r\n //private 私有的方法,暴露给Db的添加对象,方法使用.\r\n //只用对象加入到db中,我们才初始化ObjectId.\r\n //从db池中分配id给自身使用. 除非你创建对象往db里面加,否则不要调用该方法\r\n SetOwnerDatabase(db: Database)\r\n {\r\n if (!this._db)\r\n {\r\n this._db = db;\r\n this.objectId = db.AllocateId();\r\n this.objectId.Object = this;\r\n }\r\n else\r\n console.warn(\"重复设置源Database!\");\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * WblockClone 的时候,id是db分配的,此刻我们只需要设置它的db\r\n */\r\n SetDatabase(db: Database)\r\n {\r\n this._db = db;\r\n }\r\n\r\n //-------------------------DB End-------------------------\r\n\r\n // -------------------------isErase-------------------------\r\n protected _isErase: boolean = false;\r\n get IsErase(): boolean\r\n {\r\n return this._isErase;\r\n }\r\n Erase(isErase: boolean = true)\r\n {\r\n if (isErase === this._isErase)\r\n return;\r\n let undoData = this.UndoRecord();\r\n if (undoData)\r\n undoData.CreateEraseHistory(this, isErase);\r\n this._isErase = isErase;\r\n }\r\n //-------------------------isErase End-------------------------\r\n\r\n // -------------------------id-------------------------\r\n\r\n //操作这个需要谨慎!\r\n objectId: ObjectId;\r\n\r\n get Id(): ObjectId\r\n {\r\n return this.objectId;\r\n }\r\n\r\n // -------------------------id End-------------------------\r\n\r\n // -------------------------File-------------------------\r\n\r\n //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化\r\n //对象从文件中读取数据,初始化自身\r\n ReadFile(file: CADFiler)\r\n {\r\n let ver = file.Read();\r\n //write Id;\r\n let id = file.ReadObjectId();\r\n if (!this.objectId && id)//避免CopyFrom时错误的修改自身Id\r\n {\r\n this.objectId = id;\r\n id.Object = this;\r\n }\r\n this._isErase = file.Read();\r\n if (ver > 1)\r\n this.Owner = file.ReadObjectId();\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n file.Write(2);\r\n file.WriteObjectId(this.objectId);\r\n file.Write(this._isErase);\r\n file.WriteObjectId(this.Owner);\r\n }\r\n //局部撤销\r\n ApplyPartialUndo(undoData: ISerialize)\r\n {\r\n if (undoData instanceof AllObjectData)\r\n {\r\n undoData.file.database = this._db;\r\n undoData.file.Reset();\r\n this.ReadFile(undoData.file);\r\n }\r\n else if (undoData instanceof EraseEntityData)\r\n {\r\n this.Erase(undoData.isErase);\r\n }\r\n }\r\n\r\n //撤销所保存的位置\r\n UndoRecord(): CommandHistoryRecord\r\n {\r\n if (this._db && this.objectId)\r\n return this._db.hm.UndoData;\r\n }\r\n //写入所有的对象数据 以便还原对象\r\n WriteAllObjectRecord(): boolean\r\n {\r\n let undoData = this.UndoRecord();\r\n if (undoData)\r\n {\r\n undoData.WriteObjectSnapshoot(this);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //复制出一个实体,如果存在关联,则指向原关联实体\r\n Clone(): this\r\n {\r\n let newObject = CADFactory.CreateObject(this.constructor.name) as this;\r\n\r\n //备份\r\n let bakId = this.objectId;\r\n this.objectId = undefined;\r\n\r\n let file = new CADFiler();\r\n file.database = this._db;\r\n this.WriteFile(file);\r\n file.Reset();\r\n newObject.ReadFile(file);\r\n\r\n newObject.objectId = undefined;\r\n newObject._db = undefined;\r\n\r\n this.objectId = bakId;\r\n return newObject;\r\n }\r\n\r\n DeepClone(\r\n ownerObject: CADObject,\r\n cloneObejct: CADObject,\r\n idMaping: Map = undefined,\r\n isPrimary = true\r\n ): this\r\n {\r\n return this;\r\n }\r\n\r\n //从一个实体拷贝数据,实体类型必须相同.\r\n CopyFrom(obj: CADObject)\r\n {\r\n let idBak = this.objectId;\r\n let ownerBak = this._Owner;\r\n this.WriteAllObjectRecord();\r\n let f = new CADFiler();\r\n obj.WriteFile(f);\r\n this.ReadFile(f);\r\n this.objectId = idBak;\r\n this._Owner = ownerBak;\r\n }\r\n\r\n //-------------------------File End-------------------------\r\n\r\n //Utils\r\n /**\r\n * 配合 `@AutoRecord` 使用\r\n * 使用这个方法来覆盖AutoRecord的监听行为.\r\n * 这个行为只能用来监听实体添加和实体修改.\r\n * 实体删除行为暂时无法监听\r\n * @param setCallback 设置新的实体到数组时的回调函数\r\n */\r\n protected CreateProxyArray(setCallback: (v: any) => void)\r\n {\r\n return new Proxy([], {\r\n set: (target, key, value, receiver) =>\r\n {\r\n if (Reflect.get(target, key, receiver) !== value)\r\n {\r\n this.WriteAllObjectRecord();\r\n setCallback(value);\r\n }\r\n return Reflect.set(target, key, value, receiver);\r\n },\r\n get: (target, key, receiver) =>\r\n {\r\n if (key === ISPROXYKEY)\r\n return true;\r\n //实体先被删除后在触发length = xxx\r\n if (key === \"splice\" || key === \"pop\" || key === \"shift\")\r\n {\r\n this.WriteAllObjectRecord();\r\n setCallback(undefined);\r\n }\r\n return Reflect.get(target, key, receiver);\r\n }\r\n });\r\n }\r\n}\r\n","import { Box3, Material, Matrix3, Matrix4, MeshStandardMaterial, Object3D, Vector3 } from 'three';\nimport { iaop } from 'xaop';\nimport { HostApplicationServices } from '../../ApplicationServices/HostApplicationServices';\nimport { DisposeThreeObj, Object3DRemoveAll } from '../../Common/Dispose';\nimport { matrixIsCoplane, MatrixPlanarizere } from '../../Common/Matrix4Utils';\nimport { UpdateDraw } from '../../Common/Status';\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\nimport { userConfig } from '../../Editor/UserConfig';\nimport { Box3Ext } from '../../Geometry/Box';\nimport { equaln, equalv3, UpdateBoundingSphere, IdentityMtx4 } from '../../Geometry/GeUtils';\nimport { IntersectOption } from '../../GraphicsSystem/IntersectWith';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { AutoRecord } from '../AutoRecord';\nimport { Factory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { CADObject } from '../CADObject';\nimport { ObjectId } from '../ObjectId';\nimport { PhysicalMaterialRecord } from '../PhysicalMaterialRecord';\n\n/**\n * Entity 是所有图元的基类,绘制的实体都集成该类.\n */\n@Factory\nexport class Entity extends CADObject\n{\n\n IsEmbedEntity = false;\n\n /**\n * 该实体的只有一个渲染类型,任何渲染类型都一个样\n */\n protected OnlyRenderType = false;\n protected _CacheDrawObject = new Map();\n //材质id\n protected materialId: ObjectId;\n protected _Color: number = 7;\n\n //自身坐标系\n protected _Matrix = new Matrix4();\n\n //模块空间的标系\n protected _SpaceOCS: Matrix4 = new Matrix4();\n get SpaceOCS()\n {\n return this._SpaceOCS.clone();\n }\n get SpaceOCSInv()\n {\n return new Matrix4().getInverse(this._SpaceOCS);\n }\n set SpaceOCS(m: Matrix4)\n {\n this.WriteAllObjectRecord();\n this._SpaceOCS.copy(m);\n }\n\n protected _Visible = true;\n\n @AutoRecord GroupId: ObjectId;\n @AutoRecord Template: ObjectId;\n //加工组\n @AutoRecord ProcessingGroupList: ObjectId[] = [];\n\n /**\n * 当AutoUpdate为false时,记录需要更新的标志.\n * 以便延迟更新时找到相应的更新标志.\n */\n NeedUpdateFlag: UpdateDraw = UpdateDraw.None;\n AutoUpdate = true;\n\n set Material(materialId: ObjectId)\n {\n this.WriteAllObjectRecord();\n this.materialId = materialId;\n this.Update();\n }\n\n get Material()\n {\n return this.materialId;\n }\n\n set ColorIndex(color: number)\n {\n if (color !== this._Color)\n {\n this.WriteAllObjectRecord();\n this._Color = color;\n this.Update(UpdateDraw.Material);\n }\n }\n get ColorIndex(): number\n {\n return this._Color;\n }\n /**\n * 炸开实体\n */\n Explode(): Entity[] { return []; }\n\n /**\n * 返回对象的包围框.\n */\n get BoundingBox(): Box3\n {\n return new Box3();\n }\n\n /**\n * 返回对象在自身坐标系下的Box\n */\n get BoundingBoxInOCS(): Box3Ext\n {\n let mtxBak = this._Matrix;\n this._Matrix = IdentityMtx4;\n let box = this.BoundingBox;\n this._Matrix = mtxBak;\n return new Box3Ext().copy(box);\n }\n\n GetBoundingBoxInMtx(mtx: Matrix4): Box3Ext\n {\n return this.BoundingBoxInOCS.applyMatrix4(this.OCS.premultiply(mtx));\n }\n\n get BoundingBoxInSpaceCS(): Box3Ext\n {\n return this.GetBoundingBoxInMtx(this.SpaceOCSInv);\n }\n\n get OCS(): Matrix4\n {\n return this._Matrix.clone();\n }\n\n get OCSNoClone()\n {\n return this._Matrix;\n }\n\n //直接设置实体的矩阵,谨慎使用该函数,没有更新实体.\n set OCS(mat4: Matrix4)\n {\n this._Matrix.copy(mat4);\n }\n get Normal(): Vector3\n {\n return new Vector3().setFromMatrixColumn(this._Matrix, 2);\n }\n get Position(): Vector3\n {\n return new Vector3().setFromMatrixPosition(this._Matrix);\n }\n\n set Position(pt: Vector3)\n {\n let moveX = pt.x - this._Matrix.elements[12];\n let moveY = pt.y - this._Matrix.elements[13];\n let moveZ = pt.z - this._Matrix.elements[14];\n\n if (moveX === 0 && moveY === 0 && moveZ === 0) return;\n\n this.WriteAllObjectRecord();\n this._Matrix.setPosition(pt);\n this._SpaceOCS.elements[12] += moveX;\n this._SpaceOCS.elements[13] += moveY;\n this._SpaceOCS.elements[14] += moveZ;\n this.Update(UpdateDraw.Matrix);\n }\n\n //Z轴归0\n Z0()\n {\n if (this._Matrix.elements[14] === 0) return this;\n\n this.WriteAllObjectRecord();\n this._Matrix.elements[14] = 0;\n this.Update(UpdateDraw.Matrix);\n return this;\n }\n\n //坐标系二维化\n MatrixPlanarizere()\n {\n let z = this._Matrix.elements[10];\n if (equaln(Math.abs(z), 1, 1e-4))\n {\n this.WriteAllObjectRecord();\n MatrixPlanarizere(this._Matrix, false);\n }\n return this;\n }\n\n get OCSInv(): Matrix4\n {\n return new Matrix4().getInverse(this._Matrix);\n }\n\n /**\n * 与指定实体是否共面.\n */\n IsCoplaneTo(e: Entity): boolean\n {\n return matrixIsCoplane(this._Matrix, e.OCS, 1e-4);\n }\n\n /**\n * 测试两个实体的包围盒是否相交.\n */\n BoundingBoxIntersectWith(en: Entity): boolean\n {\n let box = this.BoundingBox;\n let box2 = en.BoundingBox;\n return box && box2 && box.intersectsBox(box2);\n }\n\n //#region Draw\n\n ClearDraw()\n {\n if (this._drawObject)\n {\n DisposeThreeObj(this._drawObject);\n this._drawObject = undefined;\n }\n\n for (let [, obj] of this._CacheDrawObject)\n DisposeThreeObj(obj);\n this._CacheDrawObject.clear();\n return this;\n }\n ClearDrawOfJig()\n {\n let jig = this._CacheDrawObject.get(RenderType.Jig);\n if (jig)\n this._CacheDrawObject.delete(RenderType.Jig);\n for (let [type, obj] of this._CacheDrawObject)\n DisposeThreeObj(obj);\n this._CacheDrawObject.clear();\n if (jig)\n this._CacheDrawObject.set(RenderType.Jig, jig);\n }\n\n get IsOnlyRender()\n {\n return this.OnlyRenderType;\n }\n _drawObject: Object3D;\n\n get DrawObject()\n {\n if (this._drawObject)\n return this._drawObject;\n\n this._drawObject = new Object3D();\n if (!this.IsEmbedEntity)\n this._drawObject.userData.Entity = this;\n if (this.IsVisible)\n {\n this._CurRenderType = userConfig.RenderType;\n let obj = this.GetDrawObjectFromRenderType(userConfig.RenderType);\n if (obj) this._drawObject.add(obj);\n }\n else\n this._drawObject.visible = false;\n return this._drawObject;\n }\n\n get JigObject()\n {\n let obj = this.GetDrawObjectFromRenderType(RenderType.Jig);\n if (obj && !this.IsEmbedEntity)\n obj.userData.Entity = this;\n return obj;\n }\n\n DestroyJigObject()\n {\n let obj = this._CacheDrawObject.get(RenderType.Jig);\n if (obj)\n {\n this._CacheDrawObject.delete(RenderType.Jig);\n DisposeThreeObj(obj);\n if (obj.parent)\n obj.parent.remove(obj);\n }\n }\n\n //当前绘制类型,在.DrawObject 和 UpdateRenderType中初始化和更新\n protected _CurRenderType: RenderType;\n UpdateRenderType(type: RenderType)\n {\n if (this._CurRenderType !== type || this.DrawObject.children.length === 0)\n {\n this._CurRenderType = type;\n if ((this.OnlyRenderType && this.DrawObject.children.length > 0) || !this.Visible) return;\n Object3DRemoveAll(this.DrawObject);\n let obj = this.GetDrawObjectFromRenderType(type);\n if (obj) this.DrawObject.add(obj);\n }\n }\n\n GetDrawObjectFromRenderType(renderType: RenderType = RenderType.Wireframe): Object3D\n {\n if (this.OnlyRenderType)\n {\n if (renderType === RenderType.Jig)\n return;\n if (renderType < 100)\n renderType = RenderType.Wireframe;\n else\n renderType = RenderType.WireframePrint;\n }\n\n if (this._CacheDrawObject.has(renderType))\n {\n return this._CacheDrawObject.get(renderType);\n }\n else\n {\n let drawObj = this.InitDrawObject(renderType);\n if (drawObj === undefined)\n {\n if (renderType > 100)//如果实体没有实现打印类型,那么就使用原先的实体的渲染类型\n return this.GetDrawObjectFromRenderType(renderType - 100);\n return;\n };\n\n //矩阵直接使用指针,因为已经关闭自动更新,所以矩阵不会被Object3D修改.\n drawObj.matrixAutoUpdate = false;\n drawObj.matrix = this._Matrix;\n drawObj.updateMatrixWorld(true);\n drawObj.traverse(UpdateBoundingSphere);\n\n if (!this.IsEmbedEntity)\n drawObj.userData.Entity = this;\n\n this._CacheDrawObject.set(renderType, drawObj);\n return drawObj;\n }\n }\n\n /**\n * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体.\n */\n protected InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\n {\n return undefined;\n }\n\n //实体绘制更新版本号\n __UpdateVersion__ = 0;\n\n /**\n * 当实体数据改变时,绘制的实体必须做出改变.供框架调用\n */\n @iaop\n Update(mode = UpdateDraw.All)\n {\n this.__UpdateVersion__++;\n this.NeedUpdateFlag |= mode;\n if (this.AutoUpdate)\n this.DeferUpdate();\n }\n\n //三维实体总是一起生成线框实体和网格实体,这个通知更新,然后统一更新就好了\n //避免重复更新\n UpdateDrawGeometry() { }\n\n DeferUpdate()\n {\n let mode = this.NeedUpdateFlag;\n if (mode === 0) return;\n\n if (mode & UpdateDraw.Geometry && this._CacheDrawObject.size > 0)\n this.UpdateDrawGeometry();\n\n this.UpdateVisible();\n\n let isJigIng = this._CacheDrawObject.has(RenderType.Jig);\n for (let [type, obj] of this._CacheDrawObject)\n {\n if (isJigIng && type !== RenderType.Jig)\n continue;\n\n if (mode & UpdateDraw.Geometry)\n {\n if (obj.userData.IsClone)\n {\n let parent = obj.parent;\n DisposeThreeObj(obj);\n this._CacheDrawObject.delete(type);\n let newObj = this.GetDrawObjectFromRenderType(type);\n if (parent)\n {\n parent.remove(obj);\n parent.add(newObj);\n }\n obj = newObj;\n }\n else\n this.UpdateDrawObject(type, obj);\n }\n\n if (mode & UpdateDraw.Material)\n this.UpdateDrawObjectMaterial(type, obj);\n\n if (mode & UpdateDraw.Matrix || mode & UpdateDraw.Geometry)\n {\n obj.updateMatrixWorld(true);\n // if (this.Id)//如果这个是Jig实体,那么我们更新这个盒子球似乎也没有意义 (虽然这在某些情况能改进性能,但是在绘制圆弧的时候,因为没有更新圆弧的盒子,导致绘制出来的圆弧无法被选中)\n obj.traverse(UpdateBoundingSphere);\n }\n\n }\n this.NeedUpdateFlag = UpdateDraw.None;\n }\n\n /**\n * 当实体需要更新时,需要重载该方法,实现实体更新\n */\n UpdateDrawObject(type: RenderType, en: Object3D)\n {\n\n }\n\n /**\n * 当实体需要被更新时,更新实体材质\n */\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material)\n {\n\n }\n\n protected get MeshMaterial()\n {\n if (this.materialId && this.materialId.Object)\n return (this.materialId.Object).Material as MeshStandardMaterial;\n return HostApplicationServices.DefaultMeshMaterial;\n }\n\n /**\n * 更新实体Jig状态时的材质\n */\n UpdateJigMaterial(color = 8)\n {\n }\n RestoreJigMaterial()\n {\n for (let [type, en] of this._CacheDrawObject)\n this.UpdateDrawObjectMaterial(type, en);\n }\n get Visible()\n {\n return this._Visible;\n }\n set Visible(v: boolean)\n {\n if (v !== this._Visible)\n {\n this.WriteAllObjectRecord();\n this._Visible = v;\n this.UpdateVisible();\n }\n }\n\n private get IsVisible()\n {\n return !this._isErase && this._Visible;\n }\n\n UpdateVisible()\n {\n if (this._drawObject)\n {\n this._drawObject.visible = this.IsVisible;\n if (this.IsVisible)\n this.UpdateRenderType(userConfig.RenderType);\n }\n }\n\n //#endregion\n\n GoodBye()\n {\n super.GoodBye();\n if (this._drawObject && this._drawObject.parent)\n this._drawObject.parent.remove(this._drawObject);\n this.ClearDraw();\n }\n\n Erase(isErase: boolean = true)\n {\n if (isErase === this._isErase)\n return;\n this.__UpdateVersion__++;\n super.Erase(isErase);\n this.UpdateVisible();\n this.EraseEvent(isErase);\n }\n\n @iaop\n EraseEvent(isErase: boolean)\n {\n\n }\n /**\n * 使用统一的方法设置对象的矩阵.\n * 需要对缩放矩形进行重载.避免对象矩阵不是单位矩阵\n */\n ApplyMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n\n if (equaln(m.getMaxScaleOnAxis(), 1))\n {\n let xA = new Vector3();\n let yA = new Vector3();\n let zA = new Vector3();\n m.extractBasis(xA, yA, zA);\n this._Matrix.multiplyMatrices(m, this._Matrix);\n this._SpaceOCS.multiplyMatrices(m, this._SpaceOCS);\n if (!equalv3(xA.clone().cross(yA).normalize(), zA))\n this.ApplyMirrorMatrix(m);\n else\n this.Update(UpdateDraw.Matrix);\n }\n else\n {\n this.ApplyScaleMatrix(m);\n }\n return this;\n }\n protected ApplyScaleMatrix(m: Matrix4): this\n {\n return this;\n }\n protected ApplyMirrorMatrix(m: Matrix4): this\n {\n return this;\n }\n\n GetGripPoints(): Array\n {\n return [];\n }\n\n MoveGripPoints(indexList: number[], vec: Vector3)\n {\n\n }\n\n /**\n *\n * @param snapMode 捕捉模式(单一)\n * @param pickPoint const\n * @param lastPoint const\n * @param viewXform const 最近点捕捉需要这个变量\n * @returns object snap points\n */\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform?: Matrix3\n ): Vector3[]\n {\n return [];\n }\n\n GetStretchPoints(): Array\n {\n return [];\n }\n\n /**\n * 拉伸夹点,用于Stretch命令\n *\n * @param {Array} indexList 拉伸点索引列表.\n * @param {Vector3} vec 移动向量\n * @memberof Entity\n */\n MoveStretchPoints(indexList: Array, vec: Vector3)\n {\n\n }\n IntersectWith(curve: Entity, intType: IntersectOption): Vector3[] { return; }\n\n //#region -------------------------File-------------------------\n\n Clone(): this\n {\n let ent = super.Clone();\n ent._CurRenderType = this._CurRenderType;\n ent.Template = undefined;\n ent.CloneDrawObject(this);\n return ent;\n }\n\n CloneDrawObject(from: this)\n {\n for (let [type, obj] of from._CacheDrawObject)\n {\n let oldUserDaata = obj.userData;\n obj.traverse(o => o.userData = {});\n let newObj = obj.clone();\n obj.userData = oldUserDaata;\n obj.userData.IsClone = true;\n\n newObj.matrix = this._Matrix;\n newObj.userData = { Entity: this };\n newObj.userData.IsClone = true;\n this._CacheDrawObject.set(type, newObj);\n }\n this.NeedUpdateFlag = UpdateDraw.None;\n }\n\n static __ReadFileIng__: boolean;\n __ReadFileIng__: boolean;\n\n get ReadFileIng()\n {\n return this.__ReadFileIng__ || Entity.__ReadFileIng__;\n }\n\n /**\n * 从文件读取,序列化自身,如果需要,重载_ReadFile\n */\n ReadFile(file: CADFiler)\n {\n this.__ReadFileIng__ = true;\n this._ReadFile(file);\n this.Update();\n this.__ReadFileIng__ = false;\n }\n\n //对象从文件中读取数据,初始化自身\n protected _ReadFile(file: CADFiler)\n {\n let ver = file.Read();\n super.ReadFile(file);\n this._Color = file.Read();\n this.materialId = file.ReadHardObjectId();\n this._Matrix.fromArray(file.Read());\n\n if (ver === 2)\n this.Owner = file.ReadObjectId();\n\n if (ver > 3)\n this.Template = file.ReadObjectId();\n\n if (ver > 4)\n this.GroupId = file.ReadHardObjectId();\n\n if (ver > 5)\n this._Visible = file.Read();\n if (ver > 6)\n this._SpaceOCS.fromArray(file.Read());\n if (ver > 7)\n {\n let count = file.Read();\n this.ProcessingGroupList.length = 0;\n for (let i = 0; i < count; i++)\n this.ProcessingGroupList.push(file.ReadHardObjectId());\n }\n }\n //对象将自身数据写入到文件.\n WriteFile(file: CADFiler)\n {\n file.Write(8);\n super.WriteFile(file);\n file.Write(this._Color);\n file.WriteHardObjectId(this.materialId);\n file.Write(this._Matrix.toArray());\n file.WriteObjectId(this.Template);\n file.WriteHardObjectId(this.GroupId);\n file.Write(this._Visible);\n file.Write(this._SpaceOCS.toArray());\n\n file.Write(this.ProcessingGroupList.length);\n for (let id of this.ProcessingGroupList)\n file.WriteHardObjectId(id);\n }\n //局部撤销\n ApplyPartialUndo(undoData: CADObject)\n {\n super.ApplyPartialUndo(undoData);\n }\n\n CopyFrom(obj: CADObject)\n {\n let templateIdBak = this.Template;\n super.CopyFrom(obj);\n this.Update();\n this.Template = templateIdBak;\n }\n\n //#endregion\n}\n","import { equaln } from \"../Geometry/GeUtils\";\nimport { clamp as CLAMP, FixedNotZero } from \"./Utils\";\n\nlet abs = Math.abs;\nlet acos = Math.acos;\nlet acosh = Math.acosh;\nlet asin = Math.asin;\nlet asinh = Math.asinh;\nlet atan = Math.atan;\nlet atanh = Math.atanh;\nlet atan2 = Math.atan2;\nlet ceil = Math.ceil;\nlet cbrt = Math.cbrt;\nlet expm1 = Math.expm1;\nlet clz32 = Math.clz32;\nlet cos = Math.cos;\nlet cosh = Math.cosh;\nlet exp = Math.exp;\nlet floor = Math.floor;\nlet fround = Math.fround;\nlet hypot = Math.hypot;\nlet imul = Math.imul;\nlet log = Math.log;\nlet log1p = Math.log1p;\nlet log2 = Math.log2;\nlet log10 = Math.log10;\nlet max = Math.max;\nlet min = Math.min;\nlet pow = Math.pow;\nlet random = Math.random;\nlet round = Math.round;\nlet sign = Math.sign;\nlet sin = Math.sin;\nlet sinh = Math.sinh;\nlet sqrt = Math.sqrt;\nlet tan = Math.tan;\nlet tanh = Math.tanh;\nlet trunc = Math.trunc;\nlet E = Math.E;\nlet LN10 = Math.LN10;\nlet LN2 = Math.LN2;\nlet LOG10E = Math.LOG10E;\nlet LOG2E = Math.LOG2E;\nlet PI = Math.PI;\nlet SQRT1_2 = Math.SQRT1_2;\nlet SQRT2 = Math.SQRT2;\nlet clamp = CLAMP;\nlet eq = equaln;\n\nlet OPERATORS = new Set([\"+\", \"-\", \"*\", \"/\"]);\n\n/**\n * eval2(\"+10\", { L: 100 }, \"L\")\n * @param expr\n * @param [params]\n * @param [defaultParam] 当输入 +10 这样的表达式时,设置默认的操作变量\n * @returns 计算结果\n */\nexport function eval2(expr: string, params?: {}, defaultParam?: string): number\n{\n let code = \"\";\n if (params)\n for (let name in params)\n code += `let ${name} = ${params[name]};`;\n\n if (defaultParam)\n {\n expr = expr.trimLeft();\n if (expr[0] && OPERATORS.has(expr[0]))\n expr = defaultParam + expr;\n }\n\n code += expr;\n\n let result = eval(code);\n\n if (typeof result === \"function\")\n return result();\n\n return Number(result);//防止bigint乱入\n}\n\nexport function safeEval(expr: string, params?: {}, defaultParam?: string): number\n{\n try\n {\n return eval2(expr, params);\n }\n catch (error)\n {\n return NaN;\n }\n}\n\nexport function CheckExpr(expr: string, params: any)\n{\n let resultObj = { res: undefined, error: undefined };\n try\n {\n resultObj.res = eval2(expr, params);\n }\n catch (error)\n {\n resultObj.error = error;\n }\n return resultObj;\n}\n\nconst Reg_Expr = /\\{[^\\}]+\\}/g;\n/**解析大括号内的 */\nexport function ParseExpr(expr: string, params?: {})\n{\n let strs = expr.match(Reg_Expr);\n if (!strs) return expr;\n for (let str of strs)\n expr = expr.replace(str, FixedNotZero(safeEval(str.slice(1, -1), params), 2));\n return expr;\n}\n","import { Object3D } from \"three\";\nimport { Entity } from \"../DatabaseServices/Entity/Entity\";\nimport { equaln } from \"../Geometry/GeUtils\";\nimport { safeEval } from \"./eval\";\nimport { StoreageKeys } from \"./StoreageKeys\";\nimport { ObjectId } from \"../DatabaseServices/ObjectId\";\n\n//仅数字构成的3位字符串(不以0开头)\nexport const digitStrReg = /^[^0\\D]\\d{0,2}$/;\nexport const commandReg = /[^A-Za-z0-9]/g;\n//仅可输入英文\nexport const onlyEnExpReg = /[^A-Za-z]/g;\n/**替换收口条柜名后缀 */\nexport const ClosingStripReg = /[左|右|上]{1}收口$/;\nexport const FileFormatReg = /^\\[(\\d+,){5}[(true)|(false)].+\\]$/;\n\n/**扣除封边是否相连和连接共用精度 */\nexport const LINK_FUZZ = 1e-3;\n\nexport function IsNumber(keyCode: number)\n{\n return (keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105);\n}\nexport function IsChar(keyCode: number)\n{\n return keyCode >= 65 && keyCode <= 90;\n}\nexport function isLetter(s: string)\n{\n let code = s.charCodeAt(0);\n return (code >= 97 && code <= 122) || (code >= 65 && code <= 90);\n}\nexport function isNum(s: string)\n{\n return !isNaN(safeEval(s));\n}\n\nexport function clamp(value: number, min: number, max: number)\n{\n return Math.max(min, Math.min(max, value));\n}\n\nexport function FixIndex(index: number, arr: Array | number)\n{\n let count = (arr instanceof Array) ? arr.length : arr;\n if (index < 0)\n return count + index;\n else if (index >= count)\n return index - count;\n else\n return index;\n}\n//格式化日期\nexport function formateDate(date: Date, fmt: string)\n{\n let o = {\n \"M+\": date.getMonth() + 1, //月份\n \"d+\": date.getDate(), //日\n \"h+\": date.getHours(), //小时\n \"m+\": date.getMinutes(), //分\n \"s+\": date.getSeconds(), //秒\n \"q+\": Math.floor((date.getMonth() + 3) / 3), //季度\n \"S\": date.getMilliseconds() //毫秒\n };\n //如:yyyy\n if (/(y+)/.test(fmt))\n {\n fmt = fmt.replace(RegExp.$1, (date.getFullYear().toString()).substr(4 - RegExp.$1.length));\n }\n //yyyy-MM-dd hh:mm:ss\n for (let k in o)\n {\n if (new RegExp(\"(\" + k + \")\").test(fmt))\n {\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n }\n }\n return fmt;\n}\n\n//判断v在v1和v2之间.(v1>v2 or v2>v1)\nexport function isBetweenNums(v1: number, v2: number, v: number, fuzz = 1e-8)\n{\n if (v1 > v2) [v1, v2] = [v2, v1];\n return equaln(v, clamp(v, v1, v2), fuzz);\n}\n\n//深复制对象数组\nexport function sliceDeep(arr: object[], start?: number, end?: number): object[]\n{\n return arr.slice(start, end).map((obj) => Object.assign({}, obj));\n}\n\nfunction fallbackCopyTextToClipboard(text)\n{\n let textArea = document.createElement(\"textarea\");\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try\n {\n let successful = document.execCommand('copy');\n } catch (err)\n {\n }\n document.body.removeChild(textArea);\n}\nexport async function copyTextToClipboard(text: string)\n{\n if (!navigator[\"clipboard\"])\n {\n fallbackCopyTextToClipboard(text);\n return;\n }\n return await navigator[\"clipboard\"].writeText(text);\n}\n\n//ref: https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\n\n/**\n * 读取剪切板的字符串\n */\nexport async function readClipboardText()\n{\n if (navigator[\"clipboard\"])\n return await navigator[\"clipboard\"].readText();\n return \"\";\n}\n\n//使用定点表示法来格式化一个数,小数点后面不尾随0. 如 FixedNotZero(1.1 , 3) => 1.1\nexport function FixedNotZero(v: number | string, fractionDigits: number = 0)\n{\n if (typeof v === \"string\")\n v = parseFloat(v);\n if (isNaN(v)) return \"\";\n if (equaln(v, 0)) return \"0\";\n let str = v.toFixed(fractionDigits);\n let commonIndex = str.indexOf(\".\");\n if (commonIndex !== -1)\n {\n let zeroCount = 0;\n let strCount = str.length;\n for (let l = strCount; l--;)\n {\n if (str[l] === \"0\")\n zeroCount++;\n else\n break;\n }\n if (zeroCount > 0)\n {\n if (zeroCount === (strCount - commonIndex - 1))\n zeroCount++;\n return str.slice(0, strCount - zeroCount);\n }\n }\n return str;\n}\n\n/**\n * To fixed\n * @param v\n * @param [fractionDigits]\n * @returns\n */\nexport function ToFixed(v: number, fractionDigits: number = 5)\n{\n if (equaln(v, 0, Math.pow(0.1, fractionDigits))) return \"0\";\n return v.toFixed(fractionDigits);\n}\n\nexport function GetEntity(obj: Object3D): Entity | undefined\n{\n while (obj)\n {\n if (obj.userData.Entity)\n return obj.userData.Entity;\n\n obj = obj.parent;\n }\n}\n\nexport function IsEntity(obj: Object3D): boolean\n{\n return GetEntity(obj) instanceof Entity;\n}\n\nexport function IsNoErase(id: ObjectId): boolean\n{\n return id && !id.IsErase;\n}\n\n/**\n * 原图地址转换为对应缩略图地址\n */\nexport function getThumbsUrl(url: string)\n{\n return url ? url.replace(/\\/\\w*\\.\\w*$/, mat => \"/thumbs\" + mat.replace(\".\", \"_100.\")) : \"\";\n}\n\n/**\n * 快速判断a是不是被修改了\n */\nexport function equalObject(a: Object, b: Object)\n{\n for (let key in a)\n {\n if (a[key] !== b[key])\n return false;\n }\n\n return true;\n}\n\nexport function cloneObject(a: T): T\n{\n return Object.assign({}, a);\n}\n\nexport function Uint8ArrayToBase64(bytes: Uint8Array)\n{\n let binary = \"\";\n let len = bytes.byteLength;\n for (let i = 0; i < len; i++)\n binary += String.fromCharCode(bytes[i]);\n return window.btoa(binary);\n}\n\n/**转换服务端获取的文件大小 */\nexport function getFileSize(size: number)\n{\n let units = [\"B\", \"KB\", \"MB\", \"GB\"];\n for (let u of units)\n {\n if (size > 1 && size < 1024)\n return FixedNotZero(size, 2) + u;\n else\n size /= 1024;\n }\n}\n\nexport function GetIndexDBID(id: string)\n{\n return localStorage.getItem(StoreageKeys.Uid) + \":\" + id;\n}\n\nexport function FixDigits(v: number, fractionDigits = 2)\n{\n return parseFloat(v.toFixed(fractionDigits));\n}\n","import { Box3, BufferGeometry, Geometry, Line, Matrix4, Mesh, Object3D, Vector, Vector2, Vector3 } from 'three';\nimport { ToFixed } from '../Common/Utils';\n\nexport const IdentityMtx4 = new Matrix4();\nexport const ZeroVec = new Vector3();\nexport const XAxis = new Vector3(1, 0, 0);\nexport const XAxisN = new Vector3(-1, 0, 0);\nexport const YAxis = new Vector3(0, 1, 0);\nexport const YAxisN = new Vector3(0, -1, 0);\nexport const ZAxis = new Vector3(0, 0, 1);\n\nexport function AsVector2(p: { x: number, y: number; })\n{\n return new Vector2(p.x, p.y);\n}\nexport function AsVector3(p: { x: number, y: number, z?: number; })\n{\n return new Vector3(p.x, p.y, p.z);\n}\n\n/**\n * 判断一维线段a和b是否存在交集\n */\nexport function isIntersect(amin: number, amax: number, bmin: number, bmax: number, eps = 0)\n{\n return Math.max(amin, bmin) < Math.min(amax, bmax) + eps;\n}\n\nexport function isIntersect2(a1: number, a2: number, b1: number, b2: number, eps = 0)\n{\n if (a1 > a2) [a1, a2] = [a2, a1];\n if (b1 > b2) [b1, b2] = [b2, b1];\n return Math.max(a1, b1) < Math.min(a2, b2) + eps;\n}\n\n/**\n * 旋转一个点,旋转中心在原点\n * @param {Vector3} p 点\n * @param {number} a 角度.\n * @returns {Vector3} 返回pt不拷贝.\n */\nexport function rotatePoint(p: Vector3, a: number): Vector3\n{\n let s = Math.sin(a);\n let c = Math.cos(a);\n\n let x = p.x * c - p.y * s;\n let y = p.x * s + p.y * c;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function equaln(v1: number, v2: number, fuzz = 1e-5)\n{\n return Math.abs(v1 - v2) <= fuzz;\n}\n\nexport function equalnn(dis = 5)\n{\n let fuzz = 0.1 ** dis;\n return function (v1: number, v2: number)\n {\n return Math.abs(v1 - v2) <= fuzz;\n };\n}\n\ninterface P2\n{\n x: number; y: number;\n}\n\nexport function equalv3(v1: Vector3, v2: Vector3, fuzz = 1e-8)\n{\n return equaln(v1.x, v2.x, fuzz) && equaln(v1.y, v2.y, fuzz) && equaln(v1.z, v2.z, fuzz);\n}\nexport function equalv2(v1: P2, v2: P2, fuzz = 1e-8)\n{\n return equaln(v1.x, v2.x, fuzz) && equaln(v1.y, v2.y, fuzz);\n}\n\n/**\n * 按照极坐标的方式移动一个点\n *\n * @export\n * @template\n * @param {T} v 向量(2d,3d)\n * @param {number} an 角度\n * @param {number} dis 距离\n * @returns {T}\n */\nexport function polar(v: T, an: number, dis: number): T\n{\n v.x += Math.cos(an) * dis;\n v.y += Math.sin(an) * dis;\n return v;\n}\n\nexport function angle(v: Vector3 | Vector2): number\n{\n let angle = Math.atan2(v.y, v.x);\n if (equaln(angle, 0, 1e-8)) return 0;\n if (angle < 0) angle += Math.PI * 2;\n return angle;\n}\n\n/**\n * 求两个向量的夹角,顺时针为负,逆时针为正\n *\n * @param {Vector3} v1\n * @param {Vector3} v2\n * @param {Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1\n * @returns\n */\nexport function angleTo(v1: Vector3, v2: Vector3, ref: Vector3 = ZAxis): number\n{\n if (v1.equals(ZeroVec) || v2.equals(ZeroVec))\n return 0;\n\n v1 = v1.clone();\n v2 = v2.clone();\n\n if (ref !== ZAxis && !ref.equals(ZAxis))\n {\n ref = ref.clone();\n //任意轴坐标系. 使用相机的构造矩阵.\n ref.multiplyScalar(-1);\n let up = getLoocAtUpVec(ref);\n let refOcs = new Matrix4();\n refOcs.lookAt(ZeroVec, ref, up);\n let refOcsInv = new Matrix4().getInverse(refOcs);\n v1.applyMatrix4(refOcsInv);\n v2.applyMatrix4(refOcsInv);\n v1.z = 0;\n v2.z = 0;\n }\n\n if (v1.equals(ZeroVec) || v2.equals(ZeroVec))//修复,这里有可能被更改为0\n return 0;\n\n //平行的向量返回0向量,不需要归一化\n let cv = new Vector3().crossVectors(v1, v2);\n if (equalv3(cv, ZeroVec))\n return 0;\n\n cv.normalize();\n return equaln(cv.z, 0) ? v1.angleTo(v2) : v1.angleTo(v2) * cv.z;\n}\n\nexport function getLoocAtUpVec(dir: Vector3): Vector3\n{\n if (dir.equals(ZeroVec))\n {\n throw (\"zero vector\");\n }\n let norm = dir.clone().normalize();\n if (norm.equals(ZAxis))\n {\n return new Vector3(0, 1, 0);\n }\n else if (norm.equals(ZAxis.clone().negate()))\n {\n return new Vector3(0, -1, 0);\n }\n else\n {\n let xv: Vector3 = new Vector3();\n xv.crossVectors(ZAxis, norm);\n\n let up = new Vector3();\n up.crossVectors(norm, xv);\n return up;\n }\n}\n\nexport function createLookAtMat4(dir: Vector3): Matrix4\n{\n let up = getLoocAtUpVec(dir);\n let mat = new Matrix4();\n mat.lookAt(ZeroVec, dir, up);\n return mat;\n}\n\n/**\n * 判断2个向量是不是平行,尽量传入单位向量,才能保证计算精度\n */\nexport function isParallelTo(v1: Vector3, v2: Vector3, fuzz = 1e-8): boolean\n{\n return v1.clone().cross(v2).lengthSq() < fuzz;\n}\n\n/**\n * 垂直向量\n */\nexport function isPerpendicularityTo(v1: Vector3, v2: Vector3, fuzz = 1e-8)\n{\n return equaln(v1.dot(v2), 0, fuzz);\n}\n\nexport function ptToString(v: Vector3, fractionDigits: number = 3): string\n{\n return v.toArray().map(o => ToFixed(o, fractionDigits)).join(\",\");\n}\n\nexport function midPoint(v1: Vector3, v2: Vector3): Vector3\n{\n return v1.clone().add(v2).multiplyScalar(0.5);\n}\nexport function midPoint2(v1: Vector2, v2: Vector2): Vector2\n{\n return v1.clone().add(v2).multiplyScalar(0.5);\n}\n\n/**\n * 获得Three对象的包围盒.\n * @param obj\n * @param [updateMatrix] 是否应该更新对象矩阵\n * @returns box\n */\nexport function GetBox(obj: Object3D, updateMatrix?: boolean): Box3\n{\n let box = new Box3();\n if (updateMatrix) obj.updateMatrixWorld(false);\n if (!obj.visible) return box;\n\n obj.traverseVisible(o =>\n {\n if (!o.visible) return;\n //@ts-ignore\n let geo = o.geometry as BufferGeometry;\n if (geo)\n {\n if (!geo.boundingBox)\n geo.computeBoundingBox();\n let geoBox = geo.boundingBox.clone().applyMatrix4(o.matrixWorld);\n if (geoBox.max.z > 1e5)\n console.log();\n box.union(geoBox);\n }\n });\n return box;\n}\n\nexport function GetBoxArr(arr: Array): Box3\n{\n let box = new Box3();\n for (let o of arr)\n {\n let b = GetBox(o);\n if (!b.isEmpty())\n box.union(b);\n }\n return box;\n}\n\nexport function MoveMatrix(v: Vector3): Matrix4\n{\n return new Matrix4().setPosition(v);\n}\n\n//获得输入点在2线组成的4个区间的位置\nexport function getPtPostion(sp: Vector3, ep: Vector3, c: Vector3, inPt: Vector3)\n{\n let l1 = sp.clone().sub(c);\n let l2 = ep.clone().sub(c);\n let l3 = l1.clone().negate();\n let l4 = l2.clone().negate();\n let inputLine = inPt.clone().sub(c);\n let ang1 = angleTo(l1, l2);\n let ang2 = Math.PI;\n let ang3 = ang2 + Math.abs(ang1);\n let inputAng = angleTo(l1, inputLine);\n if (ang1 * inputAng < 0)\n inputAng = (Math.PI * 2 - Math.abs(inputAng));\n ang1 = Math.abs(ang1);\n inputAng = Math.abs(inputAng);\n if (inputAng <= ang1)\n return { sp, ep };\n else if (inputAng > ang1 && inputAng <= ang2)\n return { sp: c.clone().add(l3), ep };\n else if (inputAng > ang2 && inputAng <= ang3)\n return { sp: c.clone().add(l3), ep: c.clone().add(l4) };\n else\n return { sp, ep: c.clone().add(l4) };\n}\nexport function angleAndX(v: Vector3 | Vector2)\n{\n return v.x ? Math.atan(v.y / v.x) : Math.PI / 2;\n}\n\n/**\n * 将角度调整为0-2pi之间\n */\nexport function clampRad(an: number)\n{\n an = an % (Math.PI * 2);\n if (an < 0) an += Math.PI * 2;\n return an;\n}\n\nexport function updateGeometry(l: Line | Mesh, geometry: Geometry | BufferGeometry)\n{\n let geo = l.geometry as Geometry;\n geo.dispose();\n l.geometry = geometry;\n geometry.computeBoundingSphere();\n}\n\nexport function UpdateBoundingSphere(obj: Object3D)\n{\n //@ts-ignore\n let geo = obj.geometry as Geometry;\n if (geo)\n geo.computeBoundingSphere();\n}\n\n\nexport type compareVectorFn = (v1: Vector, v2: Vector3) => number;\n\nconst comparePointCache: Map = new Map();\n\n/**\n * 构建返回一个用来排序的函数.根据key创建排序规则.\n *\n * 当key = \"xyz\" 时,点集按 x从小到大,y从小到大 z从小到大\n * key = \"X\" 时,点集按 x从大到小\n * 以此类推.\n *\n * 例子:\n * let pts:Vector3[] =...;\n * pts.sort(comparePoint(\"x\")); //x从小到大排序\n * pts.sort(comparePoint(\"zX\")); //z从小到大 x从大到小\n *\n * @export\n * @param {string} sortKey\n * @returns {compareVectorFn}\n */\nexport function comparePoint(sortKey: string): compareVectorFn\n{\n if (comparePointCache.has(sortKey))\n return comparePointCache.get(sortKey);\n\n let sortIndex = [];\n\n const keys = ['x', 'X', 'y', 'Y', 'z', 'Z'];\n for (let char of sortKey)\n {\n let index = keys.indexOf(char);\n\n let i2 = index / 2;\n let ci = Math.floor(i2);\n sortIndex.push([ci, i2 > ci ? 1 : -1]);\n }\n\n let compareFunction = (v1: Vector, v2: Vector3): number =>\n {\n if (!v1) return -1;\n if (!v2) return 1;\n for (let s of sortIndex)\n {\n let vv1 = v1.getComponent(s[0]);\n let vv2 = v2.getComponent(s[0]);\n if (equaln(vv1, vv2)) continue;\n if (vv2 > vv1) return s[1];\n else return -s[1];\n }\n return 0;\n };\n\n comparePointCache.set(sortKey, compareFunction);\n return compareFunction;\n}\n\n/**\n *计算各轴旋转角度\n */\nexport function GetEulerAngle(x: Vector3, y: Vector3, z: Vector3)\n{\n let roY = Math.atan2(x.z, Math.sqrt(x.x ** 2 + x.y ** 2)) * -180 / Math.PI;\n let roZ = Math.atan2(x.y, x.x);\n let vec = YAxis.clone();\n let roMat = new Matrix4().makeRotationZ(roZ);\n roZ *= 180 / Math.PI;\n vec.applyMatrix4(roMat);\n let roX = Math.atan2(z.dot(vec), y.dot(vec)) * -180 / Math.PI;\n return { roX, roY, roZ };\n}\n\n/**\n * 方形框捕捉\n * @param sqCenter 正方形点\n * @param snapPt 被捕捉的点\n * @param size 捕捉框大小\n */\nexport function SnapPoint(sqCenter: Vector3, snapPt: Vector3, size: number): boolean\n{\n return Math.abs(sqCenter.x - snapPt.x) < size\n && Math.abs(sqCenter.y - snapPt.y) < size;\n}\n\nexport function SelectNearP(pts: Vector3[], refPt: Vector3): Vector3\n{\n if (pts.length > 1)\n {\n let dist1 = refPt.distanceToSquared(pts[0]);\n let dist2 = refPt.distanceToSquared(pts[1]);\n return dist1 <= dist2 ? pts[0] : pts[1];\n }\n return pts[0];\n}\n\n/**n是否在AB之间,fuzz 若为负的,允许相等 */\nexport function IsBetweenA2B(n: number, A: number, B: number, fuzz = -1e-8)\n{\n return n > A + fuzz && n < B - fuzz;\n}\n\n/** 矩阵是世界坐标系 */\nexport function MatrixIsIdentityCS(mtx: Matrix4): boolean\n{\n return mtx.elements[0] === 1 && mtx.elements[5] === 1 && mtx.elements[10] === 1 && mtx.elements[12] === 0 && mtx.elements[13] === 0 && mtx.elements[14] === 0;\n}\n","import { Matrix4, Vector2, Vector3 } from 'three';\r\nimport { CoordinateSystem } from '../Geometry/CoordinateSystem';\r\nimport { equaln, isParallelTo } from '../Geometry/GeUtils';\r\n\r\n/**\r\n * 设置矩阵的某列的向量\r\n * @param {Matrix4} mat 矩阵\r\n * @param {number} col 列索引,0x 1y 2z 3org\r\n * @param {Vector3} v 向量或点\r\n */\r\nexport function matrixSetVector(mat: Matrix4, col: number, v: Vector3)\r\n{\r\n let index = col * 4;\r\n mat.elements[index] = v.x;\r\n mat.elements[index + 1] = v.y;\r\n mat.elements[index + 2] = v.z;\r\n}\r\n\r\n/**\r\n * 返回矩阵,该坐标系将坐标系与原点的坐标系映射为坐标系,\r\n * 并将坐标系与X轴坐标系,\r\n * Y轴坐标轴以及Z轴坐标系统之间的坐标系统坐标系统的原点坐标系和原点坐标系统坐标轴的坐标系分别设置为XAxis,YAxis和ZAxis\r\n * @returns {Matrix4} 返回新的矩阵\r\n */\r\nexport function matrixAlignCoordSys(matrixFrom: Matrix4, matrixTo: Matrix4): Matrix4\r\n{\r\n return new Matrix4().getInverse(matrixTo).multiply(matrixFrom);\r\n}\r\n\r\n/**\r\n * 判断2个矩形共面\r\n * @param {Matrix4} matrixFrom\r\n * @param {Matrix4} matrixTo\r\n * @returns {boolean} 2个矩阵共面\r\n */\r\nexport function matrixIsCoplane(matrixFrom: Matrix4, matrixTo: Matrix4, fuzz = 1e-5): boolean\r\n{\r\n let nor1 = new Vector3().setFromMatrixColumn(matrixFrom, 2);\r\n let nor2 = new Vector3().setFromMatrixColumn(matrixTo, 2);\r\n\r\n //法线共面\r\n if (!isParallelTo(nor1, nor2))\r\n return false;\r\n\r\n //高共面\r\n let pt = new Vector3().setFromMatrixPosition(matrixTo);\r\n //变换到自身对象坐标系.\r\n pt.applyMatrix4(new Matrix4().getInverse(matrixFrom));\r\n\r\n return equaln(pt.z, 0, fuzz);\r\n}\r\n\r\n//构造缩放矩阵\r\nexport function matrixScale(scale: number, center?: Vector3)\r\n{\r\n let scaleMat = new Matrix4().makeScale(scale, scale, scale);\r\n if (center)\r\n scaleMat.setPosition(center.clone().multiplyScalar(1 - scale));\r\n return scaleMat;\r\n}\r\n\r\n/**\r\n * 设置旋转矩阵,不改变矩阵的基点\r\n */\r\nexport function setRotationOnAxis(mtx: Matrix4, axis: Vector3, ro: number)\r\n{\r\n let pos = new Vector3().setFromMatrixPosition(mtx);\r\n mtx.makeRotationAxis(axis, ro);\r\n mtx.setPosition(pos);\r\n return mtx;\r\n}\r\n\r\n/**\r\n * 修正镜像后矩阵\r\n */\r\nexport function reviseMirrorMatrix(mtx: Matrix4): Matrix4\r\n{\r\n let cs = new CoordinateSystem().applyMatrix4(mtx);\r\n cs.YAxis.negate();\r\n mtx.copy(cs.getMatrix4());\r\n return mtx;\r\n}\r\n\r\nlet cacheVec: Vector3;\r\nexport function Vector2ApplyMatrix4(mtx: Matrix4, vec: Vector2)\r\n{\r\n if (!cacheVec) cacheVec = new Vector3();\r\n\r\n cacheVec.x = vec.x;\r\n cacheVec.y = vec.y;\r\n\r\n cacheVec.applyMatrix4(mtx);\r\n\r\n vec.x = cacheVec.x;\r\n vec.y = cacheVec.y;\r\n}\r\nexport function GetMirrorMat(v: Vector3)\r\n{\r\n let mirrorMat = new Matrix4();\r\n let xAxis = new Vector3(1 - 2 * v.x ** 2, -2 * v.x * v.y, -2 * v.x * v.z);\r\n let yAxis = new Vector3(-2 * v.x * v.y, 1 - 2 * v.y ** 2, -2 * v.y * v.z);\r\n let zAxis = new Vector3(-2 * v.x * v.z, -2 * v.y * v.z, 1 - 2 * v.z ** 2);\r\n mirrorMat.makeBasis(xAxis, yAxis, zAxis);\r\n return mirrorMat;\r\n}\r\n\r\nexport function ApplyMatrix4IgnorePosition(vec: { x: number, y: number, z: number; }, m: Matrix4)\r\n{\r\n let { x, y, z } = vec;\r\n let e = m.elements;\r\n vec.x = e[0] * x + e[4] * y + e[8] * z;\r\n vec.y = e[1] * x + e[5] * y + e[9] * z;\r\n vec.z = e[2] * x + e[6] * y + e[10] * z;\r\n return vec;\r\n}\r\n\r\n/**\r\n * 把变换矩阵展平成2d矩阵,避免出现三维坐标.\r\n */\r\nexport function MatrixPlanarizere(mtx: Matrix4, z0 = true)\r\n{\r\n mtx.elements[2] = 0;\r\n mtx.elements[6] = 0;\r\n mtx.elements[8] = 0;\r\n mtx.elements[9] = 0;\r\n mtx.elements[10] = Math.sign(mtx.elements[10]);\r\n\r\n if (z0)\r\n mtx.elements[14] = 0;\r\n\r\n return mtx;\r\n}\r\n\r\nexport const tempMatrix1 = new Matrix4;\r\n\r\nexport const ZMirrorMatrix = GetMirrorMat(new Vector3(0, 0, 1));\r\n","\r\n/**\r\n * OSMODE\r\n */\r\nexport enum ObjectSnapMode\r\n{\r\n None = 0, //无\r\n End = 1, //端点\r\n Mid = 2, //中点\r\n Cen = 4, //圆心\r\n Node = 8,//节点\r\n Qua = 16,//象限点\r\n Int = 32,//交点\r\n Ins = 64,//插入点\r\n Per = 128,//垂足\r\n Tan = 256,//切点\r\n Nea = 512,//最近点\r\n NotEntitySnap = 1024,//清除所有对象捕捉\r\n App = 2048,//外观交点\r\n Ext = 4096,//延伸\r\n Par = 8192,//平行\r\n Axis = 16384,//极轴\r\n All = ~(~0 << 15) - 1024,\r\n}\r\n","import { BufferGeometry, Geometry } from \"three\";\r\n\r\nexport const BufferGeometry2GeometryCacheMap = new WeakMap();\r\nglobalThis.fuck = BufferGeometry2GeometryCacheMap;\r\n","import { BufferGeometry, Vector3, BufferAttribute, ShapeGeometry, Shape } from \"three\";\r\nimport { BufferGeometry2GeometryCacheMap } from \"../Editor/BufferGeometry2GeometryCacheMap\";\r\n\r\nexport namespace BufferGeometryUtils\r\n{\r\n export function CreateFromPts(pts: Vector3[]): BufferGeometry\r\n {\r\n return new BufferGeometry().setFromPoints(pts);\r\n }\r\n\r\n /**\r\n * 更新BufferGeometry的顶点\r\n * @param geo\r\n * @param pts\r\n * @returns 当成功时返回true,更新失败时返回false\r\n */\r\n export function UpdatePts(geo: BufferGeometry, pts: Vector3[]): boolean\r\n {\r\n let bf = geo.getAttribute(\"position\") as BufferAttribute;\r\n if (bf === undefined)\r\n geo.setFromPoints(pts);\r\n else if (bf.count >= pts.length)\r\n {\r\n bf.copyVector3sArray(pts);\r\n bf.needsUpdate = true;\r\n geo.drawRange.count = pts.length;\r\n }\r\n else\r\n return false;\r\n\r\n BufferGeometry2GeometryCacheMap.delete(geo);\r\n return true;\r\n }\r\n\r\n let arrowGeometry: ShapeGeometry;\r\n export function ArrowGeometry()\r\n {\r\n if (arrowGeometry)\r\n return arrowGeometry;\r\n else\r\n {\r\n let arrowShape = new Shape();\r\n arrowShape.lineTo(-0.5, -1.8);\r\n arrowShape.lineTo(0.5, -1.8);\r\n arrowGeometry = new ShapeGeometry(arrowShape);\r\n arrowGeometry.computeBoundingBox();\r\n return arrowGeometry;\r\n }\r\n }\r\n\r\n export function MergeBufferGeometries(geometries: BufferGeometry[], useGroups: boolean = false): BufferGeometry\r\n {\r\n if (geometries.length === 0)\r\n return new BufferGeometry();\r\n let isIndexed = geometries[0].index !== null;\r\n\r\n let attributesUsed = new Set(Object.keys(geometries[0].attributes));\r\n let morphAttributesUsed = new Set(Object.keys(geometries[0].morphAttributes));\r\n\r\n let attributes = {};\r\n let morphAttributes = {};\r\n\r\n let morphTargetsRelative = geometries[0].morphTargetsRelative;\r\n\r\n let mergedGeometry = new BufferGeometry();\r\n\r\n let offset = 0;\r\n\r\n for (let i = 0; i < geometries.length; ++i)\r\n {\r\n\r\n let geometry = geometries[i];\r\n\r\n // ensure that all geometries are indexed, or none\r\n\r\n if (isIndexed !== (geometry.index !== null)) return null;\r\n\r\n // gather attributes, exit early if they're different\r\n\r\n for (let name in geometry.attributes)\r\n {\r\n\r\n if (!attributesUsed.has(name)) continue;\r\n\r\n if (attributes[name] === undefined) attributes[name] = [];\r\n\r\n attributes[name].push(geometry.attributes[name]);\r\n\r\n }\r\n\r\n // gather morph attributes, exit early if they're different\r\n\r\n if (morphTargetsRelative !== geometry.morphTargetsRelative) return null;\r\n\r\n for (let name in geometry.morphAttributes)\r\n {\r\n\r\n if (!morphAttributesUsed.has(name)) continue;\r\n\r\n if (morphAttributes[name] === undefined) morphAttributes[name] = [];\r\n\r\n morphAttributes[name].push(geometry.morphAttributes[name]);\r\n\r\n }\r\n\r\n // gather .userData\r\n\r\n mergedGeometry.userData.mergedUserData = mergedGeometry.userData.mergedUserData || [];\r\n mergedGeometry.userData.mergedUserData.push(geometry.userData);\r\n\r\n if (useGroups)\r\n {\r\n\r\n let count: number;\r\n\r\n if (isIndexed)\r\n {\r\n\r\n count = geometry.index.count;\r\n\r\n } else if (geometry.attributes.position !== undefined)\r\n {\r\n\r\n count = geometry.attributes.position.count;\r\n\r\n } else\r\n {\r\n\r\n return null;\r\n\r\n }\r\n\r\n mergedGeometry.addGroup(offset, count, i);\r\n\r\n offset += count;\r\n\r\n }\r\n\r\n }\r\n\r\n // merge indices\r\n\r\n if (isIndexed)\r\n {\r\n\r\n let indexOffset = 0;\r\n let mergedIndex = [];\r\n\r\n for (let i = 0; i < geometries.length; ++i)\r\n {\r\n\r\n let index = geometries[i].index;\r\n\r\n for (let j = 0; j < index.count; ++j)\r\n {\r\n\r\n mergedIndex.push(index.getX(j) + indexOffset);\r\n\r\n }\r\n\r\n indexOffset += geometries[i].attributes.position.count;\r\n\r\n }\r\n\r\n mergedGeometry.setIndex(mergedIndex);\r\n\r\n }\r\n\r\n // merge attributes\r\n\r\n for (let name in attributes)\r\n {\r\n\r\n let mergedAttribute = MergeBufferAttributes(attributes[name]);\r\n\r\n if (!mergedAttribute) return null;\r\n\r\n mergedGeometry.setAttribute(name, mergedAttribute);\r\n\r\n }\r\n\r\n // merge morph attributes\r\n\r\n for (let name in morphAttributes)\r\n {\r\n\r\n let numMorphTargets = morphAttributes[name][0].length;\r\n\r\n if (numMorphTargets === 0) break;\r\n\r\n mergedGeometry.morphAttributes = mergedGeometry.morphAttributes || {};\r\n mergedGeometry.morphAttributes[name] = [];\r\n\r\n for (let i = 0; i < numMorphTargets; ++i)\r\n {\r\n\r\n let morphAttributesToMerge: any[] = [];\r\n\r\n for (let j = 0; j < morphAttributes[name].length; ++j)\r\n {\r\n\r\n morphAttributesToMerge.push(morphAttributes[name][j][i]);\r\n\r\n }\r\n\r\n let mergedMorphAttribute = MergeBufferAttributes(morphAttributesToMerge);\r\n\r\n if (!mergedMorphAttribute) return null;\r\n\r\n mergedGeometry.morphAttributes[name].push(mergedMorphAttribute);\r\n\r\n }\r\n\r\n }\r\n\r\n return mergedGeometry;\r\n\r\n }\r\n\r\n export function MergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute\r\n {\r\n let TypedArray;\r\n let itemSize: number;\r\n let normalized: boolean;\r\n let arrayLength = 0;\r\n\r\n for (let i = 0; i < attributes.length; ++i)\r\n {\r\n\r\n let attribute = attributes[i];\r\n\r\n if (TypedArray === undefined) TypedArray = attribute.array.constructor;\r\n if (TypedArray !== attribute.array.constructor) return null;\r\n\r\n if (itemSize === undefined) itemSize = attribute.itemSize;\r\n if (itemSize !== attribute.itemSize) return null;\r\n\r\n if (normalized === undefined) normalized = attribute.normalized;\r\n if (normalized !== attribute.normalized) return null;\r\n\r\n arrayLength += attribute.array.length;\r\n\r\n }\r\n\r\n let array = new TypedArray(arrayLength);\r\n let offset = 0;\r\n\r\n for (let i = 0; i < attributes.length; ++i)\r\n {\r\n\r\n array.set(attributes[i].array, offset);\r\n\r\n offset += attributes[i].array.length;\r\n\r\n }\r\n\r\n return new BufferAttribute(array, itemSize, normalized);\r\n\r\n }\r\n\r\n}\r\n","import { EllipseCurve, Shape, Vector2 } from \"three\";\r\nimport { clamp } from \"../Common/Utils\";\r\nimport { equalv2 } from \"../Geometry/GeUtils\";\r\n\r\nexport class Shape2 extends Shape\r\n{\r\n getPoints(divisions: number = 12)\r\n {\r\n divisions = divisions || 12;\r\n let points = [], last: Vector2;\r\n for (let i = 0, curves = this.curves; i < curves.length; i++)\r\n {\r\n let curve = curves[i];\r\n //@ts-ignore\r\n let resolution = (curve && curve.isEllipseCurve) ? clamp(curve.getLength() / 20, divisions * 2, 60)\r\n //@ts-ignore\r\n : (curve && (curve.isLineCurve || curve.isLineCurve3)) ? 1\r\n //@ts-ignore\r\n : (curve && curve.isSplineCurve) ? divisions * curve.points.length\r\n : divisions;\r\n\r\n let pts = curve.getPoints(resolution);\r\n\r\n for (let j = 0; j < pts.length; j++)\r\n {\r\n let point = pts[j];\r\n if (last && equalv2(last, point, 1e-4))\r\n continue; // ensures no consecutive points are duplicates\r\n\r\n points.push(point);\r\n last = point;\r\n\r\n if (j === pts.length - 1)\r\n point[\"_mask_\"] = true;\r\n }\r\n }\r\n if (this.autoClose\r\n && points.length > 1\r\n && !points[points.length - 1].equals(points[0]))\r\n {\r\n points.push(points[0]);\r\n }\r\n return points;\r\n }\r\n\r\n\r\n absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): this\r\n {\r\n let curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\r\n\r\n /*\r\n if (this.curves.length > 0)\r\n {\r\n // if a previous curve is present, attempt to join\r\n let firstPoint = curve.getPoint(0);\r\n if (!equalv2(firstPoint, this.currentPoint))\r\n {\r\n this.lineTo(firstPoint.x, firstPoint.y);\r\n }\r\n }\r\n */\r\n\r\n this.curves.push(curve);\r\n\r\n let lastPoint = curve.getPoint(1);\r\n this.currentPoint.copy(lastPoint);\r\n\r\n return this;\r\n }\r\n}\r\n","import { Vector2, Vector3, Matrix4 } from \"three\";\r\n\r\nexport class Matrix2\r\n{\r\n //column-major\r\n el = [1, 0, 0, 1]; //ix iy jx jy [a c b d]\r\n\r\n set(ix: number, iy: number, jx: number, jy: number)\r\n {\r\n this.el[0] = ix;\r\n this.el[1] = iy;\r\n this.el[2] = jx;\r\n this.el[3] = jy;\r\n }\r\n\r\n applyVector(vec: Vector2 | Vector3)\r\n {\r\n let x = vec.x;\r\n let y = vec.y;\r\n let e = this.el;\r\n vec.x = e[0] * x + e[2] * y;\r\n vec.y = e[1] * x + e[3] * y;\r\n return this;\r\n }\r\n\r\n fromMatrix4(mtx4: Matrix4)\r\n {\r\n this.set(mtx4.elements[0], mtx4.elements[1],\r\n mtx4.elements[3], mtx4.elements[4]\r\n );\r\n }\r\n\r\n setRotate(theta: number): this\r\n {\r\n let c = Math.cos(theta);\r\n let s = Math.sin(theta);\r\n this.set(c, s, -s, c);\r\n return this;\r\n }\r\n\r\n //自我求逆矩阵,返回自身\r\n invert(): this\r\n {\r\n //ref:https://www.mathsisfun.com/algebra/matrix-inverse.html\r\n let [a, c, b, d] = this.el;\r\n let det = 1 / (a * d - b * c);\r\n this.set(d * det, -c * det,\r\n -b * det, a * det\r\n );\r\n return this;\r\n }\r\n}\r\n","import { Matrix2 } from './Matrix2';\r\n\r\nlet r = new Matrix2();\r\nexport function RotateUVs(geo: THREE.Geometry)\r\n{\r\n r.set(0, -1,\r\n 1, 0);\r\n\r\n for (let uvs of geo.faceVertexUvs)\r\n {\r\n for (let uv of uvs)\r\n {\r\n for (let v of uv)\r\n r.applyVector(v);\r\n }\r\n }\r\n geo.uvsNeedUpdate = true;\r\n}\r\n","import { ExtrudeGeometry, Matrix4, Mesh, Shape, Vector2 } from 'three';\r\nimport { Shape2 } from '../../DatabaseServices/Shape2';\r\nimport { AsVector3, equaln, polar } from '../../Geometry/GeUtils';\r\nimport { RotateUVs } from '../../Geometry/RotateUV';\r\n\r\nexport namespace CreateBoardUtil\r\n{\r\n //解析二维圆弧\r\n export class Arc2d\r\n {\r\n _StartAn: number;\r\n _EndAn: number;\r\n _StartPoint: Vector2;\r\n _EndPoint: Vector2;\r\n _Center: Vector2;\r\n _Radius: number;\r\n constructor(p1: Vector2, p2: Vector2, bul: number)\r\n {\r\n this._StartPoint = p1.clone();\r\n this._EndPoint = p2.clone();\r\n\r\n let vec: Vector2 = p2.clone().sub(p1);\r\n let len = vec.length();\r\n let an = vec.angle();\r\n this._Radius = len / Math.sin(2 * Math.atan(bul)) / 2;\r\n let allAngle = Math.atan(bul) * 4;\r\n let delDis = bul * len / 2;\r\n let toDis = this._Radius - delDis;\r\n an += Math.PI * 0.5;\r\n\r\n this._Center = p1.clone().add(p2);\r\n this._Center.multiplyScalar(0.5);\r\n\r\n polar(this._Center, an, toDis);\r\n\r\n this._StartAn = p1.clone().sub(this._Center).angle();\r\n this._EndAn = p2.clone().sub(this._Center).angle();\r\n if (bul < 0)\r\n {\r\n //一个神奇的特性 它需要这么做\r\n this._StartAn -= Math.PI;\r\n this._EndAn -= Math.PI;\r\n }\r\n }\r\n }\r\n\r\n\r\n //创建轮廓 通过点表和凸度\r\n export function CreatePath(pts: Vector2[], buls: number[]): Shape\r\n {\r\n let shape = new Shape2();\r\n if (pts.length === 0) return shape;\r\n let firstPt = pts[0];\r\n\r\n shape.moveTo(firstPt.x, firstPt.y);\r\n for (let i = 0; i < pts.length - 1; i++)\r\n {\r\n let nextPt = pts[i + 1];\r\n if (equaln(buls[i], 0, 1e-8))\r\n {\r\n shape.lineTo(nextPt.x, nextPt.y);\r\n }\r\n else\r\n {\r\n let pt = pts[i];\r\n //参考\r\n //http://www.dorodnic.com/blog/tag/three-js/ 绘制一个齿轮\r\n //https://www.kirupa.com/html5/drawing_circles_canvas.htm //html5\r\n let arc2 = new Arc2d(pt, nextPt, buls[i]);\r\n let cen = arc2._Center;\r\n shape.absarc(cen.x, cen.y, arc2._Radius, arc2._StartAn, arc2._EndAn, buls[i] < 0);\r\n }\r\n }\r\n return shape;\r\n }\r\n\r\n //创建板件 暂时这么写\r\n export function createBoard(boardData: object)\r\n {\r\n var pts: Vector2[] = new Array();\r\n var buls: number[] = new Array();\r\n var boardPts = boardData[\"Pts\"];\r\n var boardBuls = boardData[\"Buls\"];\r\n\r\n let boardHeight = boardData[\"H\"];\r\n\r\n var boardMat = new Matrix4();\r\n var matInv: Matrix4 = new Matrix4();\r\n //InitBoardMat\r\n {\r\n\r\n var xD = AsVector3(boardData[\"XVec\"]);\r\n var yD = AsVector3(boardData[\"YVec\"]);\r\n var ZD = AsVector3(boardData[\"ZVec\"]);\r\n var pBase = AsVector3(boardData[\"BasePoint\"]).multiplyScalar(0.001);\r\n\r\n boardMat.makeBasis(xD, yD, ZD);\r\n boardMat.setPosition(pBase);\r\n matInv.getInverse(boardMat);\r\n }\r\n\r\n for (let i = 0; i < boardPts.length; i++)\r\n {\r\n var pt = AsVector3(boardPts[i]).multiplyScalar(0.001);\r\n pt.applyMatrix4(matInv);\r\n pts.push(new Vector2(pt.x, pt.y));\r\n buls.push(boardBuls[i]);\r\n }\r\n\r\n var sp = CreatePath(pts, buls);\r\n var extrudeSettings = {\r\n steps: 1,\r\n bevelEnabled: false,\r\n amount: boardHeight * 0.001\r\n };\r\n\r\n var ext = new ExtrudeGeometry(sp, extrudeSettings);\r\n ext.translate(0, 0, -boardHeight * 0.001);\r\n ext.applyMatrix4(boardMat);\r\n\r\n if (boardData[\"BoardName\"] === \"地脚线\")\r\n {\r\n RotateUVs(ext);\r\n }\r\n\r\n var mesh = new Mesh(ext);\r\n return mesh;\r\n }\r\n}\r\n","import { Vector3 } from \"three\";\r\nimport { Arc } from \"../DatabaseServices/Entity/Arc\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { angle, clampRad, equalv3 } from \"./GeUtils\";\r\n\r\n//顶点\r\nexport interface Vertice\r\n{\r\n //位置\r\n position: Vector3;\r\n //路径\r\n routes: Route[];\r\n}\r\n\r\n//路线\r\nexport interface Route\r\n{\r\n curve: Curve; //路线的曲线\r\n from: Vertice;\r\n to: Vertice; //终点的点\r\n length: number;\r\n isReverse: boolean;\r\n an?: number; //角度\r\n\r\n s: Vector3;\r\n e: Vector3;\r\n}\r\n\r\n/**\r\n * 曲线连接图\r\n * 所有的顶点和边的关系\r\n */\r\nexport class CurveMap\r\n{\r\n constructor(\r\n public numdimensions = 4,\r\n public _RemoveSortLine = false,\r\n private multiplier = 10 ** numdimensions,\r\n ) { }\r\n\r\n /*\r\n 节点图.\r\n 每个节点对应下一个路口的路线表.\r\n 路口表使用逆时针排序,起始角度使用正x轴.\r\n */\r\n _VerticeMap = new Map();\r\n\r\n _Vertices: Vertice[] = [];\r\n\r\n /**\r\n * 得到节点图的所有站点列表\r\n */\r\n get Stands(): Vertice[]\r\n {\r\n return this._Vertices;\r\n }\r\n\r\n /**\r\n * @param curve\r\n * @param [isArc=curve instanceof Arc]\r\n * @param [removeDuplicate=false]\r\n * @returns 加入成功?\r\n */\r\n AddCurveToMap(curve: Curve, isArc: boolean = curve instanceof Arc, removeDuplicate: boolean = false, parseAngle = false): boolean\r\n {\r\n let sp = curve.StartPoint;\r\n let ep = curve.EndPoint;\r\n let startS = this.GetOnlyVertice(sp);\r\n let endS = this.GetOnlyVertice(ep);\r\n\r\n //在面域分析中,路线指向同一个顶点已经没有意义了\r\n if (this._RemoveSortLine && startS === endS)\r\n return false;\r\n\r\n if (removeDuplicate)//删除重复\r\n {\r\n let index = startS.routes.findIndex(r =>\r\n {\r\n if (r.to === endS && r.curve.constructor.name === curve.constructor.name)\r\n {\r\n if (isArc)\r\n return equalv3(curve.GetPointAtParam(0.5), r.curve.GetPointAtParam(0.5));\r\n return true;\r\n }\r\n });\r\n if (index !== -1) return false;\r\n }\r\n\r\n let length = curve.Length;\r\n curve.TempData = 0;\r\n\r\n let routeS2E: Route = { curve, isReverse: false, length, from: startS, to: endS, s: sp, e: ep };\r\n let routeE2S: Route = { curve, isReverse: true, length, from: endS, to: startS, e: sp, s: ep };\r\n\r\n if (!isArc && parseAngle)\r\n {\r\n let an = angle(endS.position.clone().sub(startS.position));\r\n routeS2E.an = an;\r\n routeE2S.an = clampRad(an + Math.PI);\r\n }\r\n startS.routes.push(routeS2E);\r\n endS.routes.push(routeE2S);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 获得唯一的顶点\r\n */\r\n GetOnlyVertice(p: Vector3): Vertice\r\n {\r\n let gp = this.GenerateP(p);\r\n if (this._VerticeMap.has(gp))\r\n return this._VerticeMap.get(gp);\r\n\r\n let vertice: Vertice = { position: gp, routes: [] };\r\n this._VerticeMap.set(p, vertice);\r\n this._Vertices.push(vertice);\r\n return vertice;\r\n }\r\n\r\n _LookupTable: { [key: string]: Vector3; } = {};\r\n\r\n /**\r\n * 生成一个唯一的向量.\r\n */\r\n GenerateP(p: Vector3): Vector3\r\n {\r\n let key = \"\";\r\n let els = p.toArray();\r\n for (let n of els)\r\n {\r\n let valueQuantized = Math.round(n * this.multiplier);\r\n key += valueQuantized + '/';\r\n }\r\n\r\n if (key in this._LookupTable)\r\n return this._LookupTable[key];\r\n\r\n let hashparts = els.map((el) =>\r\n {\r\n let q0 = Math.floor(el * this.multiplier);\r\n let q1 = q0 + 1;\r\n return ['' + q0 + '/', '' + q1 + '/'];\r\n });\r\n\r\n let numelements = els.length;\r\n let numhashes = 1 << numelements;\r\n for (let hashmask = 0; hashmask < numhashes; ++hashmask)\r\n {\r\n let hashmaskShifted = hashmask;\r\n key = '';\r\n hashparts.forEach(function (hashpart)\r\n {\r\n key += hashpart[hashmaskShifted & 1];\r\n hashmaskShifted >>= 1;\r\n });\r\n this._LookupTable[key] = p;\r\n }\r\n return p;\r\n }\r\n}\r\n","import { Vector3 } from \"three\";\r\nimport { arrayLast, arrayRemoveIf, arrayRemoveOnce } from \"../Common/ArrayExt\";\r\nimport { FixIndex } from \"../Common/Utils\";\r\nimport { Arc } from \"../DatabaseServices/Entity/Arc\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { Polyline } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { CurveMap, Route, Vertice } from \"./CurveMap\";\r\nimport { angle } from \"./GeUtils\";\r\n\r\n//区域的路线表 表示了一个区域\r\ntype RegionRouteS = Route[][];\r\n\r\n/**\r\n面域分析,基于最小循环图重新实现的版本,拓展了实现求最大轮廓。\r\n当最大轮廓=最小轮廓时,只绘制最大轮廓(独立轮廓无分裂)。\r\n\r\n算法只实现去重模式,业务场景应该没有非去重模式。\r\n如果需要非去重模式,那么应该获取到多个CurveMap,然后对多个CurveMap进行面域分析,得出多个重叠的面域。\r\n */\r\nexport class RegionParse\r\n{\r\n //区域列表 通常是外轮廓\r\n RegionsOutline: RegionRouteS = [];\r\n //区域列表 通常是内轮廓\r\n RegionsInternal: RegionRouteS = [];\r\n\r\n //碎线 曲线进入到这里会被炸开.\r\n ExpLineMap: Map = new Map();\r\n\r\n private _CurveCount: number;\r\n\r\n /**\r\n * @param cuList 请不要传递圆和椭圆.\r\n * @param [numDimensions=3] 精度:小数点后个数\r\n * @param [removeDuplicate=true] 删除重复(现在必须是true,请不要修改它)\r\n */\r\n constructor(cuList: Curve[], public numDimensions = 3, private removeDuplicate = true)\r\n {\r\n //需要搜索的站\r\n let vertices = this.GenerateVerticeMap(cuList);\r\n\r\n //移除细丝\r\n while (true)\r\n {\r\n let v = vertices.find(v => v.routes.length < 2);\r\n if (v) this.RemoveFilamentAt(v, vertices);\r\n else break;\r\n }\r\n let lowerVertice: Vertice;\r\n while (vertices.length > 0)\r\n {\r\n lowerVertice = lowerVertice?.routes.length > 1 ? lowerVertice : this.FindLowerLeftStand(vertices);\r\n let minWalk = ClosedWalkFrom(lowerVertice, this._CurveCount, WalkType.Min);\r\n let maxWalk = ClosedWalkFrom(lowerVertice, this._CurveCount, WalkType.Max);\r\n\r\n this.RemoveEdge(minWalk[0]);\r\n this.RemoveFilamentAt(minWalk[0].from, vertices);\r\n this.RemoveFilamentAt(minWalk[0].to, vertices);\r\n\r\n minWalk = ReduceWalk(minWalk);\r\n maxWalk = ReduceWalk(maxWalk);\r\n if (maxWalk.length > 1)\r\n {\r\n this.RegionsOutline.push(maxWalk);\r\n if (minWalk.length === maxWalk.length && minWalk.every((w1, index) => w1 === maxWalk[index]))//大小重叠\r\n {\r\n //直接remove,不用计算引用个数\r\n for (let w of minWalk)\r\n {\r\n this.RemoveEdge(w);\r\n this.RemoveFilamentAt(w.from, vertices);\r\n this.RemoveFilamentAt(w.to, vertices);\r\n }\r\n continue;//继续循环\r\n }\r\n else\r\n for (let w of maxWalk)\r\n w.curve.TempData = 1;\r\n }\r\n\r\n if (minWalk.length > 1)// && minWalk.every(w => (w.curve.TempData) < 2) 没有重复线应该不会被用2次\r\n {\r\n this.RegionsInternal.push(minWalk);\r\n for (let w of minWalk)\r\n {\r\n w.curve.TempData++;\r\n if (w.curve.TempData === 2)\r\n {\r\n this.RemoveEdge(w);\r\n this.RemoveFilamentAt(w.from, vertices);\r\n this.RemoveFilamentAt(w.to, vertices);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n RemoveFilamentAt(v: Vertice, vertices: Vertice[])\r\n {\r\n let current = v;\r\n while (current && current.routes.length < 2)\r\n {\r\n vertices = arrayRemoveOnce(vertices, current);\r\n let r = current.routes[0];\r\n if (r)\r\n {\r\n this.RemoveEdge(r);\r\n current = r.to;\r\n }\r\n else\r\n current = undefined;\r\n }\r\n }\r\n\r\n RemoveEdge(r: Route)\r\n {\r\n let index = r.from.routes.findIndex(rr => rr.curve === r.curve);\r\n if (index !== -1)\r\n r.from.routes.splice(index, 1);\r\n\r\n index = r.to.routes.findIndex(rr => rr.curve === r.curve);\r\n if (index !== -1)\r\n r.to.routes.splice(index, 1);\r\n }\r\n\r\n /**\r\n * 找到最下方并且最左边的站 yx\r\n */\r\n private FindLowerLeftStand(vertices: Vertice[]): Vertice\r\n {\r\n return vertices.reduce((m, v) =>\r\n {\r\n let dy = v.position.y - m.position.y;\r\n if (dy < 0) return v;\r\n if (dy > 0) return m;\r\n return v.position.x - m.position.x < 0 ? v : m;\r\n });\r\n }\r\n\r\n /**\r\n * 构造路线图. 每个节点对应下一个路口的路线表. 路口表使用逆时针排序,起始角度使用正x轴.\r\n * @returns 所有的顶点\r\n */\r\n private GenerateVerticeMap(curveList: Curve[]): Array\r\n {\r\n let curveMap = new CurveMap(this.numDimensions, true);\r\n\r\n //将多段线炸开\r\n let plcus: Curve[] = [];\r\n arrayRemoveIf(curveList, c =>\r\n {\r\n if (c instanceof Polyline)\r\n {\r\n let cus = c.Explode();\r\n\r\n //如果为圆弧,提前打断\r\n let arcs: Arc[] = [];\r\n arrayRemoveIf(cus, c =>\r\n {\r\n if (c.Length < 1e-5) return true;\r\n\r\n if (c instanceof Arc)\r\n {\r\n let arcBrs = this.BreakArc(c);\r\n for (let arc of arcBrs)\r\n arcs.push(arc);\r\n }\r\n\r\n return false;\r\n });\r\n //加入到计算\r\n cus.push(...arcs);\r\n\r\n this.ExpLineMap.set(c, cus);\r\n plcus.push(...cus);\r\n return true;\r\n }\r\n return false;\r\n });\r\n curveList.push(...plcus);\r\n\r\n this._CurveCount = curveList.length;\r\n\r\n for (let cu of curveList)\r\n {\r\n //由于圆弧可能导致最低点计算错误的问题.\r\n if (cu instanceof Arc)\r\n {\r\n let arcs = this.BreakArc(cu);\r\n if (arcs.length > 1)\r\n {\r\n arcs.forEach(a => curveMap.AddCurveToMap(a, true, this.removeDuplicate, true));\r\n this.ExpLineMap.set(cu, arcs);\r\n continue;\r\n }\r\n else\r\n curveMap.AddCurveToMap(cu, true, this.removeDuplicate, true);\r\n }\r\n else\r\n curveMap.AddCurveToMap(cu, false, this.removeDuplicate, true);\r\n }\r\n\r\n //排序,根据角度逆时针排序.\r\n for (let v of curveMap._Vertices)\r\n {\r\n let minLength = Infinity;\r\n for (let r of v.routes)\r\n if (r.length < minLength) minLength = r.length;\r\n for (let r of v.routes)\r\n CalcRouteAngle(r, minLength * 0.2);\r\n v.routes.sort((r1, r2) => r1.an - r2.an);\r\n }\r\n return curveMap.Stands;\r\n }\r\n\r\n private BreakArc(arc: Arc): Arc[]\r\n {\r\n let underPt = arc.Center.add(new Vector3(0, -arc.Radius));\r\n let param = arc.GetParamAtPoint(underPt);\r\n if (param > 0.01 && param < 0.99)\r\n return arc.GetSplitCurves(param);\r\n else\r\n return [arc];\r\n }\r\n\r\n /**\r\n * 曲线是否已经被算法使用\r\n */\r\n GetCueveUsed(cu: Curve): boolean\r\n {\r\n if (this.ExpLineMap.has(cu))\r\n {\r\n let use = this.ExpLineMap.get(cu).some(c => c.TempData > 0);\r\n if (!use)\r\n this.ExpLineMap.delete(cu);\r\n return use;\r\n }\r\n else\r\n return cu.TempData > 0;\r\n }\r\n}\r\n\r\nfunction CalcRouteAngle(r: Route, length: number)\r\n{\r\n if (r.an !== undefined) return;\r\n let cu = r.curve;\r\n let p = r.isReverse ?\r\n cu.GetPointAtParam(cu.GetParamAtDist(r.length - length))\r\n : cu.GetPointAtParam(cu.GetParamAtDist(length));\r\n r.an = angle(p.sub(r.from.position));\r\n}\r\n\r\nenum WalkType\r\n{\r\n Min = 1,\r\n Max = -1,\r\n}\r\n\r\nfunction ClosedWalkFrom(startVertice: Vertice, maxRoute: number, type = WalkType.Min): Route[]\r\n{\r\n let walk: Route[] = [];\r\n let curVertice: Vertice = startVertice;\r\n let preRoute: Route;\r\n // console.log(\"start\", type, startVertice.position.toArray());\r\n do\r\n {\r\n let route = GetNextRoute(curVertice, preRoute, type);\r\n if (type === WalkType.Max && route.curve.TempData > 0)\r\n return [];\r\n // console.log(route.to.position.toArray());\r\n walk.push(route);\r\n [curVertice, preRoute] = [route.to, route];\r\n if (walk.length > maxRoute * 2)\r\n throw \"超过计算次数限制\";\r\n }\r\n while (curVertice !== startVertice);\r\n\r\n return walk;\r\n}\r\n\r\n/**\r\n * 删除中途回路\r\n */\r\nfunction ReduceWalk(w: Route[]): Route[]\r\n{\r\n if (w.length === 0) return w;\r\n //未构成回路,直接回家\r\n if (w[0].curve === arrayLast(w).curve) return [];\r\n\r\n for (let i = 0; i < w.length; i++)\r\n {\r\n let r1 = w[i];\r\n for (let j = w.length; j--;)\r\n {\r\n if (i === j) break;\r\n let r2 = w[j];\r\n if (r1.to === r2.to)\r\n {\r\n if (j > i)\r\n w.splice(i + 1, j - i);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return w;\r\n}\r\n\r\nfunction GetNextRoute(v: Vertice, prev?: Route, type: WalkType = WalkType.Min): Route\r\n{\r\n if (!prev)\r\n return arrayLast(v.routes); //顺时针 cw \\|/ 从左往右\r\n\r\n //逆时针 ccw 往左\r\n let index = v.routes.findIndex(r => r.curve === prev.curve);\r\n let newIndex = FixIndex(index + 1 * type, v.routes);\r\n return v.routes[newIndex];\r\n}\r\n","import { Vector3 } from 'three';\r\nimport { Circle } from '../DatabaseServices/Entity/Circle';\r\nimport { Curve } from '../DatabaseServices/Entity/Curve';\r\nimport { Ellipse } from '../DatabaseServices/Entity/Ellipse';\r\nimport { Polyline } from '../DatabaseServices/Entity/Polyline';\r\nimport { IntersectOption } from './IntersectWith';\r\n\r\nexport enum BoolOpeartionType\r\n{\r\n Intersection = 0,\r\n Union = 1,\r\n Subtract = 2\r\n}\r\n\r\nconst fuzz = 1e-3;\r\nlet fuzzV3 = new Vector3(fuzz, fuzz, fuzz);\r\n\r\n//判断曲线是否在源封闭曲线内\r\nexport function isTargetCurInOrOnSourceCur(sourceCur: Polyline | Circle | Ellipse, targetCur: Curve)\r\n{\r\n if (!sourceCur.BoundingBox.expandByVector(fuzzV3).containsBox(targetCur.BoundingBox))\r\n return false;\r\n\r\n let cus: Curve[] = [];\r\n if (targetCur instanceof Polyline)\r\n cus = targetCur.Explode();\r\n else\r\n cus = [targetCur];\r\n\r\n return cus.every(c =>\r\n {\r\n let pts = getIntPtContextPts(sourceCur, c);\r\n if (pts.length <= 1)\r\n pts.push(c.StartPoint, c.EndPoint);\r\n return IsPtsAllInOrOnReg(sourceCur, pts);\r\n });\r\n}\r\n\r\n//获取交点处上下距0.01par的点\r\nfunction getIntPtContextPts(sourceCur: Curve, cu: Curve, pts: Vector3[] = [])\r\n{\r\n let interPts = cu.IntersectWith(sourceCur, IntersectOption.OnBothOperands);\r\n if (interPts.length > 0)\r\n {\r\n let pars = interPts.map(pt => cu.GetParamAtPoint(pt));\r\n for (let par of pars)\r\n {\r\n if (par >= 0.02)\r\n pts.push(cu.GetPointAtParam(par - 0.01));\r\n\r\n if (par <= (cu.EndParam - 0.02))\r\n pts.push(cu.GetPointAtParam(par + 0.01));\r\n }\r\n }\r\n return pts;\r\n}\r\n//判断点点是否全部都在封闭区域内或者在曲线上\r\nfunction IsPtsAllInOrOnReg(sourceReg: Polyline | Circle | Ellipse, pts: Vector3[])\r\n{\r\n return pts.every(pt =>\r\n {\r\n //是否点在封闭曲线内\r\n return sourceReg.PtOnCurve(pt) || sourceReg.PtInCurve(pt);\r\n });\r\n}\r\n\r\n//判断点是否全部都在封闭区域外或者在曲线上\r\nexport function IsPtsAllOutOrOnReg(sourceReg: Polyline | Circle, pts: Vector3[])\r\n{\r\n return pts.every(pt =>\r\n {\r\n //是否点在封闭曲线内\r\n return sourceReg.PtOnCurve(pt) || !sourceReg.PtInCurve(pt);\r\n });\r\n}\r\n","import { Line, Material, Object3D, Shape, Vector3 } from 'three';\nimport { arrayRemoveDuplicateBySort, arraySortByNumber } from '../../Common/ArrayExt';\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { Status } from '../../Common/Status';\nimport { equaln, equalv3 } from '../../Geometry/GeUtils';\nimport { IntersectOption, IntersectResult } from '../../GraphicsSystem/IntersectWith';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { Factory } from '../CADFactory';\nimport { DragPointType } from './DragPointType';\nimport { Entity } from './Entity';\n\nexport enum ExtendType\n{\n /**\n * 前后都不延伸\n */\n None = 0,\n /**\n * 只允许延伸前面\n */\n Front = 1,\n /**\n * 只允许延伸后面\n */\n Back = 2,\n /**\n * 前后延伸\n */\n Both = 3,\n}\n\n/**\n * 曲线的基类,子类请实现以下方法.\n */\n@Factory\nexport abstract class Curve extends Entity\n{\n constructor()\n {\n super();\n }\n\n get Is2D()\n {\n return equaln(this._Matrix.elements[14], 0);\n }\n\n get StartPoint(): Vector3 { return; }\n set StartPoint(v: Vector3) { return; }\n get StartParam(): number { return; }\n get EndPoint(): Vector3 { return; }\n set EndPoint(v: Vector3) { return; }\n\n /** 曲线中点 */\n get Midpoint()\n {\n return this.GetPointAtParam(this.MidParam);\n }\n\n get MidParam()\n {\n if (this.EndParam === 1)\n return 0.5;\n else\n return this.GetParamAtDist(this.Length * 0.5);\n }\n\n get EndParam(): number { return; }\n get Area(): number { return 0; }\n /**\n *获得曲线的面积,逆时针为正,顺时针为负.\n */\n get Area2(): number { return 0; }\n get Length(): number { return 0; }\n get IsClose(): boolean { return false; }\n /** 曲线为顺时针 */\n get IsClockWise(): boolean { return this.Area2 < 0; }\n\n abstract get Shape(): Shape;\n\n GetPointAtParam(param: number): Vector3 { return; }\n GetPointAtDistance(distance: number): Vector3 { return; }\n GetDistAtParam(param: number): number { return; }\n GetDistAtPoint(pt: Vector3): number { return; }\n GetParamAtPoint(pt: Vector3): number { return; }\n GetParamAtPoint2(pt: Vector3): number { return this.GetParamAtPoint(pt); }\n\n GetParamAtDist(d: number): number { return; }\n\n /**\n * 返回曲线在指定位置的一阶导数(在wcs内)\n *\n * @param {(number | Vector3)} param\n * @returns {Vector3}\n * @memberof Curve\n */\n GetFistDeriv(param: number | Vector3): Vector3 { return; }\n GetFistDerivAngle(param: number | Vector3): number\n {\n let d = this.GetFistDeriv(param);\n return Math.atan2(d.y, d.x);\n }\n\n /**\n * 返回切割曲线后的结果.总是从起点开始切割,并且按顺序返回曲线.\n * @param {(number[] | number)} param\n * @returns {Array}\n */\n GetSplitCurves(param: number[] | number): Array { return; }\n //未完善\n GetCurveAtParamRange(startParam: number, EndParam: number): Array { return; }\n GetSplitCurvesByPts(pt: Vector3[] | Vector3): Array\n {\n let pts = Array.isArray(pt) ? pt : [pt];\n let pars = pts.map(p => this.GetParamAtPoint(p));\n return this.GetSplitCurves(pars);\n }\n protected SplitParamSort(param: number[] | number): number[]\n {\n if (Array.isArray(param))\n {\n param = param.filter(p => this.ParamOnCurve(p));\n if (param.length === 0)\n return [];\n param.push(0, this.EndParam);\n arraySortByNumber(param);\n arrayRemoveDuplicateBySort(param, (e1, e2) => equaln(e1, e2, 1e-7));\n return param;\n }\n else if (this.ParamOnCurve(param))\n return [0, param, this.EndParam];\n else\n return [];\n }\n Extend(newParam: number) { }\n /**\n * 连接曲线到本曲线,如果成功返回true\n * @param {Curve} cu 需要连接的曲线\n * @returns {boolean} 连接成功\n * @memberof Curve\n */\n Join(cu: Curve, allowGap = false, tolerance = 1e-4): Status { return Status.False; }\n\n //翻转曲线.首尾调换.\n Reverse(): this { return this; }\n\n //点在曲线上\n PtOnCurve(pt: Vector3, fuzz = 1e-6): boolean\n {\n return equalv3(this.StartPoint, pt, fuzz) || equalv3(this.EndPoint, pt, fuzz) || this.ParamOnCurve(this.GetParamAtPoint(pt));\n }\n\n //点在曲线中,不在起点或者终点.\n PtOnCurve2(pt: Vector3): boolean\n {\n return !(equalv3(this.StartPoint, pt, 1e-6) || equalv3(this.EndPoint, pt, 1e-6)) && this.ParamOnCurve(this.GetParamAtPoint(pt), 0);\n }\n\n //点在曲线上,已经确定点在曲线的延伸线上\n PtOnCurve3(p: Vector3, fuzz = 1e-6): boolean\n {\n return this.PtOnCurve(p, fuzz);\n }\n\n //参数在曲线上 容差,1e-6\n ParamOnCurve(param: number, fuzz = 1e-6): boolean { return !isNaN(param) && param >= -fuzz && param <= this.EndParam + fuzz; }\n GetOffsetCurves(offsetDist: number): Array { return; }\n GetClosestPointTo(pt: Vector3, extend: boolean): Vector3 { return; }\n\n /**\n * 曲线相交点\n */\n IntersectWith(curve: Curve, intType: IntersectOption, tolerance = 1e-6): Vector3[]\n {\n return this.IntersectWith2(curve, intType, tolerance).map(r => r.pt);\n }\n\n /**\n * 曲线相交点和点的参数\n */\n IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-6): IntersectResult[] { return []; }\n\n\n /**\n * 拽托点个数\n */\n GetDragPointCount(drag: DragPointType): number { return 0; }\n\n //------------------绘制相关------------------\n //重载\n protected OnlyRenderType = true;\n\n /**\n * 重载:更新实体材质\n */\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material)\n {\n if (type === RenderType.WireframePrint)\n {\n //打印模式暂时不需要改颜色\n }\n else\n {\n let m = obj as Line;\n m.material = material || ColorMaterial.GetLineMaterial(this._Color);\n }\n }\n\n UpdateJigMaterial(color = 8)\n {\n for (let [type, obj] of this._CacheDrawObject)\n {\n this.UpdateDrawObjectMaterial(type, obj, ColorMaterial.GetLineMaterial(color));\n }\n }\n}\n","import { Vector3 } from \"three\";\nimport { arrayLast, arrayRemoveDuplicateBySort } from \"../Common/ArrayExt\";\nimport { curveLinkGroup, equalCurve } from \"../Common/CurveUtils\";\nimport { Status } from \"../Common/Status\";\nimport { FixIndex } from \"../Common/Utils\";\nimport { IntersectBox2 } from \"../Geometry/Box\";\nimport { Route } from \"../Geometry/CurveMap\";\nimport { equaln, equalv3 } from \"../Geometry/GeUtils\";\nimport { RegionParse } from \"../Geometry/RegionParse\";\nimport { isTargetCurInOrOnSourceCur } from \"../GraphicsSystem/BoolOperateUtils\";\nimport { IntersectOption } from \"../GraphicsSystem/IntersectWith\";\nimport { Arc } from \"./Entity/Arc\";\nimport { Circle } from \"./Entity/Circle\";\nimport { Curve } from \"./Entity/Curve\";\nimport { Polyline } from \"./Entity/Polyline\";\n\nlet cache = new WeakMap();\n\nconst COMBINE_FUZZ = 1e-2;\n\nexport class Contour\n{\n private _Curve: Polyline | Circle;\n\n protected SetCurve(cu: Polyline | Circle)\n {\n if (cu instanceof Polyline)\n {\n if (cu.Area2 < 0)\n cu.Reverse();\n }\n this._Curve = cu;\n }\n /**会将传入的闭合轮廓改为逆时针 */\n static CreateContour(cus: Curve[] | Polyline | Circle, needLink = true)\n {\n if (cus instanceof Curve)\n {\n if (cus.IsClose)\n {\n let c = new Contour();\n c.SetCurve(cus);\n return c;\n }\n return;\n }\n\n let closeCurve = Contour.Combine(cus, needLink, COMBINE_FUZZ) as Polyline | Circle;\n if (closeCurve && closeCurve.IsClose)\n {\n if (closeCurve instanceof Polyline && closeCurve.CloseMark === false)\n {\n closeCurve.CloseMark = true;\n closeCurve.RemoveVertexAt(closeCurve.NumberOfVertices - 1);\n }\n\n let c = new Contour();\n c.SetCurve(closeCurve);\n return c;\n }\n }\n get Curve(): Polyline | Circle\n {\n return this._Curve;\n }\n get Area()\n {\n return this._Curve.Area;\n }\n get BoundingBox()\n {\n return this._Curve.BoundingBox;\n }\n /**\n * 不等比例缩放\n * @param {number} ref 缩放参考值,大于该值的点缩放\n * @param {number} dist 缩放距离\n * @param {string} dir x y z\n */\n UnEqualProportionScale(ref: number, dist: number, dir: \"x\" | \"y\")\n {\n let cu = this._Curve;\n if (cu instanceof Polyline)\n {\n let lineData = cu.LineData;\n let length = lineData.length;\n let p = cu.Position[dir];\n\n let moveIndexs: number[] = [];\n for (let i = 0; i < length; i++)\n {\n if (lineData[i].pt[dir] + p > ref)\n moveIndexs.push(i);\n }\n let moveVec = new Vector3();\n moveVec[dir] = dist;\n cu.MoveStretchPoints(moveIndexs, moveVec);\n return true;\n }\n return false;\n }\n Clone()\n {\n return Contour.CreateContour([this._Curve.Clone()]);\n }\n //交集:结果数组为空则失败\n IntersectionBoolOperation(target: Contour): Contour[]\n {\n if (!IntersectBox2(this.BoundingBox, target.BoundingBox))\n return [];\n let resultCus = this.GetIntersetAndUnionList(target);\n return Contour.GetAllContour(resultCus.intersectionList);\n }\n //并集:结果轮廓数组长度大于2,则失败.等于1则成功.\n UnionBoolOperation(target: Contour): { contours: Contour[], holes: Contour[]; }\n {\n let resultCus = this.GetIntersetAndUnionList(target);\n\n //快速\n if (resultCus.unionList.every(c => c.IsClose))\n return {\n contours: Contour.GetAllContour(resultCus.unionList),\n holes: [],\n };\n\n //并集后的线段表如果有共线的直接合并起来\n let cus: Curve[] = [];\n for (let pl of resultCus.unionList)\n {\n if (pl instanceof Polyline)\n cus.push(...pl.Explode());\n else\n cus.push(pl);\n }\n let cuGroups = curveLinkGroup(cus);\n for (let g of cuGroups)\n {\n for (let i = 0; i < g.length; i++)\n {\n let c1 = g[i];\n let nextI = FixIndex(i + 1, g);\n let c2 = g[nextI];\n\n let status = c1.Join(c2);\n if (status === Status.True)\n {\n g.splice(nextI, 1);\n i--;\n }\n else if (status === Status.ConverToCircle)\n {\n g.length = 0;\n let a = c1 as Arc;\n g.push(new Circle(a.Center, a.Radius));\n break;\n }\n }\n }\n let allContour = Contour.GetAllContour(cuGroups);\n if (allContour.length < 2)\n {\n return {\n contours: allContour,\n holes: [],\n };\n }\n else\n {\n let cache = new WeakMap();\n for (let c of allContour)\n cache.set(c, c.Area);\n allContour.sort((a, b) => cache.get(b) - cache.get(a));\n return {\n contours: [allContour[0]],\n holes: allContour.slice(1)\n };\n }\n\n }\n //差集:等于0完全被减去\n SubstactBoolOperation(target: Contour): Contour[]\n {\n let subtractList = this.GetSubtractList(target);\n\n //纯网洞\n if (subtractList.every(c => c.IsClose))\n return Contour.GetAllContour(subtractList);\n\n let regParse = new RegionParse(subtractList, 2);\n\n let contours: Contour[] = [];\n //分析封闭包围区域\n const parseRoute = (routeSet: Array[]) =>\n {\n for (let routes of routeSet)\n {\n let cs: Curve[] = routes.map(r => r.curve);\n let c = Contour.CreateContour(cs, false);\n if (c\n && !equalCurve(c.Curve, this.Curve)\n && !equalCurve(c.Curve, target.Curve)\n && c.Area > 1e-3)\n contours.push(c);\n }\n };\n parseRoute(regParse.RegionsOutline);\n parseRoute(regParse.RegionsInternal);\n\n return contours;\n }\n /**\n * 计算与目标轮廓布尔运算后的结果曲线.\n */\n GetIntersetAndUnionList(target: Contour): { intersectionList: Curve[], unionList: Curve[]; }\n {\n let intersectionList: Curve[] = [];\n let unionList: Curve[] = [];\n\n let sourceOutline = this._Curve;\n let targetOutline = target.Curve;\n let isEqualNormal = equalv3(sourceOutline.Normal, targetOutline.Normal, 1e-3);\n\n //可能会有提升,但是好像不大(并且还有更慢的趋势)\n // if (!sourceOutline.BoundingBox.intersectsBox(targetOutline.BoundingBox, 1e-3))\n // return { intersectionList, unionList };\n\n let interPts = sourceOutline.IntersectWith2(targetOutline, IntersectOption.OnBothOperands, COMBINE_FUZZ);\n\n let sourceContainerTarget: boolean;\n let targetContainerSource: boolean;\n if (sourceOutline.Area > targetOutline.Area)\n {\n sourceContainerTarget = interPts.length === 0 ? fastCurveInCurve(sourceOutline as Polyline, targetOutline as Polyline) : this.CuInOutline(targetOutline);\n targetContainerSource = false;\n }\n else\n {\n sourceContainerTarget = false;\n targetContainerSource = interPts.length === 0 ? fastCurveInCurve(targetOutline as Polyline, sourceOutline as Polyline) : target.CuInOutline(sourceOutline);\n }\n\n //包含.相交.分离(三种状态)\n if (sourceContainerTarget)//源包含目标\n {\n intersectionList.push(targetOutline);\n unionList.push(sourceOutline);\n }\n else if (targetContainerSource)//目标包含源\n {\n unionList.push(targetOutline);\n intersectionList.push(sourceOutline);\n }\n else if (interPts.length <= 1)//分离\n {\n unionList.push(sourceOutline, targetOutline);\n }\n else//相交 interPts.length > 0\n {\n let pars1 = interPts.map(r => r.thisParam);\n let pars2 = interPts.map(r => r.argParam);\n\n let sourceCus: Array = sourceOutline.GetSplitCurves(pars1);\n let targetCus: Array = targetOutline.GetSplitCurves(pars2);\n\n for (let pl of sourceCus)\n {\n let hasEqualCus = false;\n for (let i = 0; i < targetCus.length; i++)\n {\n let cu = targetCus[i];\n hasEqualCus = fastEqualCurve(cu, pl);\n if (hasEqualCus)\n {\n //方向相同\n if (\n equalv3(cu.GetFistDeriv(cu.EndParam * 0.5).normalize(), pl.GetFistDeriv(pl.EndParam * 0.5).normalize(), 1e-3)\n === isEqualNormal\n )\n {\n unionList.push(pl);\n intersectionList.push(pl);\n }\n targetCus.splice(i, 1);\n break;\n }\n }\n\n if (hasEqualCus)\n continue;\n\n if (fastCurveInCurve(targetOutline, pl))\n intersectionList.push(pl);\n else\n unionList.push(pl);\n }\n\n for (let pl of targetCus)\n {\n if (fastCurveInCurve(sourceOutline, pl))\n intersectionList.push(pl);\n else\n unionList.push(pl);\n }\n\n //特殊的分离\n if (intersectionList.length === 0 && unionList.length === (sourceCus.length + targetCus.length))\n {\n return { intersectionList, unionList: [sourceOutline, targetOutline] };\n }\n }\n return { intersectionList, unionList };\n }\n GetSubtractList(target: Contour): Polyline[]\n {\n let sourceOutline = this._Curve as Polyline;\n let targetOutline = target.Curve as Polyline;\n\n let isEqualNormal = equalv3(sourceOutline.Normal, targetOutline.Normal, 1e-3);\n\n let interPts = sourceOutline.IntersectWith2(targetOutline, IntersectOption.OnBothOperands, COMBINE_FUZZ);\n\n if (interPts.length <= 1)\n {\n //反包含\n if (fastCurveInCurve2(targetOutline, sourceOutline) || equalCurve(targetOutline, sourceOutline))\n return [];\n //包含\n if (fastCurveInCurve2(sourceOutline, targetOutline))\n return [sourceOutline, targetOutline];\n else//分离\n return [sourceOutline];\n }\n\n //相交\n let subtractList: Polyline[] = [];\n let sourceCus = sourceOutline.GetSplitCurves(interPts.map(r => r.thisParam)) as Polyline[];\n let targetCus = targetOutline.GetSplitCurves(interPts.map(r => r.argParam)) as Polyline[];\n\n for (let pl of sourceCus)\n {\n let plMidParam = pl.MidParam;\n let plDir = pl.GetFistDeriv(plMidParam).normalize();\n\n let index = targetCus.findIndex(cu => fastEqualCurve(cu, pl));\n if (index !== -1)\n {\n let cu = targetCus[index];\n let cuMidParam = cu.MidParam;\n let cuDir = cu.GetFistDeriv(cuMidParam).normalize();\n\n if (isEqualNormal === !equalv3(cuDir, plDir, 1e-3))//不同向\n subtractList.push(pl);\n\n targetCus.splice(index, 1);\n\n continue;\n }\n if (!fastCurveInCurve(targetOutline, pl))\n subtractList.push(pl);\n }\n\n //源对象没有被破坏\n let sourceNotBreak = subtractList.length === sourceCus.length;\n\n for (let pl of targetCus)\n if (fastCurveInCurve(sourceOutline, pl))\n subtractList.push(pl);\n\n if (sourceNotBreak && subtractList.length === sourceCus.length)\n return [sourceOutline];\n\n return subtractList;\n }\n GetSubtractListByMoreTargets(targets: Contour[])\n {\n let { holes, subtractList } = this.GetSubListWithCus(targets);\n\n //纯网洞\n if (subtractList.every(c => c.IsClose))\n return {\n holes: holes.map(h => Contour.CreateContour(h)),\n outlines: Contour.GetAllContour(subtractList)\n };\n\n let regParse = new RegionParse(subtractList, 2);\n\n let contours: Contour[] = [];\n //分析封闭包围区域\n const parseRoute = (routeSet: Array[]) =>\n {\n for (let routes of routeSet)\n {\n let cs: Curve[] = routes.map(r => r.curve);\n let c = Contour.CreateContour(cs, false);\n if (c\n && !equalCurve(c.Curve, this.Curve)\n && targets.every(target => !equalCurve(c.Curve, target.Curve))\n && c.Area > 1e-3)\n contours.push(c);\n }\n };\n parseRoute(regParse.RegionsOutline);\n parseRoute(regParse.RegionsInternal);\n\n return {\n holes: holes.map(h => Contour.CreateContour(h)),\n outlines: contours\n };\n\n }\n GetSubListWithCus(targets: Contour[])\n {\n let sourceOutline = this._Curve as Polyline;\n let subtractList: Polyline[] = [];\n let holes: Polyline[] = [];\n let intPars: number[] = [];\n let cuMap = new Map();\n\n let outBox = sourceOutline.BoundingBox;\n\n for (let con of targets)\n {\n const targetOutline = con.Curve as Polyline;\n\n if (!IntersectBox2(outBox, targetOutline.BoundingBox))\n continue;\n\n let pts = sourceOutline.IntersectWith2(con.Curve, IntersectOption.OnBothOperands, COMBINE_FUZZ);\n if (pts.length <= 1)\n {\n //反包含\n if (fastCurveInCurve2(targetOutline, sourceOutline) || equalCurve(targetOutline, sourceOutline))\n return { holes, subtractList };\n //包含\n if (fastCurveInCurve2(sourceOutline, targetOutline))\n holes.push(targetOutline);\n else//分离\n {\n\n }\n }\n else\n {\n intPars.push(...pts.map(r => r.thisParam));\n cuMap.set(targetOutline, pts.map(r => r.argParam));\n }\n }\n intPars.sort((a, b) => a - b);\n arrayRemoveDuplicateBySort(intPars, (e1, e2) => equaln(e1, e2, 1e-8));\n let sourceCus = sourceOutline.GetSplitCurves(intPars) as Polyline[];\n let targetCus: Polyline[] = [];\n\n let targetMap = new WeakMap();\n\n let isEqualNormal: boolean;\n\n for (let [c, pars] of cuMap)\n {\n let cus = c.GetSplitCurves(pars) as Polyline[];\n cus.forEach(cu => targetMap.set(cu, c));\n targetCus.push(...cus);\n }\n\n for (let pl of sourceCus)\n {\n let plMidParam = pl.MidParam;\n let plDir = pl.GetFistDeriv(plMidParam).normalize();\n\n let index = targetCus.findIndex(cu => fastEqualCurve(cu, pl, 0.05));\n if (index !== -1)\n {\n let cu = targetCus[index];\n isEqualNormal = equalv3(sourceOutline.Normal, targetMap.get(cu).Normal, 1e-3);\n let cuMidParam = cu.MidParam;\n let cuDir = cu.GetFistDeriv(cuMidParam).normalize();\n\n if (isEqualNormal === !equalv3(cuDir, plDir, 1e-3))//不同向\n subtractList.push(pl);\n\n targetCus.splice(index, 1);\n\n continue;\n }\n\n if (targets.every(t => !fastCurveInCurve(t.Curve as Polyline, pl)))\n subtractList.push(pl);\n }\n\n //源对象没有被破坏\n let sourceNotBreak = subtractList.length === sourceCus.length;\n\n for (let pl of targetCus)\n if (fastCurveInCurve(sourceOutline, pl))\n subtractList.push(pl);\n\n if (sourceNotBreak && subtractList.length === sourceCus.length)\n return { subtractList: [sourceOutline], holes };\n\n return { subtractList, holes };\n\n }\n /**\n * 获得全部闭合曲线\n * @若传入二维曲线数据,将默认子数组为闭合曲线段\n */\n static GetAllContour(cus: Curve[] | Curve[][]): Contour[]\n {\n if (cus.length === 0)\n return [];\n\n let cuGroups: Curve[][];\n if (Array.isArray(cus[0]))\n cuGroups = cus as Curve[][];\n else\n cuGroups = curveLinkGroup(cus as Curve[]);\n\n let contours: Contour[] = [];\n\n for (let g of cuGroups)\n contours.push(Contour.CreateContour(g, false));\n return contours.filter(c => c !== undefined && !equaln(c.Area, 0, 1e-6));\n }\n /**\n * 合并曲线组成为多段线\n * @param cus 曲线组\n * @param [needLink=true] 需要解析成首尾连接状态\n * @returns 单一曲线,如果返回超过1个,其他的将被遗弃.\n */\n static Combine(cus: Curve[], needLink = true, tolerance = 1e-3): Curve\n {\n if (cus.length === 0) return undefined;\n\n let groups = needLink ? curveLinkGroup(cus) : [cus];\n for (let g of groups)\n {\n if (g.length === 1)\n return g[0].Clone();\n else\n {\n if (cache.has(g))\n return cache.get(g);\n\n let gclone = g.map(c => c.Clone());\n\n arrayRemoveDuplicateBySort(gclone, (cu1: Curve, cu2: Curve) => cu1.Join(cu2, false, tolerance) === Status.True);\n\n if (gclone.length > 1 && gclone[0].Join(arrayLast(gclone), false, tolerance))\n gclone.pop();\n\n let pl = Polyline.Combine(gclone, tolerance);\n\n cache.set(g, pl);\n\n return pl;\n }\n }\n }\n get Shape(): THREE.Shape\n {\n return this._Curve.Shape;\n }\n CuInOutline(targetCur: Curve)\n {\n return isTargetCurInOrOnSourceCur(this._Curve, targetCur);\n }\n Equal(tar: Contour)\n {\n return equalCurve(this._Curve, tar._Curve);\n }\n}\n\n/**\n * 对于轮廓切割后的曲线判断相同,使用这个函数进行快速判断\n */\nfunction fastEqualCurve(c1: Curve, c2: Curve, tolerance = 1e-3)\n{\n let sp1 = c1.StartPoint;\n let ep1 = c1.EndPoint;\n let sp2 = c2.StartPoint;\n let ep2 = c2.EndPoint;\n\n if (!(\n (equalv3(sp1, sp2, tolerance) && equalv3(ep1, ep2, tolerance))\n || (equalv3(sp1, ep2, tolerance) && equalv3(ep1, sp2, tolerance))\n ))\n return false;\n\n return equalv3(c1.Midpoint, c2.Midpoint, tolerance);\n}\n\n\n//对于双多段线互相切割后的结果,快速判断曲线是否在另一条曲线内部\n//也许有一天这个中点算法需要改一下, 使用 src\\Geometry\\ExtrudeEdgeGeometry2.ts->CenterPoint 会比较稳妥\nfunction fastCurveInCurve(sourceCu: Polyline | Circle, targetCu: Curve)\n{\n return sourceCu.PtInCurve(targetCu.GetPointAtParam(targetCu.EndParam * 0.5));\n}\n\nfunction fastCurveInCurve2(sourceCu: Polyline | Circle, targetCu: Curve)\n{\n return sourceCu.PtInCurve(targetCu.StartPoint) &&\n sourceCu.PtInCurve(targetCu.GetPointAtParam(targetCu.EndParam * 0.5));\n}\n","import { Line3, Plane, Ray, Vector3 } from \"three\";\r\n\r\nexport class PlaneExt extends Plane\r\n{\r\n constructor(normal = new Vector3(0, 0, 1), constant?: number | Vector3)\r\n {\r\n super(normal);\r\n if (typeof constant === \"number\")\r\n this.constant = constant;\r\n else if (constant)\r\n this.constant = -this.normal.dot(constant);\r\n }\r\n\r\n intersectLine(line: Line3, optionalTarget = new Vector3(), extendLine = false): Vector3\r\n {\r\n let v1 = new Vector3();\r\n\r\n let direction = line.delta(v1);\r\n\r\n let denominator = this.normal.dot(direction);\r\n\r\n if (denominator === 0)\r\n {\r\n // line is coplanar, return origin\r\n if (this.distanceToPoint(line.start) === 0)\r\n {\r\n return optionalTarget.copy(line.start);\r\n }\r\n // Unsure if this is the correct method to handle this case.\r\n return undefined;\r\n }\r\n\r\n let t = - (line.start.dot(this.normal) + this.constant) / denominator;\r\n //If you not extendLine,check intersect point in Line\r\n if (!extendLine && (t < -1e-6 || t > 1))\r\n {\r\n return undefined;\r\n }\r\n\r\n return optionalTarget.copy(direction).multiplyScalar(t).add(line.start);\r\n }\r\n intersectRay(ray: Ray, optionalTarget?: Vector3, extendLine?: boolean): Vector3\r\n {\r\n // 从射线初始位置\r\n let line = new Line3(ray.origin.clone(), ray.origin.clone().add(ray.direction));\r\n return this.intersectLine(line, optionalTarget, extendLine);\r\n }\r\n}\r\n","import { Box3, BufferGeometry, Matrix3, Matrix4, Object3D, Shape, Vector3, Line as TLine, MathUtils } from 'three';\r\nimport { arrayLast, arrayRemoveDuplicateBySort } from '../../Common/ArrayExt';\r\nimport { ColorMaterial } from '../../Common/ColorPalette';\r\nimport { getDeterminantFor2V, getArcOrCirNearPts, getTanPtsOnEllipse, Pts2Polyline } from '../../Common/CurveUtils';\r\nimport { Status } from '../../Common/Status';\r\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\r\nimport { angle, equaln, equalv3, MoveMatrix, rotatePoint, angleTo, AsVector2, AsVector3 } from '../../Geometry/GeUtils';\r\nimport { IntersectEllipse, IntersectEllipseAndCircleOrArc, IntersectEllipseAndLine, IntersectOption, IntersectPolylineAndCurve, reverseIntersectOption } from '../../GraphicsSystem/IntersectWith';\r\nimport { RenderType } from '../../GraphicsSystem/RenderType';\r\nimport { Arc } from './Arc';\r\nimport { Factory } from '../CADFactory';\r\nimport { CADFiler } from '../CADFiler';\r\nimport { Circle } from './Circle';\r\nimport { Curve } from './Curve';\r\nimport { Line } from './Line';\r\nimport { Polyline } from './Polyline';\r\nimport { SwapParam } from './../../Common/CurveUtils';\r\n\r\n@Factory\r\nexport class Ellipse extends Curve\r\n{\r\n private _radX: number;\r\n private _radY: number;\r\n private _rotate: number;\r\n private _startAngle = 0;\r\n private _endAngle = Math.PI * 2;\r\n constructor(\r\n center?: Vector3,\r\n radX: number = 1e-3,\r\n radY: number = 1e-3,\r\n angle: number = 0)\r\n {\r\n super();\r\n center && this._Matrix.setPosition(center);\r\n this._radX = radX;\r\n this._radY = radY;\r\n this._rotate = angle;\r\n }\r\n get StartParam(): number\r\n {\r\n return 0;\r\n }\r\n get EndParam(): number\r\n {\r\n return 1;\r\n }\r\n get StartPoint()\r\n {\r\n return this.GetPointAtParam(0);\r\n }\r\n get EndPoint()\r\n {\r\n return this.GetPointAtParam(1);\r\n }\r\n get Shape(): Shape\r\n {\r\n let sp = new Shape();\r\n sp.ellipse(0, 0, this._radX, this._radY, this._startAngle, this._endAngle, false, this._rotate);\r\n return sp;\r\n }\r\n get IsClose(): boolean\r\n {\r\n return equaln(this.TotalAngle, Math.PI * 2);\r\n }\r\n get Center()\r\n {\r\n return new Vector3().setFromMatrixPosition(this._Matrix);\r\n }\r\n set Center(v: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._Matrix.setPosition(v);\r\n this.Update();\r\n }\r\n get RadX()\r\n {\r\n return this._radX;\r\n }\r\n set RadX(v: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._radX = v;\r\n this.Update();\r\n }\r\n get RadY()\r\n {\r\n return this._radY;\r\n }\r\n set RadY(v: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._radY = v;\r\n this.Update();\r\n }\r\n get Rotation()\r\n {\r\n return this._rotate;\r\n }\r\n set Rotation(v: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._rotate = v;\r\n this.Update();\r\n }\r\n get StartAngle()\r\n {\r\n return this._startAngle;\r\n }\r\n get EndAngle()\r\n {\r\n return this._startAngle;\r\n }\r\n set StartAngle(v: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._startAngle = v;\r\n this.Update();\r\n }\r\n set EndAngle(v: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._endAngle = v;\r\n this.Update();\r\n }\r\n get Length()\r\n {\r\n let a = this._radX;\r\n let b = this._radY;\r\n return Math.PI * Math.abs(3 * (a + b) - Math.sqrt((3 * a + b) * (a + 3 * b))) * this.TotalAngle / Math.PI * 0.5;\r\n }\r\n get Area()\r\n {\r\n let area = Math.PI * this._radX * this._radY;\r\n let an = this._endAngle - this._startAngle;\r\n if (an < 0)\r\n an = Math.PI * 2 + an;\r\n area *= an / Math.PI * 0.5;\r\n let area2 = Math.abs(\r\n getDeterminantFor2V(\r\n AsVector2(this.StartPoint.sub(this.Center)),\r\n AsVector2(this.EndPoint.sub(this.Center)))\r\n ) / 2;\r\n if (an < Math.PI)\r\n area -= area2;\r\n else\r\n area += area2;\r\n return area;\r\n }\r\n get TotalAngle()\r\n {\r\n let totolAngle = this._endAngle - this._startAngle;\r\n if (totolAngle < 0)\r\n totolAngle = Math.PI * 2 + totolAngle;\r\n return totolAngle;\r\n }\r\n get BoundingBox(): Box3\r\n {\r\n return new Box3().setFromPoints(this.GetGripPoints());\r\n }\r\n PtInCurve(pt: Vector3)\r\n {\r\n let p = rotatePoint(pt.clone().sub(this.Center), -this.Rotation);\r\n return p.x ** 2 / this.RadX ** 2 + p.y ** 2 / this.RadY ** 2 < 1;\r\n }\r\n PtOnCurve(pt: Vector3)\r\n {\r\n if (this.PtOnEllipse(pt))\r\n {\r\n let a = this.GetCircleAngleAtPoint(pt);\r\n return a <= this.TotalAngle + 1e-6;\r\n }\r\n return false;\r\n }\r\n PtOnEllipse(pt: Vector3)\r\n {\r\n let p = rotatePoint(pt.clone().applyMatrix4(this.OCSInv), -this.Rotation);\r\n return equaln(p.x ** 2 / this.RadX ** 2 + p.y ** 2 / this.RadY ** 2, 1, 1e-3);\r\n }\r\n GetPointAtParam(param: number)\r\n {\r\n let an = this.TotalAngle * param + this._startAngle;\r\n\r\n if (an > Math.PI)\r\n an -= 2 * Math.PI;\r\n\r\n let a = this.RadX;\r\n let b = this.RadY;\r\n let pt = new Vector3(a * Math.cos(an), b * Math.sin(an), 0);\r\n\r\n pt.applyMatrix4(new Matrix4().makeRotationZ(this._rotate));\r\n\r\n return pt.applyMatrix4(this.OCS);\r\n }\r\n GetParamAtPoint(pt?: Vector3)\r\n {\r\n if (!this.PtOnEllipse(pt))\r\n {\r\n return NaN;\r\n }\r\n let an = this.GetCircleAngleAtPoint(pt);\r\n let par = an / this.TotalAngle;\r\n\r\n if (this.IsClose || par < 1 + 1e-6)\r\n return par;\r\n else\r\n {\r\n let diffPar = Math.PI * 2 / this.TotalAngle - 1;\r\n if (par - 1 < diffPar / 2)\r\n return par;\r\n else\r\n return par - 1 - diffPar;\r\n }\r\n }\r\n GetPointAtDistance(distance: number)\r\n {\r\n let param = distance / this.Length;\r\n return this.GetPointAtParam(param);\r\n }\r\n GetDistAtParam(param: number)\r\n {\r\n return this.Length * param;\r\n }\r\n GetDistAtPoint(pt: Vector3)\r\n {\r\n let param = this.GetParamAtPoint(pt);\r\n return this.GetDistAtParam(param);\r\n }\r\n GetParamAtDist(d: number)\r\n {\r\n return d / this.Length;\r\n }\r\n GetAngleAtParam(par: number)\r\n {\r\n let pt = this.GetPointAtParam(par).applyMatrix4(this.OCSInv).applyMatrix4(new Matrix4().makeRotationZ(-this.Rotation));\r\n return angle(pt) + this._startAngle;\r\n }\r\n GetCircleAngleAtPoint(pt: Vector3)\r\n {\r\n pt = pt.clone().applyMatrix4(this.OCSInv);\r\n let an = angle(pt) - this._rotate;\r\n if (an < 0)\r\n an = Math.PI * 2 - an;\r\n if (an > Math.PI * 2)\r\n an -= Math.PI * 2;\r\n let dist = pt.length();\r\n let k = dist * Math.cos(an) / this._radX;\r\n if (Math.abs(k) > 1)\r\n k = Math.floor(Math.abs(k)) * Math.sign(k);\r\n if (Math.abs(an) <= Math.PI)\r\n an = Math.acos(k);\r\n else\r\n an = Math.PI * 2 - Math.acos(k);\r\n\r\n an -= this._startAngle;\r\n\r\n if (an < 0)\r\n an = Math.PI * 2 + an;\r\n return an;\r\n }\r\n\r\n GetFistDeriv(pt: number | Vector3)\r\n {\r\n if (typeof pt === \"number\")\r\n pt = this.GetPointAtParam(pt);\r\n else\r\n pt = pt.clone();\r\n\r\n let refPts = this.GetGripPoints();\r\n\r\n let p = pt.clone().applyMatrix4(this.OCSInv).applyMatrix4(new Matrix4().makeRotationZ(-this._rotate));\r\n let vec = new Vector3();\r\n if (equalv3(pt, refPts[0]))\r\n vec.set(0, 1, 0);\r\n else if (equalv3(pt, refPts[1]))\r\n {\r\n vec.set(0, -1, 0);\r\n }\r\n else if (p.y > 0)\r\n {\r\n let k = -(this._radY ** 2 * p.x) / (this._radX ** 2 * p.y);\r\n vec.set(-1, -k, 0);\r\n }\r\n else\r\n {\r\n let k = -(this._radY ** 2 * p.x) / (this._radX ** 2 * p.y);\r\n vec.set(1, k, 0);\r\n }\r\n vec.applyMatrix4(new Matrix4().makeRotationZ(this._rotate));\r\n\r\n return vec.applyMatrix4(new Matrix4().extractRotation(this.OCS));\r\n }\r\n GetClosestPointTo(p: Vector3, extend: boolean): Vector3\r\n {\r\n //参考:https://wet-robots.ghost.io/simple-method-for-distance-to-ellipse/\r\n let ro = new Matrix4().makeRotationZ(this._rotate);\r\n let roInv = new Matrix4().getInverse(ro);\r\n let pt = p.clone().applyMatrix4(this.OCSInv).setZ(0).applyMatrix4(roInv);\r\n let px = pt.x;\r\n let py = pt.y;\r\n let t = angle(pt);\r\n let a = this._radX;\r\n let b = this._radY;\r\n let x: number, y: number;\r\n for (let i = 0; i < 3; i++)\r\n {\r\n x = a * Math.cos(t);\r\n y = b * Math.sin(t);\r\n let ex = (a ** 2 - b ** 2) * Math.cos(t) ** 3 / a;\r\n let ey = (b * b - a * a) * Math.sin(t) ** 3 / b;\r\n let rx = x - ex;\r\n let ry = y - ey;\r\n let qx = px - ex;\r\n let qy = py - ey;\r\n\r\n let r = Math.sqrt(ry ** 2 + rx ** 2);\r\n let q = Math.sqrt(qy ** 2 + qx ** 2);\r\n\r\n let dc = r * Math.asin((rx * qy - ry * qx) / (r * q));\r\n let dt = dc / Math.sqrt(a * a + b * b - x * x - y * y);\r\n\r\n t += dt;\r\n }\r\n let retPt = new Vector3(x, y).applyMatrix4(ro).applyMatrix4(this.OCS);\r\n if (this.IsClose || extend)\r\n {\r\n return retPt;\r\n }\r\n else if (this.PtOnCurve(retPt))\r\n {\r\n return retPt;\r\n }\r\n else\r\n {\r\n let d1 = p.distanceToSquared(this.StartPoint);\r\n let d2 = p.distanceToSquared(this.EndPoint);\r\n return d1 < d2 ? this.StartPoint : this.EndPoint;\r\n }\r\n }\r\n GetOffsetCurves(offsetDist: number)\r\n {\r\n if ((offsetDist + Math.min(this._radX, this._radY)) > 0)\r\n {\r\n let el = this.Clone();\r\n el.RadX = this._radX + offsetDist;\r\n el.RadY = this._radY + offsetDist;\r\n return [el];\r\n }\r\n return [];\r\n }\r\n GetSplitCurves(param: number[] | number)\r\n {\r\n let params: number[];\r\n if (param instanceof Array)\r\n {\r\n params = param.filter(p => this.ParamOnCurve(p));\r\n params.sort((a1, a2) => a2 - a1);//从大到小\r\n }\r\n else\r\n params = [param];\r\n\r\n //补上最后一个到第一个的弧\r\n if (this.IsClose)\r\n params.unshift(arrayLast(params));\r\n else\r\n {\r\n params.unshift(1);\r\n params.push(0);\r\n }\r\n arrayRemoveDuplicateBySort(params);\r\n\r\n let anglelist = params.map(param => this.TotalAngle * param + this._startAngle);\r\n let elllist: this[] = [];\r\n for (let i = 0; i < anglelist.length - 1; i++)\r\n {\r\n let sa = anglelist[i];\r\n let ea = anglelist[i + 1];\r\n let el = this.Clone();\r\n if (!equaln(sa, ea, 1e-6))\r\n {\r\n el.StartAngle = ea;\r\n el.EndAngle = equaln(sa, 0) ? Math.PI * 2 : sa;\r\n elllist.push(el);\r\n }\r\n }\r\n return elllist;\r\n }\r\n Join(el: Ellipse)\r\n {\r\n if (this.IsClose || el.IsClose || !this.IsCoplaneTo(el) || !equalv3(el.Center, this.Center))\r\n return Status.False;\r\n\r\n let status = Status.False;\r\n\r\n if (equaln(this._endAngle, this._startAngle))\r\n {\r\n this.EndAngle = this._endAngle;\r\n status = Status.True;\r\n }\r\n else if (equaln(this._startAngle, el._endAngle))\r\n {\r\n this.StartAngle = el._startAngle;\r\n status = Status.True;\r\n }\r\n if (status === Status.True && !this.IsClose && equaln(this._startAngle, this._endAngle))\r\n {\r\n this.StartAngle = 0;\r\n this.EndAngle = Math.PI * 2;\r\n }\r\n return status;\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n {\r\n let pts = this.GetGripPoints();\r\n return pts;\r\n }\r\n case ObjectSnapMode.Cen:\r\n return [this.Center];\r\n case ObjectSnapMode.Nea:\r\n {\r\n return getArcOrCirNearPts(this, pickPoint, viewXform);\r\n }\r\n case ObjectSnapMode.Per:\r\n if (lastPoint)\r\n {\r\n if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10))\r\n return [];\r\n return [this.GetClosestPointTo(lastPoint, false)];\r\n }\r\n case ObjectSnapMode.Tan:\r\n {\r\n //TODO:过某点获取椭圆全部切点\r\n if (lastPoint)\r\n {\r\n return getTanPtsOnEllipse(this, lastPoint);\r\n }\r\n }\r\n default:\r\n return [];\r\n }\r\n }\r\n IntersectWith2(curve: Curve, intType: IntersectOption)\r\n {\r\n //TODO:优化椭圆和椭圆,椭圆和圆相交\r\n if (curve instanceof Line)\r\n {\r\n return SwapParam(IntersectEllipseAndLine(curve, this, reverseIntersectOption(intType)));\r\n }\r\n else if (curve instanceof Circle || curve instanceof Arc)\r\n {\r\n return IntersectEllipseAndCircleOrArc(this, curve, intType);\r\n }\r\n else if (curve instanceof Polyline)\r\n {\r\n return SwapParam(IntersectPolylineAndCurve(curve, this, intType));\r\n }\r\n else if (curve instanceof Ellipse)\r\n {\r\n return IntersectEllipse(this, curve, intType);\r\n }\r\n else\r\n return [];\r\n }\r\n InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\r\n {\r\n let line = new TLine(this.UpdateGeometry(), ColorMaterial.GetLineMaterial(this._Color));\r\n this.UpdateDrawObject(renderType, line);\r\n return line;\r\n }\r\n UpdateDrawObject(type: RenderType, obj: Object3D)\r\n {\r\n let geo = (obj as TLine).geometry as BufferGeometry;\r\n this.UpdateGeometry(geo);\r\n }\r\n //更新Geometry\r\n private UpdateGeometry(geo?: BufferGeometry)\r\n {\r\n if (!geo)\r\n geo = new BufferGeometry();\r\n let curve = this.Shape;\r\n geo.setFromPoints(curve.getPoints(60));\r\n return geo;\r\n }\r\n GetStretchPoints(): Array\r\n {\r\n return this.GetGripPoints();\r\n }\r\n GetGripPoints(): Array\r\n {\r\n let tmpMat4 = new Matrix4().makeRotationZ(this.Rotation);\r\n let pts = [\r\n new Vector3(this._radX, 0),\r\n new Vector3(-this._radX, 0),\r\n new Vector3(0, this._radY),\r\n new Vector3(0, -this._radY)\r\n ].map(p => p.applyMatrix4(tmpMat4).applyMatrix4(this.OCS));\r\n\r\n if (!equaln(0, this._startAngle))\r\n pts.push(this.StartPoint);\r\n if (!equaln(0, this._endAngle))\r\n pts.push(this.EndPoint);\r\n\r\n pts.push(this.Center);\r\n return pts;\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.ApplyMatrix(MoveMatrix(vec));\r\n }\r\n MoveGripPoints(indexList: Array, vec: Vector3)\r\n {\r\n let pts = this.GetStretchPoints();\r\n\r\n if (indexList.length > 0)\r\n {\r\n let p = pts[indexList[0]].clone();\r\n p.add(vec);\r\n\r\n if (indexList[0] <= 1)\r\n this.RadX = p.distanceTo(this.Center);\r\n else if (indexList[0] <= 3)\r\n this.RadY = p.distanceTo(this.Center);\r\n else\r\n {\r\n let p1 = pts[indexList[0]];\r\n //TODO:跟cad不一致待优化\r\n if (equalv3(p1, this.StartPoint))\r\n {\r\n let v1 = p1.clone().sub(this.Center);\r\n let v2 = p.clone().sub(this.Center);\r\n let an = angleTo(v1, v2);\r\n this.StartAngle = this.StartAngle + an;\r\n }\r\n else if (equalv3(p1, this.EndPoint))\r\n {\r\n let v1 = p1.clone().sub(this.Center);\r\n let v2 = p.clone().sub(this.Center);\r\n let an = angleTo(v2, v1);\r\n this.EndAngle = this.EndAngle + an;\r\n }\r\n else\r\n this.Center = p;\r\n }\r\n }\r\n }\r\n Convert2Polyline(count = 0)\r\n {\r\n const MIN_LEN = 80;\r\n const par = this.TotalAngle / Math.PI * 0.5;\r\n if (!count)\r\n {\r\n count = Math.floor(this.Length / par / MIN_LEN);\r\n count = MathUtils.clamp(count, 15, 80);\r\n }\r\n\r\n count = Math.floor(count * par);\r\n\r\n if ((count & 1) === 0)\r\n count++;\r\n\r\n let pts = this.Shape.getPoints(count);\r\n if (this.IsClose)\r\n pts.pop();\r\n\r\n let pl = Pts2Polyline(pts, this.IsClose);\r\n pl.ApplyMatrix(this.OCS);\r\n if (this.IsClose)\r\n pl.CloseMark = true;\r\n return pl;\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();\r\n this._radX = file.Read();\r\n this._radY = file.Read();\r\n this._rotate = file.Read();\r\n this._startAngle = file.Read();\r\n this._endAngle = file.Read();\r\n this.Update();\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(1);\r\n file.Write(this.RadX);\r\n file.Write(this.RadY);\r\n file.Write(this.Rotation);\r\n file.Write(this._startAngle);\r\n file.Write(this._endAngle);\r\n }\r\n\r\n}\r\n","import { Box3, BufferGeometry, Line as TLine, Line3, Matrix3, Matrix4, Object3D, Shape, Vector3 } from 'three';\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { reviseMirrorMatrix } from '../../Common/Matrix4Utils';\nimport { Status } from '../../Common/Status';\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\nimport { BufferGeometryUtils } from '../../Geometry/BufferGeometryUtils';\nimport { AsVector2, equaln, equalv3, isParallelTo, MoveMatrix } from '../../Geometry/GeUtils';\nimport { PlaneExt } from '../../Geometry/Plane';\nimport { IntersectEllipseAndLine, IntersectLineAndArc, IntersectLineAndCircle, IntersectLineAndLine, IntersectOption, IntersectPolylineAndCurve, reverseIntersectOption } from '../../GraphicsSystem/IntersectWith';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { Factory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { SwapParam } from './../../Common/CurveUtils';\nimport { Arc } from './Arc';\nimport { Circle } from './Circle';\nimport { Curve } from './Curve';\nimport { Ellipse } from './Ellipse';\nimport { Polyline } from './Polyline';\n\n@Factory\nexport class Line extends Curve\n{\n\n constructor(private _StartPoint = new Vector3,\n private _EndPoint = new Vector3)\n {\n super();\n }\n\n get Is2D()\n {\n return super.Is2D && equaln(this._StartPoint.z, 0) && equaln(this._EndPoint.z, 0);\n }\n\n get Shape()\n {\n return new Shape([AsVector2(this._StartPoint), AsVector2(this._EndPoint)]);\n }\n\n Z0()\n {\n this.WriteAllObjectRecord();\n this.StartPoint = this.StartPoint.setZ(0);\n this.EndPoint = this.EndPoint.setZ(0);\n return this;\n }\n\n protected ApplyScaleMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n this.StartPoint = this.StartPoint.applyMatrix4(m);\n this.EndPoint = this.EndPoint.applyMatrix4(m);\n return this;\n }\n protected ApplyMirrorMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n\n let sp = this.StartPoint;\n let ep = this.EndPoint;\n\n reviseMirrorMatrix(this._Matrix);\n\n this.StartPoint = sp;\n this.EndPoint = ep;\n return this;\n }\n InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\n {\n let geo = BufferGeometryUtils.CreateFromPts([this._StartPoint, this._EndPoint]);\n if (renderType === RenderType.WireframePrint)\n {\n var geometry = new LineGeometry();\n geometry.setPositions(geo.attributes.position.array as number[]);\n return new Line2(geometry, ColorMaterial.PrintLineMatrial);\n }\n return new TLine(geo, ColorMaterial.GetLineMaterial(this.ColorIndex));\n }\n\n UpdateDrawObject(type: RenderType, lineObj: TLine)\n {\n BufferGeometryUtils.UpdatePts(lineObj.geometry as BufferGeometry, [this._StartPoint, this._EndPoint]);\n }\n\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform: Matrix3\n ): Vector3[]\n {\n switch (snapMode)\n {\n case ObjectSnapMode.End:\n return [this.StartPoint, this.EndPoint];\n case ObjectSnapMode.Mid:\n return [this.GetPointAtParam(0.5)];\n case ObjectSnapMode.Nea:\n {\n let derv = this.GetFistDeriv(0).normalize();\n let viewNormal = new Vector3().fromArray(viewXform.elements, 2 * 3);\n\n //平行不捕捉\n if (isParallelTo(viewNormal, derv))\n return [];\n\n let fNormal = new Vector3().crossVectors(viewNormal, derv);\n fNormal.crossVectors(derv, fNormal);\n\n let plane = new PlaneExt(fNormal, this.StartPoint);\n let plocal = plane.intersectLine(new Line3(pickPoint, pickPoint.clone().add(viewNormal)), new Vector3(), true);\n let pclosest = this.GetClosestPointTo(plocal, false);\n return [pclosest];\n }\n case ObjectSnapMode.Ext:\n return [this.GetClosestPointTo(pickPoint, true)];\n case ObjectSnapMode.Per:\n if (lastPoint)\n {\n let { closestPt, param } = this.GetClosestAtPoint(lastPoint, true);\n if (this.ParamOnCurve(param))\n return [closestPt];\n }\n default:\n break;\n }\n return [];\n }\n\n GetGripPoints(): Array\n {\n return [this.StartPoint, this.GetPointAtParam(0.5), this.EndPoint];\n }\n MoveGripPoints(indexList: Array, vec: Vector3)\n {\n this.WriteAllObjectRecord();\n for (let index of indexList)\n {\n if (index === 0)\n this.StartPoint = this.StartPoint.add(vec);\n else if (index === 2)\n this.EndPoint = this.EndPoint.add(vec);\n else\n {\n let m = MoveMatrix(vec);\n this.ApplyMatrix(m);\n }\n }\n }\n\n GetStretchPoints(): Array\n {\n return [this.StartPoint, this.EndPoint];\n }\n MoveStretchPoints(indexList: Array, vec: Vector3)\n {\n this.WriteAllObjectRecord();\n for (let index of indexList)\n {\n if (index === 0)\n this.StartPoint = this.StartPoint.add(vec);\n else\n this.EndPoint = this.EndPoint.add(vec);\n }\n }\n\n GetFistDeriv(param: number | Vector3): Vector3\n {\n return this.EndPoint.sub(this.StartPoint);\n }\n\n IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-4)\n {\n if (curve instanceof Line)\n {\n return IntersectLineAndLine(this, curve, intType, tolerance);\n }\n if (curve instanceof Arc)\n {\n return IntersectLineAndArc(this, curve, intType, tolerance);\n }\n if (curve instanceof Circle)\n {\n return IntersectLineAndCircle(this, curve, intType, tolerance);\n }\n if (curve instanceof Polyline)\n {\n return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType), tolerance));\n }\n\n if (curve instanceof Ellipse)\n return IntersectEllipseAndLine(this, curve, intType, tolerance);\n\n //其他的尚未实现.\n return [];\n }\n\n //Param\n GetPointAtParam(param: number): Vector3\n {\n return this.StartPoint.add(this.GetFistDeriv(0).multiplyScalar(param));\n }\n GetParamAtPoint(pt: Vector3): number\n {\n let { closestPt, param } = this.GetClosestAtPoint(pt, true);\n if (!equalv3(closestPt, pt, 1e-5))\n return NaN;\n return param;\n }\n GetParamAtDist(d: number): number\n {\n return d / this.Length;\n }\n GetPointAtDistance(distance: number): Vector3\n {\n return this.GetPointAtParam(this.GetParamAtDist(distance));\n }\n GetDistAtParam(param: number): number\n {\n return this.Length * param;\n }\n GetDistAtPoint(pt: Vector3): number\n {\n return this.GetDistAtParam(this.GetParamAtPoint(pt));\n }\n GetSplitCurves(param: number[] | number)\n {\n let params = this.SplitParamSort(param);\n let pts = params.map(param => this.GetPointAtParam(param));\n let ret = new Array();\n if (pts.length >= 2)\n {\n for (let i = 0; i < pts.length - 1; i++)\n {\n let newLine = this.Clone() as Line;\n newLine.ColorIndex = this.ColorIndex;\n newLine.StartPoint = pts[i];\n newLine.EndPoint = pts[i + 1];\n ret.push(newLine);\n }\n }\n return ret;\n }\n\n GetParamAtPoint2(pt: Vector3): number\n {\n let { param } = this.GetClosestAtPoint(pt, true);\n return param;\n }\n\n //点在曲线上,已经确定点在曲线的延伸线上\n PtOnCurve3(p: Vector3, fuzz = 1e-6): boolean\n {\n let { param } = this.GetClosestAtPoint(p, true);\n return this.ParamOnCurve(param, fuzz);\n }\n\n GetClosestAtPoint(pt: Vector3, extend: boolean): { closestPt: Vector3, param: number; }\n {\n let sp = this.StartPoint;\n let ep = this.EndPoint;\n if (equalv3(pt, sp, 1e-8))\n return { closestPt: sp, param: 0 };\n else if (equalv3(pt, ep, 1e-8))\n return { closestPt: ep, param: 1 };\n\n let direction = this.GetFistDeriv(0);\n let length = direction.length();\n\n if (length === 0)\n {\n let param = NaN;\n if (equalv3(pt, this.StartPoint, 1e-6))\n param = 0;\n return { closestPt: sp, param: param };\n }\n\n direction.divideScalar(length);\n\n let diff = pt.clone().sub(sp);\n let param = direction.dot(diff);\n\n let closestPt: Vector3;\n if (extend)\n closestPt = sp.add(direction.multiplyScalar(param));\n else\n if (param < 0)\n {\n closestPt = sp;\n param = 0;\n }\n else if (param > length)\n {\n closestPt = this.EndPoint;\n param = length;\n }\n else\n closestPt = sp.add(direction.multiplyScalar(param));\n return {\n closestPt: closestPt,\n param: param / length\n };\n }\n\n GetClosestPointTo(pt: Vector3, extend: boolean): Vector3\n {\n return this.GetClosestAtPoint(pt, extend).closestPt;\n }\n\n Extend(newParam: number)\n {\n this.WriteAllObjectRecord();\n if (newParam < this.StartParam)\n {\n this.StartPoint = this.GetPointAtParam(newParam);\n }\n else if (newParam > this.EndParam)\n {\n this.EndPoint = this.GetPointAtParam(newParam);\n }\n }\n\n Join(cu: Curve, allowGap = false, tolerance = 1e-5): Status\n {\n if (cu instanceof Line)\n {\n //平行\n if (!isParallelTo(this.GetFistDeriv(0).normalize(), cu.GetFistDeriv(0).normalize()))\n return Status.False;\n\n let sp = cu.StartPoint;\n let { closestPt: cp1, param: param1 } = this.GetClosestAtPoint(sp, true);\n if (!equalv3(sp, cp1, tolerance))//点在曲线上,允许较低的精度\n return Status.False;\n\n let ep = cu.EndPoint;\n let { closestPt: cp2, param: param2 } = this.GetClosestAtPoint(ep, true);\n if (!equalv3(ep, cp2, tolerance))\n return Status.False;\n\n if (param1 > param2)\n {\n [param1, param2] = [param2, param1];\n [sp, ep] = [ep, sp];\n }\n\n if (allowGap || Math.max(0, param1) < Math.min(1, param2) + tolerance / this.Length)//这里的容差是值容差,但是我们用它来判断参数,所以进行转换\n {\n if (param1 < 0)\n this.StartPoint = sp;\n if (param2 > 1)\n this.EndPoint = ep;\n return Status.True;\n }\n }\n return Status.False;\n }\n\n Reverse(): this\n {\n this.WriteAllObjectRecord();\n [this._StartPoint, this._EndPoint] = [this._EndPoint, this._StartPoint];\n return this;\n }\n\n GetOffsetCurves(offsetDist: number): Array\n {\n let derv = this.GetFistDeriv(0).normalize().multiplyScalar(offsetDist);\n derv.applyMatrix4(new Matrix4().makeRotationAxis(this.Normal, -Math.PI / 2));\n let newLine = this.Clone() as Line;\n newLine.StartPoint = this.StartPoint.add(derv);\n newLine.EndPoint = this.EndPoint.add(derv);\n return [newLine];\n }\n get BoundingBox(): Box3\n {\n return new Box3().setFromPoints([this.StartPoint, this.EndPoint]);\n }\n\n get StartParam()\n {\n return 0;\n }\n get EndParam()\n {\n return 1;\n }\n //属性\n get Length(): number { return this._StartPoint.distanceTo(this._EndPoint); }\n\n //#region -----------------------------File-----------------------------\n //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化\n\n //对象从文件中读取数据,初始化自身\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();//1\n this._StartPoint.fromArray(file.Read());\n this._EndPoint.fromArray(file.Read());\n }\n //对象将自身数据写入到文件.\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(1);//ver\n file.Write(this._StartPoint.toArray());\n file.Write(this._EndPoint.toArray());\n }\n //#endregion-----------------------------File End-----------------------------\n\n //#region 属性\n set StartPoint(p: Vector3)\n {\n this.WriteAllObjectRecord();\n this._StartPoint.copy(p).applyMatrix4(this.OCSInv);\n this.Update();\n }\n get StartPoint(): Vector3\n {\n return this._StartPoint.clone().applyMatrix4(this.OCS);\n }\n\n get EndPoint(): Vector3\n {\n return this._EndPoint.clone().applyMatrix4(this.OCS);\n }\n set EndPoint(p: Vector3)\n {\n this.WriteAllObjectRecord();\n this._EndPoint.copy(p).applyMatrix4(this.OCSInv);\n this.Update();\n }\n\n //#endregion\n}\n","import { Box3, Matrix4, Vector3 } from \"three\";\r\nimport { arrayLast } from \"../Common/ArrayExt\";\r\nimport { ConverCircleToPolyline } from \"../Common/CurveUtils\";\r\nimport { Status } from \"../Common/Status\";\r\nimport { FixIndex } from \"../Common/Utils\";\r\nimport { Contour } from \"../DatabaseServices/Contour\";\r\nimport { Arc } from \"../DatabaseServices/Entity/Arc\";\r\nimport { Circle } from \"../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { Line } from \"../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { IntersectsBox } from \"../Geometry/Box\";\r\nimport { CurveMap, Route, Vertice } from \"../Geometry/CurveMap\";\r\nimport { angle, equaln, equalv2, equalv3, IdentityMtx4, SelectNearP } from \"../Geometry/GeUtils\";\r\nimport { IntersectOption } from \"../GraphicsSystem/IntersectWith\";\r\n\r\ninterface IOffsetResult\r\n{\r\n index: number;\r\n curve: Curve;\r\n sp?: Vector3;\r\n preArc?: Curve;\r\n ep?: Vector3;\r\n nextArc?: Curve;\r\n paddingCurve?: Curve[];\r\n}\r\n\r\nclass CurveTreeNode\r\n{\r\n children: CurveTreeNode[];\r\n box: Box3;\r\n used: boolean;\r\n constructor(public curve: Curve, box?: Box3)\r\n {\r\n this.box = box || curve.BoundingBox;\r\n }\r\n\r\n TrimBy(contour: Contour, box: Box3)\r\n {\r\n if (IntersectsBox(box, this.box))\r\n {\r\n if (this.children !== undefined)\r\n {\r\n for (let c of this.children)\r\n c.TrimBy(contour, box);\r\n }\r\n else\r\n {\r\n if (contour.Curve instanceof Circle && this.curve instanceof Arc)\r\n {\r\n if (equalv3(contour.Curve.Center, this.curve.Center))\r\n {\r\n if (contour.Curve.Radius > this.curve.Radius + 1e-4)\r\n this.children = [];\r\n\r\n return;\r\n }\r\n }\r\n\r\n //交点参数列表\r\n let iParams = this.curve.IntersectWith(contour.Curve, IntersectOption.OnBothOperands)\r\n .map(p => this.curve.GetParamAtPoint2(p));\r\n\r\n let cus = this.curve.GetSplitCurves(iParams);\r\n if (cus.length === 0)\r\n {\r\n let p = this.curve.GetPointAtParam(0.5);\r\n if (box.containsPoint(p) && (contour.Curve.PtInCurve(p) && !contour.Curve.PtOnCurve(p)))\r\n this.children = [];\r\n }\r\n else\r\n {\r\n this.children = [];\r\n for (let c of cus)\r\n {\r\n let p = c.GetPointAtParam(0.5);\r\n if (CurveIsFine(c) && (!(box.containsPoint(p) && contour.Curve.PtInCurve(p)) || contour.Curve.PtOnCurve(p)))\r\n this.children.push(new CurveTreeNode(c));\r\n }\r\n if (this.children.length === cus.length)\r\n this.children = undefined;\r\n }\r\n }\r\n }\r\n }\r\n\r\n get Nodes()\r\n {\r\n if (!this.children) return [this];\r\n else\r\n {\r\n let cus: CurveTreeNode[] = [];\r\n for (let c of this.children)\r\n cus.push(...c.Nodes);\r\n return cus;\r\n }\r\n }\r\n}\r\n\r\nexport class OffsetPolyline\r\n{\r\n //多段线信息\r\n _CacheOCS: Matrix4;\r\n _Vertexs: Vector3[];\r\n _SubCurves: Curve[];\r\n _Circles: Circle[];\r\n\r\n //偏移子曲线\r\n _SubOffsetedCurves: IOffsetResult[];\r\n //用于裁剪的曲线节点\r\n _CurveTreeNodes: CurveTreeNode[];\r\n //裁剪完的曲线节点\r\n _CurveTrimedTreeNodes: CurveTreeNode[];\r\n\r\n //裁剪轮廓\r\n _TrimPolylineContours: Contour[];\r\n _TrimCircleContours: Circle[];\r\n _TrimArcContours: Contour[];\r\n\r\n //结果曲线\r\n _RetCurves: Polyline[];\r\n\r\n _IsClose: boolean;\r\n _OffsetDistSign: number;\r\n\r\n constructor(public _Polyline: Polyline, public _OffsetDist: number, public _ToolPath = false,\r\n private _OffsetDistSq = (_OffsetDist ** 2) * 2.1//对直角走刀不进行圆弧过度\r\n )\r\n {\r\n }\r\n\r\n Do(): Polyline[]\r\n {\r\n this._OffsetDistSign = Math.sign(this._OffsetDist);\r\n this._TrimPolylineContours = [];\r\n this._TrimCircleContours = [];\r\n this._TrimArcContours = [];\r\n\r\n this._RetCurves = [];\r\n this._CurveTreeNodes = [];\r\n\r\n this.InitSubCurves();\r\n if (this._SubCurves.length === 0)\r\n return this._RetCurves;\r\n\r\n this.GeneralCirclesAndVertexs();\r\n this.OffsetSubCurves();\r\n this.LinkSubCurves();\r\n\r\n if (this._SubOffsetedCurves.length === 0)\r\n {\r\n this._SubOffsetedCurves.push({ curve: this._Circles[0], index: 0, paddingCurve: this._Circles.slice(1) });\r\n\r\n this._TrimPolylineContours.push(\r\n ...this._Circles.map(c => Contour.CreateContour(c, false)),\r\n ...this._SubCurves.map(c => Contour.CreateContour([c, new Line(c.StartPoint, c.EndPoint)], false))\r\n );\r\n }\r\n else\r\n this.GeneralTrimContours();\r\n this.TrimByContours();\r\n this.FilterInvalidCurve();\r\n this.JoinCollinear();\r\n this.LinkResultPolyline();\r\n return this._RetCurves;\r\n }\r\n\r\n InitSubCurves()\r\n {\r\n this._CacheOCS = this._Polyline.OCS;\r\n this._IsClose = this._Polyline.IsClose;\r\n this._Polyline.OCS = IdentityMtx4;\r\n this._SubCurves = this._Polyline.Explode().filter(c => c.Length > 1e-4);\r\n this._Polyline.OCS = this._CacheOCS;\r\n return this;\r\n }\r\n\r\n protected GeneralCirclesAndVertexs()\r\n {\r\n this._Vertexs = this._SubCurves.map(c => c.StartPoint);\r\n let lastCu = arrayLast(this._SubCurves);\r\n if (!equalv3(lastCu.EndPoint, this._Vertexs[0], 1e-3))\r\n this._Vertexs.push(lastCu.EndPoint);\r\n\r\n let radius = Math.abs(this._OffsetDist);\r\n this._Circles = this._Vertexs.map(p => new Circle(p, radius));\r\n }\r\n\r\n protected OffsetSubCurves()\r\n {\r\n this._SubOffsetedCurves = [];\r\n for (let index = 0; index < this._SubCurves.length; index++)\r\n {\r\n let curveOld = this._SubCurves[index];\r\n if (curveOld.Length > 1e-6)\r\n {\r\n let curve = curveOld.GetOffsetCurves(this._OffsetDist)[0];\r\n if (curve)\r\n this._SubOffsetedCurves.push({ curve, index });\r\n else\r\n this._TrimArcContours.push(Contour.CreateContour([curveOld, new Line(curveOld.StartPoint, curveOld.EndPoint)], false));\r\n }\r\n }\r\n }\r\n\r\n //连接(延伸)曲线,或者补(圆弧,直线)\r\n protected LinkSubCurves()\r\n {\r\n let count = this._SubOffsetedCurves.length;\r\n if (!this._IsClose) count--;\r\n\r\n for (let i = 0; i < count; i++)\r\n {\r\n let curveResNow = this._SubOffsetedCurves[i];\r\n let iNext = FixIndex(i + 1, this._SubOffsetedCurves);\r\n let curveResNext = this._SubOffsetedCurves[iNext];\r\n let curveNow = curveResNow.curve;\r\n let curveNext = curveResNext.curve;\r\n let isNeighbor = FixIndex(curveResNow.index + 1, this._SubCurves) === curveResNext.index;\r\n\r\n if (isNeighbor)\r\n {\r\n let sp = curveNow.EndPoint;\r\n let ep = curveNext.StartPoint;\r\n //直连\r\n if (equalv3(sp, ep, 1e-3))\r\n continue;\r\n\r\n let iPts = curveNow.IntersectWith(curveNext, IntersectOption.ExtendBoth);\r\n let tPts = iPts.filter(p => curveNow.PtOnCurve3(p) && curveNext.PtOnCurve3(p));\r\n\r\n let code = EntityEncode2(curveNow, curveNext);\r\n\r\n let tp: Vector3;\r\n if (code === 1)\r\n {\r\n if (tPts.length > 0)//不走刀或者有真交点 this._ToolPath === false ||\r\n tp = iPts[0];\r\n else\r\n {\r\n if (iPts.length > 0 && curveNow.GetParamAtPoint(iPts[0]) > 1)\r\n {\r\n let refP = this._Vertexs[curveResNext.index];\r\n let distSq = iPts[0].distanceToSquared(refP);\r\n if (this._ToolPath && distSq > this._OffsetDistSq)\r\n {\r\n curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)];\r\n this._TrimCircleContours.push(this._Circles[curveResNext.index]);\r\n }\r\n else\r\n tp = iPts[0];\r\n }\r\n // else\r\n // curveResNow.paddingCurve = [new Line(sp, ep)];\r\n }\r\n }\r\n else\r\n {\r\n let refP = this._Vertexs[curveResNext.index];\r\n if (tPts.length > 0) //ipts = 1 or ipts = 2\r\n tp = SelectNearP(iPts, refP);\r\n else //补单圆 或者尝试连接\r\n {\r\n let arc = this.CreateArc(refP, sp, ep);\r\n\r\n if (iPts.length > 0 && !this._ToolPath && this.IsSharpCorner(curveResNow, curveResNext, refP))\r\n {\r\n //设置新的连接点,并且备份旧点\r\n let oldp: Vector3;\r\n if (curveResNow.sp)\r\n {\r\n oldp = curveNow.StartPoint;\r\n curveNow.StartPoint = curveResNow.sp;\r\n }\r\n let oldp2: Vector3;\r\n if (curveResNext.ep)\r\n {\r\n oldp2 = curveNext.EndPoint;\r\n curveNext.EndPoint = curveResNext.ep;\r\n }\r\n\r\n let p: Vector3;\r\n\r\n if (code === 2 && iPts.length === 2)\r\n {\r\n let c = curveNow as Arc;\r\n let minArc = new Arc(c.Center, c.Radius, c.EndAngle, 0, c.IsClockWise);\r\n\r\n let p1 = iPts[0];\r\n let a1 = minArc.GetAngleAtPoint(p1);\r\n let anAll1 = c.ParamOnCurve(c.GetParamAtAngle(a1)) ? Infinity : minArc.ComputeAnlge(a1);\r\n\r\n let p2 = iPts[1];\r\n let a2 = minArc.GetAngleAtPoint(p2);\r\n let anAll2 = c.ParamOnCurve(c.GetParamAtAngle(a2)) ? Infinity : minArc.ComputeAnlge(a2);\r\n\r\n if (anAll2 < anAll1)\r\n p = p2;\r\n else\r\n p = p1;\r\n }\r\n else\r\n p = SelectNearP(iPts, refP);\r\n\r\n let onPre: boolean;\r\n let param = curveNow.GetParamAtPoint2(p);\r\n if (curveNow instanceof Line)\r\n onPre = param > 1;\r\n else\r\n onPre = param < 0 || param > 1;\r\n\r\n let onNext: boolean = false;\r\n if (onPre)\r\n {\r\n let param2 = curveNext.GetParamAtPoint2(p);\r\n if (curveNext instanceof Line)\r\n onNext = param2 < 0;\r\n else\r\n onNext = param2 < 0 || param2 > 1;\r\n }\r\n\r\n if (curveResNow.sp)\r\n curveNow.StartPoint = oldp;\r\n if (curveResNext.ep)\r\n curveNext.EndPoint = oldp2;\r\n\r\n if (onPre && onNext)\r\n tp = p;\r\n else\r\n curveResNow.paddingCurve = [arc];\r\n }\r\n else\r\n curveResNow.paddingCurve = [arc];\r\n\r\n this._TrimCircleContours.push(this._Circles[curveResNext.index]);\r\n }\r\n }\r\n if (tp)\r\n {\r\n curveResNow.ep = tp;\r\n curveResNext.sp = tp;\r\n\r\n curveResNow.nextArc = curveNext;\r\n curveResNext.preArc = curveNow;\r\n }\r\n }\r\n else\r\n {\r\n let padCirs: Circle[] = [];\r\n for (let s = FixIndex(curveResNow.index + 1, this._Circles); ; s = FixIndex(s + 1, this._Circles))\r\n {\r\n let c = this._Circles[s];\r\n this._TrimCircleContours.push(c);\r\n padCirs.push(c);\r\n if (s === curveResNext.index)\r\n break;\r\n }\r\n curveResNow.paddingCurve = padCirs;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n private IsSharpCorner(curveResNow: IOffsetResult, curveResNext: IOffsetResult, refP: Vector3): boolean\r\n {\r\n let v1 = this._SubCurves[curveResNow.index].GetPointAtParam(0.9);\r\n let v2 = this._SubCurves[curveResNext.index].GetPointAtParam(0.1);\r\n v1.subVectors(refP, v1);\r\n v2.sub(refP);\r\n v1.cross(v2);\r\n return Math.sign(v1.z) === this._OffsetDistSign;\r\n }\r\n\r\n protected GeneralTrimContours()\r\n {\r\n for (let d of this._SubOffsetedCurves)\r\n {\r\n let cu2 = d.curve;\r\n if (d.sp && d.ep)\r\n {\r\n let param1 = cu2.GetParamAtPoint(d.sp);\r\n let param2 = cu2.GetParamAtPoint(d.ep);\r\n\r\n if (cu2.ParamOnCurve(param1) && cu2.ParamOnCurve(param2) && param1 > param2)\r\n [d.sp, d.ep] = [d.ep, d.sp];\r\n }\r\n if (d.sp) cu2.StartPoint = d.sp;\r\n if (d.ep) cu2.EndPoint = d.ep;\r\n\r\n //这是极端情况,圆弧被压缩成0长度圆弧,本质是空圆弧(我们会在下面判断它)(因为精度的问题)\r\n //因为精度的问题,这种0圆心角的圆弧会被当成全圆,但是偏移算法中,应该不可能出现全圆弧的圆弧,所以我们压扁它\r\n if (cu2 instanceof Arc\r\n && equaln(cu2.StartAngle, cu2.EndAngle, 1e-6)\r\n // && !equaln((this._SubCurves[d.index]).AllAngle, Math.PI * 2, 1e-3) 应该不会出现\r\n )\r\n {\r\n if (cu2.IsClockWise)\r\n cu2.StartAngle = cu2.EndAngle + 1e-6;\r\n else\r\n cu2.EndAngle = cu2.StartAngle + 1e-6;\r\n }\r\n }\r\n for (let d of this._SubOffsetedCurves)\r\n {\r\n let cu1 = this._SubCurves[d.index];\r\n let cu2 = d.curve;\r\n\r\n let [p1, p2, p3, p4] = [cu1.StartPoint, cu2.StartPoint, cu1.EndPoint, cu2.EndPoint];\r\n let l1 = new Line(p1, p2);\r\n let l2 = new Line(p3, p4);\r\n\r\n let ipts = l1.IntersectWith(l2, IntersectOption.OnBothOperands, 1e-8);\r\n if (ipts.length > 0)\r\n {\r\n let p = ipts[0];\r\n l1.EndPoint = p;\r\n l2.EndPoint = p;\r\n let cus = [cu1, l1, l2];\r\n let contour = Contour.CreateContour(cus, false);\r\n if (contour)\r\n {\r\n this._TrimPolylineContours.push(contour);\r\n continue;\r\n }\r\n else\r\n {\r\n console.error(\"未预料到的错误,构建轮廓失败\" + this._OffsetDist);\r\n }\r\n }\r\n\r\n //真理1:针脚线不可能同时被两个圆弧所切割\r\n let l1Intact = true;\r\n let l2Intact = true;\r\n if (cu2 instanceof Arc)\r\n {\r\n if (Math.sign(cu2.Bul) !== this._OffsetDistSign)\r\n {\r\n let ipts1 = cu2.IntersectWith(l1, IntersectOption.OnBothOperands);\r\n let ipts2 = cu2.IntersectWith(l2, IntersectOption.OnBothOperands);\r\n\r\n let sp: Vector3;\r\n let ep: Vector3;\r\n if (ipts1.length === 2)\r\n sp = SelectNearP(ipts1, p1);\r\n if (ipts2.length === 2)\r\n ep = SelectNearP(ipts2, p3);\r\n\r\n if (sp || ep) cu2 = cu2.Clone();\r\n if (sp)\r\n {\r\n l1.EndPoint = sp;\r\n cu2.StartPoint = sp;\r\n l1Intact = false;\r\n }\r\n if (ep)\r\n {\r\n l2.EndPoint = ep;\r\n cu2.EndPoint = ep;\r\n l2Intact = false;\r\n }\r\n }\r\n }\r\n\r\n let l1PadArc: Arc;\r\n let l2PadArc: Arc;\r\n //真理2:隔壁的圆弧不可能破坏当前的圆弧,只能破坏当前的针脚\r\n if (l1Intact && d.preArc && d.preArc instanceof Arc)\r\n {\r\n let a = d.preArc;\r\n if (Math.sign(a.Bul) !== this._OffsetDistSign && a.AllAngle > 1e-6)\r\n {\r\n let ipts = a.IntersectWith(l1, IntersectOption.OnBothOperands);\r\n if (ipts.length === 2)\r\n {\r\n let sp = SelectNearP(ipts, p1);\r\n l1.EndPoint = sp;\r\n l1PadArc = a.Clone();\r\n l1PadArc.StartPoint = sp;\r\n }\r\n }\r\n }\r\n if (l2Intact && d.nextArc && d.nextArc instanceof Arc)\r\n {\r\n let a = d.nextArc;\r\n if (Math.sign(a.Bul) !== this._OffsetDistSign && a.AllAngle > 1e-6)\r\n {\r\n let ipts = a.IntersectWith(l2, IntersectOption.OnBothOperands);\r\n if (ipts.length === 2)\r\n {\r\n let ep = SelectNearP(ipts, p3);\r\n l2.EndPoint = ep;\r\n l2PadArc = a.Clone();\r\n l2PadArc.EndPoint = ep;\r\n }\r\n }\r\n }\r\n\r\n let pl = new Polyline();\r\n let cus = [cu1, l1];\r\n if (l1PadArc) cus.push(l1PadArc);\r\n cus.push(cu2, l2);\r\n if (l2PadArc) cus.push(l2PadArc);\r\n\r\n for (let c of cus)\r\n pl.Join(c);\r\n\r\n let contour = Contour.CreateContour(pl, false);\r\n if (contour)\r\n this._TrimPolylineContours.push(contour);\r\n else\r\n console.error(\"未预料到的错误,构建轮廓失败\" + this._OffsetDist);\r\n }\r\n\r\n if (!this._IsClose)\r\n {\r\n if (this._TrimCircleContours[0] !== this._Circles[0])\r\n this._TrimCircleContours.push(this._Circles[0]);\r\n let lastTrimCircle = arrayLast(this._TrimCircleContours);\r\n let lastCircle = arrayLast(this._Circles);\r\n if (lastTrimCircle !== lastCircle)\r\n this._TrimCircleContours.push(lastCircle);\r\n if (this._SubOffsetedCurves[0].index !== 0)\r\n this._TrimCircleContours.push(this._Circles[this._SubOffsetedCurves[0].index]);\r\n\r\n let lastIndex = this._Circles.length - 1;\r\n let lastD = arrayLast(this._SubOffsetedCurves);\r\n if (lastIndex !== lastD.index)\r\n this._TrimCircleContours.push(this._Circles[lastD.index + 1]);\r\n }\r\n\r\n this._TrimPolylineContours.push(\r\n ...this._TrimCircleContours.map(c => Contour.CreateContour(c, false)),\r\n ...this._TrimArcContours\r\n );\r\n }\r\n\r\n // 通过构建的轮廓对偏移曲线进行裁剪\r\n protected TrimByContours()\r\n {\r\n for (let d of this._SubOffsetedCurves)\r\n {\r\n let c = d.curve;\r\n if (CurveIsFine(c))\r\n this._CurveTreeNodes.push(new CurveTreeNode(c));\r\n if (d.paddingCurve)\r\n this._CurveTreeNodes.push(...d.paddingCurve.map(c => new CurveTreeNode(c)));\r\n }\r\n\r\n for (let i = 0; i < this._TrimPolylineContours.length; i++)\r\n {\r\n let c = this._TrimPolylineContours[i];\r\n let cbox = c.BoundingBox;\r\n for (let curveNode of this._CurveTreeNodes)\r\n curveNode.TrimBy(c, cbox);\r\n }\r\n }\r\n\r\n //过滤方向相反和0长度线\r\n private FilterInvalidCurve()\r\n {\r\n this._CurveTrimedTreeNodes = [];\r\n for (let n of this._CurveTreeNodes)\r\n {\r\n let ns = n.Nodes;\r\n for (let sn of ns)\r\n {\r\n if (this.CheckPointDir(sn.curve.GetPointAtParam(0.5)))\r\n this._CurveTrimedTreeNodes.push(sn);\r\n }\r\n }\r\n }\r\n\r\n //合并共线\r\n private JoinCollinear()\r\n {\r\n for (let i = 0; i < this._CurveTrimedTreeNodes.length; i++)\r\n {\r\n let n = this._CurveTrimedTreeNodes[i];\r\n if (n.used) continue;\r\n let sp = n.curve.StartPoint;\r\n for (let j = i + 1; j < this._CurveTrimedTreeNodes.length; j++)\r\n {\r\n let n2 = this._CurveTrimedTreeNodes[j];\r\n if (n2.used) continue;\r\n let status = n.curve.Join(n2.curve);\r\n if (status === Status.ConverToCircle)\r\n {\r\n n.used = true;\r\n n2.used = true;\r\n let circle = new Circle((n.curve).Center, (n.curve).Radius);\r\n n.curve = circle;\r\n this._RetCurves.push(ConverCircleToPolyline(circle).ApplyMatrix(this._CacheOCS));\r\n }\r\n else if (status === Status.True)\r\n {\r\n if (equalv3(sp, n.curve.StartPoint))\r\n n2.used = true;\r\n else\r\n {\r\n n.used = true;\r\n n2.curve = n.curve;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //连接结果曲线,返回最终多段线\r\n private LinkResultPolyline()\r\n {\r\n let used = new Set();\r\n let cuMap = new CurveMap(1);\r\n for (let n of this._CurveTrimedTreeNodes)\r\n {\r\n if (!n.used)\r\n cuMap.AddCurveToMap(n.curve);\r\n }\r\n\r\n let preP: Vector3;\r\n\r\n let searchNext = (s: Vertice, pl: Polyline): Vertice =>\r\n {\r\n let minDist = Infinity;\r\n let minR: Route;\r\n for (let r of s.routes)\r\n {\r\n if (used.has(r.curve)) continue;\r\n\r\n if (preP)\r\n {\r\n let d = r.s.distanceToSquared(preP);\r\n if (d < minDist)\r\n {\r\n minR = r;\r\n minDist = d;\r\n }\r\n }\r\n else\r\n {\r\n minR = r;\r\n break;\r\n }\r\n }\r\n\r\n if (minR)\r\n {\r\n used.add(minR.curve);\r\n preP = minR.e;\r\n let status = pl.Join(minR.curve, false, 5e-2);\r\n if (status !== Status.True)\r\n console.warn(\"连接失败\");\r\n return minR.to;\r\n }\r\n };\r\n\r\n for (let s of cuMap.Stands)\r\n {\r\n preP = undefined;\r\n let pl = new Polyline();\r\n let ss = s;\r\n while (ss && !pl.IsClose)\r\n ss = searchNext(ss, pl);\r\n ss = s;\r\n while (ss && !pl.IsClose)\r\n ss = searchNext(ss, pl);\r\n\r\n if (pl.NumberOfVertices > 1)\r\n {\r\n //避免0长度的线\r\n if (pl.NumberOfVertices === 2 && pl.Length < 1e-6) continue;\r\n\r\n let d = pl.LineData;\r\n let ld = arrayLast(d);\r\n if (equalv2(d[0].pt, ld.pt, 1e-2))\r\n ld.pt.copy(d[0].pt);\r\n this._RetCurves.push(pl.ApplyMatrix(this._CacheOCS));\r\n }\r\n }\r\n }\r\n\r\n CheckPointDir(pt: Vector3): boolean\r\n {\r\n return this.GetPointAtCurveDir(pt) === this._OffsetDistSign;\r\n }\r\n\r\n GetPointAtCurveDir(pt: Vector3): number\r\n {\r\n let minIndex = Infinity;\r\n let minDist = Infinity;\r\n let minCp: Vector3;\r\n for (let i = 0; i < this._SubCurves.length; i++)\r\n {\r\n let c = this._SubCurves[i];\r\n let cp = c.GetClosestPointTo(pt, false);\r\n if (equalv3(cp, pt, 1e-5)) return 0;\r\n\r\n let dist = cp.distanceToSquared(pt);\r\n if (dist < minDist)\r\n {\r\n minDist = dist;\r\n minIndex = i;\r\n minCp = cp;\r\n }\r\n }\r\n\r\n let c = this._SubCurves[minIndex];\r\n let param = c.GetParamAtPoint(minCp);\r\n\r\n if (equaln(param, 0) && ((minIndex === 0) ? this._IsClose : true))\r\n {\r\n let preIndex = FixIndex(minIndex - 1, this._SubCurves);\r\n let preCurve = this._SubCurves[preIndex];\r\n\r\n if (!equalv3(c.GetFistDeriv(0).normalize(), preCurve.GetFistDeriv(1).normalize()))\r\n {\r\n let p = c.StartPoint;\r\n let l1 = c.Length;\r\n let l2 = preCurve.Length;\r\n let minLength = Math.min(l1, l2) * 0.2;\r\n\r\n let nextP: Vector3;\r\n let preP: Vector3;\r\n if (c instanceof Arc)\r\n nextP = c.GetPointAtDistance(minLength);\r\n else\r\n nextP = c.EndPoint;\r\n\r\n if (preCurve instanceof Arc)\r\n preP = preCurve.GetPointAtDistance(l2 - minLength);\r\n else\r\n preP = preCurve.StartPoint;\r\n\r\n let arc = new Arc(p, 1, angle(preP.sub(p)), angle(nextP.sub(p)));\r\n\r\n let dir = arc.PtOnCurve3(pt) ? -1 : 1;\r\n return dir;\r\n }\r\n }\r\n else if (equaln(param, 1) && ((minIndex === this._SubCurves.length - 1) ? this._IsClose : true))\r\n {\r\n let nextIndex = FixIndex(minIndex + 1, this._SubCurves);\r\n let nextCurve = this._SubCurves[nextIndex];\r\n\r\n if (!equalv3(c.GetFistDeriv(1).normalize(), nextCurve.GetFistDeriv(0).normalize()))\r\n {\r\n let p = c.EndPoint;\r\n\r\n let l1 = c.Length;\r\n let l2 = nextCurve.Length;\r\n let minLength = Math.min(l1, l2) * 0.2;\r\n\r\n let nextP: Vector3;\r\n let preP: Vector3;\r\n if (c instanceof Arc)\r\n preP = c.GetPointAtDistance(l1 - minLength);\r\n else\r\n preP = c.StartPoint;\r\n\r\n if (nextCurve instanceof Arc)\r\n nextP = nextCurve.GetPointAtDistance(minLength);\r\n else\r\n nextP = nextCurve.EndPoint;\r\n\r\n let arc = new Arc(p, 1, angle(preP.sub(p)), angle(nextP.sub(p)));\r\n\r\n let dir = arc.PtOnCurve3(pt) ? -1 : 1;\r\n return dir;\r\n }\r\n }\r\n\r\n let dri = c.GetFistDeriv(param);\r\n let cross = dri.cross(pt.clone().sub(minCp));\r\n return -Math.sign(cross.z);\r\n }\r\n\r\n protected CreateArc(center: Vector3, startP: Vector3, endP?: Vector3)\r\n {\r\n let sa = angle(startP.clone().sub(center));\r\n let ea = endP ? angle(endP.clone().sub(center)) : sa;\r\n let arc = new Arc(center, Math.abs(this._OffsetDist), sa, ea, this._OffsetDist < 0);\r\n return arc;\r\n }\r\n}\r\n\r\nfunction EntityEncode(c: Curve)\r\n{\r\n if (c instanceof Line) return 1;\r\n else return 2;\r\n}\r\nfunction EntityEncode2(c1: Curve, c2: Curve)\r\n{\r\n return EntityEncode(c1) & EntityEncode(c2);\r\n}\r\n\r\n//表示这个是一个正常的曲线,不是0长度的线,也不是0长度的圆弧\r\nfunction CurveIsFine(curve: Curve)\r\n{\r\n if (curve instanceof Arc && curve.AllAngle < 2e-6) return false;\r\n return curve.Length > 5e-5;\r\n}\r\n","import { Vector2, Vector3 } from 'three';\r\nimport { angle, equaln, equalv3 } from '../Geometry/GeUtils';\r\nimport { IntersectOption } from '../GraphicsSystem/IntersectWith';\r\nimport { Arc } from './Entity/Arc';\r\nimport { Line } from './Entity/Line';\r\nimport { Polyline } from './Entity/Polyline';\r\n\r\n/**\r\n * 点在扇形内部,提供一个简单实现的版本.\r\n * 优化版本请参照:http://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html\r\n * \r\n * @param arc 二维圆弧\r\n * @param pt \r\n * @returns 点在扇形内部.\r\n */\r\nfunction IsPointInCircularSector(arc: Arc, pt: Vector3): boolean\r\n{\r\n let center = arc.Center;\r\n let disSq = center.distanceTo(pt);\r\n if (disSq > arc.Radius * arc.Radius) return false;\r\n let an = angle(pt.clone().sub(center));\r\n let param = arc.GetParamAtAngle(an);\r\n return arc.ParamOnCurve(param);\r\n}\r\n\r\n/**\r\n * 点在弓型内部\r\n * \r\n * @param arc 二维圆弧\r\n * @param pt 点\r\n * @param isInChrodIsTrue 当点在弦上也认为在弓形内部\r\n * @returns 点在内部\r\n */\r\nexport function IsPointInBowArc(arc: Arc, pt: Vector3, isInChrodIsTrue = false): boolean\r\n{\r\n let pv = pt.clone().sub(arc.StartPoint);\r\n let av = arc.EndPoint.sub(arc.StartPoint);\r\n\r\n pv.cross(av);\r\n\r\n //未优化的代码\r\n // if (pv.z > 0 && arc.IsClockWise)\r\n // return false;\r\n // else if (pv.z < 0 && !arc.IsClockWise)\r\n // return false;\r\n // else\r\n // return arc.Center.distanceToSquared(pt) < arc.Radius * arc.Radius;\r\n\r\n //简化的代码\r\n if ((pv.z > 0) !== arc.IsClockWise || (isInChrodIsTrue && equaln(pv.z, 0)))\r\n {\r\n return arc.Center.distanceToSquared(pt) < arc.Radius * arc.Radius;\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * 判断点在多段线内外\r\n * @param pl 多段线\r\n * @param pt 点\r\n * @returns 点在多段线内部\r\n */\r\nexport function IsPointInPolyLine(pl: Polyline, pt: Vector3): boolean\r\n{\r\n let crossings = 0;\r\n\r\n let insLine = new Line(pt, pt.clone().add(new Vector3(0, 10, 0)));\r\n\r\n for (let i = 0; i < pl.EndParam; i++)\r\n {\r\n if (equaln(pl.GetBuilgeAt(i), 0, 5e-6))//直线\r\n {\r\n let sp = pl.GetPointAtParam(i);\r\n let ep = pl.GetPointAtParam(i + 1);\r\n //点位于线上面\r\n if (pt.y > Math.max(sp.y, ep.y))\r\n continue;\r\n //线垂直Y轴\r\n let derX = ep.x - sp.x;\r\n if (equaln(derX, 0, 5e-6))\r\n continue;\r\n\r\n //起点\r\n if (equaln(sp.x, pt.x, 5e-6))\r\n {\r\n if (sp.y > pt.y && derX < 0) crossings++;\r\n continue;\r\n }\r\n //终点\r\n if (equaln(ep.x, pt.x, 5e-6))\r\n {\r\n if (ep.y > pt.y && derX > 0) crossings++;\r\n continue;\r\n }\r\n\r\n //快速求交,只验证有没有交点\r\n let [x1, x2] = sp.x > ep.x ? [ep.x, sp.x] : [sp.x, ep.x];\r\n if (pt.x > x1 && pt.x < x2)\r\n {\r\n let derY = ep.y - sp.y;\r\n let k = derY / derX;\r\n\r\n if ((pt.x - sp.x) * k + sp.y > pt.y)\r\n crossings++;\r\n }\r\n }\r\n else //圆弧\r\n {\r\n let arc = pl.GetCurveAtIndex(i) as Arc;\r\n let sp = arc.StartPoint;\r\n let ep = arc.EndPoint;\r\n\r\n //如果相切\r\n if (equaln(Math.abs(pt.x - arc.Center.x), arc.Radius))\r\n {\r\n //当点和起点或者终点和点相切时\r\n if (equaln(sp.x, pt.x) && sp.y > pt.y)\r\n {\r\n if (ep.x - sp.x < -1e-5)\r\n crossings++;\r\n }\r\n else if (equaln(ep.x, pt.x) && ep.y > pt.y)\r\n {\r\n if (ep.x - sp.x > 1e-5)\r\n crossings++;\r\n }\r\n continue;\r\n }\r\n if (equaln(sp.x, pt.x) && sp.y > pt.y)\r\n {\r\n let der = arc.GetFistDeriv(0);\r\n if (der.x < -1e-5)\r\n crossings++;\r\n }\r\n if (equaln(ep.x, pt.x) && ep.y > pt.y)\r\n {\r\n let der = arc.GetFistDeriv(1);\r\n if (der.x > 1e-5)\r\n crossings++;\r\n }\r\n\r\n for (let pti of arc.IntersectWith(insLine, IntersectOption.ExtendArg))\r\n {\r\n if (pti.y < pt.y || equalv3(sp, pti, 1e-5) || equalv3(ep, pti, 1e-5))\r\n continue;\r\n\r\n let der = arc.GetFistDeriv(pti);\r\n if (!equaln(der.x, 0)) //相切.\r\n crossings++;\r\n }\r\n }\r\n }\r\n\r\n return (crossings % 2) === 1;\r\n}\r\n\r\n/**\r\n * 点在区域内部\r\n * \r\n * @param pt \r\n * @param pts \r\n * @returns \r\n */\r\nfunction IsPointInPolygon(pt: Vector3, pts: Vector2[])\r\n{\r\n let crossings = 0; //int\r\n let [px, py] = [pt.x, pt.y];\r\n\r\n let ptCout = pts.length;\r\n for (let i = 0; i < ptCout; i++)\r\n {\r\n let pti = pts[i];\r\n let ptn = pts[(i + 1) % ptCout];\r\n\r\n let [x1, x2] = [pti.x, ptn.x];\r\n\r\n /* This is done to ensure that we get the same result when\r\n the line goes from left to right and right to left */\r\n if (x1 > x2) [x1, x2] = [x2, x1];\r\n\r\n /* First check if the ray is possible to cross the line */\r\n if (px > x1 && px <= x2 && (py < pti.y || py <= ptn.y))\r\n {\r\n const eps = 0.000001;\r\n\r\n /* Calculate the equation of the line */\r\n let dx = ptn.x - pti.x;\r\n let dy = ptn.y - pti.y;\r\n let k;\r\n\r\n if (Math.abs(dx) < eps)\r\n k = 1e300;\r\n else\r\n k = dy / dx;\r\n\r\n let m = pti.y - k * pts[i].x;\r\n\r\n /* Find if the ray crosses the line */\r\n let y2 = k * px + m;\r\n if (py <= y2)\r\n crossings++;\r\n }\r\n }\r\n\r\n return crossings % 2 === 1;\r\n}\r\n","export enum DragPointType\r\n{\r\n Grip = 0,\r\n Stretch = 1\r\n}\r\n","import { Box3, BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Vector2, Vector3 } from 'three';\r\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\r\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\r\nimport { CreateBoardUtil } from '../../ApplicationServices/mesh/createBoard';\r\nimport { arrayLast, arrayRemoveDuplicateBySort, changeArrayStartIndex } from '../../Common/ArrayExt';\r\nimport { ColorMaterial } from '../../Common/ColorPalette';\r\nimport { ComputerCurvesNormalOCS, getDeterminantFor2V } from '../../Common/CurveUtils';\r\nimport { matrixAlignCoordSys, matrixIsCoplane, reviseMirrorMatrix } from '../../Common/Matrix4Utils';\r\nimport { Status } from '../../Common/Status';\r\nimport { FixIndex } from '../../Common/Utils';\r\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\r\nimport { Box3Ext } from '../../Geometry/Box';\r\nimport { BufferGeometryUtils } from '../../Geometry/BufferGeometryUtils';\r\nimport { AsVector2, AsVector3, equaln, equalv2, equalv3, MatrixIsIdentityCS, updateGeometry } from '../../Geometry/GeUtils';\r\nimport { IntersectOption, IntersectPolylineAndCurve } from '../../GraphicsSystem/IntersectWith';\r\nimport { OffsetPolyline } from '../../GraphicsSystem/OffsetPolyline';\r\nimport { RenderType } from '../../GraphicsSystem/RenderType';\r\nimport { Factory } from '../CADFactory';\r\nimport { CADFiler } from '../CADFiler';\r\nimport { IsPointInPolyLine } from '../PointInPolyline';\r\nimport { Arc } from './Arc';\r\nimport { Curve, ExtendType } from './Curve';\r\nimport { DragPointType } from './DragPointType';\r\nimport { Line } from './Line';\r\n\r\nexport interface PolylineProps\r\n{\r\n pt: Vector2,\r\n bul: number;\r\n}\r\n@Factory\r\nexport class Polyline extends Curve\r\n{\r\n private _ClosedMark: boolean = false;\r\n constructor(private _LineData: PolylineProps[] = [])\r\n {\r\n super();\r\n }\r\n\r\n UpdateMatrixTo(m: Matrix4)\r\n {\r\n this.WriteAllObjectRecord();\r\n let p = new Vector3().setFromMatrixPosition(m);\r\n p.applyMatrix4(this.OCSInv);\r\n if (equaln(p.z, 0))\r\n {\r\n let dir = Math.sign(this.Area2);\r\n let tm = matrixAlignCoordSys(this.OCS, m);\r\n for (let p of this._LineData)\r\n {\r\n let p3 = AsVector3(p.pt);\r\n p3.applyMatrix4(tm);\r\n p.pt.set(p3.x, p3.y);\r\n }\r\n this.OCS = m;\r\n let newDir = Math.sign(this.Area2);\r\n if (dir !== newDir)\r\n for (let p of this._LineData)\r\n p.bul *= -1;\r\n }\r\n }\r\n\r\n /**\r\n * 原地翻转,仅改变法向量\r\n */\r\n Flip()\r\n {\r\n this.WriteAllObjectRecord();\r\n let x = new Vector3();\r\n let y = new Vector3();\r\n let z = new Vector3();\r\n this._Matrix.extractBasis(x, y, z);\r\n z.negate();\r\n y.crossVectors(z, x);\r\n let p = this.Position;\r\n this._Matrix.makeBasis(x, y, z).setPosition(p);\r\n\r\n for (let d of this._LineData)\r\n {\r\n d.pt.y *= -1;\r\n d.bul *= -1;\r\n }\r\n this.Update();\r\n return this;\r\n }\r\n\r\n //翻转曲线,首尾调换\r\n Reverse(): this\r\n {\r\n if (this._LineData.length === 0)\r\n return this;\r\n this.WriteAllObjectRecord();\r\n\r\n let pts = [];\r\n let buls = [];\r\n for (let data of this._LineData)\r\n {\r\n pts.push(data.pt);\r\n buls.push(-data.bul);\r\n }\r\n\r\n let lastBul = buls.pop();\r\n buls.reverse();\r\n buls.push(lastBul);\r\n\r\n pts.reverse();\r\n\r\n if (this._ClosedMark && !equalv2(pts[0], arrayLast(pts)))\r\n {\r\n pts.unshift(pts.pop());\r\n buls.unshift(buls.pop());\r\n }\r\n\r\n for (let i = 0; i < pts.length; i++)\r\n {\r\n let d = this._LineData[i];\r\n d.pt = pts[i];\r\n d.bul = buls[i];\r\n }\r\n\r\n return this;\r\n }\r\n set LineData(data: PolylineProps[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this._LineData = data;\r\n this.Update();\r\n }\r\n get LineData()\r\n {\r\n return this._LineData;\r\n }\r\n\r\n get NumberOfVertices(): number\r\n {\r\n return this._LineData.length;\r\n }\r\n\r\n /**\r\n * 在指定位置插入点.\r\n * 例如:\r\n * pl.AddVertexAt(pl.NumberOfVerticesk,p);//在末尾插入一个点\r\n *\r\n * @param {number} index 索引位置\r\n * @param {Vector2} pt 点\r\n * @returns {this}\r\n * @memberof Polyline\r\n */\r\n AddVertexAt(index: number, pt: Vector2 | Vector2[]): this\r\n {\r\n this.WriteAllObjectRecord();\r\n let pts: PolylineProps[];\r\n if (Array.isArray(pt))\r\n {\r\n pts = pt.map(p =>\r\n {\r\n return {\r\n pt: p.clone(),\r\n bul: 0\r\n };\r\n });\r\n }\r\n else\r\n pts = [{ pt: pt.clone(), bul: 0 }];\r\n\r\n this._LineData.splice(index, 0, ...pts);\r\n this.Update();\r\n return this;\r\n }\r\n RemoveVertexAt(index: number): this\r\n {\r\n if (index < this._LineData.length)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._LineData.splice(index, 1);\r\n this.Update();\r\n }\r\n return this;\r\n }\r\n RemoveVertexIn(from: number, to: number): this\r\n {\r\n if (from + 1 < this._LineData.length && to > from)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._LineData.splice(from + 1, to - from - 1);\r\n this.Update();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * 重设闭合多段线的起点\r\n * @param index 起始index,如果index非整数,将用最接近的整数作为起始索引\r\n */\r\n ResetStartPoint(index: number)\r\n {\r\n if (!this.IsClose || index >= this.EndParam) return false;\r\n\r\n if (equalv2(this._LineData[0].pt, arrayLast(this._LineData).pt))\r\n this._LineData.pop();\r\n\r\n changeArrayStartIndex(this._LineData, Math.floor(index + 0.5));\r\n this._LineData.push({\r\n pt: this._LineData[0].pt.clone(),\r\n bul: 0\r\n });\r\n return true;\r\n }\r\n GetPoint2dAt(index: number): Vector2 | undefined\r\n {\r\n if (index >= 0 && this._LineData.length > index)\r\n return this._LineData[index].pt.clone();\r\n }\r\n /**\r\n * 设置指定点的位置\r\n *\r\n * @param {number} index\r\n * @param {Vector2} pt\r\n * @memberof Polyline\r\n */\r\n SetPointAt(index: number, pt: Vector2): this\r\n {\r\n let d = this._LineData[index];\r\n if (d)\r\n {\r\n this.WriteAllObjectRecord();\r\n d.pt.copy(pt);\r\n this.Update();\r\n }\r\n return this;\r\n }\r\n protected ApplyScaleMatrix(m: Matrix4): this\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n for (let i = 0; i <= this.EndParam; i++)\r\n {\r\n let p = this.GetPointAtParam(i);\r\n p.applyMatrix4(m).applyMatrix4(this.OCSInv);\r\n this.SetPointAt(i, AsVector2(p));\r\n }\r\n return this;\r\n }\r\n protected ApplyMirrorMatrix(m: Matrix4): this\r\n {\r\n this.WriteAllObjectRecord();\r\n let oldPts = this.GetStretchPoints();\r\n reviseMirrorMatrix(this._Matrix);\r\n for (let i = 0; i < oldPts.length; i++)\r\n {\r\n let newP = oldPts[i].applyMatrix4(this.OCSInv);\r\n let newBul = -this.GetBuilgeAt(i);\r\n this.SetPointAt(i, AsVector2(newP));\r\n this.SetBulgeAt(i, newBul);\r\n }\r\n this.Reverse();\r\n return this;\r\n }\r\n SetBulgeAt(index: number, bul: number): this\r\n {\r\n let d = this._LineData[index];\r\n if (d)\r\n {\r\n this.WriteAllObjectRecord();\r\n d.bul = bul;\r\n this.Update();\r\n }\r\n return this;\r\n }\r\n GetBuilgeAt(index: number): number\r\n {\r\n return this._LineData[index].bul;\r\n }\r\n Rectangle(length: number, height: number): this\r\n {\r\n this.LineData = [\r\n { pt: new Vector2(), bul: 0 },\r\n { pt: new Vector2(length), bul: 0 },\r\n { pt: new Vector2(length, height), bul: 0 },\r\n { pt: new Vector2(0, height), bul: 0 }];\r\n this.CloseMark = true;\r\n return this;\r\n }\r\n RectangleFrom2Pt(p1: Vector3, p2: Vector3): this\r\n {\r\n let box = new Box3();\r\n box.setFromPoints([p2, p1].map((p: Vector3) => p.clone().applyMatrix4(this.OCSInv)));\r\n\r\n let px1 = AsVector2(box.min);\r\n let px3 = AsVector2(box.max);\r\n let px2 = new Vector2(px3.x, px1.y);\r\n let px4 = new Vector2(px1.x, px3.y);\r\n\r\n this.LineData = [\r\n { pt: px1, bul: 0 },\r\n { pt: px2, bul: 0 },\r\n { pt: px3, bul: 0 },\r\n { pt: px4, bul: 0 }];\r\n\r\n this.CloseMark = true;\r\n return this;\r\n }\r\n //多段线起点\r\n get StartPoint()\r\n {\r\n if (this._LineData.length > 0)\r\n return AsVector3(this._LineData[0].pt).applyMatrix4(this.OCS);\r\n return new Vector3();\r\n }\r\n set StartPoint(p: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n p = p.clone().applyMatrix4(this.OCSInv);\r\n\r\n if (this._LineData.length === 0)\r\n this.AddVertexAt(0, AsVector2(p));\r\n else if (this._LineData.length === 1)\r\n this.SetPointAt(0, AsVector2(p));\r\n else\r\n {\r\n let bul = this.GetBuilgeAt(0);\r\n if (bul !== 0)\r\n {\r\n let arc = this.GetCurveAtParam(0) as Arc;\r\n arc.StartPoint = p;\r\n //前面线的凸度调整\r\n this.SetBulgeAt(0, Math.tan(arc.AllAngle / 4) * Math.sign(bul));\r\n }\r\n this.SetPointAt(0, AsVector2(p));\r\n }\r\n }\r\n get EndPoint()\r\n {\r\n if (this._ClosedMark) return this.StartPoint;\r\n if (this._LineData.length > 0)\r\n return AsVector3(this._LineData[this.EndParam].pt).applyMatrix4(this.OCS);\r\n return new Vector3();\r\n }\r\n set EndPoint(p: Vector3)\r\n {\r\n if (this._LineData.length < 2 || this.CloseMark)\r\n return;\r\n\r\n this.WriteAllObjectRecord();\r\n p = p.clone().applyMatrix4(this.OCSInv);\r\n\r\n let bul = this.GetBuilgeAt(this.EndParam - 1);\r\n if (bul !== 0)\r\n {\r\n let arc = this.GetCurveAtParam(this.EndParam - 1) as Arc;\r\n arc.ApplyMatrix(this.OCSInv);\r\n arc.EndPoint = p;\r\n //前面线的凸度调整\r\n this.SetBulgeAt(this.EndParam - 1, Math.tan(arc.AllAngle / 4) * Math.sign(bul));\r\n }\r\n this.SetPointAt(this.EndParam, AsVector2(p));\r\n }\r\n\r\n get CurveCount(): number\r\n {\r\n return this.EndParam;\r\n }\r\n\r\n get StartParam()\r\n {\r\n return 0;\r\n }\r\n\r\n /**\r\n * 表示最后一条曲线的终止参数,使用该参数可以直接遍历到多段线的所有子线段. for(i 1 && (equalv3(this.StartPoint, this.EndPoint, 1e-4)));\r\n }\r\n set CloseMark(v: boolean)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._ClosedMark = v;\r\n this.Update();\r\n }\r\n\r\n DigestionCloseMark()\r\n {\r\n if (this._ClosedMark && this._LineData.length > 1)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._ClosedMark = false;\r\n\r\n if (!equalv2(this._LineData[0].pt, arrayLast(this._LineData).pt))\r\n this._LineData.push({ pt: AsVector2(this._LineData[0].pt), bul: 0 });\r\n }\r\n }\r\n\r\n get Length()\r\n {\r\n return this.Explode().reduce((l, cu) => l + cu.Length, 0);\r\n }\r\n\r\n /**\r\n * 获得指定参数所在的点.\r\n * 当曲线存在闭合标志时,参数必须在曲线内部.\r\n * 当曲线不存在闭合标志时,参数允许延伸出曲线.\r\n *\r\n * @param {number} param 参数\r\n * @returns {Vector3} 三维点,可为空\r\n * @memberof Polyline\r\n */\r\n GetPointAtParam(param: number): Vector3\r\n {\r\n if (param === Math.floor(param) && this.ParamOnCurve(param))\r\n return AsVector3(this.GetPoint2dAt(FixIndex(param, this.NumberOfVertices))).applyMatrix4(this.OCS);\r\n let cu: Curve = this.GetCurveAtParam(param);\r\n if (cu)\r\n return cu.GetPointAtParam(this.GetCurveParamAtParam(param));\r\n return undefined;\r\n }\r\n\r\n GetDistAtParam(param: number): number\r\n {\r\n if (this._ClosedMark && !this.ParamOnCurve(param))\r\n return NaN;\r\n\r\n //参数 整数\r\n let paramFloor = Math.floor(param);\r\n //需要计算的曲线个数\r\n let cuCout = paramFloor > this.EndParam ? this.EndParam : paramFloor;\r\n\r\n let dist = 0;\r\n //首先计算完整曲线的长度\r\n for (let i = 0; i < cuCout; i++)\r\n {\r\n dist += this.GetCurveAtIndex(i).Length;\r\n }\r\n\r\n //参数已经大于索引,证明参数在线外.\r\n if (paramFloor !== cuCout)\r\n {\r\n dist += this.GetCurveAtParam(param).GetDistAtParam(param - cuCout);\r\n }\r\n else if (param > paramFloor)\r\n {\r\n let lastParam = param - paramFloor;\r\n dist += this.GetCurveAtParam(param).GetDistAtParam(lastParam);\r\n }\r\n\r\n return dist;\r\n }\r\n GetPointAtDistance(dist: number): Vector3\r\n {\r\n let param = this.GetParamAtDist(dist);\r\n return this.GetPointAtParam(param);\r\n }\r\n\r\n /**\r\n * 返回参数所在的点. 如果曲线不闭合,会试图返回延伸点参数\r\n *\r\n * @param {Vector3} pt\r\n * @returns {number}\r\n * @memberof Polyline\r\n */\r\n GetParamAtPoint(pt: Vector3): number\r\n {\r\n let cus = this.Explode();\r\n if (cus.length === 0) return NaN;\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let cu = cus[i];\r\n let param = cu.GetParamAtPoint(pt);\r\n if (cu.ParamOnCurve(param))\r\n return i + param; //返回点在曲线内部的参数\r\n }\r\n\r\n //当曲线闭合时,不需要延伸首尾去判断参数\r\n if (this._ClosedMark) return NaN;\r\n\r\n //起点终点参数集合\r\n let seParams: number[] = [];\r\n //点在第一条曲线上的参数\r\n let startParam = cus[0].GetParamAtPoint(pt);\r\n if (!isNaN(startParam) && startParam < 0)\r\n seParams.push(startParam);\r\n //点在最后一条线上的参数\r\n let endParam = cus[cus.length - 1].GetParamAtPoint(pt);\r\n if (!isNaN(endParam) && endParam > 0)\r\n seParams.push(endParam + this.EndParam - 1);\r\n\r\n if (seParams.length == 1)\r\n {\r\n return seParams[0];\r\n }\r\n else if (seParams.length == 2)\r\n {\r\n //返回较近的参数\r\n if (pt.distanceToSquared(this.StartPoint)\r\n < pt.distanceToSquared(this.EndPoint))\r\n return seParams[0];\r\n else\r\n return seParams[1];\r\n }\r\n return NaN;\r\n }\r\n GetParamAtDist(dist: number): number\r\n {\r\n let cus = this.Explode();\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let cu = cus[i];\r\n let len = cu.Length;\r\n if (dist <= len)\r\n return i + cu.GetParamAtDist(dist);\r\n else if (equaln(dist, len, 1e-8))\r\n return i + 1;\r\n dist -= len;\r\n }\r\n if (!this._ClosedMark)\r\n return cus.length + cus[cus.length - 1].GetParamAtDist(dist);\r\n\r\n return NaN;\r\n }\r\n GetDistAtPoint(pt: Vector3): number\r\n {\r\n let param = this.GetParamAtPoint(pt);\r\n if (!this.ParamOnCurve(param)) return NaN;\r\n return this.GetDistAtParam(param);\r\n }\r\n\r\n /**\r\n * 返回曲线的一阶导数.\r\n * 当曲线闭合(标志)且点不在曲线上.\r\n * 或者曲线不闭合(标志) 且点不在曲线上也不在延伸上\r\n *\r\n * @param {(number | Vector3)} param\r\n * @returns {Vector3}\r\n * @memberof Polyline\r\n */\r\n GetFistDeriv(param: number | Vector3): Vector3\r\n {\r\n if (param instanceof Vector3)\r\n param = this.GetParamAtPoint(param);\r\n\r\n if (isNaN(param))\r\n return undefined;\r\n\r\n let cu = this.GetCurveAtParam(param);\r\n\r\n if (!cu) return undefined;\r\n\r\n return cu.GetFistDeriv(this.GetCurveParamAtParam(param));\r\n }\r\n GetSplitCurves(param: number[] | number): Array\r\n {\r\n //参数需要转化为参数数组\r\n let params: number[];\r\n if (typeof param == \"number\")\r\n params = [param];\r\n else\r\n params = param;\r\n\r\n //校验参数在曲线中,修正参数\r\n let endParam = this.EndParam;\r\n params = params.filter(p => this.ParamOnCurve(p) && p > -1e-6)\r\n .map(a =>\r\n {\r\n if (a < 0) return 0;\r\n if (a > endParam) return endParam;\r\n if (equaln(a, Math.floor(a + 0.5), 1e-8))\r\n return Math.floor(a + 0.5);\r\n return a;\r\n });\r\n //排序\r\n params.sort((a, b) => a - b);\r\n let hasEndParam = arrayLast(params) === this.EndParam;\r\n //必须加入最后一个参数,保证切割后的曲线完整\r\n if (!hasEndParam)\r\n params.push(this.EndParam);\r\n arrayRemoveDuplicateBySort(params, (e1, e2) => equaln(e1, e2, 1e-8));\r\n params = params.filter(p => this.ParamOnCurve(p));\r\n if (params.length === 0)\r\n return [];\r\n\r\n //判断是否存在0参数\r\n let hasZeroParam = params[0] === 0;\r\n if (hasZeroParam)\r\n params.shift();\r\n\r\n let { pts, buls } = this.PtsBuls;\r\n\r\n //返回的多段线集合\r\n let pls: Polyline[] = [];\r\n\r\n let len = 0;//已经走过的参数长度(整数)\r\n\r\n //上一个切割参数的位置 0-1\r\n let prePa = 0;\r\n for (let pa of params)\r\n {\r\n //参数所在点\r\n let pt = AsVector2(this.GetPointAtParam(pa).applyMatrix4(this.OCSInv));\r\n pa -= len;\r\n let pafloor = Math.floor(pa);\r\n len += pafloor;\r\n\r\n let plData: PolylineProps[] = [];\r\n\r\n //添加点\r\n for (let i = 0; i < pafloor; i++)\r\n {\r\n if (i === 0 && !equaln(buls[0], 0, 1e-8))\r\n {\r\n buls[0] = Math.tan((1 - prePa) * Math.atan(buls[0]));\r\n }\r\n plData.push({ pt: pts[0], bul: buls[0] });\r\n pts.shift();\r\n buls.shift();\r\n }\r\n\r\n if (equaln(pa, pafloor, 1e-8))//如果pa在点上\r\n {\r\n plData.push({ pt: pts[0].clone(), bul: buls[0] });\r\n }\r\n else //在曲线上\r\n {\r\n let bul: number = buls[0];\r\n if (!equaln(bul, 0, 1e-6))\r\n bul = Math.tan((pa - pafloor - (0 === pafloor ? prePa : 0)) * Math.atan(buls[0])); //->凸度\r\n\r\n //加入顶点+凸度\r\n plData.push({ pt: pts[0].clone(), bul });\r\n //终点\r\n plData.push({ pt, bul: 0 });\r\n\r\n //修正剩余的点表和凸度表\r\n pts[0].copy(pt);\r\n }\r\n\r\n prePa = pa - pafloor;\r\n if (plData.length > 1)\r\n {\r\n let pl = new Polyline(plData).ApplyMatrix(this.OCS);\r\n pl.ColorIndex = this.ColorIndex;\r\n pls.push(pl);\r\n }\r\n }\r\n\r\n //当曲线为闭合曲线,并且不存在0切割参数时,首尾连接曲线\r\n if (this._ClosedMark && !hasZeroParam && !hasEndParam)\r\n {\r\n let lastPl = pls[pls.length - 1];\r\n if (equalv2(arrayLast(lastPl._LineData).pt, pls[0]._LineData[0].pt))\r\n lastPl._LineData.pop();\r\n\r\n lastPl._LineData.push(...pls[0]._LineData);\r\n\r\n pls.shift();\r\n }\r\n return pls;\r\n }\r\n\r\n //未完善\r\n GetCurveAtParamRange(startParam: number, endParam: number): Array\r\n {\r\n let sfloor = Math.floor(startParam + 0.5);\r\n if (equaln(sfloor, startParam, 1e-8)) startParam = sfloor;\r\n else sfloor = Math.floor(startParam);\r\n let efloor = Math.floor(endParam + 0.5);\r\n if (equaln(efloor, endParam, 1e-8)) endParam = efloor;\r\n else efloor = Math.floor(efloor);\r\n\r\n const GetCurve = (index: number) =>\r\n {\r\n let d = this._LineData[index];\r\n let next = this._LineData[index + 1];\r\n if (!equaln(d.bul, 0, 1e-8))\r\n return new Arc().ParseFromBul(d.pt, next.pt, d.bul);\r\n else\r\n return new Line(AsVector3(d.pt), AsVector3(next.pt));\r\n };\r\n\r\n let lined: PolylineProps[] = [];\r\n if (startParam === sfloor)\r\n {\r\n let d = this._LineData[sfloor];\r\n lined.push({ pt: d.pt.clone(), bul: d.bul });\r\n }\r\n else\r\n {\r\n let d = this._LineData[sfloor];\r\n let cu = GetCurve(sfloor);\r\n let remParam = startParam - sfloor;\r\n let p = cu.GetPointAtParam(remParam);\r\n let bul = d.bul;\r\n if (!equaln(bul, 0))\r\n bul = Math.tan(Math.atan(bul) * (1 - remParam));\r\n lined.push({ pt: AsVector2(p), bul: bul });\r\n }\r\n\r\n for (let i = sfloor + 1; i < efloor; i++)\r\n {\r\n let d = this._LineData[i];\r\n lined.push({ pt: d.pt.clone(), bul: d.bul });\r\n }\r\n\r\n if (efloor !== endParam)\r\n {\r\n let d = this.LineData[efloor];\r\n let remParam = endParam - efloor;\r\n let cu = GetCurve(efloor);\r\n let p = cu.GetPointAtParam(remParam);\r\n let bul = d.bul;\r\n if (!equaln(bul, 0))\r\n {\r\n arrayLast(lined).bul = Math.tan(Math.atan(bul) * remParam);\r\n bul = Math.tan(Math.atan(bul) * (1 - remParam));\r\n }\r\n lined.push({ pt: AsVector2(p), bul });\r\n }\r\n\r\n let pl = new Polyline(lined);\r\n pl.OCS = this.OCSNoClone;\r\n return;\r\n }\r\n\r\n Extend(newParam: number)\r\n {\r\n if (this.CloseMark || this.ParamOnCurve(newParam)) return;\r\n\r\n this.WriteAllObjectRecord();\r\n\r\n let ptIndex: number;\r\n let bulIndex: number;\r\n\r\n if (newParam < 0)\r\n {\r\n ptIndex = 0;\r\n bulIndex = 0;\r\n }\r\n else if (newParam > this.EndParam)\r\n {\r\n ptIndex = this.EndParam;\r\n bulIndex = ptIndex - 1;\r\n }\r\n\r\n //修改顶点\r\n this._LineData[ptIndex].pt = AsVector2(this.GetPointAtParam(newParam).applyMatrix4(this.OCSInv));\r\n\r\n //修改凸度\r\n let oldBul = this._LineData[bulIndex].bul;\r\n if (oldBul != 0)\r\n this._LineData[bulIndex].bul = Math.tan(Math.atan(oldBul) * (1 + newParam - ptIndex));\r\n\r\n this.Update();\r\n }\r\n\r\n //const this\r\n MatrixAlignTo2(toMatrix: Matrix4)\r\n {\r\n if (!matrixIsCoplane(this._Matrix, toMatrix, 1e-4))\r\n return this.PtsBuls;\r\n\r\n let m = matrixAlignCoordSys(this._Matrix, toMatrix);\r\n\r\n let z1 = this.Normal;\r\n let z2 = new Vector3().setFromMatrixColumn(toMatrix, 2);\r\n let isMirror = equalv3(z1, z2.negate());\r\n\r\n let pts: Vector2[] = [];\r\n let buls: number[] = [];\r\n for (let d of this._LineData)\r\n {\r\n let p = AsVector2(AsVector3(d.pt).applyMatrix4(m));\r\n pts.push(p);\r\n buls.push(isMirror ? -d.bul : d.bul);\r\n }\r\n return { pts, buls };\r\n }\r\n\r\n Join(cu: Curve, allowGap = false, tolerance = 1e-4)\r\n {\r\n this.WriteAllObjectRecord();\r\n if (this._ClosedMark)\r\n return Status.False;\r\n\r\n let [sp, ep, cuSp, cuEp] = [this.StartPoint, this.EndPoint, cu.StartPoint, cu.EndPoint];\r\n\r\n let ocsInv = this.OCSInv;\r\n let [cuSp2, cuEp2] = [cuSp, cuEp].map(p => AsVector2(p.clone().applyMatrix4(ocsInv)));\r\n\r\n if (this._LineData.length === 0)\r\n {\r\n if (cu instanceof Line)\r\n {\r\n this._LineData.push({ pt: cuSp2, bul: 0 });\r\n this._LineData.push({ pt: cuEp2, bul: 0 });\r\n }\r\n else if (cu instanceof Arc)\r\n {\r\n this._LineData.push({ pt: cuSp2, bul: cu.Bul });\r\n this._LineData.push({ pt: cuEp2, bul: 0 });\r\n }\r\n else if (cu instanceof Polyline)\r\n {\r\n let f = new CADFiler();\r\n cu.WriteFile(f);\r\n this.ReadFile(f);\r\n }\r\n else\r\n return Status.False;\r\n }\r\n else\r\n {\r\n enum LinkType\r\n {\r\n None = 0,\r\n SpSp = 1,\r\n SpEp = 2,\r\n EpSp = 3,\r\n EpEp = 4,\r\n };\r\n\r\n let spspDisSq = cuSp.distanceToSquared(sp);\r\n let spepDisSq = cuSp.distanceToSquared(ep);\r\n let epspDisSq = cuEp.distanceToSquared(sp);\r\n let epepDisSq = cuEp.distanceToSquared(ep);\r\n let minDis = tolerance * tolerance;\r\n\r\n let linkType = LinkType.None;\r\n\r\n if (spspDisSq < minDis)\r\n {\r\n linkType = LinkType.SpSp;\r\n minDis = spspDisSq;\r\n }\r\n\r\n if (spepDisSq < minDis)\r\n {\r\n linkType = LinkType.SpEp;\r\n minDis = spepDisSq;\r\n }\r\n\r\n if (epspDisSq < minDis)\r\n {\r\n linkType = LinkType.EpSp;\r\n minDis = epspDisSq;\r\n }\r\n\r\n if (epepDisSq < minDis)\r\n linkType = LinkType.EpEp;\r\n\r\n if (linkType === LinkType.None)\r\n return Status.False;\r\n\r\n if (cu instanceof Line)\r\n {\r\n if (linkType === LinkType.SpSp)\r\n {\r\n this._LineData.unshift({ pt: cuEp2, bul: 0 });\r\n }\r\n else if (linkType === LinkType.SpEp)\r\n {\r\n this._LineData.push({ pt: cuEp2, bul: 0 });\r\n }\r\n else if (linkType === LinkType.EpSp)\r\n {\r\n this._LineData.unshift({ pt: cuSp2, bul: 0 });\r\n }\r\n else if (linkType === LinkType.EpEp)\r\n {\r\n this._LineData.push({ pt: cuSp2, bul: 0 });\r\n }\r\n }\r\n else if (cu instanceof Arc)\r\n {\r\n let dir = equalv3(this.Normal, cu.Normal.negate()) ? -1 : 1;\r\n let bul = cu.Bul * dir;\r\n if (linkType === LinkType.SpSp)\r\n {\r\n this._LineData.unshift({ pt: cuEp2, bul: -bul });\r\n }\r\n else if (linkType === LinkType.SpEp)\r\n {\r\n arrayLast(this._LineData).bul = bul;\r\n this._LineData.push({ pt: cuEp2, bul: 0 });\r\n }\r\n else if (linkType === LinkType.EpSp)\r\n {\r\n this._LineData.unshift({ pt: cuSp2, bul: bul });\r\n }\r\n else if (linkType === LinkType.EpEp)\r\n {\r\n arrayLast(this._LineData).bul = -bul;\r\n this._LineData.push({ pt: cuSp2, bul: 0 });\r\n }\r\n }\r\n else if (cu instanceof Polyline)\r\n {\r\n if (cu.CloseMark) return Status.False;\r\n\r\n let { pts, buls } = this.PtsBuls;\r\n\r\n if (linkType === LinkType.SpSp)\r\n {\r\n cu.Reverse();\r\n let cuPtsBul = cu.MatrixAlignTo2(this.OCS);\r\n cuPtsBul.pts.pop();\r\n cuPtsBul.buls.pop();\r\n pts = cuPtsBul.pts.concat(pts);\r\n buls = cuPtsBul.buls.concat(buls);\r\n }\r\n else if (linkType === LinkType.SpEp)\r\n {\r\n pts.pop();\r\n buls.pop();\r\n\r\n let cuPtsBul = cu.MatrixAlignTo2(this.OCS);\r\n pts = pts.concat(cuPtsBul.pts);\r\n buls = buls.concat(cuPtsBul.buls);\r\n }\r\n else if (linkType === LinkType.EpSp)\r\n {\r\n let cuPtsBul = cu.MatrixAlignTo2(this.OCS);\r\n cuPtsBul.pts.pop();\r\n cuPtsBul.buls.pop();\r\n pts = cuPtsBul.pts.concat(pts);\r\n buls = cuPtsBul.buls.concat(buls);\r\n }\r\n else if (linkType === LinkType.EpEp)\r\n {\r\n pts.pop();\r\n buls.pop();\r\n\r\n cu.Reverse();\r\n let cuPtsBul = cu.MatrixAlignTo2(this.OCS);\r\n pts = pts.concat(cuPtsBul.pts);\r\n buls = buls.concat(cuPtsBul.buls);\r\n }\r\n\r\n this._LineData.length = 0;\r\n for (let i = 0; i < pts.length; i++)\r\n {\r\n this._LineData.push({ pt: pts[i], bul: buls[i] });\r\n }\r\n }\r\n else\r\n return Status.False;\r\n }\r\n\r\n //在上面的其他分支已经返回了假 所以这里直接返回真.\r\n this.Update();\r\n return Status.True;\r\n }\r\n\r\n /**\r\n * 将曲线数组组合成多段线\r\n * @param curves 已经使用CurveLinked的数组,总是首尾相连\r\n * @returns\r\n */\r\n static Combine(curves: Curve[], tolerance = 1e-5): Polyline | undefined\r\n {\r\n if (!curves || curves.length === 0) return;\r\n\r\n let pl = new Polyline;\r\n pl.OCS = ComputerCurvesNormalOCS(curves);\r\n\r\n for (let cu of curves)\r\n pl.Join(cu, false, tolerance);\r\n\r\n let d = pl.LineData;\r\n if (d.length > 1)\r\n {\r\n let ld = arrayLast(d).pt;\r\n if (equalv2(d[0].pt, ld, tolerance))\r\n ld.copy(d[0].pt);\r\n }\r\n\r\n return pl;\r\n }\r\n /**首尾相连的曲线直接连接 */\r\n static FastCombine(curves: Curve[], tolerance = 1e-5): Polyline | undefined\r\n {\r\n if (!curves || curves.length === 0) return;\r\n\r\n let pl = new Polyline;\r\n pl.OCS = ComputerCurvesNormalOCS(curves);\r\n\r\n let ocsInv = pl.OCSInv;\r\n\r\n let lineData: PolylineProps[] = [];\r\n for (let i = 0; i < curves.length; i++)\r\n {\r\n let cu = curves[i];\r\n let bul = 0;\r\n if (cu instanceof Arc)\r\n bul = cu.Bul;\r\n\r\n lineData.push({\r\n pt: AsVector2(cu.StartPoint.applyMatrix4(ocsInv)),\r\n bul\r\n });\r\n\r\n if (i === curves.length - 1)\r\n {\r\n lineData.push({\r\n pt: AsVector2(cu.EndPoint.applyMatrix4(ocsInv)),\r\n bul: 0\r\n });\r\n }\r\n }\r\n\r\n if (lineData.length > 1)\r\n {\r\n let ld = arrayLast(lineData).pt;\r\n if (equalv2(lineData[0].pt, ld, tolerance))\r\n ld.copy(lineData[0].pt);\r\n }\r\n pl.LineData = lineData;\r\n return pl;\r\n }\r\n\r\n PtOnCurve(pt: Vector3): boolean\r\n {\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n let c = this.GetCurveAtIndex(i);\r\n if (c.PtOnCurve(pt))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //点在曲线上,已经确定点在曲线的延伸线上\r\n PtOnCurve3(p: Vector3, fuzz = 1e-6): boolean\r\n {\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n let c = this.GetCurveAtIndex(i);\r\n if (c.PtOnCurve3(p, fuzz))\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n PtInCurve(pt: Vector3)\r\n {\r\n return this.IsClose && IsPointInPolyLine(this, pt);\r\n }\r\n GetClosestPointTo(pt: Vector3, extend: boolean): Vector3\r\n {\r\n return this.GetClosestPointTo2(pt, extend ? ExtendType.Both : ExtendType.None);\r\n }\r\n GetClosestPointTo2(pt: Vector3, extType: ExtendType): Vector3\r\n {\r\n //当曲线空时,返回空\r\n if (this.EndParam < 1) return undefined;\r\n //当有闭合标志时,曲线在任何位置都不延伸\r\n if (this._ClosedMark) extType = ExtendType.None;\r\n\r\n //最近点\r\n let ptC = undefined;\r\n //最近点的距离\r\n let ptCDist = Infinity;\r\n\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n let cu = this.GetCurveAtIndex(i);\r\n\r\n //前延伸\r\n if (i === 0 && (extType & ExtendType.Front) > 0)\r\n {\r\n let ptCFirst = cu.GetClosestPointTo(pt, true);\r\n if (cu.GetParamAtPoint(ptCFirst) <= 1)\r\n {\r\n ptC = ptCFirst;\r\n ptCDist = ptC.distanceToSquared(pt);\r\n }\r\n if (extType === ExtendType.Front)\r\n continue;\r\n }\r\n\r\n let ptCloseNew: Vector3; //新的最近点\r\n\r\n //后延伸 (此处与前延伸分开if 如果线只有一段,那么前后延伸都能同时触发)\r\n if (i === (this.EndParam - 1) && (extType & ExtendType.Back) > 0)\r\n {\r\n let ptCLast = cu.GetClosestPointTo(pt, true);\r\n if (cu.GetParamAtPoint(ptCLast) >= 0)\r\n ptCloseNew = ptCLast;\r\n else //如果延伸之后并不在曲线或者曲线的后延伸上\r\n ptCloseNew = cu.EndPoint;\r\n }\r\n else\r\n {\r\n ptCloseNew = cu.GetClosestPointTo(pt, false);\r\n }\r\n\r\n let newDist = ptCloseNew.distanceToSquared(pt);\r\n if (newDist < ptCDist)\r\n {\r\n ptC = ptCloseNew;\r\n ptCDist = newDist;\r\n }\r\n }\r\n\r\n return ptC;\r\n }\r\n //偏移\r\n GetOffsetCurves(offsetDist: number): Polyline[]\r\n {\r\n if (equaln(offsetDist, 0)) return [];\r\n let polyOffestUtil = new OffsetPolyline(this, offsetDist);\r\n let curves = polyOffestUtil.Do();\r\n for (let cu of curves)\r\n cu.ColorIndex = this.ColorIndex;\r\n return curves;\r\n }\r\n GetFeedingToolPath(offsetDist: number, offsetDistSq = (offsetDist ** 2) * 2.1): Polyline[]\r\n {\r\n if (equaln(offsetDist, 0)) return [];\r\n let polyOffestUtil = new OffsetPolyline(this, offsetDist, true, offsetDistSq);\r\n return polyOffestUtil.Do();\r\n }\r\n /**\r\n * 分解\r\n */\r\n Explode(): Curve[]\r\n {\r\n let exportCus: Curve[] = [];\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n exportCus.push(this.GetCurveAtIndex(i));\r\n }\r\n return exportCus;\r\n }\r\n\r\n /**\r\n * 根据参数得到参数所在的子曲线.\r\n *\r\n * 当曲线存在闭合标志时,参数必须在曲线内部,否则返回空.\r\n *\r\n * @param {number} param 参数值\r\n * @returns {Curve} 曲线(直线或者圆弧) 或空\r\n * @memberof Polyline\r\n */\r\n GetCurveAtParam(param: number): Curve\r\n {\r\n if (this._ClosedMark && !this.ParamOnCurve(param))\r\n return undefined;\r\n\r\n if (param < 0)\r\n return this.GetCurveAtIndex(0);\r\n else if (param >= this.EndParam)\r\n return this.GetCurveAtIndex(this.EndParam - 1);\r\n else return this.GetCurveAtIndex(Math.floor(param));\r\n }\r\n\r\n /**\r\n * 得到参数在子曲线中的表示\r\n *\r\n * @param {number} param 参数在多段线中表示\r\n * @returns {number} 参数在子曲线中表示\r\n * @memberof Polyline\r\n */\r\n GetCurveParamAtParam(param: number): number\r\n {\r\n if (param >= this.EndParam) param -= this.EndParam - 1;\r\n else if (param > 0) param -= Math.floor(param);\r\n\r\n return param;\r\n }\r\n\r\n /**\r\n * 获得曲线,来自索引位置.\r\n * @param {number} i 索引位置 整数\r\n */\r\n GetCurveAtIndex(i: number): Curve\r\n {\r\n if (i >= this._LineData.length) return undefined;\r\n\r\n if (!this.ParamOnCurve(i)) return undefined;\r\n\r\n if (!this._ClosedMark && i === this._LineData.length - 1) return undefined;\r\n\r\n let d1 = this._LineData[i];\r\n let d2 = this._LineData[FixIndex(i + 1, this._LineData)];\r\n\r\n let curve: Curve;\r\n if (equaln(d1.bul, 0, 1e-8))\r\n curve = new Line(AsVector3(d1.pt), AsVector3(d2.pt)).ApplyMatrix(this.OCS);\r\n else\r\n curve = new Arc().ParseFromBul(d1.pt, d2.pt, d1.bul).ApplyMatrix(this.OCS);\r\n\r\n curve.ColorIndex = this._Color;\r\n return curve;\r\n }\r\n\r\n IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-5)\r\n {\r\n return IntersectPolylineAndCurve(this, curve, intType, tolerance);\r\n }\r\n\r\n //计算自交点.\r\n IntersectSelf(): number[]\r\n {\r\n let cus = this.Explode();\r\n if (cus.length === 0) return [];\r\n\r\n let intParams: number[] = [];\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let c = cus[i];\r\n for (let j = i + 2; j < cus.length; j++)\r\n {\r\n let c2 = cus[j];\r\n let pts = c.IntersectWith(c2, IntersectOption.OnBothOperands);\r\n\r\n for (let p of pts)\r\n {\r\n intParams.push(i + c.GetParamAtPoint(p));\r\n intParams.push(j + c2.GetParamAtPoint(p));\r\n }\r\n }\r\n }\r\n return intParams;\r\n }\r\n IsIntersectSelf()\r\n {\r\n let cus = this.Explode().filter(c => !equaln(c.Length, 0, 1e-3));\r\n for (let i = 0; i < cus.length - 1; i++)\r\n {\r\n let c1 = cus[i];\r\n let c1IsLine = c1 instanceof Line;\r\n let d1 = c1.GetFistDeriv(c1IsLine ? 0 : 1).normalize();\r\n\r\n for (let j = i + 1; j < cus.length; j++)\r\n {\r\n let c2 = cus[j];\r\n let c2IsLine = c2 instanceof Line;\r\n let d2 = c2.GetFistDeriv(0).normalize();\r\n if (j === i + 1)\r\n {\r\n if (c1IsLine === c2IsLine)\r\n {\r\n if (c1IsLine)\r\n {\r\n if (equalv3(d1, d2.negate()))\r\n return true;\r\n continue;\r\n }\r\n else\r\n {\r\n if (equalv3(d1, d2.negate()) && equalv3((c1).Center, (c2).Center))\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n let intPts = c1.IntersectWith2(c2, 0);\r\n let intPtsLen = intPts.length;\r\n\r\n if (intPtsLen > 0)\r\n {\r\n if (intPtsLen === 2 && equalv3(intPts[0].pt, intPts[1].pt, 1e-3))\r\n {\r\n intPtsLen = 1;\r\n intPts.pop();\r\n }\r\n\r\n if (intPtsLen === 2 && j === i + 1 && cus.length === 2)\r\n {\r\n if (intPts.every(r => equaln(r.thisParam, 0, 1e-3) || equaln(r.thisParam, 1, 1e-3)))\r\n continue;\r\n }\r\n\r\n if (j === i + 1 && intPtsLen === 1)\r\n continue;\r\n if (this.IsClose && i === 0 && j === cus.length - 1 && intPtsLen === 1)\r\n continue;\r\n return true;\r\n }\r\n }\r\n\r\n }\r\n return false;\r\n }\r\n\r\n get BoundingBox()\r\n {\r\n let box = new Box3Ext();\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n let cu = this.GetCurveAtIndex(i);\r\n box.union(cu.BoundingBox);\r\n }\r\n return box;\r\n }\r\n\r\n /**\r\n * 得到曲线有用的点表和凸度(闭合曲线首尾重复)\r\n */\r\n get PtsBuls(): { pts: Vector2[], buls: number[]; }\r\n {\r\n let pts: Vector2[] = [];\r\n let buls: number[] = [];\r\n\r\n if (this._LineData.length === 0)\r\n return { pts, buls };\r\n\r\n for (let data of this._LineData)\r\n {\r\n pts.push(data.pt.clone());\r\n buls.push(data.bul);\r\n }\r\n //闭合且起点不等于终点\r\n if (this._ClosedMark &&\r\n !this._LineData[0].pt.equals(arrayLast(this._LineData).pt))\r\n {\r\n pts.push(pts[0].clone());\r\n buls.push(buls[0]);\r\n }\r\n\r\n return { pts, buls };\r\n }\r\n get IsBulge()\r\n {\r\n if (!this.IsClose) return false;\r\n\r\n let refDir = Math.sign(this.Area2);\r\n let c1: Curve;\r\n let c2: Curve;\r\n\r\n for (let i = 0; i < this.EndParam; i++)\r\n {\r\n c1 = this.GetCurveAtIndex(i);\r\n c2 = this.GetCurveAtIndex(FixIndex(i + 1, this.EndParam));\r\n\r\n let len1 = c1.Length;\r\n let len2 = c2.Length;\r\n let minLen = Math.min(len1, len2) * 0.2;\r\n\r\n let p = c1.EndPoint;\r\n let p1: Vector3;\r\n let p2: Vector3;\r\n\r\n if (c1 instanceof Arc)\r\n {\r\n let dir = c1.IsClockWise ? -1 : 1;\r\n if (dir !== refDir)\r\n return false;\r\n p1 = c1.GetPointAtDistance(len1 - minLen);\r\n }\r\n else\r\n p1 = c1.StartPoint;\r\n\r\n if (c2 instanceof Arc)\r\n {\r\n let dir = c2.IsClockWise ? -1 : 1;\r\n if (dir !== refDir)\r\n return false;\r\n p2 = c2.GetPointAtDistance(minLen);\r\n }\r\n else\r\n p2 = c2.EndPoint;\r\n\r\n let vec1 = p.clone().sub(p1);\r\n let vec2 = p2.sub(p);\r\n let dir = Math.sign(vec1.cross(vec2).z);\r\n\r\n if (dir !== 0 && dir !== refDir)\r\n return false;\r\n }\r\n return true;\r\n }\r\n get Shape()\r\n {\r\n let { pts, buls } = this.PtsBuls;\r\n let curve = CreateBoardUtil.CreatePath(pts, buls);\r\n return curve;\r\n }\r\n get SVG()\r\n {\r\n let sp = this.StartPoint;\r\n let str = `M${sp.x} ${sp.y} `;\r\n for (let i = 1; i <= this.EndParam; i++)\r\n {\r\n let bul = this.GetBuilgeAt(i - 1);\r\n let p = this.GetPointAtParam(i);\r\n if (bul === 0)\r\n str += `L${p.x} ${p.y} `;\r\n else\r\n {\r\n let arc = this.GetCurveAtIndex(i - 1) as Arc;\r\n str += `A ${arc.Radius} ${arc.Radius} 0 ${Math.abs(bul) >= 1 ? 1 : 0} ${arc.IsClockWise ? 0 : 1} ${p.x} ${p.y}`;\r\n }\r\n }\r\n return str;\r\n }\r\n InitDrawObject(renderType: RenderType = RenderType.Wireframe)\r\n {\r\n let shape = this.Shape;\r\n\r\n let geo = BufferGeometryUtils.CreateFromPts(shape.getPoints(50).map(AsVector3));\r\n if (renderType === RenderType.WireframePrint)\r\n {\r\n var geometry = new LineGeometry().setPositions(geo.attributes.position.array as number[]);\r\n return new Line2(geometry, ColorMaterial.PrintLineMatrial);\r\n }\r\n let obj = new TLine(geo, ColorMaterial.GetLineMaterial(this._Color));\r\n return obj;\r\n }\r\n UpdateDrawObject(type: RenderType, en: Object3D)\r\n {\r\n let shape = this.Shape;\r\n let pts = shape.getPoints(50).map(AsVector3);\r\n let plObj = en as TLine;\r\n let geo = plObj.geometry as BufferGeometry;\r\n if (!BufferGeometryUtils.UpdatePts(geo, pts))\r\n {\r\n updateGeometry(plObj, BufferGeometryUtils.CreateFromPts(pts));\r\n }\r\n }\r\n\r\n GetDragPointCount(drag: DragPointType): number\r\n {\r\n if (drag === DragPointType.Grip)\r\n {\r\n let count = this.EndParam * 2 + 1;\r\n if (this.CloseMark) count--;\r\n return count;\r\n }\r\n else\r\n {\r\n return this._LineData.length;\r\n }\r\n }\r\n\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetStretchPoints();\r\n case ObjectSnapMode.Mid:\r\n let midPts = [];\r\n let enParam = this.EndParam;\r\n for (let i = 0.5; i < enParam; i++)\r\n {\r\n let p = this.GetPointAtParam(i);\r\n p && midPts.push(p);\r\n }\r\n return midPts;\r\n case ObjectSnapMode.Nea:\r\n {\r\n let nea: Vector3[] = [];\r\n for (let cu of this.Explode())\r\n {\r\n let neaa = cu.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform);\r\n if (neaa)\r\n nea.push(...neaa);\r\n }\r\n return nea;\r\n }\r\n case ObjectSnapMode.Ext:\r\n {\r\n let cp = this.GetClosestPointTo(pickPoint, true);\r\n if (cp)\r\n return [cp];\r\n break;\r\n }\r\n case ObjectSnapMode.Cen:\r\n let cenPts: Vector3[] = [];\r\n for (let i = 0; i < this._LineData.length; i++)\r\n {\r\n let data = this._LineData[i];\r\n if (!equaln(data.bul, 0))\r\n {\r\n let cu = this.GetCurveAtIndex(i) as Arc;\r\n if (cu)//end bul !== 0 但是并没有圆弧\r\n cenPts.push(cu.Center);\r\n }\r\n }\r\n return cenPts;\r\n case ObjectSnapMode.Per:\r\n if (lastPoint)\r\n {\r\n let cp = this.GetClosestPointTo(pickPoint, false);\r\n if (!cp) return [];\r\n let cparam = this.GetParamAtPoint(cp);\r\n let cu = this.GetCurveAtParam(cparam);\r\n if (cu)\r\n {\r\n let closestPt = cu.GetClosestPointTo(lastPoint, true);\r\n if (closestPt && this.PtOnCurve(closestPt))\r\n return [closestPt];\r\n }\r\n }\r\n case ObjectSnapMode.Tan:\r\n if (lastPoint)\r\n {\r\n let clostPt = this.GetClosestPointTo(pickPoint, false);\r\n if (!clostPt) return [];\r\n let par = this.GetParamAtPoint(clostPt);\r\n let cu = this.GetCurveAtParam(par);\r\n if (cu instanceof Arc)\r\n return cu.GetObjectSnapPoints(snapMode, pickPoint, lastPoint);\r\n return [];\r\n }\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n GetGripPoints(): Array\r\n {\r\n let ptList: Vector3[] = [];\r\n if (this._LineData.length < 2)\r\n return ptList;\r\n\r\n let enParam = this.EndParam;\r\n if (this.CloseMark) enParam -= 0.5;\r\n for (let i = 0; i < enParam + 0.5; i += 0.5)\r\n {\r\n let p = this.GetPointAtParam(i);\r\n ptList.push(p);\r\n }\r\n return ptList;\r\n }\r\n MoveGripPoints(indexList: number[], moveVec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n let moveVLoc = AsVector2(moveVec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv)));\r\n\r\n let calcIndexList = indexList;\r\n if (indexList.length > 1)\r\n {\r\n let centerIndexes = indexList.filter(i => i % 2 === 0);\r\n if (centerIndexes.length > 0)\r\n calcIndexList = centerIndexes;\r\n }\r\n\r\n for (let index of calcIndexList)\r\n {\r\n if (index % 2 === 0)\r\n {\r\n let cuIndex = index / 2;\r\n\r\n let ptCout = this._LineData.length;\r\n\r\n let frontIndex = cuIndex - 1;\r\n if (this._ClosedMark)\r\n frontIndex = FixIndex(frontIndex, ptCout);\r\n\r\n if (frontIndex >= 0 && this.GetBuilgeAt(frontIndex))\r\n {\r\n let arc = this.GetCurveAtIndex(frontIndex) as Arc;\r\n arc.MoveGripPoints([2], moveVec);\r\n this._LineData[frontIndex].bul = arc.Bul;\r\n }\r\n if ((cuIndex !== ptCout - 1) && this.GetBuilgeAt(cuIndex))\r\n {\r\n let arc = this.GetCurveAtIndex(cuIndex) as Arc;\r\n arc.MoveGripPoints([0], moveVec);\r\n this._LineData[cuIndex].bul = arc.Bul;\r\n }\r\n this._LineData[cuIndex].pt.add(moveVLoc);\r\n }\r\n else\r\n {\r\n let ptIndex = (index - 1) / 2;\r\n let nextIndex = (FixIndex(ptIndex + 1, this._LineData));\r\n let d = this._LineData[ptIndex];\r\n if (d.bul == 0)\r\n {\r\n this._LineData[ptIndex].pt.add(moveVLoc);\r\n this._LineData[nextIndex].pt.add(moveVLoc);\r\n }\r\n else\r\n {\r\n let arc = this.GetCurveAtIndex(ptIndex) as Arc;\r\n arc.MoveGripPoints([1], moveVec);\r\n this._LineData[ptIndex].bul = arc.Bul;\r\n }\r\n }\r\n }\r\n\r\n this.Update();\r\n }\r\n\r\n GetStretchPoints(): Vector3[]\r\n {\r\n let iswcs = MatrixIsIdentityCS(this._Matrix);\r\n let pts: Vector3[] = [];\r\n for (let data of this._LineData)\r\n {\r\n let p = AsVector3(data.pt);\r\n if (!iswcs) p.applyMatrix4(this._Matrix);\r\n pts.push(p);\r\n }\r\n return pts;\r\n }\r\n\r\n /**\r\n * 范围拉伸(stretch),对夹点进行拉伸.\r\n * 如果对圆弧的一侧进行拉伸,那么修改bul\r\n *\r\n * @param {Array} indexList\r\n * @param {Vector3} vec\r\n */\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n //本地坐标系移动向量\r\n let moveVLoc = vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv));\r\n\r\n let ptCout = this._LineData.length;\r\n\r\n for (let index of indexList)\r\n {\r\n if (index >= ptCout)\r\n throw \"在拉伸多段线顶点时,尝试拉伸不存在的顶点!(通常是因为模块中的板轮廓被破坏,导致的顶点丢失!)\";\r\n\r\n let frontIndex = index - 1;\r\n let nextIndex = index + 1;\r\n if (this._ClosedMark)\r\n {\r\n frontIndex = FixIndex(frontIndex, ptCout);\r\n nextIndex = FixIndex(nextIndex, ptCout);\r\n }\r\n\r\n /**\r\n * 根据新的拉伸点修改凸度.\r\n *\r\n * @param {number} nextIndex 隔壁点索引\r\n * @param {number} bulIndex 需要修改凸度位置的索引\r\n * @returns\r\n */\r\n const ChangeBul = (nextIndex: number, bulIndex: number) =>\r\n {\r\n //需要修改的点的数据\r\n let d = this._LineData[bulIndex];\r\n if (d === undefined || d.bul == 0) return;\r\n\r\n //如果隔壁点不在拉伸列表中\r\n if (indexList.indexOf(nextIndex) === -1)\r\n {\r\n let needChangeP = this.GetPointAtParam(index);\r\n let notChangeP = this.GetPointAtParam(nextIndex);\r\n\r\n //原先的弦长的一半\r\n let oldChordLengthHalf = needChangeP.distanceTo(notChangeP) * 0.5;\r\n\r\n //弓高\r\n let arcHeight = oldChordLengthHalf * d.bul;\r\n\r\n needChangeP.add(vec);\r\n\r\n let newChordLengthHalf = needChangeP.distanceTo(notChangeP) * 0.5;\r\n\r\n d.bul = arcHeight / newChordLengthHalf;\r\n }\r\n };\r\n\r\n ChangeBul(frontIndex, frontIndex);\r\n ChangeBul(nextIndex, index);\r\n\r\n //修改顶点\r\n this._LineData[index].pt.add(AsVector2(moveVLoc));\r\n }\r\n this.Update();\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();\r\n this._LineData.length = 0;\r\n let cout = file.Read();\r\n for (let i = 0; i < cout; i++)\r\n {\r\n let v = new Vector2().fromArray(file.Read());\r\n let bul = file.Read();\r\n\r\n this._LineData.push({ pt: v, bul: bul });\r\n }\r\n if (ver > 1)\r\n this._ClosedMark = file.Read();\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(2);\r\n file.Write(this._LineData.length);\r\n\r\n for (let l of this._LineData)\r\n {\r\n file.Write(l.pt.toArray());\r\n file.Write(l.bul);\r\n }\r\n file.Write(this._ClosedMark);\r\n }\r\n}\r\n\r\nexport const TempPolyline = new Polyline();\r\n","import { Matrix4, Vector3 } from 'three';\r\nimport { arrayRemoveDuplicateBySort } from '../Common/ArrayExt';\r\nimport { Arc } from '../DatabaseServices/Entity/Arc';\r\nimport { Circle } from '../DatabaseServices/Entity/Circle';\r\nimport { Curve } from '../DatabaseServices/Entity/Curve';\r\nimport { Ellipse } from '../DatabaseServices/Entity/Ellipse';\r\nimport { Line } from '../DatabaseServices/Entity/Line';\r\nimport { Polyline } from '../DatabaseServices/Entity/Polyline';\r\nimport { comparePoint, equaln, equalv3 } from '../Geometry/GeUtils';\r\n\r\n/**\r\n * 相交延伸选项.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum IntersectOption\r\n{\r\n /**\r\n * 两者都不延伸\r\n */\r\n OnBothOperands = 0,\r\n /**\r\n * 延伸自身\r\n */\r\n ExtendThis = 1,\r\n /**\r\n * 延伸参数\r\n */\r\n ExtendArg = 2,\r\n /**\r\n * 延伸两者\r\n */\r\n ExtendBoth = 3,\r\n}\r\n\r\nexport interface IntersectResult\r\n{\r\n pt: Vector3,\r\n thisParam: number,\r\n argParam: number,\r\n}\r\n\r\n//延伸自身还是参数反转\r\nexport function reverseIntersectOption(intType: IntersectOption)\r\n{\r\n if (intType === IntersectOption.ExtendThis)\r\n intType = IntersectOption.ExtendArg;\r\n else if (intType === IntersectOption.ExtendArg)\r\n intType = IntersectOption.ExtendThis;\r\n return intType;\r\n}\r\n/**\r\n * 校验相交点是否满足延伸选项\r\n * 算法会计算无限延伸状态下的曲线交点,调用该方法进行校验返回校验后的点表\r\n *\r\n * @param {Vector3[]} intRes 相交点.曲线当作完全状态下的相交点\r\n * @param {Curve} c1 曲线1 由this参数传入\r\n * @param {Curve} c2 曲线2 由arg 参数传入\r\n * @param {Intersect} extType 延伸选项.\r\n * @returns {Array} 校验完成后的点表\r\n */\r\nfunction CheckPointOnCurve(intRes: IntersectResult[], c1: Curve, c2: Curve, extType: IntersectOption, tolerance = 1e-6): Array\r\n{\r\n return intRes.filter(r =>\r\n {\r\n if (!(extType & IntersectOption.ExtendThis))\r\n if (!c1.ParamOnCurve(r.thisParam, tolerance / c1.Length))\r\n return false;\r\n\r\n if (!(extType & IntersectOption.ExtendArg))\r\n if (!c2.ParamOnCurve(r.argParam, tolerance / c2.Length))\r\n return false;\r\n return true;\r\n });\r\n}\r\nexport function IntersectCircleAndCircle(cu1: Circle | Arc, cu2: Circle | Arc): IntersectResult[]\r\n{\r\n if (!cu1.IsCoplaneTo(cu2)) return [];\r\n\r\n let c1OcsInv = cu1.OCSInv;\r\n let c1Ocs = cu1.OCS;\r\n\r\n let center1 = cu1.Center.applyMatrix4(c1OcsInv);\r\n let center2 = cu2.Center.applyMatrix4(c1OcsInv);\r\n let radius1 = cu1.Radius;\r\n let radius2 = cu2.Radius;\r\n\r\n let pts: IntersectResult[] = [];\r\n let dist = center2.distanceTo(center1);\r\n\r\n if (dist < Math.abs(radius1 - radius2) - 1e-3\r\n || dist > (radius1 + radius2 + 1e-3))\r\n return pts;\r\n if (equaln(dist, 0, 1e-6)) return pts;\r\n\r\n let dstsqr = dist * dist;\r\n let r1sqr = radius1 * radius1;\r\n let r2sqr = radius2 * radius2;\r\n\r\n let a = (dstsqr - r2sqr + r1sqr) / (2 * dist);\r\n let h = Math.sqrt(Math.abs(r1sqr - (a * a)));\r\n\r\n let ratio_a = a / dist;\r\n let ratio_h = h / dist;\r\n\r\n let dx = center2.x - center1.x;\r\n let dy = center2.y - center1.y;\r\n\r\n let phix = center1.x + (ratio_a * dx);\r\n let phiy = center1.y + (ratio_a * dy);\r\n\r\n dx *= ratio_h;\r\n dy *= ratio_h;\r\n\r\n let p1 = new Vector3(phix + dy, phiy - dx);\r\n let p2 = new Vector3(phix - dy, phiy + dx);\r\n p1.applyMatrix4(c1Ocs);\r\n p2.applyMatrix4(c1Ocs);\r\n\r\n pts.push({\r\n pt: p1,\r\n thisParam: cu1.GetParamAtPoint(p1),\r\n argParam: cu2.GetParamAtPoint(p1),\r\n });\r\n if (!equalv3(p1, p2))//防止点重复\r\n pts.push({\r\n pt: p2,\r\n thisParam: cu1.GetParamAtPoint(p2),\r\n argParam: cu2.GetParamAtPoint(p2),\r\n });\r\n\r\n return pts;\r\n}\r\n/**\r\n * 计算圆与圆弧的交点.\r\n *\r\n * @export\r\n * @param {Circle} circle 圆\r\n * @param {Arc} arc 圆弧\r\n * @param {IntersectOption} extType 延伸选项\r\n * @returns 交点集合\r\n */\r\nexport function IntersectCircleAndArc(circle: Circle, arc: Arc, extType: IntersectOption, tolerance = 1e-6)\r\n{\r\n let pts = IntersectCircleAndCircle(circle, arc);\r\n return CheckPointOnCurve(pts, circle, arc, extType | IntersectOption.ExtendThis, tolerance);\r\n}\r\n\r\n/**\r\n * 计算圆弧与圆弧的交点\r\n *\r\n * @export\r\n * @param {Arc} arc1 圆弧\r\n * @param {Arc} arc2 圆弧\r\n * @param {IntersectOption} extType 延伸选项\r\n * @returns 交点集合\r\n */\r\nexport function IntersectArcAndArc(arc1: Arc, arc2: Arc, extType: IntersectOption, tolerance = 1e-5)\r\n{\r\n let pts = IntersectCircleAndCircle(arc1, arc2);\r\n return CheckPointOnCurve(pts, arc1, arc2, extType, tolerance);\r\n}\r\n\r\nexport function IntersectEllipseAndLine(l: Line, el: Ellipse, extType: IntersectOption, tolerance = 1e-6)\r\n{\r\n let pts = IntersectLineAndEllipseFor2D(l, el);\r\n return CheckPointOnCurve(pts, l, el, extType, tolerance);\r\n}\r\n\r\n/**\r\n * 通用方法:计算直线与圆的交点,默认延伸全部\r\n *\r\n * @export\r\n * @param {Line} line 直线\r\n * @param {(Circle | Arc)} circle 圆或圆弧\r\n * @returns 交点集合\r\n */\r\nfunction IntersectLineAndCircleOrArc(line: Line, circle: Circle | Arc): IntersectResult[]\r\n{\r\n let lineOrg = line.StartPoint;\r\n let lineDirection = line.EndPoint.sub(lineOrg);\r\n let dirLen = lineDirection.length();\r\n if (equaln(dirLen, 0)) return [];\r\n lineDirection.divideScalar(dirLen);\r\n\r\n let diff = lineOrg.clone().sub(circle.Center);\r\n let a0 = diff.dot(diff) - circle.Radius ** 2;\r\n let a1 = lineDirection.dot(diff);\r\n let discr = a1 ** 2 - a0;\r\n\r\n if (equaln(discr, 0, 1e-7))\r\n {\r\n let pt = lineOrg.add(lineDirection.multiplyScalar(-a1));\r\n\r\n return [{\r\n pt,\r\n thisParam: -a1 / dirLen,\r\n argParam: circle.GetParamAtPoint(pt)\r\n }];\r\n }\r\n else if (discr > 0)\r\n {\r\n let root = Math.sqrt(discr);\r\n let p1 = lineOrg.clone().add(lineDirection.clone().multiplyScalar(-a1 + root));\r\n let p2 = lineOrg.add(lineDirection.multiplyScalar(-a1 - root));\r\n\r\n return [\r\n {\r\n pt: p1,\r\n thisParam: (-a1 + root) / dirLen,\r\n argParam: circle.GetParamAtPoint(p1)\r\n }, {\r\n pt: p2,\r\n thisParam: (-a1 - root) / dirLen,\r\n argParam: circle.GetParamAtPoint(p2)\r\n }\r\n ];\r\n }\r\n return [];\r\n}\r\n\r\n//直线和圆\r\nexport function IntersectLineAndCircle(line: Line, circle: Circle, extType: IntersectOption, tolerance = 1e-6)\r\n{\r\n let ptArr = IntersectLineAndCircleOrArc(line, circle);\r\n return CheckPointOnCurve(ptArr, line, circle, extType | IntersectOption.ExtendArg);\r\n}\r\n//直线和圆弧\r\nexport function IntersectLineAndArc(line: Line, arc: Arc, extType: IntersectOption, tolerance = 1e-6)\r\n{\r\n let ptArr = IntersectLineAndCircleOrArc(line, arc);\r\n return CheckPointOnCurve(ptArr, line, arc, extType, tolerance);\r\n}\r\n//直线和直线\r\nexport function IntersectLAndLFor2D(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3\r\n{\r\n let dx1 = p1.x - p2.x;\r\n let dx2 = p3.x - p4.x;\r\n let dx3 = p4.x - p2.x;\r\n let dy1 = p1.y - p2.y;\r\n let dy2 = p3.y - p4.y;\r\n let dy3 = p4.y - p2.y;\r\n\r\n let det = (dx2 * dy1) - (dy2 * dx1);\r\n\r\n if (equaln(det, 0.0, 1e-5))\r\n {\r\n // if (equaln(dx2 * dy3, dy2 * dx3, 1e-5))\r\n // {\r\n // return midPoint(midPoint(p1, p2), midPoint(p3, p4));\r\n // }\r\n return;\r\n }\r\n\r\n let pt = new Vector3;\r\n let ratio = ((dx1 * dy3) - (dy1 * dx3)) / det;\r\n pt.x = (ratio * dx2) + p4.x;\r\n pt.y = (ratio * dy2) + p4.y;\r\n\r\n return pt;\r\n}\r\n\r\nexport function IntersectLAndLFor2D2(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3[]\r\n{\r\n let dx1 = p1.x - p2.x;\r\n let dx2 = p3.x - p4.x;\r\n let dx3 = p4.x - p2.x;\r\n let dy1 = p1.y - p2.y;\r\n let dy2 = p3.y - p4.y;\r\n let dy3 = p4.y - p2.y;\r\n\r\n let det = (dx2 * dy1) - (dy2 * dx1);\r\n\r\n if (equaln(det, 0.0, 1e-5))\r\n {\r\n if (equaln(dx2 * dy3, dy2 * dx3, 1e-5))\r\n return [p1, p2, p3, p4];\r\n return [];\r\n }\r\n\r\n let pt = new Vector3;\r\n let ratio = ((dx1 * dy3) - (dy1 * dx3)) / det;\r\n pt.x = (ratio * dx2) + p4.x;\r\n pt.y = (ratio * dy2) + p4.y;\r\n\r\n return [pt];\r\n}\r\n\r\nexport function IntersectLine3AndLine3(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, epsilon = 1e-6)\r\n{\r\n let pts = ShortestLine3AndLine3(p1, p2, p3, p4);\r\n if (pts) return pts[0];\r\n}\r\n\r\n/**\r\n * 三维中两行之间最短的直线\r\n * ref:https://stackoverflow.com/questions/2316490/the-algorithm-to-find-the-point-of-intersection-of-two-3d-line-segment\r\n * ref:http://paulbourke.net/geometry/pointlineplane/\r\n * ref:http://paulbourke.net/geometry/pointlineplane/calclineline.cs\r\n *\r\n * @export\r\n * @param {Vector3} p1 l1.start\r\n * @param {Vector3} p2 l1.end\r\n * @param {Vector3} p3 l2.start\r\n * @param {Vector3} p4 l2.end\r\n * @returns 交点集合\r\n */\r\nfunction ShortestLine3AndLine3(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, epsilon = 1e-6)\r\n{\r\n let p43 = p4.clone().sub(p3);\r\n if (p43.lengthSq() < epsilon)\r\n return;\r\n let p21 = p2.clone().sub(p1);\r\n if (p21.lengthSq() < epsilon)\r\n return;\r\n\r\n let p13 = p1.clone().sub(p3);\r\n\r\n let d1343 = p13.x * p43.x + p13.y * p43.y + p13.z * p43.z;\r\n let d4321 = p43.x * p21.x + p43.y * p21.y + p43.z * p21.z;\r\n let d1321 = p13.x * p21.x + p13.y * p21.y + p13.z * p21.z;\r\n let d4343 = p43.x * p43.x + p43.y * p43.y + p43.z * p43.z;\r\n let d2121 = p21.x * p21.x + p21.y * p21.y + p21.z * p21.z;\r\n\r\n let denom = d2121 * d4343 - d4321 * d4321;\r\n if (Math.abs(denom) < epsilon)\r\n return;\r\n let numer = d1343 * d4321 - d1321 * d4343;\r\n\r\n let mua = numer / denom;\r\n let mub = (d1343 + d4321 * (mua)) / d4343;\r\n\r\n let resultSegmentPoint1 = new Vector3();\r\n resultSegmentPoint1.x = p1.x + mua * p21.x;\r\n resultSegmentPoint1.y = p1.y + mua * p21.y;\r\n resultSegmentPoint1.z = p1.z + mua * p21.z;\r\n let resultSegmentPoint2 = new Vector3();\r\n resultSegmentPoint2.x = p3.x + mub * p43.x;\r\n resultSegmentPoint2.y = p3.y + mub * p43.y;\r\n resultSegmentPoint2.z = p3.z + mub * p43.z;\r\n\r\n return [resultSegmentPoint1, resultSegmentPoint2];\r\n}\r\n\r\n//直线和直线\r\nexport function IntersectLineAndLine(l1: Line, l2: Line, extType: IntersectOption, fuzz = 1e-4): IntersectResult[]\r\n{\r\n let [pt1, pt2, pt3, pt4] = [l1.StartPoint, l1.EndPoint, l2.StartPoint, l2.EndPoint];\r\n\r\n let ipts: Vector3[];\r\n if (equaln(pt1.z, 0, fuzz) && equaln(pt2.z, 0, fuzz) && equaln(pt3.z, 0, fuzz) && equaln(pt4.z, 0, fuzz))\r\n {\r\n ipts = IntersectLAndLFor2D2(pt1, pt2, pt3, pt4);\r\n ipts.sort(comparePoint(\"xy\"));\r\n arrayRemoveDuplicateBySort(ipts, (p1, p2) => equalv3(p1, p2, fuzz));\r\n }\r\n else\r\n {\r\n ipts = ShortestLine3AndLine3(pt1, pt2, pt3, pt4);\r\n if (!ipts) return [];\r\n if (ipts.length === 2)\r\n ipts.pop();\r\n }\r\n\r\n let ints: IntersectResult[] = [];\r\n for (let pt of ipts)\r\n {\r\n let { closestPt: p1, param: param1 } = l1.GetClosestAtPoint(pt, true);\r\n if (!equalv3(pt, p1, fuzz)) return [];\r\n if (!(extType & IntersectOption.ExtendThis))\r\n if (!(l1.ParamOnCurve(param1, 0) || equalv3(pt1, pt, fuzz) || equalv3(pt2, pt, fuzz)))\r\n return [];\r\n let { closestPt: p2, param: param2 } = l2.GetClosestAtPoint(pt, true);\r\n if (!equalv3(pt, p2, fuzz)) return [];\r\n if (!(extType & IntersectOption.ExtendArg))\r\n if (!(l2.ParamOnCurve(param2, 0) || equalv3(pt3, pt, fuzz) || equalv3(pt4, pt, fuzz)))\r\n return [];\r\n ints.push({ pt, thisParam: param1, argParam: param2 });\r\n }\r\n return ints;\r\n}\r\n\r\nexport function IntersectPolylineAndCurve(pl: Polyline, cu: Curve, extType: IntersectOption, tolerance = 1e-6): IntersectResult[]\r\n{\r\n let cus: Curve[] = pl.Explode();\r\n let cus2: Curve[];\r\n if (cu instanceof Polyline)\r\n cus2 = cu.Explode();\r\n else\r\n cus2 = [cu];\r\n\r\n let intRes: IntersectResult[] = [];\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let cu1 = cus[i];\r\n for (let j = 0; j < cus2.length; j++)\r\n {\r\n let cu2 = cus2[j];\r\n let ext = extType;\r\n\r\n let isStart = i === 0;\r\n let isEnd = i === cus.length - 1;\r\n\r\n let isStart2 = j === 0;\r\n let isEnd2 = j === cus2.length - 1;\r\n\r\n //当曲线闭合时,或者当前的子曲线不是起始和不是结束,那么不延伸曲线.\r\n if (pl.CloseMark || !(isStart || isEnd))\r\n ext = ext & ~IntersectOption.ExtendThis;\r\n if ((cu instanceof Polyline && cu.CloseMark) || !(isStart2 || isEnd2))\r\n ext = ext & ~IntersectOption.ExtendArg;\r\n\r\n let ptPars = cu1.IntersectWith2(cu2, ext, tolerance).filter(r1 => intRes.every(r2 => !equalv3(r1.pt, r2.pt)));\r\n\r\n //校验延伸\r\n if (IntersectOption.ExtendThis & ext)\r\n {\r\n //如果曲线是起始又是结束,那么不校验.\r\n if (isStart && isEnd)\r\n {\r\n }\r\n else if (isStart)\r\n {\r\n ptPars = ptPars.filter(res => res.thisParam <= 1);\r\n }\r\n else if (isEnd)\r\n {\r\n ptPars = ptPars.filter(res => res.thisParam >= 0);\r\n }\r\n }\r\n if (IntersectOption.ExtendArg & ext)\r\n {\r\n //如果曲线是起始又是结束,那么不校验.\r\n if (isStart2 && isEnd2)\r\n {\r\n }\r\n else if (isStart2)\r\n {\r\n ptPars = ptPars.filter(res => res.argParam + j <= cu2.EndParam);\r\n }\r\n else if (isEnd2)\r\n {\r\n ptPars = ptPars.filter(res => res.argParam + j >= 0);\r\n }\r\n }\r\n\r\n intRes.push(...ptPars.map(r =>\r\n {\r\n return {\r\n pt: r.pt,\r\n thisParam: i + r.thisParam,\r\n argParam: j + r.argParam,\r\n };\r\n }));\r\n }\r\n }\r\n return intRes;\r\n}\r\n\r\nexport function IntersectLineAndEllipseFor2D(l: Line, el: Ellipse)\r\n{\r\n if (!l.IsCoplaneTo(el)) return [];\r\n\r\n let mat = new Matrix4().makeRotationZ(-el.Rotation).multiply(el.OCSInv);\r\n let a = el.RadX;\r\n let b = el.RadY;\r\n let sp = l.StartPoint.applyMatrix4(mat);\r\n let ep = l.EndPoint.applyMatrix4(mat);\r\n let pts: Vector3[] = [];\r\n if (equaln(sp.x, ep.x))\r\n {\r\n let c = sp.x;\r\n let j = (b ** 2) * (1 - (c ** 2) / (a ** 2));\r\n if (equaln(j, 0))\r\n {\r\n pts = [new Vector3(sp.x, 0)];\r\n }\r\n else if (j < 0)\r\n return [];\r\n else\r\n {\r\n let y1 = Math.sqrt(j);\r\n let y2 = -Math.sqrt(j);\r\n pts = [\r\n new Vector3(c, y1),\r\n new Vector3(c, y2)\r\n ];\r\n }\r\n }\r\n else\r\n {\r\n let k = (sp.y - ep.y) / (sp.x - ep.x);\r\n let c = sp.y - sp.x * k;\r\n let j = (2 * a * a * k * c) * (2 * a * a * k * c) - 4 * (b * b + a * a * k * k) * a * a * (c * c - b * b);\r\n if (equaln(j, 0))\r\n {\r\n let x1 = -2 * k * c * a * a / (2 * (b * b + a * a * k * k));\r\n let y1 = k * x1 + c;\r\n pts = [new Vector3(x1, y1)];\r\n }\r\n else if (j < 0)\r\n return [];\r\n else\r\n {\r\n let x1 = (-2 * k * c * a * a + Math.sqrt(j)) / (2 * (b * b + a * a * k * k));\r\n let y1 = k * x1 + c;\r\n let x2 = (-2 * k * c * a * a - Math.sqrt(j)) / (2 * (b * b + a * a * k * k));\r\n let y2 = k * x2 + c;\r\n pts = [\r\n new Vector3(x1, y1),\r\n new Vector3(x2, y2)\r\n ];\r\n }\r\n }\r\n\r\n let matInv = new Matrix4().getInverse(mat);\r\n return pts.map(p =>\r\n {\r\n let pt = p.applyMatrix4(matInv);\r\n return {\r\n pt,\r\n thisParam: l.GetParamAtPoint(pt),\r\n argParam: el.GetParamAtPoint(pt)\r\n };\r\n });\r\n}\r\nexport function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, type: IntersectOption)\r\n{\r\n if (!el.IsCoplaneTo(cir)) return [];\r\n\r\n let a = Math.max(el.RadX, el.RadY);\r\n let dist = el.Center.distanceTo(cir.Center);\r\n\r\n let disVail = dist > (a + cir.Radius);\r\n\r\n if (disVail)\r\n return [];\r\n\r\n if (equalv3(el.Center, cir.Center))\r\n {\r\n let a = el.RadX;\r\n let b = el.RadY;\r\n let r = cir.Radius;\r\n let j = ((a * b) ** 2 - (b * r) ** 2) / (a ** 2 - b ** 2);\r\n let pts: Vector3[] = [];\r\n if (equaln(j, 0) || equaln(j, r ** 2))\r\n {\r\n if (equaln(j, 0))\r\n pts = [\r\n new Vector3(a, 0),\r\n new Vector3(-a, 0)\r\n ];\r\n else\r\n pts = [\r\n new Vector3(0, r),\r\n new Vector3(0, -r)\r\n ];\r\n }\r\n else if (j < 0)\r\n return [];\r\n else\r\n {\r\n let y1 = Math.sqrt(j);\r\n let y2 = - Math.sqrt(j);\r\n let n = r ** 2 - j;\r\n let x1 = Math.sqrt(n);\r\n let x2 = - Math.sqrt(n);\r\n pts = [\r\n new Vector3(x1, y1),\r\n new Vector3(x1, y2),\r\n new Vector3(x2, y1),\r\n new Vector3(x2, y2),\r\n ];\r\n }\r\n let ro = new Matrix4().makeRotationZ(el.Rotation);\r\n let res = pts.map(p =>\r\n {\r\n let pt = p.applyMatrix4(ro).applyMatrix4(el.OCS);\r\n return {\r\n pt,\r\n thisParam: el.GetParamAtPoint(pt),\r\n argParam: cir.GetParamAtPoint(pt)\r\n };\r\n });\r\n return CheckPointOnCurve(res, el, cir, type);\r\n }\r\n else\r\n {\r\n let pts = el.Shape.getPoints(60);\r\n let lineData = pts.map(p =>\r\n {\r\n return { pt: p, bul: 0 };\r\n });\r\n let pl = new Polyline(lineData);\r\n let cirClone = cir.Clone().ApplyMatrix(el.OCSInv);\r\n\r\n if (type === IntersectOption.ExtendBoth)\r\n type = IntersectOption.ExtendArg;\r\n else if (type !== IntersectOption.ExtendArg)\r\n type = IntersectOption.OnBothOperands;\r\n\r\n let intPts = IntersectPolylineAndCurve(pl, cirClone, type);\r\n intPts.forEach(r => r.pt.applyMatrix4(el.OCS));\r\n return intPts;\r\n }\r\n}\r\nexport function IntersectEllipse(el1: Ellipse, el2: Ellipse, type: IntersectOption)\r\n{\r\n if (!el1.IsCoplaneTo(el2)) return [];\r\n\r\n let isEqul = equalv3(el1.Center, el2.Center)\r\n && equaln(el1.RadX, el2.RadX)\r\n && equaln(el1.RadY, el2.RadY)\r\n && equalv3(el1.StartPoint, el2.StartPoint);\r\n\r\n if (isEqul)\r\n return [];\r\n\r\n let a1 = Math.max(el1.RadX, el1.RadY);\r\n let a2 = Math.max(el2.RadX, el2.RadY);\r\n\r\n let dist = el1.Center.distanceToSquared(el2.Center);\r\n if (dist > (a1 + a2) ** 2)\r\n {\r\n return [];\r\n }\r\n\r\n if (!el1.BoundingBox.intersectsBox(el2.BoundingBox))\r\n return [];\r\n\r\n let diffMat = el1.OCSInv.multiply(el2.OCS);\r\n let pts1 = el1.Shape.getPoints(60);\r\n let pts2 = el2.Shape.getPoints(60);\r\n\r\n let lineData1 = pts1.map(p =>\r\n {\r\n return { pt: p, bul: 0 };\r\n });\r\n let lineData2 = pts2.map(p =>\r\n {\r\n return { pt: p, bul: 0 };\r\n });\r\n\r\n let pl1 = new Polyline(lineData1);\r\n let pl2 = new Polyline(lineData2).ApplyMatrix(diffMat);\r\n\r\n let intPts = pl1.IntersectWith2(pl2, 0);\r\n intPts.forEach(r => r.pt.applyMatrix4(el1.OCS));\r\n return intPts;\r\n}\r\n","import { Box3, BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Shape, Vector2, Vector3 } from 'three';\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { getArcOrCirNearPts, getCircleCenter, GetTanPtsOnArcOrCircle } from '../../Common/CurveUtils';\nimport { matrixSetVector, reviseMirrorMatrix } from '../../Common/Matrix4Utils';\nimport { Status } from '../../Common/Status';\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\nimport { BufferGeometryUtils } from '../../Geometry/BufferGeometryUtils';\nimport { angle, AsVector3, clampRad, equaln, equalv3, midPoint, MoveMatrix, polar } from '../../Geometry/GeUtils';\nimport { IntersectArcAndArc, IntersectCircleAndArc, IntersectEllipseAndCircleOrArc, IntersectLineAndArc, IntersectOption, IntersectPolylineAndCurve, reverseIntersectOption } from '../../GraphicsSystem/IntersectWith';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { Factory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { SwapParam } from './../../Common/CurveUtils';\nimport { Circle } from './Circle';\nimport { Curve } from './Curve';\nimport { Ellipse } from './Ellipse';\nimport { Line } from './Line';\nimport { Polyline } from './Polyline';\n\n/**\n * 圆弧实体类\n * 与ACAD不同,这个类加入了时针变量,并且默认构造的圆弧为顺时针圆弧.\n *\n * 关于时针圆弧:\n * 起始圆弧到终止圆弧总是在0-2PI之间.(一个完整的圆).\n * 圆弧的绘制从起始圆弧绘制到终止圆弧. 按照时针绘制.\n * 参考计算圆弧的完整角度方法查看该计算方式.\n */\n@Factory\nexport class Arc extends Curve\n{\n constructor(center: Vector3 = new Vector3(), radius: number = 0.1, startAngle: number = 0.1, endAngle: number = 0, clockwise = true)\n {\n super();\n this._Matrix.setPosition(center);\n this._Radius = radius;\n this._StartAngle = clampRad(startAngle);\n this._EndAngle = clampRad(endAngle);\n this._Clockwise = clockwise;\n }\n private _Radius: number;\n private _StartAngle: number;\n private _EndAngle: number;\n /**\n * 曲线为顺时针\n */\n private _Clockwise = true;\n\n get Shape()\n {\n let sp = new Shape();\n sp.absarc(0, 0, this._Radius, this._StartAngle, this._EndAngle, this._Clockwise);\n return sp;\n }\n\n get Center()\n {\n return this.Position;\n }\n set Center(v: Vector3)\n {\n this.Position = v;\n }\n\n get Normal()\n {\n return new Vector3().setFromMatrixColumn(this._Matrix, 2);\n }\n set Normal(v: Vector3)\n {\n this.WriteAllObjectRecord();\n matrixSetVector(this._Matrix, 2, v);\n this.Update();\n }\n\n get Area(): number\n {\n return 0.5 * this.AllAngle * this.Radius * this.Radius;\n }\n //获得曲线的面积,逆时针为正,顺时针为负.\n get Area2(): number\n {\n let clockwise = this._Clockwise ? -1 : 1;\n return 0.5 * this.AllAngle * this.Radius * this.Radius * clockwise;\n }\n get IsClose(): boolean\n {\n return false;\n }\n\n get BoundingBox(): Box3\n {\n let pts = [this.StartPoint, this.EndPoint];\n\n //TODO:考虑三维圆弧.\n let addPts = [\n this.Center.add(new Vector3(this._Radius, 0)),\n this.Center.add(new Vector3(0, this._Radius)),\n this.Center.add(new Vector3(-this._Radius, 0)),\n this.Center.add(new Vector3(0, -this._Radius)),\n ];\n addPts.forEach(p =>\n {\n if (this.PtOnCurve(p))\n pts.push(p);\n });\n return new Box3().setFromPoints(pts);\n }\n\n get Radius()\n {\n return this._Radius;\n }\n set Radius(v: number)\n {\n this.WriteAllObjectRecord();\n this._Radius = v <= 0 ? 1e-19 : v;\n this.Update();\n }\n\n get IsClockWise()\n {\n return this._Clockwise;\n }\n set IsClockWise(v: boolean)\n {\n if (v !== this._Clockwise)\n {\n this.WriteAllObjectRecord();\n this._Clockwise = v;\n this.Update();\n }\n }\n\n get StartAngle()\n {\n return this._StartAngle;\n }\n set StartAngle(v: number)\n {\n this.WriteAllObjectRecord();\n this._StartAngle = v;\n this.Update();\n }\n\n get EndAngle()\n {\n return this._EndAngle;\n }\n set EndAngle(v: number)\n {\n this.WriteAllObjectRecord();\n this._EndAngle = v;\n this.Update();\n }\n\n //******************** Curve function start*****************//\n get StartPoint()\n {\n return polar(new Vector3(), this._StartAngle, this._Radius).applyMatrix4(this.OCS);\n }\n set StartPoint(v: Vector3)\n {\n let vTemp = v.clone().applyMatrix4(this.OCSInv);\n this.StartAngle = angle(vTemp);\n }\n get EndPoint()\n {\n return polar(new Vector3(), this._EndAngle, this._Radius).applyMatrix4(this.OCS);\n }\n set EndPoint(v: Vector3)\n {\n let vTemp = v.clone().applyMatrix4(this.OCSInv);\n this.EndAngle = angle(vTemp);\n }\n get StartParam()\n {\n return 0;\n }\n get EndParam()\n {\n return 1;\n }\n get Length()\n {\n return this.AllAngle * this._Radius;\n }\n\n GetParamAtPoint2(pt: Vector3): number\n {\n return this.GetParamAtAngle(this.GetAngleAtPoint(pt));\n }\n //点在曲线上,已经确定点在曲线的延伸线上\n PtOnCurve3(p: Vector3, fuzz = 1e-6): boolean\n {\n let param = this.GetParamAtPoint2(p);\n return this.ParamOnCurve(param, fuzz);\n }\n\n protected ApplyScaleMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n this.Center = this.Center.applyMatrix4(m);\n this.Radius = this.Radius * m.getMaxScaleOnAxis();\n return this;\n }\n protected ApplyMirrorMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n\n let sp = this.StartPoint;\n let ep = this.EndPoint;\n\n reviseMirrorMatrix(this._Matrix);\n\n this._Clockwise = !this._Clockwise;\n this.StartPoint = sp;\n this.EndPoint = ep;\n return this;\n }\n GetPointAtParam(param: number)\n {\n let an = this.GetAngleAtParam(param);\n return polar(new Vector3(), an, this._Radius).applyMatrix4(this.OCS);\n }\n GetPointAtDistance(distance: number)\n {\n let len = this.Length;\n if (len == 0) return;\n return this.GetPointAtParam(distance / len);\n }\n\n GetDistAtParam(param: number)\n {\n return Math.abs(param * this.Length);\n }\n\n GetDistAtPoint(pt: Vector3)\n {\n let param = this.GetParamAtPoint(pt);\n return this.GetDistAtParam(param);\n }\n\n GetParamAtPoint(pt: Vector3)\n {\n if (this._Radius == 0 ||\n this.AllAngle == 0 ||\n !equaln(pt.distanceTo(this.Center), this._Radius, 1e-6))\n return NaN;\n\n return this.GetParamAtAngle(this.GetAngleAtPoint(pt));\n }\n\n /**\n * 利用角度计算该角度在圆弧中代表的参数.\n * 如果角度在圆弧内,那么返回0-1\n * 如果角度不在圆弧内,那么尝试返回离圆弧起始或者结束的较近的参数\n *\n * @param {number} an\n * @returns\n * @memberof Arc\n */\n GetParamAtAngle(an: number)\n {\n //如果以pt为终点,那么所有的角度为\n let ptAllAn = this.ComputeAnlge(an);\n let allAn = this.AllAngle;\n\n //减去圆弧角度,剩余角度的一半\n let surplusAngleHalf = Math.PI - allAn / 2;\n\n if (ptAllAn > allAn + surplusAngleHalf)//返回负数\n return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn;\n else//返回正数\n return ptAllAn / allAn;\n }\n\n /**\n * 根据角度获得参数,不过在这里我们可以指定我们是要获取前面的参数还是后面的参数(正负)\n * @param an\n * @param [isStart] true:返回负数,false 返回正数\n * @returns\n */\n GetParamAtAngle2(an: number, isStart = true)\n {\n //如果以pt为终点,那么所有的角度为\n let ptAllAn = this.ComputeAnlge(an);\n let allAn = this.AllAngle;\n\n //减去圆弧角度,剩余角度的一半\n let surplusAngleHalf = Math.PI - allAn / 2;\n\n if (isStart)//返回负数\n return ((ptAllAn - allAn) - (surplusAngleHalf * 2)) / allAn;\n else//返回正数\n return ptAllAn / allAn;\n }\n\n GetAngleAtPoint(pt: Vector3)\n {\n let ptTmp = pt.clone().applyMatrix4(this.OCSInv);\n return angle(ptTmp);\n }\n\n GetAngleAtParam(param: number)\n {\n return clampRad(this._StartAngle + param * this.AllAngle * (this._Clockwise ? -1 : 1));\n }\n\n GetSplitCurves(param: number[] | number): Arc[]\n {\n let params = this.SplitParamSort(param);\n //角度列表\n let ans = params.map(p => this.GetAngleAtParam(p));\n //返回圆弧表\n let arcs: Arc[] = [];\n for (let i = 0; i < ans.length - 1; i++)\n {\n let arc = this.Clone() as Arc;\n arc.ColorIndex = this.ColorIndex;\n arc.StartAngle = ans[i];\n arc.EndAngle = ans[i + 1];\n arcs.push(arc);\n }\n return arcs;\n }\n GetOffsetCurves(offsetDist: number)\n {\n if (this._Clockwise) offsetDist *= -1;\n if ((offsetDist + this._Radius) > 0)\n {\n let arc = this.Clone() as Arc;\n arc.Radius = offsetDist + this._Radius;\n return [arc];\n }\n return [];\n }\n Extend(newParam: number)\n {\n this.WriteAllObjectRecord();\n if (newParam < 0)\n {\n this._StartAngle = this.GetAngleAtParam(newParam);\n }\n else if (newParam > 1)\n {\n this._EndAngle = this.GetAngleAtParam(newParam);\n }\n this.Update();\n }\n\n Join(cu: Curve): Status\n {\n if (cu instanceof Arc)\n {\n //非常小的圆弧直接结束\n if (cu.AllAngle < 5e-6) return Status.False;\n\n if (equalv3(cu.Center, this.Center) && equaln(cu._Radius, this._Radius))\n {\n this.WriteAllObjectRecord();\n let [sa, ea] = [cu.StartAngle, cu.EndAngle];\n if (cu._Clockwise != this._Clockwise)\n [sa, ea] = [ea, sa];\n\n let allAn = this.AllAngle;\n let saAllan = this.ComputeAnlge(sa);\n let eaAllan = this.ComputeAnlge(ea);\n\n if (equaln(sa, this._StartAngle)) //this起点对起点\n {\n if (eaAllan > allAn)\n this.EndAngle = ea;\n\n return Status.True;\n }\n else if (equaln(sa, this._EndAngle))//this终点对起点\n {\n if (eaAllan < allAn || equaln(ea, this._StartAngle))\n return Status.ConverToCircle;\n else\n this.EndAngle = ea;\n\n return Status.True;\n }\n else if (equaln(ea, this.StartAngle))//this起点对终点\n {\n if (saAllan < allAn)\n return Status.ConverToCircle;\n else\n this.StartAngle = sa;\n return Status.True;\n }\n else if (equaln(ea, this._EndAngle))//this终点对终点\n {\n if (saAllan > allAn)\n this.StartAngle = sa;\n return Status.True;\n }\n else if (this.ParamOnCurve(this.GetParamAtAngle(sa)))\n {\n if (eaAllan < saAllan)\n return Status.ConverToCircle;\n else if (eaAllan > allAn)\n this.EndAngle = ea;\n return Status.True;\n }\n else if (this.ParamOnCurve(this.GetParamAtAngle(ea)))\n {\n this.StartAngle = sa;\n return Status.True;\n }\n\n //使用按负方向去计算它的参数\n let saParam: number;\n if (saAllan > allAn)\n saParam = (saAllan - Math.PI * 2) / allAn;\n else\n saParam = saAllan / allAn;\n\n let eaParam: number;\n if (eaAllan > saAllan && saAllan > allAn)\n eaParam = (eaAllan - Math.PI * 2) / allAn;\n else\n eaParam = eaAllan / allAn;\n\n let pMin = Math.max(0, saParam);\n let pMax = Math.min(1, eaParam);\n\n if (pMin <= pMax + 1e-5)\n {\n if (saParam < 0)\n this.StartAngle = sa;\n if (eaParam > 1)\n this.EndAngle = ea;\n return Status.True;\n }\n }\n }\n return Status.False;\n }\n\n Reverse(): this\n {\n this.WriteAllObjectRecord();\n this._Clockwise = !this._Clockwise;\n [this._StartAngle, this._EndAngle] = [this._EndAngle, this._StartAngle];\n return this;\n }\n\n IntersectWith2(curve: Curve, intType: IntersectOption, tolerance = 1e-4)\n {\n if (curve instanceof Arc)\n {\n return IntersectArcAndArc(this, curve, intType);\n }\n if (curve instanceof Line)\n {\n return SwapParam(IntersectLineAndArc(curve, this, reverseIntersectOption(intType), tolerance));\n }\n if (curve instanceof Circle)\n {\n return SwapParam(IntersectCircleAndArc(curve, this, reverseIntersectOption(intType), tolerance));\n }\n if (curve instanceof Polyline)\n return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType), tolerance));\n\n if (curve instanceof Ellipse)\n return SwapParam(IntersectEllipseAndCircleOrArc(curve, this, intType));\n return [];\n }\n\n /**\n * 计算出圆弧所包含的角度\n *\n * @readonly\n * @type {number}\n * @memberof Arc\n */\n get AllAngle(): number\n {\n return this.ComputeAnlge(this._EndAngle);\n }\n\n get Bul(): number\n {\n if (equaln(this.AllAngle, Math.PI * 2))\n return 1;\n return Math.tan(this.AllAngle * 0.25) * (this.IsClockWise ? -1 : 1);\n }\n\n /**\n * 计算所包含的角度\n *\n * @private\n * @param {number} endAngle 结束的角度\n * @returns\n * @memberof Arc\n */\n ComputeAnlge(endAngle: number)\n {\n //顺时针\n if (this._Clockwise)\n {\n if (this._StartAngle > endAngle)\n return this.StartAngle - endAngle;\n else //越过0点绘制圆弧\n return (Math.PI * 2) - (endAngle - this._StartAngle);\n }\n else\n {\n if (endAngle > this._StartAngle)\n return endAngle - this._StartAngle;\n else\n return (Math.PI * 2) - (this._StartAngle - endAngle);\n }\n }\n\n /**\n * 解析两点和凸度所构成的圆弧\n *\n * @param {Vector2} p1\n * @param {Vector2} p2\n * @param {number} bul 凸度,在cad中,凸度为 <(四分之一圆心角)的正切值>\n */\n ParseFromBul(p1: Vector3 | Vector2, p2: Vector3 | Vector2, bul: number): Arc\n {\n if (p1 instanceof Vector2)\n p1 = AsVector3(p1);\n if (p2 instanceof Vector2)\n p2 = AsVector3(p2);\n\n let ocsInv = this.OCSInv;\n p1 = p1.clone().applyMatrix4(ocsInv);\n p2 = p2.clone().applyMatrix4(ocsInv);\n\n //弦向量\n let chordV = p2.clone().sub(p1);\n //弦角度\n let chordAn = angle(chordV);\n //弦长度/2\n let chordLengthHalf = chordV.length() / 2;\n\n let allAngle = Math.atan(bul) * 4;\n let HalfAngle = allAngle * 0.5;\n //半径\n this._Radius = chordLengthHalf / Math.sin(HalfAngle);\n\n //指向圆心的角度\n let toCenterAn = chordAn + Math.PI * 0.5;//弦角度转90\n\n //圆心\n let center = midPoint(p1, p2);\n polar(center, toCenterAn, this._Radius - (bul * chordLengthHalf));\n this.Center = center.clone().applyMatrix4(this.OCS);\n\n this._Radius = Math.abs(this._Radius);\n\n this._StartAngle = angle(p1.clone().sub(center));\n this._EndAngle = angle(p2.clone().sub(center));\n\n this._Clockwise = bul < 0;\n\n return this;\n }\n FromThreePoint(pt1: Vector3, pt2: Vector3, pt3: Vector3)\n {\n if (!(pt1 && pt2 && pt3))\n return;\n\n let ocsInv = this.OCSInv;\n pt1 = pt1.clone().applyMatrix4(ocsInv).setZ(0);\n pt2 = pt2.clone().applyMatrix4(ocsInv).setZ(0);\n pt3 = pt3.clone().applyMatrix4(ocsInv).setZ(0);\n\n let center = getCircleCenter(pt1, pt2, pt3);\n this.Center = center.clone().applyMatrix4(this.OCS);\n //用圆心和其中一个点求距离得到半径:\n this._Radius = center.distanceTo(pt1);\n //起始角度 端点角度\n this._StartAngle = angle(pt1.clone().sub(center));\n this._EndAngle = angle(pt3.clone().sub(center));\n //求出向量p1->p2,p1->p3\n let p1 = pt2.clone().sub(pt1);\n let p2 = pt3.clone().sub(pt1);\n\n this._Clockwise = p1.cross(p2).z < 0;\n return this;\n }\n\n /**\n * 重载: 初始化绘制实体.\n *\n * @param {RenderType} [renderType=RenderType.Wireframe]\n */\n InitDrawObject(renderType: RenderType = RenderType.Wireframe)\n {\n let geo = BufferGeometryUtils.CreateFromPts(this.Shape.getPoints(60).map(AsVector3));\n\n if (renderType === RenderType.WireframePrint)\n {\n var geometry = new LineGeometry();\n geometry.setPositions(geo.attributes.position.array as number[]);\n return new Line2(geometry, ColorMaterial.PrintLineMatrial);\n }\n\n return new TLine(geo, ColorMaterial.GetLineMaterial(this._Color));\n }\n\n //更新Geometry\n private UpdateGeometry(geo: BufferGeometry)\n {\n let pts = this.Shape.getPoints(60).map(AsVector3);\n BufferGeometryUtils.UpdatePts(geo, pts);\n }\n\n /**\n * 重载:更新绘制的实体\n *\n * @param {RenderType} type\n * @param {Object3D} obj\n * @memberof Arc\n */\n UpdateDrawObject(type: RenderType, obj: Object3D)\n {\n let geo = obj[\"geometry\"] as BufferGeometry;\n this.UpdateGeometry(geo);\n }\n\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform?: Matrix3\n ): Vector3[]\n {\n switch (snapMode)\n {\n case ObjectSnapMode.End:\n return [this.StartPoint, this.EndPoint];\n case ObjectSnapMode.Mid:\n return [this.GetPointAtParam(0.5)];\n case ObjectSnapMode.Nea:\n return getArcOrCirNearPts(this, pickPoint, viewXform)\n .filter(p => this.PtOnCurve(p));\n case ObjectSnapMode.Ext:\n return [this.GetClosestPointTo(pickPoint, true)];\n case ObjectSnapMode.Cen:\n return [this.Center];\n case ObjectSnapMode.Per:\n if (lastPoint)\n {\n if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10))\n return [];\n let l = new Line(this.Center, lastPoint);\n return l.IntersectWith(this, IntersectOption.ExtendBoth).filter(p => this.PtOnCurve(p));\n }\n case ObjectSnapMode.Tan:\n let pts = GetTanPtsOnArcOrCircle(this, lastPoint);\n if (pts)\n return pts.filter(p => this.PtOnCurve(p));\n default:\n break;\n }\n return [];\n }\n\n GetGripPoints(): Array\n {\n return [\n this.StartPoint,\n this.GetPointAtParam(0.5),\n this.EndPoint,\n this.Center.clone(),\n ];\n }\n MoveGripPoints(indexList: Array, vec: Vector3)\n {\n if (indexList.length > 0)\n {\n this.WriteAllObjectRecord();\n let ptsArr = this.GetGripPoints();\n let index = indexList[0];\n let p = ptsArr[index];\n if (p)\n {\n p.add(vec);\n if (index > 2)\n this.Center = this.Center.add(vec);\n else\n this.FromThreePoint(ptsArr[0], ptsArr[1], ptsArr[2]);\n this.Update();\n }\n }\n }\n GetStretchPoints(): Array\n {\n return [this.StartPoint, this.EndPoint];\n }\n\n MoveStretchPoints(indexList: Array, vec: Vector3)\n {\n if (indexList.length === 0)\n return;\n\n this.WriteAllObjectRecord();\n\n if (indexList.length === 2)\n this.ApplyMatrix(MoveMatrix(vec));\n else\n for (let index of indexList)\n {\n let pts = [this.StartPoint, this.EndPoint];\n let [sp, ep] = pts;\n\n let oldChordLengthHalf = sp.distanceTo(ep) * 0.5;\n\n let arcHeight = oldChordLengthHalf * this.Bul;\n\n pts[index].add(vec);\n\n let newChordLengthHalf = sp.distanceTo(ep) * 0.5;\n\n let newBul = arcHeight / newChordLengthHalf;\n\n //根据凸度构造新的弧\n this.ParseFromBul(sp, ep, newBul);\n this.Update();\n }\n }\n\n GetParamAtDist(d: number)\n {\n return d / this.Length;\n }\n GetFistDeriv(pt: number | Vector3)\n {\n let an: number;\n if (typeof pt === \"number\")\n an = this.GetAngleAtParam(pt);\n else\n an = angle(pt.clone().applyMatrix4(this.OCSInv));\n\n an += Math.PI * 0.5 * (this._Clockwise ? -1 : 1);\n\n let ocs = new Matrix4().extractRotation(this.OCS);\n return polar(new Vector3(), an, this._Radius).applyMatrix4(ocs);\n }\n GetClosestPointTo(pt: Vector3, extend: boolean): Vector3\n {\n let l = new Line(this.Center, pt);\n let inPts: Vector3[] = this.IntersectWith(l, extend ? IntersectOption.ExtendBoth : IntersectOption.ExtendArg);\n if (inPts.length < 2)\n inPts.push(this.StartPoint, this.EndPoint);\n return inPts.reduce((p1, p2) => p1.distanceToSquared(pt) < p2.distanceToSquared(pt) ? p1 : p2);\n }\n //#region -------------------------File-------------------------\n //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化\n\n //对象从文件中读取数据,初始化自身\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();\n if (ver === 1)\n {\n this.Center = new Vector3().fromArray(file.Read());\n this.Normal = new Vector3().fromArray(file.Read());\n }\n this._Radius = file.Read();\n this._StartAngle = file.Read();\n this._EndAngle = file.Read();\n this._Clockwise = file.Read();\n }\n //对象将自身数据写入到文件.\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(2);\n file.Write(this._Radius);\n file.Write(this._StartAngle);\n file.Write(this._EndAngle);\n file.Write(this._Clockwise);\n }\n //#endregion\n}\n","\r\n/**\r\n * 一个简单的计数器实现,本质是使用一个Map来保存元素的个数\r\n * \r\n * 例:\r\n * let count = new Count();\r\n * count.AddCount(\"Test\", 1);\r\n * count.GetCount(\"Test\");//现在 Test 的个数为1\r\n */\r\nexport class Count\r\n{\r\n private m_CountMap = new WeakMap();\r\n GetCount(obj: any): number\r\n {\r\n let count = this.m_CountMap.get(obj);\r\n if (!count)\r\n {\r\n this.m_CountMap.set(obj, 0);\r\n count = 0;\r\n }\r\n return count;\r\n }\r\n AddCount(obj: any, add: number)\r\n {\r\n this.m_CountMap.set(obj, this.GetCount(obj) + add);\r\n }\r\n}\r\n","import { Vector3, MathUtils } from \"three\";\r\nimport { YAxis, ZAxis, equaln } from \"./GeUtils\";\r\n\r\n/**\r\n * 轨道控制的数学类,观察向量和角度的互相转换\r\n * 当x当抬头或者低头到90度时,触发万向锁.\r\n */\r\nexport class Orbit\r\n{\r\n //抬头低头 正数抬头 负数低头\r\n private phi: number = 0;//Φ\r\n\r\n //身体旋转 0为正右边 逆时针旋转\r\n theta: number = 0;//θ\r\n\r\n get RoX()\r\n {\r\n return this.phi;\r\n }\r\n set RoX(v)\r\n {\r\n this.phi = MathUtils.clamp(v, Math.PI * -0.49, Math.PI * 0.49);\r\n }\r\n\r\n /**\r\n * 使用旋转角度 计算观察向量\r\n * @param [outDirection] 引用传入,如果传入,那么就不构造新的向量\r\n * @returns 返回观察向量\r\n */\r\n UpdateDirection(outDirection = new Vector3()): Vector3\r\n {\r\n outDirection.z = Math.sin(this.phi);\r\n //归一化专用.\r\n let d = Math.abs(Math.cos(this.phi));\r\n\r\n outDirection.x = Math.cos(this.theta) * d;\r\n outDirection.y = Math.sin(this.theta) * d;\r\n\r\n return outDirection;\r\n }\r\n\r\n /**\r\n * 使用观察向量,计算旋转角度\r\n * @param dir 这个向量会被修改成单位向量.\r\n */\r\n SetFromDirection(dir: Vector3): void\r\n {\r\n dir.normalize();\r\n this.phi = Math.asin(dir.z);\r\n if (equaln(dir.x, 0) && equaln(dir.y, 0))\r\n if (dir.z > 0)\r\n this.theta = Math.PI * -0.5;\r\n else\r\n this.theta = Math.PI * 0.5;\r\n else\r\n this.theta = Math.atan2(dir.y, dir.x);\r\n }\r\n\r\n /**\r\n * 参考任意轴坐标系算法.\r\n * http://help.autodesk.com/view/ACD/2017/CHS/?guid=GUID-E19E5B42-0CC7-4EBA-B29F-5E1D595149EE\r\n */\r\n static ComputUpDirection(n: Vector3, ay: Vector3 = new Vector3(), ax: Vector3 = new Vector3()): Vector3\r\n {\r\n n.normalize();\r\n if (Math.abs(n.x) < 0.015625 && Math.abs(n.y) < 0.015625)\r\n ax.crossVectors(YAxis, n);\r\n else\r\n ax.crossVectors(ZAxis, n);\r\n ay.crossVectors(n, ax);\r\n ax.normalize();\r\n ay.normalize();\r\n return ay;\r\n }\r\n}\r\n","import { Box3, Line3, Matrix3, Matrix4, Vec2, Vector2, Vector3 } from 'three';\nimport { Arc } from '../DatabaseServices/Entity/Arc';\nimport { Circle } from '../DatabaseServices/Entity/Circle';\nimport { Curve } from '../DatabaseServices/Entity/Curve';\nimport { Ellipse } from '../DatabaseServices/Entity/Ellipse';\nimport { Line } from '../DatabaseServices/Entity/Line';\nimport { Polyline } from '../DatabaseServices/Entity/Polyline';\nimport { IsPointInBowArc } from '../DatabaseServices/PointInPolyline';\nimport { Count } from '../Geometry/Count';\nimport { CurveMap, Vertice } from '../Geometry/CurveMap';\nimport { AsVector2, AsVector3, equaln, equalv2, equalv3, isParallelTo, XAxis, ZeroVec, isPerpendicularityTo, YAxis, isIntersect } from '../Geometry/GeUtils';\nimport { Vec3 } from '../Geometry/IVec3';\nimport { Orbit } from '../Geometry/Orbit';\nimport { PlaneExt } from '../Geometry/Plane';\nimport { IntersectOption, IntersectResult } from '../GraphicsSystem/IntersectWith';\nimport { OffsetPolyline } from '../GraphicsSystem/OffsetPolyline';\nimport { arrayLast, changeArrayStartIndex, equalArray } from './ArrayExt';\nimport { Status } from './Status';\nimport { FixIndex, LINK_FUZZ } from './Utils';\n\n//3点获取圆心\nexport function getCircleCenter(pt1: Vector3, pt2: Vector3, pt3: Vector3)\n{\n if (!(pt1 && pt2 && pt3))\n return;\n let A1 = pt1.x - pt2.x;\n let B1 = pt1.y - pt2.y;\n let C1 = (Math.pow(pt1.x, 2) - Math.pow(pt2.x, 2) + Math.pow(pt1.y, 2) - Math.pow(pt2.y, 2)) / 2;\n let A2 = pt3.x - pt2.x;\n let B2 = pt3.y - pt2.y;\n let C2 = (Math.pow(pt3.x, 2) - Math.pow(pt2.x, 2) + Math.pow(pt3.y, 2) - Math.pow(pt2.y, 2)) / 2;\n //令temp = A1*B2 - A2*B1\n let temp = A1 * B2 - A2 * B1;\n let center = new Vector3();\n //判断三点是否共线\n if (temp === 0)\n {\n //共线则将第一个点pt1作为圆心\n center.x = pt1.x;\n center.y = pt1.y;\n }\n else\n {\n //不共线则求出圆心:\n center.x = (C1 * B2 - C2 * B1) / temp;\n center.y = (A1 * C2 - A2 * C1) / temp;\n }\n\n return center;\n}\n\n// 弦长+切线获取圆心角\nexport function getCirAngleByChordAndTangent(chord: Vector3, tangentLine: Vector3)\n{\n let dir = tangentLine.clone().cross(chord).normalize();\n\n let ctAngle = chord.angleTo(tangentLine);\n\n // 圆心角\n let cirAng = Math.PI - 2 * Math.abs(ctAngle - Math.PI / 2);\n\n if (ctAngle > Math.PI / 2)\n {\n cirAng = Math.PI * 2 - cirAng;\n }\n return cirAng *= dir.z;\n}\n//行列式\nexport function getDeterminantFor2V(v1: Vector2, v2: Vector2): number\n{\n return v1.x * v2.y - v1.y * v2.x;\n}\n\nexport function getDeterminantFor3V(v1: Vector3, v2: Vector3, v3: Vector3)\n{\n let mat = new Matrix3();\n mat.set(v1.x, v1.y, v1.z, v2.x, v2.y, v2.z, v3.x, v3.y, v3.z);\n return mat.determinant();\n}\n\n/**\n * 曲线根据连接来分组,每组都是一条首尾相连的曲线表.\n *\n * @export\n * @param {Curve[]} cus 传入的分组的曲线表\n * @returns {Array>} 返回如下\n * [\n * [c1,c2,c3...],//后面的曲线的起点总是等于上一个曲线的终点\n * [c1,c2,c3...],\n * ]\n */\nexport function curveLinkGroup(cus: Curve[]): Array>\n{\n //返回的曲线组\n let groupCus = new Array>();\n\n //将封闭的曲线先提取出来\n cus = cus.filter(c =>\n {\n let isClose = c.IsClose;\n if (isClose)\n groupCus.push([c]);\n return !isClose;\n });\n if (cus.length === 0) return groupCus;\n //曲线节点图\n let cuMap = new CurveMap();\n cus.forEach(c => cuMap.AddCurveToMap(c));\n\n //曲线站点表\n let stands = cuMap.Stands;\n //曲线使用计数\n let cuCount = new Count();\n\n /**\n * 从站点的路线中任意取一条,加入到曲线数组中.\n *\n * @param {Curve[]} cus 已经连接的曲线列表\n * @param {boolean} isEndSeach true:从终点搜索,false:从起点搜索\n * @returns {Stand} 如果站点中存在可以取得的曲线,返回下个站点,否则返回undefined\n */\n function linkCurve(stand: Vertice, cus: Curve[], isEndSeach: boolean): Vertice | undefined\n {\n for (let route of stand.routes)\n {\n let cu = route.curve;\n if (cuCount.GetCount(cu) === 0)\n {\n if (isEndSeach)\n {\n //保证曲线总是从起点连接到终点\n if (!equalv3(cu.StartPoint, stand.position))\n cu.Reverse();\n cus.push(cu);\n }\n else\n {\n //保证曲线总是从起点连接到终点\n if (!equalv3(cu.EndPoint, stand.position))\n cu.Reverse();\n cus.unshift(cu);\n }\n\n cuCount.AddCount(cu, 1);\n return route.to;\n }\n }\n }\n\n for (let stand of stands)\n {\n let startStand = stand;\n let cus: Curve[] = []; //形成合并轮廓的曲线组\n while (startStand)\n startStand = linkCurve(startStand, cus, true);\n\n if (cus.length > 0)\n {\n startStand = cuMap.GetOnlyVertice(cus[0].StartPoint);\n while (startStand)\n startStand = linkCurve(startStand, cus, false);\n }\n\n if (cus.length > 0)\n groupCus.push(cus);\n }\n\n return groupCus;\n}\n\nexport function equalCurve(cu1: Curve, cu2: Curve, tolerance = 1e-4)\n{\n if ((cu1 instanceof Polyline) && (cu2 instanceof Polyline))\n {\n if (cu1.IsClose !== cu2.IsClose || !isParallelTo(cu1.Normal, cu2.Normal))\n return false;\n\n let area1 = cu1.Area2;\n let area2 = cu2.Area2;\n\n if (!equaln(Math.abs(area1), Math.abs(area2), 0.1))\n return false;\n\n let ptsBuls1 = cu1.PtsBuls;\n let ptsBuls2 = cu2.PtsBuls;\n\n let pts1 = ptsBuls1.pts;\n let pts2 = ptsBuls2.pts;\n let buls1 = ptsBuls1.buls;\n let buls2 = ptsBuls2.buls;\n\n let isEqualArea = equaln(area1, area2, 0.1);\n if (!equalv3(cu1.Normal, cu2.Normal))\n {\n if (isEqualArea)\n {\n pts2.reverse();\n buls2.reverse();\n buls2.push(buls2.shift());\n }\n else\n buls2 = buls2.map(bul => -bul);\n }\n else if (!isEqualArea)\n {\n pts2.reverse();\n buls2.reverse();\n buls2 = buls2.map(bul => -bul);\n buls2.push(buls2.shift());\n }\n\n if (cu1.IsClose && equalv2(pts1[0], arrayLast(pts1), tolerance))\n {\n pts1.pop();\n buls1.pop();\n }\n if (cu2.IsClose && equalv2(pts2[0], arrayLast(pts2), tolerance))\n {\n pts2.pop();\n buls2.pop();\n }\n\n let cu1Sp = AsVector2(cu1.StartPoint.applyMatrix4(cu2.OCSInv));\n\n let index = pts2.findIndex(p => equalv2(cu1Sp, p, tolerance));\n changeArrayStartIndex(buls2, index);\n changeArrayStartIndex(pts2, index);\n\n return equalArray(buls1, buls2, equaln) &&\n equalArray(pts1, pts2, (p1: Vector2, p2: Vector2) =>\n equalv3(\n AsVector3(p1).applyMatrix4(cu1.OCS),\n AsVector3(p2).applyMatrix4(cu2.OCS),\n tolerance\n )\n );\n }\n else if (cu1 instanceof Circle && cu2 instanceof Circle)\n {\n return equalv3(cu1.Center, cu2.Center) && equaln(cu1.Radius, cu2.Radius, 1e-6);\n }\n else if (cu1 instanceof Arc && cu2 instanceof Arc)\n {\n if (!equalv3(cu1.StartPoint, cu2.EndPoint)) cu1.Reverse();\n return equalv3(cu1.Center, cu2.Center)\n && equaln(cu1.Radius, cu2.Radius, 1e-6)\n && equaln(cu1.StartAngle, cu2.StartAngle)\n && equaln(cu1.EndAngle, cu2.EndAngle);\n }\n else if (cu1 instanceof Ellipse && cu2 instanceof Ellipse)\n {\n return equalv3(cu1.Center, cu2.Center)\n && equaln(cu1.RadX, cu2.RadX)\n && equaln(cu1.RadY, cu2.RadY)\n && equalv3(cu1.StartPoint, cu2.StartPoint);\n }\n else if (cu1 instanceof Line && cu2 instanceof Line)\n {\n let ps1 = [cu1.StartPoint, cu1.EndPoint];\n let ps2 = [cu2.StartPoint, cu2.EndPoint];\n return ps1.every(p => ps2.some(p1 => equalv3(p1, p)));\n }\n return false;\n}\n\n/**\n* 计算点在曲线前进方向的方位,左边或者右边\n*\n* @param {Curve} cu\n* @param {Vector3} pt\n* @returns {boolean} 左边为-1,右边为1\n*/\nexport function GetPointAtCurveDir(cu: Curve, pt: Vector3): number\n{\n if (cu instanceof Circle)\n return cu.PtInCurve(pt) ? -1 : 1;\n else if (cu instanceof Polyline)\n {\n let u = new OffsetPolyline(cu, 1);\n u.InitSubCurves();\n return u.GetPointAtCurveDir(pt.clone().applyMatrix4(cu.OCSInv).setZ(0));\n }\n //最近点\n let cp = cu.GetClosestPointTo(pt, false);\n if (equalv3(cp, pt, 1e-6)) return 0;\n //最近点参数\n let cparam = cu.GetParamAtPoint(cp);\n let dri = cu.GetFistDeriv(cparam);\n let cross = dri.cross(pt.clone().sub(cp)).applyMatrix4(cu.OCSInv);\n return -Math.sign(cross.z);\n}\n\n/**\n * 点在多段线的某个索引的圆弧(弓形)内\n *\n * @param {Polyline} pl\n * @param {number} index\n * @param {Vector3} pt\n * @returns {number}\n */\nfunction PointInPolylineArc(pl: Polyline, index: number, pt: Vector3): number\n{\n let bul = pl.GetBuilgeAt(index);\n if (equaln(bul, 0, 1e-8)) return 0;\n\n let arc = pl.GetCurveAtIndex(index) as Arc;\n\n if (IsPointInBowArc(arc, pt, true))\n return Math.sign(bul);\n\n return 0;\n}\n\nexport function ConverCircleToPolyline(cir: Circle): Polyline\n{\n //该写法不支持三维坐标系\n // let pl = new Polyline();\n // let bul = Math.tan(Math.PI * 0.125);\n // for (let i = 0; i < 4; i++)\n // {\n // let p = cir.GetPointAtParam(i * 0.25);\n // pl.AddVertexAt(i, Vec3DTo2D(p));\n // pl.SetBulgeAt(i, bul);\n // }\n // pl.CloseMark = true;\n // return pl;\n\n let arcs = cir.GetSplitCurves([0, 0.5]);\n let pl = new Polyline();\n pl.OCS = cir.OCS;\n pl.Join(arcs[0]);\n pl.Join(arcs[1]);\n return pl;\n}\n\nexport function GetTanPtsOnArcOrCircle(cu: Arc | Circle, lastPoint?: Vector3)\n{\n if (lastPoint)\n {\n //ref:wykobi\n let ocsInv = cu.OCSInv;\n let v = lastPoint.clone().applyMatrix4(ocsInv);\n\n let lengthSq = v.lengthSq();\n let radiusSq = cu.Radius ** 2;\n\n if (lengthSq >= radiusSq)\n {\n let ratio = 1 / lengthSq;\n let deltaDist = Math.sqrt(lengthSq - radiusSq);\n\n let pts = [\n new Vector3(\n cu.Radius * (cu.Radius * v.x - v.y * deltaDist) * ratio,\n cu.Radius * (cu.Radius * v.y + v.x * deltaDist) * ratio,\n ),\n new Vector3(\n cu.Radius * (cu.Radius * v.x + v.y * deltaDist) * ratio,\n cu.Radius * (cu.Radius * v.y - v.x * deltaDist) * ratio,\n ),\n ];\n for (let p of pts)\n p.applyMatrix4(cu.OCS);\n return pts;\n }\n }\n}\n\nexport function CircleInternalTangentLines(cir0: Circle, cir1: Circle): Line[]\n{\n let c0 = new Vector3();\n let c1 = cir1.Center.applyMatrix4(cir0.OCSInv);\n\n let dist = c0.distanceTo(c1);\n\n if (dist - (cir0.Radius + cir1.Radius) < 0)\n return [];\n else if (equaln(dist - (cir0.Radius + cir1.Radius), 0))\n return [];\n else\n {\n let m = cir0.Radius / cir1.Radius;\n let h0 = (m * dist) / (m + 1);\n let h1 = dist / (m + 1);\n\n let i = new Vector3(\n (h1 * c0.x + h0 * c1.x) / dist,\n (h1 * c0.y + h0 * c1.y) / dist\n ).applyMatrix4(cir0.OCS);\n\n let [c0p0, c0p1] = GetTanPtsOnArcOrCircle(cir0, i);\n let [c1p0, c1p1] = GetTanPtsOnArcOrCircle(cir1, i);\n\n return [\n new Line(c0p0, c1p0),\n new Line(c0p1, c1p1),\n ];\n }\n}\n\nexport function CircleOuterTangentLines(circle0: Circle, circle1: Circle): Line[]\n{\n let c0 = circle0.Center;\n let c1 = circle1.Center;\n\n let dist = c0.distanceTo(c1);\n\n let rd = Math.abs(circle0.Radius - circle1.Radius);\n if (dist < rd)\n return [];\n else if (equaln(Math.abs(dist - rd), 0))\n return [];\n else if (equaln(circle0.Radius, circle1.Radius))\n {\n let cp = circle0.GetClosestPointTo(c1, true);\n let derv = circle0.GetFistDeriv(cp).multiplyScalar(circle0.Radius);\n let dervn = derv.clone().negate();\n\n let c0p0 = c0.clone().add(derv);\n let c0p1 = c0.clone().add(dervn);\n\n let c1p0 = c1.clone().add(derv);\n let c1p1 = c1.clone().add(dervn);\n\n return [\n new Line(c0p0, c1p0),\n new Line(c0p1, c1p1),\n ];\n }\n else\n {\n let c0 = new Vector3();\n let c1 = circle1.Center.applyMatrix4(circle0.OCSInv);\n\n let p: Vector3;\n if (circle0.Radius > circle1.Radius)\n p = new Vector3(\n c1.x * circle0.Radius - c0.x * circle1.Radius,\n c1.y * circle0.Radius - c0.y * circle1.Radius\n );\n else\n p = new Vector3(\n c0.x * circle1.Radius - c1.x * circle0.Radius,\n c0.y * circle1.Radius - c1.y * circle0.Radius\n );\n\n let diff = Math.abs(circle0.Radius - circle1.Radius);\n\n p.x /= diff;\n p.y /= diff;\n\n p.applyMatrix4(circle0.OCS);\n\n let [c0p0, c0p1] = GetTanPtsOnArcOrCircle(circle0, p);\n let [c1p0, c1p1] = GetTanPtsOnArcOrCircle(circle1, p);\n\n return [\n new Line(c0p0, c1p0),\n new Line(c0p1, c1p1),\n ];\n }\n}\n\nexport function getArcOrCirNearPts(cu: Circle | Arc | Ellipse, pickPoint: Vector3, viewXform: Matrix3)\n{\n let viewNormal = new Vector3().fromArray(viewXform.elements, 2 * 3);\n\n let plane = new PlaneExt(cu.Normal, cu.Center);\n\n let pickLocal = plane.intersectLine(new Line3(pickPoint, pickPoint.clone().add(viewNormal)), new Vector3(), true);\n\n if (pickLocal)\n {\n let x = new Vector3().fromArray(viewXform.elements, 0).add(pickLocal);\n let y = new Vector3().fromArray(viewXform.elements, 3).add(pickLocal);\n\n x = plane.intersectLine(new Line3(x, x.clone().add(viewNormal)), new Vector3(), true);\n y = plane.intersectLine(new Line3(y, y.clone().add(viewNormal)), new Vector3(), true);\n\n let lx = new Line(pickLocal, x);\n let ly = new Line(pickLocal, y);\n\n let ins = cu.IntersectWith(lx, IntersectOption.ExtendBoth);\n ins.push(...cu.IntersectWith(ly, IntersectOption.ExtendBoth));\n return ins;\n }\n else\n {\n let ptLocal = plane.projectPoint(pickPoint, new Vector3());\n let lz = new Line(ptLocal, ptLocal.clone().add(viewNormal));\n return cu.IntersectWith(lz, IntersectOption.ExtendBoth);\n }\n}\n\nexport function getTanPtsOnEllipse(cu: Ellipse, lastPoint: Vector3)\n{\n return [];\n}\n\nexport interface IRectInfo\n{\n isRect: boolean;\n size?: Vector3;\n box?: Box3;\n OCS?: Matrix4;\n}\n\nexport function IsRect(cu: Curve): IRectInfo\n{\n if (cu instanceof Polyline)\n {\n if (!cu.IsClose) return { isRect: false };\n\n let pts = cu.GetStretchPoints();\n\n if (pts.length < 4) return { isRect: false };\n\n let xVec: Vector3;\n let p1 = pts[0];\n for (let i = 1; i < pts.length; i++)\n {\n xVec = pts[i].clone().sub(p1).normalize();\n if (!equalv3(xVec, ZeroVec))\n break;\n }\n\n if (!xVec) return { isRect: false };\n\n let zVec = cu.Normal;\n let yVec = zVec.clone().cross(xVec).normalize();\n\n let rectOCS = new Matrix4().makeBasis(xVec, yVec, zVec);\n let rectOCSInv = new Matrix4().getInverse(rectOCS);\n\n for (let p of pts)\n p.applyMatrix4(rectOCSInv);\n\n let box = new Box3().setFromPoints(pts);\n\n let size = box.getSize(new Vector3);\n if (equaln(size.x * size.y, cu.Area, 0.1))\n {\n return {\n isRect: true,\n size,\n box,\n OCS: rectOCS,\n };\n }\n }\n return { isRect: false };\n}\n\n/**用4个矩形点构造矩形 */\nexport function getRectFrom4Pts(pts: Vector3[])\n{\n if (pts.length !== 4) return;\n let p = pts.shift();\n pts.sort((p1, p2) => p.distanceTo(p1) - p.distanceTo(p2));\n pts.splice(1, 0, p);\n let lineData = pts.map(p =>\n {\n return {\n pt: new Vector2(p.x, p.y),\n bul: 0\n };\n });\n let l = new Polyline(lineData);\n l.CloseMark = true;\n return l;\n}\n\nexport function MergeCurvelist(cus: Curve[])\n{\n for (let i = 0; i < cus.length; i++)\n {\n let c1 = cus[i];\n let nextI = FixIndex(i + 1, cus);\n let c2 = cus[nextI];\n\n\n let status = equaln(c2.Length, 0, LINK_FUZZ) ? Status.True : c1.Join(c2, false, LINK_FUZZ);\n if (status === Status.True)\n {\n cus.splice(nextI, 1);\n i--;\n }\n else if (status === Status.ConverToCircle)\n {\n cus.length = 0;\n let a = c1 as Arc;\n cus.push(new Circle(a.Center, a.Radius));\n break;\n }\n }\n return cus;\n}\n\nexport function SwapParam(res: IntersectResult[]): IntersectResult[]\n{\n for (let r of res)\n [r.thisParam, r.argParam] = [r.argParam, r.thisParam];\n return res;\n}\n\nexport function ComputerCurvesNormalOCS(curves: Curve[], allowAutoCalc: boolean = true): Matrix4 | undefined\n{\n if (!curves || curves.length === 0) return;\n\n //准备计算多段线的法向量\n let normal: Vector3;\n let firstV: Vector3;\n for (let c of curves)\n {\n if (c instanceof Arc)\n {\n normal = c.Normal;\n break;\n }\n else if (firstV)\n {\n let v = c.GetFistDeriv(0);\n v.cross(firstV);\n if (!equalv3(v, ZeroVec))\n {\n normal = v.normalize();\n break;\n }\n }\n else\n {\n let cus = c.Explode() as Curve[];\n let ocs = ComputerCurvesNormalOCS(cus, false);\n if (ocs)\n return ocs;\n let fv = c.GetFistDeriv(0);\n if (fv && !equalv3(fv, ZeroVec, 1e-5))\n firstV = fv;\n }\n }\n\n if (!normal && !allowAutoCalc) return;\n\n let x = new Vector3();\n let y = new Vector3();\n if (!normal)\n {\n if (!firstV)\n return curves[0].OCS;\n\n normal = firstV.normalize();\n Orbit.ComputUpDirection(normal, y, x);\n [x, y, normal] = [normal, x, y];\n }\n else\n {\n if (equalv3(normal, curves[0].Normal.negate()))\n normal.negate();\n Orbit.ComputUpDirection(normal, y, x);\n }\n return new Matrix4().makeBasis(x, y, normal).setPosition(curves[0].StartPoint);\n}\n\n\nexport function Pts2Polyline(pts: (Vec3 | Vec2)[], isClose: boolean): Polyline\n{\n let pl = new Polyline();\n for (let i = 0; i < pts.length; i += 2)\n {\n let p1 = AsVector3(pts[i]);\n let arc: Arc | Line;\n let p2: Vector3;\n let p3: Vector3;\n\n if (isClose)\n {\n p2 = AsVector3(pts[FixIndex(i + 1, pts.length)]);\n p3 = AsVector3(pts[FixIndex(i + 2, pts.length)]);\n }\n else\n {\n if (i >= pts.length - 2) break;\n p2 = AsVector3(pts[i + 1]);\n p3 = AsVector3(pts[i + 2]);\n }\n let v1 = p1.clone().sub(p2);\n let v2 = p2.clone().sub(p3);\n\n if (equaln(v1.angleTo(v2), 0))\n arc = new Line(p1, p3);\n else\n arc = new Arc().FromThreePoint(p1, p2, p3);\n pl.Join(arc);\n }\n return pl;\n}\n\n/**获取矩形信息 */\nexport function GetRectData(cu: Curve): { isRect: boolean, size?: Vector3, box?: Box3, OCS?: Matrix4; }\n{\n if (cu instanceof Polyline)\n {\n if (!cu.IsClose) return { isRect: false };\n\n let pts = cu.GetStretchPoints();\n if (cu.Area2 < 0)\n pts.reverse();\n\n if (equalv3(pts[0], arrayLast(pts)))\n pts.pop();\n\n if (pts.length < 4) return { isRect: false };\n\n let xVec: Vector3;\n let p1 = pts[0];\n\n let originIndex = 0;\n\n for (let i = 1; i < pts.length; i++)\n {\n if (pts[i].y < p1.y)\n {\n p1 = pts[i];\n originIndex = i;\n }\n else if (equaln(pts[i].y, p1.y))\n {\n if (pts[i].x < p1.x)\n {\n p1 = pts[i];\n originIndex = i;\n }\n }\n }\n\n let tempPts = pts.splice(0, originIndex);\n pts.push(...tempPts);\n\n p1 = pts[0];\n\n\n for (let i = 1; i < pts.length; i++)\n {\n let v = pts[i].clone().sub(p1);\n if (equalv3(v, ZeroVec))\n continue;\n if (!xVec)\n xVec = v;\n else\n {\n if (isParallelTo(v, xVec))\n xVec.copy(v);\n else\n break;\n }\n }\n\n let yVec: Vector3;\n\n for (let i = pts.length - 1; i > 0; i--)\n {\n let v = pts[i].clone().sub(p1);\n if (equalv3(v, ZeroVec))\n continue;\n if (!yVec)\n yVec = v;\n else\n {\n if (isParallelTo(v, yVec))\n yVec.copy(v);\n else\n break;\n }\n }\n\n if (!xVec || !yVec) return { isRect: false };\n\n //2向量必须垂直\n if (!isPerpendicularityTo(xVec.clone().normalize(), yVec.clone().normalize()))\n return { isRect: false };\n\n if (yVec.length() > xVec.length())\n [xVec, yVec] = [yVec.negate(), xVec];\n\n if (xVec.angleTo(XAxis) > Math.PI / 4)\n [xVec, yVec] = [yVec.negate(), xVec];\n\n\n let rectOCS = new Matrix4().makeBasis(xVec.normalize(), yVec.normalize(), xVec.clone().cross(yVec));\n let rectOCSInv = new Matrix4().getInverse(rectOCS);\n\n for (let p of pts)\n p.applyMatrix4(rectOCSInv);\n\n let box = new Box3().setFromPoints(pts);\n\n let size = box.getSize(new Vector3);\n if (equaln(size.x * size.y, cu.Area, 0.1))\n {\n return {\n isRect: true,\n size,\n box,\n OCS: rectOCS,\n };\n }\n }\n return { isRect: false };\n}\n\nconst PolylineSpliteRectFuzz = 1e-3;\n/**封闭多段线 分割成矩形 */\nexport function PolylineSpliteRect(outline: Polyline): Polyline[]\n{\n if (!outline.IsClose || IsRect(outline).isRect)\n return [outline];\n\n let firstDerv = outline.GetFistDeriv(0).normalize();\n if (!isParallelTo(firstDerv, XAxis, PolylineSpliteRectFuzz) && !isParallelTo(firstDerv, YAxis, PolylineSpliteRectFuzz)) return [outline];\n\n let cus = outline.Explode();\n let yCus: Curve[] = [];\n\n for (let c of cus)\n {\n if (c instanceof Arc) return [outline];\n let derv = c.GetFistDeriv(0).normalize();\n if (isParallelTo(derv, YAxis, PolylineSpliteRectFuzz))\n yCus.push(c);\n else\n if (!isParallelTo(derv, XAxis, PolylineSpliteRectFuzz))\n {\n return [outline];\n }\n }\n\n yCus.sort((c1, c2) => c1.StartPoint.x - c2.StartPoint.x);\n\n\n let rects: Polyline[] = [];\n\n for (let i = 0; i < yCus.length - 1; i++)\n {\n let c1 = yCus[i];\n let c2 = yCus[i + 1];\n\n let x1 = c1.StartPoint.x;\n let x2 = c2.StartPoint.x;\n if (equaln(x1, x2))\n continue;\n\n let y1: number;\n let y2: number;\n\n let res = c1.IntersectWith2(outline, IntersectOption.ExtendThis);\n\n let res2 = c2.IntersectWith2(outline, IntersectOption.ExtendThis);\n let pars = [...res.map(r => Math.floor(r.argParam)), ...res2.map(r => Math.floor(r.argParam))];\n pars = [...new Set(pars)];\n pars.sort((a, b) => a - b);\n\n let ys: number[] = [];\n for (let par of pars)\n {\n let c = outline.GetCurveAtParam(par);\n let derv = c.GetFistDeriv(0).normalize();\n if (isParallelTo(derv, XAxis, PolylineSpliteRectFuzz))\n {\n let x3 = c.StartPoint.x;\n let x4 = c.EndPoint.x;\n if (x3 > x4)\n [x3, x4] = [x4, x3];\n if (isIntersect(x1, x2, x3, x4, -PolylineSpliteRectFuzz))\n ys.push(c.StartPoint.y);\n }\n }\n\n if (ys.length < 2) return [outline];\n\n ys.sort((a, b) => a - b);\n\n y1 = ys[0];\n y2 = arrayLast(ys);\n\n rects.push(new Polyline().RectangleFrom2Pt(new Vector3(x1, y1), new Vector3(x2, y2)));\n }\n\n return rects;\n\n}\n","import { BufferGeometry, EllipseCurve, Line as TLine, Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three';\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\nimport { arrayLast, arrayRemoveDuplicateBySort } from '../../Common/ArrayExt';\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { getArcOrCirNearPts, GetTanPtsOnArcOrCircle } from '../../Common/CurveUtils';\nimport { reviseMirrorMatrix } from '../../Common/Matrix4Utils';\nimport { clamp } from '../../Common/Utils';\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\nimport { Box3Ext } from '../../Geometry/Box';\nimport { BufferGeometryUtils } from '../../Geometry/BufferGeometryUtils';\nimport { angle, AsVector3, equaln, MoveMatrix, polar } from '../../Geometry/GeUtils';\nimport { IntersectCircleAndArc, IntersectCircleAndCircle, IntersectEllipseAndCircleOrArc, IntersectLineAndCircle, IntersectOption, IntersectPolylineAndCurve, reverseIntersectOption } from '../../GraphicsSystem/IntersectWith';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { Factory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { Shape2 } from '../Shape2';\nimport { SwapParam } from './../../Common/CurveUtils';\nimport { Arc } from './Arc';\nimport { Curve } from './Curve';\nimport { DragPointType } from './DragPointType';\nimport { Ellipse } from './Ellipse';\nimport { Line } from './Line';\nimport { Polyline } from './Polyline';\n\nlet circleGeometry: BufferGeometry;\nfunction GetCircleGeometry()\n{\n if (!circleGeometry)\n circleGeometry = BufferGeometryUtils.CreateFromPts(\n new EllipseCurve(0, 0, 1, 1, 0, 2 * Math.PI, false, 0).getPoints(360).map(AsVector3)\n );\n return circleGeometry;\n}\n\n@Factory\nexport class Circle extends Curve\n{\n constructor(center?: Vector3, radius: number = 1e-6)\n {\n super();\n center && this._Matrix.setPosition(center);\n this._Radius = radius;\n }\n private _Radius: number;\n\n get Shape()\n {\n let sp = new Shape2();\n sp.ellipse(0, 0, this._Radius, this._Radius, 0, 2 * Math.PI, false, 0);\n return sp;\n }\n\n get Center()\n {\n return new Vector3().setFromMatrixPosition(this._Matrix);\n }\n set Center(v: Vector3)\n {\n this.WriteAllObjectRecord();\n this._Matrix.setPosition(v);\n this.Update();\n }\n get Radius()\n {\n return this._Radius;\n }\n set Radius(v: number)\n {\n this.WriteAllObjectRecord();\n this._Radius = clamp(v, 1e-9, 1e19);\n this.Update();\n }\n\n protected ApplyScaleMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n this.Center = this.Center.applyMatrix4(m);\n this.Radius = this.Radius * m.getMaxScaleOnAxis();\n return this;\n }\n protected ApplyMirrorMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n\n reviseMirrorMatrix(this._Matrix);\n\n return this;\n }\n\n //******************** Curve function start*****************//\n\n get StartPoint(): Vector3\n {\n return this.GetPointAtParam(0);\n }\n get StartParam(): number\n {\n return 0;\n }\n get EndPoint(): Vector3\n {\n return this.GetPointAtParam(0);\n }\n get EndParam(): number\n {\n return 1;\n }\n PtInCurve(pt: Vector3)\n {\n return pt.distanceToSquared(this.Center) < Math.pow(this.Radius, 2);\n }\n get Area()\n {\n return Math.PI * this._Radius ** 2;\n }\n get Area2()\n {\n return Math.PI * this._Radius ** 2;\n }\n get Length()\n {\n return Math.PI * 2 * this._Radius;\n }\n\n get IsClose(): boolean\n {\n return true;\n }\n\n //曲线为顺时针\n get IsClockWise(): boolean { return false; }\n\n GetPointAtParam(param: number)\n {\n return (polar(new Vector3(), param * 2 * Math.PI, this._Radius) as Vector3).applyMatrix4(this._Matrix);\n }\n\n GetPointAtDistance(distance: number)\n {\n let param = distance / (Math.PI * 2 * this._Radius);\n return this.GetPointAtParam(param);\n }\n\n GetDistAtParam(param: number)\n {\n return Math.PI * 2 * this._Radius * param;\n }\n\n GetDistAtPoint(pt: Vector3)\n {\n let param = this.GetParamAtPoint(pt);\n return this.GetDistAtParam(param);\n }\n\n GetParamAtDist(d: number)\n {\n return d / (Math.PI * 2 * this._Radius);\n }\n\n GetSplitCurves(param: number[] | number)\n {\n let params: number[];\n if (param instanceof Array)\n {\n params = param.filter(p => this.ParamOnCurve(p));\n params.sort((a1, a2) => a2 - a1);//从大到小\n arrayRemoveDuplicateBySort(params);\n if (params.length < 2) return [];\n }\n else //圆不能被单个参数切割\n return [];\n\n //补上最后一个到第一个的弧\n params.unshift(arrayLast(params));\n\n let anglelist = params.map(param => Math.PI * 2 * param);\n\n let curvelist = new Array();\n for (let i = 0; i < anglelist.length - 1; i++)\n {\n let sa = anglelist[i];\n let ea = anglelist[i + 1];\n if (!equaln(sa, ea, 1e-6))\n {\n let arc = new Arc(new Vector3(), this._Radius, ea, sa, false);\n arc.ColorIndex = this.ColorIndex;\n arc.ApplyMatrix(this.OCS);\n curvelist.push(arc);\n }\n }\n return curvelist;\n }\n\n GetParamAtPoint(pt?: Vector3)\n {\n if (!this.PtOnCurve(pt))\n return NaN;\n return angle(pt.clone().applyMatrix4(this.OCSInv)) / (Math.PI * 2);\n }\n\n PtOnCurve(pt: Vector3)\n {\n return equaln(pt.distanceToSquared(this.Center), this._Radius * this._Radius, 1e-5);\n }\n GetOffsetCurves(offsetDist: number): Curve[]\n {\n if ((offsetDist + this._Radius) > 0)\n {\n let circle = this.Clone();\n circle.Radius = this._Radius + offsetDist;\n return [circle];\n }\n return [];\n }\n\n IntersectWith2(curve: Curve, intType: IntersectOption)\n {\n if (curve instanceof Arc)\n {\n return IntersectCircleAndArc(this, curve, intType);\n }\n if (curve instanceof Line)\n {\n return SwapParam(IntersectLineAndCircle(curve, this, reverseIntersectOption(intType)));\n }\n if (curve instanceof Circle)\n {\n return IntersectCircleAndCircle(this, curve);\n }\n if (curve instanceof Ellipse)\n {\n return SwapParam(IntersectEllipseAndCircleOrArc(curve, this, intType));\n }\n if (curve instanceof Polyline)\n return SwapParam(IntersectPolylineAndCurve(curve, this, reverseIntersectOption(intType)));\n return [];\n }\n //******************** Curve function end*****************//\n\n get BoundingBox(): Box3Ext\n {\n return new Box3Ext().setFromPoints(this.GetGripPoints());\n }\n\n InitDrawObject(renderType: RenderType = RenderType.Wireframe)\n {\n let obj = new Object3D();\n let cirGeo = GetCircleGeometry();\n if (renderType === RenderType.WireframePrint)\n {\n let geometry = new LineGeometry().setPositions(cirGeo.attributes.position.array as number[]);\n obj.add(new Line2(geometry, ColorMaterial.PrintLineMatrial));\n }\n else\n {\n let line = new TLine(cirGeo, ColorMaterial.GetLineMaterial(this._Color));\n obj.add(line);\n }\n\n this.UpdateDrawObject(renderType, obj);\n return obj;\n }\n UpdateDrawObject(type: RenderType, obj: Object3D)\n {\n obj.children[0].scale.set(this._Radius, this._Radius, this._Radius);\n obj.children[0].updateMatrix();\n }\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material: Material)\n {\n if (type === RenderType.WireframePrint)\n {\n //TODO:打印线需要其他颜色?\n }\n else\n {\n let m = obj.children[0] as TLine;\n m.material = material ? material : ColorMaterial.GetLineMaterial(this._Color);\n return obj;\n }\n\n }\n\n GetDragPointCount(drag: DragPointType): number\n {\n if (drag === DragPointType.Grip)\n return 5;\n else\n return 1;\n }\n\n GetGripPoints(): Array\n {\n let pts = [\n new Vector3(),\n new Vector3(0, this._Radius),\n new Vector3(0, -this._Radius),\n new Vector3(-this._Radius, 0),\n new Vector3(this._Radius, 0),\n ];\n\n let ocs = this.OCS;\n pts.forEach(p => p.applyMatrix4(ocs));\n return pts;\n }\n\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform?: Matrix3\n ): Vector3[]\n {\n switch (snapMode)\n {\n case ObjectSnapMode.Nea:\n {\n return getArcOrCirNearPts(this, pickPoint, viewXform);\n }\n case ObjectSnapMode.Cen:\n return [this.Center];\n case ObjectSnapMode.Per:\n if (lastPoint)\n {\n if (equaln(lastPoint.distanceToSquared(this.Center), 0, 1e-10))\n return [];\n let l = new Line(this.Center, lastPoint);\n return l.IntersectWith(this, IntersectOption.ExtendBoth);\n }\n case ObjectSnapMode.Tan:\n let pts = GetTanPtsOnArcOrCircle(this, lastPoint);\n if (pts)\n return pts;\n case ObjectSnapMode.End:\n {\n let pts = this.GetGripPoints();\n pts.shift();\n return pts;\n }\n default:\n break;\n }\n return [];\n }\n MoveGripPoints(indexList: Array, vec: Vector3)\n {\n\n let pts = this.GetGripPoints();\n if (indexList.length > 0)\n {\n let index = indexList[0];\n let p = pts[index];\n if (p)\n {\n if (index > 0)\n {\n p.add(vec);\n this.Radius = p.distanceTo(this.Center);\n }\n else\n {\n this.Center = this.Center.add(vec);\n }\n }\n }\n }\n GetStretchPoints(): Array\n {\n let pts = [new Vector3()];\n let ocs = this.OCS;\n pts.forEach(p => p.applyMatrix4(ocs));\n return pts;\n }\n MoveStretchPoints(indexList: Array, vec: Vector3)\n {\n if (indexList.length > 0)\n {\n let mat = MoveMatrix(vec);\n this.ApplyMatrix(mat);\n }\n }\n GetFistDeriv(pt: number | Vector3)\n {\n if (typeof pt === \"number\")\n pt = this.GetPointAtParam(pt);\n else\n pt = pt.clone();\n\n pt.applyMatrix4(this.OCSInv);\n\n let an = angle(pt) + Math.PI * 0.5;\n\n return polar(new Vector3(), an, 1).applyMatrix4(new Matrix4().extractRotation(this.OCS));\n }\n GetClosestPointTo(pt: Vector3, extend: boolean): Vector3\n {\n pt = pt.clone().applyMatrix4(this.OCSInv).setZ(0).applyMatrix4(this.OCS);\n if (equaln(pt.distanceToSquared(this.Center), 0, 1e-10))\n return this.GetPointAtParam(0);\n let l = new Line(this.Center, pt);\n let pts = l.IntersectWith(this, IntersectOption.ExtendBoth);\n pts.sort((p1, p2) =>\n {\n return p1.distanceToSquared(pt) - p2.distanceToSquared(pt);\n });\n return pts[0];\n }\n //#region -------------------------File-------------------------\n //对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化\n\n //对象从文件中读取数据,初始化自身\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();\n this._Radius = file.Read();\n }\n //对象将自身数据写入到文件.\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(1);\n file.Write(this._Radius);\n }\n //#endregion\n}\n","\r\ntype LogFunction = (message?: any, ...optionalParams: any[]) => void;\r\n\r\nexport const _LogInjectFunctions: LogFunction[] = [];\r\n\r\nexport function Log(message?: any, ...optionalParams: any[]): void\r\n{\r\n for (let f of _LogInjectFunctions)\r\n f(message, ...optionalParams);\r\n}\r\n\r\nexport const LogEnable = {\r\n Display: false\r\n};\r\n","import { Matrix4, Vector3 } from \"three\";\r\n\r\nlet x = new Vector3();\r\nlet y = new Vector3();\r\nlet z = new Vector3();\r\nexport function IsMirror(mtx: Matrix4): boolean\r\n{\r\n mtx.extractBasis(x, y, z);\r\n // for a true orthogonal, non-mirrored base, u.cross(v) == w\r\n // If they have an opposite direction then we are mirroring\r\n const mirrorvalue = x.cross(y).dot(z);\r\n const ismirror = (mirrorvalue < 0);\r\n return ismirror;\r\n}\r\n","export const _CSGDEBUG = false;\r\n\r\n/** Epsilon used during determination of near zero distances.\r\n * @default\r\n */\r\nexport const EPS = 1e-5;\r\n\r\n// Tag factory: we can request a unique tag through CSG.getTag()\r\nexport let staticTag = 1;\r\nexport const getTag = () => staticTag++;\r\n","import { Vector3 } from \"three\";\r\n/** Class Vector3D\r\n * Represents a 3D vector with X, Y, Z coordinates.\r\n */\r\nexport class Vector3D extends Vector3\r\n{\r\n clone()\r\n {\r\n return new Vector3D(this.x, this.y, this.z) as this;\r\n }\r\n // find a vector that is somewhat perpendicular to this one\r\n randomNonParallelVector()\r\n {\r\n let x = Math.abs(this.x);\r\n let y = Math.abs(this.y);\r\n let z = Math.abs(this.z);\r\n\r\n if (x <= y && x <= z)\r\n return new Vector3D(1, 0, 0);\r\n else if (y <= x && y <= z)\r\n return new Vector3D(0, 1, 0);\r\n else\r\n return new Vector3D(0, 0, 1);\r\n }\r\n\r\n toString()\r\n {\r\n return (\r\n \"(\" +\r\n this.x.toFixed(5) +\r\n \", \" +\r\n this.y.toFixed(5) +\r\n \", \" +\r\n this.z.toFixed(5) +\r\n \")\"\r\n );\r\n }\r\n}\r\n","import { Vector3D } from \"./Vector3\";\r\nimport { Vector2 } from \"three\";\r\n\r\nexport class Vector2D extends Vector2\r\n{\r\n // extend to a 3D vector by adding a z coordinate:\r\n toVector3D(z: number)\r\n {\r\n return new Vector3D(this.x, this.y, z);\r\n }\r\n clone()\r\n {\r\n return new Vector2D(this.x, this.y) as this;\r\n }\r\n // returns the vector rotated by 90 degrees clockwise\r\n normal()\r\n {\r\n return new Vector2D(this.y, -this.x);\r\n }\r\n\r\n cross(a: Vector2)\r\n {\r\n return this.x * a.y - this.y * a.x;\r\n }\r\n}\r\n","import { getTag } from \"../constants\";\r\nimport { Vector2D } from \"./Vector2\";\r\nimport { Vector3D } from \"./Vector3\";\r\nimport { Matrix4 } from \"three\";\r\n\r\n// # class Vertex\r\n// Represents a vertex of a polygon. Use your own vertex class instead of this\r\n// one to provide additional features like texture coordinates and vertex\r\n// colors. Custom vertex classes need to provide a `pos` property\r\n// `flipped()`, and `interpolate()` methods that behave analogous to the ones\r\n// FIXME: And a lot MORE (see plane.fromVector3Ds for ex) ! This is fragile code\r\n// defined by `Vertex`.\r\nexport class Vertex3D\r\n{\r\n tag: number;\r\n constructor(public pos: Vector3D, public uv = new Vector2D()) { }\r\n\r\n clone()\r\n {\r\n return new Vertex3D(this.pos.clone(), this.uv.clone());\r\n }\r\n\r\n // Return a vertex with all orientation-specific data (e.g. vertex normal) flipped. Called when the\r\n // orientation of a polygon is flipped.\r\n flipped()\r\n {\r\n return this;\r\n }\r\n\r\n getTag()\r\n {\r\n let result = this.tag;\r\n if (!result)\r\n {\r\n result = getTag();\r\n this.tag = result;\r\n }\r\n return result;\r\n }\r\n\r\n // Create a new vertex between this vertex and `other` by linearly\r\n // interpolating all properties using a parameter of `t`. Subclasses should\r\n // override this to interpolate additional properties.\r\n interpolate(other: Vertex3D, t: number)\r\n {\r\n let pos = this.pos.clone().lerp(other.pos, t);\r\n let uv = this.uv.clone().lerp(other.uv, t);\r\n return new Vertex3D(pos, uv);\r\n }\r\n\r\n // Affine transformation of vertex. Returns a new Vertex\r\n\r\n transform(matrix4x4: Matrix4)\r\n {\r\n const newpos = this.pos.clone().applyMatrix4(matrix4x4);\r\n return new Vertex3D(newpos, this.uv);\r\n }\r\n}\r\n","import { Matrix4 } from \"three\";\r\nimport { equaln, equalv3 } from \"../../../Geometry/GeUtils\";\r\nimport { getTag } from \"../constants\";\r\nimport { IsMirror } from \"./IsMirrot\";\r\nimport { Vector3D } from \"./Vector3\";\r\nimport { Vertex3D } from \"./Vertex3\";\r\n\r\n// # class Plane\r\n// Represents a plane in 3D space.\r\nexport class Plane\r\n{\r\n normal: Vector3D;\r\n w: number;\r\n tag: number;\r\n constructor(normal: Vector3D, w: number)\r\n {\r\n this.normal = normal;\r\n this.w = w;\r\n }\r\n\r\n flipped()\r\n {\r\n return new Plane(this.normal.clone().negate(), -this.w);\r\n }\r\n\r\n getTag()\r\n {\r\n if (!this.tag)\r\n this.tag = getTag();\r\n return this.tag;\r\n }\r\n\r\n coplanarTo(plane: Plane)\r\n {\r\n return equalv3(this.normal, plane.normal, 1e-4) && equaln(this.w, plane.w, 1e-4);\r\n }\r\n\r\n transform(matrix4x4: Matrix4)\r\n {\r\n // get two vectors in the plane:\r\n let r = this.normal.randomNonParallelVector();\r\n let u = this.normal.clone().cross(r);\r\n let v = this.normal.clone().cross(u);\r\n // get 3 points in the plane:\r\n let point1 = this.normal.clone().multiplyScalar(this.w);\r\n let point2 = u.add(point1);\r\n let point3 = v.add(point1);\r\n // transform the points:\r\n point1.applyMatrix4(matrix4x4);\r\n point2.applyMatrix4(matrix4x4);\r\n point3.applyMatrix4(matrix4x4);\r\n // and create a new plane from the transformed points:\r\n let newplane = Plane.fromVector3Ds(point1, point2, point3);\r\n if (IsMirror(matrix4x4))\r\n {\r\n // the transform is mirroring\r\n // We should mirror the plane:\r\n newplane = newplane.flipped();\r\n }\r\n return newplane;\r\n }\r\n\r\n splitLineBetweenPoints(p1: Vertex3D, p2: Vertex3D): Vertex3D\r\n {\r\n let direction = p2.pos.clone().sub(p1.pos);\r\n let labda = (this.w - this.normal.dot(p1.pos)) / this.normal.dot(direction);\r\n if (isNaN(labda)) labda = 0;\r\n if (labda > 1) labda = 1;\r\n if (labda < 0) labda = 0;\r\n let pos = p1.pos.clone().add(direction.multiplyScalar(labda));\r\n let uv = p1.uv.clone().lerp(p2.uv, labda);\r\n return new Vertex3D(pos, uv);\r\n }\r\n\r\n static fromVector3Ds(a: Vector3D, b: Vector3D, c: Vector3D)\r\n {\r\n let n = b.clone()\r\n .sub(a)\r\n .cross(c.clone().sub(a))\r\n .normalize();\r\n return new Plane(n, n.dot(a));\r\n }\r\n}\r\n","import { _CSGDEBUG, EPS } from \"../constants\";\r\nimport { Plane } from \"./Plane\";\r\nimport { Vector3D } from \"./Vector3\";\r\nimport { Vertex3D } from \"./Vertex3\";\r\nimport { arrayRemoveDuplicateBySort } from \"../../../Common/ArrayExt\";\r\nimport { Matrix4 } from \"three\";\r\nimport { IsMirror } from \"./IsMirrot\";\r\n\r\nexport enum Type\r\n{\r\n CoplanarFront = 0,\r\n CoplanarBack = 1,\r\n Front = 2,\r\n Back = 3,\r\n Spanning = 4,\r\n}\r\n\r\n\r\ninterface SplitPolygonData\r\n{\r\n type: Type;\r\n front: Polygon;\r\n back: Polygon;\r\n}\r\n\r\n/** Class Polygon\r\n * Represents a convex polygon. The vertices used to initialize a polygon must\r\n * be coplanar and form a convex loop. They do not have to be `Vertex`\r\n * instances but they must behave similarly (duck typing can be used for\r\n * customization).\r\n *
\r\n * Each convex polygon has a `shared` property, which is shared between all\r\n * polygons that are clones of each other or were split from the same polygon.\r\n * This can be used to define per-polygon properties (such as surface color).\r\n *
\r\n * The plane of the polygon is calculated from the vertex coordinates if not provided.\r\n * The plane can alternatively be passed as the third argument to avoid calculations.\r\n *\r\n *表示凸多边形。 用于初始化多边形的顶点必须共面并形成凸环。\r\n *多边形是彼此克隆或从同一多边形分割的多边形。\r\n *这可用于定义每个多边形属性(例如表面颜色)。\r\n */\r\nexport class Polygon\r\n{\r\n cachedBoundingSphere: [Vector3D, number];\r\n cachedBoundingBox: [Vector3D, Vector3D];\r\n constructor(public vertices: Vertex3D[], public plane?: Plane)\r\n {\r\n if (!plane)\r\n this.plane = Plane.fromVector3Ds(vertices[0].pos, vertices[1].pos, vertices[2].pos);\r\n\r\n if (_CSGDEBUG)\r\n if (!this.checkIfConvex()) throw new Error(\"Not convex!\");\r\n }\r\n\r\n /** Check whether the polygon is convex. (it should be, otherwise we will get unexpected results)*/\r\n checkIfConvex(): boolean\r\n {\r\n return Polygon.verticesConvex(this.vertices, this.plane.normal);\r\n }\r\n\r\n // returns an array with a Vector3D (center point) and a radius\r\n\r\n boundingSphere()\r\n {\r\n if (!this.cachedBoundingSphere)\r\n {\r\n let box = this.boundingBox();\r\n let middle = box[0].clone().add(box[1]).multiplyScalar(0.5);\r\n let radius3 = box[1].clone().sub(middle);\r\n let radius = radius3.length();\r\n this.cachedBoundingSphere = [middle, radius];\r\n }\r\n return this.cachedBoundingSphere;\r\n }\r\n\r\n // returns an array of two Vector3Ds (minimum coordinates and maximum coordinates)\r\n\r\n boundingBox(): Vector3D[]\r\n {\r\n if (!this.cachedBoundingBox)\r\n {\r\n let minpoint: Vector3D;\r\n let maxpoint: Vector3D;\r\n let vertices = this.vertices;\r\n let numvertices = vertices.length;\r\n if (numvertices === 0)\r\n minpoint = new Vector3D(0, 0, 0);\r\n else\r\n minpoint = vertices[0].pos.clone();\r\n maxpoint = minpoint.clone();\r\n for (let i = 1; i < numvertices; i++)\r\n {\r\n let point = vertices[i].pos;\r\n minpoint.min(point);\r\n maxpoint.max(point);\r\n }\r\n this.cachedBoundingBox = [minpoint, maxpoint];\r\n }\r\n return this.cachedBoundingBox;\r\n }\r\n\r\n flipped()\r\n {\r\n let newvertices = this.vertices.map(v => v.flipped());\r\n newvertices.reverse();\r\n let newplane = this.plane.flipped();\r\n return new Polygon(newvertices, newplane);\r\n }\r\n\r\n // Affine transformation of polygon. Returns a new Polygon\r\n transform(matrix4x4: Matrix4)\r\n {\r\n let newvertices = this.vertices.map(v => v.transform(matrix4x4));\r\n let newplane = this.plane.transform(matrix4x4);\r\n if (IsMirror(matrix4x4))\r\n {\r\n // need to reverse the vertex order\r\n // in order to preserve the inside/outside orientation:\r\n newvertices.reverse();\r\n }\r\n return new Polygon(newvertices, newplane);\r\n }\r\n\r\n splitByPlane(plane: Plane): SplitPolygonData\r\n {\r\n let result: SplitPolygonData = { type: null, front: null, back: null };\r\n // cache in local lets (speedup):\r\n let planeNormal = plane.normal;\r\n let vertices = this.vertices;\r\n let numVertices = vertices.length;\r\n if (this.plane.coplanarTo(plane))\r\n {\r\n result.type = Type.CoplanarFront;\r\n }\r\n else\r\n {\r\n let thisW = plane.w;\r\n let hasFront = false;\r\n let hasBack = false;\r\n let vertexIsBack: boolean[] = [];\r\n let MINEPS = -EPS;\r\n for (let i = 0; i < numVertices; i++)\r\n {\r\n let t = planeNormal.dot(vertices[i].pos) - thisW;\r\n let isBack = t < 0;\r\n vertexIsBack.push(isBack);\r\n if (t > EPS) hasFront = true;\r\n if (t < MINEPS) hasBack = true;\r\n }\r\n if (!hasFront && !hasBack)\r\n {\r\n // all points coplanar\r\n let t = planeNormal.dot(this.plane.normal);\r\n result.type = t >= 0 ? Type.CoplanarFront : Type.CoplanarBack;\r\n }\r\n else if (!hasBack)\r\n result.type = Type.Front;\r\n else if (!hasFront)\r\n result.type = Type.Back;\r\n else\r\n {\r\n result.type = Type.Spanning;\r\n let frontVertices: Vertex3D[] = [];\r\n let backVertices: Vertex3D[] = [];\r\n let isBack = vertexIsBack[0];\r\n for (\r\n let vertexIndex = 0;\r\n vertexIndex < numVertices;\r\n vertexIndex++\r\n )\r\n {\r\n let vertex = vertices[vertexIndex];\r\n let nextVertexindex = vertexIndex + 1;\r\n if (nextVertexindex >= numVertices) nextVertexindex = 0;\r\n let nextIsBack = vertexIsBack[nextVertexindex];\r\n if (isBack === nextIsBack)\r\n {\r\n // line segment is on one side of the plane:\r\n if (isBack)\r\n backVertices.push(vertex);\r\n else\r\n frontVertices.push(vertex);\r\n }\r\n else\r\n {\r\n let intersectionVertex = plane.splitLineBetweenPoints(vertex, vertices[nextVertexindex]);\r\n if (isBack)\r\n {\r\n backVertices.push(vertex);\r\n backVertices.push(intersectionVertex);\r\n frontVertices.push(intersectionVertex);\r\n }\r\n else\r\n {\r\n frontVertices.push(vertex);\r\n frontVertices.push(intersectionVertex);\r\n backVertices.push(intersectionVertex);\r\n }\r\n }\r\n isBack = nextIsBack;\r\n } // for vertexindex\r\n // remove duplicate vertices:\r\n let EPS_SQUARED = EPS * EPS;\r\n arrayRemoveDuplicateBySort(backVertices, (v1, v2) =>\r\n {\r\n return v1.pos.distanceToSquared(v2.pos) < EPS_SQUARED;\r\n });\r\n arrayRemoveDuplicateBySort(frontVertices, (v1, v2) =>\r\n {\r\n return v1.pos.distanceToSquared(v2.pos) < EPS_SQUARED;\r\n });\r\n if (frontVertices.length >= 3)\r\n result.front = new Polygon(frontVertices, this.plane);\r\n if (backVertices.length >= 3)\r\n result.back = new Polygon(backVertices, this.plane);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static verticesConvex(vertices: Vertex3D[], planenormal: Vector3D)\r\n {\r\n let count = vertices.length;\r\n if (count < 3) return false;\r\n\r\n let prevPrevPos = vertices[count - 2].pos;\r\n let prevPos = vertices[count - 1].pos;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let pos = vertices[i].pos;\r\n if (!Polygon.isConvexPoint(prevPrevPos, prevPos, pos, planenormal))\r\n return false;\r\n\r\n prevPrevPos = prevPos;\r\n prevPos = pos;\r\n }\r\n return true;\r\n }\r\n\r\n // 计算3点是否凸角\r\n static isConvexPoint(prevpoint: Vector3D, point: Vector3D, nextpoint: Vector3D, normal: Vector3D)\r\n {\r\n let crossproduct = point.clone().sub(prevpoint).cross(nextpoint.clone().sub(point));\r\n let crossdotnormal = crossproduct.dot(normal);\r\n return crossdotnormal >= 0;\r\n }\r\n}\r\n","import { EPS, _CSGDEBUG } from \"./constants\";\r\nimport { Plane } from \"./math/Plane\";\r\nimport { Polygon, Type } from \"./math/Polygon3\";\r\nimport { Vector3D } from \"./math/Vector3\";\r\n\r\n// # class PolygonTreeNode\r\n// This class manages hierarchical splits of polygons\r\n// At the top is a root node which doesn hold a polygon, only child PolygonTreeNodes\r\n// Below that are zero or more 'top' nodes; each holds a polygon. The polygons can be in different planes\r\n// splitByPlane() splits a node by a plane. If the plane intersects the polygon, two new child nodes\r\n// are created holding the splitted polygon.\r\n// getPolygons() retrieves the polygon from the tree. If for PolygonTreeNode the polygon is split but\r\n// the two split parts (child nodes) are still intact, then the unsplit polygon is returned.\r\n// This ensures that we can safely split a polygon into many fragments. If the fragments are untouched,\r\n// getPolygons() will return the original unsplit polygon instead of the fragments.\r\n// remove() removes a polygon from the tree. Once a polygon is removed, the parent polygons are invalidated\r\n// since they are no longer intact.\r\n// constructor creates the root node:\r\n//此类管理多边形的层次分割\r\n//顶部是一个根节点,它不包含多边形,只有子PolygonTreeNodes\r\n//下面是零个或多个“顶部”节点; 每个都有一个多边形。 多边形可以位于不同的平面中\r\n// splitByPlane()按平面拆分节点。 如果平面与多边形相交,则会有两个新的子节点\r\n//创建持有分割多边形。\r\n// getPolygons()从树中检索多边形。 如果对于PolygonTreeNode,则多边形被拆分但是\r\n//两个分割部分(子节点)仍然完好无损,然后返回未分割的多边形。\r\n//这确保我们可以安全地将多边形拆分为多个片段。 如果碎片未受影响,\r\n// getPolygons()将返回原始的未分割多边形而不是片段。\r\n// remove()从树中删除多边形。 删除多边形后,父多边形将失效\r\n//因为它们不再完好无损\r\n//构造函数创建根节点:\r\nclass PolygonTreeNode\r\n{\r\n parent: PolygonTreeNode;\r\n children: PolygonTreeNode[] = [];\r\n polygon: Polygon;\r\n removed: boolean = false;\r\n constructor(polygon?: Polygon)\r\n {\r\n this.polygon = polygon;\r\n }\r\n\r\n // fill the tree with polygons. Should be called on the root node only; child nodes must\r\n // always be a derivate (split) of the parent node.\r\n addPolygons(polygons: Polygon[])\r\n {\r\n // new polygons can only be added to root node; children can only be splitted polygons\r\n if (!this.isRootNode())\r\n throw new Error(\"Assertion failed\");\r\n\r\n for (let polygon of polygons)\r\n this.addChild(polygon);\r\n }\r\n\r\n // remove a node\r\n // - the siblings become toplevel nodes\r\n // - the parent is removed recursively\r\n\r\n remove()\r\n {\r\n if (this.removed) return;\r\n\r\n this.removed = true;\r\n\r\n if (_CSGDEBUG)\r\n {\r\n if (this.isRootNode()) throw new Error(\"Assertion failed\"); // can't remove root node\r\n if (this.children.length) throw new Error(\"Assertion failed\"); // we shouldn't remove nodes with children\r\n }\r\n\r\n // remove ourselves from the parent's children list:\r\n let parentschildren = this.parent.children;\r\n let i = parentschildren.indexOf(this);\r\n if (i < 0) throw new Error(\"Assertion failed\");\r\n parentschildren.splice(i, 1);\r\n\r\n // invalidate the parent's polygon, and of all parents above it:\r\n this.parent.recursivelyInvalidatePolygon();\r\n }\r\n\r\n isRemoved()\r\n {\r\n return this.removed;\r\n }\r\n\r\n isRootNode()\r\n {\r\n return !this.parent;\r\n }\r\n\r\n // invert all polygons in the tree. Call on the root node\r\n\r\n invert()\r\n {\r\n if (!this.isRootNode()) throw new Error(\"Assertion failed\"); // can only call this on the root node\r\n this.invertSub();\r\n }\r\n\r\n getPolygon(): Polygon\r\n {\r\n if (!this.polygon) throw new Error(\"Assertion failed\"); // doesn't have a polygon, which means that it has been broken down\r\n return this.polygon;\r\n }\r\n\r\n getPolygons(outPolygons: Polygon[] = []): Polygon[]\r\n {\r\n let children: PolygonTreeNode[] = [this];\r\n let queue = [children];\r\n for (let i = 0; i < queue.length; ++i)\r\n {\r\n // queue size can change in loop, don't cache length\r\n children = queue[i];\r\n for (let node of children)\r\n {\r\n if (node.polygon)\r\n // the polygon hasn't been broken yet. We can ignore the children and return our polygon:\r\n outPolygons.push(node.polygon);\r\n else\r\n // our polygon has been split up and broken, so gather all subpolygons from the children\r\n queue.push(node.children);\r\n }\r\n }\r\n\r\n return outPolygons;\r\n }\r\n\r\n // split the node by a plane; add the resulting nodes to the frontnodes and backnodes array\r\n // If the plane doesn't intersect the polygon, the 'this' object is added to one of the arrays\r\n // If the plane does intersect the polygon, two new child nodes are created for the front and back fragments,\r\n // and added to both arrays.\r\n\r\n splitByPlane(\r\n plane: Plane,\r\n coplanarFrontNodes: PolygonTreeNode[],\r\n coplanarBackNodes: PolygonTreeNode[],\r\n frontNodes: PolygonTreeNode[],\r\n backNodes: PolygonTreeNode[]\r\n )\r\n {\r\n if (this.children.length)\r\n {\r\n let queue = [this.children];\r\n for (let i = 0; i < queue.length; i++)\r\n {\r\n // queue.length can increase, do not cache\r\n let nodes = queue[i];\r\n for (let j = 0, l = nodes.length; j < l; j++)\r\n {\r\n // ok to cache length\r\n let node = nodes[j];\r\n if (node.children.length)\r\n queue.push(node.children);\r\n else\r\n {\r\n // no children. Split the polygon:\r\n node.splitByPlaneNotChildren(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes);\r\n }\r\n }\r\n }\r\n }\r\n else\r\n {\r\n this.splitByPlaneNotChildren(plane, coplanarFrontNodes, coplanarBackNodes, frontNodes, backNodes);\r\n }\r\n }\r\n\r\n // only to be called for nodes with no children\r\n // 仅用于没有子节点的节点\r\n private splitByPlaneNotChildren(\r\n plane: Plane,\r\n coplanarFrontNodes: PolygonTreeNode[],\r\n coplanarBackNodes: PolygonTreeNode[],\r\n frontNodes: PolygonTreeNode[],\r\n backNodes: PolygonTreeNode[]\r\n )\r\n {\r\n if (!this.polygon) return;\r\n\r\n let polygon = this.polygon;\r\n let bound = polygon.boundingSphere();\r\n let sphereradius = bound[1] + EPS; // FIXME Why add imprecision?\r\n let planenormal = plane.normal;\r\n let spherecenter = bound[0];\r\n let d = planenormal.dot(spherecenter) - plane.w;\r\n if (d > sphereradius)\r\n frontNodes.push(this);\r\n else if (d < -sphereradius)\r\n backNodes.push(this);\r\n else\r\n {\r\n let splitresult = polygon.splitByPlane(plane);\r\n switch (splitresult.type)\r\n {\r\n case Type.CoplanarFront:\r\n coplanarFrontNodes.push(this);\r\n break;\r\n\r\n case Type.CoplanarBack:\r\n coplanarBackNodes.push(this);\r\n break;\r\n\r\n case Type.Front:\r\n frontNodes.push(this);\r\n break;\r\n\r\n case Type.Back:\r\n backNodes.push(this);\r\n break;\r\n\r\n case Type.Spanning:\r\n if (splitresult.front)\r\n {\r\n let frontNode = this.addChild(splitresult.front);\r\n frontNodes.push(frontNode);\r\n }\r\n if (splitresult.back)\r\n {\r\n let backNode = this.addChild(splitresult.back);\r\n backNodes.push(backNode);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // add child to a node\r\n // this should be called whenever the polygon is split\r\n // a child should be created for every fragment of the split polygon\r\n // returns the newly created child\r\n addChild(polygon: Polygon): PolygonTreeNode\r\n {\r\n let newchild = new PolygonTreeNode(polygon);\r\n newchild.parent = this;\r\n this.children.push(newchild);\r\n return newchild;\r\n }\r\n\r\n invertSub()\r\n {\r\n let queue: PolygonTreeNode[][] = [[this]];\r\n for (let i = 0; i < queue.length; i++)\r\n {\r\n let children = queue[i];\r\n for (let j = 0, l = children.length; j < l; j++)\r\n {\r\n let node = children[j];\r\n if (node.polygon)\r\n node.polygon = node.polygon.flipped();\r\n queue.push(node.children);\r\n }\r\n }\r\n }\r\n\r\n recursivelyInvalidatePolygon()\r\n {\r\n let node: PolygonTreeNode = this;\r\n while (node.polygon)\r\n {\r\n node.polygon = null;\r\n if (node.parent)\r\n node = node.parent;\r\n }\r\n }\r\n}\r\n\r\n// # class Tree\r\n// This is the root of a BSP tree\r\n// We are using this separate class for the root of the tree, to hold the PolygonTreeNode root\r\n// The actual tree is kept in this.rootnode\r\nexport class Tree\r\n{\r\n polygonTree = new PolygonTreeNode();\r\n rootNode = new Node(null);\r\n constructor(polygons: Polygon[])\r\n {\r\n this.addPolygons(polygons);\r\n }\r\n\r\n invert()\r\n {\r\n this.polygonTree.invert();\r\n this.rootNode.invert();\r\n }\r\n\r\n // Remove all polygons in this BSP tree that are inside the other BSP tree\r\n /**\r\n * this 减去 tree 删除此BSP树中位于其他BSP树内的所有多边形\r\n * @param tree 不会被修改\r\n * @param [alsoRemovecoplanarFront=false] 同时删除共面\r\n */\r\n clipTo(tree: Tree, alsoRemovecoplanarFront = false)\r\n {\r\n this.rootNode.clipTo(tree, alsoRemovecoplanarFront);\r\n }\r\n\r\n allPolygons()\r\n {\r\n return this.polygonTree.getPolygons();\r\n }\r\n\r\n addPolygons(polygons: Polygon[])\r\n {\r\n if (polygons.length > 1e4)\r\n return;\r\n let polygonTreeNodes = polygons.map((p) => this.polygonTree.addChild(p));\r\n this.rootNode.addPolygonTreeNodes(polygonTreeNodes);\r\n }\r\n}\r\n\r\n// # class Node\r\n// Holds a node in a BSP tree. A BSP tree is built from a collection of polygons\r\n// by picking a polygon to split along.\r\n// Polygons are not stored directly in the tree, but in PolygonTreeNodes, stored in\r\n// this.polygontreenodes. Those PolygonTreeNodes are children of the owning\r\n// Tree.polygonTree\r\n// This is not a leafy BSP tree since there is\r\n// no distinction between internal and leaf nodes.\r\nclass Node\r\n{\r\n plane: Plane;\r\n front: Node;\r\n back: Node;\r\n polygonTreeNodes: PolygonTreeNode[] = [];\r\n parent: Node;\r\n constructor(parent: Node)\r\n {\r\n this.parent = parent;\r\n }\r\n\r\n // Convert solid space to empty space and empty space to solid space.\r\n invert()\r\n {\r\n let queue: Node[] = [this];\r\n for (let i = 0; i < queue.length; i++)\r\n {\r\n let node = queue[i];\r\n if (node.plane) node.plane = node.plane.flipped();\r\n if (node.front) queue.push(node.front);\r\n if (node.back) queue.push(node.back);\r\n let temp = node.front;\r\n node.front = node.back;\r\n node.back = temp;\r\n }\r\n }\r\n\r\n // clip polygontreenodes to our plane\r\n // calls remove() for all clipped PolygonTreeNodes\r\n //将polygontreenodes剪辑到我们的飞机上\r\n //为所有剪切的PolygonTreeNodes调用remove()\r\n clipPolygons(polygonTreeNodes: PolygonTreeNode[], alsoRemoveCoplanarFront: boolean)\r\n {\r\n interface D\r\n {\r\n node: Node;\r\n polygonTreeNodes: PolygonTreeNode[];\r\n }\r\n\r\n let args: D = { node: this, polygonTreeNodes };\r\n let stack: D[] = [];\r\n\r\n do\r\n {\r\n let node = args.node;\r\n let polygonTreeNodes1 = args.polygonTreeNodes;\r\n\r\n // begin \"function\"\r\n if (node.plane)\r\n {\r\n let backnodes: PolygonTreeNode[] = [];\r\n let frontnodes: PolygonTreeNode[] = [];\r\n let coplanarfrontnodes = alsoRemoveCoplanarFront ? backnodes : frontnodes;\r\n let plane = node.plane;\r\n for (let node1 of polygonTreeNodes1)\r\n {\r\n if (!node1.isRemoved())\r\n node1.splitByPlane(plane, coplanarfrontnodes, backnodes, frontnodes, backnodes);\r\n }\r\n\r\n if (node.front && frontnodes.length > 0)\r\n stack.push({ node: node.front, polygonTreeNodes: frontnodes });\r\n\r\n let numbacknodes = backnodes.length;\r\n if (node.back && numbacknodes > 0)\r\n stack.push({ node: node.back, polygonTreeNodes: backnodes });\r\n else\r\n {\r\n // there's nothing behind this plane. Delete the nodes behind this plane:\r\n // 这架飞机背后什么也没有。 删除此平面后面的节点:\r\n for (let i = 0; i < numbacknodes; i++)\r\n backnodes[i].remove();\r\n }\r\n }\r\n args = stack.pop();\r\n }\r\n while (args);\r\n }\r\n\r\n // Remove all polygons in this BSP tree that are inside the other BSP tree\r\n // `tree`.\r\n clipTo(tree: Tree, alsoRemovecoplanarFront: boolean)\r\n {\r\n let node: Node = this;\r\n let stack: Node[] = [];\r\n do\r\n {\r\n if (node.polygonTreeNodes.length > 0)\r\n {\r\n tree.rootNode.clipPolygons(\r\n node.polygonTreeNodes,\r\n alsoRemovecoplanarFront\r\n );\r\n }\r\n if (node.front) stack.push(node.front);\r\n if (node.back) stack.push(node.back);\r\n node = stack.pop();\r\n }\r\n while (node);\r\n }\r\n\r\n addPolygonTreeNodes(polygonTreeNodes: PolygonTreeNode[])\r\n {\r\n interface D\r\n {\r\n node: Node;\r\n polygontreenodes: PolygonTreeNode[];\r\n }\r\n let args: D = { node: this, polygontreenodes: polygonTreeNodes };\r\n let stack: D[] = [];\r\n do\r\n {\r\n let node = args.node;\r\n polygonTreeNodes = args.polygontreenodes;\r\n\r\n if (polygonTreeNodes.length === 0)\r\n {\r\n args = stack.pop();\r\n continue;\r\n }\r\n if (!node.plane)\r\n {\r\n let bestplane = polygonTreeNodes[Math.floor(polygonTreeNodes.length / 2)].getPolygon().plane;\r\n node.plane = bestplane;\r\n }\r\n let frontNodes: PolygonTreeNode[] = [];\r\n let backNodes: PolygonTreeNode[] = [];\r\n\r\n for (let i = 0, n = polygonTreeNodes.length; i < n; ++i)\r\n {\r\n polygonTreeNodes[i].splitByPlane(\r\n node.plane,\r\n node.polygonTreeNodes,\r\n backNodes,\r\n frontNodes,\r\n backNodes\r\n );\r\n }\r\n\r\n if (frontNodes.length > 0)\r\n {\r\n if (!node.front) node.front = new Node(node);\r\n stack.push({ node: node.front, polygontreenodes: frontNodes });\r\n }\r\n if (backNodes.length > 0)\r\n {\r\n if (!node.back) node.back = new Node(node);\r\n stack.push({ node: node.back, polygontreenodes: backNodes });\r\n }\r\n\r\n args = stack.pop();\r\n }\r\n while (args);\r\n }\r\n\r\n getParentPlaneNormals(normals: Vector3D[], maxdepth: number)\r\n {\r\n if (maxdepth > 0)\r\n {\r\n if (this.parent)\r\n {\r\n normals.push(this.parent.plane.normal);\r\n this.parent.getParentPlaneNormals(normals, maxdepth - 1);\r\n }\r\n }\r\n }\r\n}\r\n","\r\n// //////////////////////////////\r\n// ## class fuzzyFactory\r\n// This class acts as a factory for objects. We can search for an object with approximately\r\n// the desired properties (say a rectangle with width 2 and height 1)\r\n// The lookupOrCreate() method looks for an existing object (for example it may find an existing rectangle\r\n// with width 2.0001 and height 0.999. If no object is found, the user supplied callback is\r\n// called, which should generate a new object. The new object is inserted into the database\r\n// so it can be found by future lookupOrCreate() calls.\r\n// Constructor:\r\n// numdimensions: the number of parameters for each object\r\n// for example for a 2D rectangle this would be 2\r\n// tolerance: The maximum difference for each parameter allowed to be considered a match\r\nexport class FuzzyFactory\r\n{\r\n lookuptable: {};\r\n multiplier: number;\r\n constructor(numdimensions: number, tolerance: number)\r\n {\r\n this.lookuptable = {};\r\n this.multiplier = 1.0 / tolerance;\r\n }\r\n\r\n // let obj = f.lookupOrCreate([el1, el2, el3], function(elements) {/* create the new object */});\r\n // Performs a fuzzy lookup of the object with the specified elements.\r\n // If found, returns the existing object\r\n // If not found, calls the supplied callback function which should create a new object with\r\n // the specified properties. This object is inserted in the lookup database.\r\n lookupOrCreate(els: number[], object: T): T\r\n {\r\n let hash = \"\";\r\n let multiplier = this.multiplier;\r\n for (let el of els)\r\n {\r\n let valueQuantized = Math.round(el * multiplier);\r\n hash += valueQuantized + \"/\";\r\n }\r\n if (hash in this.lookuptable) return this.lookuptable[hash];\r\n else\r\n {\r\n let hashparts = els.map(el =>\r\n {\r\n let q0 = Math.floor(el * multiplier);\r\n let q1 = q0 + 1;\r\n return [\"\" + q0 + \"/\", \"\" + q1 + \"/\"];\r\n });\r\n let numelements = els.length;\r\n let numhashes = 1 << numelements;\r\n for (let hashmask = 0; hashmask < numhashes; ++hashmask)\r\n {\r\n let hashmaskShifted = hashmask;\r\n hash = \"\";\r\n hashparts.forEach(hashpart =>\r\n {\r\n hash += hashpart[hashmaskShifted & 1];\r\n hashmaskShifted >>= 1;\r\n });\r\n this.lookuptable[hash] = object;\r\n }\r\n return object;\r\n }\r\n }\r\n}\r\n","import { FuzzyFactory } from \"./FuzzyFactory\";\r\nimport { EPS } from \"./constants\";\r\nimport { Polygon } from \"./math/Polygon3\";\r\nimport { Plane } from \"./math/Plane\";\r\nimport { Vertex3D } from \"./math/Vertex3\";\r\n\r\nexport class FuzzyCSGFactory\r\n{\r\n vertexfactory = new FuzzyFactory(3, EPS);\r\n planefactory = new FuzzyFactory(4, EPS);\r\n constructor() { }\r\n\r\n getVertex(sourcevertex: Vertex3D): Vertex3D\r\n {\r\n let elements = [sourcevertex.pos.x, sourcevertex.pos.y, sourcevertex.pos.z];\r\n let result = this.vertexfactory.lookupOrCreate(elements, sourcevertex);\r\n return result;\r\n }\r\n\r\n getPlane(sourceplane: Plane): Plane\r\n {\r\n let elements: number[] = [sourceplane.normal.x, sourceplane.normal.y, sourceplane.normal.z, sourceplane.w];\r\n let result = this.planefactory.lookupOrCreate(elements, sourceplane);\r\n return result;\r\n }\r\n\r\n getPolygon(sourcePolygon: Polygon, outputPolygon = sourcePolygon): Polygon\r\n {\r\n let newPlane = this.getPlane(sourcePolygon.plane);\r\n let newVertices = sourcePolygon.vertices.map(vertex => this.getVertex(vertex));\r\n // two vertices that were originally very close may now have become\r\n // truly identical (referring to the same Vertex object).\r\n // Remove duplicate vertices:\r\n let newVerticesDedup: Vertex3D[] = [];//新的顶点列表(已过滤重复)\r\n if (newVertices.length > 0)\r\n {\r\n let prevVertexTag = newVertices[newVertices.length - 1].getTag();\r\n for (let vertex of newVertices)\r\n {\r\n let vertextag = vertex.getTag();\r\n if (vertextag !== prevVertexTag)\r\n newVerticesDedup.push(vertex);\r\n prevVertexTag = vertextag;\r\n }\r\n }\r\n // If it's degenerate, remove all vertices:\r\n if (newVerticesDedup.length < 3)\r\n newVerticesDedup = [];\r\n\r\n outputPolygon.vertices = newVertices;\r\n outputPolygon.plane = newPlane;\r\n return outputPolygon;\r\n }\r\n}\r\n","import { FuzzyCSGFactory } from \"../FuzzyFactory3d\";\r\nimport { FuzzyCAGFactory } from \"../FuzzyFactory2d\";\r\nimport { CSG } from \"../CSG\";\r\nimport { CAG } from \"../CAG\";\r\nimport { EPS } from \"../constants\";\r\nimport { Polygon } from \"../math/Polygon3\";\r\n\r\n/**\r\n * Returns a cannoicalized version of the input csg : ie every very close\r\n * points get deduplicated\r\n * \r\n * 返回删除重复点的csg,重复点将被合并\r\n */\r\nexport function canonicalizeCSG(csg: CSG): CSG\r\n{\r\n const factory = new FuzzyCSGFactory();\r\n let result = CSGFromCSGFuzzyFactory(factory, csg);\r\n result.isCanonicalized = true;\r\n result.isRetesselated = csg.isRetesselated;\r\n return result;\r\n}\r\n\r\nexport function canonicalizeCAG(cag: CAG)\r\n{\r\n let factory = new FuzzyCAGFactory();\r\n let result = CAGFromCAGFuzzyFactory(factory, cag);\r\n result.isCanonicalized = true;\r\n return result;\r\n}\r\n\r\nexport function CSGFromCSGFuzzyFactory(factory: FuzzyCSGFactory, sourcecsg: CSG)\r\n{\r\n let newpolygons: Polygon[] = sourcecsg.polygons.filter(poly =>\r\n {\r\n return factory.getPolygon(poly).vertices.length >= 3;\r\n });\r\n return new CSG(newpolygons);\r\n}\r\n\r\nfunction CAGFromCAGFuzzyFactory(factory: FuzzyCAGFactory, sourcecag: CAG)\r\n{\r\n let newsides = sourcecag.sides\r\n .map(side => factory.getSide(side))\r\n // remove bad sides (mostly a user input issue)\r\n .filter((side) => side.length() > EPS);\r\n return new CAG(newsides);\r\n};\r\n","import { Vector3D } from \"../math/Vector3\";\r\nimport { CSG } from \"../CSG\";\r\n/**\r\n * Returns an array of Vector3D, providing minimum coordinates and maximum coordinates\r\n * of this solid.\r\n * @example\r\n * let bounds = A.getBounds()\r\n * let minX = bounds[0].x\r\n */\r\nexport function bounds(csg: CSG): Vector3D[]\r\n{\r\n if (!csg.cachedBoundingBox)\r\n {\r\n let minpoint: Vector3D;\r\n let maxpoint: Vector3D;\r\n let polygons = csg.polygons;\r\n let numpolygons = polygons.length;\r\n for (let i = 0; i < numpolygons; i++)\r\n {\r\n let polygon = polygons[i];\r\n let bounds = polygon.boundingBox();\r\n if (i === 0)\r\n {\r\n minpoint = bounds[0].clone();\r\n maxpoint = bounds[1].clone();\r\n }\r\n else\r\n {\r\n minpoint.min(bounds[0]);\r\n maxpoint.max(bounds[1]);\r\n }\r\n }\r\n // FIXME: not ideal, we are mutating the input, we need to move some of it out\r\n csg.cachedBoundingBox = [minpoint, maxpoint];\r\n }\r\n return csg.cachedBoundingBox;\r\n};\r\n","import { Vector2D } from \"./math/Vector2\";\r\n\r\nexport function fnNumberSort(a, b)\r\n{\r\n return a - b;\r\n}\r\n\r\nexport const solve2Linear = function (a: number, b: number, c: number, d: number, u: number, v: number)\r\n{\r\n let det = a * d - b * c;\r\n let invdet = 1.0 / det;\r\n let x = u * d - b * v;\r\n let y = -u * c + a * v;\r\n x *= invdet;\r\n y *= invdet;\r\n return [x, y];\r\n};\r\n\r\nexport function insertSorted(array: T[], element: T, comparefunc: (a: T, b: T) => number)\r\n{\r\n let leftbound = 0;\r\n let rightbound = array.length;\r\n while (rightbound > leftbound)\r\n {\r\n let testindex = Math.floor((leftbound + rightbound) / 2);\r\n let testelement = array[testindex];\r\n let compareresult = comparefunc(element, testelement);\r\n if (compareresult > 0)\r\n // element > testelement\r\n leftbound = testindex + 1;\r\n else\r\n rightbound = testindex;\r\n }\r\n array.splice(leftbound, 0, element);\r\n}\r\n\r\n// Get the x coordinate of a point with a certain y coordinate, interpolated between two\r\n// points (CSG.Vector2D).\r\n// Interpolation is robust even if the points have the same y coordinate\r\nexport function interpolateBetween2DPointsForY(point1: Vector2D, point2: Vector2D, y: number)\r\n{\r\n let f1 = y - point1.y;\r\n let f2 = point2.y - point1.y;\r\n if (f2 < 0)\r\n {\r\n f1 = -f1;\r\n f2 = -f2;\r\n }\r\n let t: number;\r\n if (f1 <= 0)\r\n t = 0.0;\r\n else if (f1 >= f2)\r\n t = 1.0;\r\n else if (f2 < 1e-10)\r\n // FIXME Should this be CSG.EPS?\r\n t = 0.5;\r\n else\r\n t = f1 / f2;\r\n let result = point1.x + t * (point2.x - point1.x);\r\n return result;\r\n}\r\n","import { Vector2D } from \"./Vector2\";\r\n\r\n/** class Line2D\r\n * Represents a directional line in 2D space\r\n * A line is parametrized by its normal vector (perpendicular to the line, rotated 90 degrees counter clockwise)\r\n * and w. The line passes through the point .times(w).\r\n * Equation: p is on line if normal.dot(p)==w\r\n */\r\nexport class Line2D\r\n{\r\n normal: Vector2D;\r\n w: number;\r\n constructor(normal: Vector2D, w: number)\r\n {\r\n this.normal = normal.clone();\r\n let l = this.normal.length();\r\n w *= l;\r\n this.normal.normalize();\r\n this.w = w;\r\n }\r\n\r\n direction()\r\n {\r\n return this.normal;\r\n }\r\n static fromPoints(p1: Vector2D, p2: Vector2D)\r\n {\r\n let direction = p2.clone().sub(p1);\r\n let normal = direction\r\n .normal()\r\n .negate()\r\n .normalize();\r\n let w = p1.dot(normal);\r\n return new Line2D(normal, w);\r\n }\r\n}\r\n","import { Plane } from \"./Plane\";\r\nimport { Vector2D } from \"./Vector2\";\r\nimport { Vector3D } from \"./Vector3\";\r\n\r\n/** class OrthoNormalBasis\r\n * Reprojects points on a 3D plane onto a 2D plane\r\n * or from a 2D plane back onto the 3D plane\r\n */\r\n\r\nexport class OrthoNormalBasis\r\n{\r\n v: Vector3D;\r\n u: Vector3D;\r\n planeorigin: Vector3D;\r\n constructor(public plane: Plane, rightVector: Vector3D = plane.normal.randomNonParallelVector())\r\n {\r\n this.v = plane.normal.clone().cross(rightVector).normalize();\r\n this.u = this.v.clone().cross(plane.normal);\r\n this.plane = plane;\r\n this.planeorigin = plane.normal.clone().multiplyScalar(plane.w);\r\n }\r\n to2D(vec3: Vector3D)\r\n {\r\n return new Vector2D(vec3.dot(this.u), vec3.dot(this.v));\r\n }\r\n\r\n to3D(vec2: Vector2D)\r\n {\r\n return this.planeorigin.clone()\r\n .add(this.u.clone().multiplyScalar(vec2.x))\r\n .add(this.v.clone().multiplyScalar(vec2.y));\r\n }\r\n}\r\n","import { EPS } from \"../constants\";\r\nimport { fnNumberSort, insertSorted, interpolateBetween2DPointsForY } from \"../utils\";\r\nimport { Line2D } from \"./Line2\";\r\nimport { OrthoNormalBasis } from \"./OrthoNormalBasis\";\r\nimport { Polygon } from \"./Polygon3\";\r\nimport { Vector2D } from \"./Vector2\";\r\nimport { Vertex3D } from \"./Vertex3\";\r\n\r\n//在这个文件中 Top 表示的是 y最小.\r\n// Bottom 表示的是 y最大\r\n\r\ninterface ActivePolygon\r\n{\r\n polygonindex: number;\r\n leftvertexindex: number;\r\n rightvertexindex: number;\r\n\r\n topleft: Vector2D;\r\n bottomleft: Vector2D;\r\n\r\n topright: Vector2D;\r\n bottomright: Vector2D;\r\n}\r\n\r\ninterface OutPolygon\r\n{\r\n topleft: Vector2D;\r\n topright: Vector2D;\r\n bottomleft: Vector2D;\r\n bottomright: Vector2D;\r\n leftline: Line2D;\r\n rightline: Line2D;\r\n outpolygon?: { leftpoints: Vector2D[]; rightpoints: Vector2D[]; };\r\n leftlinecontinues?: boolean;\r\n rightlinecontinues?: boolean;\r\n}\r\n\r\n//一组共面多边形的Retesselation函数。 请参阅此文件顶部的介绍。\r\nexport function reTesselateCoplanarPolygons(sourcePolygons: Polygon[], destpolygons: Polygon[] = []): void\r\n{\r\n let numPolygons = sourcePolygons.length;\r\n if (numPolygons < 2)\r\n {\r\n destpolygons.push(...sourcePolygons);\r\n return;\r\n }\r\n\r\n let plane = sourcePolygons[0].plane;\r\n let orthobasis = new OrthoNormalBasis(plane);\r\n\r\n // let xcoordinatebins = {}\r\n let yCoordinateBins: { [key: number]: number; } = {}; //整数map\r\n let yCoordinateBinningFactor = (1.0 / EPS) * 10;\r\n\r\n let polygonVertices2d: (Vector2D[])[] = []; // (Vector2[])[];\r\n let polygonTopVertexIndexes: number[] = []; // 每个多边形最顶层顶点的索引数组 minIndex\r\n let topY2PolygonIndexes: { [key: number]: number[]; } = {}; // Map\r\n let yCoordinateToPolygonIndexes: { [key: string]: { [key: number]: boolean; }; } = {}; // Map > Y坐标映射所有的多边形\r\n\r\n //将多边形转换为2d点表 polygonVertices2d\r\n //建立y对应的多边形Map yCoordinateToPolygonIndexes\r\n for (let polygonIndex = 0; polygonIndex < numPolygons; polygonIndex++)\r\n {\r\n let poly3d = sourcePolygons[polygonIndex];\r\n let numVertices = poly3d.vertices.length;\r\n\r\n if (numVertices === 0) continue;\r\n\r\n let vertices2d: Vector2D[] = []; //Vector2d[];\r\n let minIndex = -1;\r\n let miny: number, maxy: number;\r\n for (let i = 0; i < numVertices; i++)\r\n {\r\n let pos2d = orthobasis.to2D(poly3d.vertices[i].pos);\r\n // perform binning of y coordinates: If we have multiple vertices very\r\n // close to each other, give them the same y coordinate:\r\n let yCoordinatebin = Math.floor(pos2d.y * yCoordinateBinningFactor);\r\n let newy: number;\r\n if (yCoordinatebin in yCoordinateBins)\r\n newy = yCoordinateBins[yCoordinatebin];\r\n else if (yCoordinatebin + 1 in yCoordinateBins)\r\n newy = yCoordinateBins[yCoordinatebin + 1];\r\n else if (yCoordinatebin - 1 in yCoordinateBins)\r\n newy = yCoordinateBins[yCoordinatebin - 1];\r\n else\r\n {\r\n newy = pos2d.y;\r\n yCoordinateBins[yCoordinatebin] = pos2d.y;\r\n }\r\n pos2d = new Vector2D(pos2d.x, newy);\r\n vertices2d.push(pos2d);\r\n if (i === 0 || newy < miny)\r\n {\r\n miny = newy;\r\n minIndex = i;\r\n }\r\n if (i === 0 || newy > maxy) maxy = newy;\r\n\r\n if (!(newy in yCoordinateToPolygonIndexes))\r\n yCoordinateToPolygonIndexes[newy] = {};\r\n\r\n yCoordinateToPolygonIndexes[newy][polygonIndex] = true;\r\n }\r\n\r\n //退化多边形,所有顶点都具有相同的y坐标。 从现在开始忽略它:\r\n if (miny >= maxy) continue;\r\n\r\n if (!(miny in topY2PolygonIndexes)) topY2PolygonIndexes[miny] = [];\r\n\r\n topY2PolygonIndexes[miny].push(polygonIndex);\r\n\r\n // reverse the vertex order:\r\n vertices2d.reverse();\r\n minIndex = numVertices - minIndex - 1;\r\n polygonVertices2d.push(vertices2d);\r\n polygonTopVertexIndexes.push(minIndex);\r\n }\r\n\r\n //所有的y坐标,从小到大排序\r\n let yCoordinates: string[] = [];\r\n for (let ycoordinate in yCoordinateToPolygonIndexes)\r\n yCoordinates.push(ycoordinate);\r\n yCoordinates.sort(fnNumberSort);\r\n\r\n //迭代y坐标 从低到高\r\n\r\n // activepolygons :'active'的源多边形,即与y坐标相交\r\n // 多边形是从左往右排序的\r\n // activepolygons 中的每个元素都具有以下属性:\r\n // polygonindex 源多边形的索引(即sourcepolygons的索引 和polygonvertices2d数组)\r\n // leftvertexindex 左边 在当前y坐标处或刚好在当前y坐标之上\r\n // rightvertexindex 右边\r\n // topleft bottomleft 与当前y坐标交叉的多边形左侧的坐标\r\n // topright bottomright 与当前y坐标交叉的多边形右侧的坐标\r\n\r\n let activePolygons: ActivePolygon[] = [];\r\n let prevOutPolygonRow: OutPolygon[] = []; //上一个输出多边形行?\r\n for (let yindex = 0; yindex < yCoordinates.length; yindex++)\r\n {\r\n let yCoordinateStr = yCoordinates[yindex];\r\n let yCoordinate = Number(yCoordinateStr);\r\n\r\n // 用当前的y 更新 activePolygons\r\n // - 删除以y坐标结尾的所有多边形 删除polygon maxy = y 的多边形\r\n // - 更新 leftvertexindex 和 rightvertexindex (指向当前顶点索引)\r\n // 在多边形的左侧和右侧\r\n\r\n // 迭代在Y坐标处有一个角的所有多边形\r\n let polygonIndexeSwithCorner = yCoordinateToPolygonIndexes[yCoordinateStr];\r\n for (\r\n let activePolygonIndex = 0;\r\n activePolygonIndex < activePolygons.length;\r\n activePolygonIndex++\r\n )\r\n {\r\n let activepolygon = activePolygons[activePolygonIndex];\r\n let polygonindex = activepolygon.polygonindex;\r\n\r\n if (!polygonIndexeSwithCorner[polygonindex])//如果不在角内\r\n continue;\r\n\r\n //多边形在此y坐标处有一个角\r\n let vertices2d = polygonVertices2d[polygonindex];\r\n let numvertices = vertices2d.length;\r\n let newleftvertexindex = activepolygon.leftvertexindex;\r\n let newrightvertexindex = activepolygon.rightvertexindex;\r\n\r\n //看看我们是否需要增加 leftvertexindex 或减少 rightvertexindex :\r\n while (true)\r\n {\r\n let nextleftvertexindex = newleftvertexindex + 1;\r\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0;\r\n if (vertices2d[nextleftvertexindex].y !== yCoordinate) break;\r\n newleftvertexindex = nextleftvertexindex;\r\n }\r\n //减少 rightvertexindex\r\n let nextrightvertexindex = newrightvertexindex - 1;\r\n if (nextrightvertexindex < 0)\r\n nextrightvertexindex = numvertices - 1;\r\n if (vertices2d[nextrightvertexindex].y === yCoordinate)\r\n newrightvertexindex = nextrightvertexindex;\r\n\r\n if (\r\n newleftvertexindex !== activepolygon.leftvertexindex //有向上更新\r\n && newleftvertexindex === newrightvertexindex //指向同一个点\r\n )\r\n {\r\n\r\n // We have increased leftvertexindex or decreased rightvertexindex, and now they point to the same vertex\r\n // This means that this is the bottom point of the polygon. We'll remove it:\r\n //我们增加了leftvertexindex或减少了rightvertexindex,现在它们指向同一个顶点\r\n //这意味着这是多边形的底点。 我们将删除它:\r\n activePolygons.splice(activePolygonIndex, 1);\r\n --activePolygonIndex;\r\n } else\r\n {\r\n activepolygon.leftvertexindex = newleftvertexindex;\r\n activepolygon.rightvertexindex = newrightvertexindex;\r\n activepolygon.topleft = vertices2d[newleftvertexindex];\r\n activepolygon.topright = vertices2d[newrightvertexindex];\r\n let nextleftvertexindex = newleftvertexindex + 1;\r\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0;\r\n activepolygon.bottomleft = vertices2d[nextleftvertexindex];\r\n let nextrightvertexindex = newrightvertexindex - 1;\r\n if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1;\r\n activepolygon.bottomright = vertices2d[nextrightvertexindex];\r\n }\r\n }\r\n\r\n let nextYCoordinate: number; // number y\r\n if (yindex >= yCoordinates.length - 1)\r\n {\r\n // last row, all polygons must be finished here:\r\n // 最后一行,所有多边形必须在这里完成:\r\n activePolygons = [];\r\n }\r\n else // yindex < ycoordinates.length-1\r\n {\r\n nextYCoordinate = Number(yCoordinates[yindex + 1]);\r\n let middleYCoordinate = 0.5 * (yCoordinate + nextYCoordinate);\r\n // update activepolygons by adding any polygons that start here:\r\n // 添加从这里开始的多边形 到 activePolygons\r\n let startingPolygonIndexes = topY2PolygonIndexes[yCoordinateStr];\r\n for (let polygonindex_key in startingPolygonIndexes)\r\n {\r\n let polygonindex = startingPolygonIndexes[polygonindex_key];\r\n let vertices2d = polygonVertices2d[polygonindex];\r\n let numvertices = vertices2d.length;\r\n let topVertexIndex = polygonTopVertexIndexes[polygonindex];\r\n // the top of the polygon may be a horizontal line. In that case topvertexindex can point to any point on this line.\r\n // Find the left and right topmost vertices which have the current y coordinate:\r\n // 顶部可以是一条直线,寻找最左边的点和最右边的点\r\n let topleftvertexindex = topVertexIndex;\r\n while (true)\r\n {\r\n let i = topleftvertexindex + 1;\r\n if (i >= numvertices) i = 0;\r\n if (vertices2d[i].y !== yCoordinate) break;\r\n if (i === topVertexIndex) break; // should not happen, but just to prevent endless loops\r\n topleftvertexindex = i;\r\n }\r\n let toprightvertexindex = topVertexIndex;\r\n while (true)\r\n {\r\n let i = toprightvertexindex - 1;\r\n if (i < 0) i = numvertices - 1;\r\n if (vertices2d[i].y !== yCoordinate) break;\r\n if (i === topleftvertexindex) break; // should not happen, but just to prevent endless loops\r\n toprightvertexindex = i;\r\n }\r\n\r\n let nextleftvertexindex = topleftvertexindex + 1;\r\n if (nextleftvertexindex >= numvertices) nextleftvertexindex = 0;\r\n let nextrightvertexindex = toprightvertexindex - 1;\r\n if (nextrightvertexindex < 0) nextrightvertexindex = numvertices - 1;\r\n let newactivepolygon: ActivePolygon = {\r\n polygonindex: polygonindex,\r\n leftvertexindex: topleftvertexindex,\r\n rightvertexindex: toprightvertexindex,\r\n topleft: vertices2d[topleftvertexindex],\r\n topright: vertices2d[toprightvertexindex],\r\n bottomleft: vertices2d[nextleftvertexindex],\r\n bottomright: vertices2d[nextrightvertexindex]\r\n };\r\n\r\n //二分插入\r\n insertSorted(activePolygons, newactivepolygon, function (el1: ActivePolygon, el2: ActivePolygon)\r\n {\r\n let x1 = interpolateBetween2DPointsForY(\r\n el1.topleft,\r\n el1.bottomleft,\r\n middleYCoordinate\r\n );\r\n let x2 = interpolateBetween2DPointsForY(\r\n el2.topleft,\r\n el2.bottomleft,\r\n middleYCoordinate\r\n );\r\n if (x1 > x2) return 1;\r\n if (x1 < x2) return -1;\r\n return 0;\r\n });\r\n }\r\n }\r\n\r\n //#region\r\n // if( (yindex === ycoordinates.length-1) || (nextycoordinate - ycoordinate > EPS) )\r\n // if(true)\r\n // {\r\n\r\n let newOutPolygonRow: OutPolygon[] = []; //输出多边形\r\n\r\n // Build the output polygons for the next row in newOutPolygonRow:\r\n //现在 activepolygons 是最新的\r\n //为 newOutPolygonRow 中的下一行构建输出多边形:\r\n for (let activepolygonKey in activePolygons)\r\n {\r\n let activepolygon = activePolygons[activepolygonKey];\r\n\r\n let x = interpolateBetween2DPointsForY(\r\n activepolygon.topleft,\r\n activepolygon.bottomleft,\r\n yCoordinate\r\n );\r\n let topleft = new Vector2D(x, yCoordinate);\r\n x = interpolateBetween2DPointsForY(\r\n activepolygon.topright,\r\n activepolygon.bottomright,\r\n yCoordinate\r\n );\r\n let topright = new Vector2D(x, yCoordinate);\r\n x = interpolateBetween2DPointsForY(\r\n activepolygon.topleft,\r\n activepolygon.bottomleft,\r\n nextYCoordinate\r\n );\r\n let bottomleft = new Vector2D(x, nextYCoordinate);\r\n x = interpolateBetween2DPointsForY(\r\n activepolygon.topright,\r\n activepolygon.bottomright,\r\n nextYCoordinate\r\n );\r\n let bottomright = new Vector2D(x, nextYCoordinate);\r\n let outPolygon = {\r\n topleft: topleft,\r\n topright: topright,\r\n bottomleft: bottomleft,\r\n bottomright: bottomright,\r\n leftline: Line2D.fromPoints(topleft, bottomleft),\r\n rightline: Line2D.fromPoints(bottomright, topright)\r\n };\r\n\r\n if (newOutPolygonRow.length > 0)\r\n {\r\n let prevoutpolygon =\r\n newOutPolygonRow[newOutPolygonRow.length - 1];\r\n let d1 = outPolygon.topleft.distanceTo(prevoutpolygon.topright);\r\n let d2 = outPolygon.bottomleft.distanceTo(\r\n prevoutpolygon.bottomright\r\n );\r\n if (d1 < EPS && d2 < EPS)\r\n {\r\n // we can join this polygon with the one to the left:\r\n outPolygon.topleft = prevoutpolygon.topleft;\r\n outPolygon.leftline = prevoutpolygon.leftline;\r\n outPolygon.bottomleft = prevoutpolygon.bottomleft;\r\n newOutPolygonRow.splice(newOutPolygonRow.length - 1, 1);\r\n }\r\n }\r\n\r\n newOutPolygonRow.push(outPolygon);\r\n }\r\n\r\n if (yindex > 0)\r\n {\r\n // try to match the new polygons against the previous row:\r\n //尝试将新多边形与上一行匹配:\r\n let prevContinuedIndexes: { [key: number]: boolean; } = {};\r\n let matchedIndexes: { [key: number]: boolean; } = {};\r\n for (let i = 0; i < newOutPolygonRow.length; i++)\r\n {\r\n let thispolygon = newOutPolygonRow[i];\r\n for (let ii = 0; ii < prevOutPolygonRow.length; ii++)\r\n {\r\n if (!matchedIndexes[ii])\r\n {\r\n // not already processed?\r\n // We have a match if the sidelines are equal or if the top coordinates\r\n // are on the sidelines of the previous polygon\r\n let prevpolygon = prevOutPolygonRow[ii];\r\n if (prevpolygon.bottomleft.distanceTo(thispolygon.topleft) < EPS)\r\n {\r\n if (prevpolygon.bottomright.distanceTo(thispolygon.topright) < EPS)\r\n {\r\n // Yes, the top of this polygon matches the bottom of the previous:\r\n matchedIndexes[ii] = true;\r\n // Now check if the joined polygon would remain convex:\r\n let d1 = thispolygon.leftline.direction().x - prevpolygon.leftline.direction().x;\r\n let d2 = thispolygon.rightline.direction().x - prevpolygon.rightline.direction().x;\r\n let leftlinecontinues = Math.abs(d1) < EPS;\r\n let rightlinecontinues = Math.abs(d2) < EPS;\r\n let leftlineisconvex = leftlinecontinues || d1 >= 0;\r\n let rightlineisconvex = rightlinecontinues || d2 >= 0;\r\n if (leftlineisconvex && rightlineisconvex)\r\n {\r\n // yes, both sides have convex corners:\r\n // This polygon will continue the previous polygon\r\n thispolygon.outpolygon = prevpolygon.outpolygon;\r\n thispolygon.leftlinecontinues = leftlinecontinues;\r\n thispolygon.rightlinecontinues = rightlinecontinues;\r\n prevContinuedIndexes[ii] = true;\r\n }\r\n break;\r\n }\r\n }\r\n } // if(!prevcontinuedindexes[ii])\r\n } // for ii\r\n } // for i\r\n for (let ii = 0; ii < prevOutPolygonRow.length; ii++)\r\n {\r\n if (!prevContinuedIndexes[ii])\r\n {\r\n // polygon ends here\r\n // Finish the polygon with the last point(s):\r\n let prevpolygon = prevOutPolygonRow[ii];\r\n prevpolygon.outpolygon.rightpoints.push(prevpolygon.bottomright);\r\n if (prevpolygon.bottomright.distanceTo(prevpolygon.bottomleft) > EPS)\r\n {\r\n // polygon ends with a horizontal line:\r\n prevpolygon.outpolygon.leftpoints.push(prevpolygon.bottomleft);\r\n }\r\n // reverse the left half so we get a counterclockwise circle:\r\n prevpolygon.outpolygon.leftpoints.reverse();\r\n let points2d = prevpolygon.outpolygon.rightpoints.concat(prevpolygon.outpolygon.leftpoints);\r\n\r\n let vertices = points2d.map(v => new Vertex3D(orthobasis.to3D(v)));\r\n let polygon = new Polygon(vertices, plane);\r\n destpolygons.push(polygon);\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < newOutPolygonRow.length; i++)\r\n {\r\n let thispolygon = newOutPolygonRow[i];\r\n if (!thispolygon.outpolygon)\r\n {\r\n // polygon starts here:\r\n thispolygon.outpolygon = {\r\n leftpoints: [],\r\n rightpoints: []\r\n };\r\n thispolygon.outpolygon.leftpoints.push(thispolygon.topleft);\r\n if (thispolygon.topleft.distanceTo(thispolygon.topright) > EPS)\r\n {\r\n // we have a horizontal line at the top:\r\n thispolygon.outpolygon.rightpoints.push(thispolygon.topright);\r\n }\r\n }\r\n else\r\n {\r\n // continuation of a previous row\r\n if (!thispolygon.leftlinecontinues)\r\n {\r\n thispolygon.outpolygon.leftpoints.push(thispolygon.topleft);\r\n }\r\n if (!thispolygon.rightlinecontinues)\r\n {\r\n thispolygon.outpolygon.rightpoints.push(thispolygon.topright);\r\n }\r\n }\r\n }\r\n\r\n prevOutPolygonRow = newOutPolygonRow;\r\n // }\r\n //#endregion\r\n } // for yindex\r\n}\r\n","import { CSG } from \"../CSG\";\r\nimport { FuzzyCSGFactory } from \"../FuzzyFactory3d\";\r\nimport { Polygon } from \"../math/Polygon3\";\r\nimport { reTesselateCoplanarPolygons } from \"../math/reTesselateCoplanarPolygons\";\r\n\r\nexport function reTesselate(csg: CSG): CSG\r\n{\r\n if (csg.isRetesselated) return csg;\r\n\r\n let polygonsPerPlane: { [key: number]: Polygon[]; } = {};\r\n let isCanonicalized = csg.isCanonicalized;\r\n let fuzzyfactory = new FuzzyCSGFactory();\r\n\r\n for (let polygon of csg.polygons)\r\n {\r\n let plane = polygon.plane;\r\n if (!isCanonicalized)\r\n {\r\n // in order to identify polygons having the same plane, we need to canonicalize the planes\r\n // We don't have to do a full canonizalization (including vertices), to save time only do the planes and the shared data:\r\n plane = fuzzyfactory.getPlane(plane);\r\n }\r\n let tag = plane.getTag();\r\n if (!(tag in polygonsPerPlane)) polygonsPerPlane[tag] = [polygon];\r\n else polygonsPerPlane[tag].push(polygon);\r\n }\r\n\r\n let destpolygons: Polygon[] = [];\r\n for (let planetag in polygonsPerPlane)\r\n {\r\n let sourcepolygons = polygonsPerPlane[planetag];\r\n reTesselateCoplanarPolygons(sourcepolygons, destpolygons);\r\n }\r\n let resultCSG = new CSG(destpolygons);\r\n resultCSG.isRetesselated = true;\r\n return resultCSG;\r\n};\r\n","import { Matrix4 } from \"three\";\r\nimport { IsMirror } from \"./math/IsMirrot\";\r\nimport { Plane } from \"./math/Plane\";\r\nimport { Polygon } from \"./math/Polygon3\";\r\nimport { Vector3D } from \"./math/Vector3\";\r\nimport { Vertex3D } from \"./math/Vertex3\";\r\nimport { Tree } from \"./trees\";\r\nimport { canonicalizeCSG } from \"./utils/canonicalize\";\r\nimport { bounds } from \"./utils/csgMeasurements\";\r\nimport { reTesselate } from \"./utils/retesellate\";\r\n\r\n/** Class CSG\r\n * Holds a binary space partition tree representing a 3D solid. Two solids can\r\n * be combined using the `union()`, `subtract()`, and `intersect()` methods.\r\n * @constructor\r\n */\r\nexport class CSG\r\n{\r\n /** # 是否已精简重复点 */\r\n isCanonicalized: boolean = false;\r\n /** # 是否已合并轮廓 */\r\n isRetesselated: boolean = false;\r\n cachedBoundingBox: Vector3D[];\r\n constructor(public polygons: Polygon[] = [])\r\n {\r\n }\r\n /**\r\n * Return a new CSG solid representing the space in either this solid or\r\n * in the given solids. Neither this solid nor the given solids are modified.\r\n * @param {CSG[]} csg - list of CSG objects\r\n * @returns {CSG} new CSG object\r\n * @example\r\n * let C = A.union(B)\r\n * @example\r\n * +-------+ +-------+\r\n * | | | |\r\n * | A | | |\r\n * | +--+----+ = | +----+\r\n * +----+--+ | +----+ |\r\n * | B | | |\r\n * | | | |\r\n * +-------+ +-------+\r\n */\r\n union(csg: CSG | CSG[]): CSG\r\n {\r\n let csgs: CSG[];\r\n if (csg instanceof Array)\r\n {\r\n csgs = csg.slice(0);\r\n csgs.push(this);\r\n }\r\n else csgs = [this, csg];\r\n\r\n let i: number;\r\n // combine csg pairs in a way that forms a balanced binary tree pattern\r\n for (i = 1; i < csgs.length; i += 2)\r\n {\r\n csgs.push(csgs[i - 1].unionSub(csgs[i]));\r\n }\r\n return csgs[i - 1].reTesselated().canonicalized();\r\n }\r\n\r\n unionSub(csg: CSG, retesselate = false, canonicalize = false): CSG\r\n {\r\n if (!this.mayOverlap(csg))\r\n return this.unionForNonIntersecting(csg);\r\n\r\n let a = new Tree(this.polygons);\r\n let b = new Tree(csg.polygons);\r\n a.clipTo(b);\r\n\r\n // b.clipTo(a, true); // ERROR: this doesn't work\r\n b.clipTo(a);\r\n b.invert();\r\n b.clipTo(a);\r\n b.invert();\r\n\r\n let newpolygons = [...a.allPolygons(), ...b.allPolygons()];\r\n let resultCSG = new CSG(newpolygons);\r\n if (retesselate) resultCSG = resultCSG.reTesselated();\r\n if (canonicalize) resultCSG = resultCSG.canonicalized();\r\n return resultCSG;\r\n }\r\n\r\n // Like union, but when we know that the two solids are not intersecting\r\n // Do not use if you are not completely sure that the solids do not intersect!\r\n unionForNonIntersecting(csg: CSG): CSG\r\n {\r\n let newpolygons = [...this.polygons, ...csg.polygons];\r\n let result = new CSG(newpolygons);\r\n result.isCanonicalized = this.isCanonicalized && csg.isCanonicalized;\r\n result.isRetesselated = this.isRetesselated && csg.isRetesselated;\r\n return result;\r\n }\r\n\r\n /**\r\n * Return a new CSG solid representing space in this solid but\r\n * not in the given solids. Neither this solid nor the given solids are modified.\r\n * @returns new CSG object\r\n * @example\r\n * let C = A.subtract(B)\r\n * @example\r\n * +-------+ +-------+\r\n * | | | |\r\n * | A | | |\r\n * | +--+----+ = | +--+\r\n * +----+--+ | +----+\r\n * | B |\r\n * | |\r\n * +-------+\r\n */\r\n subtract(csg: CSG | CSG[]): CSG\r\n {\r\n let csgs: CSG[];\r\n if (csg instanceof Array)\r\n csgs = csg;\r\n else\r\n csgs = [csg];\r\n let result: CSG = this;\r\n for (let i = 0; i < csgs.length; i++)\r\n {\r\n let islast = i === csgs.length - 1;\r\n result = result.subtractSub(csgs[i], islast, islast);\r\n }\r\n return result;\r\n }\r\n\r\n subtractSub(csg: CSG, retesselate = false, canonicalize = false): CSG\r\n {\r\n let a = new Tree(this.polygons);\r\n let b = new Tree(csg.polygons);\r\n a.invert();\r\n a.clipTo(b);\r\n b.clipTo(a, true);\r\n a.addPolygons(b.allPolygons());\r\n a.invert();\r\n let result = new CSG(a.allPolygons());\r\n // if (retesselate) result = result.reTesselated();\r\n // if (canonicalize) result = result.canonicalized();\r\n return result;\r\n }\r\n\r\n /**\r\n * Return a new CSG solid representing space in both this solid and\r\n * in the given solids. Neither this solid nor the given solids are modified.\r\n * let C = A.intersect(B)\r\n * @returns new CSG object\r\n * @example\r\n * +-------+\r\n * | |\r\n * | A |\r\n * | +--+----+ = +--+\r\n * +----+--+ | +--+\r\n * | B |\r\n * | |\r\n * +-------+\r\n */\r\n intersect(csg: CSG | CSG[]): CSG\r\n {\r\n let csgs: CSG[];\r\n if (csg instanceof Array)\r\n csgs = csg;\r\n else\r\n csgs = [csg];\r\n let result: CSG = this;\r\n for (let i = 0; i < csgs.length; i++)\r\n {\r\n let islast = i === csgs.length - 1;\r\n result = result.intersectSub(csgs[i], islast, islast);\r\n }\r\n return result;\r\n }\r\n\r\n intersectSub(csg: CSG, retesselate = false, canonicalize = false): CSG\r\n {\r\n let a = new Tree(this.polygons);\r\n let b = new Tree(csg.polygons);\r\n a.invert();\r\n b.clipTo(a);\r\n b.invert();\r\n a.clipTo(b);\r\n b.clipTo(a);\r\n a.addPolygons(b.allPolygons());\r\n a.invert();\r\n let result = new CSG(a.allPolygons());\r\n // if (retesselate) result = result.reTesselated();\r\n // if (canonicalize) result = result.canonicalized();\r\n return result;\r\n }\r\n\r\n /**\r\n * Return a new CSG solid with solid and empty space switched.\r\n * This solid is not modified.\r\n */\r\n invert(): CSG\r\n {\r\n let flippedpolygons = this.polygons.map(p => p.flipped());\r\n return new CSG(flippedpolygons);\r\n }\r\n\r\n // Affine transformation of CSG object. Returns a new CSG object\r\n transform1(matrix4x4: Matrix4)\r\n {\r\n let newpolygons = this.polygons.map(p =>\r\n {\r\n return p.transform(matrix4x4);\r\n });\r\n let result = new CSG(newpolygons);\r\n result.isCanonicalized = this.isCanonicalized;\r\n result.isRetesselated = this.isRetesselated;\r\n return result;\r\n }\r\n\r\n /**\r\n * Return a new CSG solid that is transformed using the given Matrix.\r\n * Several matrix transformations can be combined before transforming this solid.\r\n * @param {CSG.Matrix4x4} matrix4x4 - matrix to be applied\r\n * @returns {CSG} new CSG object\r\n * @example\r\n * var m = new CSG.Matrix4x4()\r\n * m = m.multiply(CSG.Matrix4x4.rotationX(40))\r\n * m = m.multiply(CSG.Matrix4x4.translation([-.5, 0, 0]))\r\n * let B = A.transform(m)\r\n */\r\n transform(matrix4x4: Matrix4): this\r\n {\r\n let ismirror = IsMirror(matrix4x4);\r\n let transformedvertices = {};\r\n let transformedplanes = {};\r\n let newpolygons = this.polygons.map(p =>\r\n {\r\n let newplane: Plane;\r\n let plane = p.plane;\r\n let planetag = plane.getTag();\r\n if (planetag in transformedplanes)\r\n {\r\n newplane = transformedplanes[planetag];\r\n } else\r\n {\r\n newplane = plane.transform(matrix4x4);\r\n transformedplanes[planetag] = newplane;\r\n }\r\n let newvertices = p.vertices.map(v =>\r\n {\r\n let newvertex: Vertex3D;\r\n let vertextag = v.getTag();\r\n if (vertextag in transformedvertices)\r\n {\r\n newvertex = transformedvertices[vertextag];\r\n }\r\n else\r\n {\r\n newvertex = v.transform(matrix4x4);\r\n transformedvertices[vertextag] = newvertex;\r\n }\r\n return newvertex;\r\n });\r\n if (ismirror) newvertices.reverse();\r\n return new Polygon(newvertices, newplane);\r\n });\r\n let result = new CSG(newpolygons);\r\n result.isRetesselated = this.isRetesselated;\r\n result.isCanonicalized = this.isCanonicalized;\r\n return result as this;\r\n }\r\n canonicalized()\r\n {\r\n if (this.isCanonicalized) return this;\r\n return canonicalizeCSG(this);\r\n }\r\n reTesselated()\r\n {\r\n if (this.isRetesselated) return this;\r\n return reTesselate(this);\r\n }\r\n\r\n //如果两个实体有可能重叠,返回true\r\n mayOverlap(csg: CSG): boolean\r\n {\r\n if (this.polygons.length === 0 || csg.polygons.length === 0)\r\n return false;\r\n\r\n let mybounds = bounds(this);\r\n let otherbounds = bounds(csg);\r\n if (mybounds[1].x < otherbounds[0].x) return false;\r\n if (mybounds[0].x > otherbounds[1].x) return false;\r\n if (mybounds[1].y < otherbounds[0].y) return false;\r\n if (mybounds[0].y > otherbounds[1].y) return false;\r\n if (mybounds[1].z < otherbounds[0].z) return false;\r\n if (mybounds[0].z > otherbounds[1].z) return false;\r\n return true;\r\n }\r\n\r\n toTriangles(): Polygon[]\r\n {\r\n let polygons: Polygon[] = [];\r\n for (let poly of this.polygons)\r\n {\r\n let firstVertex = poly.vertices[0];\r\n for (let i = poly.vertices.length - 3; i >= 0; i--)\r\n {\r\n polygons.push(\r\n new Polygon(\r\n [\r\n firstVertex,\r\n poly.vertices[i + 1],\r\n poly.vertices[i + 2]\r\n ],\r\n poly.plane\r\n )\r\n );\r\n }\r\n }\r\n return polygons;\r\n }\r\n}\r\n","import { BufferGeometry, Face3, Geometry, Vector2, Vector3 } from \"three\";\r\nimport { equalv3, ZeroVec } from \"../../Geometry/GeUtils\";\r\nimport { CSG } from \"./CSG\";\r\nimport { Polygon } from \"./math/Polygon3\";\r\nimport { Vector2D } from \"./math/Vector2\";\r\nimport { Vector3D } from \"./math/Vector3\";\r\nimport { Vertex3D } from \"./math/Vertex3\";\r\n\r\nexport function Geometry2CSG(geometry: Geometry | BufferGeometry): CSG\r\n{\r\n if (geometry instanceof BufferGeometry)\r\n geometry = new Geometry().fromBufferGeometry(geometry);\r\n\r\n let polygons: Polygon[] = [];\r\n for (let i = 0; i < geometry.faces.length; i++)\r\n {\r\n let face = geometry.faces[i];\r\n let faceVertexUvs = geometry.faceVertexUvs[0][i];\r\n let vertices: Vertex3D[] = [];\r\n\r\n if (face instanceof Face3)\r\n {\r\n let uv = faceVertexUvs ? faceVertexUvs[0].clone() : null;\r\n let vertex1 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.a]), new Vector2D(uv.x, uv.y));\r\n vertices.push(vertex1);\r\n\r\n uv = faceVertexUvs ? faceVertexUvs[1].clone() : null;\r\n let vertex2 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.b]), new Vector2D(uv.x, uv.y));\r\n vertices.push(vertex2);\r\n\r\n uv = faceVertexUvs ? faceVertexUvs[2].clone() : null;\r\n let vertex3 = new Vertex3D(Vector3ToVector3D(geometry.vertices[face.c]), new Vector2D(uv.x, uv.y));\r\n vertices.push(vertex3);\r\n }\r\n\r\n let polygon = new Polygon(vertices);\r\n let normal = Vector3DToVector3(polygon.plane.normal);\r\n if (!isNaN(polygon.plane.w) && !equalv3(normal, new Vector3()))\r\n polygons.push(polygon);\r\n }\r\n\r\n return new CSG(polygons);\r\n}\r\n\r\nexport function CSG2Geometry(csg: CSG): Geometry\r\n{\r\n let geo = new Geometry;\r\n let uvs: Vector2[][] = geo.faceVertexUvs[0];\r\n\r\n for (let poly of csg.polygons)\r\n {\r\n let normal = Vector3DToVector3(poly.plane.normal);\r\n if (equalv3(normal, ZeroVec)) continue;\r\n for (let v of poly.vertices)\r\n {\r\n v.tag = geo.vertices.length;\r\n geo.vertices.push(Vector3DToVector3(v.pos));\r\n }\r\n\r\n let firstVertex = poly.vertices[0];\r\n\r\n for (let i = poly.vertices.length - 3; i >= 0; i--)\r\n {\r\n let [a, b, c] = [\r\n firstVertex.tag,\r\n poly.vertices[i + 1].tag,\r\n poly.vertices[i + 2].tag\r\n ];\r\n let f = new Face3(a, b, c, normal);\r\n\r\n geo.faces.push(f);\r\n uvs.push([\r\n Vector2DToVector2(firstVertex.uv),\r\n Vector2DToVector2(poly.vertices[i + 1].uv),\r\n Vector2DToVector2(poly.vertices[i + 2].uv)\r\n ]);\r\n }\r\n }\r\n return geo;\r\n}\r\n\r\nfunction Vector3ToVector3D(v: Vector3): Vector3D\r\n{\r\n return new Vector3D(v.x, v.y, v.z);\r\n}\r\n\r\nexport function Vector3DToVector3(v: Vector3D): Vector3\r\n{\r\n return new Vector3(v.x, v.y, v.z);\r\n}\r\nfunction Vector2DToVector2(v: Vector2D): Vector2\r\n{\r\n return new Vector2(v.x, v.y);\r\n}\r\n","import { ExtrudeBufferGeometry, UVGenerator, Vector2 } from \"three\";\r\n\r\nclass BoardUVGenerator implements UVGenerator\r\n{\r\n generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number)\r\n {\r\n var a_x = vertices[indexA * 3];\r\n var a_y = vertices[indexA * 3 + 1];\r\n var b_x = vertices[indexB * 3];\r\n var b_y = vertices[indexB * 3 + 1];\r\n var c_x = vertices[indexC * 3];\r\n var c_y = vertices[indexC * 3 + 1];\r\n\r\n return [\r\n new Vector2(a_x, a_y),\r\n new Vector2(b_x, b_y),\r\n new Vector2(c_x, c_y)\r\n ];\r\n }\r\n generateSideWallUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number)\r\n {\r\n var a_x = vertices[indexA * 3];\r\n var a_y = vertices[indexA * 3 + 1];\r\n var a_z = vertices[indexA * 3 + 2];\r\n var b_x = vertices[indexB * 3];\r\n var b_y = vertices[indexB * 3 + 1];\r\n var b_z = vertices[indexB * 3 + 2];\r\n var c_x = vertices[indexC * 3];\r\n var c_y = vertices[indexC * 3 + 1];\r\n var c_z = vertices[indexC * 3 + 2];\r\n var d_x = vertices[indexD * 3];\r\n var d_y = vertices[indexD * 3 + 1];\r\n var d_z = vertices[indexD * 3 + 2];\r\n let pts: Vector2[];\r\n if (Math.abs(a_y - b_y) < 0.01)\r\n {\r\n pts = [\r\n new Vector2(a_z - 1, a_x),\r\n new Vector2(b_z - 1, b_x),\r\n new Vector2(c_z - 1, c_x),\r\n new Vector2(d_z - 1, d_x)\r\n ];\r\n\r\n }\r\n else\r\n {\r\n pts = [\r\n new Vector2(a_z - 1, a_y),\r\n new Vector2(b_z - 1, b_y),\r\n new Vector2(c_z - 1, c_y),\r\n new Vector2(d_z - 1, d_y)\r\n ];\r\n }\r\n return pts;\r\n }\r\n}\r\n\r\nclass BoardUVGenerator2 extends BoardUVGenerator\r\n{\r\n generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number)\r\n {\r\n var a_x = vertices[indexA * 3];\r\n var a_y = vertices[indexA * 3 + 1];\r\n var b_x = vertices[indexB * 3];\r\n var b_y = vertices[indexB * 3 + 1];\r\n var c_x = vertices[indexC * 3];\r\n var c_y = vertices[indexC * 3 + 1];\r\n\r\n return [\r\n new Vector2(a_y, a_x),\r\n new Vector2(b_y, b_x),\r\n new Vector2(c_y, c_x)\r\n ];\r\n }\r\n}\r\n\r\nexport let boardUVGenerator = new BoardUVGenerator();\r\nexport let boardUVGenerator2 = new BoardUVGenerator2();\r\n","import { Vector3 } from \"three\";\r\nimport { ToFixed } from \"../Common/Utils\";\r\nimport { CSG } from \"../csg/core/CSG\";\r\nimport { Polygon } from \"../csg/core/math/Polygon3\";\r\nimport { Vec3 } from \"./IVec3\";\r\n\r\n/**\r\n * 解决 THREEBSP(CSG) 产生的结果没有办法得到分裂的个数.\r\n * 本类分析了THREEBSP的组合情况.\r\n * \r\n * Example:\r\n * \r\n * let topology = new BSPGroupParse(csg);\r\n * topology.parse();\r\n */\r\nexport class BSPGroupParse\r\n{\r\n constructor(bsp?: CSG, public fractionDigits = 1)\r\n {\r\n if (bsp)\r\n for (let poly of bsp.polygons)\r\n this.Add(poly);\r\n }\r\n Add(poly: Polygon)\r\n {\r\n let strs = poly.vertices.map(p => this.GenerateP(p.pos));\r\n let str0 = strs[0];\r\n let s0 = this.Get(str0);\r\n for (let i = 1; i < strs.length; i++)\r\n {\r\n let stri = strs[i];\r\n s0.add(stri);\r\n this.Get(stri).add(str0);\r\n }\r\n }\r\n\r\n /**\r\n * 返回组合点\r\n */\r\n Parse(): Vector3[][]\r\n {\r\n let set = new Set([...this.map.keys()]);\r\n let res: Vector3[][] = [];\r\n while (set.size > 0)\r\n {\r\n let fp = set[Symbol.iterator]().next().value;\r\n set.delete(fp);\r\n let cset = new Set();\r\n cset.add(fp);\r\n this.GetPts(fp, cset, set);\r\n let pts = [...cset].map(str =>\r\n {\r\n let v3 = this.vecMap.get(str);\r\n return new Vector3(v3.x, v3.y, v3.z);\r\n });\r\n res.push(pts);\r\n }\r\n return res;\r\n }\r\n private map = new Map>();\r\n private Get(vstr: string): Set\r\n {\r\n if (!this.map.has(vstr))\r\n {\r\n let s = new Set();\r\n this.map.set(vstr, s);\r\n return s;\r\n }\r\n return this.map.get(vstr);\r\n }\r\n private GetPts(p: string, cset: Set, oset: Set)\r\n {\r\n let strs = this.map.get(p);\r\n for (let str of strs)\r\n {\r\n if (!cset.has(str))\r\n {\r\n cset.add(str);\r\n oset.delete(str);\r\n this.GetPts(str, cset, oset);\r\n }\r\n }\r\n }\r\n private vecMap = new Map();\r\n private GenerateP(v: Vec3)\r\n {\r\n let str = [v.x, v.y, v.z].map(n => ToFixed(n, this.fractionDigits)).join(\",\");\r\n this.vecMap.set(str, v);\r\n return str;\r\n }\r\n}\r\n","import { Geometry, Matrix4, Vector3 } from \"three\";\n\nexport function ScaleUV(geo: Geometry, scale = 1e-3)\n{\n for (let uvsg of geo.faceVertexUvs)\n {\n for (let uvs of uvsg)\n {\n for (let uv of uvs)\n {\n uv.multiplyScalar(scale);\n }\n }\n }\n}\nexport function ScaleUV2(geo: Geometry, ocs: Matrix4, xScale = 1e-3, yScale = 1e-3, isInvert = false)\n{\n for (let uvsg of geo.faceVertexUvs)\n {\n for (let uvs of uvsg)\n {\n for (let uv of uvs)\n {\n let p = new Vector3(uv.x, uv.y).applyMatrix4(ocs);\n uv.x = p.x;\n uv.y = p.y;\n if (isInvert)\n {\n uv.x /= yScale;\n uv.y /= xScale;\n }\n else\n {\n uv.x /= xScale;\n uv.y /= yScale;\n }\n }\n }\n }\n}\n","import { Matrix3, Matrix4, Path, Shape as TShape, Vector3, Box3 } from 'three';\r\nimport { arrayRemoveIf } from '../Common/ArrayExt';\r\nimport { ObjectSnapMode } from '../Editor/ObjectSnapMode';\r\nimport { CADFiler } from './CADFiler';\r\nimport { Contour } from './Contour';\r\nimport { Circle } from './Entity/Circle';\r\nimport { Curve } from './Entity/Curve';\r\nimport { Polyline } from './Entity/Polyline';\r\nimport { equaln } from '../Geometry/GeUtils';\r\nimport { IntersectBox2 } from '../Geometry/Box';\r\n\r\nexport class Shape\r\n{\r\n private _Outline: Contour;\r\n private _Holes: Contour[] = [];\r\n private _Shape: TShape = new TShape();\r\n constructor(out?: Contour, hols?: Contour[])\r\n {\r\n this._Outline = out || new Contour();\r\n hols && this._Holes.push(...hols);\r\n }\r\n\r\n get Outline()\r\n {\r\n return this._Outline;\r\n }\r\n get Holes()\r\n {\r\n return this._Holes;\r\n }\r\n get Area()\r\n {\r\n let outlineArea = this._Outline.Area;\r\n let holeArea = this._Holes.map(l => l.Area).reduce((a1, a2) => a1 + a2, 0);\r\n return outlineArea - holeArea;\r\n }\r\n get BoundingBox()\r\n {\r\n return this._Outline.BoundingBox;\r\n }\r\n set Outline(cus: Contour)\r\n {\r\n this._Outline = cus;\r\n this.UpdateShape();\r\n }\r\n set Holes(cus: Contour[])\r\n {\r\n this._Holes = cus;\r\n this.UpdateShape();\r\n }\r\n get Shape()\r\n {\r\n this.UpdateShape();\r\n return this._Shape;\r\n }\r\n get Position()\r\n {\r\n return this._Outline.Curve.Position;\r\n }\r\n set Position(p: Vector3)\r\n {\r\n let vec = p.clone().sub(this._Outline.Curve.Position);\r\n this._Outline.Curve.Position = p;\r\n for (let h of this._Holes)\r\n h.Curve.Position = h.Curve.Position.add(vec);\r\n }\r\n Z0()\r\n {\r\n this._Outline.Curve.Z0();\r\n for (let h of this._Holes)\r\n h.Curve.Z0();\r\n return this;\r\n }\r\n\r\n MatrixPlanarizere()\r\n {\r\n this._Outline.Curve.MatrixPlanarizere();\r\n for (let h of this._Holes)\r\n h.Curve.MatrixPlanarizere();\r\n }\r\n\r\n ApplyMatrix(m: Matrix4)\r\n {\r\n this._Outline.Curve.ApplyMatrix(m);\r\n this._Holes.forEach(h => h.Curve.ApplyMatrix(m));\r\n return this;\r\n }\r\n ApplyScaleMatrix(m: Matrix4): this\r\n {\r\n\r\n let cu = this.Outline.Curve;\r\n let cus = this._Holes.map(h => h.Curve);\r\n cus.unshift(cu);\r\n for (let c of cus)\r\n {\r\n c.ApplyMatrix(c.OCS);\r\n c.ApplyMatrix(m);\r\n c.ApplyMatrix(c.OCSInv);\r\n }\r\n\r\n return this;\r\n }\r\n Explode()\r\n {\r\n let cus: Curve[] = [];\r\n let contours: Contour[] = [this._Outline, ...this._Holes];\r\n for (let con of contours)\r\n {\r\n if (con.Curve instanceof Polyline)\r\n cus.push(...con.Curve.Explode());\r\n else\r\n cus.push(con.Curve.Clone());\r\n }\r\n return cus;\r\n }\r\n Clone()\r\n {\r\n let shape = new Shape();\r\n shape.Outline = this._Outline.Clone();\r\n shape.Holes = this.Holes.map(h => h.Clone());\r\n return shape;\r\n }\r\n SetColor(color: number)\r\n {\r\n this._Outline.Curve.ColorIndex = color;\r\n this._Holes.forEach(h => h.Curve.ColorIndex = color);\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetStretchPoints();\r\n case ObjectSnapMode.Mid:\r\n case ObjectSnapMode.Cen:\r\n case ObjectSnapMode.Nea:\r\n case ObjectSnapMode.Ext:\r\n case ObjectSnapMode.Per:\r\n case ObjectSnapMode.Tan:\r\n {\r\n let cus: Curve[] = [this._Outline.Curve];\r\n for (let h of this._Holes)\r\n {\r\n cus.push(h.Curve);\r\n }\r\n let pts: Vector3[] = [];\r\n for (let c of cus)\r\n {\r\n pts.push(...c.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform));\r\n }\r\n return pts;\r\n }\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n GetGripPoints()\r\n {\r\n let pts = this.Outline.Curve.GetGripPoints();\r\n for (let h of this._Holes)\r\n {\r\n pts.push(...h.Curve.GetGripPoints());\r\n }\r\n return pts;\r\n }\r\n MoveGripPoints(indexList: Array, vec: Vector3)\r\n {\r\n let i = indexList[0];\r\n let outlineIndex = this._Outline.Curve.GetGripPoints().length;\r\n\r\n let cu = this._Outline.Curve;\r\n\r\n if (i >= outlineIndex)\r\n {\r\n for (let h of this._Holes)\r\n {\r\n let len = h.Curve.GetGripPoints().length;\r\n if (indexList[0] < outlineIndex + len)\r\n {\r\n indexList = [indexList[0] - outlineIndex];\r\n cu = h.Curve;\r\n break;\r\n }\r\n outlineIndex += len;\r\n }\r\n }\r\n cu.MoveGripPoints(indexList, vec);\r\n }\r\n GetStretchPoints()\r\n {\r\n let pts = this.Outline.Curve.GetStretchPoints();\r\n for (let h of this._Holes)\r\n {\r\n pts.push(...h.Curve.GetStretchPoints());\r\n }\r\n return pts;\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n let outlen = 0;\r\n for (let cu of [this._Outline.Curve, ...this._Holes.map(h => h.Curve)])\r\n {\r\n let count = cu.GetStretchPoints().length;\r\n let refIndex = outlen + count;\r\n let curIndexs = [];\r\n while (indexList.length)\r\n {\r\n if (indexList[0] < refIndex)\r\n curIndexs.push(indexList.shift() - outlen);\r\n else\r\n break;\r\n }\r\n cu.MoveStretchPoints(curIndexs, vec);\r\n\r\n if (indexList.length === 0)\r\n break;\r\n\r\n outlen += count;\r\n }\r\n }\r\n //交集 如果成功返回一个面域 失败返回0个\r\n IntersectionBoolOperation(targetShape: Shape): Shape[]\r\n {\r\n let resOutlines = this._Outline.IntersectionBoolOperation(targetShape._Outline);\r\n let cus = this.targetOutlineSubHoleOutline(resOutlines, Shape.mergeContours([...this._Holes, ...targetShape._Holes]));\r\n return Shape.pairHoleAndOutline(cus);\r\n }\r\n\r\n //并集,如果成功返回1个形状,不成功返回2个形状\r\n UnionBoolOperation(targetShape: Shape, checkIntersect = false): Shape[]\r\n {\r\n if (checkIntersect && !this.BoundingBox.intersectsBox(targetShape.BoundingBox, 1e-3)) return [this, targetShape];\r\n\r\n let { contours, holes } = this._Outline.UnionBoolOperation(targetShape._Outline);\r\n\r\n let shapes: Shape[] = [];\r\n\r\n //提取出所有的孔洞, 目标线段孔洞和原线段差,如果孔洞和目标相减后有被包围轮廓,应把这个单独提取出来作为形状\r\n let unionHoles: Contour[] = [];\r\n\r\n //合并运算时提取出运算后的孔洞和形状\r\n const pickUpHoleOrShape = (srcHoles: Contour[], tarHoles: Contour[], outline: Contour) =>\r\n {\r\n srcHoles.forEach(cu =>\r\n {\r\n let tmpContours = cu.SubstactBoolOperation(outline).sort((a, b) => b.Area - a.Area);\r\n let isAllContainered = tmpContours.length > 1 && tmpContours.slice(1).every((cu, index) => tmpContours[0].CuInOutline(cu.Curve));\r\n\r\n //洞是否被最大的洞包含,是,则把被包含的洞都提取出来加入形状数组\r\n if (isAllContainered)\r\n {\r\n shapes.push(...this.targetOutlinesSubHoles(tmpContours.slice(1).map(c => new Shape(c)), tarHoles.map(c => new Shape(c))));\r\n } else\r\n unionHoles.push(...tmpContours);\r\n });\r\n\r\n };\r\n pickUpHoleOrShape(targetShape._Holes, this._Holes, this._Outline);\r\n pickUpHoleOrShape(this._Holes, targetShape._Holes, targetShape._Outline);\r\n targetShape._Holes.forEach(cu =>\r\n {\r\n this._Holes.forEach(c =>\r\n {\r\n unionHoles.push(...c.IntersectionBoolOperation(cu));\r\n });\r\n });\r\n\r\n shapes.push(...this.targetOutlinesSubHoles(contours.map(c => new Shape(c, holes)), unionHoles.map(c => new Shape(c))));\r\n return shapes;\r\n }\r\n\r\n /**\r\n * 如果完全被减掉,就返回0个.其他的返回1个或者n个\r\n * @param targetShapes 已经是合并后的形状数组\r\n */\r\n SubstactBoolOperation(targetShapes: Shape[])\r\n {\r\n let originOutline = this.Outline;\r\n let targetOutlines = targetShapes.map(s => s.Outline);\r\n const { holes, outlines } = originOutline.GetSubtractListByMoreTargets(targetOutlines);\r\n holes.push(...this.Holes);\r\n\r\n let newShapes: Shape[] = [];\r\n\r\n if (outlines.length === 1 && equaln(outlines[0].Area, originOutline.Area))\r\n {\r\n newShapes = [new Shape(outlines[0], Shape.mergeContours(holes))];\r\n }\r\n else if (holes.length === 0)\r\n {\r\n newShapes = outlines.map(o => new Shape(o));\r\n }\r\n else\r\n {\r\n for (let outline of outlines)\r\n newShapes.push(...new Shape(outline).SubstactBoolOperation(holes.map(h => new Shape(h))));\r\n }\r\n\r\n let holeShape = this.Holes.map(h => new Shape(h));\r\n\r\n for (let target of targetShapes)\r\n {\r\n let tmpInterList: Contour[] = [];\r\n if (target.Holes.length === 0) continue;\r\n for (let hole of target.Holes)\r\n {\r\n let list = hole.IntersectionBoolOperation(originOutline);\r\n tmpInterList.push(...list);\r\n }\r\n\r\n for (let ot of tmpInterList)\r\n {\r\n let subShapes: Shape[] = [];\r\n subShapes.push(...holeShape);\r\n for (let t of targetShapes)\r\n {\r\n if (t !== target)\r\n subShapes.push(new Shape(t.Outline));\r\n }\r\n\r\n newShapes.push(...new Shape(ot).SubstactBoolOperation(subShapes));\r\n }\r\n\r\n }\r\n\r\n return newShapes;\r\n }\r\n Equal(targetShape: Shape)\r\n {\r\n if (this._Outline.Equal(targetShape._Outline))\r\n {\r\n return this._Holes.length === targetShape._Holes.length\r\n && this._Holes.every(h1 =>\r\n targetShape._Holes.some(h2 => h1.Equal(h2))\r\n );\r\n }\r\n return false;\r\n }\r\n private targetOutlinesSubHoles(targetShapes: Shape[], holeShapes: Shape[])\r\n {\r\n let resultShapes: Shape[] = [];\r\n for (let ts of targetShapes)\r\n {\r\n let res = ts.SubstactBoolOperation(holeShapes);\r\n resultShapes.push(...res);\r\n }\r\n return resultShapes;\r\n\r\n }\r\n /**\r\n * 目标轮廓减去洞\r\n *\r\n * @private\r\n * @param {Contour[]} tarContours 轮廓列表\r\n * @param {Contour[]} holes 洞列表\r\n * @returns {Contour[]} 新的轮廓列表\r\n * @memberof Shape\r\n */\r\n private targetOutlineSubHoleOutline(tarContours: Contour[], holes: Contour[]): Contour[]\r\n {\r\n if (!holes.length)\r\n return tarContours;\r\n\r\n let resultContours: Contour[] = [];\r\n\r\n for (let minuendContour of tarContours)\r\n {\r\n //需要被差集的形状列表\r\n let tmpContour: Contour[] = [minuendContour];\r\n for (let hole of holes)\r\n {\r\n //缓存差集生成的轮廓\r\n let tmps: Contour[] = [];\r\n tmpContour.forEach(r =>\r\n {\r\n let cus = r.SubstactBoolOperation(hole);\r\n tmps.push(...cus);\r\n });\r\n tmpContour = tmps;//使用新生成的进行下一轮计算\r\n }\r\n resultContours.push(...tmpContour);\r\n }\r\n\r\n return resultContours;\r\n }\r\n\r\n //整理轮廓数组,匹配洞和外轮廓\r\n static pairHoleAndOutline(contours: Contour[]): Shape[]\r\n {\r\n let shapes: Shape[] = [];\r\n contours.sort((a, b) => b.Area - a.Area);\r\n while (contours.length)\r\n {\r\n //洞列表\r\n let tmpHoles: Contour[] = [];\r\n let outline: Contour = contours.shift();\r\n\r\n //取出包含的洞\r\n arrayRemoveIf(contours, (con: Contour) =>\r\n {\r\n let bisIn = outline.CuInOutline(con.Curve);\r\n if (bisIn) tmpHoles.push(con);\r\n return bisIn;\r\n });\r\n let holes: Contour[] = Shape.removeBeContaineredHoles(tmpHoles);\r\n shapes.push(new Shape(outline, holes));\r\n }\r\n return shapes;\r\n }\r\n /**\r\n * 合并洞,本质是使用(并集算法)将可以并集的洞合并在一起,减少洞的数量.\r\n * canSidewipe 用于走刀,擦边的,包含的,是否合并\r\n */\r\n static mergeContours(holes: Contour[], canSidewipe = true): Contour[]\r\n {\r\n if (holes.length <= 1) return holes;\r\n let rets: Contour[] = [];//返回的合并轮廓\r\n let cache = new Map();\r\n\r\n while (holes.length > 0)\r\n {\r\n let c = holes.shift();//取第一个\r\n let b1 = cache.get(c);\r\n if (!b1)\r\n {\r\n b1 = c.BoundingBox;\r\n cache.set(c, b1);\r\n }\r\n\r\n while (true)\r\n {\r\n //剩余的 不相交的形状表 remaining\r\n let remHoles = holes.filter(ic =>\r\n {\r\n let b2 = cache.get(ic);\r\n if (!b2)\r\n {\r\n b2 = ic.BoundingBox;\r\n cache.set(ic, b2);\r\n }\r\n\r\n if (!IntersectBox2(b1, b2))\r\n return true;\r\n\r\n let unions = c.UnionBoolOperation(ic);\r\n\r\n if (unions.holes.length > 0)\r\n console.warn(\"未知情况\");\r\n\r\n if (unions.contours.length === 1)//并集成功\r\n {\r\n if (!canSidewipe)\r\n {\r\n if (equaln(c.Area + ic.Area, unions.contours[0].Area, 0.1))\r\n return true;\r\n if (equaln(unions.contours[0].Area, Math.max(c.Area, ic.Area), 0.1))\r\n return true;\r\n }\r\n c = unions.contours[0]; //更新c\r\n b1 = c.BoundingBox;\r\n cache.set(c, b1);\r\n }\r\n\r\n return unions.contours.length !== 1; //过滤出并集失败的形状\r\n });\r\n\r\n //如果c和剩余的轮廓都不相交,那么退出\r\n if (remHoles.length === holes.length)\r\n {\r\n rets.push(c); //c已经是一个独立的轮廓,不和任意轮廓相交(不能合并了)\r\n break;//退出循环.下一个\r\n }\r\n else\r\n holes = remHoles; //更新为剩下的轮廓列表\r\n }\r\n }\r\n\r\n return rets;\r\n }\r\n\r\n /**\r\n * 移除被包含的洞.(移除无效的洞,已经被更大的洞包含)\r\n *\r\n * @private\r\n * @param {Contour[]} tmpHoles 洞列表\r\n * @returns {Contour[]} 返回的洞列表都不会互相包含.\r\n * @memberof Shape\r\n */\r\n private static removeBeContaineredHoles(tmpHoles: Contour[]): Contour[]\r\n {\r\n let holes: Contour[] = [];\r\n if (tmpHoles.length <= 1) return tmpHoles;\r\n tmpHoles.sort((a, b) => b.Area - a.Area);\r\n while (tmpHoles.length)\r\n {\r\n let srcHole = tmpHoles.shift();\r\n holes.push(srcHole);\r\n\r\n //移除包含的洞\r\n arrayRemoveIf(tmpHoles, h => srcHole.CuInOutline(h.Curve));\r\n }\r\n return holes;\r\n }\r\n UpdateShape()\r\n {\r\n this._Shape = this.Outline.Shape;\r\n for (let h of this._Holes)\r\n {\r\n if (h.Curve instanceof Polyline)\r\n h.Curve.UpdateMatrixTo(this.Outline.Curve.OCS);\r\n\r\n if (h.Curve instanceof Circle)\r\n {\r\n let sp = new Path();\r\n let cen = h.Curve.Center.applyMatrix4(this.Outline.Curve.OCSInv);\r\n sp.ellipse(cen.x, cen.y, h.Curve.Radius, h.Curve.Radius, 0, 2 * Math.PI, false, 0);\r\n this._Shape.holes.push(sp);\r\n }\r\n else\r\n this._Shape.holes.push(h.Shape);\r\n }\r\n }\r\n //读写文件\r\n ReadFile(file: CADFiler)\r\n {\r\n let ver = file.Read();//1\r\n this._Outline = Contour.CreateContour([file.ReadObject() as Curve]);\r\n\r\n let count = file.Read();\r\n for (let i = 0; i < count; i++)\r\n {\r\n this._Holes.push(\r\n Contour.CreateContour([file.ReadObject() as Curve])\r\n );\r\n }\r\n\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n file.Write(1);//ver\r\n file.WriteObject(this._Outline.Curve);\r\n file.Write(this._Holes.length);\r\n this._Holes.forEach(h => file.WriteObject(h.Curve));\r\n }\r\n}\r\n","import { BoolOpeartionType } from '../GraphicsSystem/BoolOperateUtils';\r\nimport { CADFiler } from './CADFiler';\r\nimport { Shape } from './Shape';\r\nimport { Matrix4 } from 'three';\r\nimport { IntersectBox2 } from '../Geometry/Box';\r\n\r\n\r\nexport class ShapeManager\r\n{\r\n private _ShapeList: Shape[] = [];\r\n get ShapeList()\r\n {\r\n return this._ShapeList.slice();\r\n }\r\n get ShapeCount()\r\n {\r\n return this._ShapeList.length;\r\n }\r\n get ShapeArea()\r\n {\r\n return this._ShapeList.map(s => s.Area).reduce((a1, a2) => a1 + a2, 0);\r\n }\r\n AppendShapeList(shapes: Shape | Shape[])\r\n {\r\n Array.isArray(shapes) ? this._ShapeList.push(...shapes) : this._ShapeList.push(shapes);\r\n return this;\r\n }\r\n Clear()\r\n {\r\n this._ShapeList.length = 0;\r\n }\r\n BoolOper(otherMg: ShapeManager, booltype: BoolOpeartionType)\r\n {\r\n switch (booltype)\r\n {\r\n case BoolOpeartionType.Intersection:\r\n return this.IntersectionBoolOperation(otherMg);\r\n case BoolOpeartionType.Union:\r\n return this.UnionBoolOperation(otherMg);\r\n case BoolOpeartionType.Subtract:\r\n return this.SubstactBoolOperation(otherMg);\r\n }\r\n }\r\n //交集 如果成功返回一个面域 失败返回0个\r\n IntersectionBoolOperation(target: ShapeManager)\r\n {\r\n let shapes: Shape[] = [];\r\n for (let srcShape of this._ShapeList)\r\n {\r\n for (let tarShape of target._ShapeList)\r\n {\r\n let tmpShapes = srcShape.IntersectionBoolOperation(tarShape);\r\n shapes.push(...tmpShapes);\r\n }\r\n }\r\n this.Clear();\r\n this._ShapeList = shapes;\r\n return this._ShapeList.length > 0;\r\n }\r\n //并集,如果有一个形状并集成功,就成功\r\n UnionBoolOperation(targetMg: ShapeManager)\r\n {\r\n let isSuccess = false;\r\n let srcShapes = this._ShapeList;\r\n let tarShapes = targetMg._ShapeList;\r\n\r\n let alones: Shape[] = [];//孤立的形状\r\n\r\n const boxCache = new WeakMap();\r\n\r\n for (let src of srcShapes)\r\n {\r\n let notUnions: Shape[] = [];//未被合并的形状列表 来自tarShapes\r\n let srcBox = src.BoundingBox;\r\n for (let tar of tarShapes)\r\n {\r\n let tarBox = boxCache.get(tar);\r\n if (!tarBox)\r\n {\r\n tarBox = tar.BoundingBox;\r\n boxCache.set(tar, tarBox);\r\n }\r\n if (!IntersectBox2(srcBox, tarBox))\r\n {\r\n notUnions.push(tar);\r\n continue;\r\n }\r\n let unions = src.UnionBoolOperation(tar);\r\n if (unions.length === 1)//并集成功\r\n {\r\n isSuccess = true;\r\n src = unions[0];//src设置为 合并完的形状\r\n }\r\n else//并集失败\r\n notUnions.push(tar); //设置为未计算\r\n }\r\n\r\n //如果发现src和任意一个形状并集成功,那么\r\n if (notUnions.length != tarShapes.length)\r\n {\r\n notUnions.push(src); //加入src 进行下一轮\r\n tarShapes = notUnions;\r\n }\r\n else\r\n alones.push(src);//它是孤独的一个形状\r\n }\r\n\r\n this._ShapeList = alones.concat(tarShapes);\r\n return isSuccess;\r\n }\r\n SubstactBoolOperation(target: ShapeManager)\r\n {\r\n let newShapes: Shape[] = [];\r\n for (let s of this._ShapeList)\r\n {\r\n let ss = s.SubstactBoolOperation(target.ShapeList);\r\n newShapes.push(...ss);\r\n }\r\n this._ShapeList = newShapes;\r\n return true;\r\n }\r\n\r\n /**\r\n * 与region.ApplyMatrix不同的是,这个是直接操作内部对象.\r\n * 通常用来计算布尔运算时需要真实的移动这个位置.\r\n * 并且将不会刷新显示\r\n *\r\n * @param {Matrix4} mat4\r\n * @memberof ShapeManager\r\n */\r\n ApplyMatrix(mat4: Matrix4)\r\n {\r\n for (let s of this._ShapeList)\r\n {\r\n s.Outline.Curve.ApplyMatrix(mat4);\r\n s.Holes.forEach(o => o.Curve.ApplyMatrix(mat4));\r\n }\r\n\r\n }\r\n ReadFile(file: CADFiler)\r\n {\r\n let ver = file.Read();//1\r\n let cout = file.Read();\r\n for (let i = 0; i < cout; i++)\r\n {\r\n let obj = new Shape();\r\n obj.ReadFile(file);\r\n this._ShapeList.push(obj);\r\n }\r\n }\r\n WriteFile(file: CADFiler)\r\n {\r\n file.Write(1);//ver\r\n file.Write(this.ShapeList.length);\r\n for (let s of this.ShapeList)\r\n {\r\n s.WriteFile(file);\r\n }\r\n }\r\n}\r\n","import { Box3, BufferGeometry, LineSegments, Material, Matrix3, Matrix4, Mesh, Object3D, ShapeGeometry, Vector2, Vector3 } from 'three';\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { DisposeThreeObj, Object3DRemoveAll } from '../../Common/Dispose';\nimport { UpdateDraw } from '../../Common/Status';\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\nimport { BufferGeometryUtils, BufferGeometryUtils as BufferGeometryUtils2 } from '../../Geometry/BufferGeometryUtils';\nimport { AsVector3, MoveMatrix } from '../../Geometry/GeUtils';\nimport { ScaleUV } from '../../Geometry/UVUtils';\nimport { BoolOpeartionType } from '../../GraphicsSystem/BoolOperateUtils';\nimport { RenderType } from '../../GraphicsSystem/RenderType';\nimport { Factory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { Contour } from '../Contour';\nimport { Shape } from '../Shape';\nimport { ShapeManager } from '../ShapeManager';\nimport { Curve } from './Curve';\nimport { Entity } from './Entity';\n\n@Factory\nexport class Region extends Entity\n{\n static CreateFromCurves(cus: Curve[]): Region | undefined\n {\n let shapes = Contour.GetAllContour(cus).map(out => new Shape(out));\n if (shapes.length > 0)\n {\n let reg = new Region();\n //MarkX:曲线同面域一起移动\n reg.ApplyMatrix(shapes[0].Outline.Curve.OCS);\n reg.ShapeManager.AppendShapeList(shapes);\n return reg;\n }\n }\n\n constructor(private _ShapeManager: ShapeManager = new ShapeManager())\n {\n super();\n }\n\n //如果需要修改获取到的属性,需要Clone后进行操作,否则会对原实体进行破坏\n get ShapeManager()\n {\n return this._ShapeManager;\n }\n get Area()\n {\n return this.ShapeManager.ShapeArea;\n }\n get BoundingBox()\n {\n let box = new Box3();\n for (let s of this._ShapeManager.ShapeList)\n box.union(s.BoundingBox);\n return box;\n }\n Explode()\n {\n let shapeList = this._ShapeManager.ShapeList;\n if (shapeList.length <= 1)\n {\n return shapeList[0].Explode();\n }\n else\n {\n let regs: Region[] = [];\n shapeList.forEach(s =>\n {\n let reg = new Region().ApplyMatrix(this.OCS);\n reg.ShapeManager.AppendShapeList(s);\n regs.push(reg);\n });\n return regs;\n }\n }\n\n /**\n * 对于布尔操作,这个将会变换内部轮廓到对方坐标系.\n * 并且这个变换不会更新图形绘制.\n * @param {Matrix4} m\n * @memberof Region\n */\n ShapeApplyMatrix(m: Matrix4)\n {\n this.WriteAllObjectRecord();\n this._ShapeManager.ApplyMatrix(m);\n }\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform?: Matrix3\n ): Vector3[]\n {\n switch (snapMode)\n {\n case ObjectSnapMode.End:\n return this.GetGripPoints();\n case ObjectSnapMode.Mid:\n case ObjectSnapMode.Cen:\n case ObjectSnapMode.Nea:\n case ObjectSnapMode.Ext:\n case ObjectSnapMode.Per:\n case ObjectSnapMode.Tan:\n {\n let pts: Vector3[] = [];\n for (let s of this._ShapeManager.ShapeList)\n {\n pts.push(...s.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform));\n }\n return pts;\n }\n default:\n break;\n }\n return [];\n }\n GetGripPoints(): Array\n {\n let pts: Vector3[] = [];\n for (let s of this._ShapeManager.ShapeList)\n pts.push(...s.GetStretchPoints());\n return pts;\n }\n MoveGripPoints(indexList: number[], moveVec: Vector3)\n {\n this.WriteAllObjectRecord();\n let moveVLoc = moveVec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv));\n this.ApplyMatrix(MoveMatrix(moveVLoc));\n }\n ApplyMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n //面域移动,组成面域的曲线也要移动 MarkX:曲线同面域一起移动\n this._ShapeManager.ShapeList.forEach(s => s.ApplyMatrix(m));\n return super.ApplyMatrix(m);\n }\n\n get Position()\n {\n return super.Position;\n }\n set Position(pt: Vector3)\n {\n this.WriteAllObjectRecord();\n let moveX = pt.x - this._Matrix.elements[12];\n let moveY = pt.y - this._Matrix.elements[13];\n let moveZ = pt.z - this._Matrix.elements[14];\n this._Matrix.setPosition(pt);\n this._SpaceOCS.elements[12] += moveX;\n this._SpaceOCS.elements[13] += moveY;\n this._SpaceOCS.elements[14] += moveZ;\n\n let m = new Matrix4().setPosition(moveX, moveY, moveZ);\n for (let s of this.ShapeManager.ShapeList)\n s.ApplyMatrix(m);\n\n this.Update(UpdateDraw.Matrix);\n }\n\n protected ApplyScaleMatrix(m: Matrix4): this\n {\n this.WriteAllObjectRecord();\n for (let s of this._ShapeManager.ShapeList)\n s.ApplyScaleMatrix(m);\n\n this.Update(UpdateDraw.Geometry);\n return this;\n }\n\n //Z轴归0\n Z0()\n {\n super.Z0();\n for (let s of this._ShapeManager.ShapeList)\n s.Z0();\n\n return this;\n }\n MatrixPlanarizere()\n {\n super.MatrixPlanarizere();\n for (let s of this._ShapeManager.ShapeList)\n s.MatrixPlanarizere();\n return this;\n }\n\n protected ApplyMirrorMatrix(m: Matrix4)\n {\n return this;\n }\n /**\n * 请注意:该计算会操作otherRegion的矩阵\n * @param {Region} otherRegion\n * @param {BoolOpeartionType} boolType\n */\n BooleanOper(otherRegion: Region, boolType: BoolOpeartionType): boolean\n {\n if (this.IsCoplaneTo(otherRegion))\n {\n this.WriteAllObjectRecord();\n let oldOcs = this.OCS;\n\n //把形状曲线转移到二维屏幕计算后还原回来\n this.ShapeApplyMatrix(this.OCSInv);\n otherRegion.ShapeApplyMatrix(this.OCSInv);\n let isSuccess = this._ShapeManager.BoolOper(otherRegion._ShapeManager, boolType);\n this.ShapeApplyMatrix(oldOcs);\n this.Update();\n return isSuccess;\n }\n return false;\n }\n\n private _MeshGeometry: BufferGeometry;\n get MeshGeometry(): BufferGeometry\n {\n if (this._MeshGeometry)\n return this._MeshGeometry;\n this.UpdateGeometry();\n return this._MeshGeometry;\n }\n\n private _EdgeGeometry: BufferGeometry;\n private get EdgeGeometry()\n {\n if (this._EdgeGeometry)\n return this._EdgeGeometry;\n this.UpdateGeometry();\n return this._EdgeGeometry;\n }\n\n private UpdateGeometry()\n {\n let shapeList = this._ShapeManager.ShapeList;\n\n let edgePts: Vector3[] = [];\n let meshGeoms: BufferGeometry[] = [];\n\n const AddEdgePts = (pts: Vector2[], diffMat: Matrix4) =>\n {\n for (let i = 0; i < pts.length; i++)\n {\n let p = AsVector3(pts[i]);\n p.applyMatrix4(diffMat);\n edgePts.push(p);\n if (i !== 0 && i !== pts.length - 1)\n edgePts.push(p);\n }\n };\n\n for (let i = 0; i < shapeList.length; i++)\n {\n let shape = shapeList[i];\n let geometry = new ShapeGeometry(shape.Shape, 60);//60 可以优化.\n let diffMat = this.OCSInv.clone().multiply(shape.Outline.Curve.OCSNoClone);\n geometry.applyMatrix4(diffMat);\n ScaleUV(geometry);\n meshGeoms.push(new BufferGeometry().fromGeometry(geometry));\n\n let shapeInfo = shape.Shape.extractPoints(60);\n\n let pts = shapeInfo.shape;\n AddEdgePts(pts, diffMat);\n\n let holePtss = shapeInfo.holes;\n for (let holePts of holePtss)\n AddEdgePts(holePts, diffMat);\n }\n\n this._EdgeGeometry = BufferGeometryUtils.CreateFromPts(edgePts);\n this._MeshGeometry = BufferGeometryUtils2.MergeBufferGeometries(meshGeoms);\n this._MeshGeometry[\"IsMesh\"] = true;\n this._MeshGeometry.computeVertexNormals();\n }\n\n UpdateDrawGeometry()\n {\n this._EdgeGeometry = undefined;\n this._MeshGeometry = undefined;\n }\n\n InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\n {\n if (renderType === RenderType.Wireframe)\n {\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));\n }\n else if (renderType === RenderType.Conceptual)\n {\n return new Object3D().add(\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)),\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\n );\n }\n else if (renderType === RenderType.Physical)\n {\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\n mesh.castShadow = true;\n mesh.receiveShadow = true;\n return mesh;\n }\n else if (renderType === RenderType.Print)\n {\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(0));\n }\n else if (renderType === RenderType.Physical2)\n {\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\n mesh.castShadow = true;\n mesh.receiveShadow = true;\n return new Object3D().add(\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)),\n mesh,\n );\n }\n }\n\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\n {\n DisposeThreeObj(obj);\n Object3DRemoveAll(obj);\n if (renderType === RenderType.Wireframe)\n {\n let l = obj as LineSegments;\n l.geometry = this.EdgeGeometry;\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\n }\n else if (renderType === RenderType.Conceptual)\n {\n return obj.add(\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)),\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\n );\n }\n else if (renderType === RenderType.Physical)\n {\n let mesh = obj as Mesh;\n mesh.geometry = this.MeshGeometry;\n mesh.material = this.MeshMaterial;\n }\n else if (renderType === RenderType.Physical2)\n {\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\n mesh.castShadow = true;\n mesh.receiveShadow = true;\n return obj.add(\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex)),\n mesh,\n );\n }\n else if (renderType === RenderType.Print)\n {\n let l = obj as LineSegments;\n l.geometry = this.EdgeGeometry;\n l.material = ColorMaterial.GetLineMaterial(0);\n }\n }\n\n /**\n * 当实体需要被更新时,更新实体材质\n */\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material)\n {\n if (type === RenderType.Wireframe || type === RenderType.Print)\n {\n let line = obj as LineSegments;\n line.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\n }\n else if (type === RenderType.Conceptual)\n {\n for (let i = 0; i < obj.children.length; i++)\n {\n if (i % 2 === 0)\n {\n let l = obj.children[i] as LineSegments;\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\n }\n else\n {\n let mesh = obj.children[i] as Mesh;\n mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);\n }\n }\n }\n else\n {\n for (let m of obj.children)\n {\n let mesh = m as Mesh;\n mesh.material = this.MeshMaterial;\n }\n }\n }\n\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();//1\n this._ShapeManager.Clear();\n this._ShapeManager.ReadFile(file);\n }\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(1);//ver\n this._ShapeManager.WriteFile(file);\n }\n}\n","import { Matrix4, Vector3 } from \"three\";\r\nimport { ConverCircleToPolyline } from \"../../Common/CurveUtils\";\r\nimport { Board } from \"../../DatabaseServices/Entity/Board\";\r\nimport { Circle } from \"../../DatabaseServices/Entity/Circle\";\r\nimport { Line } from \"../../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\r\nimport { Region } from \"../../DatabaseServices/Entity/Region\";\r\n\r\n/**\r\n * 把板件炸开成面域,0,1为正反面,其余的为边面(没有圆弧面)\r\n */\r\nexport function Board2Regions(br: Board): Region[]\r\n{\r\n let ocs = br.OCS;\r\n\r\n let cu = br.ContourCurve.Clone();\r\n\r\n if (cu instanceof Circle)\r\n cu = ConverCircleToPolyline(cu);\r\n\r\n let frontReg = Region.CreateFromCurves([cu.Clone()]);\r\n let regFrontOcs = ocs.clone();\r\n regFrontOcs.setPosition(br.Position.add(br.Normal.multiplyScalar(br.Thickness)));\r\n frontReg.ApplyMatrix(regFrontOcs);\r\n\r\n let backReg = Region.CreateFromCurves([cu.Flip()]);\r\n backReg.ApplyMatrix(ocs);\r\n\r\n let resultRegs = [frontReg, backReg];\r\n\r\n //edges\r\n let lines = cu.Explode().filter(c => c instanceof Line);\r\n\r\n\r\n for (let l of lines)\r\n {\r\n let rectPl = new Polyline().Rectangle(l.Length, br.Thickness);\r\n let reg = Region.CreateFromCurves([rectPl]);\r\n if (!reg) continue;\r\n\r\n let p = l.StartPoint.applyMatrix4(ocs);\r\n let x = l.GetFistDeriv(0).transformDirection(ocs);\r\n let y = br.Normal;\r\n let z = new Vector3().crossVectors(x, y);\r\n\r\n let mtx = new Matrix4().makeBasis(x, y, z).setPosition(p);\r\n reg.ApplyMatrix(mtx);\r\n resultRegs.push(reg);\r\n }\r\n\r\n return resultRegs;\r\n}\r\n","\n/**统一板件属性key的命名,修改值会导致无法 .xxx该属性 */\nexport enum EBoardKeyList\n{\n Height = \"height\",\n Width = \"width\",\n Thick = \"thickness\",\n RoomName = \"roomName\",\n CabinetName = \"cabinetName\",\n BrMat = \"boardName\", //板材\n Mat = \"material\", //材料\n Color = \"color\",\n Lines = \"lines\", //纹路\n ProcessGroup = \"ProcessGroup\",\n BigHole = \"bigHoleDir\",\n /**\n * 排钻类型,当没有定义每个边的排钻数据时,使用统一的排钻类型\n */\n DrillType = \"drillType\",\n ComposingFace = \"composingFace\",\n /**\n * 封边数组,定义每个边的封边信息\n */\n HighSealed = \"highSealed\",\n UpSealed = \"sealedUp\",\n DownSealed = \"sealedDown\",\n LeftSealed = \"sealedLeft\",\n RightSealed = \"sealedRight\",\n KnifeRad = \"knifeRadius\",\n SpliteHeight = \"spliteHeight\",\n SpliteWidth = \"spliteWidth\",\n SpliteThickness = \"spliteThickness\",\n}\n","import { BoardProcessOption } from \"../../UI/Store/BoardInterface\";\r\nimport { EBoardKeyList } from \"../../Common/BoardKeyList\";\r\nimport { CADFiler } from \"../../DatabaseServices/CADFiler\";\r\nimport { I2DModeling, I3DModeling, IPathItem } from \"../../DatabaseServices/Entity/Board\";\r\nimport { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\r\nimport { Vector3 } from \"three\";\r\n\r\n/**序列化板件数据 */\r\nexport function serializeBoardData(file: CADFiler, processData: BoardProcessOption)\r\n{\r\n file.Write(processData[EBoardKeyList.RoomName]);\r\n file.Write(processData[EBoardKeyList.CabinetName]);\r\n file.Write(processData[EBoardKeyList.BrMat]);\r\n file.Write(processData[EBoardKeyList.Mat]);\r\n file.Write(processData[EBoardKeyList.Color]);\r\n file.Write(processData[EBoardKeyList.Lines]);\r\n file.Write(processData[EBoardKeyList.BigHole]);\r\n file.Write(processData[EBoardKeyList.DrillType]);\r\n file.Write(processData[EBoardKeyList.ComposingFace]);\r\n file.Write(processData[EBoardKeyList.HighSealed].length);\r\n for (let n of processData[EBoardKeyList.HighSealed])\r\n {\r\n file.Write(n.size);\r\n }\r\n file.Write(processData[EBoardKeyList.UpSealed]);\r\n file.Write(processData[EBoardKeyList.DownSealed]);\r\n file.Write(processData[EBoardKeyList.LeftSealed]);\r\n file.Write(processData[EBoardKeyList.RightSealed]);\r\n file.Write(processData.spliteHeight);\r\n file.Write(processData.spliteWidth);\r\n file.Write(processData.spliteThickness);\r\n\r\n file.Write(processData.highDrill.length);\r\n for (let n of processData.highDrill)\r\n file.Write(n);\r\n\r\n file.Write(processData.frontDrill);\r\n file.Write(processData.backDrill);\r\n file.Write(processData.remarks.length);\r\n for (let d of processData.remarks)\r\n {\r\n file.Write(d[0]);\r\n file.Write(d[1]);\r\n }\r\n}\r\n\r\n//反序列化板件数据\r\nexport function deserializationBoardData(file: CADFiler, processData: BoardProcessOption, ver: number)\r\n{\r\n processData[EBoardKeyList.RoomName] = file.Read();\r\n processData[EBoardKeyList.CabinetName] = file.Read();\r\n processData[EBoardKeyList.BrMat] = file.Read();\r\n processData[EBoardKeyList.Mat] = file.Read();\r\n processData[EBoardKeyList.Color] = file.Read();\r\n processData[EBoardKeyList.Lines] = file.Read();\r\n processData[EBoardKeyList.BigHole] = file.Read();\r\n processData[EBoardKeyList.DrillType] = file.Read();\r\n processData[EBoardKeyList.ComposingFace] = file.Read();\r\n\r\n let count = file.Read();\r\n processData[EBoardKeyList.HighSealed].length = 0;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let size = file.Read();\r\n if (ver < 4)\r\n {\r\n file.Read();\r\n }\r\n processData[EBoardKeyList.HighSealed].push({ size });\r\n }\r\n\r\n processData[EBoardKeyList.UpSealed] = file.Read();\r\n processData[EBoardKeyList.DownSealed] = file.Read();\r\n processData[EBoardKeyList.LeftSealed] = file.Read();\r\n processData[EBoardKeyList.RightSealed] = file.Read();\r\n processData.spliteHeight = file.Read();\r\n processData.spliteWidth = file.Read();\r\n processData.spliteThickness = file.Read();\r\n\r\n count = file.Read();\r\n processData.highDrill = file.ReadArray(count);\r\n\r\n processData.frontDrill = file.Read();\r\n processData.backDrill = file.Read();\r\n\r\n if (ver >= 7)\r\n {\r\n let count = file.Read();\r\n processData.remarks.length = 0;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let d: [string, string] = [\"\", \"\"];\r\n d[0] = file.Read();\r\n d[1] = file.Read();\r\n processData.remarks.push(d);\r\n }\r\n }\r\n}\r\n\r\nexport function SerializeBoard2DModeingData(file: CADFiler, modelList: I2DModeling[])\r\n{\r\n file.Write(modelList.length);\r\n for (let data of modelList)\r\n {\r\n file.WriteObject(data.path);\r\n file.Write(data.dir);\r\n file.Write(data.items.length);\r\n for (let item of data.items)\r\n {\r\n file.Write(item.depth);\r\n file.Write(item.offset);\r\n file.Write(item.knife.id);\r\n file.Write(item.knife.radius);\r\n file.Write(item.knife.angle);\r\n file.Write(item.knife.name);\r\n }\r\n }\r\n}\r\nexport function SerializeBoard3DModeingData(file: CADFiler, modelList: I3DModeling[])\r\n{\r\n file.Write(modelList.length);\r\n for (let item of modelList)\r\n {\r\n file.Write(item.path.length);\r\n for (let d of item.path)\r\n {\r\n file.Write(d.pt.toArray());\r\n file.Write(d.bul);\r\n }\r\n file.Write(item.dir);\r\n file.Write(item.knife.id);\r\n file.Write(item.knife.radius);\r\n file.Write(item.knife.angle);\r\n file.Write(item.knife.name);\r\n }\r\n}\r\n\r\n//反序列化板件数据\r\nexport function DeserializationBoard2DModeingData(file: CADFiler, data: I2DModeling[], ver: number)\r\n{\r\n data.length = 0;\r\n const count = file.Read();\r\n\r\n for (let i = 0; i < count; i++)\r\n {\r\n let path = file.ReadObject() as Polyline;\r\n let dir = file.Read();\r\n let m: I2DModeling = {\r\n path,\r\n dir,\r\n items: []\r\n };\r\n const itemCount = file.Read();\r\n\r\n for (let j = 0; j < itemCount; j++)\r\n {\r\n let depth = file.Read();\r\n let offset = file.Read();\r\n let knifeId = file.Read();\r\n let knifeRad = file.Read();\r\n let knifeAngle = file.Read();\r\n let knifeName = file.Read();\r\n m.items.push({\r\n depth, offset, knife: { id: knifeId, radius: knifeRad, angle: knifeAngle, name: knifeName }\r\n });\r\n }\r\n data.push(m);\r\n }\r\n}\r\n//反序列化板件数据\r\nexport function DeserializationBoard3DModeingData(file: CADFiler, data: I3DModeling[], ver: number)\r\n{\r\n data.length = 0;\r\n const count = file.Read();\r\n\r\n for (let i = 0; i < count; i++)\r\n {\r\n let pathCount = file.Read();\r\n let path: IPathItem[] = [];\r\n for (let i = 0; i < pathCount; i++)\r\n {\r\n let pt = new Vector3().fromArray(file.Read());\r\n let bul = file.Read();\r\n path.push({ pt, bul });\r\n }\r\n let dir = file.Read();\r\n let knifeId = file.Read();\r\n let knifeRad = file.Read();\r\n let knifeAngle = file.Read();\r\n let knifeName = file.Read();\r\n data.push({\r\n path, dir, knife: { id: knifeId, radius: knifeRad, angle: knifeAngle, name: knifeName }\r\n });\r\n }\r\n}\r\n","import { EBoardKeyList } from \"../../Common/BoardKeyList\";\r\nimport { ObjectId } from \"../../DatabaseServices/ObjectId\";\r\n\r\nexport enum BoardType\r\n{\r\n Layer = 0, //层板\r\n Vertical = 1, //立板\r\n Behind = 2 //背板\r\n}\r\n\r\n/**\r\n *勿随意更改属性名,若更改,需更改对应UI模态框的属性和检验方法的key\r\n *\r\n */\r\nexport interface IBaseOption\r\n{\r\n version?: number;\r\n}\r\n\r\n//板件数据,配置信息+加工信息\r\nexport interface BoardData\r\n{\r\n boardConfig: BoardConfigOption;\r\n boardProcess: BoardProcessOption;\r\n}\r\n//排钻类型\r\nexport enum DrillType\r\n{\r\n Yes = \"排\",\r\n None = \"不排\",\r\n More = \"**多种**\",\r\n Invail = \"无效配置\",\r\n}\r\n//偏心轮类型\r\nexport enum FaceDirection\r\n{\r\n Front = 0,\r\n Back = 1,\r\n}\r\n\r\n//纹路类型\r\nexport enum LinesType\r\n{\r\n /** 正纹 */\r\n Positive = 0,\r\n /** 反纹 */\r\n Reverse = 1,\r\n /** 可翻转 */\r\n CanReversal = 2,\r\n}\r\n\r\n// 排版面\r\nexport enum ComposingType\r\n{\r\n Positive, Reverse, Arbitrary\r\n}\r\n/**\r\n *背板靠上还是靠下\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum BehindHeightPositon\r\n{\r\n ForTop = \"top\", //靠上\r\n ForBottom = \"bottom\",//靠下\r\n AllHeight = \"all\" //总高\r\n}\r\n\r\n/**\r\n *板件相对位置\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nexport enum BrRelativePos\r\n{\r\n Front = \"front\",\r\n Back = \"back\",\r\n Top = \"top\",\r\n Bottom = \"bottom\",\r\n Left = \"left\",\r\n Right = \"right\",\r\n Div = \"div\"\r\n}\r\n\r\nexport interface IHighSealedItem\r\n{\r\n size: number;\r\n}\r\n\r\nexport interface BoardProcessOption extends IBaseOption\r\n{\r\n [EBoardKeyList.RoomName]?: string;\r\n [EBoardKeyList.CabinetName]?: string;//柜名\r\n [EBoardKeyList.BrMat]?: string;//板材名\r\n [EBoardKeyList.Mat]?: string;//材料\r\n [EBoardKeyList.Color]?: string;\r\n [EBoardKeyList.Lines]?: LinesType;//纹路\r\n [EBoardKeyList.ProcessGroup]?: ObjectId[];//纹路\r\n [EBoardKeyList.BigHole]?: FaceDirection;//大孔面\r\n [EBoardKeyList.DrillType]?: string;//排钻类型\r\n [EBoardKeyList.ComposingFace]?: ComposingType;//排版面\r\n [EBoardKeyList.HighSealed]?: IHighSealedItem[];//封边数据\r\n [EBoardKeyList.UpSealed]?: string;//封边上下左右\r\n [EBoardKeyList.DownSealed]?: string;\r\n [EBoardKeyList.LeftSealed]?: string;\r\n [EBoardKeyList.RightSealed]?: string;\r\n [EBoardKeyList.SpliteHeight]?: string;//拆单高/宽/厚\r\n [EBoardKeyList.SpliteWidth]?: string;\r\n [EBoardKeyList.SpliteThickness]?: string;\r\n highDrill?: string[];\r\n frontDrill: boolean;\r\n backDrill: boolean;\r\n remarks: [string, string][];\r\n useBoardProcessOption?: boolean;\r\n}\r\n\r\n/**\r\n *板件参数\r\n */\r\nexport interface BoardConfigOption extends IBaseOption\r\n{\r\n type: BoardType;\r\n name: string;\r\n thickness?: number;\r\n height?: number;\r\n width?: number;\r\n}\r\nexport interface SideBoardOption extends BoardConfigOption\r\n{\r\n spaceSize?: number; //空间宽度\r\n leftShrink: number; //左侧板内缩\r\n rightShrink: number;\r\n}\r\n\r\n/**\r\n *背板参数\r\n *\r\n * @export\r\n * @interface BehindBoardOption\r\n * @extends {BoardConfigOption}\r\n */\r\nexport interface BehindBoardOption extends BoardConfigOption\r\n{\r\n //上下左右延伸\r\n leftExt: number;\r\n rightExt: number;\r\n topExt: number;\r\n bottomExt: number;\r\n //板件位置\r\n boardPosition: BehindHeightPositon;\r\n moveDist: number;\r\n\r\n spaceSize?: number;\r\n count?: number;\r\n //板件相对位置\r\n boardRelative?: BrRelativePos;\r\n calcHeight: string;//高度表达式\r\n calcSpaceSize: string;\r\n calcMoveDist: string;\r\n}\r\n\r\n/**\r\n *层板参数\r\n *\r\n * @export\r\n * @interface LayerBoardOption\r\n * @extends {BoardConfigOption}\r\n */\r\nexport interface LayerBoardOption extends BoardConfigOption\r\n{\r\n calcHeight: string;\r\n frontShrink: number;\r\n leftShrink: number;\r\n rightShrink: number;\r\n isTotalLength: boolean;\r\n isActive: boolean;\r\n spaceSize?: number;\r\n count?: number;\r\n boardRelative?: BrRelativePos;\r\n calcSpaceSize: string;\r\n calcFrontShrink: string;\r\n calcLeftShrink: string;\r\n calcRightShrink: string;\r\n}\r\n\r\n/**\r\n *层板钉参数\r\n *\r\n * @export\r\n * @interface LayerNailOption\r\n */\r\nexport interface LayerNailOption extends IBaseOption\r\n{\r\n isDraw: boolean; //是否绘制\r\n addCount: number;//增\r\n dist: number;\r\n isGroup: boolean;\r\n isInBack: boolean; //是否在背板绘制\r\n front: number;\r\n behind: number;\r\n count: number;\r\n rad: number;\r\n length: number;\r\n depth: number;\r\n}\r\n\r\n/**\r\n *立板参数\r\n */\r\nexport interface VerticalBoardOption extends BoardConfigOption\r\n{\r\n frontShrink: number; //前缩\r\n bottomShrink: number;//底缩\r\n isTotalLength: boolean; //是否取总高\r\n isTotalWidth: boolean;//是否取总宽\r\n count?: number;\r\n spaceSize?: number;\r\n boardRelative?: BrRelativePos;\r\n calcWidth: string; //板深表达式\r\n calcHeight: string;\r\n calcSpaceSize: string;\r\n calcFrontShrink: string;\r\n calcBottomShrink: string;\r\n}\r\nexport interface TBBoardOption extends BoardConfigOption\r\n{\r\n isDraw: boolean;\r\n frontDist: number; //前距\r\n behindDistance: number; //后距\r\n isWrapSide: boolean; //顶包侧\r\n useLFData: boolean;\r\n leftExt: number;\r\n rightExt: number;\r\n offset: number;//上留或者下留\r\n isDrawFooter?: boolean;\r\n footThickness?: number; //地脚厚\r\n footBehindShrink?: number;//内缩\r\n isDrawBackFooter?: boolean;\r\n footerOffset?: number;\r\n isDrawStrengthenStrip?: boolean;\r\n divCount?: number;\r\n}\r\nexport interface SingleBoardOption extends BoardConfigOption\r\n{\r\n rotateX: number;\r\n rotateY: number;\r\n rotateZ: number;\r\n\r\n}\r\nexport enum StripType\r\n{\r\n H = \"h\",\r\n V = \"v\",\r\n}\r\nexport interface ClosingStripOption extends BoardConfigOption\r\n{\r\n boardRelative: BrRelativePos;\r\n striptype: StripType;//收口条类型\r\n frontShrink: number; //前缩\r\n isDrawFuZhu: boolean; //是否绘制辅助条\r\n fzWidth: number;\r\n fzThickness: number;\r\n}\r\n\r\nexport interface IGrooveOption extends IBaseOption\r\n{\r\n grooveAddLength: string;//槽加长/宽/高\r\n grooveAddWidth: string;\r\n grooveAddDepth: string;\r\n knifeRadius?: string;\r\n}\r\n\r\nexport interface IShinkOption extends IBaseOption\r\n{\r\n left: number;\r\n right: number;\r\n front: number;\r\n back: number;\r\n isLREqual: boolean;\r\n isFBEqual: boolean;\r\n}\r\n\r\nexport type IUiOption = {\r\n [P in (keyof T)]: T[P] extends number ? string : T[P]\r\n};\r\n\r\nexport interface INailRule extends IBaseOption\r\n{\r\n startDist: number;\r\n endDist: number;\r\n count: number;\r\n}\r\n\r\nexport interface IHightDrillOption\r\n{\r\n up: string;\r\n down: string;\r\n left: string;\r\n right: string;\r\n}\r\nexport enum CurtailType\r\n{\r\n PerBr = \"0\",\r\n Total = \"1\",\r\n}\r\n\r\nexport interface IBoardBatchCurtailOption extends IBaseOption\r\n{\r\n type: CurtailType;\r\n front: number;\r\n back: number;\r\n left: number;\r\n right: number;\r\n moveBrs: boolean;\r\n}\r\n\r\nexport enum BoardOpenDir\r\n{\r\n Left = 1,\r\n Right = 2,\r\n Up = 3,\r\n Down = 4,\r\n None = 0,\r\n}\r\n\r\nexport type AnyObject = { [key: string]: any; };\r\n\r\n//见光面封边设置\r\nexport interface ISmoothEdgeOption extends IBaseOption\r\n{\r\n smoothEdge: number;//见光面\r\n edge: number;//非见光面\r\n scale: number;//见光比例\r\n filterArr: string[];//\r\n}\r\n\r\nexport interface IDrawBoardAutoCutOption\r\n{\r\n isAutoCut: boolean;//是否自动切割\r\n isRelevance: boolean;//是否关联切割\r\n}\r\n\r\nexport interface IKnifeProps\r\n{\r\n radius: number;\r\n angle: number;\r\n}\r\n","import { BufferGeometry, Vector3 } from \"three\";\r\nimport { arrayLast } from \"../Common/ArrayExt\";\r\nimport { equalv3 } from \"./GeUtils\";\r\nimport { FixIndex } from \"../Common/Utils\";\r\n\r\nexport function GenerateExtrudeEdgeGeometry(contourPoints: Vector3[][], height: number): BufferGeometry\r\n{\r\n let pts: Vector3[] = [];\r\n for (let cs of contourPoints)\r\n pts.push(...GenerateExtrudeEdgeGeometryPoints(cs, height));\r\n let geo = new BufferGeometry().setFromPoints(pts);\r\n return geo;\r\n}\r\n\r\nfunction GenerateExtrudeEdgeGeometryPoints(contourPoints: Vector3[], height: number): Vector3[]\r\n{\r\n if (contourPoints.length < 3) return [];\r\n if (equalv3(contourPoints[0], arrayLast(contourPoints)))\r\n contourPoints.pop();\r\n let pts: Vector3[] = [];\r\n let hpts = contourPoints.map(p => new Vector3(p.x, p.y, height));\r\n let count = contourPoints.length;\r\n for (let i = 0; i < count; i++)\r\n {\r\n pts.push(contourPoints[i], contourPoints[FixIndex(i + 1, count)], hpts[i], hpts[FixIndex(i + 1, count)], contourPoints[i], hpts[i]);\r\n }\r\n return pts;\r\n}\r\n\r\nexport function GenerateBoxEdgeGeometry(length: number, width: number, height: number): BufferGeometry\r\n{\r\n let pts = [new Vector3(), new Vector3(length), new Vector3(length, width), new Vector3(0, width)];\r\n return GenerateExtrudeEdgeGeometry([pts], height);\r\n}\r\n","import { Vector3, Matrix4 } from 'three';\r\n\r\n// Quote from:\r\n// https://github.com/Mugen87/yume/blob/master/src/javascript/engine/etc/OBB.js\r\n// 即obb.js(本项目中已存在)\r\n\r\n// Reference material:\r\n//https://stackoverflow.com/questions/28499800/oriented-box-intersection-in-threejs\r\n//http://www.cnblogs.com/iamzhanglei/archive/2012/06/07/2539751.html\r\n//https://github.com/Mugen87/yume/blob/master/src/javascript/engine/etc/OBB.js\r\n\r\nexport class OBB\r\n{\r\n _EPSILON = 1e-3;\r\n\r\n public center: Vector3;\r\n\r\n constructor(public ocs: Matrix4, public halfSizes: Vector3)\r\n {\r\n this.center = halfSizes.clone().applyMatrix4(ocs);\r\n }\r\n\r\n intersectsOBB(obb: OBB, is2D?: boolean, ucsInv?: Matrix4): boolean\r\n {\r\n let newCenter: Vector3;\r\n let newObbCenter: Vector3;\r\n let cs: Matrix4;\r\n let obbcs: Matrix4;\r\n if (is2D)\r\n {\r\n let mtx1 = new Matrix4().multiplyMatrices(ucsInv, this.ocs);\r\n let mtx2 = new Matrix4().multiplyMatrices(ucsInv, obb.ocs);\r\n cs = mtx1;\r\n obbcs = mtx2;\r\n cs.elements[14] = 0;\r\n obbcs.elements[14] = 0;\r\n newCenter = this.halfSizes.clone().applyMatrix4(cs);\r\n newObbCenter = obb.halfSizes.clone().applyMatrix4(obbcs);\r\n }\r\n let xAxisA = new Vector3();\r\n let yAxisA = new Vector3();\r\n let zAxisA = new Vector3();\r\n\r\n let xAxisB = new Vector3();\r\n let yAxisB = new Vector3();\r\n let zAxisB = new Vector3();\r\n\r\n let translation = new Vector3();\r\n\r\n let vector = new Vector3();\r\n\r\n let axisA: Vector3[] = [];\r\n let axisB: Vector3[] = [];\r\n let rotationMatrix = [[], [], []];\r\n let rotationMatrixAbs = [[], [], []];\r\n\r\n let halfSizeA: number, halfSizeB: number;\r\n let t: number, i: number;\r\n\r\n // extract each axis\r\n (cs ?? this.ocs).extractBasis(xAxisA, yAxisA, zAxisA);\r\n (obbcs ?? obb.ocs).extractBasis(xAxisB, yAxisB, zAxisB);\r\n\r\n // push basis vectors into arrays, so you can access them via indices\r\n axisA.push(xAxisA, yAxisA, zAxisA);\r\n axisB.push(xAxisB, yAxisB, zAxisB);\r\n\r\n // get displacement vector\r\n vector.subVectors(newObbCenter ?? obb.center, newCenter ?? this.center);\r\n\r\n // express the translation vector in the coordinate frame of the current\r\n // OBB (this)\r\n for (i = 0; i < 3; i++)\r\n {\r\n translation.setComponent(i, vector.dot(axisA[i]));\r\n }\r\n\r\n // generate a rotation matrix that transforms from world space to the\r\n // OBB's coordinate space\r\n for (i = 0; i < 3; i++)\r\n {\r\n for (let j = 0; j < 3; j++)\r\n {\r\n rotationMatrix[i][j] = axisA[i].dot(axisB[j]);\r\n rotationMatrixAbs[i][j] = Math.abs(rotationMatrix[i][j]) + this._EPSILON;\r\n }\r\n }\r\n\r\n // test the three major axes of this OBB\r\n for (i = 0; i < 3; i++)\r\n {\r\n vector.set(rotationMatrixAbs[i][0], rotationMatrixAbs[i][1], rotationMatrixAbs[i][2]);\r\n\r\n halfSizeA = this.halfSizes.getComponent(i);\r\n halfSizeB = obb.halfSizes.dot(vector);\r\n\r\n if (Math.abs(translation.getComponent(i)) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // test the three major axes of other OBB\r\n for (i = 0; i < 3; i++)\r\n {\r\n vector.set(rotationMatrixAbs[0][i], rotationMatrixAbs[1][i], rotationMatrixAbs[2][i]);\r\n\r\n halfSizeA = this.halfSizes.dot(vector);\r\n halfSizeB = obb.halfSizes.getComponent(i);\r\n\r\n vector.set(rotationMatrix[0][i], rotationMatrix[1][i], rotationMatrix[2][i]);\r\n t = translation.dot(vector);\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n // test the 9 different cross-axes\r\n\r\n // A.x B.x\r\n halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][0] + this.halfSizes.z * rotationMatrixAbs[1][0];\r\n halfSizeB = obb.halfSizes.y * rotationMatrixAbs[0][2] + obb.halfSizes.z * rotationMatrixAbs[0][1];\r\n\r\n t = translation.z * rotationMatrix[1][0] - translation.y * rotationMatrix[2][0];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.x < cross> B.y\r\n halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][1] + this.halfSizes.z * rotationMatrixAbs[1][1];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[0][2] + obb.halfSizes.z * rotationMatrixAbs[0][0];\r\n\r\n t = translation.z * rotationMatrix[1][1] - translation.y * rotationMatrix[2][1];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.x B.z\r\n halfSizeA = this.halfSizes.y * rotationMatrixAbs[2][2] + this.halfSizes.z * rotationMatrixAbs[1][2];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[0][1] + obb.halfSizes.y * rotationMatrixAbs[0][0];\r\n\r\n t = translation.z * rotationMatrix[1][2] - translation.y * rotationMatrix[2][2];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.y B.x\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][0] + this.halfSizes.z * rotationMatrixAbs[0][0];\r\n halfSizeB = obb.halfSizes.y * rotationMatrixAbs[1][2] + obb.halfSizes.z * rotationMatrixAbs[1][1];\r\n\r\n t = translation.x * rotationMatrix[2][0] - translation.z * rotationMatrix[0][0];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.y B.y\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][1] + this.halfSizes.z * rotationMatrixAbs[0][1];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[1][2] + obb.halfSizes.z * rotationMatrixAbs[1][0];\r\n\r\n t = translation.x * rotationMatrix[2][1] - translation.z * rotationMatrix[0][1];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.y B.z\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[2][2] + this.halfSizes.z * rotationMatrixAbs[0][2];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[1][1] + obb.halfSizes.y * rotationMatrixAbs[1][0];\r\n\r\n t = translation.x * rotationMatrix[2][2] - translation.z * rotationMatrix[0][2];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.z B.x\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][0] + this.halfSizes.y * rotationMatrixAbs[0][0];\r\n halfSizeB = obb.halfSizes.y * rotationMatrixAbs[2][2] + obb.halfSizes.z * rotationMatrixAbs[2][1];\r\n\r\n t = translation.y * rotationMatrix[0][0] - translation.x * rotationMatrix[1][0];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.z B.y\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][1] + this.halfSizes.y * rotationMatrixAbs[0][1];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[2][2] + obb.halfSizes.z * rotationMatrixAbs[2][0];\r\n\r\n t = translation.y * rotationMatrix[0][1] - translation.x * rotationMatrix[1][1];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // A.z B.z\r\n halfSizeA = this.halfSizes.x * rotationMatrixAbs[1][2] + this.halfSizes.y * rotationMatrixAbs[0][2];\r\n halfSizeB = obb.halfSizes.x * rotationMatrixAbs[2][1] + obb.halfSizes.y * rotationMatrixAbs[2][0];\r\n\r\n t = translation.y * rotationMatrix[0][2] - translation.x * rotationMatrix[1][2];\r\n\r\n if (Math.abs(t) > halfSizeA + halfSizeB)\r\n {\r\n return false;\r\n }\r\n\r\n // no separating axis exists, so the two OBB don't intersect\r\n return true;\r\n }\r\n\r\n // setFromObject(obj: THREE.Mesh): OBB;\r\n // setFromAABB(aabb: THREE.Box3): OBB;\r\n\r\n // setFromSphere(sphere: THREE.Shape): OBB;\r\n\r\n // closestPoint(point: THREE.Vector3): THREE.Vector3\r\n // isPointContained(point: THREE.Vector3): boolean\r\n // isAABBContained(aabb: THREE.Box3): boolean\r\n // isLineContained(line: THREE.Line3): boolean\r\n // isTriangleContained(tarianlg: THREE.Triangle): boolean\r\n // intersectsAABB(box: THREE.Box3): boolean\r\n // intersectsSphere(sphere: THREE.Sphere): boolean\r\n // intersectsOBB(box: OBB): boolean;\r\n // intersectsPlane(plane: Plane): boolean\r\n // intersectsRay(ray: Ray): boolean\r\n // intersectRay(ray: Ray): Vector3\r\n // intersectSphere(sphere: Sphere): Vector3\r\n // size(optionalTarget: Vector3): Vector3\r\n\r\n // translate(offset: Vector3): OBB\r\n\r\n // copy(obb: OBB): OBB\r\n // clone(obb: OBB): OBB\r\n\r\n}\r\n","import { Factory } from '../CADFactory';\r\nimport { Entity } from '../Entity/Entity';\r\nimport { AutoRecord } from '../AutoRecord';\r\nimport { ObjectId } from '../ObjectId';\r\nimport { CADFiler } from '../CADFiler';\r\n\r\n@Factory\r\nexport class Hole extends Entity\r\n{\r\n @AutoRecord FId: ObjectId;\r\n @AutoRecord MId: ObjectId;\r\n protected _Height: number;\r\n get Height()\r\n {\r\n return this._Height;\r\n }\r\n set Height(v: number)\r\n {\r\n if (this._Height !== v)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._Height = v;\r\n this.Update();\r\n }\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();//1\r\n if (ver <= 4)\r\n {\r\n //临时兼容旧图纸排钻,更新旧图纸后去掉兼容代码\r\n file['readIndex']--;\r\n }\r\n else\r\n {\r\n this._Height = file.Read();\r\n this.FId = file.ReadSoftObjectId();\r\n this.MId = file.ReadSoftObjectId();\r\n }\r\n\r\n }\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(5);//ver\r\n file.Write(this._Height);\r\n file.WriteSoftObjectId(this.FId);\r\n file.WriteSoftObjectId(this.MId);\r\n }\r\n}\r\n","import { BufferGeometry, ExtrudeGeometry, ExtrudeGeometryOptions, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Vector3 } from \"three\";\r\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\r\nimport { LineGeometry } from \"three/examples/jsm/lines/LineGeometry\";\r\nimport { arrayClone, arrayLast, arraySortByNumber } from \"../../Common/ArrayExt\";\r\nimport { ColorMaterial } from \"../../Common/ColorPalette\";\r\nimport { DisposeThreeObj, Object3DRemoveAll } from \"../../Common/Dispose\";\r\nimport { Vector2ApplyMatrix4 } from \"../../Common/Matrix4Utils\";\r\nimport { ObjectSnapMode } from \"../../Editor/ObjectSnapMode\";\r\nimport { Box3Ext } from \"../../Geometry/Box\";\r\nimport { FastWireframe2 } from \"../../Geometry/CreateWireframe\";\r\nimport { GenerateExtrudeEdgeGeometry } from \"../../Geometry/ExtrudeEdgeGeometry\";\r\nimport { AsVector3, equaln, equalv2, equalv3, ZeroVec } from \"../../Geometry/GeUtils\";\r\nimport { RenderType } from \"../../GraphicsSystem/RenderType\";\r\nimport { AutoRecord } from \"../AutoRecord\";\r\nimport { Factory } from \"../CADFactory\";\r\nimport { CADFiler } from \"../CADFiler\";\r\nimport { Contour } from \"../Contour\";\r\nimport { DragPointType } from \"../Entity/DragPointType\";\r\nimport { ExtrudeSolid, ExtureContourCurve } from \"../Entity/Extrude\";\r\nimport { Polyline } from \"../Entity/Polyline\";\r\nimport { Shape } from \"../Shape\";\r\nimport { OBB } from './../../Geometry/OBB/obb';\r\nimport { Hole } from \"./Hole\";\r\n\r\n@Factory\r\nexport class ExtrudeHole extends Hole\r\n{\r\n private _contourCurve: ExtureContourCurve = new Polyline();\r\n private _EdgeGeometry: BufferGeometry;\r\n protected _knifeRadius: number = 3;\r\n @AutoRecord isHole = true;\r\n @AutoRecord isThrough = false;\r\n get KnifeRadius()\r\n {\r\n return this._knifeRadius;\r\n }\r\n set KnifeRadius(v: number)\r\n {\r\n if (!equaln(v, this._knifeRadius))\r\n {\r\n this.WriteAllObjectRecord();\r\n this._knifeRadius = v;\r\n }\r\n }\r\n Explode()\r\n {\r\n return [this.ContourCurve.Clone().ApplyMatrix(this.OCS)];\r\n }\r\n get ContourCurve()\r\n {\r\n return this._contourCurve;\r\n }\r\n\r\n set ContourCurve(curve: ExtureContourCurve)\r\n {\r\n if (!curve.IsClose) return;\r\n\r\n if (curve instanceof Polyline)\r\n {\r\n curve.CloseMark = true;\r\n let pts = curve.LineData;\r\n if (equalv2(pts[0].pt, arrayLast(pts).pt))\r\n pts.pop();\r\n\r\n //如果曲线被旋转了,那么修正它的旋转矩阵,避免纹路错误\r\n let ocs = curve.OCS;\r\n if (!equaln(ocs.elements[0], 1))// || ocs.elements[9] || ocs.elements[10]\r\n {\r\n for (let p of pts)\r\n Vector2ApplyMatrix4(ocs, p.pt);\r\n curve.OCS = new Matrix4();\r\n }\r\n curve.ClearDraw();\r\n }\r\n\r\n this.WriteAllObjectRecord();\r\n this._contourCurve = curve;\r\n this.CheckContourCurve();\r\n this.Update();\r\n }\r\n CheckContourCurve()\r\n {\r\n let box = this._contourCurve.BoundingBox;\r\n\r\n //修正轮廓基点\r\n if (!equalv3(box.min, ZeroVec))\r\n {\r\n this._contourCurve.Position =\r\n this._contourCurve.Position.sub(box.min);\r\n\r\n let v = box.min.applyMatrix4(this.OCS.setPosition(ZeroVec));\r\n this._Matrix.setPosition(this.Position.add(v));\r\n }\r\n }\r\n protected ApplyScaleMatrix(m: Matrix4): this\r\n {\r\n this.WriteAllObjectRecord();\r\n let cu = this.ContourCurve;\r\n cu.ApplyMatrix(this.OCS);\r\n cu.ApplyMatrix(m);\r\n cu.ApplyMatrix(this.OCSInv);\r\n this.CheckContourCurve();\r\n this.Update();\r\n return this;\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetStretchPoints();\r\n case ObjectSnapMode.Mid:\r\n case ObjectSnapMode.Cen:\r\n case ObjectSnapMode.Nea:\r\n case ObjectSnapMode.Ext:\r\n case ObjectSnapMode.Per:\r\n case ObjectSnapMode.Tan:\r\n {\r\n let contour = this.ContourCurve.Clone();\r\n contour.ApplyMatrix(this.OCS);\r\n let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform);\r\n\r\n contour.Position = contour.Position.add(this.Normal.multiplyScalar(this.Height));\r\n pts.push(\r\n ...contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)\r\n );\r\n if (snapMode === ObjectSnapMode.Mid)\r\n pts.push(...contour.GetStretchPoints().map(p => p.add(this.Normal.multiplyScalar(-this.Height / 2))));\r\n return pts;\r\n }\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n get Shape()\r\n {\r\n let contour = Contour.CreateContour(this.ContourCurve.Clone(), false);\r\n\r\n return new Shape(contour);\r\n }\r\n get BoundingBoxInOCS()\r\n {\r\n let box = new Box3Ext().copy(this.ContourCurve.BoundingBox);\r\n box.max.add(new Vector3(0, 0, this.Height));\r\n return box;\r\n }\r\n get BoundingBox()\r\n {\r\n let box = this.ContourCurve.BoundingBox;\r\n box.max.add(new Vector3(0, 0, this.Height));\r\n box.applyMatrix4(this.OCS);\r\n return box;\r\n }\r\n private get EdgeGeometry()\r\n {\r\n if (this._EdgeGeometry)\r\n return this._EdgeGeometry;\r\n\r\n let pts = [this.ContourCurve.Shape.getPoints(6).map(AsVector3)];\r\n this._EdgeGeometry = GenerateExtrudeEdgeGeometry(pts, this.Height).applyMatrix4(this._contourCurve.OCSNoClone);\r\n return this._EdgeGeometry;\r\n }\r\n private _MeshGeometry: BufferGeometry | Geometry;\r\n get MeshGeometry()\r\n {\r\n if (this._MeshGeometry)\r\n return this._MeshGeometry;\r\n\r\n this._MeshGeometry = this.GeneralMeshGeometry();\r\n return this._MeshGeometry;\r\n }\r\n private GeneralMeshGeometry()\r\n {\r\n let extrudeSettings: ExtrudeGeometryOptions = {\r\n curveSegments: 12,\r\n steps: 1,\r\n bevelEnabled: false,\r\n depth: this.Height,\r\n };\r\n let geo = new ExtrudeGeometry(this.ContourCurve.Shape, extrudeSettings);\r\n geo.applyMatrix4(this._contourCurve.OCS);\r\n return geo;\r\n }\r\n GetGripOrStretchPoints(dragType: DragPointType)\r\n {\r\n let isGrip = dragType === DragPointType.Grip;\r\n\r\n let pts = isGrip ? this.ContourCurve.GetGripPoints() : this.ContourCurve.GetStretchPoints();\r\n let v = new Vector3(0, 0, this.Height);\r\n pts.push(...pts.map(p => p.clone().add(v)));\r\n pts.forEach(p => { p.applyMatrix4(this.OCS); });\r\n\r\n return pts;\r\n }\r\n private GetStrectchPointCountList(dragType: DragPointType): number\r\n {\r\n return this.ContourCurve.GetDragPointCount(dragType) * 2;\r\n }\r\n MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType)\r\n {\r\n this.WriteAllObjectRecord();\r\n if (dragType === DragPointType.Stretch && indexList.length === this.GetStrectchPointCountList(dragType))\r\n {\r\n this.Position = this.Position.add(vec);\r\n return;\r\n }\r\n arraySortByNumber(indexList);\r\n this.MoveGripOrStretchPointsOnly(indexList, vec, dragType);\r\n this.CheckContourCurve();\r\n this.Update();\r\n }\r\n IsStretchHeight(indexs: number[])\r\n {\r\n let count = this.ContourCurve.GetStretchPoints().length;\r\n if (indexs.length === count)\r\n {\r\n let isF = indexs[0] < count;\r\n return indexs.every(i => isF === (i < count));\r\n }\r\n return false;\r\n }\r\n MoveGripOrStretchPointsOnly(indexList: Array, vec: Vector3, dragType: DragPointType)\r\n {\r\n let stretchCount = this.ContourCurve.GetDragPointCount(dragType);\r\n\r\n if (dragType === DragPointType.Stretch)\r\n {\r\n //Move\r\n if (indexList.length === stretchCount * 2)\r\n {\r\n this.Position = this.Position.add(vec);\r\n return;\r\n }\r\n\r\n //判断是否拉伸厚度\r\n if (this.IsStretchHeight(indexList))\r\n {\r\n let isFront = indexList[0] < stretchCount;\r\n\r\n if (indexList.every(v => v < stretchCount === isFront))\r\n {\r\n //Change thickness\r\n let lvec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec));\r\n if (isFront)\r\n {\r\n this.Height -= lvec.z;\r\n //移动位置而不改变内部拉槽\r\n let v = this.Normal.multiplyScalar(lvec.z);\r\n this._Matrix.elements[12] += v.x;\r\n this._Matrix.elements[13] += v.y;\r\n this._Matrix.elements[14] += v.z;\r\n }\r\n else\r\n {\r\n this.Height += lvec.z;\r\n }\r\n return;\r\n }\r\n }\r\n\r\n indexList = arrayClone(indexList);\r\n }\r\n\r\n //修正点的索引\r\n for (let i = 0; i < indexList.length; i++)\r\n {\r\n let index = indexList[i];\r\n if (index >= stretchCount)\r\n {\r\n index -= stretchCount;\r\n indexList[i] = index;\r\n }\r\n }\r\n\r\n indexList = [...new Set(indexList)];\r\n\r\n let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec));\r\n\r\n if (dragType === DragPointType.Grip)\r\n {\r\n if (this.ContourCurve instanceof Polyline\r\n && indexList.length === 1\r\n && indexList[0] % 2 === 1)\r\n {\r\n let param = indexList[0] / 2;\r\n if (this.ContourCurve.GetBuilgeAt(Math.floor(param)) === 0)\r\n {\r\n let der = this.ContourCurve.GetFistDeriv(param).normalize();\r\n [der.x, der.y] = [der.y, -der.x];\r\n let d = localVec.dot(der);\r\n localVec.copy(der).multiplyScalar(d);\r\n }\r\n }\r\n this.ContourCurve.MoveGripPoints(indexList, localVec);\r\n }\r\n else\r\n this.ContourCurve.MoveStretchPoints(indexList, localVec);\r\n }\r\n GetGripPoints(): Array\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Grip);\r\n }\r\n GetStretchPoints()\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Stretch);\r\n }\r\n MoveGripPoints(indexList: number[], vec: Vector3)\r\n {\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip);\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch);\r\n }\r\n Convert2ExtrudeSolid()\r\n {\r\n let g = new ExtrudeSolid();\r\n g.KnifeRadius = this.KnifeRadius;\r\n g.SetContourCurve(this.ContourCurve);\r\n g.Thickness = this.Height;\r\n g.ApplyMatrix(this.OCS);\r\n return g;\r\n }\r\n GetPrintObject3D()\r\n {\r\n let geometry = new LineGeometry();\r\n let lineSegments = new Float32Array(this.EdgeGeometry.attributes.position.array);\r\n let instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1);\r\n geometry.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0));\r\n geometry.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3));\r\n let line = new Line2(geometry, ColorMaterial.PrintLineMatrial);\r\n let mesh = new Mesh(this.MeshGeometry, ColorMaterial.GetPrintConceptualMaterial());\r\n return [line, mesh];\r\n }\r\n InitDrawObject(renderType: RenderType = RenderType.Wireframe)\r\n {\r\n if (renderType === RenderType.Wireframe || renderType === RenderType.Edge)\r\n {\r\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));\r\n }\r\n else if (renderType === RenderType.Conceptual || renderType === RenderType.Physical || renderType === RenderType.Physical2)\r\n {\r\n return new Object3D().add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Jig)\r\n {\r\n return new Object3D().add(...FastWireframe2(this));\r\n }\r\n else if (renderType === RenderType.Print)\r\n {\r\n return new Object3D().add(...this.GetPrintObject3D());\r\n }\r\n }\r\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\r\n {\r\n DisposeThreeObj(obj);\r\n\r\n if (renderType !== RenderType.Wireframe)\r\n Object3DRemoveAll(obj);\r\n\r\n this._EdgeGeometry = undefined;\r\n this._MeshGeometry = undefined;\r\n this.MeshGeometry;\r\n\r\n if (renderType === RenderType.Wireframe || renderType === RenderType.Edge)\r\n {\r\n let l = obj as LineSegments;\r\n l.geometry = this.EdgeGeometry;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (renderType === RenderType.Print)\r\n {\r\n obj.add(...this.GetPrintObject3D());\r\n }\r\n else if (renderType === RenderType.Conceptual || renderType === RenderType.Physical || renderType === RenderType.Physical2)\r\n {\r\n obj.add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Jig)\r\n obj.add(...FastWireframe2(this));\r\n\r\n return obj;\r\n }\r\n UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D)\r\n {\r\n if (renderType === RenderType.Wireframe || renderType === RenderType.Edge)\r\n {\r\n let l = obj as LineSegments;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (renderType !== RenderType.Jig && renderType !== RenderType.Print)\r\n {\r\n let mesh = obj.children[0] as Mesh;\r\n mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);\r\n }\r\n }\r\n get OBB(): OBB\r\n {\r\n let size = this.ContourCurve.BoundingBox.getSize(new Vector3).setZ(this.Height);\r\n return new OBB(this.OCS, size.multiplyScalar(0.5));\r\n }\r\n ReadFile(file: CADFiler)\r\n {\r\n super.ReadFile(file);\r\n let ver = file.Read();\r\n this._contourCurve = file.ReadObject() as ExtureContourCurve;\r\n this._knifeRadius = file.Read();\r\n if (ver > 1)\r\n {\r\n this.isHole = file.Read();\r\n }\r\n if (ver > 2)\r\n this.isThrough = file.Read();\r\n this.Update();\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(3);\r\n file.WriteObject(this._contourCurve);\r\n file.Write(this._knifeRadius);\r\n file.Write(this.isHole);\r\n file.Write(this.isThrough);\r\n }\r\n}\r\n","import { Object3D } from \"three\";\nimport { Entity } from \"../DatabaseServices/Entity/Entity\";\nimport { RenderType } from \"../GraphicsSystem/RenderType\";\n\n//将嵌入的实体绘制对象添加到当前的绘制对象(由于内嵌的实体可能被重复引用)\nexport function AddEntityDrawObject(obj: Object3D, embedEntity: Entity, renderType: RenderType = RenderType.Wireframe)\n{\n let embedObject = embedEntity.GetDrawObjectFromRenderType(renderType);\n if (embedObject.parent)\n obj.children.push(embedObject);//为了避免这个内嵌实体加入到不同的Object中(因为我们有PrintObject),这个写法能行,是因为我们会在其他地方更新它的矩阵\n else\n obj.add(embedObject);\n}\n","import { Matrix3, Object3D, Vector3 } from \"three\";\r\nimport { AddEntityDrawObject } from \"../../Common/AddEntityDrawObject\";\r\nimport { arraySortByNumber, arraySum } from \"../../Common/ArrayExt\";\r\nimport { Object3DRemoveAll } from \"../../Common/Dispose\";\r\nimport { UpdateDraw } from \"../../Common/Status\";\r\nimport { ObjectSnapMode } from \"../../Editor/ObjectSnapMode\";\r\nimport { Box3Ext } from \"../../Geometry/Box\";\r\nimport { RenderType } from \"../../GraphicsSystem/RenderType\";\r\nimport { AutoRecord } from \"../AutoRecord\";\r\nimport { Factory } from \"../CADFactory\";\r\nimport { CADFiler } from \"../CADFiler\";\r\nimport { DragPointType } from \"./DragPointType\";\r\nimport { Entity } from \"./Entity\";\r\nimport { ExtrudeSolid } from \"./Extrude\";\r\n\r\n\r\n@Factory\r\nexport class CompositeEntity extends Entity\r\n{\r\n constructor()\r\n {\r\n super();\r\n }\r\n //如果你需要修改内部实体,则需要写入记录\r\n @AutoRecord Entitys: Entity[] = [];\r\n\r\n //#region 绘制\r\n // OnlyRenderType = true; //我们现在不需要这样,因为我们每个绘制类型的Object的子实体都有子实体的渲染类型(唯一的缺点可能是渲染速度变慢了?)\r\n /**\r\n * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体.\r\n */\r\n Explode()\r\n {\r\n return this.Entitys.map(e =>\r\n {\r\n let cloneE = e.Clone();\r\n cloneE.Material = e.Material;\r\n return cloneE.ApplyMatrix(this.OCS);\r\n });\r\n }\r\n Traverse(callback: (arg0: Entity) => void)\r\n {\r\n callback(this);\r\n for (let en of this.Entitys)\r\n {\r\n if (en instanceof CompositeEntity)\r\n en.Traverse(callback);\r\n else\r\n callback(en);\r\n }\r\n }\r\n get BoundingBox()\r\n {\r\n let box = new Box3Ext();\r\n for (let e of this.Entitys)\r\n box.union(e.BoundingBox);\r\n return box.applyMatrix4(this.OCS);\r\n }\r\n protected InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\r\n {\r\n /**\r\n * 如果复合实体里面有圆,并且使用了拉伸夹点功能,在UpdateDrawObject时,会因为无法得到Jig对象而导致的错误.\r\n * 索性我们去掉Jig实体的功能.\r\n */\r\n if (renderType === RenderType.Jig) return;\r\n\r\n let object = new Object3D();\r\n this.UpdateDrawObject(renderType, object);\r\n return object;\r\n }\r\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\r\n {\r\n Object3DRemoveAll(obj);\r\n for (let e of this.Entitys)\r\n {\r\n e.IsEmbedEntity = true;\r\n\r\n // //内嵌实体在某些时候可能被清理,修复它\r\n // if (e.DrawObject.children.length === 0)\r\n // e.ClearDraw();\r\n let o = e.GetDrawObjectFromRenderType(renderType);\r\n if (o)\r\n {\r\n o.traverse(obj => obj.userData = {});\r\n AddEntityDrawObject(obj, e, renderType);\r\n }\r\n }\r\n }\r\n\r\n get ColorIndex(): number\r\n {\r\n return super.ColorIndex;\r\n }\r\n\r\n set ColorIndex(color: number)\r\n {\r\n if (color !== this._Color)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._Color = color;\r\n this.Traverse(e =>\r\n {\r\n if (e === this)\r\n return;\r\n // if (e instanceof CompositeEntity) //有点奇怪\r\n // e._Color = color;\r\n // else\r\n e.ColorIndex = color;\r\n });\r\n }\r\n }\r\n get Material()\r\n {\r\n return super.Material;\r\n }\r\n set Material(id)\r\n {\r\n super.Material = id;\r\n for (let e of this.Entitys)\r\n e.Material = id;\r\n }\r\n\r\n UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D)\r\n {\r\n this.UpdateDrawObject(renderType, obj);\r\n }\r\n\r\n RestoreJigMaterial()\r\n {\r\n //我们不做任何事情,避免更新材质引起的重绘,因为我们没有实现Jig材质,所以我们也不需要还原它\r\n }\r\n\r\n //#endregion\r\n\r\n //#region 交互操作\r\n\r\n /**\r\n *\r\n * @param snapMode 捕捉模式(单一)\r\n * @param pickPoint const\r\n * @param lastPoint const\r\n * @param viewXform const 最近点捕捉需要这个变量\r\n * @returns object snap points\r\n */\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n let pts: Vector3[] = [];\r\n for (let e of this.Entitys)\r\n {\r\n pts.push(...e.Clone().ApplyMatrix(this.OCS).GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform));\r\n }\r\n return pts;\r\n }\r\n\r\n GetGripPoints(): Array\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Grip);\r\n }\r\n\r\n MoveGripPoints(indexList: number[], vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip);\r\n }\r\n\r\n GetStretchPoints(): Array\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Stretch);\r\n }\r\n\r\n /**\r\n * 拉伸夹点,用于Stretch命令\r\n *\r\n * @param {Array} indexList 拉伸点索引列表.\r\n * @param {Vector3} vec 移动向量\r\n * @memberof Entity\r\n */\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch);\r\n }\r\n\r\n private GetGripOrStretchPoints(type: DragPointType)\r\n {\r\n let pts: Vector3[] = [];\r\n for (let e of this.Entitys)\r\n pts.push(... (type === DragPointType.Grip ? e.GetGripPoints() : e.GetStretchPoints()));\r\n for (let p of pts)\r\n p.applyMatrix4(this._Matrix);\r\n return pts;\r\n }\r\n\r\n private GetStrectchPointCountList(dragType: DragPointType): number[]\r\n {\r\n let counts: number[] = this.Entitys.map(e =>\r\n {\r\n return (dragType === DragPointType.Grip ? e.GetGripPoints() : e.GetStretchPoints()).length;\r\n });\r\n return counts;\r\n }\r\n\r\n MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n let counts = this.GetStrectchPointCountList(dragType);\r\n if (dragType === DragPointType.Stretch && indexList.length === arraySum(counts))\r\n {\r\n this.Position = this.Position.add(vec);\r\n return;\r\n }\r\n\r\n vec = vec.clone().applyMatrix4(this.OCSInv.setPosition(0, 0, 0));\r\n\r\n arraySortByNumber(indexList);\r\n let i = 0;\r\n let j = 0;\r\n let icount = indexList.length;\r\n let offset = 0;\r\n for (let count of counts)\r\n {\r\n offset += count;\r\n let ilist = [];\r\n for (; i < icount; i++)\r\n {\r\n if (indexList[i] < offset)\r\n ilist.push(indexList[i] - offset + count);\r\n else\r\n break;\r\n }\r\n\r\n let ent = this.Entitys[j];\r\n dragType === DragPointType.Grip ? ent.MoveGripPoints(ilist, vec) : ent.MoveStretchPoints(ilist, vec);\r\n if (ent instanceof ExtrudeSolid)//取消优化判断this.Objectid,因为这个实体可能被复合在另一个实体中,导致这个id是不存在的,所以我们无法判断它在拽拖.\r\n ent.CheckContourCurve();\r\n ent.Update();\r\n j++;\r\n }\r\n this.__UpdateVersion__++;\r\n\r\n //如何绘制对象是克隆的,那么我们将重绘它(避免无法更新)\r\n //我们也不大需要下面的判断,我们如果持续的更新它,其实并不会有多大的问题,因为我们总是从缓存里面拿绘制对象\r\n // if (this._drawObject && this._drawObject.children[0]?.userData.IsClone)\r\n this.Update();\r\n }\r\n CloneDrawObject(from: this)\r\n {\r\n for (let [type, obj] of from._CacheDrawObject)\r\n {\r\n let oldUserDaata = obj.userData;\r\n obj.userData = {};\r\n let newObj = obj.clone(true);\r\n obj.userData = oldUserDaata;\r\n obj.userData.IsClone = true;\r\n\r\n newObj.matrix = this._Matrix;\r\n newObj.userData = { Entity: this };\r\n newObj.userData.IsClone = true;\r\n\r\n this._CacheDrawObject.set(type, newObj);\r\n }\r\n this.NeedUpdateFlag = UpdateDraw.None;\r\n }\r\n //#endregion\r\n\r\n //#region 文件序列化\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n let v = file.Read();\r\n super._ReadFile(file);\r\n let count = file.Read();\r\n this.Entitys.length = 0;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let ent = file.ReadObject() as Entity;\r\n if (ent)\r\n this.Entitys.push(ent);\r\n }\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n file.Write(1);\r\n super.WriteFile(file);\r\n file.Write(this.Entitys.length);\r\n for (let e of this.Entitys)\r\n file.WriteObject(e);\r\n }\r\n //#endregion\r\n}\r\n","import { IBaseOption } from \"./BoardInterface\";\r\nimport { EBoardKeyList } from \"../../Common/BoardKeyList\";\r\n\r\nexport enum EWineRackType\r\n{\r\n Oblique = 0,\r\n Upright = 1,\r\n}\r\n\r\nexport enum EWRackArrayType\r\n{\r\n ByWidth = 0,\r\n ByCount = 1,\r\n Fixed = 2, //固定\r\n}\r\n\r\n/**铺满方式 */\r\nexport enum EFullType\r\n{\r\n ByHeight = 0,\r\n ByWidth = 1,\r\n Symmetry = 2,\r\n}\r\n\r\n/**高度优先时靠左还是靠右 */\r\nexport enum EFullDir\r\n{\r\n Left = 0,\r\n Right = 1,\r\n}\r\n\r\nexport interface IWineRackOption extends IBaseOption\r\n{\r\n type: EWineRackType;\r\n arrayType: EWRackArrayType;\r\n fullType: EFullType;\r\n isFull: boolean;\r\n fullDir: EFullDir;\r\n isLock: boolean;\r\n heightCount: number;\r\n widthCount: number;\r\n isTotalDepth: boolean;\r\n depth: number; //格子深\r\n calcDepth: string;\r\n gripWidth: number; //格子宽度\r\n boardThick: number;\r\n grooveWidthAdd: number;\r\n leftEdge: number;\r\n rightEdge: number;\r\n topEdge: number;\r\n bottomEdge: number;\r\n frontCut: number;\r\n leftCut: number;\r\n rightCut: number;\r\n topCut: number;\r\n grooveLengthAdd: number;\r\n isDrawLy: boolean;\r\n isDrawVer: boolean;\r\n brThick2: number; //补板厚\r\n}\r\n\r\nexport interface IR2WROption\r\n{\r\n depth: number;\r\n addLen: number;\r\n knifeRadius: number;\r\n [EBoardKeyList.UpSealed]: number;\r\n [EBoardKeyList.DownSealed]: number;\r\n [EBoardKeyList.LeftSealed]: number;\r\n [EBoardKeyList.RightSealed]: number;\r\n}\r\n","import { LinesType, FaceDirection, ComposingType, IBaseOption } from \"./BoardInterface\";\nimport { EBoardKeyList } from \"../../Common/BoardKeyList\";\n\nexport const DRILL_KEYS = [\"downDrill\", \"rightDrill\", \"upDrill\", \"leftDrill\"];\n\nexport interface IBoardFindOption extends IBaseOption\n{\n condition: IFindCondition;\n compareType: ICompareType;\n tolerance: ITolerance;\n layer: string;\n [EBoardKeyList.Height]: string;\n [EBoardKeyList.Width]: string;\n [EBoardKeyList.Thick]: string;\n [EBoardKeyList.RoomName]: string;\n [EBoardKeyList.CabinetName]: string;\n brName: string; //板名\n [EBoardKeyList.BrMat]: string; //板材\n [EBoardKeyList.Mat]: string;\n [EBoardKeyList.Color]: string;\n [EBoardKeyList.Lines]: LinesType;\n [EBoardKeyList.BigHole]: FaceDirection;\n [EBoardKeyList.DrillType]: string;\n [EBoardKeyList.ComposingFace]: ComposingType;\n [EBoardKeyList.UpSealed]: string;\n [EBoardKeyList.DownSealed]: string;\n [EBoardKeyList.LeftSealed]: string;\n [EBoardKeyList.RightSealed]: string;\n highDrill: string[];\n upDownDrill: [boolean, boolean];\n isClose: boolean;\n remarks: [string, string][];\n isChaidan: boolean;\n [EBoardKeyList.KnifeRad]: string;\n}\nexport interface IFindCondition\n{\n layer: boolean;\n [EBoardKeyList.Height]: boolean;\n [EBoardKeyList.Width]: boolean;\n [EBoardKeyList.Thick]: boolean;\n useWood: boolean;\n useDrill: boolean;\n useNail: boolean;\n useDoor: boolean;\n useDim: boolean;\n useSpecial: boolean;\n useModeling: boolean;\n [EBoardKeyList.RoomName]: boolean;\n [EBoardKeyList.CabinetName]: boolean;\n brName: boolean;\n [EBoardKeyList.Mat]: boolean;\n [EBoardKeyList.Lines]: boolean;\n [EBoardKeyList.BigHole]: boolean;\n [EBoardKeyList.DrillType]: boolean;\n useKeyWord: boolean;\n [EBoardKeyList.ComposingFace]: boolean;\n [EBoardKeyList.UpSealed]: boolean;\n [EBoardKeyList.DownSealed]: boolean;\n [EBoardKeyList.LeftSealed]: boolean;\n [EBoardKeyList.RightSealed]: boolean;\n upDrill: boolean;\n downDrill: boolean;\n leftDrill: boolean;\n rightDrill: boolean;\n useZhengFanDrill: boolean;\n useChaidan: boolean;\n [EBoardKeyList.KnifeRad]: boolean;\n}\n\nexport interface ICompareType\n{\n [EBoardKeyList.Height]: ECompareType;\n [EBoardKeyList.Width]: ECompareType;\n [EBoardKeyList.Thick]: ECompareType;\n [EBoardKeyList.RoomName]: ECompareType;\n [EBoardKeyList.CabinetName]: ECompareType;\n brName: ECompareType;\n [EBoardKeyList.BrMat]: ECompareType;\n [EBoardKeyList.Mat]: ECompareType;\n [EBoardKeyList.Color]: ECompareType;\n [EBoardKeyList.Lines]: ECompareType;\n [EBoardKeyList.BigHole]: ECompareType;\n [EBoardKeyList.DrillType]: ECompareType;\n [EBoardKeyList.ComposingFace]: ECompareType;\n [EBoardKeyList.KnifeRad]: ECompareType;\n}\nexport interface ITolerance\n{\n [EBoardKeyList.Height]: string;\n [EBoardKeyList.Width]: string;\n [EBoardKeyList.Thick]: string;\n [EBoardKeyList.KnifeRad]: string;\n}\n\nexport enum EFindType\n{\n Find = 0,\n Modify = 1,\n FindMaxSize = 2,\n FindSplite = 3,\n GetOption = 4,\n RemoveModeling = 5,\n RemoveSpecialShape = 6,\n RemoveModelingAndSpecial = 7,\n ModifyHardware = 8,\n FindMinSize = 9,\n}\n\nexport enum ECompareType\n{\n Equal = \"=\",\n UnEqual = \"!=\",\n Greater = \">=\",\n Less = \"<=\"\n}\n","import { IBaseOption } from \"./BoardInterface\";\r\n\r\nexport enum ELatticeArrayType\r\n{\r\n ByWidth = 0,\r\n ByCount = 1,\r\n}\r\n\r\nexport interface ILatticeOption extends IBaseOption\r\n{\r\n arrayType: ELatticeArrayType;\r\n gripWidth: number;\r\n gripDepth: number;\r\n widthCount: number;\r\n depthCount: number;\r\n knifeRad: number,\r\n thickness: number,\r\n arcLen: number;\r\n downDist: number;\r\n space: number; //四周间隙\r\n grooveAddWidth: number; //齿加宽\r\n upSealed: number;\r\n downSealed: number;\r\n leftSealed: number;\r\n rightSealed: number;\r\n isAuto: boolean; //自动识别弧长\r\n isChange: boolean; //左右侧板跟随变化\r\n isOpenCut: boolean;\r\n upCut: number;\r\n downCut: number;\r\n}\r\n","import { INeedUpdateParams } from \"../Components/Template/TemplateComponent\";\r\nimport { IBaseOption } from \"./BoardInterface\";\r\n\r\nexport interface IDoorAndDrawerConfigOption extends IBaseOption\r\n{\r\n col: number;\r\n row: number;\r\n isAllSelect: boolean; //是否行列全选\r\n topOffset: number; //上留空\r\n bottomOffset: number; //下留空\r\n doorPosType: DoorPosType;\r\n offset: number; //内偏移\r\n topExt: number;\r\n bottomExt: number;\r\n leftExt: number;\r\n rightExt: number;\r\n topSpace: number; //间隙\r\n bottomSpace: number;\r\n leftSpace: number;\r\n rightSpace: number;\r\n midSpace: number;\r\n thickness: number; //立板厚度\r\n depth: number; //立板深度\r\n isAuto: boolean; //智能识别\r\n boardName: string; //柜名\r\n handleAngle: number; //拉手\r\n handleHorPos: HandleHorPos; //水平位置距离\r\n horSpacing: number;\r\n handleVePos: HandleVePos; // 垂直位置距离\r\n veSpacing: number;\r\n upOffsetExpr: string;\r\n downOffsetExpr: string;\r\n}\r\n\r\n/**\r\n * 门板数据接口\r\n */\r\nexport interface IDoorConfigOption extends IDoorAndDrawerConfigOption\r\n{\r\n doorThickness: number; //门板厚度\r\n topBrSeal: number; //层板封边\r\n bottomBrSeal: number;\r\n leftBrSeal: number;\r\n rightBrSeal: number;\r\n topDoorSeal: number; //门板封边\r\n bottomDoorSeal: number;\r\n leftDoorSeal: number;\r\n rightDoorSeal: number;\r\n hingeCount: number; //铰链\r\n hindeTopDist: number;\r\n hindeBottomDist: number;\r\n}\r\n\r\n/**\r\n * 抽屉数据接口\r\n */\r\nexport interface IDrawerConfigOption extends IDoorAndDrawerConfigOption\r\n{\r\n drawerTotalDepth: number; //抽屉总深\r\n trackDepth: number; //轨道深度\r\n isAutoSelectTrack: boolean;\r\n isLockTopOffset: boolean;\r\n isLockBottomOffset: boolean;\r\n}\r\n\r\n//门板位置类型\r\nexport enum DoorPosType\r\n{\r\n Out = 0, //外盖\r\n In = 1,\r\n}\r\n\r\nexport enum HandleHorPos\r\n{\r\n Left = 0,\r\n Right = 1,\r\n Mid = 2,\r\n}\r\nexport enum HandleVePos\r\n{\r\n Top = 0,\r\n Bottom = 1,\r\n Mid = 2,\r\n}\r\n//门板开门类型\r\nexport enum DoorOpenDir\r\n{\r\n Left = \"lf\",\r\n Right = \"rt\",\r\n Top = \"tp\",\r\n Bottom = \"bm\",\r\n None = \"none\",\r\n}\r\n\r\n//抽屉门板信息\r\nexport interface IDrawerInfo extends IBaseOption\r\n{\r\n row: number,\r\n col: number,\r\n divWidth: number, //预览UI尺寸\r\n divHeight: number,\r\n showWidth: string, //UI展示数据\r\n showHeight: string,\r\n width: number, //门板计算尺寸\r\n height: number,\r\n isLockWidth: boolean,\r\n isLockHeight: boolean,\r\n isSelect: boolean;\r\n tempInfo: ISelectTempInfo;\r\n marginRight?: number;\r\n}\r\n\r\nexport interface IDoorInfo extends IDrawerInfo\r\n{\r\n openDir: DoorOpenDir,\r\n\r\n isDrawLayer: boolean;\r\n isDrawVer: boolean;\r\n}\r\n\r\nexport interface IDrawerDoorTempInfo\r\n{\r\n name: string;\r\n id: string;\r\n logo?: string;\r\n props?: INeedUpdateParams[];\r\n title?: string;\r\n isHandle?: boolean;\r\n tagName?: string;\r\n isKuGan?: boolean;\r\n}\r\n\r\n/**选择的模板信息,temp-抽屉或门板,handletemp-拉手模板,其他是铰链模板 */\r\nexport interface ISelectTempInfo\r\n{\r\n temp: IDrawerDoorTempInfo;\r\n handleTemp: IDrawerDoorTempInfo;\r\n hingeTemp?: IDrawerDoorTempInfo;\r\n [key: string]: IDrawerDoorTempInfo;\r\n}\r\n\r\n/**抽屉一定要有的参数 */\r\nexport const DrawerTempParName = [\"ZYS\", \"YYS\", \"SYS\", \"XYS\"];\r\n/**禁止改的属性 */\r\nexport const DisableChangeParName = [\"L\", \"W\", \"H\", \"ZYS\", \"YYS\", \"SYS\", \"XYS\", \"ZG\", \"YG\", \"SG\", \"XG\"];\r\n\r\n/**门板需要的参数 */\r\nexport const DoorNeedParamNames = [\"L\", \"W\", \"H\", \"PX\", \"PY\", \"PZ\", \"RX\", \"RY\", \"RZ\", \"SG\", \"XG\", \"ZG\", \"YG\", \"XBH\", \"BH\"];\r\n","import { IBaseOption } from \"../../Store/BoardInterface\";\r\nimport { EBoardKeyList } from \"../../../Common/BoardKeyList\";\r\n\r\nexport interface IHardwareOption extends IBaseOption\r\n{\r\n name: string;\r\n unit: string;\r\n [EBoardKeyList.RoomName]: string;\r\n [EBoardKeyList.CabinetName]: string;\r\n costExpr: string;\r\n actualExpr: string;\r\n model: string;\r\n factory: string;\r\n brand: string;\r\n spec: string;\r\n comments: string;\r\n isHole: boolean;\r\n}\r\n\r\nexport interface ICylMetalsOption extends IHardwareOption\r\n{\r\n rad: number;\r\n height: number;\r\n count: string;\r\n}\r\n\r\nexport interface IExtMetalsOption extends IHardwareOption\r\n{\r\n thickness: number;\r\n knifeRad: number;\r\n addLen: number;\r\n isHole: boolean;\r\n count: string;\r\n}\r\n\r\nexport enum EMetalsType\r\n{\r\n Metals = \"五金\",\r\n Comp = \"组件\",\r\n}\r\n\r\nexport interface ICompHardwareOption extends IHardwareOption\r\n{\r\n type: EMetalsType;\r\n isSplite: boolean;\r\n isSplitePrice: boolean;\r\n color: string;\r\n [EBoardKeyList.Mat]: string;\r\n count: string;\r\n}\r\n\r\nexport interface IToplineOption extends IHardwareOption\r\n{\r\n addLen: string;\r\n}\r\n","import { LayerBoardOption, BrRelativePos, VerticalBoardOption, BehindBoardOption, BehindHeightPositon, TBBoardOption, LayerNailOption, SingleBoardOption, ClosingStripOption, StripType, LinesType, FaceDirection, ComposingType, IBoardBatchCurtailOption, CurtailType, BoardProcessOption, SideBoardOption, BoardType } from \"../UI/Store/BoardInterface\";\r\nimport { IWineRackOption, EWineRackType, EWRackArrayType, EFullType, EFullDir } from \"../UI/Store/WineRackInterface\";\r\nimport { IBoardFindOption, ECompareType } from \"../UI/Store/BoardFindInterface\";\r\nimport { ILatticeOption, ELatticeArrayType } from \"../UI/Store/LatticeInterface\";\r\nimport { HandleVePos, DoorPosType, HandleHorPos, IDrawerConfigOption, IDoorConfigOption } from \"../UI/Store/DoorInterface\";\r\nimport { EBoardKeyList } from \"../Common/BoardKeyList\";\r\nimport { ICylMetalsOption, IExtMetalsOption, ICompHardwareOption, EMetalsType, IToplineOption } from \"../UI/Components/RightPanel/RightPanelInterface\";\r\nimport { Curve2RecOption } from \"../Add-on/twoD2threeD/Modals/Curve2RecModal\";\r\nimport { IUpdateBoardInfosOption } from \"../UI/Components/Board/UpdateBoardInfointerface\";\r\nimport { IRec2BrOption, IRect2Br2Option } from \"../Add-on/twoD2threeD/R2bInterface\";\r\n\r\nexport const DefaultLayerBoardConfig: LayerBoardOption = {\r\n version: 2,\r\n type: BoardType.Layer,\r\n name: \"层板\",\r\n frontShrink: 0,\r\n leftShrink: 0,\r\n rightShrink: 0,\r\n calcHeight: \"W\",\r\n isTotalLength: true,\r\n boardRelative: BrRelativePos.Div,\r\n thickness: 18,\r\n count: 1,\r\n spaceSize: 300,\r\n isActive: false,\r\n calcSpaceSize: \"0\",\r\n calcFrontShrink: \"0\",\r\n calcLeftShrink: \"0\",\r\n calcRightShrink: \"0\",\r\n};\r\nObject.freeze(DefaultLayerBoardConfig);\r\n\r\nexport const DefaultVerticalBoardConfig: VerticalBoardOption = {\r\n version: 2,\r\n type: BoardType.Vertical,\r\n name: \"立板\",\r\n frontShrink: 0,\r\n bottomShrink: 0,\r\n calcWidth: \"W\",\r\n calcHeight: \"H\",\r\n isTotalLength: true,\r\n isTotalWidth: true,\r\n boardRelative: BrRelativePos.Div,\r\n thickness: 18,\r\n count: 1,\r\n spaceSize: 0,\r\n calcSpaceSize: \"0\",\r\n calcBottomShrink: \"0\",\r\n calcFrontShrink: \"0\",\r\n};\r\nObject.freeze(DefaultVerticalBoardConfig);\r\n\r\nexport const DefaultBehindBoardConfig: BehindBoardOption = {\r\n version: 2,\r\n type: BoardType.Behind,\r\n name: \"背板\",\r\n leftExt: 0,\r\n rightExt: 0,\r\n topExt: 0,\r\n bottomExt: 0,\r\n thickness: 18,\r\n boardPosition: BehindHeightPositon.AllHeight,\r\n calcHeight: \"H\",\r\n moveDist: 0,\r\n boardRelative: BrRelativePos.Back,\r\n spaceSize: 0,\r\n count: 1,\r\n calcSpaceSize: \"0\",\r\n calcMoveDist: \"0\",\r\n};\r\nObject.freeze(DefaultBehindBoardConfig);\r\n\r\nexport const DefaultWineRackConfig: IWineRackOption = {\r\n version: 1,\r\n type: EWineRackType.Oblique,\r\n arrayType: EWRackArrayType.ByWidth,\r\n fullType: EFullType.ByWidth,\r\n isFull: false,\r\n isLock: false,\r\n fullDir: EFullDir.Left,\r\n heightCount: 3.5,\r\n widthCount: 3.5,\r\n isTotalDepth: true,\r\n depth: 0,\r\n gripWidth: 100,\r\n calcDepth: \"W\",\r\n boardThick: 18,\r\n grooveWidthAdd: 0,\r\n leftEdge: 1,\r\n rightEdge: 1,\r\n topEdge: 1,\r\n bottomEdge: 1,\r\n frontCut: 0,\r\n leftCut: 0,\r\n rightCut: 0,\r\n topCut: 0,\r\n grooveLengthAdd: 3,\r\n isDrawLy: false,\r\n isDrawVer: false,\r\n brThick2: 18,\r\n};\r\nObject.freeze(DefaultWineRackConfig);\r\n\r\nexport const DefaultTopBoardOption: TBBoardOption = {\r\n version: 2,\r\n type: BoardType.Layer,\r\n name: \"顶板\",\r\n isDraw: true,\r\n thickness: 18,\r\n frontDist: 0,\r\n behindDistance: 0,\r\n isWrapSide: false,\r\n useLFData: true,\r\n leftExt: 0,\r\n rightExt: 0,\r\n offset: 0,\r\n};\r\nObject.freeze(DefaultTopBoardOption);\r\n\r\nexport const DefaultBottomBoardOption: TBBoardOption = {\r\n version: 2,\r\n type: BoardType.Layer,\r\n name: \"底板\",\r\n isDraw: true,\r\n thickness: 18,\r\n frontDist: 0,\r\n behindDistance: 0,\r\n isWrapSide: false,\r\n useLFData: true,\r\n leftExt: 0,\r\n rightExt: 0,\r\n offset: 80,\r\n footThickness: 18,\r\n isDrawFooter: true,\r\n footBehindShrink: 0,\r\n isDrawBackFooter: false,\r\n isDrawStrengthenStrip: false,\r\n footerOffset: 0,\r\n divCount: 1,\r\n};\r\nObject.freeze(DefaultBottomBoardOption);\r\n\r\nexport const DefaultSideBoardOption: SideBoardOption = {\r\n version: 2,\r\n type: BoardType.Vertical,\r\n name: \"\",\r\n height: 2000,\r\n width: 600,\r\n thickness: 18,\r\n spaceSize: 1200,\r\n leftShrink: 0,\r\n rightShrink: 0,\r\n};\r\nObject.freeze(DefaultSideBoardOption);\r\n\r\nexport const DefaultSingleBoardOption: SingleBoardOption = {\r\n version: 1,\r\n name: \"层板\",\r\n type: BoardType.Layer,\r\n height: 1200,\r\n width: 600,\r\n thickness: 18,\r\n rotateX: 0,\r\n rotateY: 0,\r\n rotateZ: 0\r\n};\r\nObject.freeze(DefaultSingleBoardOption);\r\n\r\nexport const DefaultClosingStripOption: ClosingStripOption = {\r\n version: 2,\r\n type: BoardType.Vertical,\r\n name: \"收口条\",\r\n striptype: StripType.H,\r\n boardRelative: BrRelativePos.Left,\r\n width: 54,\r\n thickness: 18,\r\n frontShrink: 0,\r\n isDrawFuZhu: true,\r\n fzWidth: 80,\r\n fzThickness: 18,\r\n};\r\nObject.freeze(DefaultClosingStripOption);\r\n\r\nexport const DefaultBoardFindOption: IBoardFindOption = {\r\n version: 5,\r\n condition: {\r\n layer: false,\r\n height: false,\r\n width: false,\r\n thickness: false,\r\n useWood: false,\r\n useDrill: false,\r\n useNail: false,\r\n useDoor: false,\r\n useDim: false,\r\n useSpecial: false,\r\n useModeling: false,\r\n roomName: false,\r\n cabinetName: false,\r\n brName: false,\r\n material: false,\r\n lines: false,\r\n bigHoleDir: false,\r\n drillType: false,\r\n useKeyWord: false,\r\n composingFace: false,\r\n sealedUp: false,\r\n sealedDown: false,\r\n sealedLeft: false,\r\n sealedRight: false,\r\n upDrill: false,\r\n downDrill: false,\r\n leftDrill: false,\r\n rightDrill: false,\r\n useZhengFanDrill: false,\r\n useChaidan: false,\r\n [EBoardKeyList.KnifeRad]: false,\r\n },\r\n compareType: {\r\n height: ECompareType.Equal,\r\n width: ECompareType.Equal,\r\n thickness: ECompareType.Equal,\r\n roomName: ECompareType.Equal,\r\n cabinetName: ECompareType.Equal,\r\n brName: ECompareType.Equal,\r\n [EBoardKeyList.Mat]: ECompareType.Equal,\r\n [EBoardKeyList.Color]: ECompareType.Equal,\r\n [EBoardKeyList.BrMat]: ECompareType.Equal,\r\n lines: ECompareType.Equal,\r\n bigHoleDir: ECompareType.Equal,\r\n drillType: ECompareType.Equal,\r\n composingFace: ECompareType.Equal,\r\n [EBoardKeyList.KnifeRad]: ECompareType.Equal,\r\n\r\n },\r\n tolerance: {\r\n height: \"\",\r\n width: \"\",\r\n thickness: \"\",\r\n [EBoardKeyList.KnifeRad]: \"\",\r\n },\r\n layer: \"0\",\r\n height: \"\",\r\n width: \"\",\r\n thickness: \"\",\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n brName: \"\",\r\n [EBoardKeyList.BrMat]: \"\",\r\n material: \"\",\r\n color: \"\",\r\n lines: LinesType.Positive,\r\n bigHoleDir: FaceDirection.Front,\r\n drillType: \"\",\r\n composingFace: ComposingType.Positive,\r\n sealedUp: \"\",\r\n sealedDown: \"\",\r\n sealedLeft: \"\",\r\n sealedRight: \"\",\r\n highDrill: [],\r\n upDownDrill: [true, true],\r\n isClose: false,\r\n remarks: Array.from({ length: 10 }, () => [\"\", \"\"]),\r\n isChaidan: false,\r\n [EBoardKeyList.KnifeRad]: \"\",\r\n};\r\nObject.freeze(DefaultBoardFindOption);\r\n\r\nexport const DefaultLatticOption: ILatticeOption = {\r\n version: 1,\r\n arrayType: ELatticeArrayType.ByWidth,\r\n gripWidth: 100,\r\n gripDepth: 100,\r\n widthCount: 3,\r\n depthCount: 4,\r\n knifeRad: 3,\r\n thickness: 18,\r\n arcLen: 50,\r\n downDist: 0,\r\n space: 0.2,\r\n grooveAddWidth: 0.2,\r\n upSealed: 1,\r\n downSealed: 1,\r\n leftSealed: 1,\r\n rightSealed: 1,\r\n isAuto: true,\r\n isChange: true,\r\n isOpenCut: false,\r\n upCut: 0,\r\n downCut: 4,\r\n};\r\nObject.freeze(DefaultLatticOption);\r\n\r\nexport const DefaultDoorOption: IDoorConfigOption = {\r\n version: 3,\r\n col: 2,\r\n row: 1,\r\n isAllSelect: true,\r\n topOffset: 0,\r\n bottomOffset: 0,\r\n doorPosType: DoorPosType.Out,\r\n offset: 0,\r\n topExt: 18,\r\n bottomExt: 18,\r\n leftExt: 18,\r\n rightExt: 18,\r\n topSpace: 2,\r\n bottomSpace: 2,\r\n leftSpace: 2,\r\n rightSpace: 2,\r\n midSpace: 2,\r\n thickness: 18,\r\n depth: 0,\r\n isAuto: true,\r\n boardName: \"\",\r\n doorThickness: 18,\r\n topBrSeal: 1,\r\n bottomBrSeal: 1,\r\n leftBrSeal: 1,\r\n rightBrSeal: 1,\r\n topDoorSeal: 1,\r\n bottomDoorSeal: 1,\r\n leftDoorSeal: 1,\r\n rightDoorSeal: 1,\r\n handleAngle: 0,\r\n handleHorPos: HandleHorPos.Right,\r\n horSpacing: 50,\r\n handleVePos: HandleVePos.Mid,\r\n veSpacing: 10,\r\n hingeCount: 0,\r\n hindeTopDist: 0,\r\n hindeBottomDist: 0,\r\n downOffsetExpr: \"0\",\r\n upOffsetExpr: \"0\",\r\n};\r\nObject.freeze(DefaultDoorOption);\r\n\r\nexport const DefaultDrawerOption: IDrawerConfigOption = {\r\n version: 4,\r\n col: 1,\r\n row: 1,\r\n isAllSelect: true,\r\n topOffset: 0,\r\n bottomOffset: 0,\r\n doorPosType: DoorPosType.Out,\r\n offset: 0,\r\n topExt: 18,\r\n bottomExt: 18,\r\n leftExt: 18,\r\n rightExt: 18,\r\n topSpace: 2,\r\n bottomSpace: 2,\r\n leftSpace: 2,\r\n rightSpace: 2,\r\n midSpace: 2,\r\n thickness: 18,\r\n depth: 0,\r\n isAuto: true,\r\n boardName: \"\",\r\n handleAngle: 90,\r\n handleHorPos: HandleHorPos.Mid,\r\n horSpacing: 10,\r\n handleVePos: HandleVePos.Mid,\r\n veSpacing: 10,\r\n drawerTotalDepth: 0,\r\n trackDepth: 0,\r\n isAutoSelectTrack: true,\r\n isLockTopOffset: false,\r\n isLockBottomOffset: false,\r\n downOffsetExpr: \"0\",\r\n upOffsetExpr: \"0\",\r\n};\r\nObject.freeze(DefaultDrawerOption);\r\n\r\nexport const DefaultBoardBatchCurtailOption: IBoardBatchCurtailOption = {\r\n version: 1,\r\n type: CurtailType.Total,\r\n front: 0,\r\n back: 0,\r\n left: 0,\r\n right: 0,\r\n moveBrs: false,\r\n};\r\nObject.freeze(DefaultBoardBatchCurtailOption);\r\n\r\nexport const DefaultLatticeConfig: ILatticeOption = {\r\n arrayType: ELatticeArrayType.ByWidth,\r\n gripWidth: 100,\r\n gripDepth: 100,\r\n widthCount: 3,\r\n depthCount: 4,\r\n knifeRad: 3,\r\n thickness: 18,\r\n arcLen: 50,\r\n downDist: 0,\r\n space: 0.5,\r\n grooveAddWidth: 0,\r\n upSealed: 1,\r\n downSealed: 0,\r\n leftSealed: 0,\r\n rightSealed: 0,\r\n isAuto: true,\r\n isChange: true,\r\n isOpenCut: false,\r\n upCut: 0,\r\n downCut: 4,\r\n};\r\nObject.freeze(DefaultLatticeConfig);\r\n\r\nexport const DefaultNailOption: LayerNailOption = {\r\n version: 1,\r\n isDraw: true,\r\n addCount: 0,\r\n dist: 50,\r\n isGroup: false,\r\n isInBack: false,\r\n front: 50,\r\n behind: 50,\r\n count: 2,\r\n rad: 2.5,\r\n length: 34,\r\n depth: 11\r\n};\r\nObject.freeze(DefaultNailOption);\r\n\r\nexport const DefaultCylinederMetalsOption: ICylMetalsOption = {\r\n version: 2,\r\n rad: 50,\r\n height: 200,\r\n name: \"圆柱体\",\r\n unit: \"\",\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n costExpr: \"L*R*R*3.14\",\r\n actualExpr: \"L*R*R*3.14*3\",\r\n model: \"X-1\",\r\n factory: \"晨丰\",\r\n brand: \"晨丰\",\r\n spec: \"个\",\r\n count: \"1\",\r\n comments: \"\",\r\n isHole: true,\r\n};\r\nObject.freeze(DefaultCylinederMetalsOption);\r\nexport const DefaultExtruderMetalsOption: IExtMetalsOption = {\r\n version: 1,\r\n thickness: 100,\r\n knifeRad: 0,\r\n isHole: true,\r\n addLen: 0,\r\n name: \"拉伸实体\",\r\n unit: \"\",\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n costExpr: \"L*W*H*100\",\r\n actualExpr: \"L*W*H*200\",\r\n model: \"X-1\",\r\n factory: \"晨丰\",\r\n brand: \"晨丰\",\r\n spec: \"个\",\r\n count: \"1\",\r\n comments: \"\",\r\n};\r\nObject.freeze(DefaultExtruderMetalsOption);\r\nexport const DefaultCompositeMetalsOption: ICompHardwareOption = {\r\n version: 2,\r\n type: EMetalsType.Metals,\r\n isSplite: false,\r\n isSplitePrice: false,\r\n name: \"复合实体\",\r\n unit: \"\",\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n costExpr: \"L*W*H*100\",\r\n actualExpr: \"L*W*H*300\",\r\n model: \"X-1\",\r\n factory: \"晨丰\",\r\n brand: \"晨丰\",\r\n spec: \"个\",\r\n count: \"1\",\r\n color: \"\",\r\n material: \"\",\r\n comments: \"\",\r\n isHole: true,\r\n};\r\nObject.freeze(DefaultCompositeMetalsOption);\r\nexport const DefaultToplineMetalsOption: IToplineOption = {\r\n version: 3,\r\n name: \"顶线\",\r\n unit: \"毫米\",\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n costExpr: \"\",\r\n actualExpr: \"\",\r\n model: \"\",\r\n factory: \"\",\r\n brand: \"\",\r\n spec: \"\",\r\n comments: \"\",\r\n addLen: \"0\",\r\n isHole: false,\r\n};\r\nObject.freeze(DefaultToplineMetalsOption);\r\n\r\nexport const DefaultBoardProcessOption: BoardProcessOption = {\r\n version: 3,\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n boardName: \"\",\r\n material: \"\",\r\n color: \"\",\r\n lines: LinesType.Positive,\r\n bigHoleDir: FaceDirection.Front,\r\n drillType: \"\",\r\n composingFace: ComposingType.Arbitrary,\r\n highSealed: [],\r\n sealedUp: \"1\",\r\n sealedDown: \"1\",\r\n sealedLeft: \"1\",\r\n sealedRight: \"1\",\r\n spliteHeight: \"\",\r\n spliteWidth: \"\",\r\n spliteThickness: \"\",\r\n highDrill: [],\r\n frontDrill: true,\r\n backDrill: true,\r\n remarks: [],\r\n useBoardProcessOption: true,\r\n};\r\nObject.freeze(DefaultBoardProcessOption);\r\n\r\nexport const DefaultCurve2RecOption: Curve2RecOption = {\r\n version: 1,\r\n isSaveMax: false,\r\n isSaveSmall: true,\r\n width: 90,\r\n isAnaly: true,\r\n gap: 3\r\n};\r\nObject.freeze(DefaultCurve2RecOption);\r\n\r\nexport const DefaultUpdateInfoOption: IUpdateBoardInfosOption = {\r\n [EBoardKeyList.RoomName]: \"\",\r\n [EBoardKeyList.CabinetName]: \"\",\r\n [EBoardKeyList.Lines]: LinesType.Positive,\r\n [EBoardKeyList.BigHole]: FaceDirection.Front,\r\n [EBoardKeyList.DrillType]: \"\",\r\n [EBoardKeyList.ComposingFace]: ComposingType.Arbitrary,\r\n upDownDrill: [true, true],\r\n [EBoardKeyList.UpSealed]: \"1\",//封边上下左右\r\n [EBoardKeyList.DownSealed]: \"1\",\r\n [EBoardKeyList.LeftSealed]: \"1\",\r\n [EBoardKeyList.RightSealed]: \"1\",\r\n [EBoardKeyList.KnifeRad]: \"3\",\r\n remarks: Array.from({ length: 10 }, () => [\"\", \"\"]),\r\n [EBoardKeyList.BrMat]: \"\",\r\n [EBoardKeyList.Mat]: \"\",\r\n [EBoardKeyList.Color]: \"\",\r\n grooveAddDepth: \"0\",\r\n grooveAddLength: \"0\",\r\n grooveAddWidth: \"0\",\r\n highDrill: [],\r\n condition: {\r\n [EBoardKeyList.RoomName]: false,\r\n [EBoardKeyList.CabinetName]: false,\r\n [EBoardKeyList.Lines]: true,\r\n [EBoardKeyList.BigHole]: true,\r\n [EBoardKeyList.DrillType]: true,\r\n [EBoardKeyList.ComposingFace]: true,\r\n [EBoardKeyList.UpSealed]: true,\r\n [EBoardKeyList.DownSealed]: true,\r\n [EBoardKeyList.LeftSealed]: true,\r\n [EBoardKeyList.RightSealed]: true,\r\n useZhengFanDrill: true,\r\n remarks: true,\r\n [EBoardKeyList.KnifeRad]: true,\r\n [EBoardKeyList.Mat]: true,\r\n grooveAddDepth: true,\r\n grooveAddLength: true,\r\n grooveAddWidth: true,\r\n upDrill: true,\r\n downDrill: true,\r\n leftDrill: true,\r\n rightDrill: true,\r\n }\r\n};\r\n\r\nObject.freeze(DefaultUpdateInfoOption);\r\n\r\nexport const DefaultKuGanOption = {\r\n count: 1,\r\n isHor: false,\r\n depth: 0,\r\n isDefault: true,\r\n leftDist: 0,\r\n rightDist: 0,\r\n};\r\nObject.freeze(DefaultKuGanOption);\r\n\r\nexport const DefaultR2bOption: IRec2BrOption = {\r\n version: 2,\r\n cabinetDeep: 400,\r\n cabinetBrThick: 18,\r\n cabinetCurtail: 0,\r\n backBrThick: 18,\r\n backBrBiggerThanHeight: 200,\r\n backBrBiggerThanWidth: 200,\r\n backBrFrontMove: 0,\r\n backBrLeftExtend: 0,\r\n backBrRightExtend: 0,\r\n backBrUpExtend: 0,\r\n backBrDownExtend: 0,\r\n verticalBrShrink: 0,\r\n layerBrShrink: 0,\r\n topBrShrink: 0,\r\n bottomBrShrink: 0,\r\n groundLineBrShrink: 0,\r\n farLeftVerticalBrName: \"左侧板\",\r\n farRightVerticalBrName: \"右侧板\",\r\n topMostLayerBrName: \"顶板\",\r\n bottomMostLayerBrName: \"底板\",\r\n bottomMostBackBrName: \"地脚线\",\r\n stripeBrName: \"收口条\",\r\n cabinetName: \"\",\r\n isfarLeftVerticalBrName: true,//最左侧立板名称\r\n isfarRightVerticalBrName: true,\r\n istopMostLayerBrName: true,\r\n isbottomMostLayerBrName: true,\r\n isbottomMostBackBrName: true,\r\n isstripeBrName: true,\r\n iscabinetName: false,//修改柜名\r\n isMultiBackBr: false,\r\n grooveOption: {\r\n grooveAddLength: \"0\",\r\n grooveAddWidth: \"0\",\r\n grooveAddDepth: \"0\",\r\n knifeRadius: \"3\",\r\n },\r\n roomName: \"\",\r\n boardMatName: \"\",\r\n material: \"\",\r\n color: \"\",\r\n drillType: \"\",\r\n sealedDown: \"1\",\r\n sealedLeft: \"1\",\r\n sealedRight: \"1\",\r\n sealedUp: \"1\",\r\n backBrUseTemplate: false,\r\n backBrTemplate: null,\r\n remarks: Array.from({ length: 12 }, () => [\"\", \"\"]),\r\n maxThickness: 20,\r\n useBrName: true,\r\n configName: \"\",\r\n backBrName: \"背板\",\r\n behindIsRelative: false,\r\n footerThickness: 18,\r\n};\r\nObject.freeze(DefaultR2bOption);\r\nexport const DefaultR2b2Option: IRect2Br2Option = {\r\n version: 1,\r\n depthExpr: \"W\",\r\n drillType: \"\",\r\n sealedDown: \"1\",\r\n sealedLeft: \"1\",\r\n sealedRight: \"1\",\r\n sealedUp: \"1\",\r\n remarks: Array.from({ length: 12 }, () => [\"\", \"\"]),\r\n maxThickness: 20,\r\n layerShrink: 0,\r\n vertialShrink: 0,\r\n};\r\nObject.freeze(DefaultR2b2Option);\r\n","import { CompositeEntity } from \"../Entity/CompositeEntity\";\nimport { Factory } from \"../CADFactory\";\nimport { AutoRecord } from \"../AutoRecord\";\nimport { ICompHardwareOption } from \"../../UI/Components/RightPanel/RightPanelInterface\";\nimport { CADFiler } from \"../CADFiler\";\nimport { DefaultCompositeMetalsOption } from \"../../Editor/DefaultConfig\";\nimport { Entity } from \"../Entity/Entity\";\nimport { ObjectId } from \"../ObjectId\";\n\n@Factory\nexport class HardwareCompositeEntity extends CompositeEntity\n{\n @AutoRecord HardwareOption: ICompHardwareOption = { ...DefaultCompositeMetalsOption };\n @AutoRecord DataList: [string, string][] = [];\n @AutoRecord RelevanceBoards: ObjectId[] = [];\n constructor()\n {\n super();\n }\n GetAllEntity(isHole: boolean = false, filter?: (e: Entity) => boolean)\n {\n let holes: Entity[] = [];\n for (let e of this.Entitys)\n {\n if (e instanceof HardwareCompositeEntity)\n {\n if (!isHole || e.HardwareOption.isHole)\n holes.push(...e.GetAllEntity(isHole, filter).map(h => h.ApplyMatrix(this.OCS)));\n }\n else\n {\n if (!filter || filter(e))\n {\n holes.push(e.Clone().ApplyMatrix(this.OCS));\n }\n }\n }\n return holes;\n }\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let v = file.Read();\n\n this.HardwareOption.type = file.Read();\n this.HardwareOption.isSplite = file.Read();\n this.HardwareOption.isSplitePrice = file.Read();\n this.HardwareOption.color = file.Read();\n this.HardwareOption.material = file.Read();\n this.HardwareOption.name = file.Read();\n this.HardwareOption.roomName = file.Read();\n this.HardwareOption.cabinetName = file.Read();\n this.HardwareOption.costExpr = file.Read();\n this.HardwareOption.actualExpr = file.Read();\n this.HardwareOption.model = file.Read();\n this.HardwareOption.factory = file.Read();\n this.HardwareOption.brand = file.Read();\n this.HardwareOption.spec = file.Read();\n this.HardwareOption.count = file.Read();\n this.HardwareOption.comments = file.Read();\n this.HardwareOption.unit = file.Read();\n\n let count = file.Read();\n this.DataList.length = 0;\n for (let i = 0; i < count; i++)\n {\n let d: [string, string] = [\"\", \"\"];\n d[0] = file.Read();\n d[1] = file.Read();\n this.DataList.push(d);\n }\n\n if (v > 1)\n this.HardwareOption.isHole = file.Read();\n\n if (v >= 3)\n {\n let count = file.Read();\n this.RelevanceBoards.length = 0;\n for (let i = 0; i < count; i++)\n {\n this.RelevanceBoards.push(file.ReadSoftObjectId());\n }\n }\n }\n //对象将自身数据写入到文件.\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(3);\n\n file.Write(this.HardwareOption.type);\n file.Write(this.HardwareOption.isSplite);\n file.Write(this.HardwareOption.isSplitePrice);\n file.Write(this.HardwareOption.color);\n file.Write(this.HardwareOption.material);\n file.Write(this.HardwareOption.name);\n file.Write(this.HardwareOption.roomName);\n file.Write(this.HardwareOption.cabinetName);\n file.Write(this.HardwareOption.costExpr);\n file.Write(this.HardwareOption.actualExpr);\n file.Write(this.HardwareOption.model);\n file.Write(this.HardwareOption.factory);\n file.Write(this.HardwareOption.brand);\n file.Write(this.HardwareOption.spec);\n file.Write(this.HardwareOption.count);\n file.Write(this.HardwareOption.comments);\n file.Write(this.HardwareOption.unit);\n\n file.Write(this.DataList.length);\n for (let data of this.DataList)\n {\n file.Write(data[0]);\n file.Write(data[1]);\n }\n\n file.Write(this.HardwareOption.isHole);\n file.Write(this.RelevanceBoards.length);\n for (let id of this.RelevanceBoards)\n file.WriteSoftObjectId(id);\n }\n}\n","import { Vector3 } from \"three\";\r\nimport { LinesType } from \"../UI/Store/BoardInterface\";\r\n\r\nexport class PointShapeUtils\r\n{\r\n //方形点表\r\n static SquarePts(size: number)\r\n {\r\n return [\r\n new Vector3(-size, -size),\r\n new Vector3(size, -size),\r\n new Vector3(size, size),\r\n new Vector3(-size, size),\r\n new Vector3(-size, -size),\r\n ];\r\n }\r\n //方形外圈十字直线点表\r\n static OutsideLinePts(squareSize: number, lineLength: number)\r\n {\r\n return [\r\n //-X\r\n new Vector3(-squareSize, 0),\r\n new Vector3(-lineLength, 0),\r\n //X\r\n new Vector3(squareSize, 0),\r\n new Vector3(lineLength, 0),\r\n //Y\r\n new Vector3(0, squareSize),\r\n new Vector3(0, lineLength),\r\n\r\n //-Y\r\n new Vector3(0, -squareSize),\r\n new Vector3(0, -lineLength),\r\n ];\r\n }\r\n //十字直线点表\r\n static CrossLinePts(lineLength: number)\r\n {\r\n return [\r\n new Vector3(0, -lineLength),\r\n new Vector3(0, lineLength),\r\n\r\n new Vector3(lineLength, 0),\r\n new Vector3(-lineLength, 0),\r\n ];\r\n }\r\n static CrossLine3DPts(lineLength: number)\r\n {\r\n return [\r\n [new Vector3(lineLength, 0),\r\n new Vector3(-lineLength / 2, 0)],\r\n [new Vector3(0, -lineLength / 2),\r\n new Vector3(0, lineLength)],\r\n [new Vector3(0, 0, -lineLength / 2),\r\n new Vector3(0, 0, lineLength)],\r\n ];\r\n }\r\n\r\n static TrianglePts(size: number)\r\n {\r\n return [\r\n new Vector3(size, -size),\r\n new Vector3(0, size),\r\n new Vector3(-size, -size),\r\n new Vector3(size, -size),\r\n ];\r\n }\r\n\r\n static CirclePts(size: number)\r\n {\r\n let pts = [];\r\n let a = Math.PI * 2 / 8;\r\n for (let i = 0; i < 9; i++)\r\n pts.push(new Vector3(Math.sin(a * i) * size, Math.cos(a * i) * size));\r\n return pts;\r\n }\r\n\r\n static ObliqueCrossPts(size: number)\r\n {\r\n return [new Vector3(-size, size), new Vector3(size, -size), new Vector3(-size, -size), new Vector3(size, size)];\r\n }\r\n static ObliqueCrossLinePts(size: number)\r\n {\r\n return [new Vector3(-size, size), new Vector3(size, -size), new Vector3(), new Vector3(-size, -size), new Vector3(size, size)];\r\n }\r\n\r\n static SandClockPts(size: number)\r\n {\r\n return [\r\n new Vector3(size, size),\r\n new Vector3(-size, size),\r\n new Vector3(size, -size),\r\n new Vector3(-size, -size),\r\n new Vector3(size, size),\r\n ];\r\n }\r\n\r\n static TangentPts(size: number)\r\n {\r\n let pts = [\r\n new Vector3(-size, size),\r\n new Vector3(size, size),\r\n new Vector3(size / 2, size),\r\n ];\r\n let a = Math.PI * 2 / 8;\r\n for (let i = 0; i < 9; i++)\r\n pts.push(new Vector3(Math.sin(a * i + Math.PI / 2) * size, Math.cos(a * i + Math.PI / 2) * size));\r\n return pts;\r\n }\r\n\r\n static PerPts(size: number)\r\n {\r\n return [\r\n new Vector3(-size, size),\r\n new Vector3(-size, -size),\r\n new Vector3(size, -size),\r\n new Vector3(0, -size),\r\n new Vector3(0, 0),\r\n new Vector3(-size, 0),\r\n ];\r\n }\r\n\r\n static LinesDirPts(len: number, width: number, lineType: LinesType)\r\n {\r\n if (lineType === LinesType.Reverse)\r\n {\r\n return [\r\n new Vector3(-len / 2), new Vector3(-len / 2 + width / 2, width / 2),\r\n new Vector3(-len / 2), new Vector3(-len / 2 + width / 2, -width / 2),\r\n new Vector3(-len / 2), new Vector3(len / 2),\r\n new Vector3(len / 2), new Vector3(len / 2 - width / 2, width / 2),\r\n new Vector3(len / 2), new Vector3(len / 2 - width / 2, -width / 2),\r\n ];\r\n }\r\n else if (lineType === LinesType.Positive)\r\n return [\r\n new Vector3(0, -len / 2), new Vector3(-width / 2, -len / 2 + width / 2),\r\n new Vector3(0, -len / 2), new Vector3(width / 2, -len / 2 + width / 2),\r\n new Vector3(0, -len / 2), new Vector3(0, len / 2),\r\n new Vector3(0, len / 2), new Vector3(-width / 2, len / 2 - width / 2),\r\n new Vector3(0, len / 2), new Vector3(width / 2, len / 2 - width / 2),\r\n\r\n ];\r\n else\r\n {\r\n let w1 = Math.min(len, width) / 5;\r\n\r\n return [\r\n new Vector3(0, len / 2), new Vector3(0, -len / 2),\r\n new Vector3(-width / 2), new Vector3(width / 2),\r\n\r\n new Vector3(-width / 2), new Vector3(-width / 2 + w1, w1),\r\n new Vector3(-width / 2), new Vector3(-width / 2 + w1, -w1),\r\n new Vector3(width / 2), new Vector3(width / 2 - w1, w1),\r\n new Vector3(width / 2), new Vector3(width / 2 - w1, -w1),\r\n\r\n new Vector3(0, len / 2), new Vector3(-w1, len / 2 - w1),\r\n new Vector3(0, len / 2), new Vector3(w1, len / 2 - w1),\r\n new Vector3(0, -len / 2), new Vector3(-w1, -len / 2 + w1),\r\n new Vector3(0, -len / 2), new Vector3(w1, -len / 2 + w1),\r\n ];\r\n }\r\n }\r\n}\r\n","import { Box3, BufferGeometry, CylinderBufferGeometry, Float32BufferAttribute, LineSegments, Matrix4, Mesh, Object3D, Shape as TShape, Vector3, Matrix3 } from \"three\";\nimport { ColorMaterial } from '../../Common/ColorPalette';\nimport { DisposeThreeObj, Object3DRemoveAll } from '../../Common/Dispose';\nimport { FixIndex } from \"../../Common/Utils\";\nimport { RenderType } from \"../../GraphicsSystem/RenderType\";\nimport { Factory, CADFactory } from '../CADFactory';\nimport { CADFiler } from '../CADFiler';\nimport { Hole } from \"./Hole\";\nimport { ObjectSnapMode } from \"../../Editor/ObjectSnapMode\";\nimport { Circle } from \"../Entity/Circle\";\n\nexport enum GangDrillType\n{\n /**偏心轮 */\n Pxl = 0,\n /**连接杆 */\n Ljg = 1,\n /**预埋件 */\n Ymj = 2,\n /**层板钉 */\n Nail = 3,\n /** 木销 */\n Wood = 4,\n /** 通孔 */\n TK = 5,\n WoodPXL = 6,\n}\n\nlet TempCircle1 = new Circle();\nlet TempCircle2 = new Circle();\n\n@Factory\nexport class CylinderHole extends Hole\n{\n private _Radius: number = 1;\n private type: GangDrillType = GangDrillType.Pxl;\n constructor()\n {\n super();\n this._Color = 1;\n }\n static CreateCylHole(radius: number, height: number, type: GangDrillType)\n {\n let drill = new CylinderHole();\n drill.Height = height;\n drill._Radius = radius;\n drill.type = type;\n return drill;\n }\n get Type()\n {\n return this.type;\n }\n set Type(t: GangDrillType)\n {\n if (this.type !== t)\n {\n this.WriteAllObjectRecord();\n this.type = t;\n }\n }\n\n set Radius(r: number)\n {\n if (r !== this._Radius)\n {\n this.WriteAllObjectRecord();\n this._MeshGeometry = null;\n this._EdgeGeometry = null;\n this._Radius = r;\n this.Update();\n }\n }\n get Height()\n {\n return super.Height;\n }\n set Height(v: number)\n {\n if (this._Height !== v)\n {\n this._MeshGeometry = null;\n this._EdgeGeometry = null;\n super.Height = v;\n }\n }\n get Radius()\n {\n return this._Radius;\n }\n get BoundingBox()\n {\n let box = new Box3(new Vector3(-this._Radius, -this._Radius, 0), new Vector3(this._Radius, this._Radius, this._Height));\n return box.applyMatrix4(this.OCS);\n }\n private _MeshGeometry: CylinderBufferGeometry;\n get MeshGeometry()\n {\n if (this._MeshGeometry)\n return this._MeshGeometry;\n this._MeshGeometry = FastDrillingMeshGeometry(this.Radius, this.Height);\n return this._MeshGeometry;\n }\n\n private _EdgeGeometry: BufferGeometry;\n private get EdgeGeometry()\n {\n if (this._EdgeGeometry)\n return this._EdgeGeometry;\n\n this._EdgeGeometry = FastDrillingEdgeGeometry(this._Radius, this.Height);\n return this._EdgeGeometry;\n }\n GetGripPoints()\n {\n let cir = new Circle(new Vector3(), this._Radius);\n let pts = cir.GetGripPoints();\n pts.push(...pts.map(p => p.clone().add(new Vector3(0, 0, this.Height))));\n return pts.map(p => p.applyMatrix4(this.OCS));\n }\n GetObjectSnapPoints(\n snapMode: ObjectSnapMode,\n pickPoint: Vector3,\n lastPoint: Vector3,\n viewXform?: Matrix3\n ): Vector3[]\n {\n let pts: Vector3[] = [];\n TempCircle1.Radius = this.Radius;\n TempCircle1.OCS = this._Matrix;\n TempCircle2.Radius = this.Radius;\n TempCircle2.OCS = this._Matrix;\n TempCircle2.Position = TempCircle2.Position.add(this.Normal.multiplyScalar(this.Height));\n\n for (let c of [TempCircle2, TempCircle1])\n {\n pts.push(...c.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform));\n }\n return pts;\n }\n InitDrawObject(renderType: RenderType)\n {\n return this.GetObject3DByRenderType(renderType);\n }\n private GetObject3DByRenderType(renderType: RenderType)\n {\n if (renderType === RenderType.Wireframe)\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));\n else\n return new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex));\n }\n UpdateDrawObject(type: RenderType, obj: Object3D)\n {\n DisposeThreeObj(obj);\n Object3DRemoveAll(obj);\n obj.add(this.GetObject3DByRenderType(type));\n }\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D)\n {\n if (type === RenderType.Wireframe)\n {\n let l = obj as LineSegments;\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\n }\n else\n {\n let mesh = obj as Mesh;\n mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);\n }\n }\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();//1\n this._Radius = file.Read();\n if (ver <= 4)\n {\n //临时兼容旧排钻\n this._Height = file.Read();\n this.type = file.Read();\n this.FId = file.ReadSoftObjectId();\n this.MId = file.ReadSoftObjectId();\n }\n else\n {\n this.type = file.Read();\n }\n }\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(5);//ver\n file.Write(this._Radius);\n file.Write(this.type);\n }\n}\n\nlet cache = new Map();\nlet ro = new Matrix4();\nro.makeRotationX(Math.PI / 2);\nexport function FastDrillingMeshGeometry(radius: number, height: number)\n{\n let key = `${radius},${height}`;\n if (cache.has(key))\n return cache.get(key);\n let geo = new CylinderBufferGeometry(radius, radius, height, 8, 1);\n geo.applyMatrix4(ro);\n geo.translate(0, 0, height / 2);\n cache.set(key, geo);\n return geo;\n}\n\nlet cache2 = new Map();\nexport function FastDrillingEdgeGeometry(radius: number, height: number): BufferGeometry\n{\n let key = `${radius},${height}`;\n if (cache2.has(key))\n return cache2.get(key);\n\n let sp = new TShape();\n sp.ellipse(0, 0, radius, radius, 0, 2 * Math.PI, false, 0);\n\n let pts = sp.getPoints(4);\n let geo = new BufferGeometry();\n let coords: number[] = [];\n for (let i = 0; i < pts.length; i++)\n {\n let p = pts[i];\n let np = pts[FixIndex(i + 1, pts.length)];\n coords.push(p.x, p.y, 0, np.x, np.y, 0);//bottom\n coords.push(p.x, p.y, height, np.x, np.y, height);//top\n coords.push(p.x, p.y, 0, p.x, p.y, height);//edge\n }\n\n geo.setAttribute('position', new Float32BufferAttribute(coords, 3));\n cache2.set(key, geo);\n return geo;\n}\n\nCADFactory.RegisterObjectAlias(CylinderHole, \"GangDrill\");\n","import { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\r\nimport { Box3, Matrix4, Vector3 } from \"three\";\r\nimport { CylinderHole, GangDrillType } from \"../../DatabaseServices/3DSolid/CylinderHole\";\r\nimport { angle, equaln, isParallelTo, rotatePoint, ZAxis } from \"../../Geometry/GeUtils\";\r\nimport { Circle } from \"../../DatabaseServices/Entity/Circle\";\r\nimport { Line } from \"../../DatabaseServices/Entity/Line\";\r\nimport { Board } from \"../../DatabaseServices/Entity/Board\";\r\nimport { Curve } from \"../../DatabaseServices/Entity/Curve\";\r\nimport { DrillType } from \"../../UI/Store/BoardInterface\";\r\nimport { EBoardKeyList } from \"../../Common/BoardKeyList\";\r\nimport { Hole } from \"../../DatabaseServices/3DSolid/Hole\";\r\nimport { ExtrudeHole } from \"../../DatabaseServices/3DSolid/ExtrudeHole\";\r\nimport { userConfig } from \"../../Editor/UserConfig\";\r\n\r\nconst SCALAR = 0.1;\r\n\r\nexport function CyHoleInBoard(cys: CylinderHole[], br: Board, ocs: Matrix4)\r\n{\r\n if (cys.length === 1 && cys[0].Type === GangDrillType.Ymj)\r\n return true;\r\n\r\n const outline = br.ContourCurve;\r\n let box = new Box3();\r\n let pxl: CylinderHole;\r\n let ljg: CylinderHole;\r\n let ymj: CylinderHole;\r\n let wood: CylinderHole;\r\n let woodPXL: CylinderHole;\r\n let pxl2: CylinderHole;\r\n for (let cy of cys)\r\n {\r\n box.union(cy.BoundingBox);\r\n if (cy.Type === GangDrillType.Pxl)\r\n {\r\n if (pxl)\r\n pxl2 = cy;\r\n else\r\n pxl = cy;\r\n }\r\n else if (cy.Type === GangDrillType.Ljg)\r\n ljg = cy;\r\n else if (cy.Type === GangDrillType.Wood)\r\n wood = cy;\r\n else if (cy.Type === GangDrillType.WoodPXL)\r\n woodPXL = cy;\r\n else\r\n ymj = cy;\r\n }\r\n box.applyMatrix4(ocs);\r\n\r\n let outlineBox = outline.BoundingBox;\r\n outlineBox.max.setZ(br.Thickness);\r\n\r\n if (!box.intersectsBox(outlineBox))\r\n return false;\r\n\r\n let nor = new Vector3();\r\n\r\n if (ljg)\r\n nor.copy(ljg.Normal);\r\n else if (ymj)\r\n nor.copy(ymj.Normal);\r\n else\r\n if (wood)\r\n nor.copy(wood.Normal);\r\n\r\n nor.applyMatrix4(ocs.clone().setPosition(new Vector3));\r\n\r\n if (isParallelTo(nor, ZAxis))\r\n {\r\n if (ymj)\r\n {\r\n let center = ymj.Position.applyMatrix4(ocs).setZ(0);\r\n let cir = new Circle(center, ymj.Radius - SCALAR);\r\n return outline.IntersectWith(cir, 0).length === 0 && outline.PtInCurve(center);\r\n }\r\n }\r\n else\r\n {\r\n if (pxl)\r\n {\r\n let plxs = [pxl];\r\n if (pxl2)\r\n plxs.push(pxl2);\r\n if (plxs.every(cy =>\r\n {\r\n let center = cy.Position.applyMatrix4(ocs).setZ(0);\r\n let cir = new Circle(center, pxl.Radius - SCALAR);\r\n if (userConfig.forceFilterPxl)\r\n return outline.IntersectWith(cir, 0).length > 0 || !outline.PtInCurve(center);\r\n else\r\n return outline.IntersectWith(cir, 0).length <= 1 && !outline.PtInCurve(center);\r\n }))\r\n return false;\r\n }\r\n if (woodPXL)\r\n {\r\n let center = woodPXL.Position.applyMatrix4(ocs).setZ(0);\r\n let cir = new Circle(center, woodPXL.Radius - SCALAR);\r\n if (outline.IntersectWith(cir, 0).length > 0 || !outline.PtInCurve(center))\r\n return false;\r\n }\r\n\r\n if (ljg)\r\n {\r\n let c1 = ljg.Position.applyMatrix4(ocs).setZ(0);\r\n let minPt = c1.clone().add(nor.clone().multiplyScalar(ljg.Height / 2));\r\n let c2 = c1.clone().add(nor.clone().multiplyScalar(ljg.Height - SCALAR));\r\n c1.add(nor.clone().multiplyScalar(SCALAR));\r\n\r\n rotatePoint(nor, Math.PI / 2);\r\n c1.add(nor.multiplyScalar(ljg.Radius));\r\n c2.add(nor.negate());\r\n\r\n let rect = new Polyline().RectangleFrom2Pt(c1, c2);\r\n\r\n let intPtsLen = outline.IntersectWith(rect, 0).length;\r\n if (intPtsLen > 2 || (intPtsLen === 0 && !outline.PtInCurve(minPt)))\r\n return false;\r\n }\r\n\r\n if (wood)\r\n {\r\n let c1 = wood.Position.applyMatrix4(ocs).setZ(0);\r\n let c2 = c1.clone().add(nor.clone().multiplyScalar(wood.Height));\r\n\r\n rotatePoint(nor, Math.PI / 2);\r\n let dir = nor.multiplyScalar(wood.Radius);\r\n let p1 = c1.clone().add(dir);\r\n let p2 = c2.clone().add(dir);\r\n let p3 = c1.clone().add(dir.negate());\r\n let p4 = c2.clone().add(dir);\r\n let l1 = new Line(p1, p2);\r\n let l2 = new Line(p3, p4);\r\n if (l1.IntersectWith(outline, 0).length !== 1 || l2.IntersectWith(outline, 0).length !== 1)\r\n return false;\r\n }\r\n\r\n }\r\n return true;\r\n}\r\n\r\nexport interface IRectHoleOption\r\n{\r\n up: string;\r\n down: string;\r\n left: string;\r\n right: string;\r\n}\r\n\r\nexport const TempRectHoleOption: IRectHoleOption = {\r\n up: \"\",\r\n down: \"\",\r\n left: \"\",\r\n right: \"\",\r\n};\r\n\r\n/**分析上下左右排钻 */\r\nexport function InitRectBoardHoleOption(br: Board, option: IRectHoleOption)\r\n{\r\n let dir = Math.sign(br.ContourCurve.Area2);\r\n let hightDrill = br.BoardProcessOption.highDrill;\r\n let cus = br.ContourCurve.Explode() as Curve[];\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let c = cus[i];\r\n let derv = c.GetFistDeriv(0).multiplyScalar(dir);\r\n let an = angle(derv);\r\n if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4))\r\n option.down = hightDrill[i];\r\n else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8)\r\n option.right = hightDrill[i];\r\n else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8)\r\n option.up = hightDrill[i];\r\n else\r\n option.left = hightDrill[i];\r\n }\r\n}\r\nexport function ExtureHoleInBoard(holes: ExtrudeHole[], board: Board, ocs: Matrix4)\r\n{\r\n //TODO:自定义排钻判断\r\n return true;\r\n}\r\nexport function HoleInBoard(holes: Hole[], br: Board, ocs?: Matrix4)\r\n{\r\n if (holes.length === 0) return false;\r\n\r\n if (holes[0] instanceof CylinderHole)\r\n {\r\n return CyHoleInBoard(holes as CylinderHole[], br, ocs ?? br.OCSInv);\r\n }\r\n else\r\n {\r\n return ExtureHoleInBoard(holes as ExtrudeHole[], br, ocs ?? br.OCSInv);\r\n }\r\n}\r\n\r\n/**上下左右排钻写入板件 */\r\nexport function SetRectHighHole(br: Board, option: IRectHoleOption)\r\n{\r\n let dir = Math.sign(br.ContourCurve.Area2);\r\n let highDrill = br.BoardProcessOption.highDrill;\r\n let cus = br.ContourCurve.Explode() as Curve[];\r\n highDrill.length = 0;\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let c = cus[i];\r\n let derv = c.GetFistDeriv(0).multiplyScalar(dir);\r\n let an = angle(derv);\r\n if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4))\r\n highDrill.push(option.down);\r\n else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8)\r\n highDrill.push(option.right);\r\n else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8)\r\n highDrill.push(option.up);\r\n else\r\n highDrill.push(option.left);\r\n }\r\n let types = new Set(highDrill);\r\n if (types.size === 1 && highDrill[0] !== DrillType.None)\r\n br.BoardProcessOption[EBoardKeyList.DrillType] = highDrill[0];\r\n else if (types.size > 1)\r\n br.BoardProcessOption[EBoardKeyList.DrillType] = DrillType.More;\r\n};\r\n","export enum Intent\n{\n NONE = \"none\",\n PRIMARY = \"primary\",\n SUCCESS = \"success\",\n WARNING = \"warning\",\n DANGER = \"danger\",\n}\n\nexport interface IToasterOption\n{\n message: string | string[],\n timeout: number;\n intent: Intent;\n key?: string;\n}\n\n\ntype ToasterFunction = (option: IToasterOption) => void;\n\nexport const ToasterInjectFunctions: ToasterFunction[] = [];\n\nexport function Toaster(option: IToasterOption): void\n{\n for (let f of ToasterInjectFunctions)\n f(option);\n}\n","export function equaln(v1: number, v2: number, fuzz = 1e-5)\r\n{\r\n return Math.abs(v1 - v2) <= fuzz;\r\n}\r\n\r\nexport function FixIndex(index: number, arr: Array | number)\r\n{\r\n let count = (arr instanceof Array) ? arr.length : arr;\r\n if (index < 0)\r\n return count + index;\r\n else if (index >= count)\r\n return index - count;\r\n else\r\n return index;\r\n}\r\n\r\n/**\r\n * @param compart 如果t2大于t1那么返回t2\r\n * @returns 索引\r\n */\r\nexport function Max(arr: T[], compart: (t1: T, t2: T) => boolean): number\r\n{\r\n let best: T = arr[0];\r\n let bestIndex = 0;\r\n for (let i = 1; i < arr.length; i++)\r\n {\r\n let t1 = arr[i];\r\n if (compart(best, t1))\r\n {\r\n best = t1;\r\n bestIndex = i;\r\n }\r\n }\r\n return bestIndex;\r\n}\r\n","import { Face3, Geometry, Line3, Matrix4, ShapeUtils, Vector2, Vector3 } from \"three\";\r\nimport { arrayRemoveDuplicateBySort } from \"../Common/ArrayExt\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { Polyline } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { AsVector3, equalv3 } from \"./GeUtils\";\r\nimport { PlaneExt } from \"./Plane\";\r\nimport { FixIndex } from \"../Nest/Common/Util\";\r\n\r\n/**\r\n * 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体.\r\n * 该几何体需要轮廓和路径的起始截面垂直,否则构造的实体将会错误.\r\n */\r\nexport class SweepGeometry extends Geometry\r\n{\r\n edgePts: number[] = [];\r\n constructor(contour: Polyline, path: Curve)\r\n {\r\n super();\r\n\r\n this.AddShape(contour, path);\r\n this.computeVertexNormals();\r\n this.computeFaceNormals();\r\n }\r\n\r\n AddShape(contour: Polyline, path: Curve)\r\n {\r\n //路径点表\r\n let pathPts2d = path.Shape.getPoints(8);\r\n let pathPts = pathPts2d.map(AsVector3);\r\n arrayRemoveDuplicateBySort(pathPts, equalv3);\r\n for (let p of pathPts)\r\n p.applyMatrix4(path.OCS);\r\n\r\n let shapePts2d = contour.Shape.getPoints(3);\r\n if (!ShapeUtils.isClockWise(shapePts2d)) shapePts2d.reverse();\r\n\r\n //轮廓点表\r\n let shapePts3d = shapePts2d.map(AsVector3);\r\n\r\n for (let p of shapePts3d)\r\n p.applyMatrix4(contour.OCS);\r\n\r\n let isClosePath = path.IsClose;\r\n\r\n let verts: Vector3[][] = [];//所有路径上的轮廓点\r\n //计算所有需要的几何点,本质是不断的投影\r\n if (isClosePath)\r\n verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[0], pathPts[pathPts.length - 2], pathPts[1]));\r\n else\r\n verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[0], undefined, pathPts[1]));\r\n //遍历所有的路径节点进行顶点投射\r\n for (let i = 1; i < pathPts.length; i++)\r\n {\r\n if (i === pathPts.length - 1)\r\n {\r\n if (isClosePath)\r\n verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1], pathPts[1]));\r\n else\r\n verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1]));\r\n }\r\n else\r\n {\r\n verts.push(ProjectionToPlane(shapePts3d, path.Normal, pathPts[i], pathPts[i - 1], pathPts[i + 1]));\r\n }\r\n }\r\n\r\n this.BuildSideFaces(shapePts2d, pathPts2d, pathPts, verts);\r\n if (!isClosePath) this.BuildLid(shapePts2d, verts);\r\n }\r\n\r\n private BuildSideFaces(shapePts2d: Vector2[], pathPts2d: Vector2[], pathPts: Vector3[], verts: Vector3[][])\r\n {\r\n let addCount = 0; //补充个数\r\n shapePts2d[0][\"_mask_\"] = true;\r\n for (let p of shapePts2d) if (p[\"_mask_\"]) addCount++;\r\n let sumCount = addCount + shapePts2d.length; //实际个数\r\n const f4 = (a: number, b: number, c: number, d: number, uvs: Vector2[]) =>\r\n {\r\n let f1 = new Face3(a, b, c);\r\n let f2 = new Face3(b, d, c);\r\n this.faces.push(f1, f2);\r\n this.faceVertexUvs[0].push([uvs[0].clone(), uvs[1].clone(), uvs[2].clone()], [uvs[1].clone(), uvs[3].clone(), uvs[2].clone()]);\r\n };\r\n let vs: number[] = [0]; //vs 对应 y轴\r\n for (let i = 1; i < shapePts2d.length; i++)\r\n vs.push((vs[i - 1] + shapePts2d[i].distanceTo(shapePts2d[i - 1]) * 1e-3));\r\n\r\n let lastStartX = 0;\r\n for (let pathIndex = 0; pathIndex < verts.length; pathIndex++)\r\n {\r\n let pts = verts[pathIndex];\r\n let pts2 = verts[FixIndex(pathIndex + 1, verts)];\r\n\r\n let startIndex = this.vertices.length;\r\n let pBase = pts[0];\r\n let p1 = pathPts[pathIndex];\r\n let p2 = pathPts[FixIndex(pathIndex + 1, pathPts.length)];\r\n let p1Dir = p2.clone().sub(p1).normalize();\r\n\r\n let tempStartX = 0;\r\n\r\n for (let contourIndex = 0; contourIndex < shapePts2d.length; contourIndex++)\r\n {\r\n let p1 = pts[contourIndex];\r\n let p2 = pts2[contourIndex];\r\n let p2d = shapePts2d[contourIndex];\r\n\r\n if (pathIndex !== verts.length - 1)\r\n if (contourIndex === 0 || p2d[\"_mask_\"])\r\n this.edgePts.push(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z);\r\n\r\n if (contourIndex === 0 || p2d[\"_mask_\"])\r\n this.vertices.push(p1); //补点\r\n\r\n if (pathIndex !== verts.length - 1)\r\n {\r\n let curIndex = this.vertices.length;\r\n let nextIndex = startIndex + FixIndex(curIndex - startIndex + 1, sumCount);\r\n let curIndex2 = curIndex + sumCount;\r\n let nextIndex2 = nextIndex + sumCount;\r\n\r\n let x1 = lastStartX + p1.clone().sub(pBase).dot(p1Dir) * 1e-3;\r\n let x2 = lastStartX + pts[FixIndex(contourIndex + 1, shapePts2d)].clone().sub(pBase).dot(p1Dir) * 1e-3;\r\n\r\n let x3 = lastStartX + p2.clone().sub(pBase).dot(p1Dir) * 1e-3;\r\n let x4 = lastStartX + pts2[FixIndex(contourIndex + 1, shapePts2d)].clone().sub(pBase).dot(p1Dir) * 1e-3;\r\n\r\n if (contourIndex === 0)\r\n tempStartX = x3;\r\n\r\n let v1 = vs[contourIndex];\r\n let v2 = vs[FixIndex(contourIndex + 1, vs)];\r\n let uvs = [\r\n new Vector2(v1, x1),\r\n new Vector2(v2, x2),\r\n new Vector2(v1, x3),\r\n new Vector2(v2, x4),\r\n ];\r\n f4(curIndex, nextIndex, curIndex2, nextIndex2, uvs);\r\n }\r\n this.vertices.push(p1);\r\n }\r\n lastStartX = tempStartX;\r\n\r\n if (pathPts2d[FixIndex(pathIndex + 1, verts)][\"_mask_\"])\r\n {\r\n for (let contourIndex = 0; contourIndex < shapePts2d.length; contourIndex++)\r\n {\r\n let p1 = pts2[contourIndex];\r\n let p2d = shapePts2d[contourIndex];\r\n if (contourIndex === 0 || p2d[\"_mask_\"])\r\n this.vertices.push(p1); //补点\r\n this.vertices.push(p1);\r\n\r\n let p2 = pts2[FixIndex(contourIndex + 1, pts2)];\r\n this.edgePts.push(p1.x, p1.y, p1.z, p2.x, p2.y, p2.z);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private BuildLid(shapePts2d: Vector2[], verts: Vector3[][])\r\n {\r\n //轮廓三角网格索引\r\n let faces = ShapeUtils.triangulateShape(shapePts2d, []);\r\n for (let v of shapePts2d) v.multiplyScalar(1e-3);//作为uvs\r\n let lastIndex = this.vertices.length;\r\n this.vertices.push(...verts[0].map(p => p.clone()));\r\n this.vertices.push(...verts[verts.length - 1].map(p => p.clone()));\r\n for (let i = 0; i < faces.length; i++)\r\n {\r\n let [a, b, c] = faces[i];\r\n this.faces.push(new Face3(lastIndex + a, lastIndex + b, lastIndex + c));\r\n let uvs = faces[i].map(index => shapePts2d[index].clone());\r\n this.faceVertexUvs[0].push(uvs);\r\n this.faces.push(new Face3(lastIndex + verts[0].length + c, lastIndex + verts[0].length + b, lastIndex + verts[0].length + a));\r\n this.faceVertexUvs[0].push(uvs.concat().reverse().map(v => v.clone()));\r\n }\r\n\r\n //构建线框\r\n for (let i = 0; i < shapePts2d.length; i++)\r\n {\r\n let nextIndex = FixIndex(i + 1, shapePts2d);\r\n\r\n let pts1 = verts[0];\r\n let p0 = pts1[i];\r\n let p1 = pts1[nextIndex];\r\n this.edgePts.push(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z);\r\n\r\n let pts2 = verts[verts.length - 1];\r\n p0 = pts2[i];\r\n p1 = pts2[nextIndex];\r\n this.edgePts.push(p0.x, p0.y, p0.z, p1.x, p1.y, p1.z);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 将轮廓变换到`路径上某个点`.\r\n *\r\n * @param {Vector3[]} contourPts 原始的轮廓点(在世界坐标系)\r\n * @param {Vector3} normal 路径法向量\r\n * @param {Vector3} curP 路径上当前点\r\n * @param {Vector3} [preP] 路径的前一个点\r\n * @param {Vector3} [nextP] 路径下一个点\r\n * @returns 变换后的轮廓点表\r\n */\r\nfunction ProjectionToPlane(contourPts: Vector3[], normal: Vector3, curP: Vector3, preP?: Vector3, nextP?: Vector3): Vector3[]\r\n{\r\n let pts: Vector3[];\r\n if (!preP && nextP)\r\n {\r\n let mat = ContourTransfromToPath(curP, normal, nextP.clone().sub(curP));\r\n pts = contourPts.map(p => p.clone().applyMatrix4(mat));\r\n }\r\n else if (!nextP && preP)\r\n {\r\n let mat = ContourTransfromToPath(curP, normal, curP.clone().sub(preP));\r\n pts = contourPts.map(p => p.clone().applyMatrix4(mat));\r\n }\r\n else if (nextP && preP)\r\n {\r\n let dir = curP.clone().sub(preP).normalize();\r\n let v2 = nextP.clone().sub(curP).normalize();\r\n //角平分线向量\r\n let v = dir.clone().sub(v2);\r\n //v1v2pm向量\r\n let nv1v2 = dir.clone().cross(v2);\r\n let norm = nv1v2.cross(v);\r\n\r\n //角平分线的平面\r\n let plane = new PlaneExt(norm, curP);\r\n\r\n let mat = ContourTransfromToPath(preP, normal, dir);\r\n pts = contourPts.map(p => p.clone().applyMatrix4(mat));\r\n pts = pts.map(p => plane.intersectLine(new Line3(p, p.clone().add(dir)), new Vector3(), true));\r\n }\r\n return pts;\r\n}\r\n\r\n/**\r\n * 计算轮廓变换到`路径上某个点`的矩阵\r\n *\r\n * @param {Vector3} pt 路径上的点\r\n * @param {Vector3} norm 曲线法向量\r\n * @param {Vector3} dir 点前进的方向.\r\n * @returns {Matrix4}\r\n */\r\nfunction ContourTransfromToPath(pt: Vector3, norm: Vector3, dir: Vector3): Matrix4\r\n{\r\n let vy = norm;\r\n let vz = dir.normalize();\r\n let vx = vz.clone().cross(vy);\r\n\r\n let mat = new Matrix4();\r\n mat.makeBasis(vx, vy, vz);\r\n mat.setPosition(pt);\r\n return mat;\r\n}\r\n","import { BufferGeometry, CatmullRomCurve3, Line, MathUtils, Matrix3, Object3D, Shape, Vector3 } from 'three';\r\nimport { arrayLast } from '../Common/ArrayExt';\r\nimport { ColorMaterial } from '../Common/ColorPalette';\r\nimport { Pts2Polyline } from '../Common/CurveUtils';\r\nimport { ObjectSnapMode } from '../Editor/ObjectSnapMode';\r\nimport { BufferGeometryUtils } from '../Geometry/BufferGeometryUtils';\r\nimport { equalv3 } from '../Geometry/GeUtils';\r\nimport { RenderType } from '../GraphicsSystem/RenderType';\r\nimport { Factory } from './CADFactory';\r\nimport { CADFiler } from './CADFiler';\r\nimport { Curve } from './Entity/Curve';\r\n\r\n@Factory\r\nexport class Spline extends Curve\r\n{\r\n private _PointList: Vector3[];\r\n private _ClosedMark: boolean = false;\r\n constructor(points?: Vector3[])\r\n {\r\n super();\r\n this._PointList = points || [];\r\n }\r\n\r\n get Shape()\r\n {\r\n return new Shape();\r\n }\r\n get Curve3()\r\n {\r\n return new CatmullRomCurve3(this.Points);\r\n }\r\n\r\n get Length()\r\n {\r\n return this.Curve3.getLength();\r\n }\r\n\r\n get Points()\r\n {\r\n return this._PointList;\r\n }\r\n set Points(v: Vector3[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this._PointList = v.map(p => p.clone().applyMatrix4(this.OCSInv));\r\n this.Update();\r\n }\r\n //闭合标志\r\n get CloseMark(): boolean\r\n {\r\n return this._ClosedMark;\r\n }\r\n //曲线是否闭合\r\n get IsClose(): boolean\r\n {\r\n return this.CloseMark || (equalv3(this.StartPoint, this.EndPoint, 1e-4)) && this.EndParam > 1;\r\n }\r\n set CloseMark(v: boolean)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._ClosedMark = v;\r\n this.Update();\r\n }\r\n get StartPoint()\r\n {\r\n return this._PointList[0];\r\n }\r\n get EndPoint()\r\n {\r\n return arrayLast(this._PointList);\r\n }\r\n get StartParam()\r\n {\r\n return 0;\r\n }\r\n get EndParam()\r\n {\r\n return this._PointList.length - 1;\r\n }\r\n GetGripPoints()\r\n {\r\n return this._PointList.map(p => p.clone().applyMatrix4(this.OCS));\r\n }\r\n GetStretchPoints()\r\n {\r\n return this.GetGripPoints();\r\n }\r\n MoveGripPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n for (let index of indexList)\r\n {\r\n this._PointList[index].add(vec);\r\n }\r\n this.Update();\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n for (let index of indexList)\r\n {\r\n this._PointList[index].add(vec);\r\n }\r\n this.Update();\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetStretchPoints();\r\n case ObjectSnapMode.Mid:\r\n case ObjectSnapMode.Nea:\r\n case ObjectSnapMode.Ext:\r\n case ObjectSnapMode.Cen:\r\n case ObjectSnapMode.Per:\r\n case ObjectSnapMode.Tan:\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n InitDrawObject(renderType: RenderType = RenderType.Wireframe): Object3D\r\n {\r\n let geometry = new BufferGeometry().setFromPoints(this.Curve3.getPoints(60));\r\n return new Line(geometry, ColorMaterial.GetLineMaterial(this._Color));\r\n }\r\n UpdateDrawObject(type: RenderType, en: Object3D)\r\n {\r\n let spl = en as Line;\r\n if (this.CloseMark && !equalv3(this._PointList[0], arrayLast(this._PointList)))\r\n this._PointList.push(this._PointList[0].clone());\r\n let curve = this.Curve3;\r\n\r\n let pts = curve.getPoints(this.Points.length * 10);\r\n if (!BufferGeometryUtils.UpdatePts(spl.geometry as BufferGeometry, pts))\r\n {\r\n spl.geometry.dispose();\r\n spl.geometry = BufferGeometryUtils.CreateFromPts(pts);\r\n }\r\n }\r\n Convert2Polyline(count = 0)\r\n {\r\n let curve3 = this.Curve3;\r\n\r\n //修正个数\r\n if (!count) count = Math.floor(curve3.getLength() / 30);\r\n count = MathUtils.clamp(count, this._PointList.length * 5, this._PointList.length * 20);\r\n\r\n if ((count & 1) === 1)\r\n count++;\r\n\r\n let pts = curve3.getPoints(count);\r\n\r\n let isClose = this.IsClose;\r\n if (isClose) pts.pop();\r\n\r\n let pl = Pts2Polyline(pts, isClose);\r\n pl.CloseMark = isClose;\r\n pl.ApplyMatrix(this.OCS);\r\n return pl;\r\n\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();//1\r\n let count = file.Read();\r\n this._PointList.length = 0;\r\n for (let i = 0; i < count; i++)\r\n this._PointList.push(new Vector3().fromArray(file.Read()));\r\n }\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(1);//ver\r\n file.Write(this._PointList.length);\r\n this._PointList.forEach(p => file.Write(p.toArray()));\r\n }\r\n}\r\n","import { BoxBufferGeometry, BufferGeometry, Float32BufferAttribute, InstancedInterleavedBuffer, InterleavedBufferAttribute, Line as TLine, Line3, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Vector3 } from \"three\";\r\nimport { Line2 } from \"three/examples/jsm/lines/Line2\";\r\nimport { LineGeometry } from \"three/examples/jsm/lines/LineGeometry\";\r\nimport { ColorMaterial } from '../../Common/ColorPalette';\r\nimport { DisposeThreeObj, Object3DRemoveAll } from '../../Common/Dispose';\r\nimport { Log } from \"../../Common/Log\";\r\nimport { tempMatrix1 } from \"../../Common/Matrix4Utils\";\r\nimport { ObjectSnapMode } from \"../../Editor/ObjectSnapMode\";\r\nimport { equalv3, isParallelTo, MoveMatrix } from '../../Geometry/GeUtils';\r\nimport { SweepGeometry } from '../../Geometry/SweepGeometry';\r\nimport { RenderType } from \"../../GraphicsSystem/RenderType\";\r\nimport { Factory } from \"../CADFactory\";\r\nimport { CADFiler } from '../CADFiler';\r\nimport { Curve } from \"../Entity/Curve\";\r\nimport { Entity } from \"../Entity/Entity\";\r\nimport { Line } from \"../Entity/Line\";\r\nimport { Polyline } from '../Entity/Polyline';\r\nimport { IsPointInPolyLine } from '../PointInPolyline';\r\nimport { Spline } from \"../Spline\";\r\nimport { FixIndex } from './../../Common/Utils';\r\nimport { OBB } from './../../Geometry/OBB/obb';\r\nimport { PlaneExt } from './../../Geometry/Plane';\r\n\r\n@Factory\r\nexport class SweepSolid extends Entity\r\n{\r\n static UseRectFakerContour = false;\r\n\r\n private _Contour: Polyline;\r\n private _PathCurve: Curve;\r\n constructor(contour?: Polyline, pathCurve?: Curve)\r\n {\r\n super();\r\n this._Contour = contour;\r\n this._PathCurve = pathCurve;\r\n\r\n if (this._Contour && this._Contour.Id)\r\n this._Contour = this._Contour.Clone();\r\n\r\n if (this._Contour && this._PathCurve)\r\n {\r\n this.TransfromPathToWCS();\r\n this.OCS = this._PathCurve.OCS;\r\n this._SpaceOCS.copy(this._PathCurve.OCS);\r\n this._PathCurve.ApplyMatrix(this._PathCurve.OCSInv);\r\n }\r\n }\r\n\r\n Explode()\r\n {\r\n return [this._Contour.Clone(), this._PathCurve.Clone()];\r\n }\r\n\r\n get Contour()\r\n {\r\n return this._Contour;\r\n }\r\n get Path()\r\n {\r\n return this._PathCurve;\r\n }\r\n Reverse()\r\n {\r\n this.WriteAllObjectRecord();\r\n this._PathCurve.Reverse();\r\n this.Update();\r\n }\r\n /**保持路径左下角在0点 */\r\n private PathTo0()\r\n {\r\n let min = this._PathCurve.BoundingBox.min;\r\n this._PathCurve.Position = this._PathCurve.Position.sub(min);\r\n this.OCS = this.OCS.multiply(MoveMatrix(min));\r\n }\r\n /**\r\n * 将轮廓变换到wcs空间,当用户选定某个与扫描线起点相切的轮廓时.\r\n */\r\n private TransfromPathToWCS()\r\n {\r\n if (equalv3(this._Contour.Normal, new Vector3(0, 0, 1)))\r\n return;\r\n\r\n let fDir = this._PathCurve.GetFistDeriv(0);\r\n if (isParallelTo(fDir, this._Contour.Normal))\r\n {\r\n //构建回家的矩阵\r\n let toWcsMat4Inv = new Matrix4();\r\n let zv = fDir.normalize();\r\n let yv = this._PathCurve.Normal;\r\n let xv = zv.clone().cross(yv);\r\n\r\n toWcsMat4Inv.makeBasis(xv, yv, zv);\r\n toWcsMat4Inv.setPosition(this._PathCurve.StartPoint);\r\n\r\n let toWcsMat4 = new Matrix4().getInverse(toWcsMat4Inv);\r\n this._Contour.ApplyMatrix(toWcsMat4);\r\n\r\n let z = this._Contour.StartPoint.z;\r\n if (IsPointInPolyLine(this._Contour, new Vector3(0, 0, z)))\r\n {\r\n let z = this._Contour.StartPoint.z;\r\n this._Contour.ApplyMatrix(MoveMatrix(new Vector3(0, 0, -z)));\r\n return;\r\n }\r\n else\r\n this._Contour.ApplyMatrix(toWcsMat4Inv);\r\n }\r\n\r\n let lDir = this._PathCurve.GetFistDeriv(this._PathCurve.EndParam);\r\n if (isParallelTo(lDir, this._Contour.Normal))\r\n {\r\n //再次构建回家的矩阵\r\n let toWcsMat4Inv = new Matrix4();\r\n let zv = lDir.negate().normalize();\r\n let yv = this._PathCurve.Normal;\r\n let xv = zv.clone().cross(yv);\r\n\r\n toWcsMat4Inv.makeBasis(xv, yv, zv);\r\n toWcsMat4Inv.setPosition(this._PathCurve.EndPoint);\r\n\r\n let toWcsMat4 = new Matrix4().getInverse(toWcsMat4Inv);\r\n this._Contour.ApplyMatrix(toWcsMat4);\r\n\r\n let z = this._Contour.StartPoint.z;\r\n if (IsPointInPolyLine(this._Contour, new Vector3(0, 0, z)))\r\n {\r\n let z = this._Contour.StartPoint.z;\r\n this._Contour.ApplyMatrix(MoveMatrix(new Vector3(0, 0, -z)));\r\n\r\n this._PathCurve.Reverse();\r\n return;\r\n }\r\n else\r\n this._Contour.ApplyMatrix(toWcsMat4);\r\n }\r\n Log(\"错误:提供的轮廓没有和路径垂直!\");\r\n }\r\n private _MeshGeometry: SweepGeometry;\r\n private _lineGeo: LineGeometry;\r\n get MeshGeometry()\r\n {\r\n if (this._MeshGeometry)\r\n return this._MeshGeometry;\r\n try\r\n {\r\n let contour = this._Contour;\r\n if (SweepSolid.UseRectFakerContour && contour.EndParam > 10)\r\n {\r\n let box = contour.BoundingBox;\r\n contour = new Polyline().RectangleFrom2Pt(box.min, box.max);\r\n }\r\n\r\n this._MeshGeometry = new SweepGeometry(contour, this._PathCurve);\r\n this._EdgeGeometry = new BufferGeometry().setAttribute('position', new Float32BufferAttribute(this._MeshGeometry.edgePts, 3));\r\n this.getLineGeo(this._MeshGeometry.edgePts);\r\n this._MeshGeometry.edgePts = undefined;\r\n return this._MeshGeometry;\r\n }\r\n catch (error)\r\n {\r\n return new BoxBufferGeometry(1000, 1000, 1000);\r\n }\r\n }\r\n getLineGeo(pts: number[])\r\n {\r\n this._lineGeo = new LineGeometry();\r\n let lineSegments = new Float32Array(pts);\r\n var instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1);\r\n this._lineGeo.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0));\r\n this._lineGeo.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3));\r\n }\r\n private _EdgeGeometry: BufferGeometry;\r\n private get EdgeGeometry()\r\n {\r\n if (this._EdgeGeometry)\r\n return this._EdgeGeometry;\r\n\r\n this.MeshGeometry;\r\n return this._EdgeGeometry;\r\n }\r\n\r\n InitDrawObject(renderType: RenderType): Object3D\r\n {\r\n if (renderType === RenderType.Wireframe || renderType === RenderType.Edge)\r\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));\r\n else if (renderType === RenderType.Conceptual)\r\n {\r\n return new Object3D().add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Physical)\r\n return new Mesh(this.MeshGeometry, this.MeshMaterial);\r\n else if (renderType === RenderType.Print)\r\n {\r\n let mat2 = ColorMaterial.GetPrintConceptualMaterial();\r\n let meshGeo = this.MeshGeometry;\r\n let mesh = new Mesh(meshGeo, mat2);\r\n let line = new Line2(this._lineGeo, ColorMaterial.PrintLineMatrial);\r\n return new Object3D().add(line, mesh);\r\n }\r\n else if (renderType === RenderType.Jig)\r\n {\r\n return new Object3D().add(this._PathCurve.DrawObject);\r\n }\r\n else if (renderType === RenderType.Physical2)\r\n {\r\n return new Object3D().add(\r\n new Mesh(this.MeshGeometry, this.MeshMaterial),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n }\r\n\r\n UpdateDrawGeometry()\r\n {\r\n this._EdgeGeometry = undefined;\r\n this._MeshGeometry = undefined;\r\n }\r\n\r\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\r\n {\r\n DisposeThreeObj(obj);\r\n if (renderType === RenderType.Wireframe || renderType === RenderType.Edge)\r\n {\r\n let l = obj as LineSegments;\r\n l.geometry = this.EdgeGeometry;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (renderType === RenderType.Conceptual)\r\n {\r\n Object3DRemoveAll(obj);\r\n return obj.add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Physical)\r\n {\r\n let mesh = obj as Mesh;\r\n mesh.geometry = this.MeshGeometry;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n else if (renderType === RenderType.Jig)\r\n {\r\n Object3DRemoveAll(obj);\r\n obj.add((this._PathCurve.DrawObject));\r\n }\r\n else if (renderType === RenderType.Physical2)\r\n {\r\n Object3DRemoveAll(obj);\r\n return obj.add(\r\n new Mesh(this.MeshGeometry, this.MeshMaterial),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * 当实体需要被更新时,更新实体材质\r\n */\r\n UpdateDrawObjectMaterial(type: RenderType, obj: Object3D)\r\n {\r\n if (type === RenderType.Wireframe)\r\n {\r\n let l = obj as TLine;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (type === RenderType.Conceptual)\r\n {\r\n let mesh = obj.children[0] as Mesh;\r\n mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);\r\n }\r\n else if (type === RenderType.Physical2)\r\n {\r\n let mesh = obj.children[0] as Mesh;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n else\r\n {\r\n let mesh = obj as Mesh;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n }\r\n get BoundingBox()\r\n {\r\n if (!this.MeshGeometry.boundingBox)\r\n this.MeshGeometry.computeBoundingBox();\r\n\r\n return this.MeshGeometry.boundingBox.clone().applyMatrix4(this._Matrix);\r\n }\r\n get OBB(): OBB\r\n {\r\n let box = this.BoundingBox;\r\n let size = box.getSize(new Vector3);\r\n return new OBB(MoveMatrix(box.min), size.multiplyScalar(0.5));\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetEndPoint();\r\n case ObjectSnapMode.Mid:\r\n case ObjectSnapMode.Cen:\r\n case ObjectSnapMode.Nea:\r\n case ObjectSnapMode.Ext:\r\n case ObjectSnapMode.Per:\r\n case ObjectSnapMode.Tan:\r\n {\r\n let contour = this._PathCurve.Clone();\r\n contour.ApplyMatrix(this.OCS);\r\n let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform);\r\n if (snapMode === ObjectSnapMode.Mid)\r\n return [...pts, ...this.GetMidPoints()];\r\n return pts;\r\n }\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n\r\n GetGripPoints()\r\n {\r\n let pts = this._PathCurve.GetGripPoints();\r\n for (let p of pts)\r\n p.applyMatrix4(this._Matrix);\r\n return pts;\r\n }\r\n GetStretchPoints()\r\n {\r\n let pts = this._PathCurve.GetStretchPoints();\r\n for (let p of pts)\r\n p.applyMatrix4(this._Matrix);\r\n return pts;\r\n }\r\n private UpdateEndMtx(dir: Vector3, pos: Vector3)\r\n {\r\n let y = this.Normal;\r\n let roMat = new Matrix4().extractRotation(this.OCS);\r\n let z = dir.applyMatrix4(roMat);\r\n let x = z.clone().cross(y);\r\n tempMatrix1.makeBasis(x, y, z);\r\n tempMatrix1.setPosition(pos.applyMatrix4(this.OCS));\r\n }\r\n private GetEndPoint()\r\n {\r\n let conPts = this._Contour.GetStretchPoints();\r\n let cus: Curve[];\r\n if (this._PathCurve instanceof Polyline)\r\n cus = this._PathCurve.Explode() as Curve[];\r\n else\r\n cus = [this._PathCurve];\r\n\r\n let roMat = new Matrix4().extractRotation(this.OCS);\r\n\r\n const pts: Vector3[] = [];\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let l1 = cus[i];\r\n let l2: Curve;\r\n if (this._PathCurve.IsClose)\r\n {\r\n l2 = cus[FixIndex(i + 1, cus.length)];\r\n }\r\n else\r\n {\r\n l2 = cus[i + 1];\r\n if (i === 0)\r\n {\r\n this.UpdateEndMtx(l1.GetFistDeriv(0).normalize(), l1.StartPoint);\r\n pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1)));\r\n }\r\n }\r\n\r\n let p = l1.EndPoint;\r\n let d1 = l1.GetFistDeriv(1).normalize();\r\n this.UpdateEndMtx(d1.clone(), p);\r\n\r\n if (l2)\r\n {\r\n let d2 = l2.GetFistDeriv(0).normalize().applyMatrix4(roMat);\r\n d1.applyMatrix4(roMat);\r\n d2.add(d1).normalize();\r\n if (isParallelTo(d1, d2))\r\n {\r\n if (l1 instanceof Line && l2 instanceof Line)\r\n {\r\n }\r\n else\r\n {\r\n let ps = conPts.map(p => p.clone().applyMatrix4(tempMatrix1));\r\n pts.push(...ps);\r\n }\r\n continue;\r\n }\r\n p.copy(l1.EndPoint);\r\n //角平分线的平面;\r\n let plane = new PlaneExt(d2, p.applyMatrix4(this.OCS));\r\n let ps = conPts.map(p => p.clone().applyMatrix4(tempMatrix1));\r\n pts.push(...ps.map(p => plane.intersectLine(new Line3(p.clone().sub(d1.clone().multiplyScalar(-100)), p.clone().add(d1)), new Vector3(), true)));\r\n }\r\n else\r\n {\r\n pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1)));\r\n }\r\n }\r\n return pts;\r\n }\r\n private GetMidPoints()\r\n {\r\n let conPts = this._Contour.GetStretchPoints();\r\n const pts: Vector3[] = [];\r\n\r\n for (let i = 0.5; i < this._PathCurve.EndParam; i++)\r\n {\r\n let p = this._PathCurve.GetPointAtParam(i);\r\n let d1 = this._PathCurve.GetFistDeriv(i).normalize();\r\n this.UpdateEndMtx(d1, p);\r\n pts.push(...conPts.map(p => p.clone().applyMatrix4(tempMatrix1)));\r\n }\r\n return pts;\r\n\r\n }\r\n MoveGripPoints(indexList: number[], vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n this.IfPathIsLineThenZ0Vector(vec);\r\n\r\n this._PathCurve.MoveGripPoints(indexList,\r\n vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv)));\r\n this.Update();\r\n }\r\n\r\n //如果路径是直线,我们在这里避免vec传递z轴信息\r\n private IfPathIsLineThenZ0Vector(vec: Vector3)\r\n {\r\n if (this._PathCurve instanceof Line)\r\n {\r\n let ocsinv = this._PathCurve.OCSInv.setPosition(0, 0, 0);\r\n vec.applyMatrix4(ocsinv).setZ(0);\r\n vec.applyMatrix4(this._PathCurve.OCSNoClone);\r\n }\r\n }\r\n\r\n MoveStretchPoints(indexList: number[], vec: Vector3)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n this.IfPathIsLineThenZ0Vector(vec);\r\n\r\n this._PathCurve.MoveStretchPoints(indexList,\r\n vec.clone().applyMatrix4(new Matrix4().extractRotation(this.OCSInv)));\r\n this.Update();\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();//1\r\n this._Contour = file.ReadObject() as Polyline;\r\n this._PathCurve = file.ReadObject() as Curve;\r\n\r\n if (this._Contour instanceof Spline || this._PathCurve instanceof Spline)\r\n {\r\n this._isErase = true;\r\n Log(\"放样实体是样条线生成的,自动删除它!\");\r\n }\r\n\r\n }\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(1);//ver\r\n file.WriteObject(this._Contour);\r\n file.WriteObject(this._PathCurve);\r\n }\r\n}\r\n","import { Matrix4 } from \"three\";\nimport { arrayRemoveIf } from \"../../Common/ArrayExt\";\nimport { GetPointAtCurveDir } from \"../../Common/CurveUtils\";\nimport { DefaultToplineMetalsOption } from \"../../Editor/DefaultConfig\";\nimport { equaln, isPerpendicularityTo, rotatePoint, ZAxis } from \"../../Geometry/GeUtils\";\nimport { IntersectOption } from \"../../GraphicsSystem/IntersectWith\";\nimport { FixIndex } from \"../../Nest/Common/Util\";\nimport { IToplineOption } from \"../../UI/Components/RightPanel/RightPanelInterface\";\nimport { SweepSolid } from '../3DSolid/SweepSolid';\nimport { AutoRecord } from \"../AutoRecord\";\nimport { Factory } from \"../CADFactory\";\nimport { CADFiler } from \"../CADFiler\";\nimport { Curve } from \"../Entity/Curve\";\nimport { Line } from \"../Entity/Line\";\nimport { Polyline } from \"../Entity/Polyline\";\n\n@Factory\nexport class HardwareTopline extends SweepSolid\n{\n @AutoRecord HardwareOption: IToplineOption = { ...DefaultToplineMetalsOption };\n @AutoRecord DataList: [string, string][] = [];\n private _contourRotation = 0;\n get ContourRotation()\n {\n return this._contourRotation;\n }\n private _ContourWidth: number;\n private get Contours()\n {\n let c = this.Path;\n let conBox = this.Contour.BoundingBox;\n let cMin = conBox.min;\n let cMax = conBox.max;\n let y = ZAxis;\n let z = c.GetFistDeriv(0).normalize();\n let x = z.clone().cross(y);\n let mat = new Matrix4().makeBasis(x, y, z);\n mat.setPosition(c.StartPoint);\n [cMin, cMax].forEach(p => p.applyMatrix4(mat).setZ(0));\n\n let firstCurve: Curve;\n if (c instanceof Polyline)\n firstCurve = c.GetCurveAtParam(0);\n else\n firstCurve = c;\n\n let closePt = firstCurve.GetClosestPointTo(cMin, false);\n let offset = cMin.distanceTo(closePt);\n let dir = GetPointAtCurveDir(firstCurve, cMin);\n let cus = this.Path.GetOffsetCurves(offset * dir);\n let l1 = cus[0] ?? this.Path.Clone();\n\n closePt = firstCurve.GetClosestPointTo(cMax, false);\n let offset2 = cMax.distanceTo(closePt);\n dir = GetPointAtCurveDir(firstCurve, cMax);\n cus = this.Path.GetOffsetCurves(offset2 * dir);\n let l2 = cus[0] ?? this.Path.Clone();\n\n this._ContourWidth = offset + offset2;\n return [l1, l2];\n }\n /**\n *延伸取最大最小轮廓每段首尾到前面线段,取最长线段作为分段长\n *\n */\n get Segmentations()\n {\n const [l1, l2] = this.Contours;\n if (!(l1 instanceof Polyline))\n return [l1];\n\n let cus1 = l1.Explode() as Curve[];\n let cus2 = l2.Explode() as Curve[];\n\n [cus1, cus2] = cus1.length < cus2.length ? [cus2, cus1] : [cus1, cus2];\n\n let sgs: Curve[] = [];\n\n const AddSgs = (c1: Curve, c2: Curve) =>\n {\n sgs.push(c1.Length > c2.Length ? c1 : c2);\n };\n\n const ExtendCurve = (c: Curve, refC: Curve, isPre) =>\n {\n let pts = c.IntersectWith2(refC, IntersectOption.ExtendBoth).filter(r =>\n {\n if (isPre)\n return r.thisParam < 0;\n else\n return r.thisParam > 1;\n });\n if (isPre)\n {\n pts.sort((r1, r2) => r2.thisParam - r1.thisParam);\n if (pts.length > 0 && pts[0].thisParam < 0)\n c.Extend(pts[0].thisParam);\n }\n else\n {\n pts.sort((r1, r2) => r1.thisParam - r2.thisParam);\n if (pts.length > 0 && pts[0].thisParam > 1)\n c.Extend(pts[0].thisParam);\n }\n };\n const IsNoRelativeCurve = (c1: Curve, c2: Curve) =>\n {\n if ((c1 instanceof Line) !== (c2 instanceof Line))\n return true;\n\n let midPt = c1.GetPointAtParam(0.5);\n let closePt = c2.GetClosestPointTo(midPt, false);\n return !closePt || !equaln(midPt.distanceTo(closePt), this._ContourWidth, 1e-3);\n };\n\n const HasRelativeCurveAndChange = (target: Curve, cs: Curve[], isChange = false) =>\n {\n let index = cs.findIndex(c => !IsNoRelativeCurve(c, target));\n if (index !== -1)\n {\n if (isChange && l1.IsClose)\n cs.unshift(...cs.splice(index));\n return true;\n }\n return false;\n };\n\n\n if (cus1.length !== cus2.length)\n arrayRemoveIf(cus2, c => !HasRelativeCurveAndChange(c, cus1));\n\n for (let i = 0; i < cus1.length; i++)\n {\n let c1 = cus1[i];\n let c2 = cus2[i];\n\n if (cus1.length !== cus2.length)\n {\n if (IsNoRelativeCurve(c1, c2))\n {\n sgs.push(c1);\n cus1.splice(i, 1);\n i--;\n continue;\n }\n }\n else\n {\n //第一段验证是否是关联段,不关联重置数组顺序\n if (i === 0)\n {\n if (IsNoRelativeCurve(c1, c2))\n {\n if (!HasRelativeCurveAndChange(c1, cus2, true))\n {\n console.error(\"错误\");\n return cus1;\n }\n i--;\n continue;\n }\n }\n }\n\n let nextC1: Curve;\n\n if (l1.IsClose)\n {\n nextC1 = cus1[FixIndex(i + 1, cus1.length)];\n }\n else\n {\n if (i < cus1.length - 1)\n {\n nextC1 = cus1[i + 1];\n }\n }\n\n if (nextC1)\n {\n let derv = c1.GetFistDeriv(0).normalize();\n let derv2 = nextC1.GetFistDeriv(0).normalize();\n\n if (isPerpendicularityTo(derv, derv2) && isPerpendicularityTo(derv, c1.StartPoint.sub(c2.StartPoint).normalize()))\n {\n AddSgs(c1, c2);\n continue;\n }\n }\n\n let nextDerv1 = c1.GetFistDeriv(1).normalize();\n let nextDerv2 = c2.GetFistDeriv(1).normalize();\n let preDerv1 = c1.GetFistDeriv(0).normalize();\n let preDerv2 = c2.GetFistDeriv(0).normalize();\n [nextDerv1, nextDerv2, preDerv1, preDerv2].forEach(d => rotatePoint(d, Math.PI / 2));\n\n let preRefLine1 = new Line(c1.StartPoint, c1.StartPoint.add(preDerv1));\n let preRefLine2 = new Line(c2.StartPoint, c2.StartPoint.add(preDerv2));\n\n let nextRefLine1 = new Line(c1.EndPoint, c1.EndPoint.add(nextDerv1));\n let nextRefLine2 = new Line(c2.EndPoint, c2.EndPoint.add(nextDerv2));\n\n ExtendCurve(c1, nextRefLine2, false);\n ExtendCurve(c2, nextRefLine1, false);\n\n ExtendCurve(c1, preRefLine2, true);\n ExtendCurve(c2, preRefLine1, true);\n\n AddSgs(c1, c2);\n }\n\n return sgs;\n }\n get MaxLength()\n {\n return this.Segmentations.reduce((len, c) => len + c.Length, 0);\n }\n set ContourRotation(ro: number)\n {\n if (ro === this._contourRotation)\n return;\n let diffRo = ro - this._contourRotation;\n this._contourRotation = ro;\n let mat = new Matrix4().makeRotationZ(diffRo);\n this.Contour.ApplyMatrix(mat);\n this.Update();\n }\n protected _ReadFile(file: CADFiler)\n {\n super._ReadFile(file);\n let ver = file.Read();//1\n\n this._contourRotation = file.Read();\n\n this.HardwareOption.addLen = file.Read();\n this.HardwareOption.name = file.Read();\n this.HardwareOption.roomName = file.Read();\n this.HardwareOption.cabinetName = file.Read();\n this.HardwareOption.costExpr = file.Read();\n this.HardwareOption.actualExpr = file.Read();\n this.HardwareOption.model = file.Read();\n this.HardwareOption.factory = file.Read();\n this.HardwareOption.brand = file.Read();\n this.HardwareOption.spec = file.Read();\n this.HardwareOption.comments = file.Read();\n\n let count = file.Read();\n this.DataList.length = 0;\n for (let i = 0; i < count; i++)\n {\n let d: [string, string] = [\"\", \"\"];\n d[0] = file.Read();\n d[1] = file.Read();\n this.DataList.push(d);\n }\n\n }\n WriteFile(file: CADFiler)\n {\n super.WriteFile(file);\n file.Write(1);//ver\n\n file.Write(this._contourRotation);\n\n file.Write(this.HardwareOption.addLen);\n file.Write(this.HardwareOption.name);\n file.Write(this.HardwareOption.roomName);\n file.Write(this.HardwareOption.cabinetName);\n file.Write(this.HardwareOption.costExpr);\n file.Write(this.HardwareOption.actualExpr);\n file.Write(this.HardwareOption.model);\n file.Write(this.HardwareOption.factory);\n file.Write(this.HardwareOption.brand);\n file.Write(this.HardwareOption.spec);\n file.Write(this.HardwareOption.comments);\n\n file.Write(this.DataList.length);\n for (let data of this.DataList)\n {\n file.Write(data[0]);\n file.Write(data[1]);\n }\n }\n}\n","import { Vector3 } from \"three\";\r\nimport { EBoardKeyList } from \"../../Common/BoardKeyList\";\r\nimport { ParseExpr, safeEval } from \"../../Common/eval\";\r\nimport { Intent, Toaster } from \"../../Common/Toaster\";\r\nimport { FixedNotZero } from \"../../Common/Utils\";\r\nimport { CylinderHole, GangDrillType } from \"../../DatabaseServices/3DSolid/CylinderHole\";\r\nimport { ExtrudeHole } from \"../../DatabaseServices/3DSolid/ExtrudeHole\";\r\nimport { Hole } from \"../../DatabaseServices/3DSolid/Hole\";\r\nimport { Board } from \"../../DatabaseServices/Entity/Board\";\r\nimport { GroupRecord } from \"../../DatabaseServices/GroupTableRecord\";\r\nimport { HardwareCompositeEntity } from \"../../DatabaseServices/Hardware/HardwareCompositeEntity\";\r\nimport { HardwareTopline } from \"../../DatabaseServices/Hardware/HardwareTopline\";\r\nimport { equaln } from \"../../Geometry/GeUtils\";\r\nimport { IHardwareType, Production } from \"../../Production/Product\";\r\n\r\nexport interface ICountType\r\n{\r\n name?: string;\r\n count: number;\r\n entity?: T;\r\n count2?: number | string;\r\n unit?: string;\r\n length?: number;\r\n}\r\nexport type GetCountOption = { sealGruopKey: (block: Board) => string; };\r\nclass LookOverBoardInfosTool\r\n{\r\n private drillTypeMap: Map = new Map();\r\n private sealMap: Map = new Map();\r\n private boardMap = new Map();\r\n GetCount(brs: (Board | IHardwareType)[], options: GetCountOption = null)\r\n {\r\n let drillCount: ICountType[] = [];\r\n let sealCount: ICountType[] = [];\r\n let hardwareCount: ICountType[] = [];\r\n let areaCount: ICountType[] = [];\r\n\r\n this.drillTypeMap.clear();\r\n this.sealMap.clear();\r\n this.Update(brs, options);\r\n if (this.drillTypeMap.size > 0)\r\n for (let [k, v] of this.drillTypeMap)\r\n {\r\n if (v[0] instanceof Hole)\r\n if (k === \"木销\")\r\n drillCount.push({ name: k, count: v.length });\r\n else if (k === \"层板钉\")\r\n drillCount.push({ name: k, count: v.length });\r\n else\r\n drillCount.push({ name: k, count: v.length });\r\n else\r\n {\r\n this.ParseHardwareCount(k, v as IHardwareType[], hardwareCount);\r\n }\r\n }\r\n hardwareCount.sort((h1, h2) => h1.name.localeCompare(h2.name));\r\n //加入封边信息\r\n for (let [k, v] of this.sealMap)\r\n {\r\n sealCount.push({ name: k, count: v / 1000, unit: \"米\" });\r\n }\r\n\r\n for (let [k, bs] of this.boardMap)\r\n {\r\n areaCount.push({\r\n entity: bs[0],\r\n count: bs.length,\r\n count2: this.GetBoardsArea(bs)\r\n });\r\n }\r\n\r\n return { drillCount, hardwareCount, sealCount, areaCount };\r\n };\r\n private Update(ens: (Board | IHardwareType)[], options: GetCountOption = null)\r\n {\r\n //计算排钻个数\r\n const addDrillToMap = (spiteName: string, d: Hole | IHardwareType) =>\r\n {\r\n if (!this.drillTypeMap.has(spiteName))\r\n this.drillTypeMap.set(spiteName, [d]);\r\n else\r\n {\r\n let ds = this.drillTypeMap.get(spiteName);\r\n if (!ds.includes(d))\r\n ds.push(d);\r\n }\r\n };\r\n\r\n const brsProps: Board[] = [];\r\n const hardwares: IHardwareType[] = [];\r\n\r\n for (let e of ens)\r\n {\r\n if (e instanceof Board)\r\n brsProps.push(e);\r\n else\r\n hardwares.push(e);\r\n }\r\n for (let h of hardwares)\r\n {\r\n let { name, unit, factory, spec, model, brand } = h.HardwareOption;\r\n addDrillToMap(`${name},${unit},${factory},${this.ParseSpec(h, spec)},${model},${brand}`, h);\r\n }\r\n\r\n this.UpdateBoardMap(brsProps);\r\n\r\n for (let b of brsProps)\r\n {\r\n let dlist = b.DrillList;\r\n if (equaln(b.ContourCurve.Area, 0))\r\n {\r\n Toaster({\r\n message: `${b.BoardProcessOption.roomName} ${b.BoardProcessOption.cabinetName} ${b.Name}轮廓有有问题,请检查`,\r\n timeout: 3000,\r\n intent: Intent.DANGER,\r\n });\r\n continue;\r\n }\r\n\r\n for (let [id, idList] of dlist)\r\n {\r\n for (let ids of idList)\r\n {\r\n findHole:\r\n for (let objId of ids)\r\n {\r\n let gd = objId.Object;\r\n if (!gd?.IsErase)\r\n {\r\n if (gd instanceof CylinderHole)\r\n switch (gd.Type)\r\n {\r\n case GangDrillType.Ljg:\r\n case GangDrillType.Pxl:\r\n case GangDrillType.Ymj:\r\n case GangDrillType.Ljg:\r\n case GangDrillType.TK:\r\n let spiteName = (gd.GroupId?.Object as GroupRecord)?.Name ?? \"未命名\";\r\n //读取拆单名\r\n addDrillToMap(spiteName, gd);\r\n break findHole;\r\n case GangDrillType.Wood:\r\n case GangDrillType.WoodPXL:\r\n addDrillToMap(\"木销\", gd);\r\n break findHole;\r\n }\r\n else\r\n {\r\n //TODO:统计自定义排钻\r\n if (gd instanceof ExtrudeHole)\r\n {\r\n if (gd?.GroupId?.Object)\r\n {\r\n let name = (gd.GroupId.Object as GroupRecord).Name;\r\n let ents = (gd.GroupId.Object as GroupRecord).Entitys;\r\n addDrillToMap(name, ents[0].Object as Hole);\r\n }\r\n else\r\n {\r\n Toaster({ message: `柜名:${b.BoardProcessOption.cabinetName} 板名:${b.Name} 的排钻的编组丢失,统计排钻个数时会丢失该个数!`, timeout: 5000, intent: Intent.DANGER });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // 被复制的层板钉暂未加入LayerNails数组 等做好关联后解除注释\r\n if (b.LayerNails.length > 0)\r\n for (let objId of b.LayerNails)\r\n {\r\n if (!objId?.IsErase)\r\n addDrillToMap(\"层板钉\", objId.Object as CylinderHole);\r\n }\r\n\r\n //分析五金\r\n for (const mId of b.RelativeHardware)\r\n {\r\n let metal = mId?.Object as IHardwareType;\r\n if (metal && !metal.IsErase && metal.HardwareOption)\r\n {\r\n let { name, unit, factory, spec, model, brand } = metal.HardwareOption;\r\n addDrillToMap(`${name},${unit},${factory},${this.ParseSpec(metal, spec)},${model},${brand}`, metal);\r\n }\r\n }\r\n\r\n //封边\r\n let sealData = Production.GetBoardSealingData(b);\r\n let color = b.BoardProcessOption[EBoardKeyList.Color];\r\n\r\n for (let data of sealData)\r\n {\r\n if (equaln(0, data.size)) continue;\r\n let k = `${data.size}-${FixedNotZero(b.Thickness, 2)}-${color}`;\r\n if (options)\r\n {\r\n k += options.sealGruopKey(b);\r\n }\r\n let len = this.sealMap.get(k);\r\n if (!len)\r\n this.sealMap.set(k, data.length);\r\n else\r\n this.sealMap.set(k, len += data.length);\r\n }\r\n }\r\n };\r\n ParseSpec(en: IHardwareType | Vector3, spec: string, len?: number)\r\n {\r\n let size = en instanceof Vector3 ? en : en.BoundingBoxInOCS.getSize(new Vector3);\r\n return ParseExpr(spec, { L: len ?? size.x, W: size.y, H: size.z }) || \"[ 无 ]\";\r\n }\r\n ParseHardwareCount(k: string, v: IHardwareType[], hardwareCount: ICountType[])\r\n {\r\n if (v.length > 0)\r\n {\r\n if (!(v[0] instanceof HardwareTopline))\r\n {\r\n let count2 = v.reduce((v: number, d: HardwareCompositeEntity) =>\r\n {\r\n let size = d.BoundingBoxInOCS.getSize(new Vector3);\r\n let c = safeEval(d.HardwareOption.count, { L: size.x, W: size.y, H: size.z }) ?? 0;\r\n return v + c;\r\n }, 0);\r\n hardwareCount.push({ name: k.split(\",\")[0], count: v.length, entity: v[0], count2: FixedNotZero(count2, 2) });\r\n }\r\n else\r\n {\r\n let map = new Map();\r\n let name = k.split(\",\")[0];\r\n let addLen = (v[0] as HardwareTopline).HardwareOption.addLen;\r\n for (let d of v)\r\n {\r\n let e = d as HardwareTopline;\r\n let cus = e.Segmentations;\r\n for (let cu of cus)\r\n {\r\n let len = parseFloat(FixedNotZero(cu.Length, 2));\r\n if (map.has(len))\r\n {\r\n map.set(len, map.get(len) + 1);\r\n }\r\n else\r\n {\r\n map.set(len, 1);\r\n }\r\n }\r\n }\r\n\r\n for (let [len, count] of map)\r\n {\r\n let count2 = parseFloat(FixedNotZero(len + parseFloat(addLen), 2));\r\n hardwareCount.push({ name, count, entity: v[0], count2, length: count2 });\r\n }\r\n }\r\n }\r\n }\r\n private UpdateBoardMap(brs: Board[])\r\n {\r\n this.boardMap.clear();\r\n for (let b of brs)\r\n {\r\n let thickness = this.GetBoardThickness(b);\r\n let brMat = b.BoardProcessOption[EBoardKeyList.BrMat];\r\n let mat = b.BoardProcessOption[EBoardKeyList.Mat];\r\n let color = b.BoardProcessOption[EBoardKeyList.Color];\r\n let key = `${thickness}-${brMat}-${mat}-${color}`;\r\n let list = this.boardMap.get(key);\r\n if (!list)\r\n {\r\n list = [];\r\n this.boardMap.set(key, list);\r\n }\r\n list.push(b);\r\n }\r\n }\r\n GetBoardThickness(br: Board)\r\n {\r\n let size = Production.GetSpiteSize(br);\r\n if (size)\r\n return FixedNotZero(size.spliteThickness, 2);\r\n else\r\n return FixedNotZero(br.Thickness, 2);\r\n }\r\n GetBoardsArea(brs: Board[])\r\n {\r\n return brs.reduce((area, b) =>\r\n {\r\n let size = Production.GetSpiteSize(b);\r\n let ar: number;\r\n if (size)\r\n ar = size.spliteHeight * size.spliteWidth / 1e6;\r\n else\r\n ar = b.Width * b.Height / 1e6;\r\n ar = parseFloat(ar.toFixed(3));\r\n return area + ar;\r\n }, 0).toFixed(2);\r\n }\r\n}\r\n\r\nexport const lookOverBoardInfosTool = new LookOverBoardInfosTool();\r\n","\r\n\r\nlet instanceMap = new Map();\r\n\r\n/**\r\n * 构造单例类的静态类.\r\n * # Example:\r\n * class A extends Singleton(){};\r\n * //获得单例\r\n * let a = A.GetInstance();\r\n */\r\nexport class Singleton\r\n{\r\n protected constructor() { }\r\n\r\n //FIXME: https://github.com/Microsoft/TypeScript/issues/5863\r\n static GetInstance(): T\r\n {\r\n if (instanceMap.has(this))\r\n return instanceMap.get(this);\r\n //@ts-ignore\r\n let __instance__ = new this.prototype.constructor();\r\n instanceMap.set(this, __instance__);\r\n return __instance__;\r\n }\r\n}\r\n","import { Matrix4, Vector3 } from \"three\";\nimport { GetMirrorMat } from \"../../Common/Matrix4Utils\";\nimport { Arc } from \"../../DatabaseServices/Entity/Arc\";\nimport { Board } from \"../../DatabaseServices/Entity/Board\";\nimport { Curve } from \"../../DatabaseServices/Entity/Curve\";\nimport { Region } from \"../../DatabaseServices/Entity/Region\";\nimport { DrillType } from \"../../UI/Store/BoardInterface\";\nimport { equaln, equalv3, ZAxis } from \"../GeUtils\";\nimport { Face } from \"./Face\";\nimport { MergeCurvelist } from \"../../Common/CurveUtils\";\n\n\nexport const CanDrawHoleFuzz = 1e-2;\n\nexport enum BoardFaceType\n{\n Side = 0,\n NoSide = 1\n}\nexport class BoardGetFace\n{\n Faces: Face[] = [];\n constructor(public Board: Board)\n {\n this.ParseFaces();\n }\n ParseFaces()\n {\n //正反面\n this.GetTopAndBottomFace();\n //侧面\n this.GetSideFaces();\n }\n GetTopAndBottomFace(isEdgeFace = false)\n {\n let curve = this.Board.ContourCurve;\n let reg: Region;\n if (this.Board.IsSpecialShape)\n reg = Region.CreateFromCurves([curve]);\n\n let thickness = this.Board.Thickness;\n let ocs = this.Board.OCS;\n const opt = this.Board.BoardProcessOption;\n //正反面\n if (opt.frontDrill || isEdgeFace)\n this.Faces.push(new Face({\n type: BoardFaceType.NoSide,\n region: reg,\n isRect: this.Board.IsRect,\n localBoard: this.Board,\n matrix4: ocs.clone().multiply(\n new Matrix4().setPosition(new Vector3(0, 0, thickness))),\n length: this.Board.Width,\n width: this.Board.Height\n }));\n\n if (opt.backDrill || isEdgeFace)\n {\n let mat = GetMirrorMat(ZAxis).setPosition(new Vector3());\n this.Faces.push(new Face({\n type: BoardFaceType.NoSide,\n localBoard: this.Board,\n isRect: this.Board.IsRect,\n region: reg ? reg.Clone() : undefined,\n matrix4: new Matrix4().multiplyMatrices(ocs.clone(), mat),\n length: this.Board.Width,\n width: this.Board.Height\n }));\n }\n }\n GetSideFaces()\n {\n let con = this.Board.ContourCurve.Clone();\n let inverseZ = con.Area2 < 0;\n let cus = con.Explode() as Curve[];\n const highDrill = this.Board.BoardProcessOption.highDrill.slice();\n\n for (let i = 0; i < cus.length; i++)\n {\n let cu = cus[i];\n let length = cu.Length;\n if ((highDrill.length > 0 && highDrill[i] === DrillType.None)\n || equaln(length, 0)\n || cu instanceof Arc)\n continue;\n let mtx = GetSideFaceMtx(cu, inverseZ);\n this.Faces.push(new Face({\n type: BoardFaceType.Side,\n localBoard: this.Board,\n matrix4: new Matrix4().multiplyMatrices(this.Board.OCS.clone(), mtx),\n length,\n width: this.Board.Thickness,\n drillType: highDrill.length > 0 && highDrill[i]\n }));\n }\n }\n IntersectFace(br: BoardGetFace, bInsEqual: boolean = false): Face[]\n {\n let collisionFaces: Face[] = [];\n\n for (let f1 of this.Faces)\n {\n for (let f2 of br.Faces)\n {\n //都是正面,或者不允许侧面同侧面并且2板件类型不一样就跳过\n if (f1.type === f2.type\n && (f1.type === BoardFaceType.NoSide || !bInsEqual || br.Board.BoardType !== this.Board.BoardType)\n )\n continue;\n //不共面\n if (!MatrixIsCoplane2(f1.OCS, f2.OCS, CanDrawHoleFuzz))\n continue;\n collisionFaces.push(...f1.Intersect(f2));\n }\n }\n return collisionFaces;\n }\n static GetAllSidesFaces(br: Board, isMergeFace = false)\n {\n let faces: Face[] = [];\n let con = br.ContourCurve;\n let inverseZ = con.Area2 < 0;\n let cus = con.Explode() as Curve[];\n if (isMergeFace)\n MergeCurvelist(cus);\n\n for (let i = 0; i < cus.length; i++)\n {\n let cu = cus[i];\n let length = cu.Length;\n let mtx = GetSideFaceMtx(cu, inverseZ);\n faces.push(new Face({\n type: BoardFaceType.Side,\n localBoard: br,\n matrix4: new Matrix4().multiplyMatrices(br.OCS.clone(), mtx),\n length,\n width: br.Thickness,\n }));\n }\n return faces;\n }\n}\n\n//坐标系共面且法线相反\nexport function MatrixIsCoplane2(matrixFrom: Matrix4, matrixTo: Matrix4, fuzz = 1e-5): boolean\n{\n let nor1 = new Vector3().setFromMatrixColumn(matrixFrom, 2);\n let nor2 = new Vector3().setFromMatrixColumn(matrixTo, 2);\n\n //法线共面\n if (!equalv3(nor1, nor2.negate(), fuzz))\n return false;\n\n //高共面\n let pt = new Vector3().setFromMatrixPosition(matrixTo);\n //变换到自身对象坐标系.\n pt.applyMatrix4(new Matrix4().getInverse(matrixFrom));\n\n return equaln(pt.z, 0, fuzz);\n}\nexport function GetSideFaceMtx(cu: Curve, inverseZ = false): Matrix4\n{\n let x = cu.GetFistDeriv(0).normalize();\n let y = ZAxis;\n let z = x.clone().cross(y);\n if (inverseZ) z.negate();\n\n let basePt: Vector3;\n if ((equaln(x.x, 0) && x.y > 0) || x.x < 0)\n {\n x.negate();\n basePt = cu.EndPoint;\n }\n else\n basePt = cu.StartPoint;\n //构建面矩阵\n return new Matrix4()\n .makeBasis(x, y, z)\n .setPosition(basePt);\n}\n","import { Vector3 } from \"three\";\nimport { arrayRemoveIf } from \"../../Common/ArrayExt\";\nimport { ConverCircleToPolyline, curveLinkGroup, equalCurve, IRectInfo, IsRect } from \"../../Common/CurveUtils\";\nimport { matrixAlignCoordSys } from \"../../Common/Matrix4Utils\";\nimport { Circle } from \"../../DatabaseServices/Entity/Circle\";\nimport { Curve } from \"../../DatabaseServices/Entity/Curve\";\nimport { Line } from \"../../DatabaseServices/Entity/Line\";\nimport { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\nimport { Shape } from \"../../DatabaseServices/Shape\";\nimport { AsVector2, AsVector3, comparePoint, equaln, equalv3 } from \"../../Geometry/GeUtils\";\n\n/**\n * 优化走刀路径,连接偏移后的曲线数组\n * @param offsetCus 偏移后的曲线组\n * @param originShape 原始走刀形状\n * @param rad 刀半径\n * @returns tool path\n */\nexport function OptimizeToolPath(offsetCus: Curve[], originShape: Shape, rad: number): Curve[]\n{\n // 去掉最外轮廓\n let outline = offsetCus.shift();\n\n let plList: Polyline[] = [];\n let noCloseCus: Curve[] = [];\n for (let cu of offsetCus)\n {\n if (!cu.IsClose)\n {\n noCloseCus.push(cu);\n continue;\n }\n if (cu instanceof Polyline)\n {\n //轮廓朝下的逆时针轮廓需要翻转\n //如果走刀不止一条,第一刀为顺时针,其余为逆时针\n if (cu.IsClose)\n {\n if (offsetCus.length === 1)\n {\n if (cu.Normal.z * cu.Area2 < 0)\n cu.Reverse();\n }\n else\n if ((cu.Normal.z * cu.Area2 < 0) === (cu !== offsetCus[0]))\n cu.Reverse();\n }\n plList.push(cu);\n }\n else if (cu instanceof Circle)\n {\n let c = ConverCircleToPolyline(cu);\n if (offsetCus.length > 1 && cu === offsetCus[0])\n c.Reverse();\n c.ColorIndex = cu.ColorIndex;\n plList.push(c);\n }\n else\n console.warn(\"错误形状\");\n }\n\n if (noCloseCus.length > 0)\n {\n let culist: Curve[] = [];\n noCloseCus.forEach(c =>\n {\n if (c instanceof Polyline)\n culist.push(...c.Explode() as Curve[]);\n else\n culist.push(c);\n });\n //移除相等的曲线避免重复走刀\n RempveEqualCurves(culist);\n let groups = curveLinkGroup(culist);\n for (let g of groups)\n {\n let pl = Polyline.Combine(g);;\n pl.ColorIndex = noCloseCus[0].ColorIndex;\n plList.push(pl);\n }\n }\n let dir = GetCurveToInDir(outline);\n let cantIntCur: Curve[] = [outline];\n cantIntCur.push(...GetOffsetCurves(outline, rad * dir));\n if (originShape.Holes.length > 0)\n {\n for (let h of originShape.Holes)\n {\n let dir = Math.sign(h.Curve.Area2);\n if (h.Curve instanceof Circle)\n dir = 1;\n cantIntCur.push(h.Curve, ...GetOffsetCurves(h.Curve, rad * dir));\n }\n }\n\n //曲线统一起点\n ChangePlListStartPt(plList);\n //对多段线进行排序,按最起始点远近排序\n SortPlByStartPt(plList);\n\n let result: Curve[] = [];\n let firstPl = plList[0];\n firstPl.CloseMark = false;\n\n for (let i = 1; i < plList.length; i++)\n {\n let ePt = firstPl.EndPoint;\n let isDisVail: boolean;\n if (plList[i].TempData?.isOut && !equalv3(ePt, plList[i].StartPoint))\n isDisVail = true;\n else\n {\n let refLine = new Line(ePt, plList[i].StartPoint);\n isDisVail = cantIntCur.some(c => c.IntersectWith(refLine, 0).length > 1);\n }\n\n if (isDisVail)\n {\n result.push(firstPl);\n firstPl = plList[i];\n firstPl.CloseMark = false;\n }\n else\n {\n let alMat = matrixAlignCoordSys(plList[i].OCS, firstPl.OCS);\n let cuPtsBul = plList[i].PtsBuls;\n\n for (let i = 0; i < cuPtsBul.pts.length; i++)\n {\n //坐标系对齐\n let p = cuPtsBul.pts[i];\n p.copy(AsVector2(AsVector3(p).applyMatrix4(alMat)));\n firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[i] });\n }\n }\n }\n result.push(firstPl);\n return result;\n}\n\n/**\n* 设定走刀路径起始点\n* 为了统一刀路起点,最外轮廓左左点为起始点,其余轮廓以最接近最外轮廓起始点的点左起始点\n* @param plList\n*/\nfunction ChangePlListStartPt(plList: Polyline[])\n{\n let firstPl = plList[0];\n if (firstPl.IsClose)\n {\n let minP = undefined;\n let compare = comparePoint(\"xy\");\n for (let p of firstPl.GetStretchPoints())\n {\n if (!minP)\n minP = p;\n else\n if (compare(minP, p) === 1)\n minP = p;\n }\n let par = firstPl.GetParamAtPoint(minP);\n firstPl.ResetStartPoint(par);\n }\n\n let firstSpt = firstPl.StartPoint;\n\n for (let i = 1; i < plList.length; i++)\n {\n let pl = plList[i];\n\n if (pl.IsClose)\n {\n let pts = pl.GetStretchPoints().sort((p1, p2) =>\n {\n let dist1 = p1.distanceToSquared(firstSpt);\n let dist2 = p2.distanceToSquared(firstSpt);\n\n return dist1 - dist2;\n });\n let par = pl.GetParamAtPoint(pts[0]);\n pl.ResetStartPoint(par);\n }\n else\n {\n let sPt = pl.StartPoint;\n let ePt = pl.EndPoint;\n let dist1 = sPt.distanceToSquared(firstSpt);\n let dist2 = ePt.distanceToSquared(firstSpt);\n if (dist1 > dist2)\n pl.Reverse();\n }\n }\n}\n\n/**\n * 排序多段线数组,按照起点之间的距离\n */\nfunction SortPlByStartPt(pls: Polyline[]): Polyline[]\n{\n if (pls.length <= 1) return pls;\n\n let result = [pls[0]];\n let usedPl = new WeakSet([pls[0]]);\n\n let p = pls[0].StartPoint;\n while (true)\n {\n if (pls.length === result.length)\n break;\n\n let vaildPl: Polyline;\n let minDist: number = Infinity;\n for (let pl of pls)\n {\n if (usedPl.has(pl))\n continue;\n let dist = pl.StartPoint.distanceToSquared(p);\n if (dist < minDist)\n {\n minDist = dist;\n vaildPl = pl;\n }\n }\n p = vaildPl.StartPoint;\n result.push(vaildPl);\n usedPl.add(vaildPl);\n }\n pls.length = 0;\n pls.push(...result);\n}\n\nfunction RempveEqualCurves(cus: Curve[])\n{\n let needRemoveCurve: Set = new Set();\n for (let i = 0; i < cus.length; i++)\n {\n let cu1 = cus[i];\n if (needRemoveCurve.has(cu1)) continue;\n for (let j = i + 1; j < cus.length; j++)\n {\n let cu2 = cus[j];\n if (needRemoveCurve.has(cu2)) continue;\n if (equalCurve(cu1, cu2))\n {\n needRemoveCurve.add(cu2);\n }\n }\n }\n arrayRemoveIf(cus, (c) => needRemoveCurve.has(c));\n}\n\n/**获取内偏移的轮廓 */\nexport function GetOffsetCurves(cu: Curve, dist: number, rectInfo?: IRectInfo): Curve[]\n{\n if (cu instanceof Polyline)\n {\n if (rectInfo?.isRect)\n {\n let r = RectOffset(cu, rectInfo, Math.abs(dist));\n return r ? [r] : [];\n }\n return cu.GetFeedingToolPath(dist).filter(c => !equaln(c.Length, 0, 1e-5));\n }\n else\n return cu.GetOffsetCurves(dist);\n}\n\n/** 获得曲线内偏移方向*/\nexport function GetCurveToInDir(cu: Curve): number\n{\n return cu.IsClockWise ? 1 : -1;\n}\n\n/**矩形偏移,正为内偏移 */\nexport function RectOffset(rect: Polyline, res: IRectInfo, dist: number)\n{\n if (!res.isRect || equaln(dist, 0)) return;\n\n let box = res.box;\n let size = res.size;\n let min = box.min.clone();\n let max = box.max.clone();\n\n if (dist > Math.min(size.x, size.y) / 2 + 1e-2) return;\n\n if (equaln(size.x / 2, dist, 1e-5))\n {\n let x = (box.min.x + box.max.x) * 0.5;\n let sPt = new Vector3(x, box.min.y + dist);\n let ePt = new Vector3(x, box.max.y - dist);\n return new Polyline([{ pt: AsVector2(sPt), bul: 0 }, { pt: AsVector2(ePt), bul: 0 }]).ApplyMatrix(res.OCS);\n }\n else if (equaln(size.y / 2, dist, 1e-5))\n {\n let y = (box.min.y + box.max.y) * 0.5;\n let sPt = new Vector3(box.min.x + dist, y);\n let ePt = new Vector3(box.max.x - dist, y);\n return new Polyline([{ pt: AsVector2(sPt), bul: 0 }, { pt: AsVector2(ePt), bul: 0 }]).ApplyMatrix(res.OCS);\n }\n else\n {\n min.add(new Vector3(dist, dist));\n max.add(new Vector3(-dist, -dist));\n return new Polyline().RectangleFrom2Pt(min, max).ApplyMatrix(res.OCS);\n }\n}\n","import { Matrix4, Vector3 } from \"three\";\r\nimport { arrayRemoveIf } from \"../../Common/ArrayExt\";\r\nimport { ConverCircleToPolyline, equalCurve, IsRect, MergeCurvelist } from \"../../Common/CurveUtils\";\r\nimport { LogEnable } from \"../../Common/Log\";\r\nimport { Singleton } from \"../../Common/Singleton\";\r\nimport { ExtrudeHole } from \"../../DatabaseServices/3DSolid/ExtrudeHole\";\r\nimport { Contour } from \"../../DatabaseServices/Contour\";\r\nimport { Board, IModeling } from \"../../DatabaseServices/Entity/Board\";\r\nimport { Circle } from \"../../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../../DatabaseServices/Entity/Curve\";\r\nimport { Line } from \"../../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\r\nimport { Shape } from \"../../DatabaseServices/Shape\";\r\nimport { ShapeManager } from \"../../DatabaseServices/ShapeManager\";\r\nimport { userConfig } from \"../../Editor/UserConfig\";\r\nimport { Box3Ext } from \"../../Geometry/Box\";\r\nimport { Route } from \"../../Geometry/CurveMap\";\r\nimport { GetSideFaceMtx } from \"../../Geometry/DrillParse/BoardGetFace\";\r\nimport { angleTo, AsVector2, equaln, isParallelTo, MoveMatrix, XAxis } from \"../../Geometry/GeUtils\";\r\nimport { RegionParse } from \"../../Geometry/RegionParse\";\r\nimport { FixIndex } from \"../../Nest/Common/Util\";\r\nimport { FaceDirection } from \"../../UI/Store/BoardInterface\";\r\nimport { BoolOpeartionType, isTargetCurInOrOnSourceCur } from \"../BoolOperateUtils\";\r\nimport { GetSealedBoardContour } from \"../CalcEdgeSealing\";\r\nimport { GetCurveToInDir, GetOffsetCurves, OptimizeToolPath } from \"./OptimizeToolPath\";\r\n\r\n/**\r\n *计算走刀工具类\r\n */\r\nexport class FeedingToolPath extends Singleton\r\n{\r\n /**\r\n * 处理形状,内偏移\r\n * @param shape 造型Shape\r\n * @param knifRadius 刀半径/偏移距离\r\n * @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓\r\n */\r\n private HandleShape(shape: Shape, knifRadius: number, isOut = true): Curve[]\r\n {\r\n let outline = shape.Outline.Curve;\r\n if (isOut)\r\n outline = outline.Clone();\r\n\r\n\r\n let dir = GetCurveToInDir(outline);\r\n\r\n let offsetCus: Curve[] = [outline];\r\n //获得形状外孔轮廓\r\n let holes: Contour[] = [];\r\n /**用于判断孤岛是否与外轮廓相交 */\r\n let holeOffsetCus: Curve[] = [];\r\n\r\n for (let h of shape.Holes)\r\n {\r\n if (!isOut)\r\n holes.push(h.Clone());\r\n else\r\n {\r\n let dir = -GetCurveToInDir(h.Curve);\r\n let cus: Curve[];\r\n if (h.Curve instanceof Circle)\r\n cus = h.Curve.GetOffsetCurves(knifRadius * dir);\r\n else\r\n cus = h.Curve.GetFeedingToolPath(knifRadius * dir);\r\n\r\n holeOffsetCus.push(...h.Curve.GetOffsetCurves(knifRadius * dir).filter(c => c.IsClose));\r\n\r\n holes.push(...this.GetContours(cus as Polyline[], offsetCus));\r\n }\r\n }\r\n\r\n let offsetDist = 0;\r\n\r\n let rectInfo = IsRect(outline);\r\n\r\n while (true)\r\n {\r\n if ((!isOut || offsetDist >= knifRadius) && rectInfo.isRect)\r\n offsetDist += knifRadius * 2;\r\n else\r\n offsetDist += knifRadius;\r\n\r\n let retCus: Curve[] = [];\r\n\r\n let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo);\r\n retCus.push(...tempOffsetCus);\r\n\r\n //最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心\r\n if (retCus.length === 0 && rectInfo.isRect && offsetDist > knifRadius)\r\n {\r\n offsetDist -= knifRadius;\r\n retCus.push(...GetOffsetCurves(outline, offsetDist * dir, rectInfo));\r\n }\r\n\r\n if (retCus.length === 0) break;\r\n //是否和孤岛相交\r\n let isInt = false;\r\n for (let c of retCus)\r\n {\r\n if (holes.length > 0)\r\n {\r\n isInt = holes.some(h => h.Curve.IntersectWith(c, 0).length > 0 || h.CuInOutline(c));\r\n if (isInt) break;\r\n }\r\n if (isOut && offsetDist === knifRadius)\r\n c.TempData = { isOut: true };\r\n offsetCus.push(c);\r\n }\r\n if (isInt)\r\n {\r\n //洞形状管理器\r\n let holesMg = new ShapeManager();\r\n if (isOut)\r\n holes = Shape.mergeContours(holes, false); //#I1MUQD 正好擦边的孔不合并\r\n holesMg.AppendShapeList(holes.map(h => new Shape(h)));\r\n let shapeMg = new ShapeManager();\r\n let cons = this.GetContours(retCus as Polyline[], offsetCus);\r\n shapeMg.AppendShapeList(cons.map(c => new Shape(c)));\r\n shapeMg.BoolOper(holesMg, BoolOpeartionType.Subtract);\r\n for (let s of shapeMg.ShapeList)\r\n {\r\n if (isOut && tempOffsetCus.length > 1)\r\n s.Outline.Curve.TempData = { isOut: true };\r\n offsetCus.push(...this.HandleShape(s, knifRadius, false));\r\n }\r\n break;\r\n }\r\n }\r\n let vailHoles: Contour[] = [];\r\n\r\n for (let i = 0; i < holes.length; i++)\r\n {\r\n let h = holes[i];\r\n //如果加工洞外圈和最外轮廓相交,则去掉\r\n if (h.Curve.IntersectWith(outline, 0).length > 0)\r\n continue;\r\n let isVail = true;\r\n //若最外轮廓内偏移一个刀半径的曲线 和最内轮廓相交或者被包含,则去掉.且不与洞曲线相等\r\n if (isOut)\r\n {\r\n let outlineOffsetCus = outline.GetOffsetCurves(dir * knifRadius).filter(c => c.IsClose) as Curve[];\r\n let outlineCus = GetOffsetCurves(outline, dir * knifRadius).filter(c => c.IsClose) as Curve[];;\r\n let ho = holeOffsetCus[i];\r\n let maxArea = Math.max(...(outlineOffsetCus.map(c => c.Area)));\r\n for (let j = 0; j < outlineOffsetCus.length; j++)\r\n {\r\n let c = outlineOffsetCus[j];\r\n if (h.Curve.IntersectWith(outlineCus[j], 0).length > 0)\r\n {\r\n if (!(equalCurve(ho, c) || isTargetCurInOrOnSourceCur(c as Polyline, h.Curve)))\r\n {\r\n isVail = false;\r\n break;\r\n }\r\n else if (isTargetCurInOrOnSourceCur(h.Curve, c as Polyline))\r\n {\r\n offsetCus.push(c);\r\n isVail = false;\r\n break;\r\n }\r\n }\r\n else if (ho.Area > maxArea)\r\n {\r\n isVail = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (isVail)\r\n vailHoles.push(h);\r\n }\r\n\r\n offsetCus.push(...vailHoles.map(h => h.Curve));\r\n return offsetCus;\r\n }\r\n /**用于测试走刀路径 */\r\n TestCalcPath(br: Board, isCd = false)\r\n {\r\n let modelings = br.BoardModeling;\r\n let allModeling = GetModelingFromCustomDrill(br);\r\n modelings.push(...allModeling.modeling);\r\n if (isCd && userConfig.chaidanOption.useDefaultRad)\r\n modelings.forEach(m => m.knifeRadius = userConfig.chaidanOption.radius);\r\n if (isCd)\r\n arrayRemoveIf(modelings, m =>\r\n {\r\n let c = m.shape.Outline.Curve;\r\n if (c instanceof Circle && c.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6)\r\n return true;\r\n return false;\r\n });\r\n\r\n return this.CalcPath(modelings, br);\r\n }\r\n /**\r\n * 计算走刀路径\r\n */\r\n CalcPath(modelings: IModeling[], br: Board): Curve[]\r\n {\r\n let cus: Curve[] = [];\r\n for (let m of modelings)\r\n {\r\n cus.push(...this.GetModelFeedPath(br, m));\r\n }\r\n return cus;\r\n }\r\n GetModelFeedPath(br: Board, m: IModeling): Curve[]\r\n {\r\n const brThickness = br.Thickness;\r\n let cus: Curve[] = [];\r\n let { shape, thickness, knifeRadius, addLen, addWidth, addDepth } = m;\r\n if (!knifeRadius) knifeRadius = 3;\r\n if (addDepth)\r\n thickness += addDepth;\r\n shape = shape.Clone();\r\n shape.Z0();\r\n this.GrooveAddSize(shape, addLen, addWidth);\r\n this.HandleThoughGroove(br, shape, knifeRadius);\r\n\r\n //造型半径和刀半径相等,返回重合点的线\r\n let outline = shape.Outline.Curve;\r\n if (outline instanceof Circle && equaln(outline.Radius, m.knifeRadius))\r\n return [new Polyline([{ pt: AsVector2(outline.Center), bul: 0 }, { pt: AsVector2(outline.Center), bul: 0 }])];\r\n\r\n if (thickness >= brThickness)\r\n {\r\n //通孔只切一刀\r\n let dir = GetCurveToInDir(outline);\r\n let paths: Curve[];\r\n if (outline instanceof Circle)\r\n outline = ConverCircleToPolyline(outline);\r\n\r\n paths = outline.GetFeedingToolPath(dir * knifeRadius);\r\n for (let path of paths)\r\n {\r\n if (dir < 0)\r\n path.Reverse();\r\n\r\n // 有些走刀会变成一条线,或者某些地方退化成线,这个时候这个判断是错误的\r\n // if (!path.IsClockWise)\r\n // throw \"程序错误:全深网洞加工数据并不为逆时针!\";\r\n }\r\n cus.push(...paths);\r\n }\r\n else\r\n {\r\n let offsetCus = this.HandleShape(shape, knifeRadius);\r\n if (offsetCus.length > 1)\r\n cus.push(...OptimizeToolPath(offsetCus, shape, knifeRadius));\r\n }\r\n return cus;\r\n }\r\n private GrooveAddSize(shape: Shape, addLen: number, addWidth: number)\r\n {\r\n shape.Outline.Curve.Position = shape.Outline.Curve.Position.setZ(0);\r\n //若是矩形,应用槽加长\r\n if (addLen > 0 || addWidth > 0)\r\n {\r\n let curveData = IsRect(shape.Outline.Curve);\r\n if (curveData.isRect)\r\n {\r\n let box = curveData.box;\r\n let size = curveData.size;\r\n if (size.x > size.y)\r\n {\r\n box.max.add(new Vector3(addLen / 2, addWidth / 2));\r\n box.min.add(new Vector3(-addLen / 2, -addWidth / 2));\r\n }\r\n else\r\n {\r\n box.max.add(new Vector3(addWidth / 2, addLen / 2));\r\n box.min.add(new Vector3(-addWidth / 2, -addLen / 2));\r\n }\r\n let pl = new Polyline().RectangleFrom2Pt(box.min, box.max).ApplyMatrix(curveData.OCS);\r\n shape.Outline = Contour.CreateContour(pl);\r\n }\r\n }\r\n }\r\n private GetContours(cus: (Polyline | Circle)[], retCus: Curve[])\r\n {\r\n let cons: Contour[] = [];\r\n for (let c of cus)\r\n {\r\n if (c.IsClose)\r\n {\r\n cons.push(Contour.CreateContour(c));\r\n }\r\n else\r\n {\r\n let expCus = c.Explode() as Curve[];\r\n let regParse = new RegionParse(expCus);\r\n\r\n //分析封闭包围区域\r\n const parseRoute = (routeSet: Array[]) =>\r\n {\r\n for (let routes of routeSet)\r\n {\r\n let cs: Curve[] = routes.map(r => r.curve);\r\n let c = Contour.CreateContour(cs, false);\r\n if (c && c.Area > 1e-3)\r\n cons.push(c);\r\n }\r\n };\r\n parseRoute(regParse.RegionsOutline);\r\n parseRoute(regParse.RegionsInternal);\r\n for (let c of expCus)\r\n {\r\n if (!regParse.GetCueveUsed(c))\r\n {\r\n retCus.push(c);\r\n }\r\n }\r\n\r\n }\r\n }\r\n return cons;\r\n }\r\n CheckModeling(br: Board)\r\n {\r\n let errorIndexs: number[] = [];\r\n let modelings = br.BoardModeling;\r\n for (let i = 0; i < modelings.length; i++)\r\n {\r\n if (userConfig.chaidanOption.useDefaultRad)\r\n modelings[i].knifeRadius = userConfig.chaidanOption.radius;\r\n let cus = this.GetModelFeedPath(br, modelings[i]);\r\n if (cus.length === 0)\r\n errorIndexs.push(i);\r\n }\r\n return errorIndexs;\r\n }\r\n CheckCustomHole(br: Board)\r\n {\r\n let { modeling, sideModeling } = GetModelingFromCustomDrill(br);\r\n\r\n let errHoles: ExtrudeHole[] = [];\r\n\r\n for (let m of [...modeling, ...sideModeling])\r\n {\r\n let cu = m.shape.Outline.Curve;\r\n if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6)\r\n continue;\r\n if (userConfig.chaidanOption.useDefaultRad)\r\n m.knifeRadius = userConfig.chaidanOption.radius;\r\n let cus = this.GetModelFeedPath(br, m);\r\n if (cus.length === 0)\r\n errHoles.push(m.originEn);\r\n }\r\n\r\n return errHoles;\r\n }\r\n HandleThoughGroove(br: Board, shape: Shape, knifeRadius: number)\r\n {\r\n let brCon = br.ContourCurve;\r\n let outline = shape.Outline.Curve;\r\n if (outline instanceof Circle) return;\r\n\r\n let cus = outline.Explode();\r\n MergeCurvelist(cus);\r\n let hasChange = false;\r\n let curveBak: Curve;\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let c = cus[i];\r\n if (c instanceof Line)\r\n {\r\n let mp = (curveBak ?? c).Midpoint;\r\n curveBak = undefined;\r\n if (brCon.PtOnCurve(mp))\r\n {\r\n hasChange = true;\r\n let cs = c.GetOffsetCurves(knifeRadius);\r\n cus[i] = cs[0];\r\n let fline = cus[FixIndex(i - 1, cus.length)];\r\n\r\n let isAddLine = false;\r\n\r\n if (fline instanceof Line)\r\n {\r\n let intPts = fline.IntersectWith2(cs[0], 3);\r\n if (intPts.length === 0)\r\n {\r\n console.error(\"未知错误情况\");\r\n return;\r\n }\r\n\r\n if (intPts[0].thisParam >= 0 && intPts[0].argParam <= 1)\r\n {\r\n fline.EndPoint = intPts[0].pt;\r\n cs[0].StartPoint = intPts[0].pt;\r\n }\r\n else\r\n {\r\n isAddLine = true;\r\n }\r\n }\r\n else\r\n {\r\n isAddLine = true;\r\n }\r\n\r\n if (isAddLine)\r\n {\r\n let newLine = new Line(fline.EndPoint, cs[0].StartPoint);\r\n if (i === 0)\r\n {\r\n cus.push(newLine);\r\n }\r\n else\r\n {\r\n cus.splice(i, 0, newLine);\r\n i++;\r\n }\r\n }\r\n\r\n let backLine = cus[FixIndex(i + 1, cus.length)];\r\n\r\n isAddLine = false;\r\n\r\n if (backLine instanceof Line)\r\n {\r\n let intPts = backLine.IntersectWith2(cs[0], 3);\r\n if (intPts.length === 0)\r\n {\r\n if (LogEnable.Display)\r\n console.error(\"未知错误情况\");\r\n return;\r\n }\r\n\r\n if (intPts[0].thisParam <= 1 && intPts[0].argParam >= 0)\r\n {\r\n curveBak = backLine.Clone();\r\n backLine.StartPoint = intPts[0].pt;\r\n cs[0].EndPoint = intPts[0].pt;\r\n }\r\n else\r\n {\r\n isAddLine = true;\r\n }\r\n }\r\n else\r\n {\r\n isAddLine = true;\r\n }\r\n if (isAddLine)\r\n {\r\n let newLine = new Line(cs[0].EndPoint, backLine.StartPoint);\r\n if (i + 1 === cus.length)\r\n {\r\n cus.unshift(newLine);\r\n }\r\n else\r\n {\r\n cus.splice(i + 1, 0, newLine);\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (hasChange)\r\n {\r\n let con = Contour.CreateContour(Polyline.Combine(cus));\r\n if (con)\r\n shape.Outline = con;\r\n else\r\n console.error(\"错误\");\r\n }\r\n }\r\n}\r\nexport function GetModelingFromCustomDrill(br: Board)\r\n{\r\n let normal = br.Normal;\r\n let outline = GetSealedBoardContour(br, true) as Polyline;\r\n\r\n let modeling: (IModeling & { originEn: ExtrudeHole; })[] = [];\r\n let sideModeling: (IModeling & { originEn: ExtrudeHole; })[] = [];\r\n\r\n const holes: ExtrudeHole[] = [];\r\n let bbox = br.BoundingBoxInOCS;\r\n\r\n let holeBoxMap = new WeakMap();\r\n\r\n for (let [, idss] of br.DrillList)\r\n {\r\n for (let ids of idss)\r\n {\r\n for (let id of ids)\r\n {\r\n if (id?.Object && !id.Object.IsErase && id.Object instanceof ExtrudeHole && id.Object.isHole)\r\n {\r\n if (!(id.Object.ContourCurve instanceof Circle))\r\n {\r\n let en = id.Object as ExtrudeHole;\r\n let enBox = en.GetBoundingBoxInMtx(br.OCSInv);\r\n holeBoxMap.set(en, enBox);\r\n if (enBox.clone().intersect(bbox).isSolid(0.1))\r\n holes.push(id.Object);\r\n }\r\n }\r\n else break;\r\n }\r\n }\r\n }\r\n\r\n\r\n for (let en of holes)\r\n {\r\n let box = holeBoxMap.get(en);\r\n let max = box.max;\r\n let min = box.min;\r\n let dir: FaceDirection;\r\n let shape = en.Shape;\r\n let diff = br.OCSInv.multiply(en.OCS);\r\n shape.ApplyMatrix(diff);\r\n let thickness: number;\r\n if (isParallelTo(normal, en.Normal))\r\n {\r\n if (min.z > br.Thickness - 1e-6) continue;\r\n\r\n //在板件的世界,0.01的误差应该不能被看出来,所以我们允许0.01的容差(这样应该是没问题的)\r\n //也避免了一些二维转三维出现的缝隙排钻不能被拆解的问题\r\n if (max.z >= br.Thickness - 1e-2)//较大的容差(0.01)\r\n {\r\n dir = FaceDirection.Front;\r\n shape.Position = shape.Position.setZ(min.z);\r\n thickness = br.Thickness - min.z;\r\n }\r\n else if (min.z < 1e-2)//较大的容差\r\n {\r\n dir = FaceDirection.Back;\r\n thickness = max.z;\r\n }\r\n else\r\n continue;\r\n\r\n if (thickness > +1e-6 && isTargetCurInOrOnSourceCur(outline, shape.Outline.Curve.Clone().Z0()))\r\n {\r\n modeling.push({\r\n shape,\r\n thickness,\r\n dir,\r\n knifeRadius: en.KnifeRadius,\r\n addLen: 0,\r\n originEn: en,\r\n });\r\n }\r\n }\r\n else\r\n {\r\n if (min.z <= 0 || max.z >= br.Thickness) continue;\r\n let spt = en.Position.applyMatrix4(br.OCSInv).setZ(0);\r\n\r\n if (outline.PtOnCurve(spt)) continue;\r\n let line = new Line(spt, en.Position.add(en.Normal.multiplyScalar(en.Height)).applyMatrix4(br.OCSInv).setZ(0));\r\n let pt = outline.IntersectWith(line, 0)[0];\r\n if (!pt) continue;\r\n\r\n let index = Math.floor(outline.GetParamAtPoint(pt));\r\n let thickness = line.StartPoint.distanceTo(pt);\r\n\r\n let shape = en.Shape.ApplyMatrix(en.OCS).ApplyMatrix(br.OCSInv);\r\n let vec = line.GetFistDeriv(0).normalize().multiplyScalar(thickness);\r\n shape.Position = shape.Position.add(vec);\r\n\r\n let cu = outline.GetCurveAtIndex(index);\r\n\r\n shape.ApplyMatrix(new Matrix4().getInverse(GetSideFaceMtx(cu)));\r\n sideModeling.push({\r\n shape,\r\n thickness,\r\n dir: index,\r\n knifeRadius: en.KnifeRadius,\r\n addLen: 0,\r\n originEn: en,\r\n });\r\n }\r\n }\r\n\r\n return { modeling, sideModeling };\r\n}\r\n","export const ReportFunctionList: ((msg: string) => void)[] = [];\n\nexport function SendReport(msg: string)\n{\n for (let f of ReportFunctionList)\n f(msg);\n}\n","import { Object3D } from \"three\";\nimport { Entity } from \"../DatabaseServices/Entity/Entity\";\n\nexport const ShowObjectsFunctionList: ((ens: (Entity[]) | Object3D[]) => void)[] = [];\n\nexport function ShowSelectObjects(ens: (Entity[]) | Object3D[])\n{\n for (let f of ShowObjectsFunctionList)\n f(ens);\n}\n","\r\nexport function IsDev()\r\n{\r\n return window.location.hostname === \"localhost\";\r\n}\r\n\r\nexport function IsTest()\r\n{\r\n return window.location.hostname === \"localhost\" || window.location.hostname === \"t.cfcad.cn\";\r\n}\r\n","import { Box3, Matrix4, Vector2, Vector3 } from \"three\";\r\nimport { lookOverBoardInfosTool } from \"../Add-on/LookOverBoardInfos/LookOverBoardInfosTool\";\r\nimport { arrayLast } from \"../Common/ArrayExt\";\r\nimport { EBoardKeyList } from \"../Common/BoardKeyList\";\r\nimport { MergeCurvelist } from \"../Common/CurveUtils\";\r\nimport { ParseExpr, safeEval } from \"../Common/eval\";\r\nimport { Vector2ApplyMatrix4 } from \"../Common/Matrix4Utils\";\r\nimport { FixedNotZero, LINK_FUZZ } from \"../Common/Utils\";\r\nimport { CylinderHole, GangDrillType } from \"../DatabaseServices/3DSolid/CylinderHole\";\r\nimport { ExtrudeHole } from \"../DatabaseServices/3DSolid/ExtrudeHole\";\r\nimport { Hole } from \"../DatabaseServices/3DSolid/Hole\";\r\nimport { Arc } from \"../DatabaseServices/Entity/Arc\";\r\nimport { Board, IModeling, I2DModeingItem, IKnifeInfo } from \"../DatabaseServices/Entity/Board\";\r\nimport { Circle } from \"../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { ExtureContourCurve } from \"../DatabaseServices/Entity/Extrude\";\r\nimport { Line } from \"../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { HardwareCompositeEntity } from \"../DatabaseServices/Hardware/HardwareCompositeEntity\";\r\nimport { HardwareTopline } from \"../DatabaseServices/Hardware/HardwareTopline\";\r\nimport { userConfig } from \"../Editor/UserConfig\";\r\nimport { Vec2 } from \"../Geometry/CheckIntersect\";\r\nimport { angleTo, AsVector2, equaln, equalv3, isParallelTo, MoveMatrix, XAxis, equalv2, IsBetweenA2B, isIntersect2 } from \"../Geometry/GeUtils\";\r\nimport { GetBoardHighSeal, GetBoardSealingCurves, GetSealedBoardContour as GetSealedBoardContour } from \"../GraphicsSystem/CalcEdgeSealing\";\r\nimport { FeedingToolPath, GetModelingFromCustomDrill } from \"../GraphicsSystem/ToolPath/FeedingToolPath\";\r\nimport { EMetalsType, IHardwareOption, IToplineOption } from \"../UI/Components/RightPanel/RightPanelInterface\";\r\nimport { BoardOpenDir, FaceDirection, IHighSealedItem } from \"../UI/Store/BoardInterface\";\r\nimport { Entity } from './../DatabaseServices/Entity/Entity';\r\nimport { ICompHardwareOption } from './../UI/Components/RightPanel/RightPanelInterface';\r\nimport { CanDrawHoleFuzz } from \"../Geometry/DrillParse/BoardGetFace\";\r\nimport { Intent, Toaster } from \"../Common/Toaster\";\r\nimport { SendReport } from \"../Common/Report\";\r\nimport { ShowSelectObjects } from \"../Common/ShowSelectObjects\";\r\nimport { IsDev } from \"../Common/Deving\";\r\n\r\n\r\n/**轮廓数据 */\r\nexport interface IContourData\r\n{\r\n pts: Vec2[];\r\n buls: number[];\r\n}\r\nexport interface I3DContourData\r\n{\r\n pts: Vector3[];\r\n buls: number[];\r\n}\r\nexport type IHardwareType = HardwareTopline | HardwareCompositeEntity;\r\n\r\nexport interface ISealingData extends IHighSealedItem\r\n{\r\n length: number;\r\n type?: string;\r\n shop?: string;\r\n}\r\nexport interface IModelingData\r\n{\r\n feeding: IContourData[];\r\n thickness: number;\r\n dir: FaceDirection | number;\r\n knifeRadius: number;\r\n}\r\n\r\nexport enum DrillingFace\r\n{\r\n //正反面时,使用Front和Back\r\n Front = 0,\r\n Back = 1,\r\n}\r\n\r\nexport interface IDrillingOption\r\n{\r\n position: Vector3;\r\n radius: number;\r\n type: GangDrillType;\r\n depth: number;\r\n face: DrillingFace;\r\n endPt?: Vector3;\r\n angle?: number;\r\n}\r\n\r\nexport interface IBoardHoleInfo\r\n{\r\n frontBackHoles: IDrillingOption[];\r\n sideHoles: IDrillingOption[];\r\n}\r\n\r\ninterface IBoardProdInfo\r\n{\r\n id: number;\r\n name: string;\r\n [EBoardKeyList.RoomName]: string;\r\n [EBoardKeyList.CabinetName]: string;\r\n [EBoardKeyList.Mat]: string;\r\n [EBoardKeyList.BrMat]: string;\r\n [EBoardKeyList.Color]: string;\r\n [EBoardKeyList.Lines]: number;\r\n [EBoardKeyList.DrillType]: string;\r\n spliteHeight: string;\r\n spliteThickness: string;\r\n spliteWidth: string;\r\n\r\n isRect: boolean;\r\n remarks: [string, string][];\r\n kaiLiaoWidth: number;\r\n kaiLiaoHeight: number;\r\n openDir: BoardOpenDir;\r\n}\r\n\r\nexport interface I2DModeling\r\n{\r\n path: IContourData;\r\n dir: FaceDirection;\r\n items: I2DModeingItem[];\r\n}\r\nexport interface I3DModeling\r\n{\r\n path: I3DContourData;\r\n dir: FaceDirection;\r\n knife: IKnifeInfo;\r\n}\r\n\r\n/**拆单数据 */\r\nexport interface ISpliteOrderData\r\n{\r\n info: IBoardProdInfo; //板件基本信息\r\n outline: IContourData; //拆单轮廓信息\r\n sealing: ISealingData[]; //封边信息\r\n modeling: IModelingData[]; //造型信息\r\n holes: IBoardHoleInfo; //孔信息\r\n sideModeling: IModelingData[]; //侧面造型信息\r\n offsetTanslation: Vector3;\r\n originOutlin: IContourData; //不扣封边拆单原始轮廓\r\n metalsData?: { metals: number, comp: number; }; //板件五金\r\n boardContour: IContourData; //板件轮廓\r\n originModelingData: { sideModeling: IOriginModelingData[], modeling: IOriginModelingData[]; };\r\n modeling2D: I2DModeling[];\r\n modeling3D: I3DModeling[];\r\n}\r\n\r\nexport interface IBoardMetalsData\r\n{\r\n metals: ISpliteHardwareData[];\r\n comp: ISpliteHardwareData[];\r\n}\r\n\r\nexport interface ISpliteHardwareData\r\n{\r\n metalsOption: IHardwareOption;\r\n dataList: [string, string][];\r\n children: ISpliteHardwareData[];\r\n length?: number;\r\n size: Vector3;\r\n}\r\n\r\nexport interface IOriginModelingData\r\n{\r\n outline: IContourData,\r\n holes: IContourData[];\r\n thickness: number;\r\n dir: FaceDirection | number;\r\n knifeRadius: number;\r\n}\r\n\r\n\r\nexport namespace Production\r\n{\r\n /**获取板件拆单数据 */\r\n export function GetBoardSplitOrderData(br: Board): ISpliteOrderData | undefined\r\n {\r\n let sealedContour = GetSealedBoardContour(br, true);\r\n if (!sealedContour || equaln(sealedContour.Area, 0))\r\n {\r\n Toaster({\r\n message: br.Name + \" 轮廓错误,可能存在轮廓自交,请检查后重新拆单\",\r\n timeout: 8000,\r\n intent: Intent.DANGER,\r\n });\r\n Report([br], br.Name + \" 轮廓错误\");\r\n return undefined;\r\n }\r\n let outline = GetSealedBoardContour(br, false);\r\n\r\n if (!outline || equaln(outline.Area, 0))\r\n {\r\n Toaster({\r\n message: br.Name + \"扣除封边轮廓有误,请检查后重新拆单\",\r\n timeout: 8000,\r\n intent: Intent.DANGER,\r\n });\r\n Report([br], br.Name + \"扣除封边轮廓有误\");\r\n return;\r\n }\r\n\r\n let offsetTanslation = outline.BoundingBox.min;\r\n outline.Position = outline.Position.sub(offsetTanslation);\r\n let outlinePtsBul = ConverToPolylineAndSplitArc(outline);\r\n //外轮廓去掉最后的闭合点\r\n outlinePtsBul.pts.pop();\r\n outlinePtsBul.buls.pop();\r\n let size = outline.BoundingBox.getSize(new Vector3);\r\n\r\n //不扣除封边的轮廓信息\r\n let originOutlinePtsBul = ConverToPolylineAndSplitArc(sealedContour);\r\n originOutlinePtsBul.pts.pop();\r\n originOutlinePtsBul.buls.pop();\r\n\r\n let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation);\r\n\r\n let boardContour: IContourData;\r\n if (GetSpiteSize(br))\r\n boardContour = ConverToPolylineAndSplitArc(br.ContourCurve);\r\n\r\n return {\r\n info: GetBoardInfo(br, size),\r\n originOutlin: originOutlinePtsBul,\r\n outline: outlinePtsBul,\r\n sealing: GetBoardSealingData(br),\r\n modeling,\r\n holes: GetBoardHolesData(br, offsetTanslation, sealedContour),\r\n sideModeling,\r\n offsetTanslation,\r\n metalsData: GetBoardMetals(br),\r\n boardContour,\r\n originModelingData: GetOriginBoardModelingData(br),\r\n modeling2D: Get2DModeing(br, offsetTanslation),\r\n modeling3D: Get3DModeing(br, offsetTanslation),\r\n };\r\n }\r\n export function GetBoardInfo(br: Board, size: Vector3): IBoardProdInfo\r\n {\r\n let data = br.BoardProcessOption;\r\n\r\n let spliteSize = Production.GetSpiteSize(br);\r\n let isRect = !!spliteSize || !br.IsSpecialShape;\r\n\r\n return {\r\n id: br.Id.Index,\r\n name: br.Name,\r\n [EBoardKeyList.RoomName]: data[EBoardKeyList.RoomName],\r\n [EBoardKeyList.CabinetName]: data[EBoardKeyList.CabinetName],\r\n [EBoardKeyList.Mat]: data[EBoardKeyList.Mat],\r\n [EBoardKeyList.BrMat]: data[EBoardKeyList.BrMat],\r\n [EBoardKeyList.Color]: data[EBoardKeyList.Color],\r\n [EBoardKeyList.Lines]: data[EBoardKeyList.Lines],\r\n [EBoardKeyList.DrillType]: data[EBoardKeyList.DrillType],\r\n spliteHeight: spliteSize ? spliteSize.spliteHeight.toString() : \"\",\r\n spliteThickness: spliteSize ? spliteSize.spliteThickness.toString() : \"\",\r\n spliteWidth: spliteSize ? spliteSize.spliteWidth.toString() : \"\",\r\n isRect,\r\n remarks: data.remarks.slice(),\r\n kaiLiaoWidth: size.x,\r\n kaiLiaoHeight: size.y,\r\n openDir: br.OpenDir,\r\n };\r\n }\r\n\r\n /**\r\n * 转换成多段线并且将圆弧打断(大于1/4的话)\r\n */\r\n export function ConverToPolylineAndSplitArc(cu: Polyline | Circle, isOutline = true, isSplite = true): IContourData\r\n {\r\n let ptsBuls: { pts: Vector2[]; buls: number[]; };\r\n if (cu instanceof Circle)\r\n {\r\n let pl = ConverCircleToPolyline(cu);\r\n ptsBuls = pl.PtsBuls;\r\n }\r\n else\r\n {\r\n if (isOutline && cu.IsClose && cu.Normal.z * cu.Area2 < 0)\r\n cu.Reverse();\r\n if (isSplite)\r\n ptsBuls = SplitePolylineAtArc(cu);\r\n else\r\n ptsBuls = cu.PtsBuls;\r\n }\r\n let ocs = cu.OCS;\r\n if (!equaln(ocs.elements[0], 1)\r\n || !equaln(ocs.elements[9], 0)\r\n || !equaln(ocs.elements[10], 0)\r\n )\r\n {\r\n for (let i = 0; i < ptsBuls.pts.length; i++)\r\n {\r\n Vector2ApplyMatrix4(ocs, ptsBuls.pts[i]);\r\n ptsBuls.buls[i] *= cu.Normal.z;\r\n }\r\n }\r\n return ptsBuls;\r\n }\r\n\r\n export function ConverCircleToPolyline(cir: Circle): Polyline\r\n {\r\n let arcs = cir.GetSplitCurves([0, 0.25, 0.5, 0.75]);\r\n let pl = new Polyline();\r\n pl.OCS = cir.OCS;\r\n for (let arc of arcs)\r\n pl.Join(arc);\r\n return pl;\r\n }\r\n\r\n const SPLITBUL = Math.tan(Math.PI / 8);\r\n function GetSpliteCount(allAngle: number)\r\n {\r\n return Math.ceil(Math.abs(allAngle) / Math.PI * 2);\r\n }\r\n\r\n /** 打断多段线超过1/4圆的圆弧*/\r\n export function SplitePolylineAtArc(cu: Polyline, isSplite = true): { pts: Vector2[], buls: number[]; }\r\n {\r\n let ptsBuls = cu.PtsBuls;\r\n let ocsInv = cu.OCSInv;\r\n\r\n let result: { pts: Vector2[], buls: number[]; } = { pts: [], buls: [] };\r\n\r\n if (ptsBuls.pts.length === 0)\r\n return result;\r\n\r\n for (let i = 0; i < ptsBuls.buls.length - 1; i++)\r\n {\r\n let bul = ptsBuls.buls[i];\r\n if (Math.abs(bul) > SPLITBUL + 1e-8 && isSplite)\r\n {\r\n let allAngle = Math.atan(bul) * 4;\r\n let splitCount = GetSpliteCount(allAngle);\r\n let arc = cu.GetCurveAtIndex(i) as Arc;\r\n let paramDiv = 1 / splitCount;\r\n let newBul = Math.tan((allAngle / splitCount) / 4);\r\n for (let i = 0; i < splitCount; i++)\r\n {\r\n let param = i * paramDiv;\r\n let p = arc.GetPointAtParam(param).applyMatrix4(ocsInv);\r\n let p2 = AsVector2(p);\r\n //暂时不处理0长度段\r\n if (true || result.pts.length === 0 || !equalv2(p2, arrayLast(result.pts), 1e-2))\r\n {\r\n result.pts.push(p2);\r\n result.buls.push(newBul);\r\n }\r\n }\r\n }\r\n else\r\n {\r\n //暂时不处理0长度段\r\n if (true || result.pts.length === 0 || !equalv2(ptsBuls.pts[i], arrayLast(result.pts), 1e-2))\r\n {\r\n result.pts.push(ptsBuls.pts[i]);\r\n result.buls.push(ptsBuls.buls[i]);\r\n }\r\n }\r\n }\r\n\r\n result.pts.push(arrayLast(ptsBuls.pts));\r\n result.buls.push(arrayLast(ptsBuls.buls));\r\n\r\n //测试是否存在无效的边(0长度边)\r\n // for (let i = 1; i < result.pts.length; i++)\r\n // {\r\n // if (equalv2(result.pts[i], result.pts[i - 1], 0.01))\r\n // alert(\"存在无效的边\");\r\n // }\r\n\r\n return result;\r\n }\r\n export function SplitetArc(arc: Arc, hasEnd = false): { pts: Vector3[], buls: number[]; }\r\n {\r\n let result: { pts: Vector3[], buls: number[]; } = { pts: [], buls: [] };\r\n let bul = arc.Bul;\r\n\r\n if (Math.abs(bul) > SPLITBUL + 1e-8)\r\n {\r\n let allAngle = Math.atan(bul) * 4;\r\n let splitCount = GetSpliteCount(allAngle);\r\n\r\n let paramDiv = 1 / splitCount;\r\n let newBul = Math.tan((allAngle / splitCount) / 4);\r\n for (let i = 0; i < splitCount; i++)\r\n {\r\n let param = i * paramDiv;\r\n let p = arc.GetPointAtParam(param);\r\n\r\n result.pts.push(p);\r\n result.buls.push(newBul);\r\n }\r\n }\r\n else\r\n {\r\n result.pts.push(arc.StartPoint);\r\n result.buls.push(bul);\r\n }\r\n\r\n if (hasEnd)\r\n {\r\n result.pts.push(arc.EndPoint);\r\n result.buls.push(0);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * 获取封边数据\r\n * 封边数据未统一逆时针顺序,用于拆单\r\n * */\r\n export function GetBoardSealingData(br: Board): ISealingData[]\r\n {\r\n let sealCus = GetBoardSealingCurves(br);\r\n let highSeal = GetBoardHighSeal(br, sealCus);\r\n\r\n let sealData: ISealingData[] = [];\r\n\r\n for (let i = 0; i < sealCus.length; i++)\r\n {\r\n let sealCu = sealCus[i];\r\n let data = highSeal[i];\r\n let cus: Curve[] = [];\r\n if (sealCu instanceof Polyline)\r\n cus.push(...sealCu.Explode());\r\n else\r\n cus.push(sealCu);\r\n\r\n for (let cu of cus)\r\n {\r\n if (cu instanceof Line)\r\n {\r\n sealData.push(Object.assign({}, data, { length: cu.Length }));\r\n }\r\n else if (cu instanceof Arc)\r\n {\r\n let splitCount = GetSpliteCount(cu.AllAngle);\r\n let len = 2 * Math.PI * cu.Radius / 4;\r\n for (let i = 0; i < splitCount; i++)\r\n {\r\n let arcLen = i !== splitCount - 1 ? len : cu.Length - (splitCount - 1) * len;\r\n if (!equaln(arcLen, 0))\r\n sealData.push(Object.assign({}, data, { length: arcLen }));\r\n }\r\n }\r\n else if (cu instanceof Circle)\r\n {\r\n let length = 2 * Math.PI * cu.Radius / 4;\r\n sealData.push(...Array.from({ length: 4 }, () =>\r\n {\r\n return { ...data, length };\r\n }));\r\n }\r\n }\r\n }\r\n if (br.ContourCurve instanceof Polyline && br.ContourCurve.Area2 < 0)\r\n sealData.reverse();\r\n return sealData;\r\n }\r\n\r\n export function GetMetalTotalEntitys(md: HardwareCompositeEntity, isHole = false, filter?: (e: Entity) => boolean)\r\n {\r\n let holes: Entity[] = [];\r\n if (isHole && !md.HardwareOption.isHole) return [];\r\n\r\n for (let e of md.Entitys)\r\n {\r\n if (e instanceof HardwareCompositeEntity)\r\n {\r\n if (!isHole || md.HardwareOption.isHole)\r\n holes.push(...GetMetalTotalEntitys(e, isHole, filter).map(h => h.ApplyMatrix(md.OCS)));\r\n }\r\n else\r\n {\r\n if (!filter || filter(e))\r\n {\r\n holes.push(e.Clone().ApplyMatrix(md.OCS));\r\n }\r\n }\r\n }\r\n return holes;\r\n }\r\n export function GetOriginBoardModelingData(br: Board)\r\n {\r\n const getModelings = (ms: IModeling[]): IOriginModelingData[] =>\r\n {\r\n let data: IOriginModelingData[] = [];\r\n\r\n for (let m of ms)\r\n {\r\n let cu = m.shape.Outline.Curve;\r\n if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6)\r\n continue;\r\n if (userConfig.chaidanOption.useDefaultRad)\r\n m.knifeRadius = userConfig.chaidanOption.radius;\r\n\r\n data.push({\r\n outline: ConverToPolylineAndSplitArc(cu.Clone(), false, false),\r\n holes: m.shape.Holes.map(h => ConverToPolylineAndSplitArc(h.Curve.Clone(), false, false)),\r\n thickness: m.thickness + (m.addDepth ?? 0),\r\n dir: m.dir,\r\n knifeRadius: m.knifeRadius,\r\n });\r\n\r\n }\r\n return data;\r\n };\r\n\r\n let allModeling = GetModelingFromCustomDrill(br);\r\n\r\n let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling]);\r\n\r\n let sideModeling = getModelings(allModeling.sideModeling);\r\n\r\n return { modeling, sideModeling };\r\n }\r\n export function GetBoardModelingData(br: Board, offsetTanslation: Vector3)\r\n {\r\n const tool = FeedingToolPath.GetInstance() as FeedingToolPath;\r\n const tMtx = MoveMatrix(offsetTanslation.clone().negate());\r\n const getModelings = (ms: IModeling[], isSide: boolean): IModelingData[] =>\r\n {\r\n let data: IModelingData[] = [];\r\n\r\n for (let m of ms)\r\n {\r\n let cu = m.shape.Outline.Curve;\r\n if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6)\r\n continue;\r\n if (userConfig.chaidanOption.useDefaultRad)\r\n m.knifeRadius = userConfig.chaidanOption.radius;\r\n let paths = tool.GetModelFeedPath(br, m);\r\n if (!isSide)\r\n paths.forEach(path => path.ApplyMatrix(tMtx));\r\n\r\n let feeding = paths.map((c: ExtureContourCurve) => ConverToPolylineAndSplitArc(c, false));\r\n if (feeding.length > 0)\r\n data.push({\r\n feeding,\r\n thickness: m.thickness + (m.addDepth ?? 0),\r\n dir: m.dir,\r\n knifeRadius: m.knifeRadius,\r\n });\r\n else\r\n {\r\n Toaster({\r\n message: \"板件有造型或者自定义排钻无法加工,请运行造型检测命令确认\",\r\n timeout: 5000,\r\n intent: Intent.DANGER,\r\n key: \"造型加工错误\"\r\n });\r\n }\r\n }\r\n return data;\r\n };\r\n\r\n let allModeling = GetModelingFromCustomDrill(br);\r\n\r\n let modeling = getModelings([...br.BoardModeling, ...allModeling.modeling], false).filter(f => f.feeding.length > 0);\r\n\r\n let sideModeling = getModelings(allModeling.sideModeling, true).filter(f => f.feeding.length > 0);\r\n\r\n return { modeling, sideModeling };\r\n }\r\n\r\n /**获取板件的轮廓\r\n *有拆单尺寸返回矩形\r\n *用于拆单的轮廓统一逆时针 */\r\n export function GetSpliteOutline(br: Board, isSplite: boolean): ExtureContourCurve | undefined\r\n {\r\n let con: ExtureContourCurve = GetSpliteOutlineBySpliteSize(br);\r\n if (con)\r\n return con;\r\n\r\n con = br.ContourCurve;\r\n if (con instanceof Circle)\r\n {\r\n return con;\r\n }\r\n let cus = con.Explode();\r\n MergeCurvelist(cus);\r\n let pl = Polyline.FastCombine(cus, LINK_FUZZ);\r\n if (pl && isSplite && pl.Area2 < 0)\r\n pl.Reverse();\r\n return pl;\r\n }\r\n export function GetSpiteSize(br: Board)\r\n {\r\n let param = { L: br.Height, W: br.Width, H: br.Thickness };\r\n let spliteHeight = safeEval(br.BoardProcessOption.spliteHeight, param);\r\n let spliteWidth = safeEval(br.BoardProcessOption.spliteWidth, param);\r\n let spliteThickness = safeEval(br.BoardProcessOption.spliteThickness, param);\r\n if (spliteHeight && spliteWidth && spliteThickness)\r\n return {\r\n spliteHeight, spliteWidth, spliteThickness\r\n };\r\n else\r\n return;\r\n }\r\n\r\n export function GetSpliteOutlineBySpliteSize(br: Board)\r\n {\r\n let size = GetSpiteSize(br);\r\n\r\n if (size)\r\n return new Polyline().RectangleFrom2Pt(new Vector3, new Vector3(size.spliteWidth, size.spliteHeight));\r\n return null;\r\n }\r\n\r\n /**孔信息,侧孔的z 均为 从上到下距离 */\r\n export function GetBoardHolesData(br: Board, offsetTanslation: Vector3, sealedContour: ExtureContourCurve): IBoardHoleInfo\r\n {\r\n let data: IBoardHoleInfo = {\r\n frontBackHoles: [],\r\n sideHoles: []\r\n };\r\n let brNormal = br.Normal;\r\n\r\n // 性能优化的解析板件网洞类\r\n // new ParseBoardHoleData(br, offsetTanslation, sealedContour);\r\n\r\n for (let [, driss] of br.DrillList)\r\n {\r\n for (let dris of driss)\r\n {\r\n for (let dId of dris)\r\n {\r\n if (!dId || dId.IsErase)\r\n continue;\r\n let d = dId.Object as CylinderHole;\r\n if (d instanceof ExtrudeHole)\r\n ParseExtrudeHoles(d, br, offsetTanslation, data, sealedContour);\r\n else\r\n ParseCylHoles(d, br, offsetTanslation, data, sealedContour);\r\n }\r\n }\r\n }\r\n\r\n if (br.RelativeHardware)\r\n {\r\n for (let dId of br.RelativeHardware)\r\n {\r\n if (dId.IsErase) continue;\r\n let d = dId.Object;\r\n let holes: Hole[] = [];\r\n if (d instanceof HardwareCompositeEntity)\r\n {\r\n holes.push(...GetMetalTotalEntitys(d, true, (e) => e instanceof Hole) as Hole[]);\r\n }\r\n for (let h of holes)\r\n {\r\n if (h instanceof ExtrudeHole)\r\n ParseExtrudeHoles(h, br, offsetTanslation, data, sealedContour, true);\r\n else\r\n ParseCylHoles(h as CylinderHole, br, offsetTanslation, data, sealedContour);\r\n }\r\n }\r\n }\r\n\r\n let modelings = br.BoardModeling;\r\n for (let nid of br.LayerNails)\r\n {\r\n if (!nid || !nid.Object || nid.IsErase)\r\n continue;\r\n let nail = nid.Object as CylinderHole;\r\n if (!isParallelTo(nail.Normal, brNormal)) continue;\r\n\r\n let sp = nail.Position.applyMatrix4(br.OCSInv);\r\n let nor = nail.Normal.multiplyScalar(nail.Height);\r\n let ep = nail.Position.add(nor).applyMatrix4(br.OCSInv);\r\n let [z0, z1] = sp.z < ep.z ? [sp.z, ep.z] : [ep.z, sp.z];\r\n\r\n if (\r\n Math.max(z0, 0) < Math.min(z1, br.Thickness) - 1e-6\r\n && br.ContourCurve.PtInCurve(sp.setZ(0))\r\n && modelings.every(m => !m.shape.Outline.Curve.PtInCurve(sp))\r\n )\r\n {\r\n let face = !equalv3(nail.Normal, brNormal, 1e-3) ? DrillingFace.Front : DrillingFace.Back;\r\n let depth = Math.min(z1, br.Thickness) - Math.max(z0, 0);\r\n\r\n data.frontBackHoles.push({\r\n type: nail.Type,\r\n position: sp.sub(offsetTanslation),\r\n radius: nail.Radius,\r\n depth,\r\n face,\r\n });\r\n }\r\n }\r\n\r\n for (let m of modelings)\r\n {\r\n let cu = m.shape.Outline.Curve;\r\n if (cu instanceof Circle && cu.Radius < userConfig.chaidanOption.modeling2HoleRad + 1e-6)\r\n {\r\n let center = cu.Center.setZ(0).sub(offsetTanslation);\r\n data.frontBackHoles.push(\r\n {\r\n type: GangDrillType.Pxl,\r\n position: center,\r\n radius: cu.Radius,\r\n depth: m.thickness,\r\n face: m.dir as number\r\n }\r\n );\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n /**拆单那边需要把侧孔 z 坐标转换为从上到下 */\r\n function InvertPosition(pos: Vector3, thickness: number)\r\n {\r\n pos.z = thickness - pos.z;\r\n }\r\n /**分析常规排钻 */\r\n function ParseCylHoles(d: CylinderHole, br: Board, offsetTanslation: Vector3, data: IBoardHoleInfo, outline: ExtureContourCurve)\r\n {\r\n let processData = br.BoardProcessOption;\r\n let brNormal = br.Normal;\r\n let roMat = new Matrix4().extractRotation(br.OCSInv);\r\n let position = d.Position.applyMatrix4(br.OCSInv);\r\n let holes = data.frontBackHoles;\r\n let face: number;\r\n let isPush = false;\r\n let endPt: Vector3;\r\n let depth = d.Height;\r\n let diffMat = br.OCSInv.multiply(d.OCS);\r\n let x = new Vector3().setFromMatrixColumn(diffMat, 0);\r\n let angle = angleTo(XAxis, x);\r\n if (d.Type === GangDrillType.Pxl || d.Type === GangDrillType.WoodPXL)\r\n {\r\n if (isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz))\r\n {\r\n if (!IsBetweenA2B(position.x, -d.Radius, br.Width + d.Radius, 1e-6)\r\n || !IsBetweenA2B(position.y, -d.Radius, br.Height + d.Radius, 1e-6)\r\n || !IsBetweenA2B(position.z, 0, br.Thickness)\r\n || !outline.PtInCurve(position.clone().setZ(0))) return;\r\n\r\n position.sub(offsetTanslation);\r\n face = processData[EBoardKeyList.BigHole];\r\n isPush = true;\r\n }\r\n }\r\n else if (d.Type === GangDrillType.Ljg || d.Type === GangDrillType.Wood)\r\n {\r\n if (!isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz))\r\n {\r\n let z = position.z;\r\n if (!IsBetweenA2B(z, -d.Radius, br.Thickness + d.Radius, 1e-6)) return;\r\n let line = new Line(position.clone().setZ(0), position.clone().setZ(0).add(d.Normal.multiplyScalar(d.Height).applyMatrix4(roMat)));\r\n let pt = outline.IntersectWith(line, 0)[0];\r\n if (!pt) return;\r\n position = pt.clone().setZ(z);\r\n for (let p of [line.StartPoint, line.EndPoint])\r\n {\r\n if (outline.PtInCurve(p))\r\n {\r\n endPt = p.setZ(z);\r\n break;\r\n }\r\n }\r\n if (!endPt)\r\n {\r\n console.warn(\"排钻位置有问题\");\r\n return;\r\n }\r\n holes = data.sideHoles;\r\n face = Math.floor(outline.GetParamAtPoint(pt));\r\n isPush = true;\r\n depth = position.distanceTo(endPt);\r\n angle = undefined;\r\n\r\n InvertPosition(position, br.Thickness);\r\n InvertPosition(endPt, br.Thickness);\r\n }\r\n else if (d.Type === GangDrillType.Wood)\r\n {\r\n if (!outline.PtInCurve(position.clone().setZ(0))) return;\r\n face = position.z > 0 ? FaceDirection.Front : FaceDirection.Back;\r\n holes = data.frontBackHoles;\r\n if (position.z > 0)\r\n {\r\n let z1 = position.z - d.Height;\r\n if (z1 > 0 && z1 < br.Thickness)\r\n {\r\n depth = br.Thickness - z1;\r\n isPush = true;\r\n }\r\n }\r\n else\r\n {\r\n let z1 = position.z + d.Height;\r\n if (z1 > 0 && z1 < br.Thickness)\r\n {\r\n depth = z1;\r\n isPush = true;\r\n }\r\n }\r\n position.sub(offsetTanslation);\r\n }\r\n }\r\n else\r\n {\r\n if (isParallelTo(d.Normal, brNormal, CanDrawHoleFuzz))\r\n {\r\n let nor = d.Normal.applyMatrix4(roMat);\r\n let pos2 = position.clone().add(nor.multiplyScalar(depth));\r\n\r\n if (!IsBetweenA2B(position.x, -d.Radius, br.Width + d.Radius, CanDrawHoleFuzz)\r\n || !IsBetweenA2B(position.y, -d.Radius, br.Height + d.Radius, CanDrawHoleFuzz)\r\n || !isIntersect2(0, br.Thickness, position.z, pos2.z, -CanDrawHoleFuzz)\r\n || !outline.PtInCurve(position.clone().setZ(0))) return;\r\n position.sub(offsetTanslation);\r\n holes = data.frontBackHoles;\r\n face = !equalv3(d.Normal, brNormal, 1e-3) ? 0 : 1;\r\n isPush = true;\r\n }\r\n }\r\n isPush && holes.push({\r\n type: d.Type,\r\n position,\r\n radius: d.Radius,\r\n depth,\r\n face,\r\n endPt,\r\n angle\r\n });\r\n }\r\n\r\n /**分析自定义圆柱排钻 */\r\n function ParseExtrudeHoles(d: ExtrudeHole, br: Board, offsetTanslation: Vector3, data: IBoardHoleInfo, outline: ExtureContourCurve, isCheckGroove = false)\r\n {\r\n if (!d.isHole)\r\n return;\r\n\r\n let brNormal = br.Normal;\r\n let cir = d.ContourCurve;\r\n if (cir instanceof Circle)\r\n {\r\n let diffMtx = br.OCSInv.multiply(d.OCS);\r\n let nor = d.Normal;\r\n let sp = cir.Center.applyMatrix4(diffMtx);\r\n let ep = cir.Center.add(new Vector3(0, 0, d.Height)).applyMatrix4(diffMtx);\r\n let x = new Vector3().setFromMatrixColumn(diffMtx, 0);\r\n //#I2DPFO 在挖穿造型内的五金不加工\r\n const grooves = br.Grooves.filter(g => equaln(g.Thickness, br.Thickness));\r\n const groovesOutlines = isCheckGroove ? grooves.map(g => g.ContourCurve.Clone().ApplyMatrix(g.OCS).ApplyMatrix(br.OCSInv).Z0()) : [];\r\n\r\n if (isParallelTo(nor, brNormal, CanDrawHoleFuzz))\r\n {\r\n let z0 = Math.min(sp.z, ep.z);\r\n let z1 = Math.max(sp.z, ep.z);\r\n let p = sp.clone().setZ(0).sub(offsetTanslation);\r\n\r\n if (Math.max(z0, 0) < Math.min(z1, br.Thickness) - CanDrawHoleFuzz && outline.PtInCurve(p) && groovesOutlines.every(g => !g.PtInCurve(p)))\r\n {\r\n let depth = z0 < CanDrawHoleFuzz ? z1 : br.Thickness - z0;\r\n let angle = angleTo(XAxis, x);\r\n if (equaln(angle, Math.PI))\r\n angle = 0;\r\n if (depth > CanDrawHoleFuzz)\r\n data.frontBackHoles.push({\r\n type: d.isThrough ? GangDrillType.TK : GangDrillType.Ymj,\r\n position: z0 < CanDrawHoleFuzz ? p : p.setZ(br.Thickness),\r\n radius: cir.Radius,\r\n depth,\r\n face: z0 < CanDrawHoleFuzz ? DrillingFace.Back : DrillingFace.Front,\r\n angle: angle,\r\n });\r\n }\r\n }\r\n else\r\n {\r\n let oldZ = sp.z;\r\n let [minX, maxX] = sp.x < ep.x ? [sp.x, ep.x] : [ep.x, sp.x];\r\n let [minY, maxY] = sp.y < ep.y ? [sp.y, ep.y] : [ep.y, sp.y];\r\n\r\n\r\n if (sp.z > -cir.Radius\r\n && sp.z < br.Thickness + cir.Radius\r\n && Math.max(minX, 0) < Math.min(br.Width, maxX) + 1e-6\r\n && Math.max(minY, 0) < Math.min(br.Height, maxY) + 1e-6\r\n )\r\n {\r\n sp.setZ(0);\r\n ep.setZ(0);\r\n let line = new Line(sp, ep);\r\n let pt = outline.IntersectWith(line, 0)[0];\r\n if (!pt)\r\n {\r\n console.error(\"排钻嵌在板件内部\");\r\n return;\r\n }\r\n let position = pt.clone().setZ(oldZ);\r\n let endPt: Vector3;\r\n let face = Math.floor(outline.GetParamAtPoint(pt));\r\n for (let p of [line.StartPoint, line.EndPoint])\r\n {\r\n if (!equalv3(p.setZ(oldZ), position) && outline.PtInCurve(p))\r\n {\r\n endPt = p.setZ(oldZ);\r\n break;\r\n }\r\n }\r\n if (!endPt)\r\n return;\r\n let depth = position.distanceTo(endPt);\r\n\r\n if (equaln(depth, 0, CanDrawHoleFuzz))\r\n return;\r\n\r\n InvertPosition(position, br.Thickness);\r\n InvertPosition(endPt, br.Thickness);\r\n\r\n data.sideHoles.push({\r\n type: GangDrillType.Ljg,\r\n endPt,\r\n position,\r\n radius: cir.Radius,\r\n depth,\r\n face,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n function GetBoardMetals(br: Board)\r\n {\r\n let mids = br.RelativeHardware;\r\n let metalsData = {\r\n metals: 0,\r\n comp: 0\r\n };\r\n for (let id of mids)\r\n {\r\n if (!id || id.IsErase) continue;\r\n\r\n let metals = id.Object as HardwareCompositeEntity;\r\n if (!metals.HardwareOption)\r\n continue;\r\n if (metals.HardwareOption.type === EMetalsType.Metals)\r\n {\r\n metalsData.metals++;\r\n }\r\n else\r\n {\r\n metalsData.comp++;\r\n }\r\n }\r\n return metalsData;\r\n }\r\n\r\n export function GetHardwareCompositeData(en: HardwareCompositeEntity): ISpliteHardwareData\r\n {\r\n let size = en.BoundingBoxInOCS.getSize(new Vector3);\r\n let data = { ...en.HardwareOption } as ICompHardwareOption;\r\n const actualVal = safeEval(data.actualExpr, { L: size.x, W: size.y, H: size.z });\r\n data.actualExpr = actualVal ? actualVal.toString() : data.actualExpr;\r\n data.spec = ParseExpr(data.spec, { L: size.x, W: size.y, H: size.z });\r\n data.count = (safeEval(data.count, { L: size.x, W: size.y, H: size.z }) || 0).toString();\r\n\r\n let metalData = {\r\n metalsOption: data,\r\n dataList: en.DataList,\r\n children: [],\r\n size: size\r\n };\r\n if (en instanceof HardwareCompositeEntity && (en.HardwareOption.isSplite || en.HardwareOption.isSplitePrice))\r\n {\r\n if (en.Entitys.every(e => !(e instanceof HardwareCompositeEntity || e instanceof HardwareTopline)))\r\n return metalData;\r\n for (let e of en.Entitys)\r\n {\r\n if (e instanceof HardwareCompositeEntity)\r\n {\r\n let d = GetHardwareCompositeData(e);\r\n metalData.children.push(d);\r\n }\r\n else if (e instanceof HardwareTopline)\r\n {\r\n metalData.children.push(...GetHardwareToplineData(e));\r\n }\r\n }\r\n }\r\n\r\n return metalData;\r\n }\r\n\r\n export function GetHardwareToplineData(en: HardwareTopline)\r\n {\r\n let data = { ...en.HardwareOption } as IToplineOption;\r\n let datas: ISpliteHardwareData[] = [];\r\n let map = new Map();\r\n let addLen = en.HardwareOption.addLen;\r\n let cus = en.Segmentations;\r\n let size = en.BoundingBoxInOCS.getSize(new Vector3);\r\n for (let cu of cus)\r\n {\r\n let len = parseFloat(FixedNotZero(cu.Length, 2));\r\n if (map.has(len))\r\n {\r\n map.set(len, map.get(len) + 1);\r\n }\r\n else\r\n {\r\n map.set(len, 1);\r\n }\r\n }\r\n for (let [len, count] of map)\r\n {\r\n let totalLength = parseFloat(FixedNotZero(len + parseFloat(addLen), 2));\r\n let width = parseFloat(FixedNotZero(size.y, 2));\r\n let height = parseFloat(FixedNotZero(size.z, 2));\r\n for (let i = 0; i < count; i++)\r\n {\r\n let d = { ...en.HardwareOption };\r\n const actualVal = safeEval(data.actualExpr, { L: totalLength, W: width, H: height });\r\n d.actualExpr = actualVal ? actualVal.toString() : d.actualExpr;\r\n d.spec = ParseExpr(data.spec, { L: totalLength, W: width, H: height });\r\n datas.push({\r\n metalsOption: d,\r\n dataList: en.DataList,\r\n length: totalLength,\r\n children: [],\r\n size\r\n });\r\n }\r\n }\r\n return datas;\r\n }\r\n\r\n /**获取排钻数量 */\r\n export function GetTotalDrillCount(brs: (Board | IHardwareType)[])\r\n {\r\n return lookOverBoardInfosTool.GetCount(brs);\r\n }\r\n\r\n export function GetCabSize(brList: Board[]): Map\r\n {\r\n let brMap: Map = new Map();\r\n //根据柜名房名分类\r\n for (let b of brList)\r\n {\r\n let k = b.BoardProcessOption[EBoardKeyList.RoomName] + '-' + b.BoardProcessOption[EBoardKeyList.CabinetName];\r\n if (brMap.has(k))\r\n brMap.get(k).push(b);\r\n else\r\n brMap.set(k, [b]);\r\n }\r\n\r\n let sizeData: Map = new Map();\r\n\r\n for (let [k, brs] of brMap)\r\n {\r\n let ocsInv = brs[0].SpaceOCSInv;\r\n let box = new Box3();\r\n let size = new Vector3();\r\n for (let b of brs)\r\n {\r\n sizeData.set(b, size);\r\n box.union(b.GetBoundingBoxInMtx(ocsInv));\r\n }\r\n box.getSize(size);\r\n }\r\n return sizeData;\r\n }\r\n export function Data2Polyline(data: IContourData, isClose = true)\r\n {\r\n let pl = new Polyline(data.pts.map((p, i) => ({ pt: new Vector2(p.x, p.y), bul: data.buls[i] })));\r\n if (isClose)\r\n pl.CloseMark = true;\r\n return pl;\r\n }\r\n export function Report(ens: Entity[], msg: string)\r\n {\r\n if (IsDev()) return;\r\n ShowSelectObjects(ens);\r\n SendReport(msg);\r\n\r\n }\r\n export function Get2DModeing(br: Board, offset: Vector3)\r\n {\r\n let res: I2DModeling[] = [];\r\n let tmtx = MoveMatrix(offset.clone().negate());\r\n for (let m of br.Modeling2D)\r\n {\r\n let path = m.path.Clone().ApplyMatrix(tmtx) as Polyline;\r\n res.push({\r\n path: ConverToPolylineAndSplitArc(path),\r\n dir: m.dir,\r\n items: m.items.map(item => ({ ...item }))\r\n });\r\n }\r\n return res;\r\n }\r\n export function Get3DModeing(br: Board, offset: Vector3)\r\n {\r\n let res: I3DModeling[] = [];\r\n for (let m of br.Modeling3D)\r\n {\r\n let d: I3DModeling = {\r\n path: { pts: [], buls: [] },\r\n knife: { ...m.knife },\r\n dir: m.dir\r\n };\r\n for (let i = 0; i < m.path.length - 1; i++)\r\n {\r\n let d1 = m.path[i];\r\n let d2 = m.path[i + 1];\r\n if (equaln(d1.bul, 0))\r\n {\r\n let p = d1.pt.clone();\r\n InvertPosition(p, br.Thickness);\r\n p.sub(offset);\r\n d.path.pts.push(p);\r\n d.path.buls.push(0);\r\n }\r\n else\r\n {\r\n let arc = new Arc().ParseFromBul(d1.pt.clone().sub(offset), d2.pt.clone().sub(offset), d1.bul);\r\n let r = SplitetArc(arc, false);\r\n r.pts.forEach(p => InvertPosition(p, br.Thickness));\r\n d.path.pts.push(...r.pts);\r\n d.path.buls.push(...r.buls);\r\n }\r\n if (i === m.path.length - 2)\r\n {\r\n let p = d2.pt.clone();\r\n InvertPosition(p, br.Thickness);\r\n p.sub(offset);\r\n d.path.pts.push(p);\r\n d.path.buls.push(0);\r\n }\r\n }\r\n res.push(d);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { EBoardKeyList } from \"../Common/BoardKeyList\";\r\nimport { safeEval } from \"../Common/eval\";\r\nimport { Intent, Toaster } from \"../Common/Toaster\";\r\nimport { FixIndex, LINK_FUZZ } from \"../Common/Utils\";\r\nimport { Board } from \"../DatabaseServices/Entity/Board\";\r\nimport { Circle } from \"../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { ExtureContourCurve } from \"../DatabaseServices/Entity/Extrude\";\r\nimport { Line } from \"../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { angle, equaln, equalv3, isParallelTo, SelectNearP, XAxis } from \"../Geometry/GeUtils\";\r\nimport { Production } from \"../Production/Product\";\r\nimport { IHighSealedItem } from \"../UI/Store/BoardInterface\";\r\nimport { IntersectOption } from \"./IntersectWith\";\r\n\r\n/**\r\n *曲线列表分段\r\n * @l-arc-l,l-arc-arc-l,l-arc-l-arc-l....\r\n */\r\nexport function ParagraphCulist(cus: Curve[])\r\n{\r\n let newCulist: Curve[][] = [];\r\n let usedCu: WeakSet = new WeakSet();\r\n\r\n //归类曲线,返回归类是否成功\r\n const paragraph = (cu: Curve, originCu: Curve, cuList: Curve[], isBack: boolean) =>\r\n {\r\n const cuIsLine = cu instanceof Line;\r\n const originCuIsLine = originCu instanceof Line;\r\n\r\n if (usedCu.has(cu))\r\n return false;\r\n\r\n if (originCuIsLine !== cuIsLine)\r\n {\r\n if (originCuIsLine)\r\n {\r\n if (isBack)\r\n {\r\n if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0)))\r\n return false;\r\n }\r\n else\r\n {\r\n if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(1)))\r\n return false;\r\n }\r\n }\r\n\r\n if (cuIsLine)\r\n {\r\n if (isBack)\r\n {\r\n if (!isParallelTo(originCu.GetFistDeriv(1), cu.GetFistDeriv(0)))\r\n return false;\r\n }\r\n else\r\n {\r\n if (!isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0)))\r\n return false;\r\n }\r\n }\r\n }\r\n else if (cuIsLine)\r\n {\r\n //共线且相连的直线分为一组 #I11T1Z\r\n if (!isParallelTo(cu.GetFistDeriv(0).normalize(), originCu.GetFistDeriv(0).normalize()))\r\n return false;\r\n let pts = [originCu.StartPoint, originCu.EndPoint];\r\n let pts2 = [cu.StartPoint, cu.EndPoint];\r\n if (pts.every(p => pts2.every(p2 => !equalv3(p, p2, 1e-6))))\r\n return false;\r\n }\r\n if (isBack)\r\n cuList.push(cu);\r\n else\r\n cuList.unshift(cu);\r\n usedCu.add(cu);\r\n return true;\r\n };\r\n let caclCus = cus.slice().filter(c => !equaln(c.Length, 0));\r\n\r\n while (caclCus.length > 0)\r\n {\r\n let originCu = caclCus.shift();\r\n if (usedCu.has(originCu))\r\n continue;\r\n\r\n let originCus = [originCu];\r\n usedCu.add(originCu);\r\n //往后搜索\r\n for (let i = 0; i < caclCus.length; i++)\r\n {\r\n if (!paragraph(caclCus[i], originCu, originCus, true))\r\n break;\r\n originCu = caclCus[i];\r\n }\r\n //只有第一条才需要往前搜索\r\n if (caclCus.length === cus.length - 1)\r\n {\r\n originCu = originCus[0];\r\n //往前搜索\r\n for (let i = caclCus.length - 1; i >= 0; i--)\r\n {\r\n if (!paragraph(caclCus[i], originCu, originCus, false))\r\n break;\r\n originCu = caclCus[i];\r\n }\r\n }\r\n newCulist.push(originCus);\r\n }\r\n cus.length = 0;\r\n //同组多条曲线连接为多段线\r\n for (let g of newCulist)\r\n {\r\n if (g.length === 1)\r\n cus.push(g[0]);\r\n else\r\n {\r\n let pl = new Polyline();\r\n for (let c of g)\r\n {\r\n pl.Join(c);\r\n }\r\n cus.push(pl);\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n/**\r\n *计算封边\r\n */\r\nexport function CalcEdgeSealing(cus: Curve[])\r\n{\r\n if (cus.length <= 1)\r\n return;\r\n let oldLine: Curve;\r\n let firstLine = cus[0].Clone();\r\n let oldLen = cus.length;\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let frontLine = cus[i];\r\n let laterIndex = FixIndex(i + 1, cus);\r\n let laterLine = cus[laterIndex];\r\n if (!frontLine || !laterLine || cus.length < 2)\r\n {\r\n return false;\r\n }\r\n\r\n let dist = frontLine.EndPoint.distanceToSquared(laterLine.StartPoint);\r\n if (dist < LINK_FUZZ ** 2)\r\n {\r\n if (frontLine instanceof Line && laterLine instanceof Line)\r\n {\r\n if (frontLine.PtOnCurve(laterLine.EndPoint))\r\n {\r\n cus.splice(laterIndex, 1);\r\n if (laterIndex === 0)\r\n firstLine = cus[0].Clone();\r\n i -= 2;\r\n }\r\n else if (laterLine.PtOnCurve(frontLine.StartPoint))\r\n {\r\n cus.splice(i, 1);\r\n i -= 2;\r\n if (i < -1)\r\n i = -1;\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n let refLine = oldLine ?? frontLine;\r\n let refLine2 = i === cus.length - 1 ? firstLine : laterLine;\r\n let iPts = refLine.IntersectWith(refLine2, IntersectOption.ExtendBoth);\r\n let tPts = iPts.filter(p =>\r\n refLine.PtOnCurve(p)\r\n && refLine2.PtOnCurve(p)\r\n );\r\n\r\n let iPt = SelectNearP(tPts.length > 0 ? tPts : iPts, refLine.EndPoint);\r\n if (!iPt)\r\n {\r\n //没交点,如果删过线,则尝试继续连接\r\n if (cus.length !== oldLen && cus.length > 2)\r\n {\r\n cus.splice(i, 1);\r\n i -= 2;\r\n if (i < -1)\r\n i = -1;\r\n continue;\r\n }\r\n else\r\n return false;\r\n }\r\n let par = refLine.GetParamAtPoint(iPt);\r\n //前面线的点无效直接删除\r\n if (par < 1e-6)\r\n {\r\n cus.splice(i, 1);\r\n i -= 2;\r\n if (i < -1)\r\n i = -1;\r\n }\r\n else\r\n frontLine.EndPoint = iPt;\r\n oldLine = null;\r\n par = laterLine.GetParamAtPoint(iPt);\r\n\r\n //后面线点无效,如果是起始线,则删除,否则缓存原始线,继续尝试连接\r\n if (par > 1 - 1e-6)\r\n {\r\n if (laterIndex === 0)\r\n {\r\n cus.shift();\r\n firstLine = cus[0].Clone();\r\n i -= 2;\r\n continue;\r\n }\r\n else\r\n oldLine = laterLine.Clone();\r\n }\r\n\r\n laterLine.StartPoint = iPt;\r\n }\r\n return true;\r\n}\r\n\r\nexport function GetBoardHighSeal(br: Board, sealcus: Curve[])\r\n{\r\n let highSeals = br.BoardProcessOption.highSealed.slice().filter(d => d.size !== null && d.size !== undefined);\r\n let sealDown = parseFloat(br.BoardProcessOption[EBoardKeyList.DownSealed]);\r\n let sealUp = parseFloat(br.BoardProcessOption[EBoardKeyList.UpSealed]);\r\n let sealLeft = parseFloat(br.BoardProcessOption[EBoardKeyList.LeftSealed]);\r\n let sealRight = parseFloat(br.BoardProcessOption[EBoardKeyList.RightSealed]);\r\n\r\n //若未设置高级封边,把上下左右封边存入高级封边\r\n if (sealcus.length !== highSeals.length || !br.IsSpecialShape)\r\n {\r\n highSeals.length = 0;\r\n let dir = Math.sign(br.ContourCurve.Area2);\r\n for (let c of sealcus)\r\n {\r\n let derv = c.GetFistDeriv(0).multiplyScalar(dir);\r\n let an = angle(derv);\r\n if (equaln(an, 0) || (an < Math.PI / 4 + 1e-8 && an > Math.PI * 7 / 4))\r\n highSeals.push({ size: sealDown });\r\n else if (an > Math.PI / 4 && an < Math.PI * 3 / 4 + 1e-8)\r\n highSeals.push({ size: sealRight });\r\n else if (an > Math.PI * 3 / 4 && an < Math.PI * 5 / 4 + 1e-8)\r\n highSeals.push({ size: sealUp });\r\n else\r\n highSeals.push({ size: sealLeft });\r\n }\r\n }\r\n\r\n return highSeals;\r\n}\r\n\r\n/**偏移前后曲线起点没改变 */\r\nexport function OffsetOutlineSpNotChange(oldcu: Curve, newCu: Curve)\r\n{\r\n if (!newCu)\r\n return false;\r\n let sDerv = oldcu.GetFistDeriv(0).normalize();\r\n let eDerv = oldcu.GetFistDeriv(oldcu.EndParam).normalize().negate();\r\n sDerv.add(eDerv).normalize();\r\n let mDerv = newCu.StartPoint.sub(oldcu.StartPoint).normalize();\r\n return oldcu.EndParam === newCu?.EndParam && isParallelTo(mDerv, sDerv);\r\n}\r\n\r\n/**\r\n * 获取板件封边轮廓线段数组\r\n * 消除共线的数据,不改变轮廓方向\r\n * isOffset-是否偏移轮廓用于查看\r\n * */\r\nexport function GetBoardSealingCurves(br: Board, isOffset = false): Curve[]\r\n{\r\n let cu: ExtureContourCurve = Production.GetSpliteOutlineBySpliteSize(br);\r\n if (cu)\r\n return cu.Explode();\r\n\r\n let cus: Curve[] = [];\r\n cu = Production.GetSpliteOutline(br, false);\r\n if (!cu)\r\n {\r\n Toaster({\r\n message: \"获取封边错误\",\r\n timeout: 3000,\r\n intent: Intent.DANGER\r\n });\r\n return [];\r\n }\r\n if (isOffset)\r\n {\r\n let dir = Math.sign(cu.Area2);\r\n let newCu = cu.GetOffsetCurves(-1 * dir)[0] as ExtureContourCurve;\r\n if (OffsetOutlineSpNotChange(cu, newCu))\r\n cu = newCu;\r\n }\r\n if (cu instanceof Circle)\r\n return [cu.Clone()];\r\n else\r\n {\r\n cus = cu.Explode() as Curve[];\r\n if (br.IsSpecialShape)\r\n ParagraphCulist(cus);\r\n return cus;\r\n }\r\n}\r\n\r\n/**\r\n * 获取板件轮廓\r\n * 结果轮廓拆单用,统一逆时针数据\r\n * hasSealing 轮廓是否包含封边\r\n * 用户计算拆单侧孔面id\r\n */\r\nexport function GetSealedBoardContour(br: Board, hasSealing: boolean): Polyline | Circle | undefined\r\n{\r\n if (equaln(br.ContourCurve.Area, 0))\r\n return;\r\n\r\n let offsetCus: Curve[] = [];\r\n let cus = GetBoardSealingCurves(br);\r\n let highSeals = GetBoardHighSeal(br, cus);\r\n let dir = Math.sign(br.ContourCurve.Area2);\r\n\r\n if (hasSealing)\r\n {\r\n for (let c of cus)\r\n {\r\n if (c instanceof Polyline)\r\n offsetCus.push(...c.Explode());\r\n else\r\n offsetCus.push(c);\r\n }\r\n }\r\n else\r\n {\r\n\r\n if (cus[0] instanceof Circle)\r\n dir = 1;\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let cs: Curve[];\r\n if (!highSeals[i].size)\r\n cs = [cus[i].Clone()];\r\n else\r\n cs = cus[i].GetOffsetCurves(-highSeals[i].size * dir);\r\n\r\n for (let c of cs)\r\n {\r\n if (c instanceof Polyline)\r\n offsetCus.push(...c.Explode());\r\n else\r\n offsetCus.push(c);\r\n }\r\n }\r\n }\r\n if (offsetCus.length === 1 && offsetCus[0] instanceof Circle)\r\n return offsetCus[0] as Circle;\r\n\r\n if (!CalcEdgeSealing(offsetCus)) return;\r\n let pl = Polyline.FastCombine(offsetCus, LINK_FUZZ);\r\n if (pl && dir < 0)\r\n pl.Reverse();\r\n return pl;\r\n}\r\n\r\n\r\nexport function ParagraphSealinglist(hightSeal: IHighSealedItem[], cus: Curve[])\r\n{\r\n if (hightSeal.length !== cus.length) return hightSeal;\r\n\r\n let usedCu: WeakSet = new WeakSet();\r\n let newHighSeal: IHighSealedItem[] = [];\r\n\r\n //归类曲线,返回归类是否成功\r\n const paragraph = (cu: Curve, originCu: Curve, isBack: boolean) =>\r\n {\r\n const cuIsLine = cu instanceof Line;\r\n const originCuIsLine = originCu instanceof Line;\r\n\r\n if (usedCu.has(cu))\r\n return false;\r\n\r\n if (originCuIsLine !== cuIsLine)\r\n {\r\n if (originCuIsLine &&\r\n !isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0))\r\n && !isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(1))\r\n )\r\n {\r\n return false;\r\n }\r\n\r\n if (cuIsLine\r\n && !isParallelTo(originCu.GetFistDeriv(1), cu.GetFistDeriv(0))\r\n && !isParallelTo(originCu.GetFistDeriv(0), cu.GetFistDeriv(0)\r\n ))\r\n {\r\n return false;\r\n }\r\n }\r\n else if (cuIsLine)\r\n {\r\n //共线且相连的直线分为一组 #I11T1Z\r\n if (!isParallelTo(cu.GetFistDeriv(0).normalize(), originCu.GetFistDeriv(0).normalize()))\r\n return false;\r\n let pts = [originCu.StartPoint, originCu.EndPoint];\r\n let pts2 = [cu.StartPoint, cu.EndPoint];\r\n if (pts.every(p => pts2.every(p2 => !equalv3(p, p2, 1e-6))))\r\n return false;\r\n }\r\n if (isBack)\r\n hightSeal.shift();\r\n else\r\n hightSeal.pop();\r\n usedCu.add(cu);\r\n return true;\r\n };\r\n let caclCus = cus.slice();\r\n\r\n while (caclCus.length > 0)\r\n {\r\n let originCu = caclCus.shift();\r\n if (usedCu.has(originCu))\r\n continue;\r\n let oldCu = originCu;\r\n let originSeal = hightSeal.shift();\r\n newHighSeal.push(originSeal);\r\n usedCu.add(originCu);\r\n //往后搜索\r\n for (let i = 0; i < caclCus.length; i++)\r\n {\r\n if (!paragraph(caclCus[i], originCu, true))\r\n break;\r\n originCu = caclCus[i];\r\n }\r\n //只有第一条才需要往前搜索\r\n if (caclCus.length === cus.length - 1)\r\n {\r\n originCu = oldCu;\r\n //往前搜索\r\n for (let i = caclCus.length - 1; i >= 0; i--)\r\n {\r\n if (!paragraph(caclCus[i], originCu, false))\r\n break;\r\n originCu = caclCus[i];\r\n }\r\n }\r\n }\r\n\r\n return newHighSeal;\r\n}\r\n\r\n/**处理常规板件封边数据和上下左右封边值 */\r\nexport function HandleRectBoardSealingData(br: Board, edges: IHighSealedItem[], cus?: Curve[])\r\n{\r\n let dir = Math.sign(br.ContourCurve.Area2);\r\n if (!cus)\r\n cus = br.ContourCurve.Explode() as Curve[];\r\n\r\n let spliteHeight = safeEval(br.BoardProcessOption.spliteHeight);\r\n let spliteWidth = safeEval(br.BoardProcessOption.spliteWidth);\r\n let spliteThickness = safeEval(br.BoardProcessOption.spliteThickness);\r\n\r\n if ((spliteHeight && spliteWidth && spliteThickness) || !br.IsSpecialShape && cus.length == 4)\r\n {\r\n for (let i = 0; i < 4; i++)\r\n {\r\n let derv = cus[i].GetFistDeriv(0);\r\n if (isParallelTo(derv, XAxis))\r\n {\r\n if (derv.x * dir > 0)\r\n br.BoardProcessOption[EBoardKeyList.DownSealed] = edges[i].size.toString();\r\n else\r\n br.BoardProcessOption[EBoardKeyList.UpSealed] = edges[i].size.toString();\r\n }\r\n else\r\n {\r\n if (derv.y * dir > 0)\r\n br.BoardProcessOption[EBoardKeyList.RightSealed] = edges[i].size.toString();\r\n else\r\n br.BoardProcessOption[EBoardKeyList.LeftSealed] = edges[i].size.toString();\r\n }\r\n }\r\n\r\n }\r\n}\r\n","import { Vector3 } from \"three\";\r\nimport { arrayRemoveIf } from \"../../Common/ArrayExt\";\r\nimport { FixIndex } from \"../../Common/Utils\";\r\nimport { Arc } from \"../../DatabaseServices/Entity/Arc\";\r\nimport { Curve } from \"../../DatabaseServices/Entity/Curve\";\r\nimport { Line } from \"../../DatabaseServices/Entity/Line\";\r\nimport { Polyline } from \"../../DatabaseServices/Entity/Polyline\";\r\nimport { equaln, isParallelTo } from \"../../Geometry/GeUtils\";\r\nimport { Vec3 } from \"../../Geometry/IVec3\";\r\nimport { IntersectOption } from \"../IntersectWith\";\r\n\r\n/**\r\n * V型刀走刀数据,第一刀直接扎进去,最后一刀提刀\r\n * @param polyline\r\n * @param feedingDepth 走刀深度\r\n * @param knifAngle 通常为60度.按弧度表示\r\n */\r\nexport function VKnifToolPath(polyline: Polyline, feedingDepth: number, knifAngle: number): { pt: Vec3, bul: number; }[]\r\n{\r\n let x = feedingDepth * Math.tan(knifAngle);\r\n let cus = polyline.Explode();\r\n arrayRemoveIf(cus, c => c.Length < 0.01);\r\n\r\n let offsetx = [x, -x];\r\n\r\n let ptsbul: { pt: Vec3, bul: number; }[] = [];\r\n\r\n let isClose = polyline.IsClose;\r\n\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let nextIndex = FixIndex(i + 1, cus.length);\r\n let c1 = cus[i];\r\n let c2 = cus[nextIndex];\r\n\r\n let d = { pt: c1.StartPoint, bul: 0 };\r\n\r\n let curP = c1.EndPoint;\r\n\r\n if (c1 instanceof Arc)\r\n {\r\n d.bul = c1.Bul;\r\n c1 = new Line(curP.clone().sub(c1.GetFistDeriv(1).multiplyScalar(100)), curP);\r\n }\r\n if (c2 instanceof Arc)\r\n c2 = new Line(c2.StartPoint, c2.StartPoint.add(c2.GetFistDeriv(0).multiplyScalar(100)));\r\n\r\n ptsbul.push(d);\r\n\r\n if (!isClose && i === cus.length - 1)//最后一条\r\n {\r\n ptsbul.push({ pt: c1.EndPoint, bul: 0 });\r\n break;\r\n }\r\n\r\n //圆弧与直线相切,此时不要提刀\r\n if (isParallelTo(c1.GetFistDeriv(0), c2.GetFistDeriv(0))) continue;\r\n\r\n //提刀\r\n for (let x of offsetx)\r\n {\r\n let co1 = c1.GetOffsetCurves(x)[0];\r\n let co2 = c2.GetOffsetCurves(x)[0];\r\n\r\n if (!co1 || !co2) continue;\r\n\r\n let ipts = co1.IntersectWith(co2, IntersectOption.ExtendBoth);\r\n\r\n if (ipts.length === 0) continue;\r\n\r\n if (co1.PtOnCurve(ipts[0])) continue;\r\n\r\n //抬刀路径\r\n ptsbul.push({ pt: curP, bul: 0 });\r\n ptsbul.push({ pt: ipts[0].setZ(feedingDepth), bul: 0 });\r\n }\r\n }\r\n\r\n if (isClose)\r\n {\r\n //第一刀\r\n ptsbul.unshift(ptsbul[ptsbul.length - 1]);//, ptsbul[ptsbul.length - 2]\r\n }\r\n return ptsbul;\r\n}\r\n\r\n\r\nexport function VData2Curve(data: { pt: Vec3, bul: number; }[])\r\n{\r\n let curves: Curve[] = [];\r\n for (let i = 0; i < data.length - 1; i++)\r\n {\r\n let p1 = new Vector3(data[i].pt.x, data[i].pt.y, data[i].pt.z);\r\n let p2 = new Vector3(data[i + 1].pt.x, data[i + 1].pt.y, data[i + 1].pt.z);\r\n if (equaln(data[i].bul, 0))\r\n {\r\n curves.push(new Line(p1, p2));\r\n }\r\n else\r\n {\r\n curves.push(new Arc().ParseFromBul(p1, p2, data[i].bul));\r\n }\r\n }\r\n return curves;\r\n}\r\n","import { Matrix4, Vector3, LineSegments, Object3D, Mesh, Geometry, Line as TLine, Matrix3, UVGenerator } from 'three';\r\nimport { Board2Regions } from '../../Add-on/BoardEditor/Board2Regions';\r\nimport { deserializationBoardData, serializeBoardData, SerializeBoard2DModeingData, DeserializationBoard2DModeingData, DeserializationBoard3DModeingData, SerializeBoard3DModeingData } from '../../Add-on/BoardEditor/SerializeBoardData';\r\nimport { arrayRemoveIf, arraySortByNumber, arraySum } from '../../Common/ArrayExt';\r\nimport { EBoardKeyList } from '../../Common/BoardKeyList';\r\nimport { UpdateDraw } from '../../Common/Status';\r\nimport { userConfig } from '../../Editor/UserConfig';\r\nimport { boardUVGenerator, boardUVGenerator2 } from '../../Geometry/BoardUVGenerator';\r\nimport { equaln, MoveMatrix, ZeroVec } from '../../Geometry/GeUtils';\r\nimport { BoardOpenDir, BoardProcessOption, BoardType, ComposingType, FaceDirection, LinesType } from '../../UI/Store/BoardInterface';\r\nimport { ExtrudeHole } from '../3DSolid/ExtrudeHole';\r\nimport { AutoRecord } from '../AutoRecord';\r\nimport { Factory } from '../CADFactory';\r\nimport { CADFiler } from '../CADFiler';\r\nimport { Contour } from '../Contour';\r\nimport { HardwareCompositeEntity } from '../Hardware/HardwareCompositeEntity';\r\nimport { ObjectId } from '../ObjectId';\r\nimport { Shape } from '../Shape';\r\nimport { Circle } from './Circle';\r\nimport { Entity } from './Entity';\r\nimport { ExtrudeSolid, ExtureContourCurve } from './Extrude';\r\nimport { RenderType } from '../../GraphicsSystem/RenderType';\r\nimport { BufferGeometryUtils } from '../../Geometry/BufferGeometryUtils';\r\nimport { PointShapeUtils } from '../../Geometry/PointShapeUtils';\r\nimport { ColorMaterial } from '../../Common/ColorPalette';\r\nimport { CylinderHole } from '../3DSolid/CylinderHole';\r\nimport { BlockTableRecord } from '../BlockTableRecord';\r\nimport { InitRectBoardHoleOption, SetRectHighHole, TempRectHoleOption, CyHoleInBoard } from '../../Add-on/DrawDrilling/HoleUtils';\r\nimport { GetBoardHighSeal, GetBoardSealingCurves } from '../../GraphicsSystem/CalcEdgeSealing';\r\nimport { Polyline } from './Polyline';\r\nimport { DragPointType } from './DragPointType';\r\nimport { Arc } from './Arc';\r\nimport { VData2Curve, VKnifToolPath } from '../../GraphicsSystem/ToolPath/VKnifToolPath';\r\nimport { ZMirrorMatrix } from '../../Common/Matrix4Utils';\r\nimport { ObjectSnapMode } from '../../Editor/ObjectSnapMode';\r\n\r\n//转换板件类型成为空间类型. 0x 1y 2z\r\nexport function ConverBoardTypeToSpaceType(type: BoardType): number\r\n{\r\n switch (type)\r\n {\r\n case BoardType.Layer:\r\n return 2;\r\n case BoardType.Vertical:\r\n return 0;\r\n case BoardType.Behind:\r\n return 1;\r\n }\r\n}\r\n\r\nexport interface IModeling\r\n{\r\n shape: Shape;\r\n thickness: number;\r\n dir: FaceDirection;\r\n knifeRadius: number;\r\n addLen: number;\r\n addWidth?: number;\r\n addDepth?: number;\r\n}\r\n\r\nexport interface IKnifeInfo\r\n{\r\n angle: number;\r\n radius: number;\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface I2DModeingItem\r\n{\r\n depth: number;\r\n offset: number;\r\n knife: IKnifeInfo;\r\n}\r\n\r\nexport interface I2DModeling\r\n{\r\n path: Polyline;\r\n dir: FaceDirection;\r\n items: I2DModeingItem[];\r\n}\r\n\r\nexport interface IPathItem { pt: Vector3, bul: number; }\r\n\r\nexport interface I3DModeling\r\n{\r\n path: IPathItem[];\r\n dir: FaceDirection;\r\n knife: IKnifeInfo;\r\n}\r\n\r\n/**\r\n * 板件实体\r\n */\r\n@Factory\r\nexport class Board extends ExtrudeSolid\r\n{\r\n private _Rotation = {\r\n x: 0,\r\n y: 0,\r\n z: 0\r\n };\r\n private _BoardType: BoardType;\r\n private _Name = \"\";\r\n private _BoardProcessOption: BoardProcessOption;\r\n //板件排钻表,与之碰撞板件为key\r\n private _DrillList: Map = new Map();\r\n private _LayerNails: ObjectId[] = [];\r\n @AutoRecord RelativeHardware: ObjectId[] = [];\r\n @AutoRecord OpenDir: BoardOpenDir = BoardOpenDir.None;\r\n private _IsChaiDan: boolean = true;\r\n private _2DModelingList: I2DModeling[] = [];\r\n private _3DModelingList: I3DModeling[] = [];\r\n constructor()\r\n {\r\n super();\r\n this.InitBoardData();\r\n }\r\n\r\n /**\r\n * 创建一个代理数组,数组改变时被监听\r\n */\r\n private CreateArray(): T[]\r\n {\r\n return new Proxy([], {\r\n set: (target, key, value, receiver) =>\r\n {\r\n if (Reflect.get(target, key, receiver) !== value)\r\n this.WriteAllObjectRecord();\r\n return Reflect.set(target, key, value, receiver);\r\n }\r\n });\r\n }\r\n\r\n private InitBoardData()\r\n {\r\n let defaultData: BoardProcessOption =\r\n {\r\n roomName: \"\",\r\n cabinetName: \"\",\r\n boardName: \"\",\r\n material: \"\",\r\n color: \"\",\r\n lines: LinesType.Positive,\r\n bigHoleDir: FaceDirection.Front,\r\n composingFace: ComposingType.Arbitrary,\r\n highSealed: this.CreateArray(),\r\n sealedUp: \"1\",\r\n sealedDown: \"1\",\r\n sealedLeft: \"1\",\r\n sealedRight: \"1\",\r\n spliteHeight: \"\",\r\n spliteWidth: \"\",\r\n spliteThickness: \"\",\r\n highDrill: this.CreateArray(),\r\n frontDrill: true,\r\n backDrill: true,\r\n drillType: \"\",\r\n remarks: this.CreateArray(),\r\n };\r\n\r\n this._BoardProcessOption = new Proxy(defaultData, {\r\n get: function (target, key, receiver)\r\n {\r\n return Reflect.get(target, key, receiver);\r\n },\r\n set: (target, key, value, receiver) =>\r\n {\r\n if (Reflect.get(target, key, receiver) !== value)\r\n {\r\n this.WriteAllObjectRecord();\r\n if (key === \"highDrill\" || key === EBoardKeyList.HighSealed)\r\n {\r\n let arr = this.CreateArray() as any[];\r\n arr.push(...value);\r\n target[key] = arr;\r\n if (key === EBoardKeyList.HighSealed)\r\n this.Update(UpdateDraw.Geometry);\r\n return true;\r\n }\r\n let result = Reflect.set(target, key, value, receiver);\r\n if (key === EBoardKeyList.Lines)\r\n this.Update(UpdateDraw.Geometry);\r\n return result;\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n //初始化板件 来自长宽高\r\n InitBoard(length: number, width: number, thickness: number, boardType: BoardType = BoardType.Layer)\r\n {\r\n this._BoardType = boardType;\r\n if (boardType === BoardType.Layer)\r\n {\r\n this.ColorIndex = 2;\r\n this._Name = \"层板\";\r\n }\r\n else if (boardType === BoardType.Vertical)\r\n {\r\n this.ColorIndex = 11;\r\n this._Name = \"立板\";\r\n }\r\n else\r\n {\r\n this.ColorIndex = 3;\r\n this._Name = \"背板\";\r\n }\r\n\r\n let types = [...userConfig.DrillConfigs.keys(), \"不排\"];\r\n let type = types.includes(this.BoardProcessOption.drillType) ? this.BoardProcessOption.drillType : types[0];\r\n this._BoardProcessOption.drillType = type;\r\n this._BoardProcessOption.highDrill = Array(4).fill(type);\r\n\r\n this.ConverToRectSolid(width, length, thickness);\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n static CreateBoard(length: number, width: number, thickness: number, boardType: BoardType = BoardType.Layer)\r\n {\r\n let board = new Board();\r\n board.InitBoard(length, width, thickness, boardType);\r\n board.ApplyMatrix(board.RotateMat);\r\n board._SpaceOCS.identity();\r\n return board;\r\n }\r\n get DrillList()\r\n {\r\n return this._DrillList;\r\n }\r\n\r\n get LayerNails()\r\n {\r\n return this._LayerNails;\r\n }\r\n\r\n AppendNails(ids: ObjectId[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this._LayerNails.push(...ids);\r\n }\r\n ClearLayerNails()\r\n {\r\n this.WriteAllObjectRecord();\r\n for (let nail of this._LayerNails)\r\n {\r\n if (nail.Object && !nail.IsErase)\r\n nail.Object.Erase();\r\n }\r\n this._LayerNails.length = 0;\r\n }\r\n\r\n /**\r\n * 你可以安心的修改它,这样会直接影响到板件,因为板件对这个对象添加了代理.\r\n */\r\n get BoardProcessOption()\r\n {\r\n return this._BoardProcessOption;\r\n }\r\n\r\n set BoardProcessOption(obj: BoardProcessOption)\r\n {\r\n Object.assign(this._BoardProcessOption, obj, { [EBoardKeyList.HighSealed]: obj[EBoardKeyList.HighSealed].slice() });\r\n }\r\n get NeedUpdateRelevanceGroove()\r\n {\r\n if (super.NeedUpdateRelevanceGroove)\r\n return true;\r\n\r\n for (let k of this.RelativeHardware)\r\n {\r\n if (!k || !k.Object) continue;\r\n if (this.__CacheKnifVersion__[k.Index] !== ((k.Object)).__UpdateVersion__)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected GetRelevanceKnifes(knifs: ExtrudeSolid[])\r\n {\r\n super.GetRelevanceKnifes(knifs);\r\n for (let e of this.RelativeHardware)\r\n {\r\n if (e.IsErase) continue;\r\n let hardware = e.Object;\r\n if (hardware instanceof HardwareCompositeEntity)\r\n {\r\n if (hardware.HardwareOption.isHole)\r\n {\r\n let holes = hardware.GetAllEntity(true, e => e instanceof ExtrudeHole || e instanceof ExtrudeSolid) as (ExtrudeHole | ExtrudeSolid)[];\r\n\r\n for (let i = 0; i < holes.length; i++)\r\n {\r\n let h = holes[i];\r\n let g = h instanceof ExtrudeHole ? h.Convert2ExtrudeSolid() : h;\r\n g.__TempIndexVersion__ = { Index: hardware.Id.Index, Version: hardware.__UpdateVersion__ };\r\n knifs.push(g);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ClearRelevance(en?: ExtrudeSolid)\r\n {\r\n for (let id of this.RelativeHardware)\r\n {\r\n let e = id.Object;\r\n if (e instanceof HardwareCompositeEntity)\r\n {\r\n arrayRemoveIf(e.RelevanceBoards, i => !i || i.Index === this.Id.Index);\r\n }\r\n }\r\n this.RelativeHardware.length = 0;\r\n super.ClearRelevance(en);\r\n }\r\n\r\n get SplitBoards()\r\n {\r\n let brs = this.SplitExtrudes;\r\n //拆单或者bbs的时候会重新加入最新的原板件的排钻和层板钉数据\r\n for (let br of brs)\r\n {\r\n if (br.__OriginalEnt__)\r\n {\r\n br._DrillList = new Map(this._DrillList.entries());\r\n br._LayerNails = [...this._LayerNails];\r\n br.ProcessingGroupList = [...this.ProcessingGroupList];\r\n br._BoardProcessOption = { ...this._BoardProcessOption };\r\n //如果是矩形板,关联切割后的板件,用上下左右封边重新填充高级封边,避免近乎矩形的板件封边看上去不对 #I2AQ9R\r\n if (this.isRect)\r\n br._BoardProcessOption.highSealed.length = 0;\r\n }\r\n }\r\n return brs;\r\n }\r\n\r\n get BoardModeling()\r\n {\r\n let models: IModeling[] = [];\r\n for (let g of this.grooves)\r\n {\r\n let cu = g.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(g.OCS));\r\n\r\n let outline = Contour.CreateContour(cu, false);\r\n let holes: Contour[] = [];\r\n for (let subG of g.Grooves)\r\n {\r\n let holeCu = subG.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(subG.OCS));\r\n holes.push(Contour.CreateContour(holeCu, false));\r\n }\r\n\r\n let s = new Shape(outline, holes);\r\n\r\n models.push({\r\n shape: s,\r\n thickness: g.Thickness,\r\n dir: equaln(g.Position.applyMatrix4(this.OCSInv).z, 0) && g.Thickness < this.thickness - 1e-6 ? FaceDirection.Back : FaceDirection.Front,\r\n knifeRadius: g.KnifeRadius,\r\n addLen: g.GroovesAddLength,\r\n addWidth: g.GroovesAddWidth,\r\n addDepth: g.GroovesAddDepth,\r\n });\r\n }\r\n return models;\r\n }\r\n set BoardModeling(models: IModeling[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this.grooves.length = 0;\r\n\r\n for (let model of models)\r\n {\r\n let g = new ExtrudeSolid();\r\n g.OCS = this.OCS;\r\n g.ContourCurve = model.shape.Outline.Curve;\r\n g.Thickness = model.thickness;\r\n g.GroovesAddLength = model.addLen;\r\n g.KnifeRadius = model.knifeRadius;\r\n\r\n for (let hole of model.shape.Holes)\r\n {\r\n let subG = new ExtrudeSolid();\r\n subG.OCS = this.OCS;\r\n subG.ContourCurve = hole.Curve;\r\n subG.Thickness = model.thickness;\r\n\r\n g.AppendGroove(subG);\r\n }\r\n\r\n if (model.dir === FaceDirection.Front)\r\n g.ApplyMatrix(MoveMatrix(new Vector3(0, 0, this.thickness - g.Thickness)));\r\n\r\n this.grooves.push(g);\r\n }\r\n this.Update();\r\n }\r\n get Modeling2D()\r\n {\r\n return [...this._2DModelingList];\r\n }\r\n set Modeling2D(ms: I2DModeling[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this._2DModelingList = ms;\r\n this.OffsetPathCache.clear();\r\n this._2D3DPathObject = null;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n get Modeling3D()\r\n {\r\n return [...this._3DModelingList];\r\n }\r\n set Modeling3D(ms: I3DModeling[])\r\n {\r\n this.WriteAllObjectRecord();\r\n this._2D3DPathObject = null;\r\n this._3DModelingList = ms;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n ClearModeling2DList()\r\n {\r\n this.WriteAllObjectRecord();\r\n this._2DModelingList.length = 0;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n ClearModeling3DList()\r\n {\r\n this.WriteAllObjectRecord();\r\n this._3DModelingList.length = 0;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n get IsChaiDan()\r\n {\r\n return this._IsChaiDan;\r\n }\r\n set IsChaiDan(v: boolean)\r\n {\r\n if (this._IsChaiDan !== v)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._IsChaiDan = v;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n }\r\n ClearBoardModeling()\r\n {\r\n this.WriteAllObjectRecord();\r\n this.grooves.length = 0;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n\r\n /**\r\n * 注意传入的排钻列表,避免指针被引用\r\n */\r\n AppendDrillList(k: ObjectId, drs: ObjectId[][])\r\n {\r\n this.WriteAllObjectRecord();\r\n let oldDrs = this._DrillList.get(k);\r\n if (oldDrs)\r\n oldDrs.push(...drs);//同类型板件时,会触发这里.\r\n else\r\n this._DrillList.set(k, drs);\r\n }\r\n ClearDrillList(k: ObjectId)\r\n {\r\n let drids = this._DrillList.get(k);\r\n if (drids)\r\n {\r\n this.WriteAllObjectRecord();\r\n for (let drillents of drids)\r\n {\r\n for (let objId of drillents)\r\n {\r\n if (!objId.IsErase)\r\n objId.Object.Erase();\r\n }\r\n }\r\n this._DrillList.delete(k);\r\n\r\n if (k && k.Object)\r\n {\r\n //必须在这里删除\r\n let br = k.Object as Board;\r\n br.ClearDrillList(this.Id);\r\n }\r\n }\r\n }\r\n\r\n ClearAllDrillList()\r\n {\r\n for (const [id] of this._DrillList)\r\n {\r\n this.ClearDrillList(id);\r\n }\r\n }\r\n Erase(isErase: boolean = true)\r\n {\r\n if (isErase === this.IsErase) return;\r\n super.Erase(isErase);\r\n\r\n if (!isErase) return;\r\n\r\n //记录数据,避免下面记录的时候,排钻已经被删除,导致排钻数据被优化掉.\r\n this.WriteAllObjectRecord();\r\n\r\n for (const [, driss] of this._DrillList)\r\n {\r\n for (let dris of driss)\r\n for (let d of dris)\r\n if (d && d.Object)\r\n d.Object.Erase();\r\n }\r\n this.ClearLayerNails();\r\n }\r\n get RotateMat()\r\n {\r\n let roMat = new Matrix4();\r\n\r\n switch (this._BoardType)\r\n {\r\n case BoardType.Layer:\r\n roMat.makeBasis(\r\n new Vector3(0, 1, 0),\r\n new Vector3(-1, 0, 0),\r\n new Vector3(0, 0, 1)\r\n );\r\n break;\r\n case BoardType.Vertical:\r\n roMat.makeBasis(\r\n new Vector3(0, 1, 0),\r\n new Vector3(0, 0, 1),\r\n new Vector3(1, 0, 0)\r\n );\r\n break;\r\n case BoardType.Behind:\r\n roMat.makeBasis(\r\n new Vector3(1, 0, 0),\r\n new Vector3(0, 0, 1),\r\n new Vector3(0, -1, 0)\r\n );\r\n }\r\n return roMat;\r\n }\r\n get Height()\r\n {\r\n return this.height;\r\n }\r\n set Height(v: number)\r\n {\r\n if (this.ContourCurve instanceof Circle)\r\n return;\r\n\r\n if (!equaln(v, this.height, 1e-2))\r\n {\r\n this.WriteAllObjectRecord();\r\n let refHeight = this.height / 2;\r\n let dist = v - this.height;\r\n\r\n let contour = Contour.CreateContour(this.ContourCurve, false);\r\n let isSuccess = contour.UnEqualProportionScale(refHeight, dist, \"y\");\r\n\r\n if (isSuccess)\r\n {\r\n this.height = v;\r\n this.GrooveCheckAllAutoSplit();\r\n this.Update();\r\n }\r\n }\r\n }\r\n get Width()\r\n {\r\n return this.width;\r\n }\r\n set Width(v: number)\r\n {\r\n if (this.ContourCurve instanceof Circle)\r\n return;\r\n\r\n if (!equaln(v, this.width, 1e-2))\r\n {\r\n this.WriteAllObjectRecord();\r\n let refDist = this.width / 2;\r\n let dist = v - this.width;\r\n let contour = Contour.CreateContour(this.ContourCurve, false);\r\n let isSuccess = contour.UnEqualProportionScale(refDist, dist, \"x\");\r\n if (isSuccess)\r\n {\r\n this.width = v;\r\n this.GrooveCheckAllAutoSplit();\r\n this.Update();\r\n }\r\n }\r\n }\r\n get BoardType(): BoardType\r\n {\r\n return this._BoardType;\r\n }\r\n set BoardType(type: BoardType)\r\n {\r\n this.WriteAllObjectRecord();\r\n if (type !== this._BoardType)\r\n {\r\n let spaceCS = this._SpaceOCS.clone();\r\n this._BoardType = type;\r\n this.ApplyMatrix(this.OCSInv);\r\n\r\n this.ApplyMatrix(this.RotateMat);\r\n\r\n this._SpaceOCS.identity();\r\n\r\n this.ApplyMatrix(spaceCS);\r\n\r\n this.Update();\r\n }\r\n }\r\n\r\n //设置板件类型并且不做任何的事情\r\n SetBoardType(type: BoardType)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._BoardType = type;\r\n }\r\n\r\n //最左下角的点\r\n get MinPoint(): Vector3\r\n {\r\n switch (this._BoardType)\r\n {\r\n case BoardType.Layer:\r\n return new Vector3(0, this.height).applyMatrix4(this.OCS);\r\n case BoardType.Vertical:\r\n return this.Position;\r\n case BoardType.Behind:\r\n return new Vector3(0, 0, this.thickness).applyMatrix4(this.OCS);\r\n }\r\n }\r\n get MaxPoint(): Vector3\r\n {\r\n let pt = new Vector3(this.width, this.height, -this.thickness);\r\n pt.applyMatrix4(this.OCS);\r\n return pt;\r\n }\r\n\r\n get IsRect()\r\n {\r\n return this.isRect;\r\n }\r\n\r\n get IsSpecialShape()\r\n {\r\n return !this.isRect;\r\n }\r\n\r\n get HasGroove()\r\n {\r\n return this.grooves.length > 0;\r\n }\r\n\r\n get Name()\r\n {\r\n return this._Name;\r\n }\r\n set Name(n: string)\r\n {\r\n this.WriteAllObjectRecord();\r\n this._Name = n;\r\n }\r\n\r\n /**\r\n * 板件的轮廓,在板件坐标系中的表现方式.\r\n */\r\n get ContourCurve()\r\n {\r\n return super.ContourCurve;\r\n }\r\n set ContourCurve(cu: ExtureContourCurve)\r\n {\r\n //标识是否被初始化\r\n TempRectHoleOption.up = \"\";\r\n\r\n if (!this.contourCurve || cu.EndParam !== this.contourCurve.EndParam || !this.BoardProcessOption.drillType)\r\n {\r\n let drillTypes = [...userConfig.DrillConfigs.keys(), \"不排\"];\r\n let defaultType = this._BoardProcessOption.drillType;\r\n if (!defaultType || !drillTypes.includes(defaultType))\r\n {\r\n defaultType = drillTypes[0];\r\n this._BoardProcessOption.drillType = defaultType;\r\n }\r\n this._BoardProcessOption.highDrill = Array(cu.EndParam).fill(defaultType);\r\n }\r\n else\r\n {\r\n if (this.isRect)\r\n InitRectBoardHoleOption(this, TempRectHoleOption);\r\n }\r\n super.ContourCurve = cu;\r\n\r\n if (this.isRect && TempRectHoleOption.up)\r\n SetRectHighHole(this, TempRectHoleOption);\r\n }\r\n\r\n Explode()\r\n {\r\n return Board2Regions(this);\r\n // return this.m_Shape.Explode().map(cu => cu.ApplyMatrix(this.OCS));\r\n }\r\n RotateBoard(rox: number, roy: number, roz: number)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n this._Rotation.x = rox;\r\n this._Rotation.y = roy;\r\n this._Rotation.z = roz;\r\n\r\n let spcocs = this.SpaceOCS;\r\n let roMatX = new Matrix4().makeRotationX(rox);\r\n let roMatY = new Matrix4().makeRotationY(roy);\r\n let roMatZ = new Matrix4().makeRotationZ(roz);\r\n\r\n this.ApplyMatrix(this.OCSInv)\r\n .ApplyMatrix(this.RotateMat)\r\n .ApplyMatrix(roMatX)\r\n .ApplyMatrix(roMatY)\r\n .ApplyMatrix(roMatZ)\r\n .ApplyMatrix(spcocs);\r\n\r\n this._SpaceOCS.copy(spcocs);\r\n this.Update();\r\n }\r\n get Rotation()\r\n {\r\n return this._Rotation;\r\n }\r\n protected ApplyMirrorMatrix(m: Matrix4): this\r\n {\r\n return this;\r\n }\r\n\r\n get UCGenerator(): UVGenerator\r\n {\r\n if (this.BoardProcessOption.lines === LinesType.Positive)\r\n return boardUVGenerator;\r\n else\r\n return boardUVGenerator2;\r\n }\r\n\r\n UpdateUV(geo: Geometry, ocs: Matrix4, isRev = false)\r\n {\r\n super.UpdateUV(geo, ocs, this.BoardProcessOption.lines === LinesType.Reverse);\r\n }\r\n\r\n //从一个实体拷贝数据,实体类型必须相同.\r\n CopyFrom(obj: Board)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n let drillBak = this._DrillList;\r\n this._DrillList = new Map();\r\n let layerNailsBak = this._LayerNails;\r\n this._LayerNails = [];\r\n\r\n super.CopyFrom(obj);\r\n\r\n this._DrillList = drillBak;\r\n this._LayerNails = layerNailsBak;\r\n }\r\n\r\n Clone(): this\r\n {\r\n let br = super.Clone();\r\n br._DrillList.clear();\r\n br._LayerNails.length = 0;\r\n br.RelativeHardware.length = 0;\r\n return br;\r\n }\r\n Join(target: this)\r\n {\r\n let res = super.Join(target);\r\n if (res && target.RelativeHardware)\r\n {\r\n for (let hw of target.RelativeHardware)\r\n {\r\n if (!this.RelativeHardware.includes(hw))\r\n this.RelativeHardware.push(hw);\r\n }\r\n }\r\n\r\n return res;\r\n }\r\n private GetLinesDir()\r\n {\r\n let l: LineSegments;\r\n let len: number;\r\n let width: number;\r\n\r\n switch (this.BoardProcessOption.lines)\r\n {\r\n case LinesType.Positive:\r\n len = this.height / 3;\r\n width = Math.min(this.width, this.height) / 8;\r\n break;\r\n case LinesType.Reverse:\r\n len = this.width / 2;\r\n width = Math.min(this.width, this.height) / 8;\r\n break;\r\n case LinesType.CanReversal:\r\n len = this.height / 3;\r\n width = this.width / 2;\r\n default:\r\n break;\r\n }\r\n\r\n l = new LineSegments(\r\n BufferGeometryUtils.CreateFromPts(PointShapeUtils.LinesDirPts(len, width, this.BoardProcessOption.lines)),\r\n ColorMaterial.GetLineMaterial(8)\r\n );\r\n let l1 = l.clone();\r\n l1.material = ColorMaterial.GetLineMaterial(7);\r\n l.position.set(this.width / 2, this.height / 2, 0);\r\n l1.position.set(this.width / 2, this.height / 2, this.thickness);\r\n\r\n l.updateMatrix();\r\n l1.updateMatrix();\r\n\r\n return [l, l1];\r\n }\r\n private _2D3DPathObject: Object3D;\r\n private Get2DAnd3DPaths(obj: Object3D)\r\n {\r\n if (this._2D3DPathObject)\r\n return this._2D3DPathObject;\r\n\r\n this._2D3DPathObject = new Object3D();\r\n let group2 = new Object3D();\r\n for (let vm of this._2DModelingList)\r\n {\r\n let path = vm.path;\r\n for (let item of vm.items)\r\n {\r\n let tempPath = this.GetOffsetPath(path, item);\r\n if (tempPath)\r\n {\r\n let curves = VData2Curve(VKnifToolPath(tempPath, item.depth, item.knife.angle / 2));\r\n let o = new Object3D();\r\n for (let c of curves)\r\n {\r\n c.ColorIndex = tempPath.ColorIndex;\r\n o.add(c.GetDrawObjectFromRenderType(RenderType.Wireframe));\r\n }\r\n if (vm.dir === FaceDirection.Back)\r\n o.applyMatrix4(ZMirrorMatrix);\r\n else\r\n o.position.setZ(this.thickness);\r\n o.updateMatrix();\r\n group2.add(o);\r\n }\r\n }\r\n }\r\n let group = new Object3D();\r\n let tempIndex = 1;\r\n let tempMap = new Map();\r\n for (let vm of this._3DModelingList)\r\n {\r\n let key = `${vm.dir}-${vm.knife.id}`;\r\n let color = tempMap.get(key);\r\n if (!color)\r\n {\r\n color = tempIndex;\r\n tempIndex++;\r\n tempMap.set(key, color);\r\n }\r\n\r\n for (let i = 0; i < vm.path.length - 1; i++)\r\n {\r\n let d1 = vm.path[i];\r\n let d2 = vm.path[i + 1];\r\n if (equaln(d1.bul, 0))\r\n {\r\n let geo = BufferGeometryUtils.CreateFromPts([d1.pt, d2.pt]);\r\n group.add(new TLine(geo, ColorMaterial.GetLineMaterial(color)));\r\n }\r\n else\r\n {\r\n let arc = new Arc().ParseFromBul(d1.pt, d2.pt, d1.bul);\r\n arc.ColorIndex = color;\r\n group.add(arc.GetDrawObjectFromRenderType(RenderType.Wireframe));\r\n }\r\n }\r\n }\r\n\r\n this._2D3DPathObject.add(group);\r\n this._2D3DPathObject.add(group2);\r\n\r\n return this._2D3DPathObject;\r\n }\r\n HandleSpliteEntitys(splitEntitys: this[])\r\n {\r\n let nails: ObjectId[] = [];\r\n for (let nail of this.LayerNails)\r\n {\r\n if (nail?.Object && !nail.IsErase)\r\n nails.push(nail);\r\n }\r\n let record = this._Owner.Object as BlockTableRecord;\r\n for (let en of splitEntitys)\r\n {\r\n let ocsInv = en.OCSInv;\r\n let nids: ObjectId[] = [];\r\n let needAddNailEnts: Board[] = [];\r\n nails = nails.filter(id =>\r\n {\r\n let n = id.Object as CylinderHole;\r\n let position = n.Position.applyMatrix4(ocsInv).setZ(0);\r\n if (en.contourCurve.PtInCurve(position))\r\n {\r\n let n1 = n.Clone();\r\n n1.MId = n.MId;\r\n n1.FId = n.FId;\r\n\r\n if (n.MId === this.Id)\r\n {\r\n n1.MId = en.Id;\r\n needAddNailEnts.push(n1.FId.Object as Board);\r\n }\r\n\r\n if (n.FId === this.Id)\r\n {\r\n n1.FId = en.Id;\r\n needAddNailEnts.push(n1.MId.Object as Board);\r\n }\r\n\r\n n.Erase();\r\n record.Add(n1);\r\n nids.push(n1.Id);\r\n\r\n return false;\r\n }\r\n return true;\r\n });\r\n en.AppendNails(nids);\r\n needAddNailEnts.forEach(e => e.AppendNails(nids));\r\n\r\n if (!userConfig.openDrillingReactor)\r\n {\r\n for (let [bid, idss] of this._DrillList)\r\n {\r\n if (!bid) continue;\r\n let board = bid.Object as Board;\r\n for (let ids of idss)\r\n {\r\n if (!ids[0]?.Object || ids[0].IsErase) continue;\r\n let holes = ids.map(i => i.Object) as CylinderHole[];\r\n if (holes[0] instanceof CylinderHole)\r\n {\r\n let isInBoard = CyHoleInBoard(holes, en, en.OCSInv);\r\n if (isInBoard)\r\n {\r\n let cloneHoles = holes.map(h => h.Clone());\r\n\r\n for (let h of cloneHoles)\r\n {\r\n if (h.FId === this.Id)\r\n {\r\n h.FId = en.Id;\r\n }\r\n if (h.MId === this.Id)\r\n {\r\n h.MId = en.Id;\r\n }\r\n record.Add(h);\r\n }\r\n for (let h of holes)\r\n h.Erase();\r\n en.AppendDrillList(bid, [cloneHoles.map(c => c.Id)]);\r\n board.AppendDrillList(en.Id, [cloneHoles.map(c => c.Id)]);\r\n }\r\n }\r\n else\r\n {\r\n //TODO:处理自定义排钻\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n InitDrawObject(renderType = RenderType.Wireframe)\r\n {\r\n let obj: Object3D;\r\n if (renderType === RenderType.Edge)\r\n {\r\n obj = new Object3D();\r\n obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(8)));\r\n this.CheckSealing(obj);\r\n }\r\n else\r\n {\r\n obj = super.InitDrawObject(renderType);\r\n }\r\n this.HandleBoardMaterial(renderType, obj);\r\n return obj;\r\n }\r\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\r\n {\r\n let o = super.UpdateDrawObject(renderType, obj);\r\n if (renderType === RenderType.Edge)\r\n {\r\n obj.add(new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(8)));\r\n this.CheckSealing(obj);\r\n }\r\n this.HandleBoardMaterial(renderType, obj);\r\n\r\n return o;\r\n }\r\n OffsetPathCache = new Map();\r\n private GetOffsetPath(path: Polyline, item: I2DModeingItem): Polyline\r\n {\r\n if (item.offset === 0)\r\n {\r\n return path;\r\n }\r\n else\r\n {\r\n let cache = this.OffsetPathCache.get(path);\r\n if (!cache)\r\n {\r\n cache = {};\r\n this.OffsetPathCache.set(path, cache);\r\n }\r\n let tempPath = cache[item.offset.toString()];\r\n if (!tempPath)\r\n {\r\n tempPath = path.GetOffsetCurves(item.offset)[0];\r\n cache[item.offset.toString()] = tempPath;\r\n }\r\n return tempPath;\r\n }\r\n }\r\n private HandleBoardMaterial(renderType: RenderType, obj: Object3D)\r\n {\r\n if (!this.IsChaiDan)\r\n {\r\n if (renderType === RenderType.Conceptual || renderType === RenderType.Physical2)\r\n {\r\n obj.children.length = 1;\r\n (obj.children[0] as Mesh).material = ColorMaterial.GrayTransparentMeshMaterial;\r\n }\r\n else if (renderType !== RenderType.Wireframe)\r\n {\r\n (obj as Mesh).material = ColorMaterial.GrayTransparentMeshMaterial;\r\n }\r\n }\r\n if ((renderType === RenderType.Wireframe || renderType === RenderType.Conceptual) && userConfig.showLines && this.IsChaiDan)\r\n obj.add(...this.GetLinesDir());\r\n\r\n\r\n if (this.Id)\r\n {\r\n let o = this.Get2DAnd3DPaths(obj);\r\n if (o.parent)\r\n obj.children.push(o);\r\n else\r\n obj.add(o);\r\n }\r\n\r\n }\r\n UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D)\r\n {\r\n super.UpdateDrawObjectMaterial(renderType, obj);\r\n if (!this.IsChaiDan)\r\n {\r\n if (renderType === RenderType.Conceptual || renderType === RenderType.Physical2)\r\n {\r\n (obj.children[0] as Mesh).material = ColorMaterial.GrayTransparentMeshMaterial;\r\n }\r\n else if (renderType !== RenderType.Wireframe)\r\n {\r\n (obj as Mesh).material = ColorMaterial.GrayTransparentMeshMaterial;\r\n }\r\n }\r\n }\r\n CheckSealing(obj: Object3D)\r\n {\r\n let sealingInfo = new Map(userConfig.sealingColorMap.filter(d => d[0] && d[1]) as [string, string][]);\r\n if (sealingInfo.size === 0) return;\r\n let cus = GetBoardSealingCurves(this);\r\n let highSeals = GetBoardHighSeal(this, cus);\r\n for (let i = 0; i < cus.length; i++)\r\n {\r\n let size = highSeals[i].size.toString();\r\n let color = sealingInfo.get(size);\r\n if (color)\r\n {\r\n cus[i].Position = cus[i].Position.add(new Vector3(0, 0, this.thickness / 2));\r\n let l = cus[i].GetDrawObjectFromRenderType(RenderType.Wireframe) as LineSegments;\r\n l.material = ColorMaterial.GetLineMaterial(parseFloat(color));\r\n obj.add(l);\r\n }\r\n }\r\n }\r\n GetStretchPoints()\r\n {\r\n let pts = this.GetGripOrStretchPoints(DragPointType.Stretch);\r\n for (let m of this._2DModelingList)\r\n {\r\n pts.push(...m.path.GetStretchPoints().map(p => p.add(new Vector3(0, 0, m.dir === FaceDirection.Front ? this.thickness : 0)).applyMatrix4(this.OCS)));\r\n }\r\n return pts;\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n let exCount = arraySum(this.GetStrectchPointCountList(DragPointType.Stretch));\r\n let originIndexList: number[] = [];\r\n let mIndexList: number[] = [];\r\n for (let i of indexList)\r\n {\r\n if (i < exCount)\r\n originIndexList.push(i);\r\n else\r\n mIndexList.push(i - exCount);\r\n }\r\n let oldOcs = this.OCS;\r\n super.MoveStretchPoints(originIndexList, vec);\r\n\r\n if (!this.Id) return;\r\n\r\n arraySortByNumber(mIndexList);\r\n let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec));\r\n let offset = 0;\r\n let icount = mIndexList.length;\r\n let i = 0;\r\n for (let m of this._2DModelingList)\r\n {\r\n let count = m.path.GetDragPointCount(DragPointType.Stretch);\r\n offset += count;\r\n\r\n let iList: number[] = [];\r\n\r\n for (; i < icount; i++)\r\n {\r\n if (mIndexList[i] < offset)\r\n iList.push(mIndexList[i] - offset + count);\r\n else\r\n break;\r\n }\r\n if (iList.length > 0)\r\n {\r\n m.path.MoveStretchPoints(iList, localVec);\r\n }\r\n m.path.ApplyMatrix(oldOcs).ApplyMatrix(this.OCSInv);\r\n }\r\n\r\n this.OffsetPathCache.clear();\r\n this._2D3DPathObject = null;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n let pts = super.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform);\r\n if (snapMode === ObjectSnapMode.End)\r\n {\r\n for (let vm of this._2DModelingList)\r\n {\r\n if (!this.OffsetPathCache.has(vm.path)) continue;\r\n for (let item of vm.items)\r\n {\r\n if (item.offset === 0) continue;\r\n\r\n let paths = this.OffsetPathCache.get(vm.path);\r\n let polyline = paths[item.offset.toString()];\r\n let ps = polyline.GetStretchPoints();\r\n\r\n for (let p of ps)\r\n {\r\n if (vm.dir === FaceDirection.Front)\r\n p.add(new Vector3(0, 0, this.thickness));\r\n p.applyMatrix4(this.OCS);\r\n }\r\n pts.push(...ps);\r\n }\r\n }\r\n }\r\n return pts;\r\n }\r\n DeferUpdate()\r\n {\r\n if (this.NeedUpdateFlag & UpdateDraw.Matrix)\r\n {\r\n if (this.RelativeHardware.some(id => !id.IsErase))\r\n this.NeedUpdateFlag |= UpdateDraw.Geometry;\r\n }\r\n super.DeferUpdate();\r\n }\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n let ver = file.Read();\r\n if (ver < 6)\r\n this._SpaceOCS.fromArray(file.Read());\r\n this._BoardType = file.Read();\r\n this._Name = file.Read();\r\n //兼容旧版本\r\n if (ver > 2)\r\n {\r\n deserializationBoardData(file, this._BoardProcessOption, ver);\r\n }\r\n else\r\n {\r\n let opt = file.Read();\r\n this._BoardProcessOption = Object.assign(this._BoardProcessOption,\r\n typeof opt === \"string\" ? JSON.parse(opt) : opt);\r\n }\r\n\r\n //读取排钻列表\r\n this._DrillList.clear();\r\n let size = file.Read();\r\n\r\n //没有与任何板件关联的排钻\r\n let noRelevancyDrillings: ObjectId[][] = [];\r\n for (let i = 0; i < size; i++)\r\n {\r\n let id = file.ReadObjectId();\r\n let drIdList: ObjectId[][] = [];\r\n let count = file.Read();\r\n for (let i = 0; i < count; i++)\r\n {\r\n let drIDs: ObjectId[] = [];\r\n let count1 = file.Read();\r\n for (let j = 0; j < count1; j++)\r\n {\r\n let fileId = file.ReadObjectId();\r\n fileId && drIDs.push(fileId);\r\n }\r\n if (drIDs.length > 0)\r\n drIdList.push(drIDs);\r\n }\r\n\r\n if (drIdList.length === 0)\r\n continue;\r\n\r\n if (!id)\r\n noRelevancyDrillings.push(...drIdList);\r\n else\r\n this._DrillList.set(id, drIdList);\r\n }\r\n\r\n if (noRelevancyDrillings.length > 0)\r\n this._DrillList.set(undefined, noRelevancyDrillings);\r\n\r\n if (ver > 1)\r\n {\r\n this._LayerNails.length = 0;\r\n let nailsCount = file.Read();\r\n for (let i = 0; i < nailsCount; i++)\r\n {\r\n let objId = file.ReadObjectId();\r\n if (objId)\r\n this._LayerNails.push(objId);\r\n }\r\n }\r\n if (ver > 4)\r\n this._Rotation = { x: file.Read(), y: file.Read(), z: file.Read() };\r\n if (ver >= 7)\r\n {\r\n let count = file.Read();\r\n this.RelativeHardware.length = 0;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let objId = file.ReadObjectId();\r\n if (objId)\r\n this.RelativeHardware.push(objId);\r\n }\r\n }\r\n if (ver >= 8)\r\n this.OpenDir = file.Read();\r\n\r\n if (ver >= 9)\r\n this._IsChaiDan = file.Read();\r\n\r\n if (ver >= 10)\r\n {\r\n DeserializationBoard2DModeingData(file, this._2DModelingList, ver);\r\n DeserializationBoard3DModeingData(file, this._3DModelingList, ver);\r\n }\r\n\r\n this.OffsetPathCache.clear();\r\n this._2D3DPathObject = null;\r\n\r\n }\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n file.Write(10);\r\n // file.Write(this._SpaceOCS.toArray()); ver < 6\r\n file.Write(this._BoardType);\r\n file.Write(this._Name);\r\n serializeBoardData(file, this._BoardProcessOption);\r\n\r\n file.Write(this._DrillList.size);\r\n for (let [id, idList] of this._DrillList)\r\n {\r\n file.WriteObjectId(id);\r\n file.Write(idList.length);\r\n for (let ids of idList)\r\n {\r\n file.Write(ids.length);\r\n for (let id of ids)\r\n file.WriteObjectId(id);\r\n }\r\n }\r\n file.Write(this._LayerNails.length);\r\n for (let nail of this._LayerNails)\r\n {\r\n file.WriteObjectId(nail);\r\n }\r\n file.Write(this._Rotation.x);\r\n file.Write(this._Rotation.y);\r\n file.Write(this._Rotation.z);\r\n\r\n file.Write(this.RelativeHardware.length);\r\n for (let id of this.RelativeHardware)\r\n file.WriteObjectId(id);\r\n\r\n file.Write(this.OpenDir);\r\n file.Write(this._IsChaiDan);\r\n\r\n SerializeBoard2DModeingData(file, this._2DModelingList);\r\n SerializeBoard3DModeingData(file, this._3DModelingList);\r\n }\r\n}\r\n","import { BufferGeometry, Float32BufferAttribute, Geometry, Line, LineBasicMaterial, LineSegments, Object3D, Shape as TShape, Vector3 } from \"three\";\r\nimport { ColorMaterial } from \"../Common/ColorPalette\";\r\nimport { FixIndex } from \"../Common/Utils\";\r\nimport { Board } from \"../DatabaseServices/Entity/Board\";\r\nimport { Contour } from \"../DatabaseServices/Contour\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { ExtrudeSolid } from \"../DatabaseServices/Entity/Extrude\";\r\nimport { Shape } from \"../DatabaseServices/Shape\";\r\nimport { FaceDirection } from \"../UI/Store/BoardInterface\";\r\nimport { MoveMatrix } from \"./GeUtils\";\r\nimport { ExtrudeHole } from \"../DatabaseServices/3DSolid/ExtrudeHole\";\r\n\r\n//FIXME: #IWBPB 性能缺陷和BUG. 等待废弃或者改进\r\nexport function CreateWireframe(en3D: Board | ExtrudeSolid)\r\n{\r\n let mat = ColorMaterial.GetLineMaterial(1);\r\n let lines: Object3D[] = [];\r\n\r\n let upShape = new Shape(Contour.CreateContour(en3D.ContourCurve));\r\n let downShape = new Shape(Contour.CreateContour(en3D.ContourCurve));\r\n\r\n if (en3D instanceof Board)\r\n {\r\n for (let m of en3D.BoardModeling)\r\n {\r\n let geo = new BufferGeometry().setFromPoints(m.shape.Shape.getPoints(10));\r\n let ocs = m.shape.Outline.Curve.OCS;\r\n let cloneShape = m.shape.Clone();\r\n cloneShape.Outline.Curve.Position = cloneShape.Outline.Curve.Position.setZ(0);\r\n\r\n let isCut = false;\r\n appendLines(m.shape.Outline.Curve, en3D.Thickness, lines, mat);\r\n\r\n if (m.thickness < en3D.Thickness)\r\n {\r\n appendLines(m.shape.Outline.Curve, m.thickness, lines, mat);\r\n //正面\r\n if (m.dir === FaceDirection.Front)\r\n {\r\n let ss = upShape.SubstactBoolOperation([cloneShape]);\r\n if (ss.length > 0 && ss[0].Holes.length === 0)\r\n {\r\n upShape = ss[0];\r\n isCut = true;\r\n }\r\n }\r\n else\r\n {\r\n let ss = downShape.SubstactBoolOperation([cloneShape]);\r\n if (ss.length > 0 && ss[0].Holes.length === 0)\r\n {\r\n downShape = ss[0];\r\n isCut = true;\r\n }\r\n }\r\n }\r\n if (!isCut || m.dir === FaceDirection.Back)\r\n {\r\n let geoClone = geo.clone();\r\n geoClone.applyMatrix4(MoveMatrix(new Vector3(0, 0, m.thickness))).applyMatrix4(ocs);\r\n lines.push(new Line(geoClone, mat));\r\n }\r\n\r\n if (!isCut || m.dir === FaceDirection.Front)\r\n {\r\n lines.push(new Line(geo.applyMatrix4(ocs), mat));\r\n }\r\n }\r\n }\r\n\r\n let downGeo = new BufferGeometry().setFromPoints(downShape.Shape.getPoints(10))\r\n .applyMatrix4(en3D.ContourCurve.OCS);\r\n let upGeo = new BufferGeometry().setFromPoints(upShape.Shape.getPoints(10))\r\n .applyMatrix4(MoveMatrix(new Vector3(0, 0, en3D.Thickness)))\r\n .applyMatrix4(en3D.ContourCurve.OCS);\r\n\r\n lines.push(\r\n new Line(downGeo, mat),\r\n new Line(upGeo, mat));\r\n\r\n appendLines(en3D.ContourCurve, en3D.Thickness, lines, mat);\r\n\r\n return lines;\r\n}\r\n\r\nfunction appendLines(cu: Curve, thick: number, lines: Object3D[], mat: LineBasicMaterial)\r\n{\r\n let pts = cu.GetStretchPoints();\r\n for (let p of pts)\r\n {\r\n let geo = new Geometry().setFromPoints([p, p.clone().add(new Vector3(0, 0, thick))]);\r\n lines.push(new Line(geo, mat));\r\n }\r\n}\r\n\r\nexport function FastWireframe(br: ExtrudeSolid, color = 0)\r\n{\r\n color = color || br.ColorIndex;\r\n let material = ColorMaterial.GetLineMaterial(color);\r\n\r\n let thickness = br.Thickness;\r\n\r\n let cu = br.ContourCurve;\r\n let pts = cu.Shape.getPoints(6);\r\n\r\n let geo = new BufferGeometry();\r\n let coords: number[] = [];\r\n let edgeCoords: number[] = [];\r\n\r\n for (let p of pts)\r\n {\r\n coords.push(p.x, p.y, 0);\r\n if (p[\"_mask_\"])\r\n edgeCoords.push(p.x, p.y, 0, p.x, p.y, thickness);\r\n }\r\n for (let p of pts)\r\n coords.push(p.x, p.y, thickness);\r\n\r\n let edgeGeo = new BufferGeometry();\r\n edgeGeo.setAttribute('position', new Float32BufferAttribute(edgeCoords, 3));\r\n geo.setAttribute('position', new Float32BufferAttribute(coords, 3));\r\n\r\n let line = new Line(geo, material);\r\n line.applyMatrix4(cu.OCS);\r\n\r\n let edge = new LineSegments(edgeGeo, material);\r\n edge.applyMatrix4(cu.OCS);\r\n\r\n let result = [line, edge];\r\n\r\n let ocsInv = br.OCSInv;\r\n for (let g of br.Grooves)\r\n {\r\n let m = ocsInv.clone().multiply(g.OCS);\r\n let lines = FastWireframe(g, color);\r\n for (let l of lines)\r\n {\r\n l.applyMatrix4(m);\r\n result.push(l);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\nexport function FastWireframe2(dr: ExtrudeHole, color = 0)\r\n{\r\n color = color || dr.ColorIndex;\r\n let material = ColorMaterial.GetLineMaterial(color);\r\n\r\n let height = dr.Height;\r\n\r\n let cu = dr.ContourCurve;\r\n let pts = cu.Shape.getPoints(6);\r\n\r\n let geo = new BufferGeometry();\r\n let coords: number[] = [];\r\n let edgeCoords: number[] = [];\r\n\r\n for (let p of pts)\r\n {\r\n coords.push(p.x, p.y, 0);\r\n if (p[\"_mask_\"])\r\n edgeCoords.push(p.x, p.y, 0, p.x, p.y, height);\r\n }\r\n for (let p of pts)\r\n coords.push(p.x, p.y, height);\r\n\r\n let edgeGeo = new BufferGeometry();\r\n edgeGeo.setAttribute('position', new Float32BufferAttribute(edgeCoords, 3));\r\n geo.setAttribute('position', new Float32BufferAttribute(coords, 3));\r\n\r\n let line = new Line(geo, material);\r\n line.applyMatrix4(cu.OCS);\r\n\r\n let edge = new LineSegments(edgeGeo, material);\r\n edge.applyMatrix4(cu.OCS);\r\n\r\n let result = [line, edge];\r\n\r\n return result;\r\n}\r\n","import { Box3, Vector3 } from \"three\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { IntersectOption } from \"../GraphicsSystem/IntersectWith\";\r\n\r\n/**\r\n * 简化优化版本的曲线求交, 优化版本可以参考(算法导论33.2 确定任意一对线段是否相交 p599)\r\n */\r\nexport class CurveIntersection\r\n{\r\n //用来缓存的曲线包围盒\r\n protected boxMap: Map = new Map();\r\n\r\n /**\r\n * 交点数据集,key 为曲线 value 为和它相交的(曲线和交点的Map)\r\n */\r\n intersect: Map> = new Map();\r\n intersect2: Map = new Map();\r\n\r\n /**\r\n * @param {Curve[]} cus 请注意数组的顺序会被更改,如果你在意数组的顺序,请拷贝数组后传进来\r\n * @memberof CurveIntersection\r\n */\r\n constructor(cus: Curve[], parseIntersectionParam = false, intType = IntersectOption.OnBothOperands, protected fuzz = 1e-6)\r\n {\r\n this.GenBox(cus);\r\n //按x排序\r\n this.SortCurve(cus);\r\n\r\n let count = cus.length;\r\n for (let i = 0; i < count; i++)\r\n {\r\n let c1 = cus[i];\r\n let c1d = this.GetIntersect(c1);\r\n\r\n let c1b = this.boxMap.get(c1);\r\n for (let j = i + 1; j < count; j++)\r\n {\r\n let c2 = cus[j];\r\n\r\n //过滤掉不需要计算的曲线\r\n let c2b = this.boxMap.get(c2);\r\n\r\n if (c2b.min.x - c1b.max.x > fuzz)\r\n break;\r\n if (c2b.min.y - c1b.max.y > fuzz)\r\n continue;\r\n\r\n let ints = this.IntersectWith2(c1, c2, intType);\r\n if (ints.length > 0)\r\n {\r\n let pts = ints.map(i => i.pt);\r\n c1d.set(c2, pts);\r\n this.GetIntersect(c2).set(c1, pts);\r\n\r\n if (parseIntersectionParam)\r\n {\r\n this.AppendIntersectionParams(c1, ints.map(i => i.thisParam));\r\n this.AppendIntersectionParams(c2, ints.map(i => i.argParam));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption)\r\n {\r\n return c1.IntersectWith2(c2, intType);\r\n }\r\n\r\n protected AppendIntersectionParams(curve: Curve, params: number[])\r\n {\r\n let arr = this.intersect2.get(curve);\r\n if (!arr)\r\n {\r\n arr = [];\r\n this.intersect2.set(curve, arr);\r\n }\r\n arr.push(...params);\r\n }\r\n\r\n protected GenBox(cus: Curve[])\r\n {\r\n for (let c of cus)\r\n this.boxMap.set(c, c.BoundingBox);\r\n }\r\n\r\n protected SortCurve(cus: Curve[])\r\n {\r\n cus.sort((c1, c2) =>\r\n {\r\n return this.boxMap.get(c1).min.x - this.boxMap.get(c2).min.x;\r\n });\r\n }\r\n\r\n GetIntersect(cu: Curve): Map\r\n {\r\n if (this.intersect.has(cu))\r\n return this.intersect.get(cu);\r\n\r\n let m = new Map();\r\n this.intersect.set(cu, m);\r\n return m;\r\n }\r\n}\r\n\r\nexport class CurveIntersection2 extends CurveIntersection\r\n{\r\n /**\r\n * Curve2Polyline使用这个时,为了避免多余的交点导致曲线切割过度,过滤掉无关的点\r\n */\r\n protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption)\r\n {\r\n let pts = c1.IntersectWith2(c2, intType);\r\n return pts.filter(p =>\r\n {\r\n let inC1 = c1.ParamOnCurve(p.thisParam) || c1.StartPoint.distanceTo(p.pt) < this.fuzz || c1.EndPoint.distanceTo(p.pt) < this.fuzz;\r\n if (!inC1) return false;\r\n let inC2 = c2.ParamOnCurve(p.argParam) || c2.StartPoint.distanceTo(p.pt) < this.fuzz || c2.EndPoint.distanceTo(p.pt) < this.fuzz;\r\n return inC2;\r\n });\r\n }\r\n}\r\n","import { Vector3 } from \"three\";\r\nimport { Polyline } from \"../api\";\r\nimport { Contour } from \"../DatabaseServices/Contour\";\r\nimport { Circle } from \"../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { IntersectOption } from \"../GraphicsSystem/IntersectWith\";\r\nimport { CurveIntersection2 } from \"./CurveIntersection\";\r\nimport { RegionParse } from \"./RegionParse\";\r\n\r\n/**\r\n * 某些时候我们不能创建轮廓,此时我们使用类似c2r的方法来构建一个外部轮廓.\r\n */\r\nexport function CreateContour2(curves: Curve[], fuzz = 1e-4): Contour | undefined\r\n{\r\n for (let c of curves)\r\n if (c instanceof Circle)\r\n return Contour.CreateContour(c);\r\n\r\n let extendsMinDistSq = fuzz * fuzz;\r\n\r\n let intersect = new CurveIntersection2(curves, false, IntersectOption.ExtendBoth, fuzz);\r\n\r\n let curves2: Curve[] = [];\r\n\r\n //延伸+打断\r\n for (let [cu, pmap] of intersect.intersect)\r\n {\r\n let sp = cu.StartPoint;\r\n let ep = cu.EndPoint;\r\n\r\n let epExtend: Vector3;\r\n let epDist = Infinity;\r\n let spExtend: Vector3;\r\n let spDist = Infinity;\r\n\r\n let isClose = cu.IsClose;\r\n\r\n let ipts: Vector3[] = [];\r\n for (let [, pts] of pmap)\r\n {\r\n ipts.push(...pts);\r\n\r\n if (!isClose)\r\n for (let p of pts)\r\n {\r\n let d = p.distanceToSquared(ep);\r\n if (d < epDist)\r\n {\r\n epDist = d;\r\n epExtend = p;\r\n }\r\n d = p.distanceToSquared(sp);\r\n if (d < spDist)\r\n {\r\n spDist = d;\r\n spExtend = p;\r\n }\r\n }\r\n }\r\n\r\n if (!isClose)\r\n {\r\n //延伸\r\n if (epDist > 0 && epDist < extendsMinDistSq)\r\n {\r\n let param = cu.GetParamAtPoint(epExtend);\r\n if (param > cu.EndParam)\r\n cu.Extend(param);\r\n }\r\n if (spDist > 0 && spDist < extendsMinDistSq)\r\n {\r\n let param = cu.GetParamAtPoint(spExtend);\r\n if (param < 0)\r\n cu.Extend(param);\r\n }\r\n }\r\n\r\n //打断\r\n let curves: Curve[];\r\n if (ipts.length > 0)\r\n curves = cu.GetSplitCurvesByPts(ipts);\r\n else\r\n curves = [cu];\r\n\r\n let tempCus: Curve[] = [];\r\n for (let c of curves)\r\n {\r\n if (c instanceof Polyline)\r\n tempCus.push(...c.Explode());\r\n else\r\n tempCus.push(c);\r\n }\r\n\r\n curves2.push(...tempCus);\r\n }\r\n\r\n let parse = new RegionParse(curves2);\r\n\r\n for (let rs of parse.RegionsOutline)\r\n {\r\n let curves = rs.map(r => r.curve);\r\n return Contour.CreateContour(curves, false);\r\n }\r\n}\r\n","import { Vec2, Vector2, Vector3 } from \"three\";\r\nimport { FixIndex } from \"../Common/Utils\";\r\nimport { AsVector3 } from \"./GeUtils\";\r\n\r\n/**\r\n * 快速的对点表进行偏移\r\n * @param contour\r\n * @param [offsetDist=1]\r\n * @param [ignoreSpike=true] 忽略尖角优化(如果不忽略,那么尖角将会变钝(有点奇怪))\r\n * @returns 偏移后的点表\r\n */\r\nexport function FastOffset(contour: Vector3[], offsetDist = 1, ignoreSpike = true): Vector3[]\r\n{\r\n let res: Vector3[] = [];\r\n\r\n for (let i = 0; i < contour.length; i++)\r\n {\r\n let v = AsVector3(getBevelVec(contour[i], contour[FixIndex(i - 1, contour)], contour[FixIndex(i + 1, contour)]));\r\n // TestDraw(new Line(contour[i], contour[i].clone().add(v)), 3);\r\n let p = v.multiplyScalar(offsetDist).add(contour[i]);\r\n res.push(p);\r\n }\r\n return res;\r\n}\r\n\r\n//Ref:threejs ExtrudeGeometry源码\r\nfunction getBevelVec(inPt: Vec2, inPrev: Vec2, inNext: Vec2, ignoreSpike = true): Vector2\r\n{\r\n\r\n // computes for inPt the corresponding point inPt' on a new contour\r\n // shifted by 1 unit (length of normalized vector) to the left\r\n // if we walk along contour clockwise, this new contour is outside the old one\r\n //\r\n // inPt' is the intersection of the two lines parallel to the two\r\n // adjacent edges of inPt at a distance of 1 unit on the left side.\r\n\r\n let v_trans_x: number, v_trans_y: number, shrink_by: number; // resulting translation vector for inPt\r\n\r\n // good reading for geometry algorithms (here: line-line intersection)\r\n // http://geomalgorithms.com/a05-_intersect-1.html\r\n\r\n const v_prev_x = inPt.x - inPrev.x,\r\n v_prev_y = inPt.y - inPrev.y;\r\n const v_next_x = inNext.x - inPt.x,\r\n v_next_y = inNext.y - inPt.y;\r\n\r\n const v_prev_lensq = (v_prev_x * v_prev_x + v_prev_y * v_prev_y);\r\n\r\n // check for collinear edges\r\n const collinear0 = (v_prev_x * v_next_y - v_prev_y * v_next_x);\r\n\r\n if (Math.abs(collinear0) > Number.EPSILON)\r\n {\r\n // not collinear\r\n // length of vectors for normalizing\r\n const v_prev_len = Math.sqrt(v_prev_lensq);\r\n const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\r\n // shift adjacent points by unit vectors to the left\r\n const ptPrevShift_x = (inPrev.x - v_prev_y / v_prev_len);\r\n const ptPrevShift_y = (inPrev.y + v_prev_x / v_prev_len);\r\n\r\n const ptNextShift_x = (inNext.x - v_next_y / v_next_len);\r\n const ptNextShift_y = (inNext.y + v_next_x / v_next_len);\r\n // scaling factor for v_prev to intersection point\r\n const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y -\r\n (ptNextShift_y - ptPrevShift_y) * v_next_x) /\r\n (v_prev_x * v_next_y - v_prev_y * v_next_x);\r\n\r\n // vector from inPt to intersection point\r\n\r\n v_trans_x = (ptPrevShift_x + v_prev_x * sf - inPt.x);\r\n v_trans_y = (ptPrevShift_y + v_prev_y * sf - inPt.y);\r\n\r\n // Don't normalize!, otherwise sharp corners become ugly\r\n // but prevent crazy spikes\r\n const v_trans_lensq = (v_trans_x * v_trans_x + v_trans_y * v_trans_y);\r\n if (v_trans_lensq <= 2 || ignoreSpike)\r\n return new Vector2(v_trans_x, v_trans_y);\r\n else\r\n shrink_by = Math.sqrt(v_trans_lensq / 2);\r\n }\r\n else\r\n {\r\n // handle special case of collinear edges\r\n let direction_eq = false; // assumes: opposite\r\n\r\n if (v_prev_x > Number.EPSILON)\r\n {\r\n if (v_next_x > Number.EPSILON)\r\n direction_eq = true;\r\n }\r\n else\r\n {\r\n if (v_prev_x < - Number.EPSILON)\r\n {\r\n if (v_next_x < - Number.EPSILON)\r\n direction_eq = true;\r\n }\r\n else\r\n {\r\n if (Math.sign(v_prev_y) === Math.sign(v_next_y))\r\n direction_eq = true;\r\n }\r\n }\r\n\r\n if (direction_eq || ignoreSpike)\r\n {\r\n // console.log(\"Warning: lines are a straight sequence\");\r\n v_trans_x = - v_prev_y;\r\n v_trans_y = v_prev_x;\r\n shrink_by = Math.sqrt(v_prev_lensq);\r\n }\r\n else\r\n {\r\n // console.log(\"Warning: lines are a straight spike\");\r\n v_trans_x = v_prev_x;\r\n v_trans_y = v_prev_y;\r\n shrink_by = Math.sqrt(v_prev_lensq / 2);\r\n }\r\n }\r\n return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\r\n}\r\n","import { BufferGeometry, Float32BufferAttribute, MathUtils, Matrix4, Shape as TShape, ShapeUtils, Vector3 } from \"three\";\r\nimport { arrayRemoveDuplicateBySort, arraySortByNumber } from \"../Common/ArrayExt\";\r\nimport { curveLinkGroup } from \"../Common/CurveUtils\";\r\nimport { clamp, FixIndex } from \"../Common/Utils\";\r\nimport { Contour } from \"../DatabaseServices/Contour\";\r\nimport { Arc } from \"../DatabaseServices/Entity/Arc\";\r\nimport { Board } from \"../DatabaseServices/Entity/Board\";\r\nimport { Circle } from \"../DatabaseServices/Entity/Circle\";\r\nimport { Curve } from \"../DatabaseServices/Entity/Curve\";\r\nimport { ExtrudeSolid, ExtureContourCurve } from \"../DatabaseServices/Entity/Extrude\";\r\nimport { Line } from \"../DatabaseServices/Entity/Line\";\r\nimport { Polyline, PolylineProps } from \"../DatabaseServices/Entity/Polyline\";\r\nimport { IntersectOption, IntersectResult } from \"../GraphicsSystem/IntersectWith\";\r\nimport { LinesType } from \"../UI/Store/BoardInterface\";\r\nimport { IntersectsBox } from \"./Box\";\r\nimport { CreateContour2 } from \"./CreateContour2\";\r\nimport { FastOffset } from \"./FastOffset\";\r\nimport { AsVector2, equaln, equalv2, equalv3, IdentityMtx4 } from \"./GeUtils\";\r\nimport { RegionParse } from \"./RegionParse\";\r\n\r\nexport enum DepthType\r\n{\r\n Front = 1,\r\n Back = 2,\r\n All = 3,\r\n}\r\n\r\nexport const ExtrudeBuildConfig = { bevel: false };\r\n\r\n/**\r\n * 槽的几何数据,包括槽的墙面和槽的盖子\r\n */\r\nexport class Groove\r\n{\r\n contourWall: ExtudeWall;//槽轮廓的墙\r\n holeWalls: ExtudeWall[] = [];//槽的网洞的墙\r\n private lid: CurveTapeShape;//槽的盖子\r\n constructor(contour: Contour,\r\n holes: Contour[],\r\n public depthType: DepthType,\r\n public depth: number,\r\n public allDepth: number,\r\n private box = contour.BoundingBox\r\n )\r\n {\r\n this.contourWall = new ExtudeWall(contour.Curve, depthType, depth, allDepth, DirectionType.Inner);\r\n for (let h of holes)\r\n this.holeWalls.push(new ExtudeWall(h.Curve, depthType, depth, allDepth, DirectionType.Outer));\r\n\r\n this.lid = new CurveTapeShape(contour, holes);\r\n }\r\n\r\n /**\r\n * @param groove this - groove\r\n * @param [eachOther=true] 相互裁剪\r\n */\r\n ClipTo(groove: Groove, eachOther = true)\r\n {\r\n //相同深度和面不用操作\r\n if (groove.depthType === this.depthType && groove.depth === this.depth) return;\r\n\r\n if (!IntersectsBox(this.box, groove.box)) return;\r\n\r\n this.ClipLid(groove);\r\n groove.ClipLid(this);\r\n\r\n //一正一反,不交集\r\n if (this.depthType + groove.depthType === 3 && this.depth + groove.depth < this.allDepth)\r\n return;\r\n\r\n this.contourWall.ClipTo(groove, true);\r\n for (let wall of this.holeWalls)\r\n wall.ClipTo(groove, true);\r\n\r\n if (eachOther)\r\n {\r\n groove.contourWall.ClipTo(this, false);\r\n for (let wall of groove.holeWalls)\r\n wall.ClipTo(this, false);\r\n }\r\n }\r\n\r\n private ClipLid(groove: Groove)\r\n {\r\n if (this.depthType === DepthType.All) return;\r\n if (groove.depthType === DepthType.All) return;\r\n\r\n if (this.depthType === groove.depthType)\r\n {\r\n if (groove.depth > this.depth)\r\n this.lid.ClipTo(groove.lid, true);\r\n else\r\n this.lid.SplitTo(groove.lid);\r\n }\r\n else\r\n {\r\n if (this.depth + groove.depth >= this.allDepth)\r\n this.lid.ClipTo(groove.lid, true);\r\n else\r\n this.lid.SplitTo(groove.lid);\r\n }\r\n }\r\n\r\n Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild, rotateUv: boolean)\r\n {\r\n this.contourWall.Draw(verticesArray, uvArray, edgeBuild);\r\n for (let wall of this.holeWalls)\r\n wall.Draw(verticesArray, uvArray, edgeBuild);\r\n\r\n if (this.depthType === DepthType.All) return;\r\n\r\n let isFront = this.depthType === DepthType.Front;\r\n this.lid.Draw(verticesArray, uvArray, isFront, isFront ? this.allDepth - this.depth : this.depth, rotateUv, this.allDepth);\r\n }\r\n}\r\n\r\nfunction GetShape(cu: ExtureContourCurve): TShape\r\n{\r\n if (cu instanceof Circle)\r\n {\r\n let sp = new TShape();\r\n let cen = cu.Center;\r\n sp.ellipse(cen.x, cen.y, cu.Radius, cu.Radius, 0, 2 * Math.PI, false, 0);\r\n return sp;\r\n }\r\n else\r\n {\r\n if (cu.OCSNoClone !== IdentityMtx4)\r\n cu.UpdateMatrixTo(IdentityMtx4);\r\n return cu.Shape;\r\n }\r\n}\r\n\r\nfunction CreateTape(faceType: DepthType, startParam: number, endParam: number, depth: number, allDepth: number): Tape\r\n{\r\n if (faceType === DepthType.Front)\r\n return new Tape(startParam, endParam, allDepth - depth, allDepth);\r\n else\r\n return new Tape(startParam, endParam, 0, depth);\r\n}\r\n\r\n//朝向类型\r\nenum DirectionType\r\n{\r\n Outer = 0,//外墙\r\n Inner = 1 //内墙\r\n}\r\n\r\n//轮廓树节点,用于重新确认外墙和网洞的关系\r\nexport class ContourTreeNode\r\n{\r\n parent: ContourTreeNode;//当存在Parent时,表示它是一个洞\r\n constructor(public contour: Contour, public children: ContourTreeNode[] = []) { }\r\n\r\n SetParent(node: ContourTreeNode)\r\n {\r\n this.parent = node;\r\n node.children.push(this);\r\n }\r\n\r\n Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number)//, depth = 1\r\n {\r\n // TestDraw(this.contour.Curve, depth);\r\n let pts = this.contour.Curve.GetStretchPoints();\r\n\r\n let isFace: boolean;\r\n let ptsChoking: Vector3[];\r\n if (ExtrudeBuildConfig.bevel)\r\n {\r\n //进行内缩,使得可以正常倒角\r\n isFace = (z === 0 || z === 18);//是正反面\r\n if (isFace)\r\n {\r\n ptsChoking = FastOffset(pts, 1, true);\r\n [pts, ptsChoking] = [ptsChoking, pts];\r\n }\r\n }\r\n\r\n let vertices = [...pts];\r\n let holes = this.children.map(h =>\r\n {\r\n // TestDraw(h.contour.Curve, depth + 1);\r\n let pts = h.contour.Curve.GetStretchPoints();\r\n vertices.push(...pts);\r\n return pts;\r\n });\r\n\r\n let faces = ShapeUtils.triangulateShape(pts, holes);\r\n\r\n for (let f of faces)\r\n {\r\n if (front)\r\n {\r\n AddVertice(vertices[f[0]]);\r\n AddVertice(vertices[f[1]]);\r\n AddVertice(vertices[f[2]]);\r\n }\r\n else\r\n {\r\n AddVertice(vertices[f[0]]);\r\n AddVertice(vertices[f[2]]);\r\n AddVertice(vertices[f[1]]);\r\n }\r\n }\r\n\r\n function AddVertice(v: Vector3, inz = z)\r\n {\r\n verticesArray.push(v.x, v.y, inz);\r\n if (rotateUv)\r\n uvArray.push(v.y * 1e-3, v.x * 1e-3);\r\n else\r\n uvArray.push(v.x * 1e-3, v.y * 1e-3);\r\n }\r\n\r\n for (let hole of this.children)\r\n {\r\n for (let h of hole.children)\r\n {\r\n h.Draw(verticesArray, uvArray, front, z, rotateUv, allDepth);//, depth + 2\r\n }\r\n }\r\n\r\n if (!ExtrudeBuildConfig.bevel || !isFace) return;//如果不倒角 就不执行下面的代码\r\n\r\n let z2 = front ? z - 1 : z + 1;\r\n\r\n //构建倒角边\r\n for (let i = 0; i < pts.length; i++)\r\n {\r\n let p1 = pts[i];\r\n let nextIndex = FixIndex(i + 1, pts);\r\n let p2 = pts[nextIndex];\r\n\r\n let p3 = ptsChoking[i];\r\n let p4 = ptsChoking[nextIndex];\r\n\r\n if (front)\r\n {\r\n AddVertice(p3, z2);\r\n AddVertice(p4, z2);\r\n AddVertice(p1);\r\n\r\n AddVertice(p1);\r\n AddVertice(p4, z2);\r\n AddVertice(p2);\r\n }\r\n else\r\n {\r\n AddVertice(p3, z2);\r\n AddVertice(p1);\r\n AddVertice(p4, z2);\r\n\r\n AddVertice(p1);\r\n AddVertice(p2);\r\n AddVertice(p4, z2);\r\n }\r\n }\r\n }\r\n\r\n static ParseContourTree(contourNodes: ContourTreeNode[]): void\r\n {\r\n contourNodes.sort((c1, c2) => c1.contour.Curve.Area - c2.contour.Curve.Area);\r\n for (let i = 0; i < contourNodes.length; i++)\r\n {\r\n const node1 = contourNodes[i];\r\n let p = node1.contour.Curve.StartPoint;\r\n for (let j = i + 1; j < contourNodes.length; j++)\r\n {\r\n const node2 = contourNodes[j];\r\n if (node2.contour.BoundingBox.intersectsBox(node1.contour.BoundingBox)\r\n && node2.contour.Curve.PtInCurve(p))\r\n {\r\n node1.SetParent(node2);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass EdgeGeometryBuild\r\n{\r\n lineVerticesArray: number[] = [];\r\n\r\n frontLines: Line[] = [];\r\n backLines: Line[] = [];\r\n constructor(public allDepth: number) { }\r\n AddLidLine(p1: Vector3, p2: Vector3, depth: number)\r\n {\r\n if (depth === 0)\r\n {\r\n p1 = p1.clone().setZ(0);\r\n p2 = p2.clone().setZ(0);\r\n let line = new Line(p1, p2);\r\n this.backLines.push(line);\r\n }\r\n else if (depth === this.allDepth)\r\n {\r\n p1 = p1.clone().setZ(0);\r\n p2 = p2.clone().setZ(0);\r\n let line = new Line(p1, p2);\r\n this.frontLines.push(line);\r\n }\r\n }\r\n\r\n BuildLid(verticesArray: number[], uvArray: number[], rotateUv: boolean)\r\n {\r\n let arr = [this.backLines, this.frontLines];\r\n\r\n for (let index = 0; index < 2; index++)\r\n {\r\n let lines = arr[index];\r\n let parse = new RegionParse(lines, 2);\r\n let contourNodes: ContourTreeNode[] = [];\r\n for (let routes of parse.RegionsOutline)\r\n {\r\n let cs: Curve[] = routes.map(r => r.curve);\r\n let c = Contour.CreateContour(cs, false) ?? CreateContour2(cs);\r\n if (c)\r\n contourNodes.push(new ContourTreeNode(c));\r\n else\r\n console.error(\"未能构建盖子\");\r\n }\r\n\r\n ContourTreeNode.ParseContourTree(contourNodes);\r\n\r\n for (let j = contourNodes.length; j--;)\r\n {\r\n let node = contourNodes[j];\r\n if (node.parent) continue;\r\n\r\n node.Draw(verticesArray, uvArray, index === 1, this.allDepth * index, rotateUv, this.allDepth);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 胶带\r\n */\r\nclass Tape\r\n{\r\n constructor(\r\n public start: number,\r\n public end: number,\r\n\r\n public bottom: number,\r\n public top: number\r\n )\r\n {\r\n\r\n }\r\n\r\n //用于测试\r\n get Curve()\r\n {\r\n return new Polyline().RectangleFrom2Pt(new Vector3(this.start, this.bottom), new Vector3(this.end, this.top));\r\n }\r\n\r\n Clip(t: this): Tape[]\r\n {\r\n let yr = IntersectRange(this.bottom, this.top, t.bottom, t.top, 1e5);\r\n if (yr === undefined) return [this];\r\n\r\n let xr = IntersectRange(this.start, this.end, t.start, t.end, 1e5);\r\n if (xr === undefined) return [this];\r\n\r\n let rem = SubtractRange(this.start, this.end, t.start, t.end, 1e5).map(r =>\r\n {\r\n return new Tape(r[0], r[1], this.bottom, this.top);\r\n });\r\n\r\n let remR = SubtractRange(this.bottom, this.top, t.bottom, t.top, 1e5);\r\n for (let hr of remR)\r\n {\r\n rem.push(new Tape(xr[0], xr[1], hr[0], hr[1]));\r\n }\r\n return rem;\r\n }\r\n\r\n Split(xlst: number[]): Tape[]\r\n {\r\n let ret: Tape[] = [];\r\n let pre = this.start;\r\n for (let x of xlst)\r\n {\r\n if (x > pre)\r\n {\r\n if (x >= this.end) x = this.end;\r\n if (equaln(pre, x)) continue;\r\n ret.push(new Tape(pre, x, this.bottom, this.top));\r\n pre = x;\r\n if (x === this.end) break;\r\n }\r\n }\r\n return ret;\r\n }\r\n}\r\n\r\n/**\r\n * 二维形状,内部用曲线胶带表示(用来计算盖子差集算法)\r\n */\r\nexport class CurveTapeShape\r\n{\r\n children: CurveTapeShape[] = [];\r\n contour: CurveTape;\r\n holes: CurveTape[];\r\n constructor(contour: Contour, holes: Contour[])\r\n {\r\n this.contour = new CurveTape(contour, DirectionType.Outer);\r\n this.holes = holes.map(h => new CurveTape(h, DirectionType.Inner));\r\n }\r\n\r\n CloneNew()\r\n {\r\n let s = new CurveTapeShape(this.contour.contour, this.holes.map(h => h.contour));\r\n return s;\r\n }\r\n\r\n /**\r\n * 删除包含,同向\r\n */\r\n ClipTo(s: CurveTapeShape, append: boolean = false)\r\n {\r\n for (let c of [this.contour, ... this.holes])\r\n if (c.tapes.length > 0)\r\n c.ClipTo(s);\r\n\r\n if (append)\r\n {\r\n let sn = s.CloneNew();\r\n sn.ReverseClipTo(this);\r\n this.children.push(sn);\r\n }\r\n }\r\n\r\n //合理打断(以保证三维网格对齐(否则圆弧点将无法正确的对齐))\r\n SplitTo(s: CurveTapeShape)\r\n {\r\n for (let c of [this.contour, ...this.holes])\r\n {\r\n for (let c2 of [s.contour, ...s.holes])\r\n {\r\n let int = GetIntersection(c.contour.Curve, c2.contour.Curve);\r\n c.splitParams.push(...int.map(i => i.thisParam));\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * 只保留被包含部分\r\n */\r\n private ReverseClipTo(s: CurveTapeShape): this\r\n {\r\n for (let c of [this.contour, ... this.holes])\r\n if (c.tapes.length > 0)\r\n c.ReverseClipTo(s);\r\n\r\n return this;\r\n }\r\n\r\n ChildrenClip()\r\n {\r\n for (let i = 0; i < this.children.length; i++)\r\n {\r\n let s1 = this.children[i];\r\n for (let j = i + 1; j < this.children.length; j++)\r\n {\r\n let s2 = this.children[j];\r\n\r\n s1.ClipTo(s2, false);\r\n s2.ClipTo(s1, false);\r\n }\r\n }\r\n }\r\n\r\n Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number)\r\n {\r\n this.ChildrenClip();\r\n\r\n let polylines: Polyline[] = this.contour.Curves;\r\n\r\n for (let h of this.holes)\r\n polylines.push(...h.Curves);\r\n\r\n for (let s of this.children)\r\n {\r\n polylines.push(...s.contour.Curves);\r\n for (let h of s.holes)\r\n polylines.push(...h.Curves);\r\n }\r\n\r\n // TestDraw(polylines, z);\r\n let groups = curveLinkGroup(polylines);\r\n let contourNodes: ContourTreeNode[] = [];\r\n for (let cus of groups)\r\n {\r\n let c = Contour.CreateContour(cus, false);\r\n if (c)\r\n contourNodes.push(new ContourTreeNode(c));\r\n else\r\n console.error(\"出错\");\r\n }\r\n\r\n ContourTreeNode.ParseContourTree(contourNodes);\r\n\r\n for (let j = contourNodes.length; j--;)\r\n {\r\n let node = contourNodes[j];\r\n // TestDraw(s.contour.Curve.Clone(), z);\r\n if (node.parent) continue;\r\n\r\n node.Draw(verticesArray, uvArray, front, z, rotateUv, allDepth);\r\n }\r\n }\r\n}\r\n\r\nconst SplitLength = 4;\r\nconst MinSplitCount = 12;\r\nconst MaxSplitCount = 360;\r\nfunction SplitCurveParams(cu: ExtureContourCurve): number[]\r\n{\r\n let xparams: number[] = [];\r\n if (cu instanceof Circle)\r\n {\r\n let splitCount = cu.Radius / SplitLength;\r\n splitCount = clamp(Math.floor(splitCount), MinSplitCount, MaxSplitCount);\r\n for (let i = 0; i < splitCount; i++)\r\n xparams.push(i / splitCount);\r\n }\r\n else\r\n //分段1\r\n for (let i = 0; i < cu.EndParam; i++)\r\n {\r\n xparams.push(i);\r\n if (cu.GetBuilgeAt(i) !== 0)\r\n {\r\n let arc = cu.GetCurveAtIndex(i) as Arc;\r\n let splitCount = arc.Radius / SplitLength;\r\n splitCount = clamp(Math.floor(splitCount), MinSplitCount, MaxSplitCount);\r\n if (splitCount === 0) continue;\r\n\r\n let a = Math.PI * 2 / splitCount;\r\n let params: number[] = [];\r\n for (let j = 0; j < splitCount; j++)\r\n {\r\n let param = arc.GetParamAtAngle(a * j);\r\n if (arc.ParamOnCurve(param))\r\n params.push(param);\r\n }\r\n arraySortByNumber(params);\r\n if (params.length === 0) continue;\r\n\r\n for (let p of params)\r\n {\r\n if (p > 1e-5 && p < 9.99999)\r\n xparams.push(p + i);\r\n }\r\n }\r\n }\r\n xparams.push(cu.EndParam);\r\n return xparams;\r\n}\r\n\r\n/**\r\n * 曲线胶带(一维)\r\n */\r\nclass CurveTape\r\n{\r\n tapes: Range[];\r\n splitParams: number[] = [];\r\n constructor(public contour: Contour, public wallType: DirectionType)\r\n {\r\n this.tapes = [[0, this.contour.Curve.EndParam]];\r\n }\r\n\r\n get Curves(): Polyline[]\r\n {\r\n let xparams: number[] = SplitCurveParams(this.contour.Curve);\r\n if (this.splitParams.length > 0)\r\n {\r\n xparams.push(...this.splitParams);\r\n arraySortByNumber(xparams);\r\n arrayRemoveDuplicateBySort(xparams, (p1, p2) => equaln(p1, p2));\r\n }\r\n\r\n let polylines: Polyline[] = [];\r\n\r\n function TD(p: Vector3): PolylineProps\r\n {\r\n return { pt: AsVector2(p), bul: 0 };\r\n }\r\n\r\n const addPolyline = (t: Range) =>\r\n {\r\n let pts = [TD(this.contour.Curve.GetPointAtParam(t[0]))];\r\n for (let x of xparams)\r\n {\r\n if (x <= t[0]) continue;\r\n if (x >= t[1]) break;\r\n\r\n pts.push(TD(this.contour.Curve.GetPointAtParam(x)));\r\n }\r\n pts.push(TD(this.contour.Curve.GetPointAtParam(t[1])));\r\n\r\n let pl = new Polyline(pts);\r\n polylines.push(pl);\r\n };\r\n\r\n for (let t of this.tapes)\r\n {\r\n if (t[0] > t[1])\r\n {\r\n addPolyline([0, t[1]]);\r\n addPolyline([t[0], this.contour.Curve.EndParam]);\r\n }\r\n else\r\n addPolyline(t);\r\n }\r\n return polylines;\r\n }\r\n\r\n /**\r\n * 分析与另一个形状的包含关系\r\n */\r\n Parse(s: CurveTapeShape): CurveParamRangeRelation\r\n {\r\n let [res1] = ParseCurveParamRangeRelation(this.contour.Curve, s.contour.contour.Curve);\r\n if (this.wallType === DirectionType.Inner)\r\n [res1.syntropy, res1.reverse] = [res1.reverse, res1.syntropy];\r\n if (res1.container.length > 0)\r\n {\r\n for (let h of s.holes)\r\n {\r\n let [res2] = ParseCurveParamRangeRelation(this.contour.Curve, h.contour.Curve);\r\n if (this.wallType === DirectionType.Outer)\r\n [res2.syntropy, res2.reverse] = [res2.reverse, res2.syntropy];\r\n\r\n res1.syntropy.push(...res2.syntropy);\r\n res1.reverse.push(...res2.reverse);\r\n\r\n res1.container = SubtractRanges(res1.container, res2.container, this.contour.Curve.EndParam);\r\n res1.container = SubtractRanges(res1.container, res2.syntropy, this.contour.Curve.EndParam);\r\n res1.container = SubtractRanges(res1.container, res2.reverse, this.contour.Curve.EndParam);\r\n }\r\n }\r\n return res1;\r\n }\r\n\r\n /**\r\n * 删除包含,同向面\r\n */\r\n ClipTo(s: CurveTapeShape): this\r\n {\r\n let d = this.Parse(s);\r\n\r\n this.tapes = SubtractRanges(this.tapes, d.container, this.contour.Curve.EndParam);\r\n this.tapes = SubtractRanges(this.tapes, d.syntropy, this.contour.Curve.EndParam);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * 保留被包含的部分\r\n */\r\n ReverseClipTo(s: CurveTapeShape): this\r\n {\r\n this.tapes = this.Parse(s).container;\r\n return this;\r\n }\r\n}\r\n\r\nclass ExtudeWall\r\n{\r\n //胶带(立面)\r\n private Tape: Tape[];\r\n constructor(public curve: ExtureContourCurve,\r\n public depthType: DepthType,\r\n public depth: number,\r\n public allDepth: number,\r\n public wallType: DirectionType\r\n )\r\n {\r\n //一整段\r\n this.Tape = [CreateTape(depthType, 0, this.curve.EndParam, depth, allDepth)];\r\n }\r\n\r\n /**\r\n * 减去在另一个groove内的部分\r\n * @param groove this - groove\r\n * @param [clipSyntropy=false] 删除同向的面\r\n */\r\n ClipTo(groove: Groove, clipSyntropy = false)\r\n {\r\n let [res1] = ParseCurveParamRangeRelation(this.curve, groove.contourWall.curve);\r\n if (this.wallType !== groove.contourWall.wallType)\r\n [res1.syntropy, res1.reverse] = [res1.reverse, res1.syntropy];\r\n if (res1.container.length > 0)\r\n {\r\n for (let h of groove.holeWalls)\r\n {\r\n let [resh1] = ParseCurveParamRangeRelation(this.curve, h.curve);\r\n\r\n //翻转\r\n if (this.wallType !== h.wallType)\r\n [resh1.syntropy, resh1.reverse] = [resh1.reverse, resh1.syntropy];\r\n\r\n //删除在网洞内的\r\n let subParams: [number, number][];\r\n if (clipSyntropy)\r\n subParams = resh1.container;//删除共面,\r\n else\r\n subParams = [...resh1.container, ...resh1.syntropy];//保留共面部分\r\n\r\n for (let i of subParams)\r\n {\r\n let rems: [number, number][] = [];\r\n for (let r of res1.container)\r\n rems.push(...SubtractRange(r[0], r[1], i[0], i[1], this.curve.EndParam));\r\n res1.container = rems;\r\n }\r\n }\r\n }\r\n\r\n let params = [...res1.container, ...res1.reverse];\r\n if (clipSyntropy)\r\n params.push(...res1.syntropy);\r\n\r\n for (let c of params)\r\n this.ClipFromParam(c[0], c[1], groove.depthType, groove.depth);\r\n }\r\n\r\n ClipReverse(wall: this)\r\n {\r\n let [res1] = ParseCurveParamRangeRelation(this.curve, wall.curve);\r\n for (let c of res1.syntropy)\r\n this.ClipFromParam(c[0], c[1], wall.depthType, wall.depth);\r\n }\r\n\r\n /**\r\n * 当起始参数大于终止参数时,裁剪的区域经过终点\r\n *\r\n * @param startParam 起始参数\r\n * @param endParam 终止参数\r\n * @param faceType 裁剪面朝向\r\n * @param depth 裁剪面的深度\r\n */\r\n ClipFromParam(startParam: number, endParam: number, faceType: DepthType, depth: number)\r\n {\r\n if (equaln(startParam, endParam)) return;\r\n if (startParam > endParam)\r\n {\r\n this.ClipFromParam(startParam, this.curve.EndParam, faceType, depth);\r\n this.ClipFromParam(0, endParam, faceType, depth);\r\n return this;\r\n }\r\n\r\n let subTape = CreateTape(faceType, startParam, endParam, depth, this.allDepth);\r\n let taps: Tape[] = [];\r\n for (let t of this.Tape)\r\n taps.push(...t.Clip(subTape));\r\n\r\n this.Tape = taps;\r\n return this;\r\n }\r\n\r\n Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild)\r\n {\r\n let xparams = SplitCurveParams(this.curve);\r\n\r\n let isOuter = this.wallType === DirectionType.Outer;\r\n let allDepth = this.allDepth;\r\n\r\n function AddVertice(v: Vector3)\r\n {\r\n verticesArray.push(v.x);\r\n verticesArray.push(v.y);\r\n\r\n if (isOuter && ExtrudeBuildConfig.bevel)//如果倒角,则执行下面的代码\r\n {\r\n if (v.z === 0)\r\n verticesArray.push(1);\r\n else if (v.z === allDepth)\r\n verticesArray.push(allDepth - 1);\r\n else\r\n verticesArray.push(v.z);\r\n }\r\n else\r\n verticesArray.push(v.z);\r\n }\r\n\r\n let tapes: Tape[] = [];\r\n this.Tape.sort((t1, t2) => t1.start - t2.start);\r\n for (let tape of this.Tape)\r\n tapes.push(...tape.Split(xparams));\r\n for (let i = 0; i < tapes.length; i++)\r\n {\r\n let preIndex = FixIndex(i - 1, tapes);\r\n let nextIndex = FixIndex(i + 1, tapes);\r\n\r\n let tape = tapes[i];\r\n let preTape = tapes[preIndex];\r\n let nextTape = tapes[nextIndex];\r\n\r\n let p1 = this.curve.GetPointAtParam(tape.start).setZ(tape.bottom);\r\n let p2 = this.curve.GetPointAtParam(tape.end).setZ(tape.bottom);\r\n let vs = [p1, p2, p2.clone().setZ(tape.top), p1.clone().setZ(tape.top), p1];\r\n edgeBuild.AddLidLine(p1, p2, tape.bottom);\r\n edgeBuild.AddLidLine(p1, p2, tape.top);\r\n\r\n //#region 构造线框\r\n {\r\n let leftRanges: Range[];\r\n let rightRange: Range[];\r\n\r\n const IsInteger = (n: number) => equaln(n, Math.round(n), 1e-8);\r\n\r\n if (!IsInteger(tape.start) && equaln(tape.start, preTape.end))\r\n leftRanges = SubtractRange(tape.bottom, tape.top, preTape.bottom, preTape.top, this.allDepth);\r\n else\r\n leftRanges = [[tape.bottom, tape.top]];\r\n\r\n if (equaln(tape.end, nextTape.start))\r\n rightRange = SubtractRange(tape.bottom, tape.top, nextTape.bottom, nextTape.top, this.allDepth);\r\n else\r\n rightRange = [[tape.bottom, tape.top]];\r\n\r\n //上下两条线\r\n edgeBuild.lineVerticesArray.push(\r\n p1.x, p1.y, p1.z,\r\n p2.x, p2.y, p2.z,\r\n\r\n p1.x, p1.y, tape.top,\r\n p2.x, p2.y, tape.top,\r\n );\r\n\r\n //左右线\r\n for (let range of leftRanges)\r\n {\r\n edgeBuild.lineVerticesArray.push(\r\n p1.x, p1.y, range[0],\r\n p1.x, p1.y, range[1]);\r\n }\r\n for (let range of rightRange)\r\n {\r\n edgeBuild.lineVerticesArray.push(\r\n p2.x, p2.y, range[0],\r\n p2.x, p2.y, range[1]);\r\n }\r\n }\r\n //#endregion\r\n\r\n //和X平行平行\r\n let isXPar = (vs[0].y + vs[1].y + vs[2].y) < 0.01;\r\n\r\n function AddUv(p: Vector3)\r\n {\r\n if (isXPar)\r\n uvArray.push((p.z - 1) * 1e-3, p.y * 1e-3);\r\n else\r\n uvArray.push((p.z - 1) * 1e-3, p.x * 1e-3);\r\n }\r\n if (this.wallType === DirectionType.Outer)\r\n {\r\n AddVertice(vs[0]);\r\n AddUv(vs[0]);\r\n AddVertice(vs[1]);\r\n AddUv(vs[1]);\r\n AddVertice(vs[2]);\r\n AddUv(vs[2]);\r\n\r\n AddVertice(vs[0]);\r\n AddUv(vs[0]);\r\n AddVertice(vs[2]);\r\n AddUv(vs[2]);\r\n AddVertice(vs[3]);\r\n AddUv(vs[3]);\r\n }\r\n else\r\n {\r\n AddVertice(vs[0]);\r\n AddUv(vs[0]);\r\n AddVertice(vs[2]);\r\n AddUv(vs[2]);\r\n AddVertice(vs[1]);\r\n AddUv(vs[1]);\r\n\r\n AddVertice(vs[0]);\r\n AddUv(vs[0]);\r\n AddVertice(vs[3]);\r\n AddUv(vs[3]);\r\n AddVertice(vs[2]);\r\n AddUv(vs[2]);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 曲线参数范围关系(包含,分离,同向共线,反向共线)\r\n * 用来表示某一曲线在另一个曲线内的关系\r\n */\r\ninterface CurveParamRangeRelation\r\n{\r\n outer: Range[];//外部\r\n container: Range[];//被包含\r\n syntropy: Range[];//同向\r\n reverse: Range[];//反向\r\n}\r\n\r\nfunction CloneCurveRange(r: CurveParamRangeRelation): CurveParamRangeRelation\r\n{\r\n return {\r\n outer: r.outer.slice(),\r\n container: r.container.slice(),\r\n syntropy: r.syntropy.slice(),\r\n reverse: r.reverse.slice(),\r\n };\r\n}\r\n\r\ninterface CurveSegs\r\n{\r\n outer: Curve[];//外部\r\n container: Curve[];//被包含\r\n syntropy: Curve[];//同向\r\n reverse: Curve[];//反向\r\n}\r\n\r\nfunction binarySearch(ar: number[], el: number): number\r\n{\r\n let m = 0;\r\n let n = ar.length - 1;\r\n while (m <= n)\r\n {\r\n let k = (n + m) >> 1;\r\n let cmp = (el - ar[k]);\r\n if (cmp > 1e8)\r\n m = k + 1;\r\n else if (cmp < -1e8)\r\n n = k - 1;\r\n else\r\n return k;\r\n }\r\n return -m - 1;\r\n}\r\n\r\nfunction CurveSplit(cu: Curve, range: CurveParamRangeRelation): CurveSegs\r\n{\r\n let segs = { outer: [], container: [], syntropy: [], reverse: [] };\r\n\r\n let ranges: Range[] = [...range.outer, ...range.container, ...range.syntropy, ...range.reverse];\r\n\r\n ranges.sort((r1, r2) => r1[0] - r2[0]);\r\n\r\n let params: number[] = ranges.flat();\r\n arrayRemoveDuplicateBySort(params, (p1, p2) => equaln(p1, p2));\r\n let cus = cu.GetSplitCurves(params);\r\n\r\n for (let key in range)\r\n {\r\n for (let r of range[key])\r\n {\r\n let i = binarySearch(params, r[0]);\r\n segs[key].push(cus[i]);\r\n }\r\n }\r\n\r\n return segs;\r\n}\r\n\r\n/**\r\n * 分析两个曲线关系(包含,分离,同向共线,反向共线)(用参数范围表示)\r\n */\r\nfunction ParseCurveParamRangeRelation(cu1: ExtureContourCurve, cu2: ExtureContourCurve, reverseParse = false): [CurveParamRangeRelation, CurveParamRangeRelation]\r\n{\r\n let ins = GetIntersection(cu1, cu2);\r\n\r\n let c1Res: CurveParamRangeRelation = { container: [], syntropy: [], reverse: [], outer: [] };\r\n let c2Res: CurveParamRangeRelation = { container: [], syntropy: [], reverse: [], outer: [] };\r\n if (ins.length === 0)\r\n {\r\n if (cu1 instanceof Circle && cu2 instanceof Circle && equaln(cu1.Radius, cu2.Radius, 1e-4) && equalv2(cu1.Center, cu2.Center, 1e-4))\r\n {\r\n c1Res.syntropy.push([0, 1]);\r\n c2Res.syntropy.push([0, 1]);\r\n return [c1Res, c2Res];\r\n }\r\n\r\n if (cu2.PtInCurve(cu1.StartPoint))\r\n c1Res.container.push([0, cu1.EndParam]);\r\n else\r\n c1Res.outer.push([0, cu1.EndParam]);\r\n\r\n if (cu1.PtInCurve(cu2.StartPoint))\r\n c2Res.container.push([0, cu2.EndParam]);\r\n else\r\n c2Res.outer.push([0, cu2.EndParam]);\r\n\r\n return [c1Res, c2Res];\r\n }\r\n\r\n type CurveSeg = {\r\n startParam: number;\r\n endParam: number;\r\n startPoint: Vector3;\r\n endPoint: Vector3;\r\n used?: boolean;\r\n };\r\n\r\n //解析出线段列表\r\n let c1Curves: CurveSeg[] = [];\r\n let c2Curves: CurveSeg[] = [];\r\n\r\n ins.sort((a1, a2) => a1.thisParam - a2.thisParam);\r\n //点重复->下方ins会sort,导致交点对应不上,导致错误\r\n arrayRemoveDuplicateBySort(ins, (i1, i2) => equalv3(i1.pt, i2.pt, 1e-4));\r\n if (ins.length > 1 && equalv3(ins[0].pt, ins[ins.length - 1].pt, 1e-4)) ins.pop();\r\n for (let i = 0; i < ins.length; i++)\r\n {\r\n let n1 = ins[i];\r\n let n2 = ins[FixIndex(i + 1, ins)];\r\n c1Curves.push({ startParam: n1.thisParam, endParam: n2.thisParam, startPoint: n1.pt, endPoint: n2.pt });\r\n }\r\n ins.sort((a1, a2) => a1.argParam - a2.argParam);\r\n for (let i = 0; i < ins.length; i++)\r\n {\r\n let n1 = ins[i];\r\n let n2 = ins[FixIndex(i + 1, ins)];\r\n c2Curves.push({ startParam: n1.argParam, endParam: n2.argParam, startPoint: n1.pt, endPoint: n2.pt });\r\n }\r\n\r\n //分析共边关系和包含关系\r\n for (let c of c1Curves)\r\n {\r\n let c1MidPoint = CenterPoint(cu1, c.startParam, c.endParam);\r\n for (let c2 of c2Curves)\r\n {\r\n if (c2.used)\r\n continue;\r\n\r\n let c2MidPoint = CenterPoint(cu2, c2.startParam, c2.endParam);\r\n if (!equalv3(c1MidPoint, c2MidPoint, 1e-4))\r\n continue;\r\n\r\n c.used = true;\r\n if (c.startPoint === c2.startPoint\r\n && c.endPoint === c2.endPoint)\r\n {\r\n c1Res.syntropy.push([c.startParam, c.endParam]);\r\n c2Res.syntropy.push([c2.startParam, c2.endParam]);\r\n c2.used = true;\r\n break;\r\n }\r\n else if (c.startPoint === c2.endPoint\r\n && c.endPoint === c2.startPoint)\r\n {\r\n c1Res.reverse.push([c.startParam, c.endParam]);\r\n c2Res.reverse.push([c2.startParam, c2.endParam]);\r\n c2.used = true;\r\n break;\r\n }\r\n else\r\n c.used = false;\r\n }\r\n\r\n if (!c.used)\r\n {\r\n if (cu2.PtInCurve(c1MidPoint))\r\n c1Res.container.push([c.startParam, c.endParam]);\r\n else\r\n c1Res.outer.push([c.startParam, c.endParam]);\r\n }\r\n }\r\n\r\n //只分析包含关系\r\n if (reverseParse)\r\n for (let c of c2Curves)\r\n {\r\n if (c.used) continue;\r\n let p = CenterPoint(cu2, c.startParam, c.endParam);\r\n if (cu1.PtInCurve(p))\r\n c2Res.container.push([c.startParam, c.endParam]);\r\n else\r\n c2Res.outer.push([c.startParam, c.endParam]);\r\n }\r\n return [c1Res, c2Res];\r\n}\r\n\r\nfunction CenterPoint(cu: ExtureContourCurve, start: number, end: number)\r\n{\r\n let lenStart = cu.GetDistAtParam(start);\r\n let lenEnd = cu.GetDistAtParam(end);\r\n if (end > start)\r\n return cu.GetPointAtDistance((lenEnd + lenStart) * 0.5);\r\n\r\n let lenAll = cu.Length;\r\n let lenDiv = ((lenAll - lenStart) + lenEnd) * 0.5;\r\n\r\n if (lenStart + lenDiv >= lenAll)\r\n return cu.GetPointAtDistance(lenStart + lenDiv - lenAll);\r\n else\r\n return cu.GetPointAtDistance(lenStart + lenDiv);\r\n}\r\n\r\n//求参数并集部分,交集部分,差集部分\r\n\r\n//求 ab 和 cd 的并集部分\r\nfunction UnionRange(a: number, b: number, c: number, d: number, end: number): [number, number][]\r\n{\r\n let b1 = b < a ? b + end : b;\r\n let d1 = d < c ? d + end : d;\r\n let a1 = a;\r\n let c1 = c;\r\n\r\n if (c < a)\r\n [a1, b1, c1, d1] = [c1, d1, a1, b1];\r\n\r\n if (c1 > b1)\r\n return [[a, b], [c, d]];\r\n\r\n let e = Math.max(b1, d1);\r\n if (e >= end)\r\n {\r\n e -= end;\r\n if (e > a1)\r\n return [[0, end]];\r\n }\r\n\r\n return [[a1, e]];\r\n}\r\n\r\n// //0-1\r\n// UnionRange(0.5, 0.3, 0.3, 0.5, 1);//?\r\n\r\n// //0-1\r\n// UnionRange(0.4, 0.3, 0.3, 0.5, 1);//?\r\n\r\n// //[ [ 0.8, 0.1 ], [ 0.3, 0.5 ] ]\r\n// UnionRange(0.8, 0.1, 0.3, 0.5, 1);//?\r\n\r\n// //[ 0.3, 0.10000000000000009 ] ] \r\n// UnionRange(0.8, 0.1, 0.3, 0.9, 1);//?\r\n\r\nfunction SubtractRange(a: number, b: number, c: number, d: number, end: number): Range[]\r\n{\r\n if (a < 0 || b < 0) return [];\r\n\r\n if (a > b)\r\n return [...SubtractRange(a, end, c, d, end), ...SubtractRange(0, b, c, d, end)];\r\n if (c > d)\r\n {\r\n let arr = SubtractRange(a, b, c, end, end);\r\n let rem: [number, number][] = [];\r\n for (let s of arr)\r\n rem.push(...SubtractRange(s[0], s[1], 0, d, end));\r\n return rem;\r\n }\r\n\r\n if (c >= b || d <= a)\r\n return [[a, b]];\r\n\r\n if (c <= a)// c1 a1 b1\r\n {\r\n if (d >= b) return [];\r\n return [[d, b]];\r\n }\r\n\r\n if (d < b)\r\n return [[a, c], [d, b]];\r\n return [[a, c]];\r\n}\r\n\r\nfunction SubtractRange2(r: Range, sr: Range, end: number): Range[]\r\n{\r\n return SubtractRange(r[0], r[1], sr[0], sr[1], end);\r\n}\r\n\r\ntype Range = [number, number];\r\nfunction SubtractRanges(ranges: Range[], subRanges: Range[], end: number): Range[]\r\n{\r\n let rets: Range[] = ranges;\r\n for (let sr of subRanges)\r\n {\r\n let temps: Range[] = [];\r\n for (let r of rets)\r\n temps.push(...SubtractRange2(r, sr, end));\r\n\r\n rets = temps;\r\n }\r\n return rets;\r\n}\r\n\r\nfunction IntersectRange(a: number, b: number, c: number, d: number, end: number): Range\r\n{\r\n let b1 = b < a ? b + end : b;\r\n let d1 = d < c ? d + end : d;\r\n let a1 = a;\r\n let c1 = c;\r\n\r\n if (c < a)\r\n [a1, b1, c1, d1] = [c1, d1, a1, b1];\r\n\r\n if (c1 > b1)\r\n return;\r\n\r\n return [c1, Math.min(b1, d1)];\r\n}\r\n\r\nconst alMatrix4 = new Matrix4;\r\n\r\nexport class ExtrudeGeometryBuilder\r\n{\r\n verticesArray: number[] = [];//用于构建三维网格\r\n uvArray: number[] = [];//uv\r\n\r\n edgeAndLidBuilder: EdgeGeometryBuild;\r\n\r\n constructor(private br: ExtrudeSolid)\r\n {\r\n this.GenerateMeshData(br);\r\n }\r\n\r\n protected GenerateMeshData(br: ExtrudeSolid)\r\n {\r\n this.edgeAndLidBuilder = new EdgeGeometryBuild(this.br.Thickness);\r\n let rotateUv = (br instanceof Board && br.BoardProcessOption.lines === LinesType.Reverse);\r\n //计算墙(创建轮廓取出,为了得到正确的轮廓曲线(逆时针之类的))\r\n let outerWall = new ExtudeWall(Contour.CreateContour(br.ContourCurve.Clone()).Curve, DepthType.All, br.Thickness, br.Thickness, DirectionType.Outer);\r\n let grooves = this.ParseGrooves();\r\n for (let i = 0; i < grooves.length; i++)\r\n {\r\n let s1 = grooves[i];\r\n outerWall.ClipTo(s1, false);\r\n s1.contourWall.ClipReverse(outerWall);\r\n for (let j = i + 1; j < grooves.length; j++)\r\n {\r\n let s2 = grooves[j];\r\n s1.ClipTo(s2, true);\r\n }\r\n\r\n s1.Draw(this.verticesArray, this.uvArray, this.edgeAndLidBuilder, rotateUv);\r\n }\r\n outerWall.Draw(this.verticesArray, this.uvArray, this.edgeAndLidBuilder);\r\n\r\n //这里构建盖子\r\n this.edgeAndLidBuilder.BuildLid(this.verticesArray, this.uvArray, rotateUv);\r\n\r\n intCache.clear();\r\n }\r\n\r\n get MeshGeometry(): BufferGeometry\r\n {\r\n let geo = new BufferGeometry();\r\n geo.setAttribute('position', new Float32BufferAttribute(this.verticesArray, 3));\r\n geo.setAttribute('uv', new Float32BufferAttribute(this.uvArray, 2));\r\n geo.computeVertexNormals();\r\n return geo;\r\n }\r\n\r\n get EdgeGeometry(): BufferGeometry\r\n {\r\n let geo = new BufferGeometry();\r\n geo.setAttribute('position', new Float32BufferAttribute(this.edgeAndLidBuilder.lineVerticesArray, 3));\r\n return geo;\r\n }\r\n\r\n protected ParseGrooves()\r\n {\r\n let br = this.br;\r\n const brOcsInv = br.OCSInv;\r\n let grooves: Groove[] = [];\r\n for (let groove of br.Grooves)\r\n {\r\n //判断槽正反面\r\n let type: DepthType;\r\n if (equaln(groove.Thickness, br.Thickness))\r\n type = DepthType.All;\r\n else\r\n {\r\n if (equaln(groove.Position.applyMatrix4(brOcsInv).z, 0))\r\n type = DepthType.Back;\r\n else\r\n type = DepthType.Front;\r\n }\r\n alMatrix4.multiplyMatrices(brOcsInv, groove.OCSNoClone);\r\n //槽轮廓\r\n let grooveContourCurve = groove.ContourCurve.Clone();\r\n grooveContourCurve.ApplyMatrix(alMatrix4);\r\n grooveContourCurve.Z0();\r\n if (grooveContourCurve instanceof Polyline) grooveContourCurve.UpdateMatrixTo(IdentityMtx4);//不可能改变这个\r\n let grooveContour = Contour.CreateContour(grooveContourCurve);\r\n\r\n let grooveHoleContours: Contour[] = [];\r\n //孤岛\r\n for (let grooveChild of groove.Grooves)\r\n {\r\n let grooveChildContourCurve = grooveChild.ContourCurve.Clone();\r\n alMatrix4.multiplyMatrices(brOcsInv, grooveChild.OCSNoClone);\r\n grooveChildContourCurve.ApplyMatrix(alMatrix4).Z0();\r\n if (grooveChildContourCurve instanceof Polyline) grooveChildContourCurve.UpdateMatrixTo(IdentityMtx4);\r\n let grooveChildContour = Contour.CreateContour(grooveChildContourCurve);\r\n grooveHoleContours.push(grooveChildContour);\r\n }\r\n\r\n grooves.push(new Groove(grooveContour, grooveHoleContours, type, groove.Thickness, br.Thickness));\r\n }\r\n\r\n return grooves;\r\n }\r\n}\r\n\r\nlet intCache = new Map>();\r\nfunction GetIntersection(cu1: Curve, cu2: Curve): IntersectResult[]\r\n{\r\n let m = intCache.get(cu1);\r\n if (m)\r\n {\r\n let r = m.get(cu2);\r\n if (r) return r;\r\n }\r\n else\r\n m = new Map();\r\n\r\n intCache.set(cu1, m);\r\n let r = cu1.IntersectWith2(cu2, IntersectOption.OnBothOperands);\r\n\r\n let cu1EndParam = cu1.EndParam;\r\n let cu2EndParam = cu2.EndParam;\r\n for (let d of r)\r\n {\r\n d.thisParam = MathUtils.clamp(d.thisParam, 0, cu1EndParam);\r\n d.argParam = MathUtils.clamp(d.argParam, 0, cu2EndParam);\r\n }\r\n\r\n m.set(cu2, r);\r\n\r\n let r2: IntersectResult[] = r.map(r =>\r\n {\r\n return { thisParam: r.argParam, argParam: r.thisParam, pt: r.pt };\r\n });\r\n\r\n let m2 = intCache.get(cu2);\r\n if (!m2)\r\n {\r\n m2 = new Map();\r\n intCache.set(cu2, m2);\r\n }\r\n m2.set(cu1, r2);\r\n\r\n return r;\r\n}\r\n","import { BoxGeometry, BufferGeometry, ExtrudeGeometry, ExtrudeGeometryOptions, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, Line as TLine, LineSegments, Matrix3, Matrix4, Mesh, Object3D, Path, UVGenerator, Vector3 } from \"three\";\r\nimport { Line2 } from \"three/examples/jsm/lines/Line2\";\r\nimport { LineGeometry } from \"three/examples/jsm/lines/LineGeometry\";\r\nimport { arrayClone, arrayLast, arrayRemoveIf, arrayRemoveOnce, arraySortByNumber, arraySum } from \"../../Common/ArrayExt\";\r\nimport { ColorMaterial } from \"../../Common/ColorPalette\";\r\nimport { equalCurve, PolylineSpliteRect } from \"../../Common/CurveUtils\";\r\nimport { DisposeThreeObj, Object3DRemoveAll } from \"../../Common/Dispose\";\r\nimport { Log } from \"../../Common/Log\";\r\nimport { matrixSetVector, Vector2ApplyMatrix4 } from \"../../Common/Matrix4Utils\";\r\nimport { Status, UpdateDraw } from \"../../Common/Status\";\r\nimport { CSG } from \"../../csg/core/CSG\";\r\nimport { Geometry2CSG } from \"../../csg/core/Geometry2CSG\";\r\nimport { ObjectSnapMode } from \"../../Editor/ObjectSnapMode\";\r\nimport { boardUVGenerator } from \"../../Geometry/BoardUVGenerator\";\r\nimport { Box3Ext } from \"../../Geometry/Box\";\r\nimport { BSPGroupParse } from \"../../Geometry/BSPGroupParse\";\r\nimport { BufferGeometryUtils } from \"../../Geometry/BufferGeometryUtils\";\r\nimport { FastWireframe } from \"../../Geometry/CreateWireframe\";\r\nimport { EdgesGeometry } from \"../../Geometry/EdgeGeometry\";\r\nimport { GenerateExtrudeEdgeGeometry } from \"../../Geometry/ExtrudeEdgeGeometry\";\r\nimport { ExtrudeGeometryBuilder } from \"../../Geometry/ExtrudeEdgeGeometry2\";\r\nimport { AsVector2, AsVector3, equaln, equalv2, equalv3, IdentityMtx4, isIntersect, isParallelTo, isPerpendicularityTo, MoveMatrix, XAxis, YAxis, ZAxis, ZeroVec } from \"../../Geometry/GeUtils\";\r\nimport { OBB } from \"../../Geometry/OBB/obb\";\r\nimport { ScaleUV, ScaleUV2 } from \"../../Geometry/UVUtils\";\r\nimport { RenderType } from \"../../GraphicsSystem/RenderType\";\r\nimport { BlockTableRecord } from \"../BlockTableRecord\";\r\nimport { CADFactory, Factory } from \"../CADFactory\";\r\nimport { CADFiler } from \"../CADFiler\";\r\nimport { Contour } from \"../Contour\";\r\nimport { ObjectId } from \"../ObjectId\";\r\nimport { PhysicalMaterialRecord } from \"../PhysicalMaterialRecord\";\r\nimport { Shape } from \"../Shape\";\r\nimport { ShapeManager } from \"../ShapeManager\";\r\nimport { Spline } from \"../Spline\";\r\nimport { Board } from \"./Board\";\r\nimport { Circle } from \"./Circle\";\r\nimport { DragPointType } from \"./DragPointType\";\r\nimport { Ellipse } from \"./Ellipse\";\r\nimport { Entity } from \"./Entity\";\r\nimport { ExtrudeConfig } from \"./ExtrudeConfig\";\r\nimport { Line } from \"./Line\";\r\nimport { Polyline } from \"./Polyline\";\r\nimport { Region } from \"./Region\";\r\n\r\nexport type ExtureContourCurve = Polyline | Circle;\r\nexport type ExtureContour = Polyline | Circle | ExtrudeSolid | Region;\r\n\r\n@Factory\r\nexport class ExtrudeSolid extends Entity\r\n{\r\n /*\r\n ------------\r\n | |\r\n | |\r\n | | height\r\n | |\r\n | |\r\n ----width---\r\n */\r\n\r\n protected height: number = 1;//y\r\n protected width: number = 1;//x\r\n\r\n /**\r\n * 拉伸实体的厚度\r\n * 我们允许它是一个负数,但是这个时候这个实体已经是一个无效的拉伸实体了.\r\n * 允许负数,用来校验凹槽的合理性.\r\n */\r\n protected thickness: number = 1;\r\n\r\n protected isRect = true;\r\n\r\n IsKnife = false;\r\n\r\n RelevanceMeats: ObjectId[];\r\n RelevanceKnifs: ObjectId[];\r\n __OriginalId__: ObjectId;\r\n __OriginalEnt__: this;\r\n /**\r\n * 拉伸形状\r\n * 出于优化考虑,可能未初始化\r\n * 形状位于WCS 0点位置,不随OCS变化而变化\r\n */\r\n protected contourCurve: ExtureContourCurve;\r\n\r\n /**\r\n * 正面和反面的凹槽造型\r\n */\r\n protected grooves: ExtrudeSolid[] = [];\r\n\r\n protected knifeRadius: number = 3;\r\n protected groovesAddLength: number = 0;\r\n protected groovesAddWidth: number = 0;\r\n protected groovesAddDepth: number = 0;\r\n __TempIndexVersion__: { Index: number, Version: number; };\r\n constructor()\r\n {\r\n super();\r\n this.RelevanceKnifs = this.CreateProxyArray((v) =>\r\n {\r\n //可以更新自己,但是不建议,建议手动更新\r\n });\r\n this.RelevanceMeats = this.CreateProxyArray((v) =>\r\n {\r\n //可以更新肉,简单是不建议,建议手动更新\r\n });\r\n }\r\n\r\n get KnifeRadius()\r\n {\r\n return this.knifeRadius;\r\n }\r\n set KnifeRadius(v: number)\r\n {\r\n if (!equaln(v, this.knifeRadius))\r\n {\r\n this.WriteAllObjectRecord();\r\n this.knifeRadius = v;\r\n }\r\n }\r\n get BoundingBox()\r\n {\r\n return this.BoundingBoxInOCS.applyMatrix4(this.OCS);\r\n }\r\n get BoundingBoxInOCS(): Box3Ext\r\n {\r\n return new Box3Ext(new Vector3(), new Vector3(this.width, this.height, this.thickness));\r\n }\r\n\r\n get OBB(): OBB\r\n {\r\n return new OBB(this.OCS, new Vector3(this.width, this.height, this.thickness).multiplyScalar(0.5));\r\n }\r\n\r\n get GroovesAddLength()\r\n {\r\n return this.groovesAddLength;\r\n }\r\n\r\n set GroovesAddLength(v: number)\r\n {\r\n if (!equaln(v, this.groovesAddLength))\r\n {\r\n this.WriteAllObjectRecord();\r\n this.groovesAddLength = v;\r\n\r\n //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确\r\n this.__UpdateVersion__++;\r\n }\r\n }\r\n get GroovesAddWidth()\r\n {\r\n return this.groovesAddWidth;\r\n }\r\n\r\n set GroovesAddWidth(v: number)\r\n {\r\n if (!equaln(v, this.groovesAddWidth))\r\n {\r\n this.WriteAllObjectRecord();\r\n this.groovesAddWidth = v;\r\n\r\n //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确\r\n this.__UpdateVersion__++;\r\n }\r\n }\r\n get GroovesAddDepth()\r\n {\r\n return this.groovesAddDepth;\r\n }\r\n\r\n set GroovesAddDepth(v: number)\r\n {\r\n if (!equaln(v, this.groovesAddDepth))\r\n {\r\n this.WriteAllObjectRecord();\r\n this.groovesAddDepth = v;\r\n\r\n //更改它的时候,关联切割被更新,拆单的时候才会正确,否则使用缓存将不正确\r\n this.__UpdateVersion__++;\r\n }\r\n }\r\n\r\n Clone()\r\n {\r\n let en = super.Clone();\r\n return en;\r\n }\r\n\r\n ApplyMatrix(m: Matrix4)\r\n {\r\n //暂时关闭更新,避免内部实体还没有更新位置时,先更新了实体的Geometry,导致后续没有进行更新\r\n let updateBak = this.AutoUpdate;\r\n this.AutoUpdate = false;\r\n super.ApplyMatrix(m);\r\n for (let g of this.grooves)\r\n g.ApplyMatrix(m);\r\n\r\n //由于修改矩阵会导致矩阵错误\r\n this.csg = undefined;\r\n this.AutoUpdate = updateBak;\r\n if (!equaln(m.getMaxScaleOnAxis(), 1))\r\n this.Update(UpdateDraw.Geometry);\r\n else if (this.AutoUpdate)\r\n this.DeferUpdate();\r\n return this;\r\n }\r\n protected ApplyScaleMatrix(m: Matrix4): this\r\n {\r\n this.WriteAllObjectRecord();\r\n let cu = this.ContourCurve;\r\n cu.ApplyMatrix(this.OCS);\r\n cu.ApplyMatrix(m);\r\n cu.ApplyMatrix(this.OCSInv);\r\n this.CheckContourCurve();\r\n return this;\r\n }\r\n get Position(): Vector3\r\n {\r\n return super.Position;\r\n }\r\n set Position(p: Vector3)\r\n {\r\n let v = p.clone().sub(this.Position);\r\n if (equalv3(v, ZeroVec)) return;\r\n super.Position = p;\r\n\r\n let m = MoveMatrix(v);\r\n for (let g of this.grooves)\r\n g.ApplyMatrix(m);\r\n\r\n //由于修改矩阵会导致bsp错误\r\n this.csg = undefined;\r\n }\r\n\r\n get Width()\r\n {\r\n return this.width;\r\n }\r\n get Height()\r\n {\r\n return this.height;\r\n }\r\n\r\n get Thickness()\r\n {\r\n return this.thickness;\r\n }\r\n set Thickness(thickness: number)\r\n {\r\n if (!equaln(thickness, this.thickness, 1e-3))\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n if (this.grooves.length > 0)\r\n {\r\n let inv = this.OCSInv;\r\n let v = this.Normal.multiplyScalar(thickness - this.thickness);\r\n let m = new Matrix4().setPosition(v);\r\n\r\n for (let g of this.grooves)\r\n {\r\n let p = g.Position.applyMatrix4(inv);\r\n\r\n if (equaln(g.thickness, this.thickness))\r\n g.Thickness = thickness;\r\n else if (!equaln(p.z, 0))\r\n g.ApplyMatrix(m);\r\n }\r\n }\r\n\r\n this.thickness = thickness;\r\n this.Update(UpdateDraw.Geometry);\r\n }\r\n }\r\n\r\n get Grooves()\r\n {\r\n return this.grooves;\r\n }\r\n\r\n /**\r\n * 返回未拷贝的轮廓曲线\r\n */\r\n get ContourCurve()\r\n {\r\n if (!this.contourCurve)\r\n this.GeneralRectContour();\r\n return this.contourCurve;\r\n }\r\n\r\n set ContourCurve(cu: ExtureContourCurve)\r\n {\r\n this.SetContourCurve(cu);\r\n }\r\n\r\n /**\r\n * 生成矩形轮廓(强制)\r\n */\r\n GeneralRectContour()\r\n {\r\n if (!this.contourCurve || !(this.contourCurve instanceof Polyline))\r\n this.contourCurve = new Polyline();\r\n\r\n this.contourCurve.Rectangle(this.width, this.height);\r\n this.contourCurve.OCS = IdentityMtx4;\r\n this.ContourCurve = this.contourCurve;\r\n }\r\n\r\n /**\r\n * 转换成矩形拉伸实体\r\n */\r\n ConverToRectSolid(width = this.width, height = this.height, thickness = this.thickness)\r\n {\r\n this.WriteAllObjectRecord();\r\n this.height = height;\r\n this.width = width;\r\n this.thickness = thickness;\r\n\r\n this.isRect = true;\r\n\r\n this.GeneralRectContour();\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * 更新拉伸实体的轮廓\r\n * @param curve 曲线已经存在WCS坐标系\r\n */\r\n SetContourCurve(curve: ExtureContourCurve)\r\n {\r\n if (!curve.IsClose) return;\r\n\r\n let area = curve.Area;\r\n if (!area || equaln(area, 0)) return;\r\n\r\n if (curve instanceof Spline || curve instanceof Ellipse)\r\n curve = curve.Convert2Polyline();\r\n\r\n if (curve instanceof Polyline)\r\n {\r\n curve.CloseMark = true;\r\n let pts = curve.LineData;\r\n if (equalv2(pts[0].pt, arrayLast(pts).pt))\r\n pts.pop();\r\n\r\n //如果曲线被旋转了,那么修正它的旋转矩阵,避免纹路错误\r\n let ocs = curve.OCS;\r\n let isMirror = equaln(ocs.elements[10], -1, 1e-4);\r\n let isRotate = !equaln(ocs.elements[0], 1);\r\n if (isMirror || isRotate)// || ocs.elements[9] || ocs.elements[10]\r\n {\r\n for (let p of pts)\r\n {\r\n Vector2ApplyMatrix4(ocs, p.pt);\r\n if (isMirror)\r\n p.bul *= -1;\r\n }\r\n curve.OCS = IdentityMtx4;\r\n }\r\n }\r\n else\r\n {\r\n curve.OCS = new Matrix4().setPosition(curve.Position);\r\n }\r\n curve.ClearDraw();\r\n\r\n this.WriteAllObjectRecord();\r\n this.contourCurve = curve;\r\n this.CheckContourCurve();\r\n this.Update();\r\n }\r\n\r\n /**\r\n * 在不改变Normal和实体显示的情况下,修改X轴的指向\r\n * @param xAxis\r\n */\r\n SetXAxis(xAxis: Vector3): this\r\n {\r\n let m = this.OCSInv.setPosition(ZeroVec);\r\n let x = xAxis.applyMatrix4(m).setZ(0).normalize();\r\n if (equalv3(ZeroVec, x)) return this;\r\n\r\n this.WriteAllObjectRecord();\r\n\r\n let a = Math.atan2(x.y, x.x);\r\n\r\n m.copy(this._Matrix).setPosition(ZeroVec);\r\n x.applyMatrix4(m);\r\n let z = this.Normal;\r\n let y = z.cross(x);\r\n\r\n this._Matrix.elements[0] = x.x;\r\n this._Matrix.elements[1] = x.y;\r\n this._Matrix.elements[2] = x.z;\r\n\r\n this._Matrix.elements[4] = y.x;\r\n this._Matrix.elements[5] = y.y;\r\n this._Matrix.elements[6] = y.z;\r\n\r\n m.makeRotationZ(-a);\r\n this.contourCurve.ApplyMatrix(m);\r\n this.CheckContourCurve();\r\n if (this.contourCurve instanceof Polyline)\r\n this.contourCurve.UpdateMatrixTo(m.identity());\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * 检验轮廓曲线,通常当轮廓曲线被修改时,都需要检验轮廓曲线,并更新实体大小和轮廓位置.\r\n * >计算轮廓大小\r\n * >判断是否矩形\r\n * >修正轮廓基点\r\n */\r\n CheckContourCurve()\r\n {\r\n let box = this.ContourCurve.BoundingBox;\r\n let size = box.getSize(new Vector3());\r\n this.width = size.x;\r\n this.height = size.y;\r\n if (equaln(size.x, 0) || equaln(size.y, 0))\r\n Log(`注意!!该板件尺寸为0!`);\r\n this.isRect = equaln(this.width * this.height, this.ContourCurve.Area, 0.1);\r\n\r\n //修正轮廓基点\r\n if (!equalv3(box.min, ZeroVec))\r\n {\r\n this.contourCurve.Position =\r\n this.contourCurve.Position.sub(box.min);\r\n\r\n let v = box.min.applyMatrix4(this.OCS.setPosition(ZeroVec));\r\n this._Matrix.setPosition(this.Position.add(v));\r\n }\r\n }\r\n get IsRect()\r\n {\r\n return this.isRect;\r\n }\r\n\r\n /**\r\n * 这个拉伸实体的面域形状\r\n */\r\n get Shape()\r\n {\r\n let contour = Contour.CreateContour(this.ContourCurve.Clone(), false);\r\n\r\n let holes: Contour[] = [];\r\n\r\n for (let g of this.grooves)\r\n {\r\n if (equaln(g.thickness, this.thickness))\r\n holes.push(Contour.CreateContour(g.ContourCurve.Clone().ApplyMatrix(this.OCSInv.multiply(g.OCS)), false));\r\n }\r\n return new Shape(contour, holes);\r\n }\r\n\r\n /**\r\n * 实体合并(不会删除target)\r\n */\r\n Join(target: this): Status\r\n {\r\n let [n, tn] = [this.Normal, target.Normal];\r\n\r\n if (!isParallelTo(n, tn))\r\n return Status.False;\r\n\r\n let isEqualNorm = equalv3(n, tn);\r\n\r\n let targetZMin = target.Position.applyMatrix4(this.OCSInv).z;\r\n let targetZMax = targetZMin + target.Thickness * (isEqualNorm ? 1 : -1);\r\n [targetZMin, targetZMax] = arraySortByNumber([targetZMin, targetZMax]);\r\n\r\n const MergeRelevance = () =>\r\n {\r\n if (!this.Id || !target.Id) return;\r\n for (let kf of target.RelevanceKnifs)\r\n {\r\n let kfBr = kf.Object as ExtrudeSolid;\r\n if (!kfBr) continue;\r\n if (!kfBr.RelevanceMeats.includes(this.Id))\r\n kfBr.RelevanceMeats.push(this.Id);\r\n\r\n if (!this.RelevanceKnifs.includes(kf))\r\n this.RelevanceKnifs.push(kf);\r\n }\r\n for (let meat of target.RelevanceMeats)\r\n {\r\n let meatBr = meat.Object as ExtrudeSolid;\r\n if (!meatBr) continue;\r\n if (!meatBr.RelevanceKnifs.includes(this.Id))\r\n meatBr.RelevanceKnifs.push(this.Id);\r\n\r\n if (!this.RelevanceMeats.includes(meat))\r\n this.RelevanceMeats.push(meat);\r\n }\r\n };\r\n\r\n if (equaln(this.thickness, target.thickness)\r\n && equaln(0, targetZMin))\r\n {\r\n let matrixToLocal = this.OCSInv.multiply(target.OCS);\r\n\r\n let thisShape = this.Shape;\r\n let targetShape = target.Shape.ApplyMatrix(matrixToLocal).Z0();\r\n let unionShapes = thisShape.UnionBoolOperation(targetShape, true);\r\n if (unionShapes.length === 1)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n // [ + ] 产生网洞.\r\n for (let hole of unionShapes[0].Holes)\r\n {\r\n let g = new ExtrudeSolid();\r\n g.thickness = this.thickness;\r\n g.ContourCurve = hole.Curve;\r\n g.ApplyMatrix(this.OCS);\r\n\r\n this.AppendGroove(g);\r\n }\r\n\r\n this.ContourCurve = unionShapes[0].Outline.Curve;\r\n\r\n this.grooves.push(...target.grooves.map(g => g.Clone()));\r\n MergeRelevance();\r\n this.GrooveCheckMerge();\r\n this.Update();\r\n\r\n return Status.True;\r\n }\r\n }\r\n else\r\n {\r\n if (!isIntersect(0, this.thickness, targetZMin, targetZMax, 1e-5))\r\n return Status.False;\r\n\r\n let matrixToLocal = this.OCSInv.multiply(target.OCS);\r\n\r\n let thisCurve = this.ContourCurve;\r\n let targetCurve = target.ContourCurve.Clone().ApplyMatrix(matrixToLocal);\r\n targetCurve.Position = targetCurve.Position.setZ(0);\r\n if (equalCurve(thisCurve, targetCurve))\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n if (targetZMin < 0)\r\n this.Position = this.Position.add(n.multiplyScalar(targetZMin));\r\n\r\n this.Thickness = Math.max(this.Thickness, targetZMax) - Math.min(0, targetZMin);\r\n\r\n this.grooves.push(...target.grooves.map(g => g.Clone()));\r\n\r\n MergeRelevance();\r\n\r\n this.GrooveCheckMerge();\r\n this.Update();\r\n\r\n return Status.True;\r\n }\r\n }\r\n return Status.False;\r\n }\r\n\r\n get Volume()\r\n {\r\n let sum = this.ContourCurve.Area * this.thickness;\r\n for (let g of this.grooves)\r\n sum -= g.Volume;\r\n return sum;\r\n }\r\n\r\n /**\r\n * 被切割\r\n * @param extrudes 切割刀\r\n * @param [output=undefined] 如果实体被分裂,那么输出分裂的其他实体(如果为空,则尝试入当前实体的容器中)\r\n * @param [checkIntersect=true] 检查相交,性能优化\r\n * @returns 切割是否成功\r\n */\r\n Subtract(extrudes: ExtrudeSolid[], output: ExtrudeSolid[] = undefined, checkIntersect = true): boolean\r\n {\r\n if (checkIntersect)\r\n {\r\n let box = this.BoundingBox;\r\n extrudes = extrudes.filter(e => box.intersectsBox(e.BoundingBox));\r\n }\r\n\r\n //清除原先的关联关系\r\n if (this.Id)\r\n {\r\n let ids = new Set();\r\n for (let e of extrudes)\r\n {\r\n if (!e.Id) continue;\r\n arrayRemoveOnce(e.RelevanceMeats, this.Id);\r\n ids.add(e.Id.Index);\r\n }\r\n arrayRemoveIf(this.RelevanceKnifs, id => ids.has(id.Index));\r\n }\r\n\r\n let grooves: ExtrudeSolid[] = [];\r\n for (let br of extrudes)\r\n {\r\n let gs = this.ConverToLocalGroove(br);\r\n grooves.push(...gs);\r\n }\r\n\r\n let area1 = this.ContourCurve.Area;\r\n let sum1 = this.Volume;\r\n this.AppendGrooves(grooves, output);\r\n let sum2 = this.Volume;\r\n let area2 = this.ContourCurve.Area;\r\n if (!equaln(sum1, sum2) || !equaln(area1, area2))\r\n {\r\n if (!this.ReadFileIng && this instanceof Board)\r\n {\r\n if (this.Id)\r\n Log(`${this.Name}(${this.Id.Index})被切割成功!`);\r\n else if (this.__OriginalId__)\r\n Log(`${this.Name}(${this.__OriginalId__.Index})关联切割成功更新槽!`);\r\n }\r\n\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n RelevanceSubtract(knif: ExtrudeSolid, check = false)\r\n {\r\n if (!this.Id || !knif.Id) return;\r\n\r\n //判断是否已经存在\r\n if (check)\r\n {\r\n let index = this.RelevanceKnifs.findIndex(id => id.Index === knif.Id.Index);\r\n if (index !== -1) return;\r\n }\r\n\r\n this.RelevanceKnifs.push(knif.Id);\r\n knif.RelevanceMeats.push(this.Id);\r\n }\r\n\r\n /**\r\n * 当实体被分裂后,加入新图纸时,需要修复关联拉槽\r\n */\r\n RepairRelevance()\r\n {\r\n if (!this.Id)\r\n {\r\n console.error(\"不能修复未加入到图纸的板件!\");\r\n return;\r\n }\r\n\r\n for (let id of this.RelevanceKnifs)\r\n {\r\n if (id && !id.IsErase)\r\n {\r\n let br = id.Object as ExtrudeSolid;\r\n br.RelevanceMeats.push(this.Id);\r\n }\r\n }\r\n for (let id of this.RelevanceMeats)\r\n {\r\n if (id && !id.IsErase)\r\n {\r\n let br = id.Object as ExtrudeSolid;\r\n br.RelevanceKnifs.push(this.Id);\r\n }\r\n }\r\n }\r\n\r\n AppendGroove(groove: ExtrudeSolid)\r\n {\r\n this.WriteAllObjectRecord();\r\n this.grooves.push(groove);\r\n }\r\n\r\n /** 添加槽进板件,并且自动分裂.\r\n * 通常槽已经校验过准确性,所以不在校验\r\n */\r\n AppendGrooves(grooves: ExtrudeSolid[], output: ExtrudeSolid[] = undefined)\r\n {\r\n if (grooves.length === 0) return;\r\n this.WriteAllObjectRecord();\r\n this.grooves.push(...grooves);\r\n this.GrooveCheckAllAutoSplit(output);\r\n }\r\n\r\n GetObjectSnapPoints(\r\n snapMode: ObjectSnapMode,\r\n pickPoint: Vector3,\r\n lastPoint: Vector3,\r\n viewXform?: Matrix3\r\n ): Vector3[]\r\n {\r\n switch (snapMode)\r\n {\r\n case ObjectSnapMode.End:\r\n return this.GetStretchPoints();\r\n case ObjectSnapMode.Mid:\r\n case ObjectSnapMode.Cen:\r\n case ObjectSnapMode.Nea:\r\n case ObjectSnapMode.Ext:\r\n case ObjectSnapMode.Per:\r\n case ObjectSnapMode.Tan:\r\n {\r\n let contour = this.ContourCurve.Clone();\r\n contour.ApplyMatrix(this.OCS);\r\n let pts = contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform);\r\n\r\n contour.Position = contour.Position.add(this.Normal.multiplyScalar(this.thickness));\r\n pts.push(\r\n ...contour.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)\r\n );\r\n let ps = this.contourCurve.GetStretchPoints();\r\n for (let p of ps)\r\n {\r\n let l = new Line(p, p.clone().setZ(this.thickness));\r\n l.ApplyMatrix(this.OCS);\r\n pts.push(\r\n ...l.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform)\r\n );\r\n }\r\n for (let g of this.grooves)\r\n pts.push(...g.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform));\r\n\r\n return pts;\r\n }\r\n default:\r\n break;\r\n }\r\n return [];\r\n }\r\n\r\n //#region Stretch\r\n\r\n protected GetStrectchPointCountList(dragType: DragPointType): number[]\r\n {\r\n let counts: number[] = [this.ContourCurve.GetDragPointCount(dragType) * 2];\r\n for (let g of this.grooves)\r\n {\r\n let c = g.ContourCurve.GetDragPointCount(dragType) * 2;\r\n for (let g1 of g.grooves)\r\n c += g1.contourCurve.GetDragPointCount(dragType) * 2;\r\n\r\n counts.push(c);\r\n }\r\n return counts;\r\n }\r\n GetGripOrStretchPoints(dragType: DragPointType)\r\n {\r\n let isGrip = dragType === DragPointType.Grip;\r\n\r\n let pts = isGrip ? this.ContourCurve.GetGripPoints() : this.ContourCurve.GetStretchPoints();\r\n let v = new Vector3(0, 0, this.thickness);\r\n pts.push(...pts.map(p => p.clone().add(v)));\r\n pts.forEach(p => { p.applyMatrix4(this.OCS); });\r\n\r\n for (let g of this.grooves)\r\n {\r\n let gpts = g.GetGripOrStretchPoints(dragType);\r\n pts.push(...gpts);\r\n }\r\n return pts;\r\n }\r\n MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType)\r\n {\r\n this.WriteAllObjectRecord();\r\n\r\n let counts = this.GetStrectchPointCountList(dragType);\r\n if (dragType === DragPointType.Stretch && indexList.length === arraySum(counts))\r\n {\r\n this.Position = this.Position.add(vec);\r\n return;\r\n }\r\n\r\n arraySortByNumber(indexList);\r\n\r\n let updateBak = this.AutoUpdate;\r\n this.AutoUpdate = false;\r\n\r\n if (this.grooves.length === 0)\r\n {\r\n this.MoveGripOrStretchPointsOnly(indexList, vec, dragType);\r\n }\r\n else\r\n {\r\n let i = 0;\r\n let icount = indexList.length;\r\n let offset = 0;\r\n\r\n let grooveIndex = -1;\r\n for (let count of counts)\r\n {\r\n offset += count;\r\n let ilist = [];\r\n for (; i < icount; i++)\r\n {\r\n if (indexList[i] < offset)\r\n ilist.push(indexList[i] - offset + count);\r\n else\r\n break;\r\n }\r\n\r\n if (ilist.length > 0)\r\n {\r\n if (grooveIndex === -1)\r\n this.MoveGripOrStretchPointsOnly(ilist, vec, dragType);\r\n else\r\n this.grooves[grooveIndex].MoveGripOrStretchPoints(ilist, vec, dragType);\r\n }\r\n grooveIndex++;\r\n }\r\n }\r\n\r\n if (this.objectId)\r\n {\r\n this.CheckContourCurve();\r\n let splitEntitys: this[] = [];\r\n this.GrooveCheckAll(splitEntitys);\r\n\r\n if (splitEntitys.length > 0 && this.Owner)\r\n {\r\n let ms = this.Owner.Object as BlockTableRecord;\r\n for (let e of splitEntitys)\r\n ms.Append(e);\r\n }\r\n }\r\n this.AutoUpdate = updateBak;\r\n this.Update();\r\n }\r\n\r\n GetGripPoints(): Array\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Grip);\r\n }\r\n\r\n MoveGripPoints(indexList: number[], vec: Vector3)\r\n {\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Grip);\r\n }\r\n\r\n\r\n GetStretchPoints()\r\n {\r\n return this.GetGripOrStretchPoints(DragPointType.Stretch);\r\n }\r\n MoveStretchPoints(indexList: Array, vec: Vector3)\r\n {\r\n this.MoveGripOrStretchPoints(indexList, vec, DragPointType.Stretch);\r\n }\r\n\r\n /**\r\n * 只对自身的轮廓和厚度进行拉伸,忽略子实体\r\n */\r\n MoveGripOrStretchPointsOnly(indexList: Array, vec: Vector3, dragType: DragPointType)\r\n {\r\n let stretchCount = this.ContourCurve.GetDragPointCount(dragType);\r\n\r\n if (dragType === DragPointType.Stretch)\r\n {\r\n //Move\r\n if (indexList.length === stretchCount * 2)\r\n {\r\n this.Position = this.Position.add(vec);\r\n return;\r\n }\r\n\r\n //判断是否拉伸厚度\r\n if (this.IsStretchThickness(indexList))\r\n {\r\n let isFront = indexList[0] < stretchCount;\r\n\r\n if (indexList.every(v => v < stretchCount === isFront))\r\n {\r\n //Change thickness\r\n let lvec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec));\r\n if (isFront)\r\n {\r\n // if (lvec.z >= this.thickness) return;\r\n this.thickness -= lvec.z;\r\n //移动位置而不改变内部拉槽\r\n let v = this.Normal.multiplyScalar(lvec.z);\r\n this._Matrix.elements[12] += v.x;\r\n this._Matrix.elements[13] += v.y;\r\n this._Matrix.elements[14] += v.z;\r\n }\r\n else\r\n {\r\n // if (-lvec.z > this.thickness) return;\r\n this.thickness += lvec.z;\r\n }\r\n return;\r\n }\r\n }\r\n\r\n indexList = arrayClone(indexList);\r\n }\r\n\r\n //修正点的索引\r\n for (let i = 0; i < indexList.length; i++)\r\n {\r\n let index = indexList[i];\r\n if (index >= stretchCount)\r\n {\r\n index -= stretchCount;\r\n indexList[i] = index;\r\n }\r\n }\r\n\r\n indexList = [...new Set(indexList)];\r\n\r\n let localVec = vec.clone().applyMatrix4(this.OCSInv.setPosition(ZeroVec));\r\n\r\n if (dragType === DragPointType.Grip)\r\n {\r\n if (this.ContourCurve instanceof Polyline\r\n && indexList.length === 1\r\n && indexList[0] % 2 === 1)\r\n {\r\n let param = indexList[0] / 2;\r\n if (this.ContourCurve.GetBuilgeAt(Math.floor(param)) === 0)\r\n {\r\n let der = this.ContourCurve.GetFistDeriv(param).normalize();\r\n [der.x, der.y] = [der.y, -der.x];\r\n let d = localVec.dot(der);\r\n localVec.copy(der).multiplyScalar(d);\r\n }\r\n }\r\n this.ContourCurve.MoveGripPoints(indexList, localVec);\r\n }\r\n else\r\n this.ContourCurve.MoveStretchPoints(indexList, localVec);\r\n }\r\n\r\n IsStretchThickness(indexs: number[])\r\n {\r\n let count = this.ContourCurve.GetStretchPoints().length;\r\n if (indexs.length === count)\r\n {\r\n let isF = indexs[0] < count;\r\n return indexs.every(i => isF === (i < count));\r\n }\r\n return false;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region groove(凹槽(造型))操作\r\n\r\n /*\r\n\r\n 添加凹槽一般会经过以下几个步骤\r\n\r\n 1.凹槽转换成和本实体法线平行的凹槽实体\r\n ->调用第二步\r\n\r\n 2.校验凹槽的Z轴位置是否存在交集\r\n ->{不存在Z轴交集} 或 {交集异常(凹槽被本实体包含不见光)} 的凹槽被移除\r\n ->凹槽的Z轴位置和厚度被更新\r\n\r\n 3.凹槽合并\r\n\r\n 4.修正轮廓.\r\n ->{本实体}轮廓被修正(当实体被凹槽破坏形状时)\r\n -->修正成功后,凹槽被移除\r\n -->本实体可能分裂\r\n\r\n ->{凹槽}轮廓被修正({凹槽的轮廓}被约束在{实体轮廓}内部)\r\n -->凹槽可能分裂\r\n\r\n */\r\n\r\n\r\n /**\r\n * 当调用Draw时,可以生成bsp信息\r\n */\r\n private csg: CSG;\r\n get CSG()\r\n {\r\n if (this.csg)\r\n return this.csg;\r\n\r\n this.csg = Geometry2CSG(this.MeshGeometry);\r\n return this.csg;\r\n }\r\n\r\n /**\r\n * (步骤1.2.)\r\n * 将目标拉伸实体转换成在板件内部可用的凹槽实体\r\n * @param target 该对象可能被修改(内部不拷贝该实体)\r\n * @param useClone 转换后的实体是目标实体拷贝后修改的\r\n */\r\n ConverToLocalGroove(target: ExtrudeSolid): ExtrudeSolid[]\r\n {\r\n if (!this.OBB.intersectsOBB(target.OBB)) return [];\r\n\r\n let n1 = this.Normal;\r\n let n2 = target.Normal;\r\n if (isParallelTo(n1, n2))\r\n {\r\n target = target.Clone().ClearDraw();\r\n if (!equalv3(n1, n2, 1e-6))\r\n {\r\n let mtx = target._Matrix;\r\n matrixSetVector(mtx, 2, n1);\r\n let p = n1.setFromMatrixColumn(mtx, 3);\r\n p.add(n2.multiplyScalar(target.thickness));\r\n matrixSetVector(mtx, 3, p);\r\n }\r\n if (this.GrooveCheckPosition(target) !== Status.True)\r\n return [];\r\n\r\n return [target];\r\n }\r\n else\r\n {\r\n //当切割刀是矩形板,并且没有槽的时候,如果轴对齐,我们可以直接用aabb进行求交\r\n if (target.isRect && target.grooves.length === 0)\r\n {\r\n let diffMtx = target.OCS.premultiply(this.OCSInv);\r\n let box = target.BoundingBoxInOCS.applyMatrix4(diffMtx);\r\n let size = box.getSize(new Vector3);\r\n\r\n //轴对齐\r\n if (equaln(size.x * size.y * size.z, target.Width * target.Height * target.Thickness, 1))\r\n {\r\n let ibox = this.BoundingBoxInOCS.intersect(box);\r\n if (!(ibox.getSize(size).toArray().every(x => x > 1))) return [];\r\n\r\n //构造新槽(因为我们当前的槽加长是根据槽的长短边进行加长的,所以我们可以这么构建)\r\n let g2 = new ExtrudeSolid().ConverToRectSolid(size.x, size.y, size.z);\r\n g2.Position = ibox.min;\r\n g2.ApplyMatrix(this._Matrix);\r\n g2.groovesAddDepth = target.groovesAddDepth;\r\n g2.groovesAddLength = target.groovesAddLength;\r\n g2.groovesAddWidth = target.groovesAddWidth;\r\n g2.knifeRadius = target.knifeRadius;\r\n return [g2];\r\n }\r\n }\r\n\r\n let grooves: ExtrudeSolid[] = [];\r\n let project = ProjectBoard(target, this);\r\n if (!project)\r\n {\r\n let yv = n2;\r\n let zv = n1;\r\n let xv = yv.clone().cross(zv);\r\n yv.copy(zv).cross(xv);\r\n let m = new Matrix4().makeBasis(xv, yv, zv).copyPosition(this.OCS);\r\n let mi = new Matrix4().getInverse(m).multiply(this.OCS);\r\n\r\n let interBSP = this.CSG.intersect(target.CSG.transform1(this.OCSInv.multiply(target.OCS)));\r\n let topology = new BSPGroupParse(interBSP);\r\n let grooves: ExtrudeSolid[] = [];\r\n for (let pts of topology.Parse())\r\n {\r\n for (let p of pts)\r\n p.applyMatrix4(mi);\r\n let box = new Box3Ext().setFromPoints(pts);\r\n if (!box.isSolid(0.1))\r\n continue;\r\n let size = box.getSize(new Vector3());\r\n\r\n let ext = new ExtrudeSolid();\r\n ext.groovesAddDepth = target.groovesAddDepth;\r\n ext.groovesAddLength = target.groovesAddLength;\r\n ext.groovesAddWidth = target.groovesAddWidth;\r\n ext.knifeRadius = target.knifeRadius;\r\n ext.ConverToRectSolid(size.x, size.y, size.z);\r\n ext.OCS = m.clone().setPosition(box.min.applyMatrix4(m));\r\n\r\n grooves.push(ext);\r\n }\r\n return grooves;\r\n }\r\n // project.ApplyMatrix(target.OCSInv);\r\n project.Z0();\r\n let c1 = Contour.CreateContour(project);\r\n let c2 = Contour.CreateContour(target.ContourCurve);\r\n //投影轮廓列表\r\n let contours = c1.IntersectionBoolOperation(c2);\r\n let outlines: ExtureContourCurve[] = [];\r\n for (let c of contours)\r\n {\r\n if (c.Curve instanceof Polyline)\r\n outlines.push(...PolylineSpliteRect(c.Curve));\r\n else\r\n outlines.push(c.Curve);\r\n }\r\n let xv = n1;\r\n let zv = n2;\r\n let yv = zv.clone().cross(xv);\r\n\r\n //把<投影轮廓>对齐到肉的侧面坐标系上\r\n let projection2SideMatrix4 = new Matrix4().makeBasis(xv, yv, zv);\r\n for (let c of outlines)\r\n {\r\n let g = target.Clone().ClearDraw();\r\n let gs = [g];\r\n g.ContourCurve = c;\r\n g.GrooveCheckAll(gs);\r\n\r\n for (let g1 of gs)\r\n {\r\n //按g1的位置设置\r\n projection2SideMatrix4.setPosition(g1.Position);\r\n\r\n //投影到肉的侧面坐标系,求槽在肉里面的长度(x)和厚度(z)\r\n let alm = new Matrix4().getInverse(projection2SideMatrix4).multiply(g1.OCS);\r\n g1.ContourCurve.ApplyMatrix(alm);//破坏它\r\n let box = g1.ContourCurve.BoundingBox;\r\n let size = box.getSize(new Vector3);\r\n if (equaln(size.x, 0, 1e-2) || equaln(size.y, 0, 1e-2)) continue;\r\n\r\n //构造新槽\r\n let g2 = new ExtrudeSolid().ConverToRectSolid(size.y, g1.Thickness, size.x);\r\n g2.groovesAddDepth = target.groovesAddDepth;\r\n g2.groovesAddLength = target.groovesAddLength;\r\n g2.groovesAddWidth = target.groovesAddWidth;\r\n g2.knifeRadius = target.knifeRadius;\r\n g2.ApplyMatrix(OverturnMatrix);//翻转到和原先的投影曲线(肉侧面)一样的状态\r\n g2.ApplyMatrix(MoveMatrix(box.min));//和投影曲线重叠\r\n g2.ApplyMatrix(projection2SideMatrix4);//按照矩形还原回去\r\n\r\n grooves.push(g2);\r\n }\r\n }\r\n return grooves;\r\n }\r\n }\r\n\r\n /**\r\n * (步骤2)\r\n * 更新凹槽位置和厚度(校验凹槽的Z轴位置是否存在交集)\r\n */\r\n GrooveCheckPosition(target: ExtrudeSolid): Status\r\n {\r\n if (target.Width < 1e-2 || target.Height < 1e-2 || target.Thickness < 1e-2)\r\n return Status.False;\r\n\r\n let tp = target.Position.applyMatrix4(this.OCSInv);\r\n\r\n let minZ = tp.z;\r\n let maxZ = tp.z + target.thickness;\r\n if (minZ <= 1e-2)//背面\r\n {\r\n target.Thickness = Math.min(maxZ, this.thickness);\r\n if (!(equaln(minZ, 0)))\r\n target.ApplyMatrix(\r\n MoveMatrix(this.Normal.multiplyScalar(-minZ))\r\n );\r\n }\r\n else if (maxZ >= (this.thickness - 1e-3) && minZ > 0)//正面\r\n target.Thickness = this.thickness - minZ;\r\n else\r\n return Status.False;\r\n\r\n if (equaln(target.thickness, this.thickness, 1e-3))\r\n target.thickness = this.thickness;\r\n\r\n return target.thickness > 1e-3 ? Status.True : Status.False;\r\n }\r\n\r\n /**\r\n * (步骤3)\r\n * 计算凹槽合并\r\n */\r\n GrooveCheckMerge()\r\n {\r\n let gs: ExtrudeSolid[] = [];\r\n while (this.grooves.length > 0)\r\n {\r\n let g = this.grooves.pop();\r\n while (this.grooves.length > 0)\r\n {\r\n //剩余的 无法合并的板件\r\n let remGs = this.grooves.filter(gn =>\r\n {\r\n if (equaln(g.knifeRadius, gn.knifeRadius))\r\n return g.Join(gn) === Status.False;\r\n else\r\n return true;\r\n });\r\n if (remGs.length === this.grooves.length)\r\n break;\r\n this.grooves = remGs;\r\n }\r\n gs.push(g);\r\n }\r\n\r\n if (gs.length !== this.grooves.length)\r\n {\r\n this.grooves = gs;\r\n for (let g of this.grooves)\r\n g.CheckContourCurve();\r\n }\r\n }\r\n\r\n /**\r\n * (步骤4.1)\r\n * 计算凹槽轮廓(可能分裂)\r\n * @param target 不拷贝修改\r\n * @returns this[] 凹槽在本实体中正确的约束状态.(可能分裂成为多个)\r\n */\r\n GrooveCheckContour(target: ExtrudeSolid): ExtrudeSolid[]\r\n {\r\n let matrixToTarget = target.OCSInv.multiply(this.OCS);\r\n matrixToTarget.elements[14] = 0;//z->0\r\n\r\n let thisShape = this.Shape.ApplyMatrix(matrixToTarget);\r\n let targetShape = new Shape(Contour.CreateContour([target.ContourCurve.Clone()], false));\r\n\r\n let inters = thisShape.IntersectionBoolOperation(targetShape);\r\n\r\n if (inters.length === 1)\r\n {\r\n target.ContourCurve = inters[0].Outline.Curve;\r\n let grooves = [target];\r\n target.GrooveCheckAll(grooves);\r\n return grooves;\r\n }\r\n else\r\n {\r\n let grooves: ExtrudeSolid[] = [];\r\n for (let contour of inters)\r\n {\r\n let ext = target.Clone().ClearDraw();\r\n ext.ContourCurve = contour.Outline.Curve;\r\n ext.GrooveCheckAll(grooves);\r\n grooves.push(ext);\r\n }\r\n return grooves;\r\n }\r\n }\r\n /**\r\n * (步骤4.2)\r\n * 计算本实体被全身度的凹槽差集后正确的实体轮廓,和有可能的分裂实体\r\n * @param splitEntitys 分裂出来的实体\r\n * @returns [Status] Status : 消失不见\r\n */\r\n ContourCheckSubtract(splitEntitys: this[]): boolean\r\n {\r\n let shapeManager = new ShapeManager();\r\n shapeManager.AppendShapeList(\r\n new Shape(Contour.CreateContour(this.ContourCurve.Clone(), false))\r\n );\r\n let subtractShape = new ShapeManager();\r\n\r\n let grooves: ExtrudeSolid[] = [];\r\n arrayRemoveIf(this.grooves, groove =>\r\n {\r\n if (equaln(groove.thickness, this.thickness))\r\n {\r\n let grooveCurve = groove.ContourCurve.Clone();\r\n let matrixToLocal = this.OCSInv.multiply(groove.OCS);\r\n grooveCurve.ApplyMatrix(matrixToLocal);\r\n\r\n subtractShape.AppendShapeList(\r\n new Shape(Contour.CreateContour([grooveCurve], false))\r\n );\r\n\r\n grooves.push(groove);\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n shapeManager.SubstactBoolOperation(subtractShape);\r\n let shapes = shapeManager.ShapeList;\r\n\r\n //不做任何改变\r\n if (shapeManager.ShapeCount === 1 && shapes[0].Holes.length === grooves.length)\r\n {\r\n this.grooves.push(...grooves);\r\n return true;\r\n }\r\n\r\n //分裂\r\n for (let i = 1; i < shapeManager.ShapeCount; i++)\r\n {\r\n let ext = this.Clone();\r\n let shape = shapes[i];\r\n for (let hole of shape.Holes)\r\n {\r\n let groove = new ExtrudeSolid();\r\n groove.OCS = this.OCS;\r\n groove.ContourCurve = hole.Curve;\r\n groove.thickness = this.thickness;\r\n ext.grooves.push(groove);\r\n }\r\n ext.ContourCurve = shape.Outline.Curve;\r\n ext.GrooveCheckAll(splitEntitys);\r\n ext.Update();\r\n splitEntitys.push(ext);\r\n }\r\n\r\n if (shapes.length > 0)\r\n {\r\n let shape = shapes[0];\r\n for (let hole of shape.Holes)\r\n {\r\n let groove = new ExtrudeSolid();\r\n groove.OCS = this.OCS;\r\n groove.ContourCurve = hole.Curve;\r\n groove.thickness = this.thickness;\r\n this.grooves.push(groove);\r\n }\r\n\r\n if (!equaln(this.contourCurve.Area, shape.Outline.Area))\r\n this.ContourCurve = shape.Outline.Curve;\r\n\r\n return true;\r\n }\r\n else\r\n return false;\r\n }\r\n\r\n IsLazyGrooveCheck: boolean;\r\n IsNeedGrooveCheck: boolean;\r\n /**\r\n * 无法知道修改了轮廓是否为更新到内部凹槽.\r\n * 无法知道修改了内部凹槽之后是否会更新到轮廓.\r\n * 所以默认全部校验内部的凹槽\r\n */\r\n GrooveCheckAll(splitEntitys: this[])\r\n {\r\n if (ExtrudeConfig.DisableCheckGroove) return;\r\n\r\n if (this.IsLazyGrooveCheck)\r\n {\r\n this.IsNeedGrooveCheck = true;\r\n return;\r\n }\r\n this.IsNeedGrooveCheck = false;\r\n this.WriteAllObjectRecord();\r\n\r\n //校验Z轴位置\r\n arrayRemoveIf(this.grooves, g =>\r\n {\r\n return this.GrooveCheckPosition(g) === Status.False;\r\n });\r\n\r\n //清除全深洞的子槽\r\n for (let g of this.grooves)\r\n {\r\n if (equaln(g.thickness, this.thickness, 1e-3))\r\n {\r\n /*\r\n 此刻我们直接将它的子槽清空,虽然子槽可能将这个槽分裂成2个,\r\n 但是这样的情况只能在造型应用中才会产生\r\n */\r\n g.grooves.length = 0;\r\n }\r\n else\r\n arrayRemoveIf(g.grooves, subg => !equaln(g.thickness, subg.thickness, 1e-3));\r\n }\r\n\r\n //合并\r\n this.GrooveCheckMerge();\r\n //修改本实体轮廓\r\n if (this.grooves.some(g => equaln(g.thickness, this.thickness, 1e-3)))\r\n {\r\n if (!this.ContourCheckSubtract(splitEntitys))\r\n {\r\n this.Erase();\r\n return;\r\n }\r\n }\r\n\r\n //修正凹槽轮廓\r\n let splitGrooves: ExtrudeSolid[] = [];\r\n let thisArea = this.contourCurve.Area;\r\n for (let i = 0; i < this.grooves.length; i++)\r\n {\r\n let g = this.grooves[i];\r\n if (equaln(g.thickness, this.thickness, 1e-3))\r\n splitGrooves.push(g);\r\n else\r\n {\r\n let gs = this.GrooveCheckContour(g);\r\n if (gs.length === 1)\r\n {\r\n let gg = gs[0];\r\n if (gg.grooves.length === 0 && equaln(gg.contourCurve.Area, thisArea))\r\n {\r\n //判断正反面\r\n let p = gg.Position.applyMatrix4(this.OCSInv);\r\n if (equaln(p.z, 0))\r\n {\r\n this.thickness -= gg.thickness;\r\n let n = this.Normal;\r\n n.multiplyScalar(gg.thickness);\r\n this._Matrix.elements[12] += n.x;\r\n this._Matrix.elements[13] += n.y;\r\n this._Matrix.elements[14] += n.z;\r\n }\r\n else\r\n {\r\n this.thickness -= gg.thickness;\r\n }\r\n this.grooves.splice(i, 1);\r\n this.GrooveCheckAll(splitEntitys);\r\n return;\r\n }\r\n }\r\n splitGrooves.push(...gs);\r\n }\r\n }\r\n\r\n this.grooves = splitGrooves;\r\n\r\n this.Update();\r\n }\r\n\r\n /** 校验内部槽并且自动分裂 */\r\n GrooveCheckAllAutoSplit(output: ExtrudeSolid[] = undefined)\r\n {\r\n let splitEntitys: this[] = [];\r\n this.GrooveCheckAll(splitEntitys);\r\n\r\n if (output)\r\n output.push(...splitEntitys);\r\n else if (this._Owner)\r\n {\r\n let record = this._Owner.Object as BlockTableRecord;\r\n for (let e of splitEntitys)\r\n {\r\n record.Add(e);\r\n e.RepairRelevance();\r\n }\r\n this.HandleSpliteEntitys(splitEntitys);\r\n }\r\n }\r\n HandleSpliteEntitys(splitEntitys: this[]) { }\r\n LazyGrooveCheckAll()\r\n {\r\n if (this.IsNeedGrooveCheck)\r\n this.GrooveCheckAllAutoSplit();\r\n this.IsLazyGrooveCheck = false;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Draw\r\n GetPrintObject3D()\r\n {\r\n let geometry = new LineGeometry();\r\n let lineSegments = new Float32Array(this.EdgeGeometry.attributes.position.array);\r\n let instanceBuffer = new InstancedInterleavedBuffer(lineSegments, 6, 1);\r\n geometry.setAttribute('instanceStart', new InterleavedBufferAttribute(instanceBuffer, 3, 0));\r\n geometry.setAttribute('instanceEnd', new InterleavedBufferAttribute(instanceBuffer, 3, 3));\r\n let line = new Line2(geometry, ColorMaterial.PrintLineMatrial);\r\n let mesh = new Mesh(this.MeshGeometry, ColorMaterial.GetPrintConceptualMaterial());\r\n return [line, mesh];\r\n }\r\n InitDrawObject(renderType: RenderType = RenderType.Wireframe)\r\n {\r\n if (renderType === RenderType.Wireframe)\r\n {\r\n return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));\r\n }\r\n else if (renderType === RenderType.Conceptual)\r\n {\r\n return new Object3D().add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Physical)\r\n {\r\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\r\n mesh.castShadow = true;\r\n mesh.receiveShadow = true;\r\n\r\n return mesh;\r\n }\r\n else if (renderType === RenderType.Jig)\r\n {\r\n return new Object3D().add(...FastWireframe(this));\r\n }\r\n else if (renderType === RenderType.Print)\r\n {\r\n return new Object3D().add(...this.GetPrintObject3D());\r\n }\r\n else if (renderType === RenderType.Physical2)\r\n {\r\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\r\n mesh.castShadow = true;\r\n mesh.receiveShadow = true;\r\n\r\n return new Object3D().add(\r\n mesh,\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n }\r\n get UCGenerator(): UVGenerator\r\n {\r\n return boardUVGenerator;\r\n }\r\n\r\n __CacheKnifVersion__: { [key: number]: number; };\r\n get NeedUpdateRelevanceGroove()\r\n {\r\n if (!this.__CacheKnifVersion__) return true;\r\n\r\n for (let k of this.RelevanceKnifs)\r\n {\r\n if (!k || !k.Object) continue;\r\n\r\n if (this.__CacheKnifVersion__[k.Index] !== ((k.Object)).__UpdateVersion__)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //缓存当前被关联切割后的体积,如果体积有变化,证明多了拉槽或者少了拉槽\r\n __CacheVolume__: number;\r\n //每当我们去计算关联拉槽的时候,总会有这个分裂的图形数组,如果我们需要,我们也可以复用它去拆单,或者去排钻\r\n __CacheSplitExtrudes: this[];\r\n\r\n /**\r\n * 计算关联拉槽,更新绘制对象(MeshGeometry和EdgeGeometry)\r\n */\r\n private CalcRelevanceGroove()\r\n {\r\n //避免Jig实体更新,导致性能暴跌.\r\n if (!this.Id) return;\r\n\r\n this.__CacheKnifVersion__ = {};\r\n\r\n let knifs: ExtrudeSolid[] = [];\r\n this.GetRelevanceKnifes(knifs);\r\n\r\n if (knifs.length > 0)\r\n {\r\n for (let k of knifs) //复合实体(五金)的子实体没有id\r\n this.__CacheKnifVersion__[k.Id?.Index ?? k.__TempIndexVersion__?.Index] = k.__TempIndexVersion__?.Version ?? k.__UpdateVersion__;\r\n\r\n let tempExtrude = this.Clone();\r\n tempExtrude.RelevanceKnifs.length = 0;//避免递归\r\n if (!this.ReadFileIng)\r\n tempExtrude.__OriginalId__ = this.Id;//在读取文件时不打印日志\r\n let output: ExtrudeSolid[] = [tempExtrude];\r\n let ok = tempExtrude.Subtract(knifs, output);\r\n this.__CacheSplitExtrudes = output as this[];\r\n if (ok)\r\n {\r\n this.__CacheVolume__ = tempExtrude.Volume;\r\n let meshs: BufferGeometry[] = [];\r\n let edges: BufferGeometry[] = [];\r\n let inv = this.OCSInv;\r\n let diff = new Matrix4;\r\n for (let e2 of output)\r\n {\r\n diff.multiplyMatrices(inv, e2._Matrix);\r\n meshs.push(e2.MeshGeometry.applyMatrix4(diff));\r\n edges.push(e2.EdgeGeometry.applyMatrix4(diff));\r\n this.__CacheVolume__ += e2.Volume;\r\n\r\n }\r\n if (output.length === 1)\r\n {\r\n this._MeshGeometry = tempExtrude.MeshGeometry;\r\n this._EdgeGeometry = tempExtrude.EdgeGeometry;\r\n }\r\n else\r\n {\r\n this._MeshGeometry = BufferGeometryUtils.MergeBufferGeometries(meshs);\r\n this._MeshGeometry[\"IsMesh\"] = true;\r\n this._EdgeGeometry = BufferGeometryUtils.MergeBufferGeometries(edges);\r\n }\r\n\r\n //我们加入一些拓展信息,以便排钻能够使用(或者其他的,比如发送到效果图?,BBS)(布局视口会直接添加实体到场景,所以我们只在这里设置OriginEntity)\r\n for (let i = 0; i < this.__CacheSplitExtrudes.length; i++)\r\n {\r\n this.__CacheSplitExtrudes[i].objectId = new ObjectId(this.Id.Index * -100 - i);\r\n this.__CacheSplitExtrudes[i].__OriginalEnt__ = this;\r\n }\r\n }\r\n else\r\n {\r\n let id = this.Id ?? this.__OriginalId__;\r\n if (\r\n !this.ReadFileIng &&\r\n id &&\r\n this instanceof Board &&\r\n this.__CacheVolume__ !== undefined &&\r\n !equaln(this.__CacheVolume__, this.Volume)\r\n )\r\n Log(`${this.Name}(${id.Index})关联槽已逃离!`);\r\n this.__CacheVolume__ = undefined;\r\n\r\n this.__CacheSplitExtrudes = [this];\r\n }\r\n }\r\n else\r\n {\r\n if (\r\n !this.ReadFileIng &&\r\n this.Id &&\r\n this instanceof Board &&\r\n this.__CacheVolume__ !== undefined &&\r\n !equaln(this.__CacheVolume__, this.Volume)\r\n )\r\n Log(`${this.Name}(${this.Id.Index})关联槽已逃离或者被清除!`);\r\n\r\n this.__CacheSplitExtrudes = [this];\r\n this.__CacheVolume__ = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * 如果实体被切割,那么将返回分裂的实体数组,否则返回自身\r\n */\r\n get SplitExtrudes(): this[]\r\n {\r\n if (this.NeedUpdateRelevanceGroove)\r\n this.Update(UpdateDraw.Geometry);//我们先直接更新绘制\r\n if (this.NeedUpdateRelevanceGroove)//如果更新失败,那么我们更新这个槽(似乎也证明了我们没有绘制实体)\r\n this.CalcRelevanceGroove();//注意,这也将更新绘制的实体(EdgeGeo,MeshGeo)(如果拆单也用这个,可能会带来性能损耗)\r\n\r\n return this.__CacheSplitExtrudes;\r\n }\r\n\r\n protected GetRelevanceKnifes(knifs: ExtrudeSolid[])\r\n {\r\n for (let e of this.RelevanceKnifs)\r\n {\r\n if (!e.IsErase)\r\n knifs.push(e.Object as ExtrudeSolid);\r\n else if (this.__CacheKnifVersion__)\r\n this.__CacheKnifVersion__[e.Index] = (e?.Object)?.__UpdateVersion__;\r\n }\r\n }\r\n\r\n ClearRelevance(en?: ExtrudeSolid)\r\n {\r\n if (en)\r\n {\r\n let oldLen = this.RelevanceKnifs.length;\r\n arrayRemoveIf(this.RelevanceKnifs, id => !id?.Object || id.Index === en.Id.Index);\r\n if (this.RelevanceKnifs.length !== oldLen)\r\n arrayRemoveIf(en.RelevanceMeats, id => !id?.Object || id.Index === this.Id.Index);\r\n\r\n oldLen = this.RelevanceMeats.length;\r\n arrayRemoveIf(this.RelevanceMeats, id => !id?.Object || id.Index === en.Id.Index);\r\n if (oldLen !== this.RelevanceMeats.length)\r\n arrayRemoveIf(en.RelevanceKnifs, id => !id?.Object || id.Index === this.Id.Index);\r\n }\r\n else\r\n {\r\n for (let id of this.RelevanceKnifs)\r\n {\r\n let en = id.Object as ExtrudeSolid;\r\n if (en)\r\n arrayRemoveIf(en.RelevanceMeats, i => !i?.Object || i.Index === this.Id.Index);\r\n }\r\n\r\n for (let id of this.RelevanceMeats)\r\n {\r\n let en = id.Object as ExtrudeSolid;\r\n if (en)\r\n {\r\n arrayRemoveIf(en.RelevanceKnifs, i => !i?.Object || i.Index === this.Id.Index);\r\n en.Update();\r\n }\r\n }\r\n this.RelevanceMeats.length = 0;\r\n this.RelevanceKnifs.length = 0;\r\n }\r\n this.Update();\r\n }\r\n\r\n private _MeshGeometry: BufferGeometry;\r\n get MeshGeometry(): BufferGeometry\r\n {\r\n if (this._MeshGeometry)\r\n return this._MeshGeometry;\r\n\r\n if (this.thickness <= 0)\r\n return new BufferGeometry();\r\n\r\n if (!ExtrudeConfig.DisableRefCut)\r\n this.CalcRelevanceGroove();\r\n if (this._MeshGeometry)\r\n return this._MeshGeometry;\r\n\r\n let grooves = this.Grooves;\r\n if (grooves.every(g => equaln(g.thickness, this.thickness)) || grooves.length === 0)\r\n {\r\n let contour = this.ContourCurve.Clone();\r\n let holes: Contour[] = [];\r\n\r\n let ocsInv = this.OCSInv;\r\n let alMatrix4 = new Matrix4();\r\n for (let g of grooves)\r\n {\r\n alMatrix4.multiplyMatrices(ocsInv, g.OCSNoClone);\r\n let gContour = g.ContourCurve.Clone();\r\n gContour.ApplyMatrix(alMatrix4);\r\n holes.push(Contour.CreateContour(gContour));\r\n }\r\n\r\n let shape = new Shape(Contour.CreateContour(contour), holes);\r\n\r\n let extrudeSettings: ExtrudeGeometryOptions = {\r\n steps: 1,\r\n bevelEnabled: false,\r\n depth: this.Thickness,\r\n UVGenerator: this.UCGenerator,\r\n };\r\n let geo = new ExtrudeGeometry(shape.Shape, extrudeSettings);\r\n geo.applyMatrix4(contour.OCSNoClone);\r\n this.UpdateUV(geo, contour.OCSNoClone);\r\n let bgeo = new BufferGeometry().fromGeometry(geo);\r\n bgeo[\"IsMesh\"] = true;\r\n this._MeshGeometry = bgeo;\r\n return bgeo;\r\n }\r\n\r\n let builder = new ExtrudeGeometryBuilder(this);\r\n\r\n this._MeshGeometry = builder.MeshGeometry;\r\n this._EdgeGeometry = builder.EdgeGeometry;\r\n this.UpdateUV(null, null);\r\n\r\n return this._MeshGeometry;\r\n }\r\n\r\n private _EdgeGeometry: EdgesGeometry | BufferGeometry;\r\n protected get EdgeGeometry()\r\n {\r\n if (this._EdgeGeometry)\r\n return this._EdgeGeometry;\r\n\r\n if (!ExtrudeConfig.DisableRefCut)\r\n this.CalcRelevanceGroove();\r\n if (this._EdgeGeometry)\r\n return this._EdgeGeometry;\r\n\r\n if (this.grooves.every(g => equaln(g.thickness, this.thickness)) || this.grooves.length === 0)\r\n {\r\n let pts = [this.ContourCurve.Shape.getPoints(6).map(AsVector3)];\r\n let ocsInv = this.OCSInv;\r\n let alMatrix4 = new Matrix4();\r\n for (let g of this.grooves)\r\n {\r\n alMatrix4.multiplyMatrices(ocsInv, g.OCSNoClone);\r\n let gContour = g.ContourCurve.Clone();\r\n gContour.ApplyMatrix(alMatrix4);\r\n\r\n if (gContour instanceof Polyline)\r\n gContour.UpdateMatrixTo(this.contourCurve.OCS);\r\n\r\n if (gContour instanceof Circle)\r\n {\r\n let sp = new Path();\r\n let cen = gContour.Center.applyMatrix4(this.contourCurve.OCSInv);\r\n sp.ellipse(cen.x, cen.y, gContour.Radius, gContour.Radius, 0, 2 * Math.PI, false, 0);\r\n pts.push(sp.getPoints(6).map(AsVector3));\r\n }\r\n else\r\n pts.push(gContour.Shape.getPoints(6).map(AsVector3));\r\n }\r\n let geo = GenerateExtrudeEdgeGeometry(pts, this.thickness).applyMatrix4(this.contourCurve.OCSNoClone);\r\n this._EdgeGeometry = geo;\r\n return geo;\r\n }\r\n\r\n if (this._MeshGeometry)\r\n {\r\n this._MeshGeometry.dispose();\r\n this._MeshGeometry = undefined;\r\n }\r\n this.MeshGeometry;\r\n return this._EdgeGeometry;\r\n }\r\n\r\n UpdateUV(geo: Geometry, ocs: Matrix4, isRev = false)\r\n {\r\n let mat: PhysicalMaterialRecord;\r\n if (this.Material && this.Material.Object)\r\n mat = this.Material.Object as PhysicalMaterialRecord;\r\n else\r\n mat = this.Db?.DefaultMaterial;\r\n\r\n if (mat && mat.IsFull)\r\n {\r\n if (geo)\r\n ScaleUV2(geo, ocs, this.width, this.height, isRev);\r\n else\r\n this.UpdateBufferGeometryUvs(isRev);\r\n }\r\n else\r\n {\r\n if (geo)\r\n ScaleUV(geo);\r\n }\r\n }\r\n UpdateBufferGeometryUvs(isRev: boolean)\r\n {\r\n let uvs = this._MeshGeometry.attributes.uv;\r\n for (let i = 0; i < uvs.count; i++)\r\n {\r\n let x = uvs.getX(i) * 1e3;\r\n let y = uvs.getY(i) * 1e3;\r\n if (isRev)\r\n uvs.setXY(i, x / this.height, y / this.width);\r\n else\r\n uvs.setXY(i, x / this.width, y / this.height);\r\n }\r\n }\r\n DeferUpdate()\r\n {\r\n if (this.NeedUpdateFlag & UpdateDraw.Matrix)\r\n {\r\n //如果是Jig实体,那么就算它有关联切割,我们也不更新实体(因为似乎没必要?)\r\n if (this.Id && this.RelevanceKnifs.some(id => !id.IsErase))\r\n this.NeedUpdateFlag |= UpdateDraw.Geometry;\r\n }\r\n super.DeferUpdate();\r\n }\r\n\r\n UpdateDrawGeometry()\r\n {\r\n this.csg = undefined;\r\n if (this._EdgeGeometry)\r\n this._EdgeGeometry.dispose();\r\n this._EdgeGeometry = undefined;\r\n if (this._MeshGeometry)\r\n this._MeshGeometry.dispose();\r\n this._MeshGeometry = undefined;\r\n }\r\n\r\n UpdateDrawObject(renderType: RenderType, obj: Object3D)\r\n {\r\n DisposeThreeObj(obj);\r\n Object3DRemoveAll(obj);\r\n if (renderType === RenderType.Wireframe)\r\n {\r\n let l = obj as LineSegments;\r\n l.geometry = this.EdgeGeometry;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (renderType === RenderType.Conceptual)\r\n {\r\n return obj.add(\r\n new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex)),\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n else if (renderType === RenderType.Physical)\r\n {\r\n let mesh = obj as Mesh;\r\n mesh.geometry = this.MeshGeometry;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n else if (renderType === RenderType.Jig)\r\n {\r\n obj.add(...FastWireframe(this));\r\n }\r\n else if (renderType === RenderType.Print)\r\n {\r\n return obj.add(\r\n ...this.GetPrintObject3D()\r\n );\r\n }\r\n else if (renderType === RenderType.Physical2)\r\n {\r\n let mesh = new Mesh(this.MeshGeometry, this.MeshMaterial);\r\n mesh.castShadow = true;\r\n mesh.receiveShadow = true;\r\n\r\n return obj.add(\r\n mesh,\r\n new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(7))\r\n );\r\n }\r\n }\r\n UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D)\r\n {\r\n if (renderType === RenderType.Wireframe)\r\n {\r\n let l = obj as TLine;\r\n l.material = ColorMaterial.GetLineMaterial(this.ColorIndex);\r\n }\r\n else if (renderType === RenderType.Conceptual)\r\n {\r\n let mesh = obj.children[0] as Mesh;\r\n mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);\r\n }\r\n else if (renderType === RenderType.Physical2)\r\n {\r\n let mesh = obj.children[0] as Mesh;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n else\r\n {\r\n let mesh = obj as Mesh;\r\n mesh.material = this.MeshMaterial;\r\n }\r\n }\r\n\r\n UpdateJigMaterial(color = 8)\r\n {\r\n\r\n }\r\n //#endregion\r\n\r\n //#region -------------------------File-------------------------\r\n\r\n /**\r\n * 简化的文件读取和写入,只写入必要的数据,没有id,没有其他版本号\r\n */\r\n ReadFileLite(file: CADFiler)\r\n {\r\n this.ReadFileOnly(file);\r\n this._Matrix.fromArray(file.Read());\r\n }\r\n WriteFileLite(file: CADFiler)\r\n {\r\n this.WriteFileOnly(file);\r\n file.Write(this._Matrix.toArray());\r\n }\r\n\r\n private ReadFileOnly(file: CADFiler)\r\n {\r\n let ver = file.Read();\r\n this.height = Number(file.Read());\r\n this.width = Number(file.Read());\r\n this.thickness = Number(file.Read());\r\n this.isRect = file.Read();\r\n this.contourCurve = file.ReadObject() as ExtureContourCurve;\r\n\r\n let grooveCount = file.Read();\r\n this.grooves.length = 0;\r\n for (let i = 0; i < grooveCount; i++)\r\n {\r\n if (this.grooves[i] === undefined)\r\n this.grooves[i] = new ExtrudeSolid();\r\n\r\n this.grooves[i].ReadFileLite(file);\r\n }\r\n\r\n this.knifeRadius = file.Read();\r\n this.groovesAddLength = file.Read();\r\n if (ver > 1)\r\n {\r\n this.groovesAddWidth = file.Read();\r\n this.groovesAddDepth = file.Read();\r\n }\r\n\r\n if (ver > 2)\r\n {\r\n this.RelevanceMeats.length = 0;\r\n this.RelevanceKnifs.length = 0;\r\n\r\n let count = file.Read() as number;\r\n for (let index = 0; index < count; index++)\r\n {\r\n let id = file.ReadSoftObjectId();\r\n if (id)\r\n this.RelevanceMeats.push(id);\r\n }\r\n\r\n count = file.Read() as number;\r\n for (let index = 0; index < count; index++)\r\n {\r\n let id = file.ReadSoftObjectId();\r\n if (id)\r\n this.RelevanceKnifs.push(id);\r\n }\r\n }\r\n }\r\n private WriteFileOnly(file: CADFiler)\r\n {\r\n file.Write(3);\r\n file.Write(this.height);\r\n file.Write(this.width);\r\n file.Write(this.thickness);\r\n file.Write(this.isRect);\r\n file.WriteObject(this.ContourCurve);\r\n\r\n file.Write(this.grooves.length);\r\n for (let groove of this.grooves)\r\n groove.WriteFileLite(file);\r\n\r\n file.Write(this.knifeRadius);\r\n file.Write(this.groovesAddLength);\r\n file.Write(this.groovesAddWidth);\r\n file.Write(this.groovesAddDepth);\r\n\r\n //3\r\n file.Write(this.RelevanceMeats.length);\r\n for (let id of this.RelevanceMeats)\r\n file.WriteSoftObjectId(id);\r\n\r\n file.Write(this.RelevanceKnifs.length);\r\n for (let id of this.RelevanceKnifs)\r\n file.WriteSoftObjectId(id);\r\n }\r\n\r\n //对象从文件中读取数据,初始化自身\r\n protected _ReadFile(file: CADFiler)\r\n {\r\n super._ReadFile(file);\r\n this.ReadFileOnly(file);\r\n }\r\n //对象将自身数据写入到文件.\r\n WriteFile(file: CADFiler)\r\n {\r\n super.WriteFile(file);\r\n this.WriteFileOnly(file);\r\n }\r\n //#endregion\r\n}\r\n\r\nexport function FastMeshGeometry(width: number, height: number, thickness: number)\r\n{\r\n let geo = new BoxGeometry(width, height, thickness);\r\n geo.translate(width * 0.5, height * 0.5, thickness * 0.5);\r\n return geo;\r\n}\r\n\r\n\r\nCADFactory.RegisterObjectAlias(ExtrudeSolid, \"ExtureSolid\");\r\n\r\nfunction ProjectBoard(knifBoard: ExtrudeSolid, projectBoard: ExtrudeSolid)\r\n{\r\n let n1 = knifBoard.Normal;\r\n let n2 = projectBoard.Normal;\r\n if (!isPerpendicularityTo(n1, n2)) return;\r\n\r\n let p1 = projectBoard.Position;\r\n let p2 = n2.clone().multiplyScalar(projectBoard.Thickness).add(p1);\r\n\r\n let ocsInv = knifBoard.OCSInv;\r\n p1.applyMatrix4(ocsInv).setZ(0);\r\n p2.applyMatrix4(ocsInv).setZ(0);\r\n\r\n let dir = new Vector3().crossVectors(n1, n2).applyMatrix4(ocsInv.clone().setPosition(ZeroVec));\r\n\r\n let lineLength = projectBoard.Width + projectBoard.Height;//两边之和大于第三边\r\n let pts = [\r\n dir.clone().multiplyScalar(lineLength).add(p1),\r\n dir.clone().multiplyScalar(-lineLength).add(p1),\r\n dir.clone().multiplyScalar(-lineLength).add(p2),\r\n dir.clone().multiplyScalar(lineLength).add(p2),\r\n ];\r\n\r\n let pl = new Polyline(pts.map(p =>\r\n {\r\n return { pt: AsVector2(p), bul: 0 };\r\n }));\r\n pl.CloseMark = true;\r\n\r\n // pl.ApplyMatrix(knifBoard.OCS);\r\n return pl;\r\n}\r\n\r\n//用于翻转绘制出来的槽\r\nconst OverturnMatrix = new Matrix4().makeBasis(YAxis, ZAxis, XAxis);\r\n"],"names":["Shape","Plane","TLine","TShape","BufferGeometryUtils2","cache","FixIndex","Line"],"mappings":"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AE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAChB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IAChB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAClB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;IACnB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC;IACjB,CAAC,GAAG,EAAE,EAAE,EAAE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"} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..8525b5c --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "webcad_ue4_api", + "version": "0.0.1", + "description": "", + "main": "api.esm.js", + "module": "api.esm.js", + "types": "types/ueapi.d.ts", + "private": true, + "author": "cx", + "license": "ISC" +} diff --git a/types/Add-on/999.d.ts b/types/Add-on/999.d.ts new file mode 100644 index 0000000..934ec41 --- /dev/null +++ b/types/Add-on/999.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_999 implements Command { + exec(): Promise; +} +//# sourceMappingURL=999.d.ts.map \ No newline at end of file diff --git a/types/Add-on/999.d.ts.map b/types/Add-on/999.d.ts.map new file mode 100644 index 0000000..2a305fa --- /dev/null +++ b/types/Add-on/999.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"999.d.ts","sourceRoot":"","sources":["../../../src/Add-on/999.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAmCb"} \ No newline at end of file diff --git a/types/Add-on/ActivityLayerBoard.d.ts b/types/Add-on/ActivityLayerBoard.d.ts new file mode 100644 index 0000000..119fb5a --- /dev/null +++ b/types/Add-on/ActivityLayerBoard.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class ActicityLayerBoard implements Command { + exec(): Promise; +} +//# sourceMappingURL=ActivityLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ActivityLayerBoard.d.ts.map b/types/Add-on/ActivityLayerBoard.d.ts.map new file mode 100644 index 0000000..224e33d --- /dev/null +++ b/types/Add-on/ActivityLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActivityLayerBoard.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ActivityLayerBoard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA2Eb"} \ No newline at end of file diff --git a/types/Add-on/AddPtOnBoard.d.ts b/types/Add-on/AddPtOnBoard.d.ts new file mode 100644 index 0000000..3d70460 --- /dev/null +++ b/types/Add-on/AddPtOnBoard.d.ts @@ -0,0 +1,19 @@ +import { Command } from "../Editor/CommandMachine"; +import { PromptPointResult } from "../Editor/PromptResult"; +import { Board } from "../DatabaseServices/Entity/Board"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +declare abstract class PtOnBoard implements Command { + prompt: string; + exec(): Promise; + abstract operation(br: Board, ptRes: PromptPointResult): Polyline; +} +export declare class AddPtOnBoard extends PtOnBoard { + prompt: string; + operation(br: Board, ptRes: PromptPointResult): Polyline; +} +export declare class DeletePtOnBoard extends PtOnBoard { + prompt: string; + operation(br: Board, ptRes: PromptPointResult): Polyline; +} +export {}; +//# sourceMappingURL=AddPtOnBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/AddPtOnBoard.d.ts.map b/types/Add-on/AddPtOnBoard.d.ts.map new file mode 100644 index 0000000..72665b9 --- /dev/null +++ b/types/Add-on/AddPtOnBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AddPtOnBoard.d.ts","sourceRoot":"","sources":["../../../src/Add-on/AddPtOnBoard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,uBAAe,SAAU,YAAW,OAAO;IAEvC,MAAM,EAAE,MAAM,CAAC;IACT,IAAI;IAkCV,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;CACpE;AAED,qBAAa,YAAa,SAAQ,SAAS;IAEvC,MAAM,SAAQ;IAEd,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB;CAqBhD;AAED,qBAAa,eAAgB,SAAQ,SAAS;IAE1C,MAAM,SAAQ;IAEd,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB;CAgChD"} \ No newline at end of file diff --git a/types/Add-on/Align.d.ts b/types/Add-on/Align.d.ts new file mode 100644 index 0000000..7708f9f --- /dev/null +++ b/types/Add-on/Align.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Align implements Command { + exec(): Promise; + private getPoint; +} +//# sourceMappingURL=Align.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Align.d.ts.map b/types/Add-on/Align.d.ts.map new file mode 100644 index 0000000..605bf40 --- /dev/null +++ b/types/Add-on/Align.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Align.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Align.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,KAAM,YAAW,OAAO;IAE3B,IAAI;YAyFI,QAAQ;CAWzB"} \ No newline at end of file diff --git a/types/Add-on/Area.d.ts b/types/Add-on/Area.d.ts new file mode 100644 index 0000000..b1553f7 --- /dev/null +++ b/types/Add-on/Area.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Area implements Command { + exec(): Promise; +} +//# sourceMappingURL=Area.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Area.d.ts.map b/types/Add-on/Area.d.ts.map new file mode 100644 index 0000000..9317029 --- /dev/null +++ b/types/Add-on/Area.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Area.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Area.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Add-on/Array.d.ts b/types/Add-on/Array.d.ts new file mode 100644 index 0000000..52fc0c0 --- /dev/null +++ b/types/Add-on/Array.d.ts @@ -0,0 +1,50 @@ +import { Singleton } from '../Common/Singleton'; +import { Command } from '../Editor/CommandMachine'; +import { IBaseOption, IUiOption } from '../UI/Store/BoardInterface'; +export declare enum ArrayType { + Rectangle = "R", + Circle = "C" +} +export declare enum CirArrMethod { + itemsAndAngle = 0, + itemsAndBeAngle = 1, + fillAngleAndBeAngle = 2 +} +export declare enum Pick { + centerPoint = 0, + rowOffset = 2, + colOffset = 3, + rowAndColOffset = 7, + arrayAngle = 4, + fillAngle = 5, + betweenAngle = 6 +} +export interface ArrayOptioins extends IBaseOption { + row: number; + col: number; + type: ArrayType; + rowOffset: number; + colOffset: number; + arrayAngle: number; + x: number; + y: number; + itemTotal: number; + fillAngle: number; + betweenAngle: number; + method: CirArrMethod; + isCorrect: boolean; +} +export declare class ArrayStore extends Singleton { + protected m_UiOption: IUiOption; + m_Option: ArrayOptioins; + get UIOption(): IUiOption; + HasInvailValue(): "" | "存在无效数值,请修正" | "项目间的角度不能超过填充角度" | "项目总数不能为1"; + Cancel(): void; + OnOk(): void; + _Return(state: number): void; +} +export declare class Command_Array implements Command { + arrayStore: ArrayStore; + exec(): Promise; +} +//# sourceMappingURL=Array.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Array.d.ts.map b/types/Add-on/Array.d.ts.map new file mode 100644 index 0000000..5ad2635 --- /dev/null +++ b/types/Add-on/Array.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Array.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Array.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQnD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIpE,oBAAY,SAAS;IAEjB,SAAS,MAAM;IACf,MAAM,MAAM;CACf;AAED,oBAAY,YAAY;IAEpB,aAAa,IAAI;IACjB,eAAe,IAAI;IACnB,mBAAmB,IAAI;CAC1B;AACD,oBAAY,IAAI;IAEZ,WAAW,IAAI;IACf,SAAS,IAAI;IACb,SAAS,IAAI;IACb,eAAe,IAAI;IACnB,UAAU,IAAI;IACd,SAAS,IAAI;IACb,YAAY,IAAI;CACnB;AACD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAE9C,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACtB;AACD,qBAAa,UAAW,SAAQ,SAAS;IAErC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACnC,QAAQ,EAAE,aAAa,CAgBjC;IACF,IAAI,QAAQ,6BAKX;IACD,cAAc;IAYd,MAAM;IAIN,IAAI;IAIJ,OAAO,CAAC,KAAK,EAAE,MAAM;CAKxB;AACD,qBAAa,aAAc,YAAW,OAAO;IAEzC,UAAU,EAAE,UAAU,CAA4B;IAE5C,IAAI;CA4Pb"} \ No newline at end of file diff --git a/types/Add-on/AutoHoleFaceSetting.d.ts b/types/Add-on/AutoHoleFaceSetting.d.ts new file mode 100644 index 0000000..8dd1b0c --- /dev/null +++ b/types/Add-on/AutoHoleFaceSetting.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class AutoHoleFaceSetting implements Command { + exec(): Promise; +} +//# sourceMappingURL=AutoHoleFaceSetting.d.ts.map \ No newline at end of file diff --git a/types/Add-on/AutoHoleFaceSetting.d.ts.map b/types/Add-on/AutoHoleFaceSetting.d.ts.map new file mode 100644 index 0000000..1870bc7 --- /dev/null +++ b/types/Add-on/AutoHoleFaceSetting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AutoHoleFaceSetting.d.ts","sourceRoot":"","sources":["../../../src/Add-on/AutoHoleFaceSetting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Add-on/Batch/BatchModifySealOrDrill.d.ts b/types/Add-on/Batch/BatchModifySealOrDrill.d.ts new file mode 100644 index 0000000..a73895d --- /dev/null +++ b/types/Add-on/Batch/BatchModifySealOrDrill.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class BatchModify implements Command { + exec(): Promise; +} +//# sourceMappingURL=BatchModifySealOrDrill.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Batch/BatchModifySealOrDrill.d.ts.map b/types/Add-on/Batch/BatchModifySealOrDrill.d.ts.map new file mode 100644 index 0000000..c6c4639 --- /dev/null +++ b/types/Add-on/Batch/BatchModifySealOrDrill.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BatchModifySealOrDrill.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Batch/BatchModifySealOrDrill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAiDb"} \ No newline at end of file diff --git a/types/Add-on/Batch/FindModeingKnifes.d.ts b/types/Add-on/Batch/FindModeingKnifes.d.ts new file mode 100644 index 0000000..1db918c --- /dev/null +++ b/types/Add-on/Batch/FindModeingKnifes.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class FindModeingKnifeRadius implements Command { + exec(): Promise; +} +//# sourceMappingURL=FindModeingKnifes.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Batch/FindModeingKnifes.d.ts.map b/types/Add-on/Batch/FindModeingKnifes.d.ts.map new file mode 100644 index 0000000..cf60a8e --- /dev/null +++ b/types/Add-on/Batch/FindModeingKnifes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FindModeingKnifes.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Batch/FindModeingKnifes.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,sBAAuB,YAAW,OAAO;IAE5C,IAAI;CAgCb"} \ No newline at end of file diff --git a/types/Add-on/BoardBatchCurtail.d.ts b/types/Add-on/BoardBatchCurtail.d.ts new file mode 100644 index 0000000..f976318 --- /dev/null +++ b/types/Add-on/BoardBatchCurtail.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class BoardBatchCurtail implements Command { + exec(): Promise; +} +//# sourceMappingURL=BoardBatchCurtail.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardBatchCurtail.d.ts.map b/types/Add-on/BoardBatchCurtail.d.ts.map new file mode 100644 index 0000000..39d6bc7 --- /dev/null +++ b/types/Add-on/BoardBatchCurtail.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardBatchCurtail.d.ts","sourceRoot":"","sources":["../../../src/Add-on/BoardBatchCurtail.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AA0BnD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAsJb"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts b/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts new file mode 100644 index 0000000..0296cc1 --- /dev/null +++ b/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts @@ -0,0 +1,10 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +export declare class AutoCuttingReactor { + constructor(); + StartReactor(ents: Board[]): Promise; +} +/** + * 对绘制出来的板件自动切割其周围的板件 + */ +export declare function AutoCutting(isRelevance: boolean): Promise; +//# sourceMappingURL=AutoCuttingReactor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map b/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map new file mode 100644 index 0000000..8aaa391 --- /dev/null +++ b/types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AutoCuttingReactor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/AutoCuttingReactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,qBAAa,kBAAkB;;IAwBrB,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE;CAWnC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,OAAO,iBAUrD"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingByFace.d.ts b/types/Add-on/BoardCutting/CuttingByFace.d.ts new file mode 100644 index 0000000..471b900 --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingByFace.d.ts @@ -0,0 +1,9 @@ +import { Vector3 } from "three"; +import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude"; +import { Command } from "../../Editor/CommandMachine"; +export declare class CuttingByFace implements Command { + exec(): Promise; + setHeight(en: ExtrudeSolid, dist: number, oldPosition: Vector3): void; + private GetKnifeRadius; +} +//# sourceMappingURL=CuttingByFace.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingByFace.d.ts.map b/types/Add-on/BoardCutting/CuttingByFace.d.ts.map new file mode 100644 index 0000000..d6229e8 --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingByFace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CuttingByFace.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingByFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;IAkJV,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;YAShD,cAAc;CAiB/B"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingUtils.d.ts b/types/Add-on/BoardCutting/CuttingUtils.d.ts new file mode 100644 index 0000000..2e77b43 --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingUtils.d.ts @@ -0,0 +1,3 @@ +import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude"; +export declare function CuttingBoard(orgBoard: ExtrudeSolid, knifBoards: ExtrudeSolid[]): ExtrudeSolid[]; +//# sourceMappingURL=CuttingUtils.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingUtils.d.ts.map b/types/Add-on/BoardCutting/CuttingUtils.d.ts.map new file mode 100644 index 0000000..96229ae --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CuttingUtils.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAK/F"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingUtils2.d.ts b/types/Add-on/BoardCutting/CuttingUtils2.d.ts new file mode 100644 index 0000000..2aee1d2 --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingUtils2.d.ts @@ -0,0 +1,5 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity"; +export declare function CuttingBoardByBoard(meats: Board[], knifs: Board[], isRelevance?: boolean): void; +export declare function CuttingBoardByHardware(meats: Board[], hardwares: HardwareCompositeEntity[]): Promise; +//# sourceMappingURL=CuttingUtils2.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/CuttingUtils2.d.ts.map b/types/Add-on/BoardCutting/CuttingUtils2.d.ts.map new file mode 100644 index 0000000..71ce90c --- /dev/null +++ b/types/Add-on/BoardCutting/CuttingUtils2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CuttingUtils2.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingUtils2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAGlG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,UAAO,QA0DrF;AAED,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEhH"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/DeleteRelevance.d.ts b/types/Add-on/BoardCutting/DeleteRelevance.d.ts new file mode 100644 index 0000000..fff80e5 --- /dev/null +++ b/types/Add-on/BoardCutting/DeleteRelevance.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DeleteRelevance implements Command { + exec(): Promise; +} +//# sourceMappingURL=DeleteRelevance.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/DeleteRelevance.d.ts.map b/types/Add-on/BoardCutting/DeleteRelevance.d.ts.map new file mode 100644 index 0000000..831e57c --- /dev/null +++ b/types/Add-on/BoardCutting/DeleteRelevance.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DeleteRelevance.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/DeleteRelevance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA8Cb"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts b/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts new file mode 100644 index 0000000..2b8c531 --- /dev/null +++ b/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts @@ -0,0 +1,8 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity"; +export declare class HardwareCuttingReactor { + EnableHardware: boolean; + constructor(); + StartReactor(hardwares: HardwareCompositeEntity[], ents: Board[]): Promise; +} +//# sourceMappingURL=HardwareCuttingReactor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts.map b/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts.map new file mode 100644 index 0000000..de9fc9c --- /dev/null +++ b/types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareCuttingReactor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/HardwareCuttingReactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAIlG,qBAAa,sBAAsB;IAE/B,cAAc,UAAQ;;IA2BhB,YAAY,CAAC,SAAS,EAAE,uBAAuB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;CAUzE"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/LinearCutting.d.ts b/types/Add-on/BoardCutting/LinearCutting.d.ts new file mode 100644 index 0000000..c25c0ae --- /dev/null +++ b/types/Add-on/BoardCutting/LinearCutting.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class LinearCutting implements Command { + exec(): Promise; +} +//# sourceMappingURL=LinearCutting.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/LinearCutting.d.ts.map b/types/Add-on/BoardCutting/LinearCutting.d.ts.map new file mode 100644 index 0000000..75a7623 --- /dev/null +++ b/types/Add-on/BoardCutting/LinearCutting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinearCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/LinearCutting.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAqLb"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts b/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts new file mode 100644 index 0000000..9cc2ae2 --- /dev/null +++ b/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class NonAssociativeCutting implements Command { + exec(): Promise; +} +//# sourceMappingURL=NonAssociativeCutting.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map b/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map new file mode 100644 index 0000000..f4abb0a --- /dev/null +++ b/types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NonAssociativeCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/NonAssociativeCutting.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAuGb"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/ReferenceCutting.d.ts b/types/Add-on/BoardCutting/ReferenceCutting.d.ts new file mode 100644 index 0000000..07bd3c5 --- /dev/null +++ b/types/Add-on/BoardCutting/ReferenceCutting.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ReferenceCutting implements Command { + exec(): Promise; +} +//# sourceMappingURL=ReferenceCutting.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/ReferenceCutting.d.ts.map b/types/Add-on/BoardCutting/ReferenceCutting.d.ts.map new file mode 100644 index 0000000..56c9211 --- /dev/null +++ b/types/Add-on/BoardCutting/ReferenceCutting.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ReferenceCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/ReferenceCutting.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;CA2Jb"} \ No newline at end of file diff --git a/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts b/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts new file mode 100644 index 0000000..b6d0a6e --- /dev/null +++ b/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts @@ -0,0 +1,36 @@ +import React = require("react"); +import { Singleton } from "../../Common/Singleton"; +import { IBaseOption, BoardType } from "../../UI/Store/BoardInterface"; +export declare enum CuttingOffset { + Front = "front", + Middle = "middle", + Back = "back" +} +export interface ReferenceCuttingOptioins extends IBaseOption { + boardType: BoardType; + offset: number; + halfThickness: number; + CuttingPosSelected: CuttingOffset; +} +export declare class ReferenceCuttingStore extends Singleton { + protected m_UiOption: any; + m_Option: ReferenceCuttingOptioins; + get UIOption(): import("../../UI/Store/BoardInterface").IUiOption; + Cancel(): void; + OnOk(): void; + _Return(state: number): void; + HasInvailValue(): boolean; +} +export declare class ReferenceCuttingModal extends React.Component<{ + store: ReferenceCuttingStore; +}, {}> { + private uiOption; + private handleChangeOffsetDir; + private getOffsetKeyWord; + private event; + registerEvent(): void; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=ReferenceCuttingModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map b/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map new file mode 100644 index 0000000..7af5afd --- /dev/null +++ b/types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ReferenceCuttingModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/ReferenceCuttingModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAUhC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAGvE,oBAAY,aAAa;IAErB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CAChB;AAMD,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAEzD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,aAAa,CAAC;CACrC;AACD,qBAAa,qBAAsB,SAAQ,SAAS;IAEhD,SAAS,CAAC,UAAU,MAAC;IACT,QAAQ,EAAE,wBAAwB,CAK5C;IACF,IAAI,QAAQ,gFAGX;IACD,MAAM;IAIN,IAAI;IAIJ,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,cAAc;CAIjB;AAED,qBAEa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,qBAAqB,CAAC;CAAE,EAAE,EAAE,CAAC;IAC7F,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,qBAAqB,CAc3B;IACF,OAAO,CAAC,gBAAgB,CAWtB;IACF,OAAO,CAAC,KAAK,CAAW;IACxB,aAAa;IAsBb,yBAAyB;IAKzB,oBAAoB;IAKpB,MAAM;CAmET"} \ No newline at end of file diff --git a/types/Add-on/BoardEditor/Board2Regions.d.ts b/types/Add-on/BoardEditor/Board2Regions.d.ts new file mode 100644 index 0000000..9782472 --- /dev/null +++ b/types/Add-on/BoardEditor/Board2Regions.d.ts @@ -0,0 +1,7 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Region } from "../../DatabaseServices/Entity/Region"; +/** + * 把板件炸开成面域,0,1为正反面,其余的为边面(没有圆弧面) + */ +export declare function Board2Regions(br: Board): Region[]; +//# sourceMappingURL=Board2Regions.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardEditor/Board2Regions.d.ts.map b/types/Add-on/BoardEditor/Board2Regions.d.ts.map new file mode 100644 index 0000000..2dbc2db --- /dev/null +++ b/types/Add-on/BoardEditor/Board2Regions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Board2Regions.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardEditor/Board2Regions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,CAwCjD"} \ No newline at end of file diff --git a/types/Add-on/BoardEditor/SerializeBoardData.d.ts b/types/Add-on/BoardEditor/SerializeBoardData.d.ts new file mode 100644 index 0000000..9e4bca9 --- /dev/null +++ b/types/Add-on/BoardEditor/SerializeBoardData.d.ts @@ -0,0 +1,11 @@ +import { BoardProcessOption } from "../../UI/Store/BoardInterface"; +import { CADFiler } from "../../DatabaseServices/CADFiler"; +import { I2DModeling, I3DModeling } from "../../DatabaseServices/Entity/Board"; +/**序列化板件数据 */ +export declare function serializeBoardData(file: CADFiler, processData: BoardProcessOption): void; +export declare function deserializationBoardData(file: CADFiler, processData: BoardProcessOption, ver: number): void; +export declare function SerializeBoard2DModeingData(file: CADFiler, modelList: I2DModeling[]): void; +export declare function SerializeBoard3DModeingData(file: CADFiler, modelList: I3DModeling[]): void; +export declare function DeserializationBoard2DModeingData(file: CADFiler, data: I2DModeling[], ver: number): void; +export declare function DeserializationBoard3DModeingData(file: CADFiler, data: I3DModeling[], ver: number): void; +//# sourceMappingURL=SerializeBoardData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardEditor/SerializeBoardData.d.ts.map b/types/Add-on/BoardEditor/SerializeBoardData.d.ts.map new file mode 100644 index 0000000..5668a22 --- /dev/null +++ b/types/Add-on/BoardEditor/SerializeBoardData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SerializeBoardData.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardEditor/SerializeBoardData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAa,MAAM,qCAAqC,CAAC;AAI1F,aAAa;AACb,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,QAoCjF;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,QAkDpG;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAkBnF;AACD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,QAiBnF;AAGD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,QA8BjG;AAED,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,QAwBjG"} \ No newline at end of file diff --git a/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts b/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts new file mode 100644 index 0000000..35fd2af --- /dev/null +++ b/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../../Editor/CommandMachine"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { IUpdateBoardInfosOption } from "../../UI/Components/Board/UpdateBoardInfointerface"; +export declare class UpdateBoardInfos implements Command { + exec(): Promise; + static ModifyBr(br: Board, option: IUpdateBoardInfosOption): void; +} +//# sourceMappingURL=UpdateBoardInfos.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts.map b/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts.map new file mode 100644 index 0000000..d8f1094 --- /dev/null +++ b/types/Add-on/BoardEditor/UpdateBoardInfos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpdateBoardInfos.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardEditor/UpdateBoardInfos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAM7F,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;IAmCV,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB;CA4G7D"} \ No newline at end of file diff --git a/types/Add-on/BoardFindModify.d.ts b/types/Add-on/BoardFindModify.d.ts new file mode 100644 index 0000000..fe4163b --- /dev/null +++ b/types/Add-on/BoardFindModify.d.ts @@ -0,0 +1,21 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class BoardFindModify implements Command { + private isModifyHwMatrial; + exec(): Promise; + private GetBoards; + private PutSelectList; + private FindBrs; + private FilterBr; + private FilterBrSize; + private CompareIsEqual; + private ModifyBrs; + private ModifyBr; + private FindMaxSizeBrs; + private FindMinSizeBrs; + private FindHaveSpiteSize; + private GetBoardOption; + private RemoveBoardModelingOrSpecialShape; + private ModifyHardware; + private FilterHardware; +} +//# sourceMappingURL=BoardFindModify.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoardFindModify.d.ts.map b/types/Add-on/BoardFindModify.d.ts.map new file mode 100644 index 0000000..4fdc50b --- /dev/null +++ b/types/Add-on/BoardFindModify.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardFindModify.d.ts","sourceRoot":"","sources":["../../../src/Add-on/BoardFindModify.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAWnD,qBAAa,eAAgB,YAAW,OAAO;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAC5B,IAAI;YAqCI,SAAS;IAmBvB,OAAO,CAAC,aAAa;YAQP,OAAO;IA4CrB,OAAO,CAAC,QAAQ;IAwJhB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,cAAc;YAOR,SAAS;IAYvB,OAAO,CAAC,QAAQ;YA0JF,cAAc;YAKd,cAAc;YAKd,iBAAiB;YASjB,cAAc;YAiDd,iCAAiC;YAkBjC,cAAc;IA2B5B,OAAO,CAAC,cAAc;CAqCzB"} \ No newline at end of file diff --git a/types/Add-on/BoolOperation.d.ts b/types/Add-on/BoolOperation.d.ts new file mode 100644 index 0000000..9016caf --- /dev/null +++ b/types/Add-on/BoolOperation.d.ts @@ -0,0 +1,10 @@ +export declare class IntersectionOperation { + exec(): Promise; +} +export declare class UnionOperation extends IntersectionOperation { + exec(): Promise; +} +export declare class SubsractOperation { + exec(): Promise; +} +//# sourceMappingURL=BoolOperation.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BoolOperation.d.ts.map b/types/Add-on/BoolOperation.d.ts.map new file mode 100644 index 0000000..caefb7e --- /dev/null +++ b/types/Add-on/BoolOperation.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoolOperation.d.ts","sourceRoot":"","sources":["../../../src/Add-on/BoolOperation.ts"],"names":[],"mappings":"AAgCA,qBAAa,qBAAqB;IAExB,IAAI;CAKb;AACD,qBAAa,cAAe,SAAQ,qBAAqB;IAE/C,IAAI;CAKb;AACD,qBAAa,iBAAiB;IAEpB,IAAI;CAeb"} \ No newline at end of file diff --git a/types/Add-on/Break.d.ts b/types/Add-on/Break.d.ts new file mode 100644 index 0000000..b1c239e --- /dev/null +++ b/types/Add-on/Break.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Break implements Command { + exec(): Promise; +} +//# sourceMappingURL=Break.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Break.d.ts.map b/types/Add-on/Break.d.ts.map new file mode 100644 index 0000000..15c6985 --- /dev/null +++ b/types/Add-on/Break.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Break.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Break.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CA4Fb"} \ No newline at end of file diff --git a/types/Add-on/BuyMaterial.d.ts b/types/Add-on/BuyMaterial.d.ts new file mode 100644 index 0000000..1e74903 --- /dev/null +++ b/types/Add-on/BuyMaterial.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class BuyMaterial implements Command { + exec(): void; +} +//# sourceMappingURL=BuyMaterial.d.ts.map \ No newline at end of file diff --git a/types/Add-on/BuyMaterial.d.ts.map b/types/Add-on/BuyMaterial.d.ts.map new file mode 100644 index 0000000..cd831ec --- /dev/null +++ b/types/Add-on/BuyMaterial.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BuyMaterial.d.ts","sourceRoot":"","sources":["../../../src/Add-on/BuyMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,WAAY,YAAW,OAAO;IAEvC,IAAI;CAIP"} \ No newline at end of file diff --git a/types/Add-on/ChangeColor.d.ts b/types/Add-on/ChangeColor.d.ts new file mode 100644 index 0000000..1b728cd --- /dev/null +++ b/types/Add-on/ChangeColor.d.ts @@ -0,0 +1,7 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class ChangeColor implements Command { + private color; + constructor(color: number); + exec(): Promise; +} +//# sourceMappingURL=ChangeColor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ChangeColor.d.ts.map b/types/Add-on/ChangeColor.d.ts.map new file mode 100644 index 0000000..1e2d15b --- /dev/null +++ b/types/Add-on/ChangeColor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ChangeColor.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ChangeColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,WAAY,YAAW,OAAO;IAE3B,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAI3B,IAAI;CAYb"} \ No newline at end of file diff --git a/types/Add-on/ChangeColorByBoardMaterial.d.ts b/types/Add-on/ChangeColorByBoardMaterial.d.ts new file mode 100644 index 0000000..1abc2d8 --- /dev/null +++ b/types/Add-on/ChangeColorByBoardMaterial.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class ChangeColorByMaterial implements Command { + exec(): Promise; +} +//# sourceMappingURL=ChangeColorByBoardMaterial.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ChangeColorByBoardMaterial.d.ts.map b/types/Add-on/ChangeColorByBoardMaterial.d.ts.map new file mode 100644 index 0000000..c2e8b31 --- /dev/null +++ b/types/Add-on/ChangeColorByBoardMaterial.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ChangeColorByBoardMaterial.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ChangeColorByBoardMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Add-on/CheckHoles.d.ts b/types/Add-on/CheckHoles.d.ts new file mode 100644 index 0000000..a268380 --- /dev/null +++ b/types/Add-on/CheckHoles.d.ts @@ -0,0 +1,10 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class CheckHoles implements Command { + exec(): Promise; + /** + * 存在通孔 + */ + private IsThough; + private IsCollsion; +} +//# sourceMappingURL=CheckHoles.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CheckHoles.d.ts.map b/types/Add-on/CheckHoles.d.ts.map new file mode 100644 index 0000000..5e0778a --- /dev/null +++ b/types/Add-on/CheckHoles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckHoles.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CheckHoles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAYnD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;IA8HV;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,UAAU;CAgBrB"} \ No newline at end of file diff --git a/types/Add-on/CheckModeling.d.ts b/types/Add-on/CheckModeling.d.ts new file mode 100644 index 0000000..a10df64 --- /dev/null +++ b/types/Add-on/CheckModeling.d.ts @@ -0,0 +1,7 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class CheckModeling implements Command { + res: Function; + exec(): Promise; + Wait(): Promise; +} +//# sourceMappingURL=CheckModeling.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CheckModeling.d.ts.map b/types/Add-on/CheckModeling.d.ts.map new file mode 100644 index 0000000..e82ab78 --- /dev/null +++ b/types/Add-on/CheckModeling.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckModeling.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CheckModeling.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,qBAAa,aAAc,YAAW,OAAO;IAEzC,GAAG,EAAE,QAAQ,CAAC;IACR,IAAI;IA0DV,IAAI;CAIP"} \ No newline at end of file diff --git a/types/Add-on/CombinatAttributeBrush.d.ts b/types/Add-on/CombinatAttributeBrush.d.ts new file mode 100644 index 0000000..32bf2c6 --- /dev/null +++ b/types/Add-on/CombinatAttributeBrush.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { Command } from "../Editor/CommandMachine"; +interface IBrushOption { + all: boolean; + roomName: boolean; + cabName: boolean; + name: boolean; +} +export declare class CombinatAttributeBrush implements Command { + exec(): Promise; +} +export declare class BrushModal extends React.Component<{ + option: IBrushOption; +}> { + render(): JSX.Element; + private ok; + private cancel; +} +export {}; +//# sourceMappingURL=CombinatAttributeBrush.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CombinatAttributeBrush.d.ts.map b/types/Add-on/CombinatAttributeBrush.d.ts.map new file mode 100644 index 0000000..b2c4a7f --- /dev/null +++ b/types/Add-on/CombinatAttributeBrush.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CombinatAttributeBrush.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CombinatAttributeBrush.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAenD,UAAU,YAAY;IAElB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,sBAAuB,YAAW,OAAO;IAE5C,IAAI;CA8Eb;AASD,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;CAAE,CAAC;IAC/D,MAAM;IA2Bb,OAAO,CAAC,EAAE,CAKR;IACF,OAAO,CAAC,MAAM,CAGZ;CACL"} \ No newline at end of file diff --git a/types/Add-on/CommandFeeding.d.ts b/types/Add-on/CommandFeeding.d.ts new file mode 100644 index 0000000..ce87b8f --- /dev/null +++ b/types/Add-on/CommandFeeding.d.ts @@ -0,0 +1,9 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class FeedingCommand implements Command { + exec(): Promise; + private DrawHole; + private TestModeling; + private DrawOriginModeling; + private DateText; +} +//# sourceMappingURL=CommandFeeding.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CommandFeeding.d.ts.map b/types/Add-on/CommandFeeding.d.ts.map new file mode 100644 index 0000000..85d717c --- /dev/null +++ b/types/Add-on/CommandFeeding.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandFeeding.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CommandFeeding.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;IA0EV,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,QAAQ;CAOnB"} \ No newline at end of file diff --git a/types/Add-on/Command_CombineEntity.d.ts b/types/Add-on/Command_CombineEntity.d.ts new file mode 100644 index 0000000..d689a83 --- /dev/null +++ b/types/Add-on/Command_CombineEntity.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_CombineEntity implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_CombineEntity.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Command_CombineEntity.d.ts.map b/types/Add-on/Command_CombineEntity.d.ts.map new file mode 100644 index 0000000..c39deda --- /dev/null +++ b/types/Add-on/Command_CombineEntity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_CombineEntity.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Command_CombineEntity.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAgBb"} \ No newline at end of file diff --git a/types/Add-on/Command_CommandPanel.d.ts b/types/Add-on/Command_CommandPanel.d.ts new file mode 100644 index 0000000..fd5a89f --- /dev/null +++ b/types/Add-on/Command_CommandPanel.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_CommandPanel implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_CommandPanel.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Command_CommandPanel.d.ts.map b/types/Add-on/Command_CommandPanel.d.ts.map new file mode 100644 index 0000000..b5884b6 --- /dev/null +++ b/types/Add-on/Command_CommandPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_CommandPanel.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Command_CommandPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAKb"} \ No newline at end of file diff --git a/types/Add-on/Command_ExportObj.d.ts b/types/Add-on/Command_ExportObj.d.ts new file mode 100644 index 0000000..aa85bbf --- /dev/null +++ b/types/Add-on/Command_ExportObj.d.ts @@ -0,0 +1,5 @@ +import { Command } from './../Editor/CommandMachine'; +export declare class Command_ExportObj implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_ExportObj.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Command_ExportObj.d.ts.map b/types/Add-on/Command_ExportObj.d.ts.map new file mode 100644 index 0000000..b0febb6 --- /dev/null +++ b/types/Add-on/Command_ExportObj.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_ExportObj.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Command_ExportObj.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIrD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAUb"} \ No newline at end of file diff --git a/types/Add-on/Command_Option.d.ts b/types/Add-on/Command_Option.d.ts new file mode 100644 index 0000000..847ba63 --- /dev/null +++ b/types/Add-on/Command_Option.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Options implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_Option.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Command_Option.d.ts.map b/types/Add-on/Command_Option.d.ts.map new file mode 100644 index 0000000..ce060a5 --- /dev/null +++ b/types/Add-on/Command_Option.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_Option.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Command_Option.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAKb"} \ No newline at end of file diff --git a/types/Add-on/Command_SetBRXAxis.d.ts b/types/Add-on/Command_SetBRXAxis.d.ts new file mode 100644 index 0000000..1d88ef9 --- /dev/null +++ b/types/Add-on/Command_SetBRXAxis.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_SetBRXAxis implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_SetBRXAxis.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Command_SetBRXAxis.d.ts.map b/types/Add-on/Command_SetBRXAxis.d.ts.map new file mode 100644 index 0000000..a138f67 --- /dev/null +++ b/types/Add-on/Command_SetBRXAxis.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_SetBRXAxis.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Command_SetBRXAxis.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBACa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Add-on/Conver2Polyline.d.ts b/types/Add-on/Conver2Polyline.d.ts new file mode 100644 index 0000000..7aab049 --- /dev/null +++ b/types/Add-on/Conver2Polyline.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Conver2Polyline implements Command { + exec(): Promise; +} +//# sourceMappingURL=Conver2Polyline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Conver2Polyline.d.ts.map b/types/Add-on/Conver2Polyline.d.ts.map new file mode 100644 index 0000000..5e46aff --- /dev/null +++ b/types/Add-on/Conver2Polyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Conver2Polyline.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Conver2Polyline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CAcb"} \ No newline at end of file diff --git a/types/Add-on/Copy.d.ts b/types/Add-on/Copy.d.ts new file mode 100644 index 0000000..01b43f3 --- /dev/null +++ b/types/Add-on/Copy.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_Copy implements Command { + exec(): Promise; +} +//# sourceMappingURL=Copy.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Copy.d.ts.map b/types/Add-on/Copy.d.ts.map new file mode 100644 index 0000000..05db047 --- /dev/null +++ b/types/Add-on/Copy.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Copy.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Copy.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CAwHb"} \ No newline at end of file diff --git a/types/Add-on/CopyClip.d.ts b/types/Add-on/CopyClip.d.ts new file mode 100644 index 0000000..6103f52 --- /dev/null +++ b/types/Add-on/CopyClip.d.ts @@ -0,0 +1,6 @@ +export declare class CopyClip { + private _GetPoint; + constructor(_GetPoint?: boolean); + exec(): Promise; +} +//# sourceMappingURL=CopyClip.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CopyClip.d.ts.map b/types/Add-on/CopyClip.d.ts.map new file mode 100644 index 0000000..20bccc1 --- /dev/null +++ b/types/Add-on/CopyClip.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyClip.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CopyClip.ts"],"names":[],"mappings":"AASA,qBAAa,QAAQ;IAEL,OAAO,CAAC,SAAS;gBAAT,SAAS,GAAE,OAAe;IACxC,IAAI;CAwCb"} \ No newline at end of file diff --git a/types/Add-on/CopyPoint.d.ts b/types/Add-on/CopyPoint.d.ts new file mode 100644 index 0000000..e5ca559 --- /dev/null +++ b/types/Add-on/CopyPoint.d.ts @@ -0,0 +1,4 @@ +export declare class Command_CopyPoint { + exec(): Promise; +} +//# sourceMappingURL=CopyPoint.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CopyPoint.d.ts.map b/types/Add-on/CopyPoint.d.ts.map new file mode 100644 index 0000000..1164e05 --- /dev/null +++ b/types/Add-on/CopyPoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CopyPoint.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CopyPoint.ts"],"names":[],"mappings":"AAIA,qBAAa,iBAAiB;IAEpB,IAAI;CAOb"} \ No newline at end of file diff --git a/types/Add-on/CostumUCS.d.ts b/types/Add-on/CostumUCS.d.ts new file mode 100644 index 0000000..fb22746 --- /dev/null +++ b/types/Add-on/CostumUCS.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class CustomUcs implements Command { + exec(): Promise; + private UpdateUCS; +} +//# sourceMappingURL=CostumUCS.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CostumUCS.d.ts.map b/types/Add-on/CostumUCS.d.ts.map new file mode 100644 index 0000000..251c102 --- /dev/null +++ b/types/Add-on/CostumUCS.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CostumUCS.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CostumUCS.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;IA2FV,OAAO,CAAC,SAAS;CAMpB"} \ No newline at end of file diff --git a/types/Add-on/CreateBoardFromData.d.ts b/types/Add-on/CreateBoardFromData.d.ts new file mode 100644 index 0000000..dcdd930 --- /dev/null +++ b/types/Add-on/CreateBoardFromData.d.ts @@ -0,0 +1,2 @@ +export declare function CreateBoardFromData(data: Object): Promise; +//# sourceMappingURL=CreateBoardFromData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/CreateBoardFromData.d.ts.map b/types/Add-on/CreateBoardFromData.d.ts.map new file mode 100644 index 0000000..ab69101 --- /dev/null +++ b/types/Add-on/CreateBoardFromData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CreateBoardFromData.d.ts","sourceRoot":"","sources":["../../../src/Add-on/CreateBoardFromData.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,iBAqDrD"} \ No newline at end of file diff --git a/types/Add-on/DXFLoad.d.ts b/types/Add-on/DXFLoad.d.ts new file mode 100644 index 0000000..8a31417 --- /dev/null +++ b/types/Add-on/DXFLoad.d.ts @@ -0,0 +1,4 @@ +export declare class Command_DXFImport { + exec(): Promise; +} +//# sourceMappingURL=DXFLoad.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DXFLoad.d.ts.map b/types/Add-on/DXFLoad.d.ts.map new file mode 100644 index 0000000..e920015 --- /dev/null +++ b/types/Add-on/DXFLoad.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DXFLoad.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DXFLoad.ts"],"names":[],"mappings":"AAWA,qBAAa,iBAAiB;IAEpB,IAAI;CAyDb"} \ No newline at end of file diff --git a/types/Add-on/DeleteCurve.d.ts b/types/Add-on/DeleteCurve.d.ts new file mode 100644 index 0000000..d26620c --- /dev/null +++ b/types/Add-on/DeleteCurve.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class DeleteCurve implements Command { + exec(): Promise; +} +//# sourceMappingURL=DeleteCurve.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DeleteCurve.d.ts.map b/types/Add-on/DeleteCurve.d.ts.map new file mode 100644 index 0000000..7a18b64 --- /dev/null +++ b/types/Add-on/DeleteCurve.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DeleteCurve.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DeleteCurve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAYb"} \ No newline at end of file diff --git a/types/Add-on/Dist.d.ts b/types/Add-on/Dist.d.ts new file mode 100644 index 0000000..a2edb58 --- /dev/null +++ b/types/Add-on/Dist.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Dist implements Command { + exec(): Promise; +} +//# sourceMappingURL=Dist.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Dist.d.ts.map b/types/Add-on/Dist.d.ts.map new file mode 100644 index 0000000..d4e5708 --- /dev/null +++ b/types/Add-on/Dist.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Dist.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Dist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAWnD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CAmCb"} \ No newline at end of file diff --git a/types/Add-on/Divide.d.ts b/types/Add-on/Divide.d.ts new file mode 100644 index 0000000..ddd0a84 --- /dev/null +++ b/types/Add-on/Divide.d.ts @@ -0,0 +1,8 @@ +import { Command } from '../Editor/CommandMachine'; +import { PromptEntityResult } from '../Editor/PromptResult'; +export declare class CMD_Divide implements Command { + exec(): Promise; + Divided(enRes: PromptEntityResult): Promise; + Measured(): Promise; +} +//# sourceMappingURL=Divide.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Divide.d.ts.map b/types/Add-on/Divide.d.ts.map new file mode 100644 index 0000000..5544d3d --- /dev/null +++ b/types/Add-on/Divide.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Divide.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Divide.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAgB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE1E,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;IAmCJ,OAAO,CAAC,KAAK,EAAE,kBAAkB;IA0BjC,QAAQ;CA4BjB"} \ No newline at end of file diff --git a/types/Add-on/DrawArc.d.ts b/types/Add-on/DrawArc.d.ts new file mode 100644 index 0000000..91a678b --- /dev/null +++ b/types/Add-on/DrawArc.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawArc implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawArc.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawArc.d.ts.map b/types/Add-on/DrawArc.d.ts.map new file mode 100644 index 0000000..1c7d789 --- /dev/null +++ b/types/Add-on/DrawArc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawArc.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawArc.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,OAAQ,YAAW,OAAO;IAE7B,IAAI;CAoCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts b/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts new file mode 100644 index 0000000..0fef91e --- /dev/null +++ b/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts @@ -0,0 +1,18 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { LayerNailOption, IShinkOption, INailRule } from "../../UI/Store/BoardInterface"; +declare class ActivityLayerBoardTool { + NailRules: INailRule[]; + private GetBoardIntersection; + private IntersectFace; + private GetShrinkDist; + private GetShrinkBoardIndexesMap; + private GetRuleCount; + private BuildNails; + private RayPoint; + Start(brs: Board[], nailOption: LayerNailOption, rules?: INailRule[], option?: IShinkOption): void; + private AppendBoard; + private HandleNailList; +} +export declare const activityLayerBoardTool: ActivityLayerBoardTool; +export {}; +//# sourceMappingURL=ActivityLayerBoardTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts.map b/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts.map new file mode 100644 index 0000000..96d430a --- /dev/null +++ b/types/Add-on/DrawBoard/ActivityLayerBoardTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActivityLayerBoardTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/ActivityLayerBoardTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAczF,cAAM,sBAAsB;IAExB,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,UAAU;IA8ClB,OAAO,CAAC,QAAQ;IAMhB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,GAAE,SAAS,EAAO,EAAE,MAAM,CAAC,EAAE,YAAY;IAmG/F,OAAO,CAAC,WAAW;IAuCnB,OAAO,CAAC,cAAc;CA6CzB;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildBoardTool.d.ts b/types/Add-on/DrawBoard/BuildBoardTool.d.ts new file mode 100644 index 0000000..5e52278 --- /dev/null +++ b/types/Add-on/DrawBoard/BuildBoardTool.d.ts @@ -0,0 +1,10 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { BehindBoardOption, IGrooveOption, LayerBoardOption, VerticalBoardOption } from "../../UI/Store/BoardInterface"; +export declare function BuildLayerBoards(opt: LayerBoardOption, space: ISpaceParse): Board[]; +export declare function BuildVerticalBoards(opt: VerticalBoardOption, space: ISpaceParse): Board[]; +export declare function BuildBehindBoards(opt: BehindBoardOption, space: ISpaceParse, grooveOption?: IGrooveOption): Board[]; +export declare function ExtendsBoardThickness(temp: TemplateRecord, thickness: number): void; +export declare function FindLeftRightBoard(spaceParse: ISpaceParse, findEns: Board[]): void; +//# sourceMappingURL=BuildBoardTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildBoardTool.d.ts.map b/types/Add-on/DrawBoard/BuildBoardTool.d.ts.map new file mode 100644 index 0000000..604d7eb --- /dev/null +++ b/types/Add-on/DrawBoard/BuildBoardTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BuildBoardTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/BuildBoardTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAsC,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAa,MAAM,+BAA+B,CAAC;AAGvK,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,CAsEnF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,CAmEzF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,aAAa,GAAG,KAAK,EAAE,CAgFnH;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAY5E;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,QA8B3E"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts b/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts new file mode 100644 index 0000000..3e658d4 --- /dev/null +++ b/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts @@ -0,0 +1,22 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { LayerBoardOption, LayerNailOption } from "../../UI/Store/BoardInterface"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +declare class BuildLayerNailsTool { + private leftBoard; + private rightBoard; + private backBoard; + private frontBoard; + private option; + private nailOption; + private space; + private InitTool; + private InitBuildNails; + private ParseHasLRBoard; + /**分析前后背板 */ + private ParseFrontBackBoard; + private GetNails; + Start(brs: Board[], option: LayerBoardOption, nailOption: LayerNailOption, space: ISpaceParse): void; +} +export declare const buildLayerNailTool: BuildLayerNailsTool; +export {}; +//# sourceMappingURL=BuildLayerNailTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts.map b/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts.map new file mode 100644 index 0000000..7f470c7 --- /dev/null +++ b/types/Add-on/DrawBoard/BuildLayerNailTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BuildLayerNailTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/BuildLayerNailTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAa,MAAM,+BAA+B,CAAC;AAK7F,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAkBpE,cAAM,mBAAmB;IAErB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,cAAc;IA6DtB,OAAO,CAAC,eAAe;IA4CvB,YAAY;IACZ,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,QAAQ;IA+EhB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW;CAgFhG;AAED,eAAO,MAAM,kBAAkB,qBAA4B,CAAC"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts b/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts new file mode 100644 index 0000000..8ed6f3e --- /dev/null +++ b/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts @@ -0,0 +1,5 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { TBBoardOption } from "../../UI/Store/BoardInterface"; +export declare function BuildTopBottomBoards(topOpt: TBBoardOption, bottomOpt: TBBoardOption, space: ISpaceParse): Board[]; +//# sourceMappingURL=BuildTopBottomBoardTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts.map b/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts.map new file mode 100644 index 0000000..479a478 --- /dev/null +++ b/types/Add-on/DrawBoard/BuildTopBottomBoardTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BuildTopBottomBoardTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/BuildTopBottomBoardTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAa,MAAM,+BAA+B,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE,CAsCjH"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawBehindBoard.d.ts b/types/Add-on/DrawBoard/DrawBehindBoard.d.ts new file mode 100644 index 0000000..b79a4c9 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawBehindBoard.d.ts @@ -0,0 +1,7 @@ +import { BoardType } from '../../UI/Store/BoardInterface'; +import { DrawBoardTool } from './DrawBoardTool'; +export declare class DrawBehindBoard extends DrawBoardTool { + protected drawType: BoardType; + protected buildBoard(isAppendSpace?: boolean): Promise; +} +//# sourceMappingURL=DrawBehindBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawBehindBoard.d.ts.map b/types/Add-on/DrawBoard/DrawBehindBoard.d.ts.map new file mode 100644 index 0000000..8071cbf --- /dev/null +++ b/types/Add-on/DrawBoard/DrawBehindBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawBehindBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawBehindBoard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAG7E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,aAAa;IAE9C,SAAS,CAAC,QAAQ,YAAoB;cACtB,UAAU,CAAC,aAAa,UAAO;CAkBlD"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawBoardTool.d.ts b/types/Add-on/DrawBoard/DrawBoardTool.d.ts new file mode 100644 index 0000000..e7e4a83 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawBoardTool.d.ts @@ -0,0 +1,16 @@ +import { Command } from '../../Editor/CommandMachine'; +import { ISpaceParse } from '../../Geometry/SpaceParse/ISpaceParse'; +import { BoardModalType } from '../../UI/Components/Board/BoardModal'; +import { BoardType } from '../../UI/Store/BoardInterface'; +import { BehindBoardStore, LayerBoardStore, VerticalBoardStore } from '../../UI/Store/BoardStore'; +export declare abstract class DrawBoardTool implements Command { + protected drawType: BoardType; + protected modalType: BoardModalType; + protected store: LayerBoardStore | VerticalBoardStore | BehindBoardStore; + protected space: ISpaceParse; + exec(): Promise; + private Callback; + private SelectAndBuildBoard; + protected buildBoard(isAppendSpace?: boolean): Promise; +} +//# sourceMappingURL=DrawBoardTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawBoardTool.d.ts.map b/types/Add-on/DrawBoard/DrawBoardTool.d.ts.map new file mode 100644 index 0000000..412a033 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawBoardTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawBoardTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawBoardTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAc,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGlG,8BAAsB,aAAc,YAAW,OAAO;IAGlD,SAAS,CAAC,QAAQ,YAAmB;IACrC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;IACpC,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;IACzE,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IACvB,IAAI;IAsBV,OAAO,CAAC,QAAQ,CAKd;YACY,mBAAmB;cAmCjB,UAAU,CAAC,aAAa,UAAO;CAClD"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawClosingStrip.d.ts b/types/Add-on/DrawBoard/DrawClosingStrip.d.ts new file mode 100644 index 0000000..1895ccb --- /dev/null +++ b/types/Add-on/DrawBoard/DrawClosingStrip.d.ts @@ -0,0 +1,9 @@ +import { Matrix4 } from 'three'; +import { Command } from '../../Editor/CommandMachine'; +import { Box3Ext } from '../../Geometry/Box'; +export declare class DrawClosingStrip implements Command { + private store; + exec(): Promise; + buildClosingStrip(totalSpace: Box3Ext, rot: Matrix4): void; +} +//# sourceMappingURL=DrawClosingStrip.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawClosingStrip.d.ts.map b/types/Add-on/DrawBoard/DrawClosingStrip.d.ts.map new file mode 100644 index 0000000..e329ba2 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawClosingStrip.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawClosingStrip.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawClosingStrip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAa7C,qBAAa,gBAAiB,YAAW,OAAO;IAE5C,OAAO,CAAC,KAAK,CAAoB;IAC3B,IAAI;IAyFV,iBAAiB,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO;CA8GtD"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoor.d.ts b/types/Add-on/DrawBoard/DrawDoor.d.ts new file mode 100644 index 0000000..3dc82a0 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoor.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawDoor implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawDoor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoor.d.ts.map b/types/Add-on/DrawBoard/DrawDoor.d.ts.map new file mode 100644 index 0000000..5c94b77 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDoor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawDoor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAYtD,qBAAa,QAAS,YAAW,OAAO;IAE9B,IAAI;CAkDb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts new file mode 100644 index 0000000..4fa069b --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts @@ -0,0 +1,37 @@ +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord"; +import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; +import { BoardProcessOption } from "../../../UI/Store/BoardInterface"; +import { IDoorConfigOption, IDoorInfo } from "../../../UI/Store/DoorInterface"; +import { Entity } from './../../../DatabaseServices/Entity/Entity'; +export declare class DrawDoorTool { + protected option: IDoorConfigOption; + protected spaceParse: ISpaceParse; + protected doorInfos: IDoorInfo[]; + /**id模板对应表*/ + protected _idTempMap: Map; + protected colWidths: (number | string)[]; + protected rowHeighs: (number | string)[]; + protected isDrawVerBrS: boolean[]; + protected isDrawLayBrS: boolean[]; + protected surroundOption: BoardProcessOption; + /** 每个格子的信息Map*/ + protected rowColIdMap: Map; + private hingeSet; + constructor(option: IDoorConfigOption, spaceParse: ISpaceParse, doorInfos: IDoorInfo[]); + private GetHeightExpr; + protected Init(): Promise; + Draw(): Promise; + protected AppendTemplateParam(name: string, value: number, des: string, temp: TemplateRecord, expr?: string): void; + protected GetRootTemplate(): TemplateRecord; + private GetPositionSpace; + protected GetHandleTemp(info: IDoorInfo, doorTemp: TemplateRecord): void; + protected GetHingeTemp(info: IDoorInfo, door: TemplateRecord): void; + protected RelativeMetalsToBoard(allEntitys: Entity[]): boolean; + private SetHingeType; + getSpaceAllBoards(): Board[]; + protected GetDoorTemp(info: IDoorInfo): TemplateRecord; + protected SetOpenDir(doorsTemp: TemplateRecord, info: IDoorInfo): void; + private GetBoardOpenDir; +} +//# sourceMappingURL=DrawDoorDrawerTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts.map b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts.map new file mode 100644 index 0000000..35fdd28 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDoorDrawerTool.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/DrawBoard/DrawDoorDrawer/DrawDoorDrawerTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAG/D,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAsC,MAAM,kCAAkC,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAgE,MAAM,iCAAiC,CAAC;AAK7I,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,qBAAa,YAAY;IAcjB,SAAS,CAAC,MAAM,EAAE,iBAAiB;IACnC,SAAS,CAAC,UAAU,EAAE,WAAW;IACjC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE;IAdpC,YAAY;IACZ,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAE9D,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAC9C,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAC9C,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAM;IACvC,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAM;IACvC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC;IAC7C,gBAAgB;IAChB,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAC1D,OAAO,CAAC,QAAQ,CAA4B;gBAE9B,MAAM,EAAE,iBAAiB,EACzB,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,SAAS,EAAE;IAIpC,OAAO,CAAC,aAAa;cAIL,IAAI;IA0Fd,IAAI;IAGV,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM;IAU3G,SAAS,CAAC,eAAe;IAiDzB,OAAO,CAAC,gBAAgB;IAUxB,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IA0DjE,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc;IA+H5D,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE;IAgFpD,OAAO,CAAC,YAAY;IAapB,iBAAiB;IAgBjB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS;IAsDrC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS;IAkB/D,OAAO,CAAC,eAAe;CA+B1B"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts new file mode 100644 index 0000000..c4cbd64 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts @@ -0,0 +1,12 @@ +import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord"; +import { DrawDoorTool } from "./DrawDoorDrawerTool"; +export declare class DrawLeftRightOpenDoor extends DrawDoorTool { + Draw(): Promise; + protected GetRootTemplate(): TemplateRecord; + private GetColTemplate; + private GetRowTemplate; + private GetDoorSpaceTemplate; + private GetVerticalTemp; + private GetLayerTemp; +} +//# sourceMappingURL=DrawLeftRightOpenDoor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts.map b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts.map new file mode 100644 index 0000000..dbf5967 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLeftRightOpenDoor.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/DrawBoard/DrawDoorDrawer/DrawLeftRightOpenDoor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAInF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,qBAAa,qBAAsB,SAAQ,YAAY;IAE7C,IAAI;IA6FV,SAAS,CAAC,eAAe;IAMzB,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,oBAAoB;IAoH5B,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,YAAY;CA2BvB"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts new file mode 100644 index 0000000..e63e6fa --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts @@ -0,0 +1,12 @@ +import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord"; +import { DrawDoorTool } from "./DrawDoorDrawerTool"; +export declare class DrawUpDownOpenDoor extends DrawDoorTool { + Draw(): Promise; + protected GetRootTemplate(): TemplateRecord; + private GetRowTemplate; + private GetColTemplate; + private GetDoorSpaceTemplate; + private GetLayerTemp; + private GetVerticalTemp; +} +//# sourceMappingURL=DrawUpDownOpenDoor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts.map b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts.map new file mode 100644 index 0000000..82d7cdd --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawUpDownOpenDoor.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/DrawBoard/DrawDoorDrawer/DrawUpDownOpenDoor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAInF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,kBAAmB,SAAQ,YAAY;IAE1C,IAAI;IA+FV,SAAS,CAAC,eAAe;IAOzB,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,oBAAoB;IAsH5B,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,eAAe;CA0B1B"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDrawer.d.ts b/types/Add-on/DrawBoard/DrawDrawer.d.ts new file mode 100644 index 0000000..1f28b5b --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDrawer.d.ts @@ -0,0 +1,15 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawDrawrer implements Command { + exec(): Promise; + private GetTempExpr; + private AppendTemplateParam; + private GetRootTemplate; + private GetColTemplate; + private GetDrawerTemp; + private GetVerticalTemp; + private GetTotalSpaceTemplate; + /**获取上下留空空间模板 */ + private GetLkSpace; + private GetHandleTemp; +} +//# sourceMappingURL=DrawDrawer.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawDrawer.d.ts.map b/types/Add-on/DrawBoard/DrawDrawer.d.ts.map new file mode 100644 index 0000000..758b4df --- /dev/null +++ b/types/Add-on/DrawBoard/DrawDrawer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDrawer.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawDrawer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAWtD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;IA4MV,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,aAAa;IA6IrB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,qBAAqB;IAQ7B,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,aAAa;CAqExB"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawLayerBoard.d.ts b/types/Add-on/DrawBoard/DrawLayerBoard.d.ts new file mode 100644 index 0000000..e2fa6ea --- /dev/null +++ b/types/Add-on/DrawBoard/DrawLayerBoard.d.ts @@ -0,0 +1,5 @@ +import { DrawBoardTool } from './DrawBoardTool'; +export declare class DrawLayerBoard extends DrawBoardTool { + protected buildBoard(isAppendSpace?: boolean): Promise; +} +//# sourceMappingURL=DrawLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawLayerBoard.d.ts.map b/types/Add-on/DrawBoard/DrawLayerBoard.d.ts.map new file mode 100644 index 0000000..737932f --- /dev/null +++ b/types/Add-on/DrawBoard/DrawLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLayerBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawLayerBoard.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,cAAe,SAAQ,aAAa;cAE7B,UAAU,CAAC,aAAa,UAAO;CAmBlD"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts b/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts new file mode 100644 index 0000000..653ac0f --- /dev/null +++ b/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts @@ -0,0 +1,8 @@ +import { Command } from '../../Editor/CommandMachine'; +export declare class DrawLeftRight implements Command { + exec(): Promise; + private GetLRBoards; + private InsertByPoint; + private InsertBySpace; +} +//# sourceMappingURL=DrawLeftRightBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts.map b/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts.map new file mode 100644 index 0000000..506090f --- /dev/null +++ b/types/Add-on/DrawBoard/DrawLeftRightBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLeftRightBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawLeftRightBoard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;IAgBV,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,aAAa,CAyDnB;IACF,OAAO,CAAC,aAAa,CAiCnB;CACL"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSingleBoard.d.ts b/types/Add-on/DrawBoard/DrawSingleBoard.d.ts new file mode 100644 index 0000000..126ed1c --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSingleBoard.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../../Editor/CommandMachine'; +export declare class DrawSingleBoard implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawSingleBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSingleBoard.d.ts.map b/types/Add-on/DrawBoard/DrawSingleBoard.d.ts.map new file mode 100644 index 0000000..0e54d77 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSingleBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSingleBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawSingleBoard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAsCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts b/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts new file mode 100644 index 0000000..bd6be83 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts @@ -0,0 +1,27 @@ +import { Matrix4 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { ExtrudeSolid, ExtureContour } from "../../DatabaseServices/Entity/Extrude"; +import { Region } from "../../DatabaseServices/Entity/Region"; +/** + * 选择提取轮廓的位置 + */ +export declare function selectOutlinePosition(cus: Curve[] | Curve): Promise; +/** + * 应用轮廓到板件 + */ +export declare function BoardApplyContour(contour: ExtureContour, brs: Board[], isKeepSize: boolean): void; +/** + * 选择可以被拉伸实体引用的轮廓. + */ +export declare function SelectExtrudeContour(selectInside?: boolean, useExtrude?: boolean): Promise<{ + contour?: ExtureContour; + gourp?: Curve[][]; + useCurves?: (Curve | Region)[]; +}>; +/** + * 应用轮廓到拉伸实体,并且返回轮廓到WCS的应用矩阵. + * @returns 如果轮廓是曲线,那么将返回曲线转换到WCS的矩阵 + */ +export declare function ExtrudeApplyContour(ext: ExtrudeSolid, contour: ExtureContour): Matrix4 | undefined; +//# sourceMappingURL=DrawSpecialShapeBoardTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts.map b/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts.map new file mode 100644 index 0000000..2b43937 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapeBoardTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSpecialShapeBoardTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawSpecialShapeBoardTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAU9D;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,oBAuB/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,OAAO,QAe1F;AAGD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,UAAQ,EAAE,UAAU,UAAQ,GAC7E,OAAO,CAAC;IACN,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;CAClC,CAAC,CAwFL;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAkDlG"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts b/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts new file mode 100644 index 0000000..9d36a26 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts @@ -0,0 +1,7 @@ +import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude"; +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawSpecialShapedBoard implements Command { + ext: ExtrudeSolid; + exec(): Promise; +} +//# sourceMappingURL=DrawSpecialShapedBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts.map b/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts.map new file mode 100644 index 0000000..1543563 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapedBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSpecialShapedBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawSpecialShapedBoard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBAAa,sBAAuB,YAAW,OAAO;IAElD,GAAG,eAAsB;IACnB,IAAI;CAmEb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts b/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts new file mode 100644 index 0000000..932bb4e --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawSpecialShapedBoardByContour implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawSpecialShapedBoardByContour.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts.map b/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts.map new file mode 100644 index 0000000..9f1c518 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSpecialShapedBoardByContour.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawSpecialShapedBoardByContour.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,+BAAgC,YAAW,OAAO;IAErD,IAAI;CAmCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts b/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts new file mode 100644 index 0000000..20d8635 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawTemplateByImport implements Command { + exec(): Promise; + private handleInfo; + private DrawText; + private DrawDim; +} +//# sourceMappingURL=DrawTemplateByImport.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts.map b/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts.map new file mode 100644 index 0000000..9c0fc2f --- /dev/null +++ b/types/Add-on/DrawBoard/DrawTemplateByImport.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawTemplateByImport.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawTemplateByImport.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAyBnE,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;IAmMV,OAAO,CAAC,UAAU;IAoClB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,OAAO;CAmBlB"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts b/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts new file mode 100644 index 0000000..374eab2 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawTopBottomBoard implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawTopBottomBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts.map b/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts.map new file mode 100644 index 0000000..9f92601 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawTopBottomBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawTopBottomBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawTopBottomBoard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CAsCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts b/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts new file mode 100644 index 0000000..c4addeb --- /dev/null +++ b/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts @@ -0,0 +1,7 @@ +import { BoardType } from '../../UI/Store/BoardInterface'; +import { DrawBoardTool } from './DrawBoardTool'; +export declare class DrawVerticalBoard extends DrawBoardTool { + protected drawType: BoardType; + protected buildBoard(isAppendSpace?: boolean): Promise; +} +//# sourceMappingURL=DrawVerticalBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts.map b/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts.map new file mode 100644 index 0000000..2fcd280 --- /dev/null +++ b/types/Add-on/DrawBoard/DrawVerticalBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawVerticalBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/DrawVerticalBoard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,qBAAa,iBAAkB,SAAQ,aAAa;IAEhD,SAAS,CAAC,QAAQ,YAAsB;cACxB,UAAU,CAAC,aAAa,UAAO;CAiBlD"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/EditorBoardTempate.d.ts b/types/Add-on/DrawBoard/EditorBoardTempate.d.ts new file mode 100644 index 0000000..1fab223 --- /dev/null +++ b/types/Add-on/DrawBoard/EditorBoardTempate.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class EditorBoardTemplate implements Command { + exec(): Promise; +} +//# sourceMappingURL=EditorBoardTempate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/EditorBoardTempate.d.ts.map b/types/Add-on/DrawBoard/EditorBoardTempate.d.ts.map new file mode 100644 index 0000000..32b1ed2 --- /dev/null +++ b/types/Add-on/DrawBoard/EditorBoardTempate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EditorBoardTempate.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/EditorBoardTempate.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;CA+Fb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts b/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts new file mode 100644 index 0000000..8cfd277 --- /dev/null +++ b/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts @@ -0,0 +1,7 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class FindMaxOrMinSizeBoard implements Command { + private findMax; + constructor(findMax?: boolean); + exec(): Promise; +} +//# sourceMappingURL=FindMaxSizeBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts.map b/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts.map new file mode 100644 index 0000000..2cb4a3d --- /dev/null +++ b/types/Add-on/DrawBoard/FindMaxSizeBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FindMaxSizeBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/FindMaxSizeBoard.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,qBAAsB,YAAW,OAAO;IAErC,OAAO,CAAC,OAAO;gBAAP,OAAO,UAAO;IAC5B,IAAI;CAsCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts b/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts new file mode 100644 index 0000000..fdafadd --- /dev/null +++ b/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class FixIntersectSelfContour implements Command { + exec(): Promise; +} +//# sourceMappingURL=FixIntersectSelfContour.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts.map b/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts.map new file mode 100644 index 0000000..e0df5a8 --- /dev/null +++ b/types/Add-on/DrawBoard/FixIntersectSelfContour.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FixIntersectSelfContour.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/FixIntersectSelfContour.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/ParseHinge.d.ts b/types/Add-on/DrawBoard/ParseHinge.d.ts new file mode 100644 index 0000000..69ecc1d --- /dev/null +++ b/types/Add-on/DrawBoard/ParseHinge.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ParseHinge implements Command { + exec(): Promise; +} +//# sourceMappingURL=ParseHinge.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/ParseHinge.d.ts.map b/types/Add-on/DrawBoard/ParseHinge.d.ts.map new file mode 100644 index 0000000..b854969 --- /dev/null +++ b/types/Add-on/DrawBoard/ParseHinge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseHinge.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/ParseHinge.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CAsCb"} \ No newline at end of file diff --git a/types/Add-on/DrawBoard/SetHoleType.d.ts b/types/Add-on/DrawBoard/SetHoleType.d.ts new file mode 100644 index 0000000..a89348a --- /dev/null +++ b/types/Add-on/DrawBoard/SetHoleType.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class SetHoleNoneType implements Command { + exec(): Promise; +} +//# sourceMappingURL=SetHoleType.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawBoard/SetHoleType.d.ts.map b/types/Add-on/DrawBoard/SetHoleType.d.ts.map new file mode 100644 index 0000000..4897c15 --- /dev/null +++ b/types/Add-on/DrawBoard/SetHoleType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SetHoleType.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawBoard/SetHoleType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAiBb"} \ No newline at end of file diff --git a/types/Add-on/DrawCircle.d.ts b/types/Add-on/DrawCircle.d.ts new file mode 100644 index 0000000..2402bd3 --- /dev/null +++ b/types/Add-on/DrawCircle.d.ts @@ -0,0 +1,10 @@ +import { Vector3 } from 'three'; +import { Command } from '../Editor/CommandMachine'; +export declare class DrawCircle implements Command { + exec(): Promise; + DrawCircleUseRadious(val: Vector3): Promise; + DrawCicleUseTwoPoint(): Promise; + DrawCicleUseThreePoint(): Promise; + DrawCicleUseCutoffPointAndRadious(): Promise; +} +//# sourceMappingURL=DrawCircle.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawCircle.d.ts.map b/types/Add-on/DrawCircle.d.ts.map new file mode 100644 index 0000000..fa72894 --- /dev/null +++ b/types/Add-on/DrawCircle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawCircle.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawCircle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;IAiCJ,oBAAoB,CAAC,GAAG,EAAE,OAAO;IAkBjC,oBAAoB;IA0BpB,sBAAsB;IAqCtB,iCAAiC;CAc1C"} \ No newline at end of file diff --git a/types/Add-on/DrawCylinder.d.ts b/types/Add-on/DrawCylinder.d.ts new file mode 100644 index 0000000..3af3739 --- /dev/null +++ b/types/Add-on/DrawCylinder.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class DrawCylineder implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawCylinder.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawCylinder.d.ts.map b/types/Add-on/DrawCylinder.d.ts.map new file mode 100644 index 0000000..10b7a4b --- /dev/null +++ b/types/Add-on/DrawCylinder.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawCylinder.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawCylinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CA+Bb"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/AutoDimBrs.d.ts b/types/Add-on/DrawDim/AutoDimBrs.d.ts new file mode 100644 index 0000000..c8b54ff --- /dev/null +++ b/types/Add-on/DrawDim/AutoDimBrs.d.ts @@ -0,0 +1,43 @@ +import { Matrix4 } from "three"; +import { AlignedDimension } from "../../DatabaseServices/Dimension/AlignedDimension"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Command } from "../../Editor/CommandMachine"; +import { CoordinateSystem } from "../../Geometry/CoordinateSystem"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +interface DirPls { + left: Curve[]; + right: Curve[]; + top: Curve[]; + bottom: Curve[]; +} +export declare class Command_AutoDimBrs implements Command { + maxThickness: number; + exec(): Promise; + /** + * 绘制前视图的标注 + * @param brs 需要绘制前视图标注的板件 + * @param textRo 字体旋转角度(弧度形式) + */ + DrawFrontDim(brs: Board[], textRo: number): Promise; + /** + * 绘制标注 + * @param brs + * @param drawCS 绘制标注的坐标系 + */ + DrawDim(brs: Board[], drawCS: Matrix4, textRotation?: number, needJig?: boolean, useMaxZ?: boolean, isLeadOutFlipped?: boolean): AlignedDimension[]; + /** + * 判断轮廓的上下左右 + * @param pl 轮廓(多段线) + * @param cs 参照坐标系 + * @memberof Command_AutoDimBrs + */ + JudgeOutlineDirection(pls: Polyline[], cs: CoordinateSystem): DirPls; + /** + * 通过轮廓并集得到最大外轮廓 + * @memberof Command_AutoDimBrs + */ + private GetOutLineByBoolUnion; +} +export {}; +//# sourceMappingURL=AutoDimBrs.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/AutoDimBrs.d.ts.map b/types/Add-on/DrawDim/AutoDimBrs.d.ts.map new file mode 100644 index 0000000..7329b89 --- /dev/null +++ b/types/Add-on/DrawDim/AutoDimBrs.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AutoDimBrs.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/AutoDimBrs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAoB,MAAM,OAAO,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAKnE,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAU5D,UAAU,MAAM;IAEZ,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,KAAK,EAAE,KAAK,EAAE,CAAC;IACf,GAAG,EAAE,KAAK,EAAE,CAAC;IACb,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAUD,qBAAa,kBAAmB,YAAW,OAAO;IAE9C,YAAY,EAAE,MAAM,CAAK;IACnB,IAAI;IA+EV;;;;OAIG;IACG,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM;IA8E/C;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,EAAE,OAAO,GAAE,OAAe,EAAE,gBAAgB,GAAE,OAAe;IA8FnJ;;;;;OAKG;IACH,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,gBAAgB,GAAG,MAAM;IA6BpE;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAShC"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/Command_DimContinue.d.ts b/types/Add-on/DrawDim/Command_DimContinue.d.ts new file mode 100644 index 0000000..30d8f7a --- /dev/null +++ b/types/Add-on/DrawDim/Command_DimContinue.d.ts @@ -0,0 +1,9 @@ +import { LineAngularDimension } from "../../DatabaseServices/Dimension/2LineAngularDimension"; +import { AlignedDimension } from "../../DatabaseServices/Dimension/AlignedDimension"; +import { Command } from "../../Editor/CommandMachine"; +export declare type Dimension = AlignedDimension | LineAngularDimension; +export declare function ContinueDrawDimension(lastDim: Dimension): Promise; +export declare class Command_DimContinue implements Command { + exec(): Promise; +} +//# sourceMappingURL=Command_DimContinue.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/Command_DimContinue.d.ts.map b/types/Add-on/DrawDim/Command_DimContinue.d.ts.map new file mode 100644 index 0000000..29f01af --- /dev/null +++ b/types/Add-on/DrawDim/Command_DimContinue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_DimContinue.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/Command_DimContinue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,oBAAY,SAAS,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAKhE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,SAAS,iBAU7D;AAED,qBAAa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;CAab"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DeleteDim.d.ts b/types/Add-on/DrawDim/DeleteDim.d.ts new file mode 100644 index 0000000..dae5451 --- /dev/null +++ b/types/Add-on/DrawDim/DeleteDim.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DeleteDim implements Command { + exec(): Promise; +} +//# sourceMappingURL=DeleteDim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DeleteDim.d.ts.map b/types/Add-on/DrawDim/DeleteDim.d.ts.map new file mode 100644 index 0000000..197c5dd --- /dev/null +++ b/types/Add-on/DrawDim/DeleteDim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DeleteDim.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DeleteDim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CAYb"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinue.d.ts b/types/Add-on/DrawDim/DimContinue.d.ts new file mode 100644 index 0000000..fe1ebc9 --- /dev/null +++ b/types/Add-on/DrawDim/DimContinue.d.ts @@ -0,0 +1,29 @@ +import { Vector3 } from "three"; +import { Dimension } from "./Command_DimContinue"; +export declare class DimContinue { + protected m_LastDim: Dimension; + protected m_BasePoint: Vector3; + StartDraw(lastDim: Dimension): Promise; + /** + * 重载: 当绘制开始时,会拷贝标注,此时你可以进行一些操作 + * @param dim + * @returns and jig draw + */ + protected CloneDimension(dim: Dimension): Dimension; + /** + * 重载:当用户点击的位置改变时,调用这个函数 + * @param p + * @param dim + */ + protected UpdateNextPoint(p: Vector3, dim: Dimension): void; + /** + * 重载,当绘制时发生 + * @param dim + */ + protected Drawed(dim: Dimension, p: Vector3): void; + /** + * 重载:绘制结束后,将调用这个函数 + */ + protected EndDraw(): void; +} +//# sourceMappingURL=DimContinue.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinue.d.ts.map b/types/Add-on/DrawDim/DimContinue.d.ts.map new file mode 100644 index 0000000..beb82a7 --- /dev/null +++ b/types/Add-on/DrawDim/DimContinue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DimContinue.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DimContinue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,WAAW;IAEpB,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC;IAC/B,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IAEzB,SAAS,CAAC,OAAO,EAAE,SAAS;IA8BlC;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS;IAInD;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS;IAGpD;;;OAGG;IACH,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO;IAG3C;;OAEG;IACH,SAAS,CAAC,OAAO;CAIpB"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinueAligen.d.ts b/types/Add-on/DrawDim/DimContinueAligen.d.ts new file mode 100644 index 0000000..c2df7f8 --- /dev/null +++ b/types/Add-on/DrawDim/DimContinueAligen.d.ts @@ -0,0 +1,28 @@ +import { Vector3 } from "three"; +import { AlignedDimension } from "../../DatabaseServices/Dimension/AlignedDimension"; +import { DimContinue } from "./DimContinue"; +export declare class DimContinueAligen extends DimContinue { + private m_line; + /** + * 重载: 当绘制开始时,会拷贝标注,此时你可以进行一些操作 + * @param dim + * @returns and jig draw + */ + protected CloneDimension(dim: AlignedDimension): AlignedDimension; + /** + * 重载:当用户点击的位置改变时,调用这个函数 + * @param p + * @param dim + */ + protected UpdateNextPoint(p: Vector3, dim: AlignedDimension): void; + /** + * 重载,当绘制时发生 + * @param dim + */ + protected Drawed(dim: AlignedDimension, p: Vector3): void; + /** + * 重载:绘制结束后,将调用这个函数 + */ + protected EndDraw(): void; +} +//# sourceMappingURL=DimContinueAligen.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinueAligen.d.ts.map b/types/Add-on/DrawDim/DimContinueAligen.d.ts.map new file mode 100644 index 0000000..d7bc7f8 --- /dev/null +++ b/types/Add-on/DrawDim/DimContinueAligen.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DimContinueAligen.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DimContinueAligen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,WAAW;IAE9C,OAAO,CAAC,MAAM,CAAO;IACrB;;;;MAIE;IACF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB;IAUjE;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB;IAmB3D;;;MAGE;IACF,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,OAAO;IAgBlD;;OAEG;IACH,SAAS,CAAC,OAAO;CAMpB"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinueLineAngular.d.ts b/types/Add-on/DrawDim/DimContinueLineAngular.d.ts new file mode 100644 index 0000000..8584cc5 --- /dev/null +++ b/types/Add-on/DrawDim/DimContinueLineAngular.d.ts @@ -0,0 +1,32 @@ +import { Vector3 } from "three"; +import { LineAngularDimension } from "../../DatabaseServices/Dimension/2LineAngularDimension"; +import { DimContinue } from "./DimContinue"; +export declare class DimContinueLineAngular extends DimContinue { + private _l1Sp; + private _l1Ep; + private _l2Ep; + private _arc; + private _narc; + /** + * 重载: 当绘制开始时,会拷贝标注,此时你可以进行一些操作 + * @param dim + * @returns and jig draw + */ + protected CloneDimension(dim: LineAngularDimension): LineAngularDimension; + /** + * 重载,当绘制时发生 + * @param dim + */ + protected Drawed(dim: LineAngularDimension, p: Vector3): void; + /** + * 重载:当用户点击的位置改变时,调用这个函数 + * @param p + * @param dim + */ + protected UpdateNextPoint(p: Vector3, dim: LineAngularDimension): void; + /** + * 重载:绘制结束后,将调用这个函数 + */ + protected EndDraw(): void; +} +//# sourceMappingURL=DimContinueLineAngular.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DimContinueLineAngular.d.ts.map b/types/Add-on/DrawDim/DimContinueLineAngular.d.ts.map new file mode 100644 index 0000000..fd385cf --- /dev/null +++ b/types/Add-on/DrawDim/DimContinueLineAngular.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DimContinueLineAngular.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DimContinueLineAngular.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wDAAwD,CAAC;AAG9F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,sBAAuB,SAAQ,WAAW;IAEnD,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB;;;;MAIE;IACF,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,oBAAoB,GAAG,oBAAoB;IASzE;;;MAGE;IACF,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO;IAKtD;;;;OAIG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB;IA4C/D;;OAEG;IACH,SAAS,CAAC,OAAO;CAMpB"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts b/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts new file mode 100644 index 0000000..c8ffce6 --- /dev/null +++ b/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts @@ -0,0 +1,6 @@ +export declare class Command_Draw2LineAngularDim { + exec(): Promise; + private BuildDimByPoint; + private BuildDim; +} +//# sourceMappingURL=Draw2LineAngularDim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts.map b/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts.map new file mode 100644 index 0000000..22418aa --- /dev/null +++ b/types/Add-on/DrawDim/Draw2LineAngularDim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Draw2LineAngularDim.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/Draw2LineAngularDim.ts"],"names":[],"mappings":"AAcA,qBAAa,2BAA2B;IAE9B,IAAI;YAoEI,eAAe;YAoCf,QAAQ;CA0DzB"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawAlignedDimension.d.ts b/types/Add-on/DrawDim/DrawAlignedDimension.d.ts new file mode 100644 index 0000000..f535b03 --- /dev/null +++ b/types/Add-on/DrawDim/DrawAlignedDimension.d.ts @@ -0,0 +1,14 @@ +import { Vector3 } from 'three'; +import { Command } from '../../Editor/CommandMachine'; +export declare enum DimensionType { + Align = 0, + Linear = 1 +} +export declare class DrawAlignedDimension implements Command { + protected DimType: DimensionType; + exec(): Promise; + protected SelectPointDim(footPt1: Vector3): Promise; + private PickUpDim; + protected BuildDim(footPt1: Vector3, footPt2: Vector3): Promise; +} +//# sourceMappingURL=DrawAlignedDimension.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawAlignedDimension.d.ts.map b/types/Add-on/DrawDim/DrawAlignedDimension.d.ts.map new file mode 100644 index 0000000..61d6731 --- /dev/null +++ b/types/Add-on/DrawDim/DrawAlignedDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawAlignedDimension.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DrawAlignedDimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,oBAAY,aAAa;IAErB,KAAK,IAAI;IACT,MAAM,IAAI;CACb;AAED,qBAAa,oBAAqB,YAAW,OAAO;IAEhD,SAAS,CAAC,OAAO,gBAAuB;IAClC,IAAI;cAUM,cAAc,CAAC,OAAO,EAAE,OAAO;YAkBjC,SAAS;cA+BP,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;CAgC9D"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawDiameterDim.d.ts b/types/Add-on/DrawDim/DrawDiameterDim.d.ts new file mode 100644 index 0000000..8d15c59 --- /dev/null +++ b/types/Add-on/DrawDim/DrawDiameterDim.d.ts @@ -0,0 +1,5 @@ +import { DrawRadiusDim, RadOrDia } from "./DrawRadiusDim"; +export declare class DrawDiameterDim extends DrawRadiusDim { + protected type: RadOrDia; +} +//# sourceMappingURL=DrawDiameterDim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawDiameterDim.d.ts.map b/types/Add-on/DrawDim/DrawDiameterDim.d.ts.map new file mode 100644 index 0000000..f66b51f --- /dev/null +++ b/types/Add-on/DrawDim/DrawDiameterDim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDiameterDim.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DrawDiameterDim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE1D,qBAAa,eAAgB,SAAQ,aAAa;IAE9C,SAAS,CAAC,IAAI,WAAgB;CACjC"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawLinearDimension.d.ts b/types/Add-on/DrawDim/DrawLinearDimension.d.ts new file mode 100644 index 0000000..6cf5dd8 --- /dev/null +++ b/types/Add-on/DrawDim/DrawLinearDimension.d.ts @@ -0,0 +1,5 @@ +import { DrawAlignedDimension } from './DrawAlignedDimension'; +export declare class DrawLinearDimension extends DrawAlignedDimension { + constructor(); +} +//# sourceMappingURL=DrawLinearDimension.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawLinearDimension.d.ts.map b/types/Add-on/DrawDim/DrawLinearDimension.d.ts.map new file mode 100644 index 0000000..82c4a46 --- /dev/null +++ b/types/Add-on/DrawDim/DrawLinearDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLinearDimension.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DrawLinearDimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,qBAAa,mBAAoB,SAAQ,oBAAoB;;CAO5D"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawRadiusDim.d.ts b/types/Add-on/DrawDim/DrawRadiusDim.d.ts new file mode 100644 index 0000000..0108ad6 --- /dev/null +++ b/types/Add-on/DrawDim/DrawRadiusDim.d.ts @@ -0,0 +1,11 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare enum RadOrDia { + Rad = 0, + Dia = 1 +} +export declare class DrawRadiusDim implements Command { + protected type: RadOrDia; + exec(): Promise; + private UpdateDim; +} +//# sourceMappingURL=DrawRadiusDim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/DrawRadiusDim.d.ts.map b/types/Add-on/DrawDim/DrawRadiusDim.d.ts.map new file mode 100644 index 0000000..79c75d8 --- /dev/null +++ b/types/Add-on/DrawDim/DrawRadiusDim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawRadiusDim.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/DrawRadiusDim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,oBAAY,QAAQ;IAEhB,GAAG,IAAI;IACP,GAAG,IAAI;CACV;AAED,qBAAa,aAAc,YAAW,OAAO;IAEzC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAgB;IAClC,IAAI;IA+CV,OAAO,CAAC,SAAS;CAUpB"} \ No newline at end of file diff --git a/types/Add-on/DrawDim/FastDim.d.ts b/types/Add-on/DrawDim/FastDim.d.ts new file mode 100644 index 0000000..c370ba8 --- /dev/null +++ b/types/Add-on/DrawDim/FastDim.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_FastDimBrs implements Command { + exec(): Promise; +} +//# sourceMappingURL=FastDim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDim/FastDim.d.ts.map b/types/Add-on/DrawDim/FastDim.d.ts.map new file mode 100644 index 0000000..bdb5e5d --- /dev/null +++ b/types/Add-on/DrawDim/FastDim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FastDim.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDim/FastDim.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAkBtD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CAmHb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CheckDrawHole.d.ts b/types/Add-on/DrawDrilling/CheckDrawHole.d.ts new file mode 100644 index 0000000..2281a24 --- /dev/null +++ b/types/Add-on/DrawDrilling/CheckDrawHole.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class CheckDrawHole implements Command { + exec(): Promise; +} +//# sourceMappingURL=CheckDrawHole.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CheckDrawHole.d.ts.map b/types/Add-on/DrawDrilling/CheckDrawHole.d.ts.map new file mode 100644 index 0000000..3791d64 --- /dev/null +++ b/types/Add-on/DrawDrilling/CheckDrawHole.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckDrawHole.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/CheckDrawHole.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAoBb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CheckHasHole.d.ts b/types/Add-on/DrawDrilling/CheckHasHole.d.ts new file mode 100644 index 0000000..652f263 --- /dev/null +++ b/types/Add-on/DrawDrilling/CheckHasHole.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class CheckHasHoleBoard implements Command { + exec(): Promise; +} +//# sourceMappingURL=CheckHasHole.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CheckHasHole.d.ts.map b/types/Add-on/DrawDrilling/CheckHasHole.d.ts.map new file mode 100644 index 0000000..b7efd86 --- /dev/null +++ b/types/Add-on/DrawDrilling/CheckHasHole.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckHasHole.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/CheckHasHole.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CA8Bb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CollisionModal.d.ts b/types/Add-on/DrawDrilling/CollisionModal.d.ts new file mode 100644 index 0000000..5672f31 --- /dev/null +++ b/types/Add-on/DrawDrilling/CollisionModal.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { Face } from '../../Geometry/DrillParse/Face'; +import { Board } from '../../DatabaseServices/Entity/Board'; +export interface ICollsionBrs { + LocalBoard: Board; + InterBoard: Board; +} +interface ICollsionModalProps { + faces: (Face | ICollsionBrs)[]; +} +export declare class CollsionModal extends React.Component { + render(): JSX.Element; + private click; +} +export {}; +//# sourceMappingURL=CollisionModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/CollisionModal.d.ts.map b/types/Add-on/DrawDrilling/CollisionModal.d.ts.map new file mode 100644 index 0000000..2dd5988 --- /dev/null +++ b/types/Add-on/DrawDrilling/CollisionModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CollisionModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/CollisionModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,MAAM,WAAW,YAAY;IAEzB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,mBAAmB;IAEzB,KAAK,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,EAAE,CAAC;CAClC;AAED,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAC5D,MAAM;IAwBb,OAAO,CAAC,KAAK,CAUX;CACL"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DeleteDrill.d.ts b/types/Add-on/DrawDrilling/DeleteDrill.d.ts new file mode 100644 index 0000000..25edd35 --- /dev/null +++ b/types/Add-on/DrawDrilling/DeleteDrill.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DeleteDrill implements Command { + private deleteType; + exec(): Promise; +} +//# sourceMappingURL=DeleteDrill.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DeleteDrill.d.ts.map b/types/Add-on/DrawDrilling/DeleteDrill.d.ts.map new file mode 100644 index 0000000..0994954 --- /dev/null +++ b/types/Add-on/DrawDrilling/DeleteDrill.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DeleteDrill.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/DeleteDrill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAuBtD,qBAAa,WAAY,YAAW,OAAO;IAEvC,OAAO,CAAC,UAAU,CAA2C;IACvD,IAAI;CAwFb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrawDrilling.d.ts b/types/Add-on/DrawDrilling/DrawDrilling.d.ts new file mode 100644 index 0000000..0caa641 --- /dev/null +++ b/types/Add-on/DrawDrilling/DrawDrilling.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawDrilling implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawDrilling.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrawDrilling.d.ts.map b/types/Add-on/DrawDrilling/DrawDrilling.d.ts.map new file mode 100644 index 0000000..644e2a9 --- /dev/null +++ b/types/Add-on/DrawDrilling/DrawDrilling.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDrilling.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/DrawDrilling.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CAiBb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts b/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts new file mode 100644 index 0000000..3cbe3ca --- /dev/null +++ b/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts @@ -0,0 +1,60 @@ +import { Matrix4 } from "three"; +import { Singleton } from "../../Common/Singleton"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ObjectId } from "../../DatabaseServices/ObjectId"; +import { Box3Ext } from "../../Geometry/Box"; +import { DrillingOption } from "../../UI/Store/drillInterface"; +export declare class DrawDrillingTool extends Singleton { + private m_MoveDistList; + private m_Face; + private m_Option; + private woodPins; + private drillEnts; + private _configCache; + private _drillEntsCache; + private _woodPinsCache; + private _collsionFaces; + constructor(); + /**获取用户正在使用的配置 */ + private GetDrillingConfig; + private GetRuleByFace; + private InitWoodPins; + get CacheKey(): string; + get IsPostive(): boolean; + get EvalParam(): { + H: number; + L: number; + W: number; + }; + private InitDrill; + private _InitDrill; + InitDrillTemp(suitableOption: DrillingOption): boolean; + private EqulalSpacing; + private Multiple32; + private GetMoveDist; + private GetBoxes; + private BuildDrill; + private CheckDrillInBoard; + private CheckWoodInBoard; + private CheckModelingCollision; + private IsDrillCollisionModeling; + private ParseDrillList; + private SaveDrillToBoard; + private ParseThroughHoles; + private ParseHolesisThrough; + private MoveDrillEnts; + IsTk(ds: ObjectId[]): boolean; + GetDrillsBox(ids: ObjectId[], OCSInv: Matrix4): Box3Ext[]; + CheckCollision(drills: ObjectId[][], refDrillList: ObjectId[][], woodPinss: ObjectId[][]): void; + private InitTool; + private ClassifyBoardList; + ClearExitDrilling(brs: Board[]): void; + private StartGangDrill; + /**分类并排钻 */ + ClassifyAndDrilling(brList: Board[] | Set): Promise; + private GetSpliteBoards; + DrillIsCollsion(b1: Box3Ext, b2: Box3Ext): boolean; + Check(brs: Board[]): Promise; + CheckDrillList(result: string[]): void; +} +//# sourceMappingURL=DrawDrillingTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts.map b/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts.map new file mode 100644 index 0000000..de50bf5 --- /dev/null +++ b/types/Add-on/DrawDrilling/DrawDrillingTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawDrillingTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/DrawDrillingTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAQ/C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAQnD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAO7C,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAK5E,qBAAa,gBAAiB,SAAQ,SAAS;IAE3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,YAAY,CAA4C;IAEhE,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAA0C;IACpD,OAAO,CAAC,cAAc,CAAc;;IAWhD,iBAAiB;IACjB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;IA2DpB,IAAI,QAAQ,WAMX;IACD,IAAI,SAAS,YAGZ;IACD,IAAI,SAAS;;;;MAOZ;IAED,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,UAAU;IA4ElB,aAAa,CAAC,cAAc,EAAE,cAAc;IAyC5C,OAAO,CAAC,aAAa;IA4CrB,OAAO,CAAC,UAAU;IAyDlB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,QAAQ;IAkChB,OAAO,CAAC,UAAU;IA2GlB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,iBAAiB;IAwDzB,OAAO,CAAC,mBAAmB;IA4E3B,OAAO,CAAC,aAAa;IAoBrB,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE;IAInB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO;IAa7C,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAsCxF,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,iBAAiB;IAczB,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE;YAehB,cAAc;IA8E5B,WAAW;IACL,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YA8BxD,eAAe;IAwB7B,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO;IA4BlC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE;IAsGxB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;CAmBlC"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrillConfig.d.ts b/types/Add-on/DrawDrilling/DrillConfig.d.ts new file mode 100644 index 0000000..7a1f8c4 --- /dev/null +++ b/types/Add-on/DrawDrilling/DrillConfig.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../../Editor/CommandMachine'; +export declare class DrillConfig implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrillConfig.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrillConfig.d.ts.map b/types/Add-on/DrawDrilling/DrillConfig.d.ts.map new file mode 100644 index 0000000..4ec846c --- /dev/null +++ b/types/Add-on/DrawDrilling/DrillConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillConfig.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/DrillConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAKb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrillingReactor.d.ts b/types/Add-on/DrawDrilling/DrillingReactor.d.ts new file mode 100644 index 0000000..f197a6c --- /dev/null +++ b/types/Add-on/DrawDrilling/DrillingReactor.d.ts @@ -0,0 +1,8 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +export declare class DrillingReactor { + Enable: boolean; + constructor(); + private GetSurroundBoards; + StartReactor(brs: Set): Promise; +} +//# sourceMappingURL=DrillingReactor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/DrillingReactor.d.ts.map b/types/Add-on/DrawDrilling/DrillingReactor.d.ts.map new file mode 100644 index 0000000..64a10b0 --- /dev/null +++ b/types/Add-on/DrawDrilling/DrillingReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillingReactor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/DrillingReactor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAgB5D,qBAAa,eAAe;IAExB,MAAM,UAAQ;;IAoFd,OAAO,CAAC,iBAAiB;IAqBnB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC;CAmBrC"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/HoleUtils.d.ts b/types/Add-on/DrawDrilling/HoleUtils.d.ts new file mode 100644 index 0000000..55ad855 --- /dev/null +++ b/types/Add-on/DrawDrilling/HoleUtils.d.ts @@ -0,0 +1,20 @@ +import { Matrix4 } from "three"; +import { CylinderHole } from "../../DatabaseServices/3DSolid/CylinderHole"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Hole } from "../../DatabaseServices/3DSolid/Hole"; +import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole"; +export declare function CyHoleInBoard(cys: CylinderHole[], br: Board, ocs: Matrix4): boolean; +export interface IRectHoleOption { + up: string; + down: string; + left: string; + right: string; +} +export declare const TempRectHoleOption: IRectHoleOption; +/**分析上下左右排钻 */ +export declare function InitRectBoardHoleOption(br: Board, option: IRectHoleOption): void; +export declare function ExtureHoleInBoard(holes: ExtrudeHole[], board: Board, ocs: Matrix4): boolean; +export declare function HoleInBoard(holes: Hole[], br: Board, ocs?: Matrix4): boolean; +/**上下左右排钻写入板件 */ +export declare function SetRectHighHole(br: Board, option: IRectHoleOption): void; +//# sourceMappingURL=HoleUtils.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/HoleUtils.d.ts.map b/types/Add-on/DrawDrilling/HoleUtils.d.ts.map new file mode 100644 index 0000000..1fd75cc --- /dev/null +++ b/types/Add-on/DrawDrilling/HoleUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HoleUtils.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/HoleUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAiB,MAAM,6CAA6C,CAAC;AAI1F,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAKzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,WA4HzE;AAED,MAAM,WAAW,eAAe;IAE5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAKhC,CAAC;AAEF,cAAc;AACd,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAmBzE;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,WAIjF;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,WAYlE;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAyBjE"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts b/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts new file mode 100644 index 0000000..a8dab54 --- /dev/null +++ b/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ReverseDrillFace implements Command { + exec(): Promise; +} +//# sourceMappingURL=ReverseDrillFace.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts.map b/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts.map new file mode 100644 index 0000000..aca4a29 --- /dev/null +++ b/types/Add-on/DrawDrilling/ReverseDrillFace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ReverseDrillFace.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/ReverseDrillFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;CAeb"} \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts b/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts new file mode 100644 index 0000000..d12dae9 --- /dev/null +++ b/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ShowDrillingTemplate implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowDrillingTemplate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts.map b/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts.map new file mode 100644 index 0000000..f9e5bbb --- /dev/null +++ b/types/Add-on/DrawDrilling/ShowDrillingTemplate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowDrillingTemplate.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawDrilling/ShowDrillingTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/DrawEllipse.d.ts b/types/Add-on/DrawEllipse.d.ts new file mode 100644 index 0000000..0ff02ef --- /dev/null +++ b/types/Add-on/DrawEllipse.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../Editor/CommandMachine"; +/** + * 画椭圆 + */ +export declare class DrawEllipse implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawEllipse.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawEllipse.d.ts.map b/types/Add-on/DrawEllipse.d.ts.map new file mode 100644 index 0000000..4d836a1 --- /dev/null +++ b/types/Add-on/DrawEllipse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawEllipse.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawEllipse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAyCb"} \ No newline at end of file diff --git a/types/Add-on/DrawExtrude.d.ts b/types/Add-on/DrawExtrude.d.ts new file mode 100644 index 0000000..1f7f390 --- /dev/null +++ b/types/Add-on/DrawExtrude.d.ts @@ -0,0 +1,11 @@ +import { Matrix4, Vector3 } from "three"; +import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole"; +import { ExtrudeSolid, ExtureContourCurve } from "../DatabaseServices/Entity/Extrude"; +import { Command } from "../Editor/CommandMachine"; +export declare class DrawExtrude implements Command { + exec(): Promise; +} +export declare function ExtrudeApplyContour(ext: ExtrudeHole, contour: ExtureContourCurve): Matrix4 | undefined; +/**设置拉伸体高度 */ +export declare function SetExtrudeHeight(en: ExtrudeHole | ExtrudeSolid, dist: number, basePt: Vector3, oldPosition: Vector3): void; +//# sourceMappingURL=DrawExtrude.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawExtrude.d.ts.map b/types/Add-on/DrawExtrude.d.ts.map new file mode 100644 index 0000000..d50b5c6 --- /dev/null +++ b/types/Add-on/DrawExtrude.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawExtrude.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawExtrude.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAoEb;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,GAAG,SAAS,CA0BtG;AAED,aAAa;AACb,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,WAAW,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,QA0BnH"} \ No newline at end of file diff --git a/types/Add-on/DrawFloor.d.ts b/types/Add-on/DrawFloor.d.ts new file mode 100644 index 0000000..51efc2f --- /dev/null +++ b/types/Add-on/DrawFloor.d.ts @@ -0,0 +1,20 @@ +import * as THREE from 'three'; +import { Command } from '../Editor/CommandMachine'; +export declare class DrawFloor implements Command { + textureLoader: THREE.TextureLoader; + get scene(): THREE.Scene; + constructor(); + exec(): Promise; + loadFbx(): Promise; + private drawFloor; + materialList: any[]; + loadMaterial(): void; + drawLight(): void; + private drawHemiLight; + drawWall(): void; + drawBox(): void; + cubemap(): THREE.CubeTexture; + drawBox2(): void; + loadMaterialNode(): void; +} +//# sourceMappingURL=DrawFloor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawFloor.d.ts.map b/types/Add-on/DrawFloor.d.ts.map new file mode 100644 index 0000000..4964aa4 --- /dev/null +++ b/types/Add-on/DrawFloor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawFloor.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawFloor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,SAAU,YAAW,OAAO;IAErC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;IAEnC,IAAI,KAAK,gBAGR;;IAKK,IAAI;IAoBJ,OAAO;IAOb,OAAO,CAAC,SAAS;IAmCjB,YAAY,QAAM;IAClB,YAAY;IA6CZ,SAAS;IAoCT,OAAO,CAAC,aAAa;IAUrB,QAAQ;IAkER,OAAO;IA+BP,OAAO;IAcP,QAAQ;IAiHR,gBAAgB;CAGnB"} \ No newline at end of file diff --git a/types/Add-on/DrawGripStretch.d.ts b/types/Add-on/DrawGripStretch.d.ts new file mode 100644 index 0000000..935d3d9 --- /dev/null +++ b/types/Add-on/DrawGripStretch.d.ts @@ -0,0 +1,8 @@ +import { Command } from '../Editor/CommandMachine'; +/** + * 测试绘制对象的夹点. + */ +export declare class DrawGripStretch implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawGripStretch.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawGripStretch.d.ts.map b/types/Add-on/DrawGripStretch.d.ts.map new file mode 100644 index 0000000..d944f2f --- /dev/null +++ b/types/Add-on/DrawGripStretch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawGripStretch.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawGripStretch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAiCb"} \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawPointLight.d.ts b/types/Add-on/DrawLight/DrawPointLight.d.ts new file mode 100644 index 0000000..e665504 --- /dev/null +++ b/types/Add-on/DrawLight/DrawPointLight.d.ts @@ -0,0 +1,8 @@ +import { Command } from '../../Editor/CommandMachine'; +export declare class DrawPointLight implements Command { + exec(): Promise; +} +export declare class DrawPointLight2 implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawPointLight.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawPointLight.d.ts.map b/types/Add-on/DrawLight/DrawPointLight.d.ts.map new file mode 100644 index 0000000..a12d97f --- /dev/null +++ b/types/Add-on/DrawLight/DrawPointLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawPointLight.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawLight/DrawPointLight.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CA6Bb;AACD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAeb"} \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawRectAreaLight.d.ts b/types/Add-on/DrawLight/DrawRectAreaLight.d.ts new file mode 100644 index 0000000..8e44534 --- /dev/null +++ b/types/Add-on/DrawLight/DrawRectAreaLight.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawRectAreaLight implements Command { + exec(): Promise; + private UpdateLight; +} +//# sourceMappingURL=DrawRectAreaLight.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawRectAreaLight.d.ts.map b/types/Add-on/DrawLight/DrawRectAreaLight.d.ts.map new file mode 100644 index 0000000..d2941ff --- /dev/null +++ b/types/Add-on/DrawLight/DrawRectAreaLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawRectAreaLight.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawLight/DrawRectAreaLight.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;IAsBV,OAAO,CAAC,WAAW;CAqBtB"} \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawSpotLight.d.ts b/types/Add-on/DrawLight/DrawSpotLight.d.ts new file mode 100644 index 0000000..b9e61b3 --- /dev/null +++ b/types/Add-on/DrawLight/DrawSpotLight.d.ts @@ -0,0 +1,11 @@ +import { Vector3 } from "three"; +import { SpotLight } from "../../DatabaseServices/Lights/SpotLight"; +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawSpotLight implements Command { + exec(): Promise; +} +export declare class DrawSpotLight2 implements Command { + exec(): Promise; + update(light: SpotLight, p: Vector3): void; +} +//# sourceMappingURL=DrawSpotLight.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawLight/DrawSpotLight.d.ts.map b/types/Add-on/DrawLight/DrawSpotLight.d.ts.map new file mode 100644 index 0000000..ca45cfd --- /dev/null +++ b/types/Add-on/DrawLight/DrawSpotLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSpotLight.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawLight/DrawSpotLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CA0Bb;AACD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;IAeV,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO;CAYtC"} \ No newline at end of file diff --git a/types/Add-on/DrawLine.d.ts b/types/Add-on/DrawLine.d.ts new file mode 100644 index 0000000..d033f2a --- /dev/null +++ b/types/Add-on/DrawLine.d.ts @@ -0,0 +1,8 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawLine implements Command { + exec(): Promise; +} +export declare class Command_DrawXLine implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawLine.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawLine.d.ts.map b/types/Add-on/DrawLine.d.ts.map new file mode 100644 index 0000000..76ec4b1 --- /dev/null +++ b/types/Add-on/DrawLine.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLine.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawLine.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,QAAS,YAAW,OAAO;IAE9B,IAAI;CA+Fb;AAED,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAgCb"} \ No newline at end of file diff --git a/types/Add-on/DrawPoint.d.ts b/types/Add-on/DrawPoint.d.ts new file mode 100644 index 0000000..d874b22 --- /dev/null +++ b/types/Add-on/DrawPoint.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class CMD_DrawPoint implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawPoint.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawPoint.d.ts.map b/types/Add-on/DrawPoint.d.ts.map new file mode 100644 index 0000000..2c91d3b --- /dev/null +++ b/types/Add-on/DrawPoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawPoint.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawPoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAiBb"} \ No newline at end of file diff --git a/types/Add-on/DrawPolyline.d.ts b/types/Add-on/DrawPolyline.d.ts new file mode 100644 index 0000000..2b49e3b --- /dev/null +++ b/types/Add-on/DrawPolyline.d.ts @@ -0,0 +1,14 @@ +import { Vector3 } from 'three'; +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +declare enum PolylineModel { + Arc = 0, + Line = 1 +} +export declare class DrawPolyline { + model: PolylineModel; + exec(): Promise; + UpdatePoint(pl: Polyline, pt: Vector3): void; + RemoveLastVertex(pl: Polyline): void; +} +export {}; +//# sourceMappingURL=DrawPolyline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawPolyline.d.ts.map b/types/Add-on/DrawPolyline.d.ts.map new file mode 100644 index 0000000..c7c8bc0 --- /dev/null +++ b/types/Add-on/DrawPolyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawPolyline.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawPolyline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAK/D,aAAK,aAAa;IAEd,GAAG,IAAI;IACP,IAAI,IAAI;CACX;AAED,qBAAa,YAAY;IAErB,KAAK,EAAE,aAAa,CAAsB;IACpC,IAAI;IA6FV,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO;IA4BrC,gBAAgB,CAAC,EAAE,EAAE,QAAQ;CAKhC"} \ No newline at end of file diff --git a/types/Add-on/DrawRect.d.ts b/types/Add-on/DrawRect.d.ts new file mode 100644 index 0000000..bd49ad2 --- /dev/null +++ b/types/Add-on/DrawRect.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawRect implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawRect.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawRect.d.ts.map b/types/Add-on/DrawRect.d.ts.map new file mode 100644 index 0000000..b43b7f6 --- /dev/null +++ b/types/Add-on/DrawRect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawRect.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawRect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,QAAS,YAAW,OAAO;IAE9B,IAAI;CAcb"} \ No newline at end of file diff --git a/types/Add-on/DrawRegion.d.ts b/types/Add-on/DrawRegion.d.ts new file mode 100644 index 0000000..8a41f90 --- /dev/null +++ b/types/Add-on/DrawRegion.d.ts @@ -0,0 +1,9 @@ +import { Matrix4 } from 'three'; +import { Command } from '../Editor/CommandMachine'; +import { Route } from '../Geometry/CurveMap'; +export declare class DrawRegion implements Command { + ocs: Matrix4; + exec(): Promise; + DrawRegion(routeS: Array): void; +} +//# sourceMappingURL=DrawRegion.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawRegion.d.ts.map b/types/Add-on/DrawRegion.d.ts.map new file mode 100644 index 0000000..4aeb7b6 --- /dev/null +++ b/types/Add-on/DrawRegion.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawRegion.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawRegion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAOhC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,qBAAa,UAAW,YAAW,OAAO;IAEtC,GAAG,EAAE,OAAO,CAAC;IACP,IAAI;IAmEV,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;CAUlC"} \ No newline at end of file diff --git a/types/Add-on/DrawRevolve.d.ts b/types/Add-on/DrawRevolve.d.ts new file mode 100644 index 0000000..65a9eac --- /dev/null +++ b/types/Add-on/DrawRevolve.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_DrawRevolve implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawRevolve.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawRevolve.d.ts.map b/types/Add-on/DrawRevolve.d.ts.map new file mode 100644 index 0000000..e365696 --- /dev/null +++ b/types/Add-on/DrawRevolve.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawRevolve.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawRevolve.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBACa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;CAuFb"} \ No newline at end of file diff --git a/types/Add-on/DrawSky.d.ts b/types/Add-on/DrawSky.d.ts new file mode 100644 index 0000000..4d282c0 --- /dev/null +++ b/types/Add-on/DrawSky.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawSky implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawSky.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawSky.d.ts.map b/types/Add-on/DrawSky.d.ts.map new file mode 100644 index 0000000..bbe4f30 --- /dev/null +++ b/types/Add-on/DrawSky.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSky.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawSky.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,OAAQ,YAAW,OAAO;IAE7B,IAAI;CAab"} \ No newline at end of file diff --git a/types/Add-on/DrawSphere.d.ts b/types/Add-on/DrawSphere.d.ts new file mode 100644 index 0000000..d589b3b --- /dev/null +++ b/types/Add-on/DrawSphere.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawSphere implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawSphere.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawSphere.d.ts.map b/types/Add-on/DrawSphere.d.ts.map new file mode 100644 index 0000000..457e6ff --- /dev/null +++ b/types/Add-on/DrawSphere.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSphere.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawSphere.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CAWb"} \ No newline at end of file diff --git a/types/Add-on/DrawSpline.d.ts b/types/Add-on/DrawSpline.d.ts new file mode 100644 index 0000000..61fb366 --- /dev/null +++ b/types/Add-on/DrawSpline.d.ts @@ -0,0 +1,6 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawSpline implements Command { + exec(): Promise; + private Draw; +} +//# sourceMappingURL=DrawSpline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawSpline.d.ts.map b/types/Add-on/DrawSpline.d.ts.map new file mode 100644 index 0000000..ce6d367 --- /dev/null +++ b/types/Add-on/DrawSpline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawSpline.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawSpline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBACa,UAAW,YAAW,OAAO;IAEhC,IAAI;IAoEV,OAAO,CAAC,IAAI;CAaf"} \ No newline at end of file diff --git a/types/Add-on/DrawTestReg.d.ts b/types/Add-on/DrawTestReg.d.ts new file mode 100644 index 0000000..257fe79 --- /dev/null +++ b/types/Add-on/DrawTestReg.d.ts @@ -0,0 +1,15 @@ +import { Vector3 } from 'three'; +import { Line } from '../DatabaseServices/Entity/Line'; +import { Command } from '../Editor/CommandMachine'; +export declare class DrawRegTest implements Command { + exec(): Promise; + Test1(): void; + Test2(): void; + Test3(): void; + Test4(): void; + Test5(): void; + Test6(): void; + Test7(): void; + Draw(culist: Line[], v?: Vector3): void; +} +//# sourceMappingURL=DrawTestReg.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawTestReg.d.ts.map b/types/Add-on/DrawTestReg.d.ts.map new file mode 100644 index 0000000..1cdf9b4 --- /dev/null +++ b/types/Add-on/DrawTestReg.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawTestReg.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawTestReg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;IAaV,KAAK;IAsBL,KAAK;IAgBL,KAAK;IAgBL,KAAK;IAoBL,KAAK;IAsBL,KAAK;IAmBL,KAAK;IAmBL,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO;CA6CnC"} \ No newline at end of file diff --git a/types/Add-on/DrawText.d.ts b/types/Add-on/DrawText.d.ts new file mode 100644 index 0000000..12de56c --- /dev/null +++ b/types/Add-on/DrawText.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawText implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawText.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawText.d.ts.map b/types/Add-on/DrawText.d.ts.map new file mode 100644 index 0000000..23f13ee --- /dev/null +++ b/types/Add-on/DrawText.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawText.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawText.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,QAAS,YAAW,OAAO;IAE9B,IAAI;CA6Bb"} \ No newline at end of file diff --git a/types/Add-on/DrawTopline.d.ts b/types/Add-on/DrawTopline.d.ts new file mode 100644 index 0000000..9f4c488 --- /dev/null +++ b/types/Add-on/DrawTopline.d.ts @@ -0,0 +1,4 @@ +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +/**构建顶线 */ +export declare function buildTopline(outline: Polyline, name: string): Promise; +//# sourceMappingURL=DrawTopline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawTopline.d.ts.map b/types/Add-on/DrawTopline.d.ts.map new file mode 100644 index 0000000..0d610af --- /dev/null +++ b/types/Add-on/DrawTopline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawTopline.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawTopline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAQ/D,UAAU;AACV,wBAAsB,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,iBA2BjE"} \ No newline at end of file diff --git a/types/Add-on/DrawViewport.d.ts b/types/Add-on/DrawViewport.d.ts new file mode 100644 index 0000000..aa018dd --- /dev/null +++ b/types/Add-on/DrawViewport.d.ts @@ -0,0 +1,18 @@ +import { Command } from "../Editor/CommandMachine"; +import { ViewportEntity } from "../DatabaseServices/ViewportEntity"; +import { Vector3 } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +export declare class DrawViewport implements Command { + exec(): Promise; +} +export declare class Draw4Viewport implements Command { + exec(): Promise; +} +export declare function Get4Viewport(p1: Vector3, p2: Vector3, ens: Entity[], isHideDoor?: boolean): ViewportEntity[]; +export declare class Draw2Viewport implements Command { + exec(): Promise; +} +export declare class Draw3Viewport implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawViewport.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawViewport.d.ts.map b/types/Add-on/DrawViewport.d.ts.map new file mode 100644 index 0000000..280e90f --- /dev/null +++ b/types/Add-on/DrawViewport.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawViewport.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AA2E3D,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CA8Bb;AACD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAgCb;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,UAAQ,oBAoEvF;AAED,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAsDb;AAGD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAuGb"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts b/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts new file mode 100644 index 0000000..ecc09db --- /dev/null +++ b/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ConfigureWineRack implements Command { + exec(): Promise; +} +//# sourceMappingURL=ConfigureWineRack.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts.map b/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts.map new file mode 100644 index 0000000..5d7fd85 --- /dev/null +++ b/types/Add-on/DrawWineRack/ConfigureWineRack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConfigureWineRack.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/ConfigureWineRack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAKb"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts b/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts new file mode 100644 index 0000000..0e5d26a --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts @@ -0,0 +1,54 @@ +import { Matrix4, Vector3 } from "three"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { IWineRackOption, IR2WROption } from "../../UI/Store/WineRackInterface"; +import { DrawWineRackTool } from "./DrawWinRackTool"; +export interface IWineRackData { + basePt: Vector3; + brLength: number; +} +export interface IParsePlRes { + isOk: boolean; + isLeft?: boolean; + pl?: Polyline; + length?: number; + matInv?: Matrix4; + basePt?: Vector3; + thickness?: number; + isVer?: boolean; + isRo?: boolean; +} +export declare const R2WRTolerance = 0.001; +/** + * 斜酒格 + */ +export declare class DrawObliqueWineRackTool extends DrawWineRackTool { + Parse(space: ISpaceParse, config: IWineRackOption): void; + private CalGridWidth; + /**获取矩形多段线的4个对角点并判断是否有效 */ + private GetRect4Pts; + /**获取矩形一边的点 */ + private GetRect2Pts; + /**按格子宽获取酒格数据 */ + private CalcWineRackDataByWidth; + private CalcWineRackDataByCount; + CalcWineRackDataByFixed(lWRDataList: IWineRackData[], rWRDataList: IWineRackData[]): { + width: number; + height: number; + }; + /**构建酒格正面多段线组*/ + CalculationRectPolylineArr(ptMid: Vector3, rectPl: Polyline, gripWidth: number): Polyline[]; + /**构建酒格正面多段线*/ + CalculationRectPolyline(pt: Vector3, rectPl: Polyline): Polyline; + GetWineRackData(width: number, height: number, gripWidth: number, brThick: number, widthCount: number, heightCount: number, lWRDataList: IWineRackData[], rWRDataList: IWineRackData[]): void; + /**根据酒格数据获取多段线 */ + private CreatePolylineByWineData; + /**根据多段线组构建酒格 */ + protected DrawBoardFormPolyLine(pls: Polyline[], actualWidth?: number, config?: IR2WROption): void; + private ParsePolyLine; + /**绘制酒格 */ + private CreateBoard; + /**构建酒格形状,加入齿 */ + private GetPolyline; +} +//# sourceMappingURL=DrawObliqueWineRackTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts.map b/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts.map new file mode 100644 index 0000000..af83989 --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawObliqueWineRackTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawObliqueWineRackTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/DrawObliqueWineRackTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIlD,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAwC,eAAe,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAS,MAAM,mBAAmB,CAAC;AAI5D,MAAM,WAAW,aAAa;IAE1B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAEpB;AACD,MAAM,WAAW,WAAW;IAExB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,QAAO,CAAC;AAElC;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAEzD,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe;IAsGjD,OAAO,CAAC,YAAY;IAKpB,0BAA0B;IAC1B,OAAO,CAAC,WAAW;IAQnB,cAAc;IACd,OAAO,CAAC,WAAW;IAiBnB,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAiD/B,OAAO,CAAC,uBAAuB;IAoC/B,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE;;;;IAclF,eAAe;IACf,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;IAc9E,cAAc;IACd,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;IAgDrD,eAAe,CAAC,KAAK,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,aAAa,EAAE,EAC5B,WAAW,EAAE,aAAa,EAAE;IA2IhC,iBAAiB;IACjB,OAAO,CAAC,wBAAwB;IA8BhC,gBAAgB;IAChB,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAkB3F,OAAO,CAAC,aAAa;IAsHrB,UAAU;IACV,OAAO,CAAC,WAAW;IAyEnB,gBAAgB;IAChB,OAAO,CAAC,WAAW;CA8EtB"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts b/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts new file mode 100644 index 0000000..76eaca6 --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts @@ -0,0 +1,13 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { IWineRackOption } from "../../UI/Store/WineRackInterface"; +import { DrawWineRackTool } from "./DrawWinRackTool"; +/** + * 正酒格 + */ +export declare class DrawUprightWineRackTool extends DrawWineRackTool { + Parse(space: ISpaceParse, config: IWineRackOption): void; + BuildBoard(gripHeight: number, spaceWidth: number, spaceHeight: number, space: ISpaceParse): void; + ParseBrTooth(br: Board, gripHeight?: number): void; +} +//# sourceMappingURL=DrawUprightWineRackTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts.map b/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts.map new file mode 100644 index 0000000..a14605a --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawUprightWineRackTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawUprightWineRackTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/DrawUprightWineRackTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAmB,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,gBAAgB;IAEzD,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe;IA2EjD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IA6B1F,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,MAAM;CAwD9C"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts b/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts new file mode 100644 index 0000000..e1dfa47 --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts @@ -0,0 +1,19 @@ +import { Singleton } from "../../Common/Singleton"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { IWineRackOption } from "../../UI/Store/WineRackInterface"; +export declare const SIN45: number; +export declare class DrawWineRackTool extends Singleton { + private _config; + protected space: ISpaceParse; + boardlist: Board[]; + get Config(): IWineRackOption; + Parse(space: ISpaceParse, config: IWineRackOption): void; + /** 拾取空间周围的板件柜名房名等信息*/ + protected GetBoardProcessOption(br: Board): void; + /**分析高级封边数据 */ + protected ParseHighSealing(br: Board, leftSealed: number, rightSealed: number, topSealed: number, downSealed: number, isLeft: boolean): void; + /**补板 */ + protected AddLayerOrVerticalBoard(actWidth: number, actHeight: number): void; +} +//# sourceMappingURL=DrawWinRackTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts.map b/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts.map new file mode 100644 index 0000000..c446d5f --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawWinRackTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawWinRackTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/DrawWinRackTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAwC,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGzG,eAAO,MAAM,KAAK,QAAwB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,SAAS;IAE3C,OAAO,CAAC,OAAO,CAAkB;IACjC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,KAAK,EAAE,CAAM;IAC/B,IAAI,MAAM,oBAGT;IACD,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe;IAsBjD,sBAAsB;IACtB,SAAS,CAAC,qBAAqB,CAAC,EAAE,EAAE,KAAK;IAUzC,cAAc;IACd,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAyCrI,QAAQ;IACR,SAAS,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CA8DxE"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawWineRack.d.ts b/types/Add-on/DrawWineRack/DrawWineRack.d.ts new file mode 100644 index 0000000..797cd19 --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawWineRack.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawWineRack implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawWineRack.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/DrawWineRack.d.ts.map b/types/Add-on/DrawWineRack/DrawWineRack.d.ts.map new file mode 100644 index 0000000..df30014 --- /dev/null +++ b/types/Add-on/DrawWineRack/DrawWineRack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawWineRack.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/DrawWineRack.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CAgBb"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/EditorWineRack.d.ts b/types/Add-on/DrawWineRack/EditorWineRack.d.ts new file mode 100644 index 0000000..82cb014 --- /dev/null +++ b/types/Add-on/DrawWineRack/EditorWineRack.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class EditorWineRack implements Command { + exec(): Promise; +} +//# sourceMappingURL=EditorWineRack.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/EditorWineRack.d.ts.map b/types/Add-on/DrawWineRack/EditorWineRack.d.ts.map new file mode 100644 index 0000000..23f7232 --- /dev/null +++ b/types/Add-on/DrawWineRack/EditorWineRack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EditorWineRack.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/EditorWineRack.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CAUb"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts b/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts new file mode 100644 index 0000000..e92b2ff --- /dev/null +++ b/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Polyline2Winerack implements Command { + exec(): Promise; + private Classify; +} +//# sourceMappingURL=Polyline2Winerack.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts.map b/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts.map new file mode 100644 index 0000000..3e4990f --- /dev/null +++ b/types/Add-on/DrawWineRack/Polyline2Winerack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Polyline2Winerack.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/Polyline2Winerack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAgBtD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;IA6FV,OAAO,CAAC,QAAQ;CAwDnB"} \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts b/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts new file mode 100644 index 0000000..0ddc9b4 --- /dev/null +++ b/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts @@ -0,0 +1,8 @@ +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { IR2WROption } from "../../UI/Store/WineRackInterface"; +import { DrawObliqueWineRackTool } from "./DrawObliqueWineRackTool"; +export declare class Rect2WinerackTool extends DrawObliqueWineRackTool { + ParseFromRects(pls: Polyline[], space: ISpaceParse, config: IR2WROption): void; +} +//# sourceMappingURL=Rect2WinerackTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts.map b/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts.map new file mode 100644 index 0000000..7878015 --- /dev/null +++ b/types/Add-on/DrawWineRack/Rect2WinerackTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rect2WinerackTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/DrawWineRack/Rect2WinerackTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,iBAAkB,SAAQ,uBAAuB;IAE1D,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW;CAM1E"} \ No newline at end of file diff --git a/types/Add-on/DrawZeroCircle.d.ts b/types/Add-on/DrawZeroCircle.d.ts new file mode 100644 index 0000000..b386eb1 --- /dev/null +++ b/types/Add-on/DrawZeroCircle.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class DrawCircle0 implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawZeroCircle.d.ts.map \ No newline at end of file diff --git a/types/Add-on/DrawZeroCircle.d.ts.map b/types/Add-on/DrawZeroCircle.d.ts.map new file mode 100644 index 0000000..3796579 --- /dev/null +++ b/types/Add-on/DrawZeroCircle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawZeroCircle.d.ts","sourceRoot":"","sources":["../../../src/Add-on/DrawZeroCircle.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAeb"} \ No newline at end of file diff --git a/types/Add-on/EndTempEditor.d.ts b/types/Add-on/EndTempEditor.d.ts new file mode 100644 index 0000000..e717d7d --- /dev/null +++ b/types/Add-on/EndTempEditor.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_EndTempEditor implements Command { + exec(): Promise; +} +//# sourceMappingURL=EndTempEditor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/EndTempEditor.d.ts.map b/types/Add-on/EndTempEditor.d.ts.map new file mode 100644 index 0000000..ab04f55 --- /dev/null +++ b/types/Add-on/EndTempEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EndTempEditor.d.ts","sourceRoot":"","sources":["../../../src/Add-on/EndTempEditor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAcb"} \ No newline at end of file diff --git a/types/Add-on/EntityMoveToZ0.d.ts b/types/Add-on/EntityMoveToZ0.d.ts new file mode 100644 index 0000000..1c2f8da --- /dev/null +++ b/types/Add-on/EntityMoveToZ0.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_EntitytMoveToZ0 implements Command { + exec(): Promise; +} +//# sourceMappingURL=EntityMoveToZ0.d.ts.map \ No newline at end of file diff --git a/types/Add-on/EntityMoveToZ0.d.ts.map b/types/Add-on/EntityMoveToZ0.d.ts.map new file mode 100644 index 0000000..2eaec7a --- /dev/null +++ b/types/Add-on/EntityMoveToZ0.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EntityMoveToZ0.d.ts","sourceRoot":"","sources":["../../../src/Add-on/EntityMoveToZ0.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CASb"} \ No newline at end of file diff --git a/types/Add-on/Entsel.d.ts b/types/Add-on/Entsel.d.ts new file mode 100644 index 0000000..1606067 --- /dev/null +++ b/types/Add-on/Entsel.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Entsel implements Command { + exec(): Promise; +} +//# sourceMappingURL=Entsel.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Entsel.d.ts.map b/types/Add-on/Entsel.d.ts.map new file mode 100644 index 0000000..7bf98dd --- /dev/null +++ b/types/Add-on/Entsel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Entsel.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Entsel.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQnD,qBAAa,MAAO,YAAW,OAAO;IAE5B,IAAI;CAqFb"} \ No newline at end of file diff --git a/types/Add-on/Erase.d.ts b/types/Add-on/Erase.d.ts new file mode 100644 index 0000000..7aabc7f --- /dev/null +++ b/types/Add-on/Erase.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_Erase implements Command { + exec(): Promise; +} +//# sourceMappingURL=Erase.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erase.d.ts.map b/types/Add-on/Erase.d.ts.map new file mode 100644 index 0000000..54d75bb --- /dev/null +++ b/types/Add-on/Erase.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Erase.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Erase.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAkCb"} \ No newline at end of file diff --git a/types/Add-on/EraseLineAndArc.d.ts b/types/Add-on/EraseLineAndArc.d.ts new file mode 100644 index 0000000..7bcee0a --- /dev/null +++ b/types/Add-on/EraseLineAndArc.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_EraseLineAndArc implements Command { + exec(): Promise; +} +//# sourceMappingURL=EraseLineAndArc.d.ts.map \ No newline at end of file diff --git a/types/Add-on/EraseLineAndArc.d.ts.map b/types/Add-on/EraseLineAndArc.d.ts.map new file mode 100644 index 0000000..e4e158f --- /dev/null +++ b/types/Add-on/EraseLineAndArc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EraseLineAndArc.d.ts","sourceRoot":"","sources":["../../../src/Add-on/EraseLineAndArc.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CAQb"} \ No newline at end of file diff --git a/types/Add-on/EraseNoSelect.d.ts b/types/Add-on/EraseNoSelect.d.ts new file mode 100644 index 0000000..a5ce1a0 --- /dev/null +++ b/types/Add-on/EraseNoSelect.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_EraseNoSelect implements Command { + exec(): Promise; +} +//# sourceMappingURL=EraseNoSelect.d.ts.map \ No newline at end of file diff --git a/types/Add-on/EraseNoSelect.d.ts.map b/types/Add-on/EraseNoSelect.d.ts.map new file mode 100644 index 0000000..b97d60e --- /dev/null +++ b/types/Add-on/EraseNoSelect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EraseNoSelect.d.ts","sourceRoot":"","sources":["../../../src/Add-on/EraseNoSelect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAYb"} \ No newline at end of file diff --git a/types/Add-on/Erp/ErpCommands.d.ts b/types/Add-on/Erp/ErpCommands.d.ts new file mode 100644 index 0000000..b912bdf --- /dev/null +++ b/types/Add-on/Erp/ErpCommands.d.ts @@ -0,0 +1,21 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity"; +import { HardwareTopline } from "../../DatabaseServices/Hardware/HardwareTopline"; +import { Command } from "../../Editor/CommandMachine"; +export declare class ChaiDan implements Command { + exec(): Promise; +} +export declare class ChaiDanJB implements Command { + exec(): Promise; +} +export declare class ShoWYouHua implements Command { + exec(): Promise; +} +export declare class Decompose implements Command { + exec(): Promise; +} +export declare function GetProductsEntitys(): Promise<{ + boardList: Board[]; + metalsList: (HardwareCompositeEntity | HardwareTopline)[]; +}>; +//# sourceMappingURL=ErpCommands.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/ErpCommands.d.ts.map b/types/Add-on/Erp/ErpCommands.d.ts.map new file mode 100644 index 0000000..957e4ce --- /dev/null +++ b/types/Add-on/Erp/ErpCommands.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ErpCommands.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/ErpCommands.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAiBtD,qBAAa,OAAQ,YAAW,OAAO;IAE7B,IAAI;CAIb;AACD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CAIb;AACD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CAYb;AACD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CAIb;AAsMD,wBAAsB,kBAAkB;;;GA8CvC"} \ No newline at end of file diff --git a/types/Add-on/Erp/ErpView.d.ts b/types/Add-on/Erp/ErpView.d.ts new file mode 100644 index 0000000..b9a89f0 --- /dev/null +++ b/types/Add-on/Erp/ErpView.d.ts @@ -0,0 +1,27 @@ +import * as React from "react"; +import { BoardStore } from "../../UI/Store/BoardStore"; +import { OrderDataBlock } from "./Models/CadBlock"; +import { OrderDataObject, ProcessGroupObject } from "./Models/CadObject"; +import { ErpRouteInfo } from "./Models/ErpRouteInfo"; +interface ErpViewProp { + erpRoute: ErpRouteInfo; + session: string; + token: string; + cadData: { + blockList: OrderDataBlock[]; + objectList: OrderDataObject[]; + processGroupList: ProcessGroupObject[]; + }; + store: BoardStore; +} +export declare class ErpView extends React.Component { + iframe: React.RefObject; + constructor(props: any); + postMessage: (command: string, content?: any) => void; + iframeLoaded: () => void; + private closeEvent; + render(): JSX.Element; + componentWillUnmount(): void; +} +export {}; +//# sourceMappingURL=ErpView.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/ErpView.d.ts.map b/types/Add-on/Erp/ErpView.d.ts.map new file mode 100644 index 0000000..3eae83d --- /dev/null +++ b/types/Add-on/Erp/ErpView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ErpView.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/ErpView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,UAAU,WAAW;IAEjB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,EAAE,CAAC;QAAC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;KAAE,CAAC;IACjH,KAAK,EAAE,UAAU,CAAC;CACrB;AACD,qBAAa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;IACzD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,KAAK,KAAA;IAKjB,WAAW,YAAa,MAAM,YAAW,GAAG,UA2B1C;IACF,YAAY,aAqBV;IACF,OAAO,CAAC,UAAU,CAQhB;IACF,MAAM;IA8BN,oBAAoB;CAIvB"} \ No newline at end of file diff --git a/types/Add-on/Erp/ExceedBlocksMind.d.ts b/types/Add-on/Erp/ExceedBlocksMind.d.ts new file mode 100644 index 0000000..45130c9 --- /dev/null +++ b/types/Add-on/Erp/ExceedBlocksMind.d.ts @@ -0,0 +1,14 @@ +import { OrderDataBlock } from "./Models/CadBlock"; +import { BoardStore } from "../../UI/Store/BoardStore"; +import * as React from "react"; +interface ExceedMindProp { + exceedBlcks: OrderDataBlock[]; + mindInfo: string; + store: BoardStore; +} +export declare class ExceedMind extends React.Component { + constructor(props: any); + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ExceedBlocksMind.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/ExceedBlocksMind.d.ts.map b/types/Add-on/Erp/ExceedBlocksMind.d.ts.map new file mode 100644 index 0000000..a6663e9 --- /dev/null +++ b/types/Add-on/Erp/ExceedBlocksMind.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExceedBlocksMind.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/ExceedBlocksMind.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAY,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,UAAU,cAAc;IAEpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACrB;AACD,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;gBACnD,KAAK,KAAA;IAIjB,MAAM;CAkDT"} \ No newline at end of file diff --git a/types/Add-on/Erp/HostURL.d.ts b/types/Add-on/Erp/HostURL.d.ts new file mode 100644 index 0000000..d192c5a --- /dev/null +++ b/types/Add-on/Erp/HostURL.d.ts @@ -0,0 +1,4 @@ +export declare const ErpURL: { + host: string; +}; +//# sourceMappingURL=HostURL.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/HostURL.d.ts.map b/types/Add-on/Erp/HostURL.d.ts.map new file mode 100644 index 0000000..d67e7b9 --- /dev/null +++ b/types/Add-on/Erp/HostURL.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HostURL.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/HostURL.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;CAElB,CAAC"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadBlock.d.ts b/types/Add-on/Erp/Models/CadBlock.d.ts new file mode 100644 index 0000000..f8affb4 --- /dev/null +++ b/types/Add-on/Erp/Models/CadBlock.d.ts @@ -0,0 +1,90 @@ +export declare class OrderDataBlock { + ID: number; + BoardName: string; + BoardType: BoardType; + BlockID: number; + Width: number; + Height: number; + Thickness: number; + SpliteWidth: number; + SpliteHeight: number; + SpliteThickness: number; + SealedLeft: number; + SealedRight: number; + SealedUp: number; + SealedDown: number; + Area: number; + Wave: WaveType; + HoleFace: FaceType; + PaiKong: PaiKongType; + RemarkID: number; + RemarkJson: string; + UnRegularPointCount: number; + IsHXDJX: boolean; + FrontHoleCount: number; + BackHoleCount: number; + SideHoleCount: number; + FrontModelCount: number; + BackModelCount: number; + IsDoor: boolean; + OpenDoorType: number; + CadDataType: CadType; + CadData: string; + ModuleID: number; + BorderLengthHeavy: number; + BorderLengthLight: number; + ModuleTypeName: string; + ModuleName: string; + RoomName: string; + BoxName: string; + ModuleWidth: number; + ModuleHeight: number; + ModuleDepth: number; + BoxWidth: number; + BoxHeight: number; + BoxDepth: number; + BlockName: number; + GoodsID: number; + Material: string; + MaterialName: string; + Color: string; + ObjIDs: BlockObjIds; + KaiLiaoWidth: number; + KaiLiaoHeight: number; + RemarkExtra: string; +} +export declare enum CadType { + Cad = 1, + WebCad = 2 +} +export declare class BlockObjIds { + BlockID: number; + BID: string; + ObjIDs: string; +} +export declare enum BoardType { + Layer = 0, + Vertical = 1, + Behind = 2 +} +export declare enum WaveType { + 正纹 = 0, + 可翻转 = 1, + 反纹 = 2 +} +export declare enum FaceType { + 正面 = 0, + 反面 = 1, + 侧面 = 2 +} +export declare enum HoleFaceType { + 正面 = 0, + 反面 = 1, + 侧面 = 2 +} +export declare enum PaiKongType { + 正面 = 0, + 反面 = 1, + 随意面 = 2 +} +//# sourceMappingURL=CadBlock.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadBlock.d.ts.map b/types/Add-on/Erp/Models/CadBlock.d.ts.map new file mode 100644 index 0000000..635a26c --- /dev/null +++ b/types/Add-on/Erp/Models/CadBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CadBlock.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/CadBlock.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IAEvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAK;IACvB,WAAW,EAAE,MAAM,CAAK;IACxB,QAAQ,EAAE,MAAM,CAAK;IACrB,UAAU,EAAE,MAAM,CAAK;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;IAGhB,WAAW,EAAE,MAAM,CAAC;IAGpB,YAAY,EAAE,MAAM,CAAC;IAGrB,WAAW,EAAE,MAAM,CAAC;IAEpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,CAAC;IAGlB,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACvB;AACD,oBAAY,OAAO;IAEf,GAAG,IAAI;IACP,MAAM,IAAI;CACb;AACD,qBAAa,WAAW;IAEpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,SAAS;IAEjB,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;AACD,oBAAY,QAAQ;IAEhB,EAAE,IAAI;IACN,GAAG,IAAI;IACP,EAAE,IAAI;CACT;AACD,oBAAY,QAAQ;IAEhB,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;CACT;AACD,oBAAY,YAAY;IAEpB,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;CACT;AACD,oBAAY,WAAW;IAEnB,EAAE,IAAI;IACN,EAAE,IAAI;IACN,GAAG,IAAI;CACV"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadBlockInfo.d.ts b/types/Add-on/Erp/Models/CadBlockInfo.d.ts new file mode 100644 index 0000000..947d01f --- /dev/null +++ b/types/Add-on/Erp/Models/CadBlockInfo.d.ts @@ -0,0 +1,78 @@ +export declare class CadBlockPoint { + PointID: number; + PointX: number; + PointY: number; + Curve: number; + SealSize: number; +} +export declare class CadBlockHoles { + HoleID: number; + HoleType: HoleType; + Face: FaceType; + PointX: number; + PointY: number; + PointZ: number; + Radius: number; + Depth: number; + EndPoint: string; + PointX2: number; + PointY2: number; + Angle?: number; +} +export declare enum HoleType { + 大孔 = 0, + 小孔 = 10, + 木削 = 20, + 木削大孔 = 21, + 层板钉 = 30, + 通孔 = 40, + 连接杆 = 50, + 造型孔 = -10 +} +export declare enum FaceType { + 正面 = 0, + 反面 = 1, + 侧面 = 2 +} +export declare class CadBlockModel { + ModelID: number; + LineID: number; + Face: FaceType; + KnifeName: string; + KnifeRadius: number; + Depth: number; + PointList: CadBlockModelPoint[]; + OffSetList: ModelOffSetData[]; +} +export declare class ModelOffSetData { + Name: string; + Face: FaceType; + Value: number; + Radius: number; + Deep: number; + Angle: number; +} +export declare class CadBlockModelPoint { + LineID: number; + PointID: number; + PointX: number; + PointY: number; + Radius: number; + Depth: number; + Curve: number; +} +export declare class BasePosition { + BasePoint: string; + XVec: string; + YVec: string; + ZVec: string; +} +export declare class CadBlockInfo { + PointDetail: CadBlockPoint[]; + HoleDetail: CadBlockHoles[]; + ModelDetail: CadBlockModel[]; + OrgPointDetail: CadBlockPoint[]; + SideModelDetail: CadBlockModel[]; + SideHoleDetail: CadBlockHoles[]; +} +//# sourceMappingURL=CadBlockInfo.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadBlockInfo.d.ts.map b/types/Add-on/Erp/Models/CadBlockInfo.d.ts.map new file mode 100644 index 0000000..1e95d80 --- /dev/null +++ b/types/Add-on/Erp/Models/CadBlockInfo.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CadBlockInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/CadBlockInfo.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IAEtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,qBAAa,aAAa;IAEtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,oBAAY,QAAQ;IAAG,EAAE,IAAI;IAAE,EAAE,KAAK;IAAE,EAAE,KAAK;IAAE,IAAI,KAAK;IAAE,GAAG,KAAK;IAAE,EAAE,KAAK;IAAE,GAAG,KAAK;IAAE,GAAG,MAAM;CAAE;AACpG,oBAAY,QAAQ;IAAG,EAAE,IAAI;IAAE,EAAE,IAAI;IAAE,EAAE,IAAI;CAAE;AAG/C,qBAAa,aAAa;IAEtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;CACjC;AACD,qBAAa,eAAe;IAExB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,kBAAkB;IAE3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AACD,qBAAa,YAAY;IAErB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AACD,qBAAa,YAAY;IAErB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,cAAc,EAAE,aAAa,EAAE,CAAC;CACnC"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadModel.d.ts b/types/Add-on/Erp/Models/CadModel.d.ts new file mode 100644 index 0000000..6cb0991 --- /dev/null +++ b/types/Add-on/Erp/Models/CadModel.d.ts @@ -0,0 +1,31 @@ +import { Vec2 } from "three"; +export declare class CADDbBoard { + L: number; + W: number; + H: number; + CabName: string; + BoardName: string; + BasePoint: CadBlockBasePosition; + XVec: CadBlockBasePosition; + YVec: CadBlockBasePosition; + ZVec: CadBlockBasePosition; + Grain: number; + Pts: Vec2[]; + Buls: number[]; + SubBoardLocal: CADDbBoard[]; + SubBoardAssoc: CADDbBoard[]; + Drillings: CadBlockDrillings[]; +} +export declare class CadBlockBasePosition { + x: number; + y: number; + z: number; +} +export declare class CadBlockDrillings { + x: number; + y: number; + r: number; + h: number; + f: number; +} +//# sourceMappingURL=CadModel.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadModel.d.ts.map b/types/Add-on/Erp/Models/CadModel.d.ts.map new file mode 100644 index 0000000..af2a0a9 --- /dev/null +++ b/types/Add-on/Erp/Models/CadModel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CadModel.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/CadModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,qBAAa,UAAU;IAEnB,CAAC,EAAE,MAAM,CAAK;IACd,CAAC,EAAE,MAAM,CAAK;IACd,CAAC,EAAE,MAAM,CAAK;IACd,OAAO,EAAE,MAAM,CAAM;IACrB,SAAS,SAAM;IACf,SAAS,EAAE,oBAAoB,CAAQ;IACvC,IAAI,EAAE,oBAAoB,CAAQ;IAClC,IAAI,EAAE,oBAAoB,CAAQ;IAClC,IAAI,EAAE,oBAAoB,CAAQ;IAClC,KAAK,EAAE,MAAM,CAAK;IAClB,GAAG,EAAE,IAAI,EAAE,CAAQ;IACnB,IAAI,EAAE,MAAM,EAAE,CAAQ;IACtB,aAAa,EAAE,UAAU,EAAE,CAAQ;IACnC,aAAa,EAAE,UAAU,EAAE,CAAQ;IACnC,SAAS,EAAE,iBAAiB,EAAE,CAAQ;CACzC;AACD,qBAAa,oBAAoB;IAE7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AACD,qBAAa,iBAAiB;IAE1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadObject.d.ts b/types/Add-on/Erp/Models/CadObject.d.ts new file mode 100644 index 0000000..9932da6 --- /dev/null +++ b/types/Add-on/Erp/Models/CadObject.d.ts @@ -0,0 +1,43 @@ +import { Vector3 } from "three"; +export declare class OrderDataObject { + ID: number; + IsOffer: boolean; + ParentID: number; + Name: string; + ObjectID: number; + ObjectType: string; + Model: string; + Spec: string; + Brand: string; + Factory: string; + Units: string; + CostPrice: number; + SalePrice: number; + ModuleTypeName: string; + ModuleName: string; + ModuleID: number; + RoomName: string; + BoxName: string; + Num: number; + IsComposite: boolean; + ModuleWidth: number; + ModuleHeight: number; + ModuleDepth: number; + Remark: string; + GroupKey: string; + Size: Vector3; +} +export declare class ProcessGroupObject { + type: string; + projects: ProcessGroupProjObject[]; +} +export declare class ProcessGroupProjObject { + projName: string; + brIds: number[]; + boxSize: { + width: number; + height: number; + depth: number; + }; +} +//# sourceMappingURL=CadObject.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/CadObject.d.ts.map b/types/Add-on/Erp/Models/CadObject.d.ts.map new file mode 100644 index 0000000..8e5b61f --- /dev/null +++ b/types/Add-on/Erp/Models/CadObject.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CadObject.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/CadObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,qBAAa,eAAe;IAExB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAS;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,OAAO,CAAS;IAC7B,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,WAAW,SAAK;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACjB;AACD,qBAAa,kBAAkB;IAG3B,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACtC;AACD,qBAAa,sBAAsB;IAG/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;KAAE,CAAC;CAC9D"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/ErpRouteInfo.d.ts b/types/Add-on/Erp/Models/ErpRouteInfo.d.ts new file mode 100644 index 0000000..4fbbf6b --- /dev/null +++ b/types/Add-on/Erp/Models/ErpRouteInfo.d.ts @@ -0,0 +1,9 @@ +import { ErpRoutes } from "./ErpRoutes"; +export declare class ErpRouteInfo { + RouteType: ErpRoutes; + RouteName: string; + TitleName: string; + FrameWidth: number; + FrameHeight: number; +} +//# sourceMappingURL=ErpRouteInfo.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/ErpRouteInfo.d.ts.map b/types/Add-on/Erp/Models/ErpRouteInfo.d.ts.map new file mode 100644 index 0000000..492cd56 --- /dev/null +++ b/types/Add-on/Erp/Models/ErpRouteInfo.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ErpRouteInfo.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/ErpRouteInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,qBAAa,YAAY;IAErB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB"} \ No newline at end of file diff --git a/types/Add-on/Erp/Models/ErpRoutes.d.ts b/types/Add-on/Erp/Models/ErpRoutes.d.ts new file mode 100644 index 0000000..887a0ac --- /dev/null +++ b/types/Add-on/Erp/Models/ErpRoutes.d.ts @@ -0,0 +1,8 @@ +export declare enum ErpRoutes { + 拆单 = 1, + 拆单优化 = 2, + 优化查看 = 3, + 成倍拆单 = 4, + 组件拆解 = 5 +} +//# sourceMappingURL=ErpRoutes.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/Models/ErpRoutes.d.ts.map b/types/Add-on/Erp/Models/ErpRoutes.d.ts.map new file mode 100644 index 0000000..efe2307 --- /dev/null +++ b/types/Add-on/Erp/Models/ErpRoutes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ErpRoutes.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/Erp/Models/ErpRoutes.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IAEjB,EAAE,IAAI;IACN,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;IACR,IAAI,IAAI;CACX"} \ No newline at end of file diff --git a/types/Add-on/Erp/ParseData.d.ts b/types/Add-on/Erp/ParseData.d.ts new file mode 100644 index 0000000..cdb3adf --- /dev/null +++ b/types/Add-on/Erp/ParseData.d.ts @@ -0,0 +1,64 @@ +import { GangDrillType } from "../../DatabaseServices/3DSolid/CylinderHole"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude"; +import { IContourData, IDrillingOption, IModelingData, ISpliteOrderData, IHardwareType, ISealingData, I2DModeling, I3DModeling, I3DContourData } from '../../Production/Product'; +import { FaceDirection, LinesType } from "../../UI/Store/BoardInterface"; +import { OrderDataBlock, WaveType } from "./Models/CadBlock"; +import { BasePosition, CadBlockHoles, CadBlockInfo, CadBlockModel, CadBlockModelPoint, CadBlockPoint, FaceType, HoleType, ModelOffSetData } from "./Models/CadBlockInfo"; +import { CadBlockBasePosition, CadBlockDrillings, CADDbBoard } from "./Models/CadModel"; +import { OrderDataObject, ProcessGroupObject } from "./Models/CadObject"; +import { Vec2 } from "three"; +import { ICountType } from "../LookOverBoardInfos/LookOverBoardInfosTool"; +declare enum FrontOrSide { + 正面反面 = 0, + 侧面 = 1 +} +export declare class ErpParseData { + GetCadData(boardList: Board[], metalsList: IHardwareType[]): { + blockList: OrderDataBlock[]; + objectList: OrderDataObject[]; + processGroupObjectList: ProcessGroupObject[]; + }; + DecomposeObject(metalsList: IHardwareType[]): OrderDataObject[]; + GetNumberBit(value: number, bit: number): number; + GetWave(wave: LinesType): WaveType; + GetPointDetail(points: IContourData, seals: ISealingData[]): CadBlockPoint[]; + GetModelDetail(DataArray: IModelingData[], frontOrSide: FrontOrSide, isRect?: Boolean, add?: number): CadBlockModel[]; + GetModelPointDetail(feeding: IContourData, lineID: number, deep: number): CadBlockModelPoint[]; + GetOffSetModelDetail(modeling: I2DModeling[], modelID: number): CadBlockModel[]; + GetModelOffSetData(md: I2DModeling): ModelOffSetData[]; + Get3DModelDetail(modeling: I3DModeling[], modelID: number): CadBlockModel[]; + Get3DModelPointDetail(paths: I3DContourData, lineID: number): CadBlockModelPoint[]; + GetHolesDetail(holes: IDrillingOption[], frontOrSide: FrontOrSide, isRect?: Boolean, add?: number): CadBlockHoles[]; + GetHoleType(hole: GangDrillType): HoleType; + GetHoleFaceType(frontOrSide: FrontOrSide, hole: IDrillingOption): FaceType | number; + GetModelFaceType(frontOrSide: FrontOrSide, dir: FaceDirection | number): FaceType | number; + GetBlockPointInfo(board: ISpliteOrderData): CadBlockInfo; + /** + * 板件的模型信息,用于CADViewer显示板件 + */ + GetModelData(br: ExtrudeSolid): CADDbBoard; + GetFaceAdd(point: Vec2): number; + GetRemark(remarks: [string, string][], filter: (block: [string, string]) => boolean): [string, string][]; + GetAllDrillsObjects(boardList: Board[]): OrderDataObject[]; + GetDrillObjects(drills: ICountType[], RoomName: string, BoxName: string): OrderDataObject[]; + GetOrderTopLines(hardWares: IHardwareType[]): OrderDataObject[]; + GetOrderSealing(boardList: Board[]): OrderDataObject[]; + GetPointsArray(points: CadBlockPoint[]): number[][]; + GetHolesArray(holes: CadBlockHoles[]): (string | number)[][]; + GetModelsArray(models: CadBlockModel[]): (string | number | (string | number)[][])[][]; + GetModelPointsArray(points: CadBlockModelPoint[]): number[][]; + GetModelOffSetsArray(offsets: ModelOffSetData[]): (string | number)[][]; + GetBasePointArray(info: BasePosition): [string, string, string, string]; + GetPointInfoArray(info: CadBlockInfo): [object, object, object, object, object, object]; + GetBasePositionArray(basePosition: CadBlockBasePosition): [number, number, number]; + GetBasePositionListArray(basePositionList: CadBlockBasePosition[]): [number, number, number][]; + GetVec2ListArray(pointList: Vec2[]): [number, number][]; + GetVec2Array(point: Vec2): [number, number]; + GetDrillingsArray(drillings: CadBlockDrillings): number[]; + GetDrillingsListArray(drillingsList: CadBlockDrillings[]): number[][]; + GetCadModelArray(CADDbBoardList: CADDbBoard[]): any; + groupBy(data: any[], fileds: string[]): any[]; +} +export {}; +//# sourceMappingURL=ParseData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/ParseData.d.ts.map b/types/Add-on/Erp/ParseData.d.ts.map new file mode 100644 index 0000000..33a0547 --- /dev/null +++ b/types/Add-on/Erp/ParseData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseData.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/ParseData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAkB,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErE,OAAO,EAAgB,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAc,aAAa,EAAE,YAAY,EAAuB,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAChO,OAAO,EAAE,aAAa,EAAE,SAAS,EAAgB,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAW,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzK,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAIjG,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAkB,UAAU,EAA0B,MAAM,8CAA8C,CAAC;AAUlH,aAAK,WAAW;IAEZ,IAAI,IAAI;IACR,EAAE,IAAI;CACT;AACD,qBAAa,YAAY;IAErB,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG;QAAE,SAAS,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,EAAE,eAAe,EAAE,CAAC;QAAC,sBAAsB,EAAE,kBAAkB,EAAE,CAAC;KAAE;IAmQ1K,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE;IAW3C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAMhD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,QAAQ;IAqBlC,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE;IAuB5E,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAE,OAAe,EAAE,GAAG,GAAE,MAAU,GAAG,aAAa,EAAE;IAiC/H,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE;IA6B9F,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM;IAoB7D,kBAAkB,CAAC,EAAE,EAAE,WAAW;IAgBlC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM;IAkBzD,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAmBlF,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAE,OAAe,EAAE,GAAG,GAAE,MAAU,GAAG,aAAa,EAAE;IAgC7H,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ;IAsB1C,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM;IAwBnF,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;IAwB1F,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY;IA8BxD;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,YAAY,GAAG,UAAU;IAsC1C,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAwB/B,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO;IAQnF,mBAAmB,CAAC,SAAS,EAAE,KAAK,EAAE;IAkBtC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAgBvE,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE;IA+B3C,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,eAAe,EAAE;IAqCtD,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE;IAOtC,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE;IAOpC,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE;IAOtC,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,EAAE,EAAE;IAQ7D,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE;IAQ/C,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIvE,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIvF,oBAAoB,CAAC,YAAY,EAAE,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAIlF,wBAAwB,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;IAQ9F,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAQvD,YAAY,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAI3C,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAIzD,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,EAAE,GAAG,MAAM,EAAE,EAAE;IAQrE,gBAAgB,CAAC,cAAc,EAAE,UAAU,EAAE;IAS7C,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;CAkBxC"} \ No newline at end of file diff --git a/types/Add-on/Erp/ParseParts.d.ts b/types/Add-on/Erp/ParseParts.d.ts new file mode 100644 index 0000000..10b5a5a --- /dev/null +++ b/types/Add-on/Erp/ParseParts.d.ts @@ -0,0 +1,4 @@ +import { OrderDataObject } from "./Models/CadObject"; +import { ISpliteHardwareData } from '../../Production/Product'; +export declare function parseParts(spliteData: ISpliteHardwareData, list: OrderDataObject[], parent?: OrderDataObject): void; +//# sourceMappingURL=ParseParts.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Erp/ParseParts.d.ts.map b/types/Add-on/Erp/ParseParts.d.ts.map new file mode 100644 index 0000000..72cc2f7 --- /dev/null +++ b/types/Add-on/Erp/ParseParts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseParts.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Erp/ParseParts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,wBAAgB,UAAU,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,MAAM,GAAE,eAAsB,QAsElH"} \ No newline at end of file diff --git a/types/Add-on/Esc.d.ts b/types/Add-on/Esc.d.ts new file mode 100644 index 0000000..5a320e7 --- /dev/null +++ b/types/Add-on/Esc.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Esc implements Command { + exec(): Promise; +} +//# sourceMappingURL=Esc.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Esc.d.ts.map b/types/Add-on/Esc.d.ts.map new file mode 100644 index 0000000..1d97eda --- /dev/null +++ b/types/Add-on/Esc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Esc.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Esc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/Explode.d.ts b/types/Add-on/Explode.d.ts new file mode 100644 index 0000000..fb166a0 --- /dev/null +++ b/types/Add-on/Explode.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_Explode implements Command { + exec(): Promise; +} +//# sourceMappingURL=Explode.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Explode.d.ts.map b/types/Add-on/Explode.d.ts.map new file mode 100644 index 0000000..6cbbbf7 --- /dev/null +++ b/types/Add-on/Explode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Explode.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Explode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA6Bb"} \ No newline at end of file diff --git a/types/Add-on/ExplosionMap.d.ts b/types/Add-on/ExplosionMap.d.ts new file mode 100644 index 0000000..c06b233 --- /dev/null +++ b/types/Add-on/ExplosionMap.d.ts @@ -0,0 +1,10 @@ +/// +import { Command } from "../Editor/CommandMachine"; +import { Vector3, Object3D } from "three"; +export declare class Command_ExplosionMap implements Command { + timer: NodeJS.Timeout; + moveObjs: [Object3D, Vector3][]; + count: number; + exec(): Promise; +} +//# sourceMappingURL=ExplosionMap.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ExplosionMap.d.ts.map b/types/Add-on/ExplosionMap.d.ts.map new file mode 100644 index 0000000..7d7e14e --- /dev/null +++ b/types/Add-on/ExplosionMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExplosionMap.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ExplosionMap.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAS1C,qBAAa,oBAAqB,YAAW,OAAO;IAEhD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAM;IACrC,KAAK,SAAK;IACJ,IAAI;CAwEb"} \ No newline at end of file diff --git a/types/Add-on/Export2View.d.ts b/types/Add-on/Export2View.d.ts new file mode 100644 index 0000000..e2e8215 --- /dev/null +++ b/types/Add-on/Export2View.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_ExportView implements Command { + exec(): Promise; +} +//# sourceMappingURL=Export2View.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Export2View.d.ts.map b/types/Add-on/Export2View.d.ts.map new file mode 100644 index 0000000..e63fd3b --- /dev/null +++ b/types/Add-on/Export2View.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Export2View.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Export2View.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA8Bb"} \ No newline at end of file diff --git a/types/Add-on/ExportData.d.ts b/types/Add-on/ExportData.d.ts new file mode 100644 index 0000000..cd41bde --- /dev/null +++ b/types/Add-on/ExportData.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { Command } from "../Editor/CommandMachine"; +export declare class ExportDataModal extends React.Component<{ + msg: string; +}, {}> { + private removeFuncs; + private Close; + componentDidMount(): void; + render(): JSX.Element; +} +export declare class Command_ExportData implements Command { + exec(): Promise; +} +declare type Data = { + Entitys: any[]; + Materials: Object[]; + Url?: string; +}; +export declare function Entitys2Data(ents: Entity[]): Data; +export {}; +//# sourceMappingURL=ExportData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ExportData.d.ts.map b/types/Add-on/ExportData.d.ts.map new file mode 100644 index 0000000..9146221 --- /dev/null +++ b/types/Add-on/ExportData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportData.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ExportData.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAS3D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,qBAAa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;CAAE,EAAE,EAAE,CAAC;IACtE,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,KAAK;IAIb,iBAAiB;IAajB,MAAM;CAiBT;AAED,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA8Bb;AAED,aAAK,IAAI,GAAG;IACR,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA6CjD"} \ No newline at end of file diff --git a/types/Add-on/Exports/ExportSTL.d.ts b/types/Add-on/Exports/ExportSTL.d.ts new file mode 100644 index 0000000..bb7a3ac --- /dev/null +++ b/types/Add-on/Exports/ExportSTL.d.ts @@ -0,0 +1,4 @@ +export declare class Command_ExportSTL { + exec(): Promise; +} +//# sourceMappingURL=ExportSTL.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Exports/ExportSTL.d.ts.map b/types/Add-on/Exports/ExportSTL.d.ts.map new file mode 100644 index 0000000..4bf5786 --- /dev/null +++ b/types/Add-on/Exports/ExportSTL.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportSTL.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Exports/ExportSTL.ts"],"names":[],"mappings":"AASA,qBAAa,iBAAiB;IAEpB,IAAI;CAkCb"} \ No newline at end of file diff --git a/types/Add-on/Extends.d.ts b/types/Add-on/Extends.d.ts new file mode 100644 index 0000000..005c59a --- /dev/null +++ b/types/Add-on/Extends.d.ts @@ -0,0 +1,17 @@ +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Command } from '../Editor/CommandMachine'; +import { PromptSsgetResult } from '../Editor/PromptResult'; +import { SelectSet } from '../Editor/SelectSet'; +/** + * 延伸功能 + * 命令(ex). + * + * 注意: + * 闭合的曲线仍然可以延伸,但是多段线存在闭合标志时,不延伸. + */ +export declare class Command_Extend implements Command { + exec(): Promise; + DynmicExtend(entss: PromptSsgetResult, exRefCus: Curve[]): any; + Extend(selectSet: SelectSet, exRefCus: Curve[], bDynmic?: boolean): void; +} +//# sourceMappingURL=Extends.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Extends.d.ts.map b/types/Add-on/Extends.d.ts.map new file mode 100644 index 0000000..9a215ea --- /dev/null +++ b/types/Add-on/Extends.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Extends.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Extends.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGzE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMhD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;IAoCV,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG;IAO9D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,OAAO,GAAE,OAAe;CA4F3E"} \ No newline at end of file diff --git a/types/Add-on/File/OpenHistory.d.ts b/types/Add-on/File/OpenHistory.d.ts new file mode 100644 index 0000000..a381865 --- /dev/null +++ b/types/Add-on/File/OpenHistory.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_OpenHistory implements Command { + exec(): Promise; + private ParseTime; +} +//# sourceMappingURL=OpenHistory.d.ts.map \ No newline at end of file diff --git a/types/Add-on/File/OpenHistory.d.ts.map b/types/Add-on/File/OpenHistory.d.ts.map new file mode 100644 index 0000000..76b5b94 --- /dev/null +++ b/types/Add-on/File/OpenHistory.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OpenHistory.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/File/OpenHistory.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBACa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;IAmDV,OAAO,CAAC,SAAS;CAWpB"} \ No newline at end of file diff --git a/types/Add-on/Fillet.d.ts b/types/Add-on/Fillet.d.ts new file mode 100644 index 0000000..c27ca11 --- /dev/null +++ b/types/Add-on/Fillet.d.ts @@ -0,0 +1,13 @@ +import { KeyWord } from '../Common/InputState'; +import { Command } from '../Editor/CommandMachine'; +import { PromptEntityResult } from '../Editor/PromptResult'; +export declare class CommandFillet implements Command { + m_FilletRadius: number; + private m_FilletUtils; + constructor(); + exec(): Promise; + UpdateFilletRadius(newRadius: number): void; + FilletBoard(enRes: PromptEntityResult): Promise; + SelectCurve(keyword: KeyWord[]): Promise; +} +//# sourceMappingURL=Fillet.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Fillet.d.ts.map b/types/Add-on/Fillet.d.ts.map new file mode 100644 index 0000000..c71f502 --- /dev/null +++ b/types/Add-on/Fillet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Fillet.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Fillet.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAgB,MAAM,wBAAwB,CAAC;AAK1E,qBAAa,aAAc,YAAW,OAAO;IAEzC,cAAc,EAAE,MAAM,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAqB;;IAOpC,IAAI;IA2HV,kBAAkB,CAAC,SAAS,EAAE,MAAM;IAU9B,WAAW,CAAC,KAAK,EAAE,kBAAkB;IAuBrC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoHrE"} \ No newline at end of file diff --git a/types/Add-on/FilletUtils.d.ts b/types/Add-on/FilletUtils.d.ts new file mode 100644 index 0000000..21475ce --- /dev/null +++ b/types/Add-on/FilletUtils.d.ts @@ -0,0 +1,67 @@ +import { Vector3 } from "three"; +import { Arc } from "../DatabaseServices/Entity/Arc"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +import { PromptEntityResult, PromptPointResult } from "../Editor/PromptResult"; +declare enum ExtendType { + Start = 1, + End = 2 +} +export interface FilletRes { + cu1?: Curve; + cu1Extend?: ExtendType; + cu2?: Curve; + cu2Extend?: ExtendType; + arc?: Arc; +} +export declare class FilletUtils { + FilletRadius: number; + Fillet(enRes1: PromptEntityResult, enRes2: PromptEntityResult): FilletRes; + private FilletLineOrArc; + FilletPolyLineSelf(enRes1: PromptEntityResult, enRes2: PromptEntityResult): FilletRes; + private FilletPolylineAndCurve; + FilletPolyLineAllAngular(enRes1: PromptEntityResult): FilletRes; + FindNearestPt(pts: Vector3[], target: Vector3): Vector3; + FilletBoard(brRes: PromptEntityResult, ptRes: PromptPointResult): Polyline | string; + /** + * 平行线倒角 + */ + private FilletParallelLine; + /** + * 计算圆弧与圆弧没有交点的情况下倒角结果. + * @param enRes1 + * @param enRes2 + * @returns arc and arc + */ + private FilletArcAndArc; + /** + * 计算直线与圆弧没有交点的情况下倒角结果. + * @param enRes1 + * @param enRes2 + * @returns line and cir + */ + private FilletLineAndArc; + private GetIntersectAndSort; + /** + * 对图元列表进行按位编码,类型映射如下: + * # 1:line 2:arc 4:polyline + * @param enRes + * @param enRes2 + * @returns + */ + private EnCode; + private ComputerDerv; + private ComputerDerv2; + private ExtendPt; + /** + * 切割或者延伸曲线,尖角化 + * + * @param cu 处理的曲线 + * @param interPt 原先的相交点 + * @param pickPoint 鼠标点击点 + * @returns 返回新的曲线 + */ + private SplitCurve; +} +export {}; +//# sourceMappingURL=FilletUtils.d.ts.map \ No newline at end of file diff --git a/types/Add-on/FilletUtils.d.ts.map b/types/Add-on/FilletUtils.d.ts.map new file mode 100644 index 0000000..f9235dc --- /dev/null +++ b/types/Add-on/FilletUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FilletUtils.d.ts","sourceRoot":"","sources":["../../../src/Add-on/FilletUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AA6D/E,aAAK,UAAU;IAEX,KAAK,IAAI;IACT,GAAG,IAAI;CACV;AAED,MAAM,WAAW,SAAS;IAEtB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,GAAG,CAAC;CACb;AAID,qBAAa,WAAW;IAEpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,GAAG,SAAS;IA2BzE,OAAO,CAAC,eAAe;IAoFvB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,GAAG,SAAS;IAsIrF,OAAO,CAAC,sBAAsB;IA4G9B,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS;IA6D/D,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAgBvD,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ,GAAG,MAAM;IA8BnF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiF1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAoEvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA+ExB,OAAO,CAAC,mBAAmB;IAe3B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,QAAQ;IAQhB;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;CA4ErB"} \ No newline at end of file diff --git a/types/Add-on/FindBoardModelingKnife.d.ts b/types/Add-on/FindBoardModelingKnife.d.ts new file mode 100644 index 0000000..f2e368b --- /dev/null +++ b/types/Add-on/FindBoardModelingKnife.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_FindBoardModelingKnife implements Command { + exec(): Promise; +} +//# sourceMappingURL=FindBoardModelingKnife.d.ts.map \ No newline at end of file diff --git a/types/Add-on/FindBoardModelingKnife.d.ts.map b/types/Add-on/FindBoardModelingKnife.d.ts.map new file mode 100644 index 0000000..30b6504 --- /dev/null +++ b/types/Add-on/FindBoardModelingKnife.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FindBoardModelingKnife.d.ts","sourceRoot":"","sources":["../../../src/Add-on/FindBoardModelingKnife.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,8BAA+B,YAAW,OAAO;IAEpD,IAAI;CAiCb"} \ No newline at end of file diff --git a/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts b/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts new file mode 100644 index 0000000..ca99244 --- /dev/null +++ b/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts @@ -0,0 +1,4 @@ +import { Vector2 } from "three"; +import { GestureDir } from "../../Editor/Gesture"; +export declare function Gesture_DrawLayerBoard(dirs: GestureDir[], path: Vector2[]): Promise; +//# sourceMappingURL=Gesture_DrawLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts.map b/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts.map new file mode 100644 index 0000000..528fa12 --- /dev/null +++ b/types/Add-on/Gesture/Gesture_DrawLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Gesture_DrawLayerBoard.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Gesture/Gesture_DrawLayerBoard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,UAAU,EAAmB,MAAM,sBAAsB,CAAC;AAMnE,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,oBAiD/E"} \ No newline at end of file diff --git a/types/Add-on/Group.d.ts b/types/Add-on/Group.d.ts new file mode 100644 index 0000000..452bec9 --- /dev/null +++ b/types/Add-on/Group.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Group { + exec(): Promise; +} +export declare class Command_UnGroup implements Command { + exec(): Promise; +} +//# sourceMappingURL=Group.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Group.d.ts.map b/types/Add-on/Group.d.ts.map new file mode 100644 index 0000000..23ef027 --- /dev/null +++ b/types/Add-on/Group.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Group.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,aAAa;IAEhB,IAAI;CAWb;AAED,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA8Bb"} \ No newline at end of file diff --git a/types/Add-on/HideSelected.d.ts b/types/Add-on/HideSelected.d.ts new file mode 100644 index 0000000..533cbdc --- /dev/null +++ b/types/Add-on/HideSelected.d.ts @@ -0,0 +1,19 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_HideSelected implements Command { + exec(): Promise; +} +export declare class Command_ShowAll implements Command { + exec(): Promise; +} +export declare class Command_HideUnselected implements Command { + exec(): Promise; +} +export declare class Command_SwitchDoor implements Command { + private _isShow; + constructor(_isShow: boolean); + exec(): Promise; +} +export declare class SelectAll implements Command { + exec(): Promise; +} +//# sourceMappingURL=HideSelected.d.ts.map \ No newline at end of file diff --git a/types/Add-on/HideSelected.d.ts.map b/types/Add-on/HideSelected.d.ts.map new file mode 100644 index 0000000..d5be194 --- /dev/null +++ b/types/Add-on/HideSelected.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HideSelected.d.ts","sourceRoot":"","sources":["../../../src/Add-on/HideSelected.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAkBb;AAED,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAWb;AAED,qBAAa,sBAAuB,YAAW,OAAO;IAE5C,IAAI;CAyBb;AAED,qBAAa,kBAAmB,YAAW,OAAO;IAElC,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,OAAO;IAC9B,IAAI;CA4Gb;AAED,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CA4Bb"} \ No newline at end of file diff --git a/types/Add-on/Insert.d.ts b/types/Add-on/Insert.d.ts new file mode 100644 index 0000000..56b6d01 --- /dev/null +++ b/types/Add-on/Insert.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Insert implements Command { + exec(): Promise; +} +//# sourceMappingURL=Insert.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Insert.d.ts.map b/types/Add-on/Insert.d.ts.map new file mode 100644 index 0000000..ab4a7f2 --- /dev/null +++ b/types/Add-on/Insert.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Insert.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Insert.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CAoDb"} \ No newline at end of file diff --git a/types/Add-on/Join.d.ts b/types/Add-on/Join.d.ts new file mode 100644 index 0000000..ae330f7 --- /dev/null +++ b/types/Add-on/Join.d.ts @@ -0,0 +1,13 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Join implements Command { + exec(): Promise; + private InitCurveMap; + private JoinCurve; + private InitArcKbMap; + private JoinArc; + private InitLineKbMap; + private JoinLine; + private MergeBoards; + private JoinSameTypeBrs; +} +//# sourceMappingURL=Join.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Join.d.ts.map b/types/Add-on/Join.d.ts.map new file mode 100644 index 0000000..73f114c --- /dev/null +++ b/types/Add-on/Join.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Join.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Join.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;IAyEV,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,YAAY;YAYN,OAAO;IA8CrB,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;CAuC1B"} \ No newline at end of file diff --git a/types/Add-on/KJL/KJLToken.d.ts b/types/Add-on/KJL/KJLToken.d.ts new file mode 100644 index 0000000..ecf7733 --- /dev/null +++ b/types/Add-on/KJL/KJLToken.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +export interface IKJLTokenProps { + url: string; +} +export declare class KJLToken extends React.Component { + render(): JSX.Element; +} +//# sourceMappingURL=KJLToken.d.ts.map \ No newline at end of file diff --git a/types/Add-on/KJL/KJLToken.d.ts.map b/types/Add-on/KJL/KJLToken.d.ts.map new file mode 100644 index 0000000..608123c --- /dev/null +++ b/types/Add-on/KJL/KJLToken.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KJLToken.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/KJL/KJLToken.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,cAAc;IAE3B,GAAG,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;IAClD,MAAM;CAchB"} \ No newline at end of file diff --git a/types/Add-on/KJL/KjlExport.d.ts b/types/Add-on/KJL/KjlExport.d.ts new file mode 100644 index 0000000..aa5ac2e --- /dev/null +++ b/types/Add-on/KJL/KjlExport.d.ts @@ -0,0 +1,12 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class KjlExport implements Command { + exec(): Promise; + private GetPtNumberList; + private GetCurveList; + private GetKJLBoardSubModel; + private GetKJLSweepSubModel; +} +export declare class ClearKjlToken implements Command { + exec(): Promise; +} +//# sourceMappingURL=KjlExport.d.ts.map \ No newline at end of file diff --git a/types/Add-on/KJL/KjlExport.d.ts.map b/types/Add-on/KJL/KjlExport.d.ts.map new file mode 100644 index 0000000..7553a85 --- /dev/null +++ b/types/Add-on/KJL/KjlExport.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KjlExport.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/KJL/KjlExport.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAgHtD,qBACa,SAAU,YAAW,OAAO;IAE/B,IAAI;IA8KV,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,mBAAmB;IA4G3B,OAAO,CAAC,mBAAmB;CAoE9B;AAGD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/KJLImport.d.ts b/types/Add-on/KJLImport.d.ts new file mode 100644 index 0000000..40097cf --- /dev/null +++ b/types/Add-on/KJLImport.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_KJLImport implements Command { + exec(): Promise; +} +//# sourceMappingURL=KJLImport.d.ts.map \ No newline at end of file diff --git a/types/Add-on/KJLImport.d.ts.map b/types/Add-on/KJLImport.d.ts.map new file mode 100644 index 0000000..0b2ca6e --- /dev/null +++ b/types/Add-on/KJLImport.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KJLImport.d.ts","sourceRoot":"","sources":["../../../src/Add-on/KJLImport.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAe,MAAM,0BAA0B,CAAC;AAkHhE,qBACa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAmEb"} \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts b/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts new file mode 100644 index 0000000..2fd4237 --- /dev/null +++ b/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../../Editor/CommandMachine'; +export declare class DrawLattice implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawLatticeDrawer.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts.map b/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts.map new file mode 100644 index 0000000..39616c0 --- /dev/null +++ b/types/Add-on/LatticeDrawer/DrawLatticeDrawer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawLatticeDrawer.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/LatticeDrawer/DrawLatticeDrawer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAuBb"} \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/EditorLattice.d.ts b/types/Add-on/LatticeDrawer/EditorLattice.d.ts new file mode 100644 index 0000000..c6102a0 --- /dev/null +++ b/types/Add-on/LatticeDrawer/EditorLattice.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class EditorLattice implements Command { + exec(): Promise; +} +//# sourceMappingURL=EditorLattice.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/EditorLattice.d.ts.map b/types/Add-on/LatticeDrawer/EditorLattice.d.ts.map new file mode 100644 index 0000000..a8e505a --- /dev/null +++ b/types/Add-on/LatticeDrawer/EditorLattice.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EditorLattice.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/LatticeDrawer/EditorLattice.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAgCb"} \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts b/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts new file mode 100644 index 0000000..6da62e5 --- /dev/null +++ b/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts @@ -0,0 +1,24 @@ +import { Singleton } from "../../Common/Singleton"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { ILatticeOption } from "../../UI/Store/LatticeInterface"; +export declare class DrawLatticeDrawerTool extends Singleton { + private _config; + private space; + private leftBr; + private rightBr; + private frontBr; + private backBr; + private haveTopBr; + get Config(): ILatticeOption; + Draw(space: ISpaceParse, config: ILatticeOption): Board[]; + private HandleSpace; + private ChangeLeftRightBr; + private ParseBrTooth; + private ParseSpaceBrs; + private ParseArcLenOrObliuqeAng; + private WriteBoardProcessOption; + protected ParseHighSealing(br: Board, leftSealed: number, rightSealed: number, topSealed: number, downSealed: number, isHor: boolean): void; + private End; +} +//# sourceMappingURL=LatticeDrawerTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts.map b/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts.map new file mode 100644 index 0000000..0cd7c32 --- /dev/null +++ b/types/Add-on/LatticeDrawer/LatticeDrawerTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LatticeDrawerTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/LatticeDrawer/LatticeDrawerTool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAqB,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEpF,qBAAa,qBAAsB,SAAQ,SAAS;IAEhD,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAAkB;IACnC,IAAI,MAAM,mBAGT;IACD,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE;IA0EzD,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,uBAAuB;IAW/B,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IAwDpI,OAAO,CAAC,GAAG;CASd"} \ No newline at end of file diff --git a/types/Add-on/Length.d.ts b/types/Add-on/Length.d.ts new file mode 100644 index 0000000..dd020eb --- /dev/null +++ b/types/Add-on/Length.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Length implements Command { + exec(): Promise; +} +//# sourceMappingURL=Length.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Length.d.ts.map b/types/Add-on/Length.d.ts.map new file mode 100644 index 0000000..36894a3 --- /dev/null +++ b/types/Add-on/Length.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Length.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Length.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CAoBb"} \ No newline at end of file diff --git a/types/Add-on/Lisp.d.ts b/types/Add-on/Lisp.d.ts new file mode 100644 index 0000000..d628e9e --- /dev/null +++ b/types/Add-on/Lisp.d.ts @@ -0,0 +1,4 @@ +export declare class Command_Lisp { + exec(): Promise; +} +//# sourceMappingURL=Lisp.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Lisp.d.ts.map b/types/Add-on/Lisp.d.ts.map new file mode 100644 index 0000000..e13e052 --- /dev/null +++ b/types/Add-on/Lisp.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Lisp.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Lisp.ts"],"names":[],"mappings":"AAMA,qBAAa,YAAY;IAEf,IAAI;CA6Cb"} \ No newline at end of file diff --git a/types/Add-on/LoadConfig.d.ts b/types/Add-on/LoadConfig.d.ts new file mode 100644 index 0000000..2db2385 --- /dev/null +++ b/types/Add-on/LoadConfig.d.ts @@ -0,0 +1,14 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class DownLoadDConfig implements Command { + exec(): Promise; +} +export declare class UpLoadConfig implements Command { + exec(): Promise; +} +export declare class DownloadHoleOption implements Command { + exec(): Promise; +} +export declare class UploadHoleOption implements Command { + exec(): Promise; +} +//# sourceMappingURL=LoadConfig.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LoadConfig.d.ts.map b/types/Add-on/LoadConfig.d.ts.map new file mode 100644 index 0000000..8b1ab6a --- /dev/null +++ b/types/Add-on/LoadConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LoadConfig.d.ts","sourceRoot":"","sources":["../../../src/Add-on/LoadConfig.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAUnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAUb;AACD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CA4Bb;AAED,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CAQb;AACD,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;CAoCb"} \ No newline at end of file diff --git a/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts b/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts new file mode 100644 index 0000000..415b01c --- /dev/null +++ b/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class LookOverBoardInfos implements Command { + exec(): Promise; +} +//# sourceMappingURL=LookOverBoardInfos.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts.map b/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts.map new file mode 100644 index 0000000..6d6c5f4 --- /dev/null +++ b/types/Add-on/LookOverBoardInfos/LookOverBoardInfos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LookOverBoardInfos.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/LookOverBoardInfos/LookOverBoardInfos.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAMtD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CAyBb"} \ No newline at end of file diff --git a/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts b/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts new file mode 100644 index 0000000..c6db02d --- /dev/null +++ b/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts @@ -0,0 +1,36 @@ +import { Vector3 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity"; +import { HardwareTopline } from "../../DatabaseServices/Hardware/HardwareTopline"; +import { IHardwareType } from "../../Production/Product"; +export interface ICountType { + name?: string; + count: number; + entity?: T; + count2?: number | string; + unit?: string; + length?: number; +} +export declare type GetCountOption = { + sealGruopKey: (block: Board) => string; +}; +declare class LookOverBoardInfosTool { + private drillTypeMap; + private sealMap; + private boardMap; + GetCount(brs: (Board | IHardwareType)[], options?: GetCountOption): { + drillCount: ICountType[]; + hardwareCount: ICountType[]; + sealCount: ICountType[]; + areaCount: ICountType[]; + }; + private Update; + ParseSpec(en: IHardwareType | Vector3, spec: string, len?: number): string; + ParseHardwareCount(k: string, v: IHardwareType[], hardwareCount: ICountType[]): void; + private UpdateBoardMap; + GetBoardThickness(br: Board): string; + GetBoardsArea(brs: Board[]): string; +} +export declare const lookOverBoardInfosTool: LookOverBoardInfosTool; +export {}; +//# sourceMappingURL=LookOverBoardInfosTool.d.ts.map \ No newline at end of file diff --git a/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts.map b/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts.map new file mode 100644 index 0000000..9803f0e --- /dev/null +++ b/types/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LookOverBoardInfosTool.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/LookOverBoardInfos/LookOverBoardInfosTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQhC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAElF,OAAO,EAAE,aAAa,EAAc,MAAM,0BAA0B,CAAC;AAErE,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,aAAa;IAEzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AACD,oBAAY,cAAc,GAAG;IAAE,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;CAAE,CAAC;AACzE,cAAM,sBAAsB;IAExB,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,OAAO,GAAE,cAAqB;;;;;;IA2CvE,OAAO,CAAC,MAAM;IAqId,SAAS,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAKjE,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE;IA6C7E,OAAO,CAAC,cAAc;IAmBtB,iBAAiB,CAAC,EAAE,EAAE,KAAK;IAQ3B,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;CAc7B;AAED,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"} \ No newline at end of file diff --git a/types/Add-on/Mirror.d.ts b/types/Add-on/Mirror.d.ts new file mode 100644 index 0000000..a2d1c6b --- /dev/null +++ b/types/Add-on/Mirror.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class MirrorCommand implements Command { + exec(): Promise; +} +//# sourceMappingURL=Mirror.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Mirror.d.ts.map b/types/Add-on/Mirror.d.ts.map new file mode 100644 index 0000000..904960a --- /dev/null +++ b/types/Add-on/Mirror.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Mirror.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Mirror.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAkDb"} \ No newline at end of file diff --git a/types/Add-on/Move.d.ts b/types/Add-on/Move.d.ts new file mode 100644 index 0000000..29a8bc0 --- /dev/null +++ b/types/Add-on/Move.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_Move implements Command { + exec(): Promise; +} +//# sourceMappingURL=Move.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Move.d.ts.map b/types/Add-on/Move.d.ts.map new file mode 100644 index 0000000..6f39eec --- /dev/null +++ b/types/Add-on/Move.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Move.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Move.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CA+Eb"} \ No newline at end of file diff --git a/types/Add-on/MoveToWCS0.d.ts b/types/Add-on/MoveToWCS0.d.ts new file mode 100644 index 0000000..07528b2 --- /dev/null +++ b/types/Add-on/MoveToWCS0.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_M0 implements Command { + exec(): Promise; +} +//# sourceMappingURL=MoveToWCS0.d.ts.map \ No newline at end of file diff --git a/types/Add-on/MoveToWCS0.d.ts.map b/types/Add-on/MoveToWCS0.d.ts.map new file mode 100644 index 0000000..7fe6b14 --- /dev/null +++ b/types/Add-on/MoveToWCS0.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MoveToWCS0.d.ts","sourceRoot":"","sources":["../../../src/Add-on/MoveToWCS0.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CAkBb"} \ No newline at end of file diff --git a/types/Add-on/Offset.d.ts b/types/Add-on/Offset.d.ts new file mode 100644 index 0000000..50868fa --- /dev/null +++ b/types/Add-on/Offset.d.ts @@ -0,0 +1,32 @@ +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Command } from '../Editor/CommandMachine'; +import { PromptStatus } from '../Editor/PromptResult'; +declare type GetOffsetStatus = { + Status: PromptStatus; + offsetDist?: number; +}; +declare enum OffsetType { + Direction = 0, + Dynamic = 1, + Continuous = 2 +} +export declare class Command_Offset implements Command { + offsetDis: number; + type: OffsetType; + constructor(); + exec(): Promise; + Run(): Promise; + GetOffsetContinuous(cu: Curve): Promise; + UpdateDistance(offsetDist: number): void; + DrawOffset(cu: Curve, offsetDist: number): void; + GetOffsetDir(cu: Curve): Promise; + GetDynOffsetDist(cu: Curve): Promise; +} +export declare class Command_DynOffset extends Command_Offset { + exec(): Promise; +} +export declare class Command_DynOffsetToolPath { + exec(): Promise; +} +export {}; +//# sourceMappingURL=Offset.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Offset.d.ts.map b/types/Add-on/Offset.d.ts.map new file mode 100644 index 0000000..e9dd154 --- /dev/null +++ b/types/Add-on/Offset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Offset.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Offset.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMtD,aAAK,eAAe,GAAG;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAAE,CAAC;AAEtE,aAAK,UAAU;IAEX,SAAS,IAAI;IACb,OAAO,IAAI;IACX,UAAU,IAAI;CACjB;AAGD,qBAAa,cAAe,YAAW,OAAO;IAE1C,SAAS,EAAE,MAAM,CAAK;IACtB,IAAI,aAAwB;;IAOtB,IAAI;IAyBJ,GAAG;IAgEH,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC;IA0B9D,cAAc,CAAC,UAAU,EAAE,MAAM;IAOjC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM;IAOlC,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BjD,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,eAAe,CAAC;CAqD9D;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IAE3C,IAAI;CAMb;AAED,qBAAa,yBAAyB;IAE5B,IAAI;CAqCb"} \ No newline at end of file diff --git a/types/Add-on/OffsetX.d.ts b/types/Add-on/OffsetX.d.ts new file mode 100644 index 0000000..e326aa7 --- /dev/null +++ b/types/Add-on/OffsetX.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class OffsetX implements Command { + offsetDis: number; + exec(): Promise; +} +//# sourceMappingURL=OffsetX.d.ts.map \ No newline at end of file diff --git a/types/Add-on/OffsetX.d.ts.map b/types/Add-on/OffsetX.d.ts.map new file mode 100644 index 0000000..6e0c869 --- /dev/null +++ b/types/Add-on/OffsetX.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OffsetX.d.ts","sourceRoot":"","sources":["../../../src/Add-on/OffsetX.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,OAAQ,YAAW,OAAO;IAEnC,SAAS,EAAE,MAAM,CAAK;IAChB,IAAI;CAiCb"} \ No newline at end of file diff --git a/types/Add-on/Open.d.ts b/types/Add-on/Open.d.ts new file mode 100644 index 0000000..598b839 --- /dev/null +++ b/types/Add-on/Open.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Open implements Command { + exec(): Promise; +} +//# sourceMappingURL=Open.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Open.d.ts.map b/types/Add-on/Open.d.ts.map new file mode 100644 index 0000000..69ad894 --- /dev/null +++ b/types/Add-on/Open.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Open.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Open.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,IAAK,YAAW,OAAO;IAE1B,IAAI;CAMb"} \ No newline at end of file diff --git a/types/Add-on/PasteClip.d.ts b/types/Add-on/PasteClip.d.ts new file mode 100644 index 0000000..53805e6 --- /dev/null +++ b/types/Add-on/PasteClip.d.ts @@ -0,0 +1,4 @@ +export declare class PasteClip { + exec(): Promise; +} +//# sourceMappingURL=PasteClip.d.ts.map \ No newline at end of file diff --git a/types/Add-on/PasteClip.d.ts.map b/types/Add-on/PasteClip.d.ts.map new file mode 100644 index 0000000..9399a22 --- /dev/null +++ b/types/Add-on/PasteClip.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PasteClip.d.ts","sourceRoot":"","sources":["../../../src/Add-on/PasteClip.ts"],"names":[],"mappings":"AAcA,qBAAa,SAAS;IAEZ,IAAI;CA8Hb"} \ No newline at end of file diff --git a/types/Add-on/Pedit.d.ts b/types/Add-on/Pedit.d.ts new file mode 100644 index 0000000..6b8fd73 --- /dev/null +++ b/types/Add-on/Pedit.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Pedit implements Command { + exec(): Promise; +} +//# sourceMappingURL=Pedit.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Pedit.d.ts.map b/types/Add-on/Pedit.d.ts.map new file mode 100644 index 0000000..49bcf3b --- /dev/null +++ b/types/Add-on/Pedit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Pedit.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Pedit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,KAAM,YAAW,OAAO;IAE3B,IAAI;CAoDb"} \ No newline at end of file diff --git a/types/Add-on/Print.d.ts b/types/Add-on/Print.d.ts new file mode 100644 index 0000000..f2c47a7 --- /dev/null +++ b/types/Add-on/Print.d.ts @@ -0,0 +1,8 @@ +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { Command } from "../Editor/CommandMachine"; +export declare class Print implements Command { + exec(): Promise; +} +export declare function GetPrintWindow(): Window; +export declare function GetImgElement(ens: Entity[], isReset?: boolean): Promise; +//# sourceMappingURL=Print.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Print.d.ts.map b/types/Add-on/Print.d.ts.map new file mode 100644 index 0000000..b7970aa --- /dev/null +++ b/types/Add-on/Print.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Print.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Print.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQnD,qBACa,KAAM,YAAW,OAAO;IAE3B,IAAI;CA2Cb;AAmxBD,wBAAgB,cAAc,WAqD7B;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,UAAO,2BA4EhE"} \ No newline at end of file diff --git a/types/Add-on/Purge.d.ts b/types/Add-on/Purge.d.ts new file mode 100644 index 0000000..5cde1f5 --- /dev/null +++ b/types/Add-on/Purge.d.ts @@ -0,0 +1,6 @@ +import { Database } from "../DatabaseServices/Database"; +export declare class Command_Purge { + exec(): Promise; +} +export declare function Purge(db: Database): void; +//# sourceMappingURL=Purge.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Purge.d.ts.map b/types/Add-on/Purge.d.ts.map new file mode 100644 index 0000000..aaff786 --- /dev/null +++ b/types/Add-on/Purge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Purge.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Purge.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAIxD,qBAAa,aAAa;IAEhB,IAAI;CA8Bb;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,QAAQ,QAgCjC"} \ No newline at end of file diff --git a/types/Add-on/ReOpen.d.ts b/types/Add-on/ReOpen.d.ts new file mode 100644 index 0000000..abca892 --- /dev/null +++ b/types/Add-on/ReOpen.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class ReOpen implements Command { + exec(): Promise; +} +//# sourceMappingURL=ReOpen.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ReOpen.d.ts.map b/types/Add-on/ReOpen.d.ts.map new file mode 100644 index 0000000..46e32f8 --- /dev/null +++ b/types/Add-on/ReOpen.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ReOpen.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ReOpen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,MAAO,YAAW,OAAO;IAE5B,IAAI;CAyBb"} \ No newline at end of file diff --git a/types/Add-on/RestoreColor.d.ts b/types/Add-on/RestoreColor.d.ts new file mode 100644 index 0000000..c54060c --- /dev/null +++ b/types/Add-on/RestoreColor.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_RestoreColor implements Command { + exec(): Promise; +} +//# sourceMappingURL=RestoreColor.d.ts.map \ No newline at end of file diff --git a/types/Add-on/RestoreColor.d.ts.map b/types/Add-on/RestoreColor.d.ts.map new file mode 100644 index 0000000..3546091 --- /dev/null +++ b/types/Add-on/RestoreColor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RestoreColor.d.ts","sourceRoot":"","sources":["../../../src/Add-on/RestoreColor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAuBb"} \ No newline at end of file diff --git a/types/Add-on/Reverse.d.ts b/types/Add-on/Reverse.d.ts new file mode 100644 index 0000000..7aa1cd9 --- /dev/null +++ b/types/Add-on/Reverse.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_Reverse implements Command { + exec(): Promise; +} +//# sourceMappingURL=Reverse.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Reverse.d.ts.map b/types/Add-on/Reverse.d.ts.map new file mode 100644 index 0000000..adc3207 --- /dev/null +++ b/types/Add-on/Reverse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Reverse.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Reverse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAiBb"} \ No newline at end of file diff --git a/types/Add-on/Rotate.d.ts b/types/Add-on/Rotate.d.ts new file mode 100644 index 0000000..525c61d --- /dev/null +++ b/types/Add-on/Rotate.d.ts @@ -0,0 +1,14 @@ +import { Vector3 } from 'three'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { Command } from '../Editor/CommandMachine'; +import { UpdateEntityDrawTask } from './UpdateEntityDrawTask'; +export declare class Command_Rotate implements Command { + exec(): Promise; + UpdateTask: UpdateEntityDrawTask; + Update(basePt: Vector3, an: number, ens: Entity[], isCopy?: boolean, resetUpdate?: boolean): void; +} +export declare class Command_RotateRefer implements Command { + exec(): Promise; + Update(basePt: Vector3, an: number, ens: Entity[], isCopy?: boolean, resetUpdate?: boolean): void; +} +//# sourceMappingURL=Rotate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Rotate.d.ts.map b/types/Add-on/Rotate.d.ts.map new file mode 100644 index 0000000..c3193f6 --- /dev/null +++ b/types/Add-on/Rotate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rotate.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Rotate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,OAAO,EAAE,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;IA2EV,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,UAAQ,EAAE,WAAW,UAAQ;CAuBzF;AAGD,qBAAa,mBAAoB,YAAW,OAAO;IAEzC,IAAI;IA6BV,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,UAAQ,EAAE,WAAW,UAAQ;CAoBzF"} \ No newline at end of file diff --git a/types/Add-on/RotateLayerBoard.d.ts b/types/Add-on/RotateLayerBoard.d.ts new file mode 100644 index 0000000..36cb9ee --- /dev/null +++ b/types/Add-on/RotateLayerBoard.d.ts @@ -0,0 +1,28 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class RotateLayerBoard implements Command { + private data; + private currentBoard; + private errBr; + exec(): Promise; + private RotateLayerBrByAngle; + private RotateLayerBrByLength; + /**获得斜层板 */ + private HandleLayerBoard; + /** + * 重新计算层板钉 + * newTotalWidth-总宽 + */ + private RotateNails; + private RotateFrontNails; + /** + * 旋转修正背板的层板钉 + * totalWidth-用于计算的总宽 + * */ + private RotateBackNails; + private RotateLeftRightNails; + /** + * 分析当前板件的排钻,获取各方向的层板钉(leftNails...) + */ + private ParseNails; +} +//# sourceMappingURL=RotateLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/Add-on/RotateLayerBoard.d.ts.map b/types/Add-on/RotateLayerBoard.d.ts.map new file mode 100644 index 0000000..4d1b214 --- /dev/null +++ b/types/Add-on/RotateLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RotateLayerBoard.d.ts","sourceRoot":"","sources":["../../../src/Add-on/RotateLayerBoard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAiBnD,qBAAa,gBAAiB,YAAW,OAAO;IAE5C,OAAO,CAAC,IAAI,CAMV;IACF,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,KAAK,CAAa;IACpB,IAAI;IA0CV,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,qBAAqB;IAwB7B,WAAW;IACX,OAAO,CAAC,gBAAgB;IAKxB;;;MAGE;IACF,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,gBAAgB;IAaxB;;;SAGK;IACL,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,oBAAoB;IA8C5B;;OAEG;IACH,OAAO,CAAC,UAAU;CAoCrB"} \ No newline at end of file diff --git a/types/Add-on/Save.d.ts b/types/Add-on/Save.d.ts new file mode 100644 index 0000000..12aeec0 --- /dev/null +++ b/types/Add-on/Save.d.ts @@ -0,0 +1,18 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Save implements Command { + NoHistory: boolean; + exec(): Promise; +} +export declare class New implements Command { + NoHistory: boolean; + exec(): Promise; +} +export declare class SaveAs implements Command { + NoHistory: boolean; + exec(): Promise; +} +export declare class SaveAsBinary implements Command { + NoHistory: boolean; + exec(): Promise; +} +//# sourceMappingURL=Save.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Save.d.ts.map b/types/Add-on/Save.d.ts.map new file mode 100644 index 0000000..f009a89 --- /dev/null +++ b/types/Add-on/Save.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Save.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Save.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAQnD,qBAAa,IAAK,YAAW,OAAO;IAEhC,SAAS,UAAQ;IACX,IAAI;CAuIb;AAED,qBAAa,GAAI,YAAW,OAAO;IAE/B,SAAS,UAAQ;IACX,IAAI;CAKb;AAED,qBAAa,MAAO,YAAW,OAAO;IAElC,SAAS,UAAQ;IACX,IAAI;CA8Cb;AAED,qBAAa,YAAa,YAAW,OAAO;IAExC,SAAS,UAAQ;IACX,IAAI;CAOb"} \ No newline at end of file diff --git a/types/Add-on/Scale.d.ts b/types/Add-on/Scale.d.ts new file mode 100644 index 0000000..e643848 --- /dev/null +++ b/types/Add-on/Scale.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Scale implements Command { + exec(): Promise; + private Scale; +} +//# sourceMappingURL=Scale.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Scale.d.ts.map b/types/Add-on/Scale.d.ts.map new file mode 100644 index 0000000..1e246df --- /dev/null +++ b/types/Add-on/Scale.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Scale.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Scale.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;IA4GV,OAAO,CAAC,KAAK;CAchB"} \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts b/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts new file mode 100644 index 0000000..49cf285 --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class SetSmoothEdge implements Command { + exec(): Promise; +} +//# sourceMappingURL=SetSmoothEdge.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts.map b/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts.map new file mode 100644 index 0000000..8e8b0f0 --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SetSmoothEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SetSmoothEdge.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/SetSmoothEdge/SetSmoothEdge.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAanE,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAWb"} \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts b/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts new file mode 100644 index 0000000..a2bd27d --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts @@ -0,0 +1,4 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { ISmoothEdgeOption } from "../../UI/Store/BoardInterface"; +export declare function SetSmoothEdges(brs: Board[], option: ISmoothEdgeOption): void; +//# sourceMappingURL=SetSmoothEdgeFace.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts.map b/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts.map new file mode 100644 index 0000000..8ff2835 --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SetSmoothEdgeFace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SetSmoothEdgeFace.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/SetSmoothEdge/SetSmoothEdgeFace.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAmB,MAAM,+BAA+B,CAAC;AAgLnF,wBAAgB,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,iBAAiB,QAqCrE"} \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts b/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts new file mode 100644 index 0000000..efa50af --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts @@ -0,0 +1,15 @@ +import { IConfigStore } from "../../UI/Store/BoardStore"; +import { ISmoothEdgeOption, IUiOption } from "../../UI/Store/BoardInterface"; +import { IConfigOption } from "../../UI/Components/Board/UserConfig"; +export declare class SmoothEdgeStore implements IConfigStore { + option: ISmoothEdgeOption; + uiOption: IUiOption; + configName: string; + configsNames: string[]; + InitOption(): void; + get UiOption(): IUiOption; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; +} +export declare const smoothEdgeStore: SmoothEdgeStore; +//# sourceMappingURL=SmoothEdgeStore.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts.map b/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts.map new file mode 100644 index 0000000..fc26b7f --- /dev/null +++ b/types/Add-on/SetSmoothEdge/SmoothEdgeStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SmoothEdgeStore.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/SetSmoothEdge/SmoothEdgeStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,qBAAa,eAAgB,YAAW,YAAY;IAEpC,MAAM,EAAE,iBAAiB,CAKnC;IACU,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACnD,UAAU,SAAa;IACvB,YAAY,WAAe;IAC3B,UAAU;IASV,IAAI,QAAQ,iCAKX;IACD,UAAU;IAOV,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,iBAAiB,CAAC;CAMrD;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"} \ No newline at end of file diff --git a/types/Add-on/ShowLines.d.ts b/types/Add-on/ShowLines.d.ts new file mode 100644 index 0000000..119ccef --- /dev/null +++ b/types/Add-on/ShowLines.d.ts @@ -0,0 +1,7 @@ +import { CompositeEntity } from "../DatabaseServices/Entity/CompositeEntity"; +import { Command } from "../Editor/CommandMachine"; +export declare class SwitchLines implements Command { + exec(): void; +} +export declare function UpdateCompositeEntityBoard(cm: CompositeEntity): void; +//# sourceMappingURL=ShowLines.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ShowLines.d.ts.map b/types/Add-on/ShowLines.d.ts.map new file mode 100644 index 0000000..2e1db39 --- /dev/null +++ b/types/Add-on/ShowLines.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowLines.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ShowLines.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,WAAY,YAAW,OAAO;IAEvC,IAAI;CAeP;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,eAAe,QAS7D"} \ No newline at end of file diff --git a/types/Add-on/ShowProcessingGroupModal.d.ts b/types/Add-on/ShowProcessingGroupModal.d.ts new file mode 100644 index 0000000..965687b --- /dev/null +++ b/types/Add-on/ShowProcessingGroupModal.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_ShowProcessingGroupModal2 implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowProcessingGroupModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ShowProcessingGroupModal.d.ts.map b/types/Add-on/ShowProcessingGroupModal.d.ts.map new file mode 100644 index 0000000..7c65ed4 --- /dev/null +++ b/types/Add-on/ShowProcessingGroupModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowProcessingGroupModal.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ShowProcessingGroupModal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,iCAAkC,YAAW,OAAO;IAEvD,IAAI;CAab"} \ No newline at end of file diff --git a/types/Add-on/ShowRecycleBin.d.ts b/types/Add-on/ShowRecycleBin.d.ts new file mode 100644 index 0000000..ec784cf --- /dev/null +++ b/types/Add-on/ShowRecycleBin.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class ShowRecycleBin implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowRecycleBin.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ShowRecycleBin.d.ts.map b/types/Add-on/ShowRecycleBin.d.ts.map new file mode 100644 index 0000000..2f0f3e7 --- /dev/null +++ b/types/Add-on/ShowRecycleBin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowRecycleBin.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ShowRecycleBin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/Sky.d.ts b/types/Add-on/Sky.d.ts new file mode 100644 index 0000000..636a5c3 --- /dev/null +++ b/types/Add-on/Sky.d.ts @@ -0,0 +1,42 @@ +import * as THREE from "three"; +/** + * @author zz85 / https://github.com/zz85 + * + * Based on "A Practical Analytic Model for Daylight" + * aka The Preetham Model, the de facto standard analytic skydome model + * http://www.cs.utah.edu/~shirley/papers/sunsky/sunsky.pdf + * + * First implemented by Simon Wallner + * http://www.simonwallner.at/projects/atmospheric-scattering + * + * Improved by Martin Upitis + * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR + * + * Three.js integration by zz85 http://twitter.com/blurspline +*/ +export declare class Sky extends THREE.Mesh { + constructor(); + get Uniforms(): SkyUniforms; +} +declare type SkyUniforms = { + luminance: { + value: 1; + }; + turbidity: { + value: 2; + }; + rayleigh: { + value: 1; + }; + mieCoefficient: { + value: 0.005; + }; + mieDirectionalG: { + value: 0.8; + }; + sunPosition: { + value: THREE.Vector3; + }; +}; +export {}; +//# sourceMappingURL=Sky.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Sky.d.ts.map b/types/Add-on/Sky.d.ts.map new file mode 100644 index 0000000..942c2a5 --- /dev/null +++ b/types/Add-on/Sky.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Sky.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Sky.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;EAcE;AAEF,qBAAa,GAAI,SAAQ,KAAK,CAAC,IAAI;;IAe/B,IAAI,QAAQ,gBAIX;CACJ;AA+LD,aAAK,WAAW,GAAG;IACf,SAAS,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;KAAE,CAAC;IACzB,SAAS,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;KAAE,CAAC;IACzB,QAAQ,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;KAAE,CAAC;IACxB,cAAc,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;KAAE,CAAC;IAClC,eAAe,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC;KAAE,CAAC;IACjC,WAAW,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;KAAE,CAAC;CAC1C,CAAC"} \ No newline at end of file diff --git a/types/Add-on/Stretch.d.ts b/types/Add-on/Stretch.d.ts new file mode 100644 index 0000000..65d2f4c --- /dev/null +++ b/types/Add-on/Stretch.d.ts @@ -0,0 +1,10 @@ +import { Matrix4, Vector3 } from 'three'; +import { StretchData } from '../Common/StretchParse'; +import { Command } from '../Editor/CommandMachine'; +export declare class Stretch implements Command { + private useSelectFilter; + constructor(useSelectFilter?: boolean); + exec(): Promise; + Stretch(d: StretchData, stretchVector: Vector3, moveMatrix: Matrix4): void; +} +//# sourceMappingURL=Stretch.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Stretch.d.ts.map b/types/Add-on/Stretch.d.ts.map new file mode 100644 index 0000000..13bd226 --- /dev/null +++ b/types/Add-on/Stretch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Stretch.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Stretch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAUnD,qBAAa,OAAQ,YAAW,OAAO;IAEvB,OAAO,CAAC,eAAe;gBAAf,eAAe,UAAQ;IAErC,IAAI;IAgKV,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO;CAUtE"} \ No newline at end of file diff --git a/types/Add-on/Sweep.d.ts b/types/Add-on/Sweep.d.ts new file mode 100644 index 0000000..741e8b2 --- /dev/null +++ b/types/Add-on/Sweep.d.ts @@ -0,0 +1,8 @@ +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +import { Command } from '../Editor/CommandMachine'; +import { Circle } from './../DatabaseServices/Entity/Circle'; +export declare class Sweep implements Command { + exec(): Promise; +} +export declare function GetCloseContour(originContour: Polyline | Circle): Polyline; +//# sourceMappingURL=Sweep.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Sweep.d.ts.map b/types/Add-on/Sweep.d.ts.map new file mode 100644 index 0000000..3f7e56e --- /dev/null +++ b/types/Add-on/Sweep.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Sweep.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Sweep.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,qBAAa,KAAM,YAAW,OAAO;IAE3B,IAAI;CA8Bb;AA8CD,wBAAgB,eAAe,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,YAwB/D"} \ No newline at end of file diff --git a/types/Add-on/SwitchCamera.d.ts b/types/Add-on/SwitchCamera.d.ts new file mode 100644 index 0000000..519f534 --- /dev/null +++ b/types/Add-on/SwitchCamera.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_SwitchCamera implements Command { + exec(): Promise; +} +//# sourceMappingURL=SwitchCamera.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SwitchCamera.d.ts.map b/types/Add-on/SwitchCamera.d.ts.map new file mode 100644 index 0000000..003a8be --- /dev/null +++ b/types/Add-on/SwitchCamera.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SwitchCamera.d.ts","sourceRoot":"","sources":["../../../src/Add-on/SwitchCamera.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/SwitchVisualStyles.d.ts b/types/Add-on/SwitchVisualStyles.d.ts new file mode 100644 index 0000000..36905a9 --- /dev/null +++ b/types/Add-on/SwitchVisualStyles.d.ts @@ -0,0 +1,12 @@ +import { Command } from "../Editor/CommandMachine"; +import { RenderType } from "../GraphicsSystem/RenderType"; +import { ViewportEntity } from "../DatabaseServices/ViewportEntity"; +export declare class ChangeRenderType implements Command { + private _type; + constructor(_type: RenderType); + get NoHistory(): boolean; + get Transparency(): boolean; + exec(): Promise; + ChangeViewport(vs: ViewportEntity[]): void; +} +//# sourceMappingURL=SwitchVisualStyles.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SwitchVisualStyles.d.ts.map b/types/Add-on/SwitchVisualStyles.d.ts.map new file mode 100644 index 0000000..fcd2379 --- /dev/null +++ b/types/Add-on/SwitchVisualStyles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SwitchVisualStyles.d.ts","sourceRoot":"","sources":["../../../src/Add-on/SwitchVisualStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,qBAAa,gBAAiB,YAAW,OAAO;IAEhC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,UAAU;IAMrC,IAAI,SAAS,YAGZ;IAGD,IAAI,YAAY,YAGf;IAEK,IAAI;IA0BV,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE;CAOtC"} \ No newline at end of file diff --git a/types/Add-on/SyncData.d.ts b/types/Add-on/SyncData.d.ts new file mode 100644 index 0000000..a3a877b --- /dev/null +++ b/types/Add-on/SyncData.d.ts @@ -0,0 +1,11 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_EnableSyncData implements Command { + exec(): Promise; +} +export declare class Command_DisableSyncData implements Command { + exec(): Promise; +} +export declare class Command_ToggleSyncData implements Command { + exec(): void; +} +//# sourceMappingURL=SyncData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/SyncData.d.ts.map b/types/Add-on/SyncData.d.ts.map new file mode 100644 index 0000000..ea1ddaf --- /dev/null +++ b/types/Add-on/SyncData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SyncData.d.ts","sourceRoot":"","sources":["../../../src/Add-on/SyncData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,qBAAa,sBAAuB,YAAW,OAAO;IAE5C,IAAI;CAIb;AAED,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CAIb;AAED,qBAAa,sBAAuB,YAAW,OAAO;IAElD,IAAI;CAIP"} \ No newline at end of file diff --git a/types/Add-on/Tangent.d.ts b/types/Add-on/Tangent.d.ts new file mode 100644 index 0000000..62bf51f --- /dev/null +++ b/types/Add-on/Tangent.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class DrawTangentLine implements Command { + exec(): Promise; +} +//# sourceMappingURL=Tangent.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Tangent.d.ts.map b/types/Add-on/Tangent.d.ts.map new file mode 100644 index 0000000..701504b --- /dev/null +++ b/types/Add-on/Tangent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Tangent.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Tangent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAOnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA+Bb"} \ No newline at end of file diff --git a/types/Add-on/Template/BoardReplaceTemplate.d.ts b/types/Add-on/Template/BoardReplaceTemplate.d.ts new file mode 100644 index 0000000..eb9371b --- /dev/null +++ b/types/Add-on/Template/BoardReplaceTemplate.d.ts @@ -0,0 +1,4 @@ +export declare class BoardReplaceTempate { + exec(): Promise; +} +//# sourceMappingURL=BoardReplaceTemplate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/BoardReplaceTemplate.d.ts.map b/types/Add-on/Template/BoardReplaceTemplate.d.ts.map new file mode 100644 index 0000000..0fbfcbd --- /dev/null +++ b/types/Add-on/Template/BoardReplaceTemplate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardReplaceTemplate.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/BoardReplaceTemplate.ts"],"names":[],"mappings":"AAOA,qBAAa,mBAAmB;IAEtB,IAAI;CAsBb"} \ No newline at end of file diff --git a/types/Add-on/Template/DrawVisualSpaceBox.d.ts b/types/Add-on/Template/DrawVisualSpaceBox.d.ts new file mode 100644 index 0000000..da60ff2 --- /dev/null +++ b/types/Add-on/Template/DrawVisualSpaceBox.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class DrawVisualSpaceBox implements Command { + exec(): Promise; +} +//# sourceMappingURL=DrawVisualSpaceBox.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/DrawVisualSpaceBox.d.ts.map b/types/Add-on/Template/DrawVisualSpaceBox.d.ts.map new file mode 100644 index 0000000..a8690b7 --- /dev/null +++ b/types/Add-on/Template/DrawVisualSpaceBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawVisualSpaceBox.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/DrawVisualSpaceBox.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAatD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA2Cb"} \ No newline at end of file diff --git a/types/Add-on/Template/RotateTemplateSpace.d.ts b/types/Add-on/Template/RotateTemplateSpace.d.ts new file mode 100644 index 0000000..435280b --- /dev/null +++ b/types/Add-on/Template/RotateTemplateSpace.d.ts @@ -0,0 +1,6 @@ +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +export declare class Command_RotateTemplateSpace { + exec(): Promise; +} +export declare function RotateTemplateSpace(t: TemplateRecord): Promise; +//# sourceMappingURL=RotateTemplateSpace.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/RotateTemplateSpace.d.ts.map b/types/Add-on/Template/RotateTemplateSpace.d.ts.map new file mode 100644 index 0000000..ee2dcbc --- /dev/null +++ b/types/Add-on/Template/RotateTemplateSpace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RotateTemplateSpace.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/RotateTemplateSpace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAQhF,qBACa,2BAA2B;IAE9B,IAAI;CAOb;AAED,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,cAAc,iBAyE1D"} \ No newline at end of file diff --git a/types/Add-on/Template/ShowFrame.d.ts b/types/Add-on/Template/ShowFrame.d.ts new file mode 100644 index 0000000..2600399 --- /dev/null +++ b/types/Add-on/Template/ShowFrame.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ShowFrmae implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowFrame.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/ShowFrame.d.ts.map b/types/Add-on/Template/ShowFrame.d.ts.map new file mode 100644 index 0000000..ea37137 --- /dev/null +++ b/types/Add-on/Template/ShowFrame.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowFrame.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/ShowFrame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/Template/ShowTemplate.d.ts b/types/Add-on/Template/ShowTemplate.d.ts new file mode 100644 index 0000000..0c748a7 --- /dev/null +++ b/types/Add-on/Template/ShowTemplate.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../../Editor/CommandMachine"; +import { ITempTagProps } from "./TemplateTagCommand"; +export declare class ShowTemplate implements Command { + private tag?; + constructor(tag?: ITempTagProps); + exec(): Promise; +} +//# sourceMappingURL=ShowTemplate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/ShowTemplate.d.ts.map b/types/Add-on/Template/ShowTemplate.d.ts.map new file mode 100644 index 0000000..0af47e4 --- /dev/null +++ b/types/Add-on/Template/ShowTemplate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowTemplate.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/ShowTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,qBAAa,YAAa,YAAW,OAAO;IAE5B,OAAO,CAAC,GAAG,CAAC;gBAAJ,GAAG,CAAC,EAAE,aAAa;IACjC,IAAI;CAKb"} \ No newline at end of file diff --git a/types/Add-on/Template/ShowTemplateDesign.d.ts b/types/Add-on/Template/ShowTemplateDesign.d.ts new file mode 100644 index 0000000..a03a697 --- /dev/null +++ b/types/Add-on/Template/ShowTemplateDesign.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ShowTemplateDesign implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowTemplateDesign.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/ShowTemplateDesign.d.ts.map b/types/Add-on/Template/ShowTemplateDesign.d.ts.map new file mode 100644 index 0000000..1dcb690 --- /dev/null +++ b/types/Add-on/Template/ShowTemplateDesign.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowTemplateDesign.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/ShowTemplateDesign.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBAAa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CA+Bb"} \ No newline at end of file diff --git a/types/Add-on/Template/ShowTopline.d.ts b/types/Add-on/Template/ShowTopline.d.ts new file mode 100644 index 0000000..654c597 --- /dev/null +++ b/types/Add-on/Template/ShowTopline.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ShowTopLine implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowTopline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/ShowTopline.d.ts.map b/types/Add-on/Template/ShowTopline.d.ts.map new file mode 100644 index 0000000..4ac43eb --- /dev/null +++ b/types/Add-on/Template/ShowTopline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowTopline.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/ShowTopline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/Template/SplitTemplate.d.ts b/types/Add-on/Template/SplitTemplate.d.ts new file mode 100644 index 0000000..43c71b9 --- /dev/null +++ b/types/Add-on/Template/SplitTemplate.d.ts @@ -0,0 +1,11 @@ +import { Command } from "../../Editor/CommandMachine"; +import { TemplateSplitType } from "../../DatabaseServices/Template/TemplateType"; +export declare class Command_SplitTemplate implements Command { + exec(): Promise; +} +export declare class Command_SplitTemplateByDir implements Command { + private type; + constructor(type: TemplateSplitType); + exec(): Promise; +} +//# sourceMappingURL=SplitTemplate.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/SplitTemplate.d.ts.map b/types/Add-on/Template/SplitTemplate.d.ts.map new file mode 100644 index 0000000..ffbf7cd --- /dev/null +++ b/types/Add-on/Template/SplitTemplate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SplitTemplate.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/SplitTemplate.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAIjF,qBACa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAqBb;AAED,qBAAa,0BAA2B,YAAW,OAAO;IAE1C,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,iBAAiB;IACrC,IAAI;CAeb"} \ No newline at end of file diff --git a/types/Add-on/Template/TemplateTagCommand.d.ts b/types/Add-on/Template/TemplateTagCommand.d.ts new file mode 100644 index 0000000..379a085 --- /dev/null +++ b/types/Add-on/Template/TemplateTagCommand.d.ts @@ -0,0 +1,21 @@ +export interface ITempTagProps { + tagName: string; + description: string; + dirId: string; +} +export declare class TemplateTagCommand { + private _tagList; + private _needUpload; + get TagList(): ITempTagProps[]; + private CheckTagName; + GetTagById(tid: string): ITempTagProps; + GetTagByName(tagName: string): ITempTagProps; + AddTag(tagName: string, dirId: string): void; + RemoveTag(tagName: string): void; + UploadTagList(): Promise; + ReadTagList(tags: ITempTagProps[]): void; + ModifyTagName(tagName: string, newName: string, desc?: string): void; + ClearTagList(): void; +} +export declare const templateTagCommand: TemplateTagCommand; +//# sourceMappingURL=TemplateTagCommand.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Template/TemplateTagCommand.d.ts.map b/types/Add-on/Template/TemplateTagCommand.d.ts.map new file mode 100644 index 0000000..4e1e582 --- /dev/null +++ b/types/Add-on/Template/TemplateTagCommand.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateTagCommand.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Template/TemplateTagCommand.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAE1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,qBAAa,kBAAkB;IAG3B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,WAAW,CAAS;IAC5B,IAAI,OAAO,oBAGV;IACD,OAAO,CAAC,YAAY;IAepB,UAAU,CAAC,GAAG,EAAE,MAAM;IAItB,YAAY,CAAC,OAAO,EAAE,MAAM;IAI5B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IA4CrC,SAAS,CAAC,OAAO,EAAE,MAAM;IAWnB,aAAa;IAanB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE;IASjC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAoB7D,YAAY;CAMf;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file diff --git a/types/Add-on/TemplateSearch.d.ts b/types/Add-on/TemplateSearch.d.ts new file mode 100644 index 0000000..c33ecb9 --- /dev/null +++ b/types/Add-on/TemplateSearch.d.ts @@ -0,0 +1,24 @@ +import * as React from 'react'; +import { Command } from "../Editor/CommandMachine"; +import { IDrawBoardAutoCutOption } from '../UI/Store/BoardInterface'; +import { IGetRoomInfo } from '../UI/Components/Template/GetRoomCabName'; +export declare class Command_TemplateSearch implements Command { + private isCheck; + constructor(isCheck?: boolean); + exec(): Promise; +} +export declare class TemplateSearchDialog extends React.Component<{ + url: string; +}, {}> { + private autoCutOption; + OnMessage: (e: MessageEvent) => Promise; + private handleBuy; + private handleCheck; + private renderFooter; + UNSAFE_componentWillMount(): Promise; + componentWillUnmount(): Promise; + render(): JSX.Element; +} +export declare function ReadAutoCutConfig(key: string, autoCutOption: IDrawBoardAutoCutOption, option?: IGetRoomInfo): Promise; +export declare function UploadAutoCutConfig(name: string, autoCutOption: IDrawBoardAutoCutOption, option?: IGetRoomInfo): Promise; +//# sourceMappingURL=TemplateSearch.d.ts.map \ No newline at end of file diff --git a/types/Add-on/TemplateSearch.d.ts.map b/types/Add-on/TemplateSearch.d.ts.map new file mode 100644 index 0000000..a00f272 --- /dev/null +++ b/types/Add-on/TemplateSearch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateSearch.d.ts","sourceRoot":"","sources":["../../../src/Add-on/TemplateSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,OAAO,EAAe,MAAM,0BAA0B,CAAC;AAShE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAIrE,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAExE,qBAAa,sBAAuB,YAAW,OAAO;IAEtC,OAAO,CAAC,OAAO;gBAAP,OAAO,UAAQ;IAC7B,IAAI;CAUb;AAED,qBACa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;CAAE,EAAE,EAAE,CAAC;IAC/D,OAAO,CAAC,aAAa,CAAqE;IACtG,SAAS,MAAa,YAAY,mBAOhC;IACF,OAAO,CAAC,SAAS,CAyCf;IACF,OAAO,CAAC,WAAW,CAMjB;IACF,OAAO,CAAC,YAAY,CAUlB;IACI,yBAAyB;IAIzB,oBAAoB;IAI1B,MAAM;CAYT;AAGD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,CAAC,EAAE,YAAY,iBA4BjH;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,CAAC,EAAE,YAAY,iBAqBpH"} \ No newline at end of file diff --git a/types/Add-on/TestFb.d.ts b/types/Add-on/TestFb.d.ts new file mode 100644 index 0000000..9c7955a --- /dev/null +++ b/types/Add-on/TestFb.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class TestFb implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestFb.d.ts.map \ No newline at end of file diff --git a/types/Add-on/TestFb.d.ts.map b/types/Add-on/TestFb.d.ts.map new file mode 100644 index 0000000..c4dd646 --- /dev/null +++ b/types/Add-on/TestFb.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestFb.d.ts","sourceRoot":"","sources":["../../../src/Add-on/TestFb.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,MAAO,YAAW,OAAO;IAE5B,IAAI;CAgEb"} \ No newline at end of file diff --git a/types/Add-on/TestPointPickParse.d.ts b/types/Add-on/TestPointPickParse.d.ts new file mode 100644 index 0000000..9881c06 --- /dev/null +++ b/types/Add-on/TestPointPickParse.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_TestPointPickParse implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestPointPickParse.d.ts.map \ No newline at end of file diff --git a/types/Add-on/TestPointPickParse.d.ts.map b/types/Add-on/TestPointPickParse.d.ts.map new file mode 100644 index 0000000..b35790c --- /dev/null +++ b/types/Add-on/TestPointPickParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestPointPickParse.d.ts","sourceRoot":"","sources":["../../../src/Add-on/TestPointPickParse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,0BAA2B,YAAW,OAAO;IAEhD,IAAI;CAgBb"} \ No newline at end of file diff --git a/types/Add-on/Text2Curve.d.ts b/types/Add-on/Text2Curve.d.ts new file mode 100644 index 0000000..96907ba --- /dev/null +++ b/types/Add-on/Text2Curve.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Text2Curve implements Command { + exec(): Promise; + private getPolylineFromPath; +} +//# sourceMappingURL=Text2Curve.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Text2Curve.d.ts.map b/types/Add-on/Text2Curve.d.ts.map new file mode 100644 index 0000000..a912b51 --- /dev/null +++ b/types/Add-on/Text2Curve.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Text2Curve.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Text2Curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AASnD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;IA8CV,OAAO,CAAC,mBAAmB;CAQ9B"} \ No newline at end of file diff --git a/types/Add-on/ToggleUI.d.ts b/types/Add-on/ToggleUI.d.ts new file mode 100644 index 0000000..c6a21c8 --- /dev/null +++ b/types/Add-on/ToggleUI.d.ts @@ -0,0 +1,4 @@ +export declare class Command_ToggleUI { + exec(): Promise; +} +//# sourceMappingURL=ToggleUI.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ToggleUI.d.ts.map b/types/Add-on/ToggleUI.d.ts.map new file mode 100644 index 0000000..582ba2c --- /dev/null +++ b/types/Add-on/ToggleUI.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToggleUI.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ToggleUI.ts"],"names":[],"mappings":"AACA,qBAAa,gBAAgB;IAEnB,IAAI;CAOb"} \ No newline at end of file diff --git a/types/Add-on/Trim.d.ts b/types/Add-on/Trim.d.ts new file mode 100644 index 0000000..1f4c295 --- /dev/null +++ b/types/Add-on/Trim.d.ts @@ -0,0 +1,20 @@ +import { Vector3 } from 'three'; +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +import { Command } from '../Editor/CommandMachine'; +import { SelectBox } from '../Editor/SelectBox'; +export declare class Command_Trim implements Command { + exec(): Promise; + private JigTrim; + private GetIntersetPoints; + /** + * 裁剪普通曲线 + * @param curve + * @param kniefCus + * @param selBox + * @param [isSelect] 是否已经被选中 + */ + TrimCurve(curve: Curve, kniefCus: Curve[], selBox: SelectBox, thisCurve?: Curve, insSelfPts?: Vector3[]): Curve[]; + TrimPolyline(curve: Polyline, kniefCus: Curve[], selBox: SelectBox): Polyline[]; +} +//# sourceMappingURL=Trim.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Trim.d.ts.map b/types/Add-on/Trim.d.ts.map new file mode 100644 index 0000000..ed89fbb --- /dev/null +++ b/types/Add-on/Trim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Trim.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Trim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAc,MAAM,qBAAqB,CAAC;AAG5D,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;IA6EV,OAAO,CAAC,OAAO;IA8Bf,OAAO,CAAC,iBAAiB;IAYzB;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,KAAa,EAAE,UAAU,GAAE,OAAO,EAAO,GAAG,KAAK,EAAE;IAwC5H,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS;CA+CrE"} \ No newline at end of file diff --git a/types/Add-on/Undo.d.ts b/types/Add-on/Undo.d.ts new file mode 100644 index 0000000..d74b718 --- /dev/null +++ b/types/Add-on/Undo.d.ts @@ -0,0 +1,12 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Undo implements Command { + NoHistory: boolean; + Transparency: boolean; + exec(): Promise; +} +export declare class Redo implements Command { + NoHistory: boolean; + Transparency: boolean; + exec(): Promise; +} +//# sourceMappingURL=Undo.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Undo.d.ts.map b/types/Add-on/Undo.d.ts.map new file mode 100644 index 0000000..d1ad151 --- /dev/null +++ b/types/Add-on/Undo.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Undo.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Undo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,qBAAa,IAAK,YAAW,OAAO;IAEhC,SAAS,UAAQ;IACjB,YAAY,UAAQ;IACd,IAAI;CAIb;AAGD,qBAAa,IAAK,YAAW,OAAO;IAEhC,SAAS,UAAQ;IACjB,YAAY,UAAQ;IACd,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/UpdateEntityDrawTask.d.ts b/types/Add-on/UpdateEntityDrawTask.d.ts new file mode 100644 index 0000000..a8e8a2a --- /dev/null +++ b/types/Add-on/UpdateEntityDrawTask.d.ts @@ -0,0 +1,8 @@ +import { Entity } from '../DatabaseServices/Entity/Entity'; +export declare class UpdateEntityDrawTask { + private stop; + constructor(entitys: Entity[]); + Stop(): void; + UpdateDraw(ens: Entity[]): Promise; +} +//# sourceMappingURL=UpdateEntityDrawTask.d.ts.map \ No newline at end of file diff --git a/types/Add-on/UpdateEntityDrawTask.d.ts.map b/types/Add-on/UpdateEntityDrawTask.d.ts.map new file mode 100644 index 0000000..eb957e6 --- /dev/null +++ b/types/Add-on/UpdateEntityDrawTask.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpdateEntityDrawTask.d.ts","sourceRoot":"","sources":["../../../src/Add-on/UpdateEntityDrawTask.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,qBAAa,oBAAoB;IAG7B,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM,EAAE;IAK7B,IAAI;IAEE,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;CA2BjC"} \ No newline at end of file diff --git a/types/Add-on/ViewChange.d.ts b/types/Add-on/ViewChange.d.ts new file mode 100644 index 0000000..0e8003d --- /dev/null +++ b/types/Add-on/ViewChange.d.ts @@ -0,0 +1,13 @@ +import { Vector3 } from "three"; +import { Command } from "../Editor/CommandMachine"; +export declare class ViewChange implements Command { + private viewDir; + private useWCS; + constructor(viewDir: Vector3, useWCS?: boolean); + get NoHistory(): boolean; + get Transparency(): boolean; + exec(): Promise; + UcsLookAt(viewDir: Vector3): void; + private ChangeViewport; +} +//# sourceMappingURL=ViewChange.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ViewChange.d.ts.map b/types/Add-on/ViewChange.d.ts.map new file mode 100644 index 0000000..7ac715e --- /dev/null +++ b/types/Add-on/ViewChange.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ViewChange.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ViewChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,qBAAa,UAAW,YAAW,OAAO;IAE1B,OAAO,CAAC,OAAO;IAAW,OAAO,CAAC,MAAM;gBAAhC,OAAO,EAAE,OAAO,EAAU,MAAM,UAAQ;IAM5D,IAAI,SAAS,YAGZ;IAGD,IAAI,YAAY,YAGf;IAEK,IAAI;IAkCV,SAAS,CAAC,OAAO,EAAE,OAAO;IAW1B,OAAO,CAAC,cAAc;CAQzB"} \ No newline at end of file diff --git a/types/Add-on/Viewport/OneKeyLayout.d.ts b/types/Add-on/Viewport/OneKeyLayout.d.ts new file mode 100644 index 0000000..78e6426 --- /dev/null +++ b/types/Add-on/Viewport/OneKeyLayout.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class OneKeyLayout implements Command { + exec(): Promise; +} +//# sourceMappingURL=OneKeyLayout.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Viewport/OneKeyLayout.d.ts.map b/types/Add-on/Viewport/OneKeyLayout.d.ts.map new file mode 100644 index 0000000..e48b4ca --- /dev/null +++ b/types/Add-on/Viewport/OneKeyLayout.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OneKeyLayout.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Viewport/OneKeyLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAwBtD,qBAAa,YAAa,YAAW,OAAO;IAElC,IAAI;CA0Nb"} \ No newline at end of file diff --git a/types/Add-on/Viewport/OneKeyPrint.d.ts b/types/Add-on/Viewport/OneKeyPrint.d.ts new file mode 100644 index 0000000..f45a178 --- /dev/null +++ b/types/Add-on/Viewport/OneKeyPrint.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class OneKeyPrint implements Command { + exec(): Promise; +} +//# sourceMappingURL=OneKeyPrint.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Viewport/OneKeyPrint.d.ts.map b/types/Add-on/Viewport/OneKeyPrint.d.ts.map new file mode 100644 index 0000000..c036507 --- /dev/null +++ b/types/Add-on/Viewport/OneKeyPrint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OneKeyPrint.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/Viewport/OneKeyPrint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAYtD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CA4Gb"} \ No newline at end of file diff --git a/types/Add-on/Wblock.d.ts b/types/Add-on/Wblock.d.ts new file mode 100644 index 0000000..1469dbd --- /dev/null +++ b/types/Add-on/Wblock.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Command_Wblock implements Command { + exec(): Promise; +} +//# sourceMappingURL=Wblock.d.ts.map \ No newline at end of file diff --git a/types/Add-on/Wblock.d.ts.map b/types/Add-on/Wblock.d.ts.map new file mode 100644 index 0000000..3ee4a0f --- /dev/null +++ b/types/Add-on/Wblock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Wblock.d.ts","sourceRoot":"","sources":["../../../src/Add-on/Wblock.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;CAwBb"} \ No newline at end of file diff --git a/types/Add-on/ZoomE.d.ts b/types/Add-on/ZoomE.d.ts new file mode 100644 index 0000000..639ab08 --- /dev/null +++ b/types/Add-on/ZoomE.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class ZoomE implements Command { + exec(): Promise; +} +//# sourceMappingURL=ZoomE.d.ts.map \ No newline at end of file diff --git a/types/Add-on/ZoomE.d.ts.map b/types/Add-on/ZoomE.d.ts.map new file mode 100644 index 0000000..4f050b1 --- /dev/null +++ b/types/Add-on/ZoomE.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ZoomE.d.ts","sourceRoot":"","sources":["../../../src/Add-on/ZoomE.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,qBAAa,KAAM,YAAW,OAAO;IAE3B,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/closetest.d.ts b/types/Add-on/closetest.d.ts new file mode 100644 index 0000000..b5bcd20 --- /dev/null +++ b/types/Add-on/closetest.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_ClosePt implements Command { + exec(): Promise; +} +//# sourceMappingURL=closetest.d.ts.map \ No newline at end of file diff --git a/types/Add-on/closetest.d.ts.map b/types/Add-on/closetest.d.ts.map new file mode 100644 index 0000000..c798742 --- /dev/null +++ b/types/Add-on/closetest.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"closetest.d.ts","sourceRoot":"","sources":["../../../src/Add-on/closetest.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAuDb"} \ No newline at end of file diff --git a/types/Add-on/instest.d.ts b/types/Add-on/instest.d.ts new file mode 100644 index 0000000..cab96fe --- /dev/null +++ b/types/Add-on/instest.d.ts @@ -0,0 +1,5 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_INsTest implements Command { + exec(): Promise; +} +//# sourceMappingURL=instest.d.ts.map \ No newline at end of file diff --git a/types/Add-on/instest.d.ts.map b/types/Add-on/instest.d.ts.map new file mode 100644 index 0000000..626b7e4 --- /dev/null +++ b/types/Add-on/instest.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"instest.d.ts","sourceRoot":"","sources":["../../../src/Add-on/instest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA6Bb"} \ No newline at end of file diff --git a/types/Add-on/interfere.d.ts b/types/Add-on/interfere.d.ts new file mode 100644 index 0000000..6b98d6a --- /dev/null +++ b/types/Add-on/interfere.d.ts @@ -0,0 +1,5 @@ +import { Command } from './../Editor/CommandMachine'; +export declare class Interfere implements Command { + exec(): Promise; +} +//# sourceMappingURL=interfere.d.ts.map \ No newline at end of file diff --git a/types/Add-on/interfere.d.ts.map b/types/Add-on/interfere.d.ts.map new file mode 100644 index 0000000..0827179 --- /dev/null +++ b/types/Add-on/interfere.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"interfere.d.ts","sourceRoot":"","sources":["../../../src/Add-on/interfere.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,qBAAa,SAAU,YAAW,OAAO;IAE/B,IAAI;CAqEb"} \ No newline at end of file diff --git a/types/Add-on/loadfbx.d.ts b/types/Add-on/loadfbx.d.ts new file mode 100644 index 0000000..6b28f85 --- /dev/null +++ b/types/Add-on/loadfbx.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../Editor/CommandMachine"; +export declare class Fbx implements Command { + exec(): Promise; +} +//# sourceMappingURL=loadfbx.d.ts.map \ No newline at end of file diff --git a/types/Add-on/loadfbx.d.ts.map b/types/Add-on/loadfbx.d.ts.map new file mode 100644 index 0000000..060bffb --- /dev/null +++ b/types/Add-on/loadfbx.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"loadfbx.d.ts","sourceRoot":"","sources":["../../../src/Add-on/loadfbx.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAe,MAAM,0BAA0B,CAAC;AAGhE,qBAAa,GAAI,YAAW,OAAO;IAEzB,IAAI;CA4Cb"} \ No newline at end of file diff --git a/types/Add-on/polytest.d.ts b/types/Add-on/polytest.d.ts new file mode 100644 index 0000000..b975047 --- /dev/null +++ b/types/Add-on/polytest.d.ts @@ -0,0 +1,12 @@ +import { Command } from '../Editor/CommandMachine'; +export declare class Command_PLTest implements Command { + exec(): Promise; + testResetPoint(): void; + createPolyline(): void; + testClosePoint(): void; + splitPolyline(): void; + splitRec(): void; + testGetPointAtParam(): void; + intersect(): void; +} +//# sourceMappingURL=polytest.d.ts.map \ No newline at end of file diff --git a/types/Add-on/polytest.d.ts.map b/types/Add-on/polytest.d.ts.map new file mode 100644 index 0000000..d319048 --- /dev/null +++ b/types/Add-on/polytest.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"polytest.d.ts","sourceRoot":"","sources":["../../../src/Add-on/polytest.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,qBAAa,cAAe,YAAW,OAAO;IAEpC,IAAI;IAcV,cAAc;IAqCd,cAAc;IAMd,cAAc;IAiEd,aAAa;IAuDb,QAAQ;IAmBR,mBAAmB;IAuEnB,SAAS;CA8CZ"} \ No newline at end of file diff --git a/types/Add-on/showModal/ShowKnifeManageModal.d.ts b/types/Add-on/showModal/ShowKnifeManageModal.d.ts new file mode 100644 index 0000000..dd4f46a --- /dev/null +++ b/types/Add-on/showModal/ShowKnifeManageModal.d.ts @@ -0,0 +1,5 @@ +import { Command } from './../../Editor/CommandMachine'; +export declare class ShowKinfeManageModal implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowKnifeManageModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/showModal/ShowKnifeManageModal.d.ts.map b/types/Add-on/showModal/ShowKnifeManageModal.d.ts.map new file mode 100644 index 0000000..a073661 --- /dev/null +++ b/types/Add-on/showModal/ShowKnifeManageModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowKnifeManageModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/showModal/ShowKnifeManageModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAKxD,qBAAa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/showModal/ShowModal.d.ts b/types/Add-on/showModal/ShowModal.d.ts new file mode 100644 index 0000000..770fffd --- /dev/null +++ b/types/Add-on/showModal/ShowModal.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class ShowEditorBBS implements Command { + exec(): Promise; +} +//# sourceMappingURL=ShowModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/showModal/ShowModal.d.ts.map b/types/Add-on/showModal/ShowModal.d.ts.map new file mode 100644 index 0000000..949e145 --- /dev/null +++ b/types/Add-on/showModal/ShowModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/showModal/ShowModal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAIb"} \ No newline at end of file diff --git a/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts b/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts new file mode 100644 index 0000000..aced247 --- /dev/null +++ b/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts @@ -0,0 +1,12 @@ +import { Polyline } from "../../../DatabaseServices/Entity/Polyline"; +import { OffsetPolyline } from "../../../GraphicsSystem/OffsetPolyline"; +export declare class OffsetTestUtil extends OffsetPolyline { + constructor(_Polyline: Polyline, _OffsetDist: number, _ToolPath?: boolean); + TestDrawPolyline(): void; + TestDrawLinkSubCurve(): void; + TestDrawTrimCircle(): void; + TestDrawTriContours(): void; + TestDrawRetCurves(): void; + TestTrimedCurve(): void; +} +//# sourceMappingURL=OffsetTestUtil.d.ts.map \ No newline at end of file diff --git a/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts.map b/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts.map new file mode 100644 index 0000000..58ea4b7 --- /dev/null +++ b/types/Add-on/test/TestOffset/OffsetTestUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OffsetTestUtil.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/test/TestOffset/OffsetTestUtil.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAGxE,qBAAa,cAAe,SAAQ,cAAc;gBAElC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,UAAQ;IAMvE,gBAAgB;IAsBhB,oBAAoB;IAiCpB,kBAAkB;IAWlB,mBAAmB;IAYnB,iBAAiB;IAUjB,eAAe;CASlB"} \ No newline at end of file diff --git a/types/Add-on/test/TestOffset/TestOffset.d.ts b/types/Add-on/test/TestOffset/TestOffset.d.ts new file mode 100644 index 0000000..61216be --- /dev/null +++ b/types/Add-on/test/TestOffset/TestOffset.d.ts @@ -0,0 +1,3 @@ +import { Entity } from "../../../DatabaseServices/Entity/Entity"; +export declare function LoadEntityFromFileData(data: any): Entity[]; +//# sourceMappingURL=TestOffset.d.ts.map \ No newline at end of file diff --git a/types/Add-on/test/TestOffset/TestOffset.d.ts.map b/types/Add-on/test/TestOffset/TestOffset.d.ts.map new file mode 100644 index 0000000..b1e60ea --- /dev/null +++ b/types/Add-on/test/TestOffset/TestOffset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestOffset.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/test/TestOffset/TestOffset.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAMjE,wBAAgB,sBAAsB,CAAC,IAAI,KAAA,YAoB1C"} \ No newline at end of file diff --git a/types/Add-on/test/TestTape.d.ts b/types/Add-on/test/TestTape.d.ts new file mode 100644 index 0000000..c439b59 --- /dev/null +++ b/types/Add-on/test/TestTape.d.ts @@ -0,0 +1,4 @@ +export declare class Command_TestTape { + exec(): Promise; +} +//# sourceMappingURL=TestTape.d.ts.map \ No newline at end of file diff --git a/types/Add-on/test/TestTape.d.ts.map b/types/Add-on/test/TestTape.d.ts.map new file mode 100644 index 0000000..b069b95 --- /dev/null +++ b/types/Add-on/test/TestTape.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestTape.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/test/TestTape.ts"],"names":[],"mappings":"AAQA,qBACa,gBAAgB;IAEnB,IAAI;CA8Gb"} \ No newline at end of file diff --git a/types/Add-on/test/TestUtil.d.ts b/types/Add-on/test/TestUtil.d.ts new file mode 100644 index 0000000..79481b8 --- /dev/null +++ b/types/Add-on/test/TestUtil.d.ts @@ -0,0 +1,4 @@ +import { Object3D } from "three"; +import { Entity } from "../../DatabaseServices/Entity/Entity"; +export declare function TestDraw(en: Entity | Entity[] | Object3D | Object3D[], colorIndex?: number): Promise; +//# sourceMappingURL=TestUtil.d.ts.map \ No newline at end of file diff --git a/types/Add-on/test/TestUtil.d.ts.map b/types/Add-on/test/TestUtil.d.ts.map new file mode 100644 index 0000000..a985476 --- /dev/null +++ b/types/Add-on/test/TestUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestUtil.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/test/TestUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAE9D,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,EAAE,EAAE,UAAU,SAAI,iBAyB3F"} \ No newline at end of file diff --git a/types/Add-on/test/testIntersect.d.ts b/types/Add-on/test/testIntersect.d.ts new file mode 100644 index 0000000..37742dd --- /dev/null +++ b/types/Add-on/test/testIntersect.d.ts @@ -0,0 +1,9 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class TestIntersect implements Command { + exec(): Promise; + CommonIntersect(): Promise; + testLineAndCirOrArc(): Promise; + testCirAndCir(): Promise; + testInter(): Promise; +} +//# sourceMappingURL=testIntersect.d.ts.map \ No newline at end of file diff --git a/types/Add-on/test/testIntersect.d.ts.map b/types/Add-on/test/testIntersect.d.ts.map new file mode 100644 index 0000000..99d3586 --- /dev/null +++ b/types/Add-on/test/testIntersect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testIntersect.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/test/testIntersect.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;IAWJ,eAAe;IAuBf,mBAAmB;IAwBnB,aAAa;IA0Bb,SAAS;CAoBlB"} \ No newline at end of file diff --git a/types/Add-on/testEntity/DrawShapeManage.d.ts b/types/Add-on/testEntity/DrawShapeManage.d.ts new file mode 100644 index 0000000..f0b8803 --- /dev/null +++ b/types/Add-on/testEntity/DrawShapeManage.d.ts @@ -0,0 +1,5 @@ +import { ShapeManager } from "../../DatabaseServices/ShapeManager"; +import { Shape } from "../../DatabaseServices/Shape"; +export declare function DrawShapeManage(sm: ShapeManager): void; +export declare function DrawShape(sp: Shape): void; +//# sourceMappingURL=DrawShapeManage.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/DrawShapeManage.d.ts.map b/types/Add-on/testEntity/DrawShapeManage.d.ts.map new file mode 100644 index 0000000..fbbee01 --- /dev/null +++ b/types/Add-on/testEntity/DrawShapeManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawShapeManage.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/DrawShapeManage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,wBAAgB,eAAe,CAAC,EAAE,EAAE,YAAY,QAQ/C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,KAAK,QAQlC"} \ No newline at end of file diff --git a/types/Add-on/testEntity/ParseMaterialImage.d.ts b/types/Add-on/testEntity/ParseMaterialImage.d.ts new file mode 100644 index 0000000..83c13fb --- /dev/null +++ b/types/Add-on/testEntity/ParseMaterialImage.d.ts @@ -0,0 +1,9 @@ +import { MeshPhongMaterial, Texture, MeshPhysicalMaterial } from "three"; +import { FBXLoader } from "three/examples/jsm/loaders/FBXLoader"; +import 'three/examples/jsm/libs/inflate.module.min.js'; +export declare const UE_RES_URL = "https://cf.qcad.cc:25111/ue/"; +export declare const UE_FBX_LOADER: FBXLoader; +export declare function ParseMaterialImages(url: string): Promise>; +export declare function ParseFBXUrl(url: string): string; +export declare function ConverMaterial(m: MeshPhongMaterial, exr: Texture, imgMap: Map): MeshPhysicalMaterial; +//# sourceMappingURL=ParseMaterialImage.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/ParseMaterialImage.d.ts.map b/types/Add-on/testEntity/ParseMaterialImage.d.ts.map new file mode 100644 index 0000000..c86d608 --- /dev/null +++ b/types/Add-on/testEntity/ParseMaterialImage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseMaterialImage.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/ParseMaterialImage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAoB,EAAgD,MAAM,OAAO,CAAC;AACvH,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEjE,OAAO,+CAA+C,CAAC;AACvD,eAAO,MAAM,UAAU,iCAAiC,CAAC;AACzD,eAAO,MAAM,aAAa,WAAsC,CAAC;AAEjE,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,0CAcpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,wBAuBvG"} \ No newline at end of file diff --git a/types/Add-on/testEntity/SimplifyPolyline.d.ts b/types/Add-on/testEntity/SimplifyPolyline.d.ts new file mode 100644 index 0000000..d60224c --- /dev/null +++ b/types/Add-on/testEntity/SimplifyPolyline.d.ts @@ -0,0 +1,3 @@ +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +export declare function SimplifyPolyline(polyline: Polyline): import("../../DatabaseServices/Entity/Curve").Curve | Polyline; +//# sourceMappingURL=SimplifyPolyline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/SimplifyPolyline.d.ts.map b/types/Add-on/testEntity/SimplifyPolyline.d.ts.map new file mode 100644 index 0000000..eddd160 --- /dev/null +++ b/types/Add-on/testEntity/SimplifyPolyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SimplifyPolyline.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/SimplifyPolyline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,kEAuBlD"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestBoundaryBox.d.ts b/types/Add-on/testEntity/TestBoundaryBox.d.ts new file mode 100644 index 0000000..035fcbb --- /dev/null +++ b/types/Add-on/testEntity/TestBoundaryBox.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestBoundaryBox implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestBoundaryBox.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestBoundaryBox.d.ts.map b/types/Add-on/testEntity/TestBoundaryBox.d.ts.map new file mode 100644 index 0000000..f4abf95 --- /dev/null +++ b/types/Add-on/testEntity/TestBoundaryBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestBoundaryBox.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestBoundaryBox.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CAkBb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestBox.d.ts b/types/Add-on/testEntity/TestBox.d.ts new file mode 100644 index 0000000..cd94648 --- /dev/null +++ b/types/Add-on/testEntity/TestBox.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestBox implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestBox.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestBox.d.ts.map b/types/Add-on/testEntity/TestBox.d.ts.map new file mode 100644 index 0000000..8d8ef9b --- /dev/null +++ b/types/Add-on/testEntity/TestBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestBox.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestBox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAoCb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestCurve.d.ts b/types/Add-on/testEntity/TestCurve.d.ts new file mode 100644 index 0000000..e8cde86 --- /dev/null +++ b/types/Add-on/testEntity/TestCurve.d.ts @@ -0,0 +1,18 @@ +import { Vector3, Box3 } from "three"; +import { Contour } from "../../DatabaseServices/Contour"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Command } from "../../Editor/CommandMachine"; +import { Box3Ext } from "../../Geometry/Box"; +import { Entity } from "../../DatabaseServices/Entity/Entity"; +export declare class TestTargeOnCurve implements Command { + exec(): Promise; + testClip(outline: Polyline, l: Curve): any[]; + testPtIn(outline: Polyline, l: Curve): void; +} +export declare function testPts(pts: Vector3[], color?: number): void; +export declare function testContours(cons: Contour[], color?: number): void; +export declare function testCurve(cons: Entity[], color?: number): void; +export declare function testBox(box3: Array, color?: number): void; +export declare function testtBox3(box3: Box3, colorIndex?: number): void; +//# sourceMappingURL=TestCurve.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestCurve.d.ts.map b/types/Add-on/testEntity/TestCurve.d.ts.map new file mode 100644 index 0000000..c17d14e --- /dev/null +++ b/types/Add-on/testEntity/TestCurve.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestCurve.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestCurve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAItC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAG9D,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;IAyCV,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK;IAqCpC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK;CAUvC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,SAAI,QAOhD;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,SAAI,QAOtD;AACD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAU,QAO1D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,EAAE,KAAK,GAAE,MAAU,QAQrE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,SAAI,QAOnD"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts b/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts new file mode 100644 index 0000000..95bf42e --- /dev/null +++ b/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestDrawEdgeGeometry implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestDrawEdgeGeometry.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts.map b/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts.map new file mode 100644 index 0000000..ef4732e --- /dev/null +++ b/types/Add-on/testEntity/TestDrawEdgeGeometry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestDrawEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestDrawEdgeGeometry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,4BAA6B,YAAW,OAAO;IAElD,IAAI;CAsCb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestFilletCode.d.ts b/types/Add-on/testEntity/TestFilletCode.d.ts new file mode 100644 index 0000000..8048a92 --- /dev/null +++ b/types/Add-on/testEntity/TestFilletCode.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class TestFillet implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestFilletCode.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestFilletCode.d.ts.map b/types/Add-on/testEntity/TestFilletCode.d.ts.map new file mode 100644 index 0000000..3cd9453 --- /dev/null +++ b/types/Add-on/testEntity/TestFilletCode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestFilletCode.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestFilletCode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAItD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CAmDb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestPointInCurveDirection.d.ts b/types/Add-on/testEntity/TestPointInCurveDirection.d.ts new file mode 100644 index 0000000..f5a36c0 --- /dev/null +++ b/types/Add-on/testEntity/TestPointInCurveDirection.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestPointInCurveDirection implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestPointInCurveDirection.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestPointInCurveDirection.d.ts.map b/types/Add-on/testEntity/TestPointInCurveDirection.d.ts.map new file mode 100644 index 0000000..f79dbff --- /dev/null +++ b/types/Add-on/testEntity/TestPointInCurveDirection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestPointInCurveDirection.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestPointInCurveDirection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,iCAAkC,YAAW,OAAO;IAEvD,IAAI;CAab"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestRegionParse.d.ts b/types/Add-on/testEntity/TestRegionParse.d.ts new file mode 100644 index 0000000..9a32e5b --- /dev/null +++ b/types/Add-on/testEntity/TestRegionParse.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestRegionParse implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestRegionParse.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestRegionParse.d.ts.map b/types/Add-on/testEntity/TestRegionParse.d.ts.map new file mode 100644 index 0000000..b5c1a12 --- /dev/null +++ b/types/Add-on/testEntity/TestRegionParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestRegionParse.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestRegionParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBAAa,uBAAwB,YAAW,OAAO;IAE7C,IAAI;CAgBb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestSweepMaxLength.d.ts b/types/Add-on/testEntity/TestSweepMaxLength.d.ts new file mode 100644 index 0000000..60d98b1 --- /dev/null +++ b/types/Add-on/testEntity/TestSweepMaxLength.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestSweepMaxLength implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestSweepMaxLength.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestSweepMaxLength.d.ts.map b/types/Add-on/testEntity/TestSweepMaxLength.d.ts.map new file mode 100644 index 0000000..454ef1c --- /dev/null +++ b/types/Add-on/testEntity/TestSweepMaxLength.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestSweepMaxLength.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestSweepMaxLength.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBACa,0BAA2B,YAAW,OAAO;IAEhD,IAAI;CAab"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestTemplateDelete.d.ts b/types/Add-on/testEntity/TestTemplateDelete.d.ts new file mode 100644 index 0000000..d0f3484 --- /dev/null +++ b/types/Add-on/testEntity/TestTemplateDelete.d.ts @@ -0,0 +1,8 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_DeleteTemplate implements Command { + exec(): Promise; +} +export declare class Command_Template2Tree implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestTemplateDelete.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestTemplateDelete.d.ts.map b/types/Add-on/testEntity/TestTemplateDelete.d.ts.map new file mode 100644 index 0000000..577b84b --- /dev/null +++ b/types/Add-on/testEntity/TestTemplateDelete.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestTemplateDelete.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestTemplateDelete.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAkB,MAAM,6BAA6B,CAAC;AAGtE,qBAAa,sBAAuB,YAAW,OAAO;IAE5C,IAAI;CAMb;AAED,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CAQb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/TestVPath.d.ts b/types/Add-on/testEntity/TestVPath.d.ts new file mode 100644 index 0000000..ea657bb --- /dev/null +++ b/types/Add-on/testEntity/TestVPath.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestVPath implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestVPath.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/TestVPath.d.ts.map b/types/Add-on/testEntity/TestVPath.d.ts.map new file mode 100644 index 0000000..53d9d98 --- /dev/null +++ b/types/Add-on/testEntity/TestVPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestVPath.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/TestVPath.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBACa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CAyBb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/test.d.ts b/types/Add-on/testEntity/test.d.ts new file mode 100644 index 0000000..d8e3135 --- /dev/null +++ b/types/Add-on/testEntity/test.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Test implements Command { + exec(): Promise; +} +//# sourceMappingURL=test.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/test.d.ts.map b/types/Add-on/testEntity/test.d.ts.map new file mode 100644 index 0000000..a8a12cc --- /dev/null +++ b/types/Add-on/testEntity/test.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,qBACa,IAAK,YAAW,OAAO;IAE1B,IAAI;CAuBb"} \ No newline at end of file diff --git a/types/Add-on/testEntity/testCollision.d.ts b/types/Add-on/testEntity/testCollision.d.ts new file mode 100644 index 0000000..cdb23b3 --- /dev/null +++ b/types/Add-on/testEntity/testCollision.d.ts @@ -0,0 +1,6 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class TestCollision implements Command { + exec(): Promise; +} +export declare function showFace(f: any): void; +//# sourceMappingURL=testCollision.d.ts.map \ No newline at end of file diff --git a/types/Add-on/testEntity/testCollision.d.ts.map b/types/Add-on/testEntity/testCollision.d.ts.map new file mode 100644 index 0000000..9cbeb82 --- /dev/null +++ b/types/Add-on/testEntity/testCollision.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"testCollision.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/testCollision.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;CAgCb;AACD,wBAAgB,QAAQ,CAAC,CAAC,KAAA,QAczB"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts b/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts new file mode 100644 index 0000000..2d9d595 --- /dev/null +++ b/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts @@ -0,0 +1,21 @@ +import { Matrix4 } from "three"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Command } from "../../Editor/CommandMachine"; +import { Route } from "../../Geometry/CurveMap"; +export declare class Command_Curve2Polyline implements Command { + IsSaveMax: boolean; + IsOnlySaveSmall: boolean; + SmallWidth: number; + BreakCurve: boolean; + ExtendsMinDist: number; + exec(): Promise; + Doit(selectedCurs: Curve[]): void; + Draw(routes: Route[], ocs: Matrix4, isOnlySaveSmall: boolean, color?: number): void; +} +export declare function CurveInOCS(curve: Curve, Ocs: Matrix4, OcsInv: Matrix4): boolean; +export declare function GroupCurves(curs: Curve[]): { + ocs: Matrix4; + cus: Curve[]; +}[]; +export declare function GetAndMergeRepeatCurves(cus: Curve[]): Set; +//# sourceMappingURL=Command_Curve2Polyline.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts.map b/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts.map new file mode 100644 index 0000000..cc6bc57 --- /dev/null +++ b/types/Add-on/twoD2threeD/Command_Curve2Polyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_Curve2Polyline.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/Command_Curve2Polyline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAQzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAGtD,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAahD,qBAAa,sBAAuB,YAAW,OAAO;IAElD,SAAS,EAAE,OAAO,CAAC;IAEnB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IAEjB,IAAI;IAwBV,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;IAgH1B,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM;CA2D/E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CA4B/E;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,KAAK,EAAE,CAAC;CAAE,EAAE,CAqC5E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,KAAK,EAAE,cAcnD"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts b/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts new file mode 100644 index 0000000..15560a2 --- /dev/null +++ b/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts @@ -0,0 +1,14 @@ +import { Command } from "../../Editor/CommandMachine"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Matrix4 } from "three"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Route } from "../../Geometry/CurveMap"; +export declare class Command_Curve2VSBox implements Command { + boxDepth: number; + spaceOCS: Matrix4; + exec(): Promise; + Doit(selectedCurs: Curve[]): Promise; + DrawVSBoxByRoute(routes: Route[], ocs: Matrix4): Promise; + DrawVSBox(polyline: Polyline, ocs: Matrix4): Promise; +} +//# sourceMappingURL=Command_Curve2VSBox.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts.map b/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts.map new file mode 100644 index 0000000..eaa80ae --- /dev/null +++ b/types/Add-on/twoD2threeD/Command_Curve2VSBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Command_Curve2VSBox.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/Command_Curve2VSBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAiB,MAAM,OAAO,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAShD,qBAAa,mBAAoB,YAAW,OAAO;IAE/C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IACZ,IAAI;IAeJ,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE;IA4F1B,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO;IAO9C,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO;CA4BnD"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts b/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts new file mode 100644 index 0000000..5520692 --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts @@ -0,0 +1,35 @@ +import React from "react"; +import { IConfigOption } from "../../../UI/Components/Board/UserConfig"; +import { IConfigStore } from "../../../UI/Store/BoardStore"; +import '../Modals/Curve2Rec.less'; +import { IBaseOption, IUiOption } from "../../../UI/Store/BoardInterface"; +import { Singleton } from "../../../Common/Singleton"; +export interface Curve2RecOption extends IBaseOption { + isSaveMax: boolean; + isSaveSmall: boolean; + width: number; + isAnaly: boolean; + gap: number; +} +export declare class Curve2RecModalStore extends Singleton implements IConfigStore { + configName: string; + configsNames: string[]; + option: Curve2RecOption; + protected uiOption: IUiOption; + get UIOption(): IUiOption; + InitOption: () => void; + SaveConfig: () => IConfigOption; + UpdateOption: (cof: IConfigOption) => void; + HasInvailValue: () => boolean; + Cancel(): void; + OnOk(): void; +} +export declare class Curve2RecModal extends React.Component<{ + store: Curve2RecModalStore; +}, {}> { + private removeFuncs; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=Curve2RecModal.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts.map b/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts.map new file mode 100644 index 0000000..e3f858d --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/Curve2RecModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Curve2RecModal.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/twoD2threeD/Modals/Curve2RecModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAc,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAK5D,OAAO,0BAA0B,CAAC;AAIlC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAG1E,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACf;AACD,qBAAa,mBAAoB,SAAQ,SAAU,YAAW,YAAY;IAE1D,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,MAAM,EAAE,eAAe,CAAiC;IACpE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC/C,IAAI,QAAQ,+BAKX;IACD,UAAU,aAWR;IACF,UAAU,4EAKR;IACF,YAAY,QAAS,aAAa,UAKhC;IACF,cAAc,gBAIZ;IACF,MAAM;IAIN,IAAI;CAQP;AACD,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,mBAAmB,CAAC;CAAE,EAAE,EAAE,CAAC;IACpF,OAAO,CAAC,WAAW,CAAkB;IACrC,iBAAiB;IAcjB,oBAAoB;IAOpB,MAAM;CAiFT"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/R2b2.d.ts b/types/Add-on/twoD2threeD/Modals/R2b2.d.ts new file mode 100644 index 0000000..6be3db5 --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/R2b2.d.ts @@ -0,0 +1,10 @@ +import { Component } from 'react'; +import { R2B2Store } from '../R2B2Store'; +export declare class R2b2Panel extends Component<{ + store: R2B2Store; +}> { + render(): JSX.Element; + private close; + private confirm; +} +//# sourceMappingURL=R2b2.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/R2b2.d.ts.map b/types/Add-on/twoD2threeD/Modals/R2b2.d.ts.map new file mode 100644 index 0000000..54444d7 --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/R2b2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2b2.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/twoD2threeD/Modals/R2b2.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC,qBACa,SAAU,SAAQ,SAAS,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;CAAE,CAAC;IAE3D,MAAM;IA0EN,OAAO,CAAC,KAAK,CAGX;IACF,OAAO,CAAC,OAAO,CAkBb;CACL"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts b/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts new file mode 100644 index 0000000..30b92b0 --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts @@ -0,0 +1,13 @@ +import React from 'react'; +import '../Modals/Rec2Br.less'; +import { Rec2BrStore } from '../Rec2BrStore'; +export declare class Rec2BrModal extends React.Component<{ + store: Rec2BrStore; +}, {}> { + private removeFuncs; + componentDidMount(): void; + componentWillUnmount(): void; + private getOption; + render(): JSX.Element; +} +//# sourceMappingURL=Rec2Br.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts.map b/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts.map new file mode 100644 index 0000000..74bd9f9 --- /dev/null +++ b/types/Add-on/twoD2threeD/Modals/Rec2Br.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rec2Br.d.ts","sourceRoot":"","sources":["../../../../../src/Add-on/twoD2threeD/Modals/Rec2Br.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,OAAO,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;CAAE,EAAE,EAAE,CAAC;IAEzE,OAAO,CAAC,WAAW,CAAkB;IAErC,iBAAiB;IAajB,oBAAoB;IAOpB,OAAO,CAAC,SAAS,CAsDf;IACF,MAAM;CAkDT"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/ParseBoardData.d.ts b/types/Add-on/twoD2threeD/ParseBoardData.d.ts new file mode 100644 index 0000000..e366168 --- /dev/null +++ b/types/Add-on/twoD2threeD/ParseBoardData.d.ts @@ -0,0 +1,14 @@ +import { Matrix4 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { BoardGetFace } from "../../Geometry/DrillParse/BoardGetFace"; +export declare class ParseBoardData { + pl: Polyline; + faceList: BoardGetFace; + board: Board; + constructor(br: Board, fontMatInv?: Matrix4); + IsCollisionTo(br: ParseBoardData): boolean; + isIntersectOrContain(br: ParseBoardData): boolean; + private Parse; +} +//# sourceMappingURL=ParseBoardData.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/ParseBoardData.d.ts.map b/types/Add-on/twoD2threeD/ParseBoardData.d.ts.map new file mode 100644 index 0000000..c07b4aa --- /dev/null +++ b/types/Add-on/twoD2threeD/ParseBoardData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseBoardData.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/ParseBoardData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAGtE,qBAAa,cAAc;IAEvB,EAAE,EAAE,QAAQ,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;gBACD,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO;IAO3C,aAAa,CAAC,EAAE,EAAE,cAAc;IAKhC,oBAAoB,CAAC,EAAE,EAAE,cAAc;IAevC,OAAO,CAAC,KAAK;CAwBhB"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts b/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts new file mode 100644 index 0000000..1137954 --- /dev/null +++ b/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts @@ -0,0 +1,49 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Rec2BrStore } from "./Rec2BrStore"; +declare enum ParseType { + ParseAll = 0, + ParseFormBackBoard = 1 +} +export declare class ParseBoardNameUtil { + isParseLeftBr: boolean; + isParseRightBr: boolean; + isParseTopBr: boolean; + isParseDownBr: boolean; + isParseGroundLineBr: boolean; + isParseStripeBr: boolean; + isChangeCabinetName: boolean; + leftBrName: string; + rightBrName: string; + topBrName: string; + downBrName: string; + groundLineBrName: string; + stripeBrName: string; + cabinetName: string; + roomName: string; + topBrShrink: number; + downBrShrink: number; + verticalBrShrink: number; + layerBrShrink: number; + groundLineBrMoveBack: number; + backBrLength: number; + backBrWidth: number; + parseType: ParseType; + constructor(store: Rec2BrStore); + InitData(store: Rec2BrStore): void; + ParseBoardNameFormLocation(brarr: Board[]): void; + ParseBoardArrFormBackBoard(arr: Board[][], brarr: Board[]): void; + Doit(brarr: Board[]): void; + private FindBr; + private ChangeDiJiao; + private ChangeZuoCeBan; + private ChangeYouCeBan; + private ChangeDingBan; + private ChangeDiBan; + private ChangeBeiBan; + private CurtailBoard; + private ParseShouKouTiao; + private InitBoardName; + private FrontCurtailBrs; +} +export {}; +//# sourceMappingURL=ParseBoardNameUtil.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts.map b/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts.map new file mode 100644 index 0000000..64f1673 --- /dev/null +++ b/types/Add-on/twoD2threeD/ParseBoardNameUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseBoardNameUtil.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/ParseBoardNameUtil.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAsB5C,aAAK,SAAS;IAEV,QAAQ,IAAI;IACZ,kBAAkB,IAAI;CACzB;AACD,qBAAa,kBAAkB;IAE3B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAE7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;gBACT,KAAK,EAAE,WAAW;IAI9B,QAAQ,CAAC,KAAK,EAAE,WAAW;IA2B3B,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE;IAkGzC,0BAA0B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;IAgCzD,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;IA0CnB,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAgDpB,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,eAAe;CAgE1B"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Polyline2Board.d.ts b/types/Add-on/twoD2threeD/Polyline2Board.d.ts new file mode 100644 index 0000000..2bcdd84 --- /dev/null +++ b/types/Add-on/twoD2threeD/Polyline2Board.d.ts @@ -0,0 +1,43 @@ +import { Matrix4 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +import { Command } from "../../Editor/CommandMachine"; +import { Rec2BrStore } from "./Rec2BrStore"; +export declare class Polyline2Board implements Command { + store: Rec2BrStore; + SpaceOCS: Matrix4; + SpaceOCSInv: Matrix4; + exec(): Promise; + boardThick: number; + boardDepth: number; + fontDis: number; + knifeRadius: number; + grooveLength: number; + grooveDepth: number; + grooveWidth: number; + backLeftExtend: number; + backRightExtend: number; + backTopExtend: number; + backDownExtend: number; + backBoardThick: number; + moveBackLen: number; + moveBackWidth: number; + backBoardMoveDis: number; + backIsTemplate: boolean; + backTemplate: TemplateRecord; + isUseBoardNameToAttr: boolean; + isMultiBackCab: boolean; + maxThickness: number; + backBrName: string; + behindIsRelative: boolean; + footThickness: number; + InitData(store: Rec2BrStore): void; + Doit(pls: Polyline[]): Promise; + DrawBoard(pls: Polyline[], isBack?: boolean, color?: number): Board[]; + IsPolyLineContain(pl1: Polyline, pl2: Polyline): boolean; + private IsBackBoard; + private IsFaceBoard; + private ParsePolyline; +} +//# sourceMappingURL=Polyline2Board.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Polyline2Board.d.ts.map b/types/Add-on/twoD2threeD/Polyline2Board.d.ts.map new file mode 100644 index 0000000..dd28f82 --- /dev/null +++ b/types/Add-on/twoD2threeD/Polyline2Board.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Polyline2Board.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/Polyline2Board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAW,MAAM,OAAO,CAAC;AAK/C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAiB5C,qBACa,cAAe,YAAW,OAAO;IAE1C,KAAK,cAA4C;IACjD,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACf,IAAI;IA+BV,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAE/F,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAE3C,gBAAgB,EAAE,MAAM,CAAC;IAEzB,cAAc,EAAE,OAAO,CAAC;IAExB,YAAY,EAAE,cAAc,CAAC;IAE7B,oBAAoB,EAAE,OAAO,CAAC;IAE9B,cAAc,EAAE,OAAO,CAAS;IAEhC,YAAY,EAAE,MAAM,CAAM;IAC1B,UAAU,SAAQ;IAClB,gBAAgB,UAAS;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW;IA6BrB,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;IAgc1B,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,UAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE;IA+FnE,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ;IAiB9C,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,aAAa;CA4BxB"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2B2Store.d.ts b/types/Add-on/twoD2threeD/R2B2Store.d.ts new file mode 100644 index 0000000..97f9e42 --- /dev/null +++ b/types/Add-on/twoD2threeD/R2B2Store.d.ts @@ -0,0 +1,21 @@ +import { IConfigOption } from "../../UI/Components/Board/UserConfig"; +import { IUiOption } from "../../UI/Store/BoardInterface"; +import { IConfigStore } from "../../UI/Store/BoardStore"; +import { IRect2Br2Option } from "./R2bInterface"; +export declare class R2B2Store implements IConfigStore { + configName: string; + configsNames: string[]; + option: IRect2Br2Option; + uiOption: IUiOption; + constructor(); + get UIOption(): IUiOption; + protected InitDrillType(): void; + InitOption(): void; + SaveConfig(): { + option: IRect2Br2Option; + }; + UpdateOption(conf: IConfigOption): void; + HasInvailValue(): boolean; +} +export declare const r2b2Store: R2B2Store; +//# sourceMappingURL=R2B2Store.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2B2Store.d.ts.map b/types/Add-on/twoD2threeD/R2B2Store.d.ts.map new file mode 100644 index 0000000..f1cfe3a --- /dev/null +++ b/types/Add-on/twoD2threeD/R2B2Store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2B2Store.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/R2B2Store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,qBAAa,SAAU,YAAW,YAAY;IAE9B,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,MAAM,EAAE,eAAe,CAAiF;IACxG,QAAQ,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;;IAQjD,IAAI,QAAQ,IAAI,SAAS,CAAC,eAAe,CAAC,CAKzC;IACD,SAAS,CAAC,aAAa;IASvB,UAAU;IAMV,UAAU;;;IAMV,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,eAAe,CAAC;IAOjD,cAAc;CAIjB;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2BCommon.d.ts b/types/Add-on/twoD2threeD/R2BCommon.d.ts new file mode 100644 index 0000000..3e16eec --- /dev/null +++ b/types/Add-on/twoD2threeD/R2BCommon.d.ts @@ -0,0 +1,24 @@ +import * as React from 'react'; +import { Rec2BrStore } from './Rec2BrStore'; +export interface ISelectBrConfigNameProps { + store: Rec2BrStore; +} +export declare class SelectBrConfigName extends React.Component { + private configNames; + componentDidMount(): Promise; + render(): JSX.Element; + private handleChange; +} +interface ISelectDrillTypeProps { + option: { + drillType: string; + }; + onchange?: (e: string) => void; + style?: React.CSSProperties; +} +export declare class SelectDrillType extends React.Component { + render(): JSX.Element; + private handleChange; +} +export {}; +//# sourceMappingURL=R2BCommon.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2BCommon.d.ts.map b/types/Add-on/twoD2threeD/R2BCommon.d.ts.map new file mode 100644 index 0000000..c456005 --- /dev/null +++ b/types/Add-on/twoD2threeD/R2BCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2BCommon.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/R2BCommon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,MAAM,WAAW,wBAAwB;IAErC,KAAK,EAAE,WAAW,CAAC;CACtB;AAED,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC;IACjE,OAAO,CAAC,WAAW,CAAgB;IACzC,iBAAiB;IAYhB,MAAM;IA2Bb,OAAO,CAAC,YAAY,CAMlB;CACL;AAGD,UAAU,qBAAqB;IAE3B,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;KAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC/B;AAED,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAEvE,MAAM;IAeN,OAAO,CAAC,YAAY,CAMlB;CACL"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts b/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts new file mode 100644 index 0000000..4e08112 --- /dev/null +++ b/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts @@ -0,0 +1,15 @@ +import * as React from 'react'; +import { GetOptionState } from './R2bConfigComponent'; +import { Rec2BrStore } from './Rec2BrStore'; +export interface IR2BProcessComponentProps { + store: Rec2BrStore; + getOption: (state: GetOptionState) => void; +} +export declare class R2BProcessComponent extends React.Component { + private showShops; + private m_ScaleParameter; + private matPars; + render(): JSX.Element; + private selectGoods; +} +//# sourceMappingURL=R2BProcessComponent.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts.map b/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts.map new file mode 100644 index 0000000..f17348d --- /dev/null +++ b/types/Add-on/twoD2threeD/R2BProcessComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2BProcessComponent.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/R2BProcessComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,WAAW,yBAAyB;IAEtC,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAED,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC,yBAAyB,CAAC;IAC/E,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,gBAAgB,CAGtB;IACF,OAAO,CAAC,OAAO,CAEb;IACK,MAAM;IA4Hb,OAAO,CAAC,WAAW,CAMjB;CACL"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts b/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts new file mode 100644 index 0000000..740b9e1 --- /dev/null +++ b/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts @@ -0,0 +1,16 @@ +import { Rec2BrStore } from "./Rec2BrStore"; +import React from 'react'; +export declare enum GetOptionState { + GetDistance = 0, + GetBoard = 1, + GetTemplate = 2 +} +interface IR2BConfigComponentProps { + store: Rec2BrStore; + getOption: (state: GetOptionState) => void; +} +export declare class R2BConfigComponent extends React.Component { + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=R2bConfigComponent.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts.map b/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts.map new file mode 100644 index 0000000..86df61d --- /dev/null +++ b/types/Add-on/twoD2threeD/R2bConfigComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2bConfigComponent.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/R2bConfigComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,oBAAY,cAAc;IAEtB,WAAW,IAAI;IACf,QAAQ,IAAI;IACZ,WAAW,IAAI;CAClB;AAED,UAAU,wBAAwB;IAE9B,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC9C;AAGD,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAE7E,MAAM;CAmPT"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2bInterface.d.ts b/types/Add-on/twoD2threeD/R2bInterface.d.ts new file mode 100644 index 0000000..bcfc6bb --- /dev/null +++ b/types/Add-on/twoD2threeD/R2bInterface.d.ts @@ -0,0 +1,68 @@ +import { DrillType, IBaseOption, IGrooveOption } from "../../UI/Store/BoardInterface"; +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; +export interface IRec2BrOption extends IBaseOption { + cabinetDeep: number; + cabinetBrThick: number; + cabinetCurtail: number; + backBrThick: number; + backBrBiggerThanHeight: number; + backBrBiggerThanWidth: number; + backBrFrontMove: number; + backBrLeftExtend: number; + backBrRightExtend: number; + backBrUpExtend: number; + backBrDownExtend: number; + verticalBrShrink: number; + layerBrShrink: number; + bottomBrShrink: number; + topBrShrink: number; + groundLineBrShrink: number; + farLeftVerticalBrName: string; + farRightVerticalBrName: string; + topMostLayerBrName: string; + bottomMostLayerBrName: string; + bottomMostBackBrName: string; + stripeBrName: string; + cabinetName: string; + isfarLeftVerticalBrName: boolean; + isfarRightVerticalBrName: boolean; + istopMostLayerBrName: boolean; + isbottomMostLayerBrName: boolean; + isbottomMostBackBrName: boolean; + isstripeBrName: boolean; + iscabinetName: boolean; + isMultiBackBr: boolean; + backBrUseTemplate: boolean; + backBrTemplate: TemplateRecord; + grooveOption: IGrooveOption; + [EBoardKeyList.RoomName]: string; + boardMatName: string; + material: string; + color: string; + drillType: string; + sealedDown: string; + sealedLeft: string; + sealedRight: string; + sealedUp: string; + remarks: [string, string][]; + maxThickness: number; + useBrName: boolean; + configName: string; + backBrName: string; + behindIsRelative: boolean; + footerThickness: number; +} +export interface IRect2Br2Option extends IBaseOption { + depthExpr: string; + maxThickness: number; + layerShrink: number; + vertialShrink: number; + [EBoardKeyList.DrillType]: DrillType | string; + [EBoardKeyList.UpSealed]: string; + [EBoardKeyList.DownSealed]: string; + [EBoardKeyList.LeftSealed]: string; + [EBoardKeyList.RightSealed]: string; + remarks: [string, string][]; +} +//# sourceMappingURL=R2bInterface.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/R2bInterface.d.ts.map b/types/Add-on/twoD2threeD/R2bInterface.d.ts.map new file mode 100644 index 0000000..b0c9b2c --- /dev/null +++ b/types/Add-on/twoD2threeD/R2bInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"R2bInterface.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/R2bInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,WAAW,aAAc,SAAQ,WAAW;IAG9C,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IAEvB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,wBAAwB,EAAE,OAAO,CAAC;IAClC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAC;IAM/B,YAAY,EAAE,aAAa,CAAC;IAC5B,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC/B"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Rec2BrStore.d.ts b/types/Add-on/twoD2threeD/Rec2BrStore.d.ts new file mode 100644 index 0000000..b0d8d73 --- /dev/null +++ b/types/Add-on/twoD2threeD/Rec2BrStore.d.ts @@ -0,0 +1,15 @@ +import { BoardStore } from "../../UI/Store/BoardStore"; +import { IConfigOption } from "../../UI/Components/Board/UserConfig"; +import { IRec2BrOption } from "./R2bInterface"; +export declare class Rec2BrStore extends BoardStore { + m_Option: IRec2BrOption; + InitOption(): void; + HasInvailValue(): boolean; + SaveConfig(): IConfigOption; + UpdateRemarks(cof: IConfigOption): void; + UpdateOption(cof: IConfigOption): void; + InitConfigs(): { + 默认: IConfigOption; + }; +} +//# sourceMappingURL=Rec2BrStore.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Rec2BrStore.d.ts.map b/types/Add-on/twoD2threeD/Rec2BrStore.d.ts.map new file mode 100644 index 0000000..283905f --- /dev/null +++ b/types/Add-on/twoD2threeD/Rec2BrStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rec2BrStore.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/Rec2BrStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIvD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,qBAAa,WAAY,SAAQ,UAAU,CAAC,aAAa,CAAC;IAE1C,QAAQ,EAAE,aAAa,CAA+E;IAElH,UAAU;IAaV,cAAc;IAId,UAAU;IAMV,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC;IAkB/C,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,aAAa,CAAC;IA0B9C,WAAW;;;CAyBd"} \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Rect2Board.d.ts b/types/Add-on/twoD2threeD/Rect2Board.d.ts new file mode 100644 index 0000000..38eddb5 --- /dev/null +++ b/types/Add-on/twoD2threeD/Rect2Board.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Rect2Board implements Command { + exec(): Promise; +} +//# sourceMappingURL=Rect2Board.d.ts.map \ No newline at end of file diff --git a/types/Add-on/twoD2threeD/Rect2Board.d.ts.map b/types/Add-on/twoD2threeD/Rect2Board.d.ts.map new file mode 100644 index 0000000..887c002 --- /dev/null +++ b/types/Add-on/twoD2threeD/Rect2Board.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rect2Board.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/twoD2threeD/Rect2Board.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAetD,qBAAa,UAAW,YAAW,OAAO;IAEhC,IAAI;CA8Bb"} \ No newline at end of file diff --git a/types/ApplicationServices/Application.d.ts b/types/ApplicationServices/Application.d.ts new file mode 100644 index 0000000..c465b4c --- /dev/null +++ b/types/ApplicationServices/Application.d.ts @@ -0,0 +1,37 @@ +import { DrillingReactor } from '../Add-on/DrawDrilling/DrillingReactor'; +import { CADFiler } from '../DatabaseServices/CADFiler'; +import { Database } from '../DatabaseServices/Database'; +import { BoardMoveTool } from '../Editor/BoardMoveTool'; +import { Editor } from '../Editor/Editor'; +import { Viewer } from '../GraphicsSystem/Viewer'; +import { CommandReactor } from '../Reactor/CommandReactor'; +import { SyncDataReactor } from '../Reactor/SyncDataReactor'; +import { WebSocketClientServer } from './WebSocketClientServer'; +import { HardwareCuttingReactor } from '../Add-on/BoardCutting/HardwareCuttingReactor'; +import { AutoSaveServer } from '../Editor/AutoSave'; +import { LayoutTool } from '../Editor/LayoutTool'; +export declare let app: ApplicationService; +/** + * webCAD应用. + */ +export declare class ApplicationService { + Database: Database; + Viewer: Viewer; + Editor: Editor; + CommandReactor: CommandReactor; + _drillingReactor: DrillingReactor; + _hardwareCuttingReactor: HardwareCuttingReactor; + Saved: boolean; + MoveTool: BoardMoveTool; + WebSocket: WebSocketClientServer; + SyncDataReactor: SyncDataReactor; + AutoSaveServer: AutoSaveServer; + LayoutTool: LayoutTool; + constructor(); + InitViewDir(): void; + CreateDocument(name?: string): void; + FileOut(): CADFiler; + FileOut2(): CADFiler; + OpenFile(f: CADFiler): void; +} +//# sourceMappingURL=Application.d.ts.map \ No newline at end of file diff --git a/types/ApplicationServices/Application.d.ts.map b/types/ApplicationServices/Application.d.ts.map new file mode 100644 index 0000000..b98c379 --- /dev/null +++ b/types/ApplicationServices/Application.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../../src/ApplicationServices/Application.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAK1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,eAAO,IAAI,GAAG,EAAE,kBAAkB,CAAC;AAEnC;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,eAAe,CAAC;IAElC,uBAAuB,EAAE,sBAAsB,CAAC;IAEhD,KAAK,UAAQ;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,qBAAqB,CAA6D;IAC7F,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;;IAsOvB,WAAW;IAoBX,cAAc,CAAC,IAAI,GAAE,MAAc;IAanC,OAAO,IAAI,QAAQ;IAanB,QAAQ;IAaR,QAAQ,CAAC,CAAC,EAAE,QAAQ;CAkBvB"} \ No newline at end of file diff --git a/types/ApplicationServices/HostApplicationServices.d.ts b/types/ApplicationServices/HostApplicationServices.d.ts new file mode 100644 index 0000000..5887cc9 --- /dev/null +++ b/types/ApplicationServices/HostApplicationServices.d.ts @@ -0,0 +1,11 @@ +import { ApplicationService } from './Application'; +import { MeshBasicMaterial, MeshStandardMaterial } from 'three'; +interface IHostApplicationServices { + Application?: ApplicationService; + DefaultMeshMaterial?: MeshBasicMaterial | MeshStandardMaterial; + UseShadow?: boolean; + ShowHistoryLog?: boolean; +} +export declare let HostApplicationServices: IHostApplicationServices; +export {}; +//# sourceMappingURL=HostApplicationServices.d.ts.map \ No newline at end of file diff --git a/types/ApplicationServices/HostApplicationServices.d.ts.map b/types/ApplicationServices/HostApplicationServices.d.ts.map new file mode 100644 index 0000000..51f1c9f --- /dev/null +++ b/types/ApplicationServices/HostApplicationServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HostApplicationServices.d.ts","sourceRoot":"","sources":["../../../src/ApplicationServices/HostApplicationServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEhE,UAAU,wBAAwB;IAE9B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,IAAI,uBAAuB,EAAE,wBAAmD,CAAC"} \ No newline at end of file diff --git a/types/ApplicationServices/WebSocketClientServer.d.ts b/types/ApplicationServices/WebSocketClientServer.d.ts new file mode 100644 index 0000000..68e030a --- /dev/null +++ b/types/ApplicationServices/WebSocketClientServer.d.ts @@ -0,0 +1,20 @@ +/** + * WebSocket 客户端. 每隔一分钟尝试连接到CAD的服务 + */ +export declare class WebSocketClientServer { + url: string; + private ws; + mode: string; + constructor(url?: string); + _ConnectionPromise: Promise; + Connect(): Promise; + Send(msg: string): Promise; + /** + * 接收到消息. AOP可接入此函数 + * @param {MessageEvent} event + */ + OnMessage: (event: MessageEvent) => void; + OnLinkEvent(isLink: boolean): void; + Close(): Promise; +} +//# sourceMappingURL=WebSocketClientServer.d.ts.map \ No newline at end of file diff --git a/types/ApplicationServices/WebSocketClientServer.d.ts.map b/types/ApplicationServices/WebSocketClientServer.d.ts.map new file mode 100644 index 0000000..4eb11f6 --- /dev/null +++ b/types/ApplicationServices/WebSocketClientServer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WebSocketClientServer.d.ts","sourceRoot":"","sources":["../../../src/ApplicationServices/WebSocketClientServer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,qBAAqB;IAMX,GAAG;IAJtB,OAAO,CAAC,EAAE,CAAY;IAEtB,IAAI,EAAE,MAAM,CAAC;gBAEM,GAAG,SAAK;IAI3B,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAqC3B,IAAI,CAAC,GAAG,EAAE,MAAM;IAOtB;;;OAGG;IACH,SAAS,UAAW,YAAY,UAG9B;IACF,WAAW,CAAC,MAAM,EAAE,OAAO;IAKrB,KAAK;CAOd"} \ No newline at end of file diff --git a/types/ApplicationServices/mesh/createBoard.d.ts b/types/ApplicationServices/mesh/createBoard.d.ts new file mode 100644 index 0000000..0b64bb7 --- /dev/null +++ b/types/ApplicationServices/mesh/createBoard.d.ts @@ -0,0 +1,15 @@ +import { ExtrudeGeometry, Mesh, Shape, Vector2 } from 'three'; +export declare namespace CreateBoardUtil { + class Arc2d { + _StartAn: number; + _EndAn: number; + _StartPoint: Vector2; + _EndPoint: Vector2; + _Center: Vector2; + _Radius: number; + constructor(p1: Vector2, p2: Vector2, bul: number); + } + function CreatePath(pts: Vector2[], buls: number[]): Shape; + function createBoard(boardData: object): Mesh; +} +//# sourceMappingURL=createBoard.d.ts.map \ No newline at end of file diff --git a/types/ApplicationServices/mesh/createBoard.d.ts.map b/types/ApplicationServices/mesh/createBoard.d.ts.map new file mode 100644 index 0000000..7ae1bb1 --- /dev/null +++ b/types/ApplicationServices/mesh/createBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createBoard.d.ts","sourceRoot":"","sources":["../../../../src/ApplicationServices/mesh/createBoard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAW,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKvE,yBAAiB,eAAe,CAChC;IAEI,MAAa,KAAK;QAEd,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;oBACJ,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM;KA4BpD;IAID,SAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,CA0BhE;IAGD,SAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,gFAkD5C;CACJ"} \ No newline at end of file diff --git a/types/Common/ActiveElementWatch.d.ts b/types/Common/ActiveElementWatch.d.ts new file mode 100644 index 0000000..56add5a --- /dev/null +++ b/types/Common/ActiveElementWatch.d.ts @@ -0,0 +1,2 @@ +export declare function ActiveElementsWatch(): void; +//# sourceMappingURL=ActiveElementWatch.d.ts.map \ No newline at end of file diff --git a/types/Common/ActiveElementWatch.d.ts.map b/types/Common/ActiveElementWatch.d.ts.map new file mode 100644 index 0000000..1da968b --- /dev/null +++ b/types/Common/ActiveElementWatch.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActiveElementWatch.d.ts","sourceRoot":"","sources":["../../../src/Common/ActiveElementWatch.ts"],"names":[],"mappings":"AACA,wBAAgB,mBAAmB,SAoClC"} \ No newline at end of file diff --git a/types/Common/AddEntityDrawObject.d.ts b/types/Common/AddEntityDrawObject.d.ts new file mode 100644 index 0000000..5d0415e --- /dev/null +++ b/types/Common/AddEntityDrawObject.d.ts @@ -0,0 +1,5 @@ +import { Object3D } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { RenderType } from "../GraphicsSystem/RenderType"; +export declare function AddEntityDrawObject(obj: Object3D, embedEntity: Entity, renderType?: RenderType): void; +//# sourceMappingURL=AddEntityDrawObject.d.ts.map \ No newline at end of file diff --git a/types/Common/AddEntityDrawObject.d.ts.map b/types/Common/AddEntityDrawObject.d.ts.map new file mode 100644 index 0000000..75055dc --- /dev/null +++ b/types/Common/AddEntityDrawObject.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AddEntityDrawObject.d.ts","sourceRoot":"","sources":["../../../src/Common/AddEntityDrawObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,GAAE,UAAiC,QAOpH"} \ No newline at end of file diff --git a/types/Common/AppCache.d.ts b/types/Common/AppCache.d.ts new file mode 100644 index 0000000..871be24 --- /dev/null +++ b/types/Common/AppCache.d.ts @@ -0,0 +1,11 @@ +declare class Appcache { + private _cacheMap; + has(key: string): boolean; + get(key: string): any | undefined; + set(key: string, value: T): void; + clear(): void; + delete(k: string): void; +} +export declare const appCache: Appcache; +export {}; +//# sourceMappingURL=AppCache.d.ts.map \ No newline at end of file diff --git a/types/Common/AppCache.d.ts.map b/types/Common/AppCache.d.ts.map new file mode 100644 index 0000000..23f62e8 --- /dev/null +++ b/types/Common/AppCache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AppCache.d.ts","sourceRoot":"","sources":["../../../src/Common/AppCache.ts"],"names":[],"mappings":"AAEA,cAAM,QAAQ;IAEV,OAAO,CAAC,SAAS,CAA+B;IAChD,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAcjC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAI5B,KAAK;IAIL,MAAM,CAAC,CAAC,EAAE,MAAM;CAInB;AAED,eAAO,MAAM,QAAQ,UAAiB,CAAC"} \ No newline at end of file diff --git a/types/Common/ArrayExt.d.ts b/types/Common/ArrayExt.d.ts new file mode 100644 index 0000000..4703853 --- /dev/null +++ b/types/Common/ArrayExt.d.ts @@ -0,0 +1,44 @@ +/** + * 删除数组中指定的元素,返回数组本身 + * @param {Array} arr 需要操作的数组 + * @param {*} el 需要移除的元素 + */ +export declare function arrayRemove(arr: Array, el: T): Array; +export declare function arrayRemoveOnce(arr: Array, el: T): Array; +/** + * 删除通过函数校验的元素 + * @param {(e: T) => boolean} checkFuntion 校验函数 + */ +export declare function arrayRemoveIf(arr: Array, checkFuntion: (e: T) => boolean): Array; +export declare function arrayFirst(arr: Array): T; +export declare function arrayLast(arr: { + [key: number]: T; + length: number; +}): T; +/** + * 根据数值从小到大排序数组 + * @param {Array} arr + * @returns {Array} 返回自身 + */ +export declare function arraySortByNumber(arr: Array): Array; +/** + * 对排序好的数组进行去重操作 + * @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数 + * @returns {Array} 返回自身 + */ +export declare function arrayRemoveDuplicateBySort(arr: Array, checkFuction?: (e1: T, e2: T) => boolean): Array; +export declare function arrayMap(arr: Array, mapFunc: (v: T) => T): Array; +declare function checkEqual(e1: any, e2: any): boolean; +/** + * 改变数组的值顺序 + * @param arr 需要改变初始值位置的数组 + * @param index //将index位置以后的值放到起始位置 + */ +export declare function changeArrayStartIndex(arr: T[], index: number): T[]; +export declare function equalArray(a: T[], b: T[], checkF?: typeof checkEqual): boolean; +export declare function arrayClone(arr: T[]): T[]; +export declare function arrayPushArray(arr1: T[], arr2: T[]): T[]; +export declare function arraySum(arr: number[]): number; +export declare function FilterSet(s: Set, fn: (el: T) => boolean): Set; +export {}; +//# sourceMappingURL=ArrayExt.d.ts.map \ No newline at end of file diff --git a/types/Common/ArrayExt.d.ts.map b/types/Common/ArrayExt.d.ts.map new file mode 100644 index 0000000..d167469 --- /dev/null +++ b/types/Common/ArrayExt.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayExt.d.ts","sourceRoot":"","sources":["../../../src/Common/ArrayExt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAa7D;AAGD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAMjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAazF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAG9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE,GAAG,CAAC,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,OAAoB,GAAG,KAAK,CAAC,CAAC,CAAC,CAS3H;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAKzE;AAOD,iBAAS,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAIrE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,oBAAa,WAOhE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAG3C;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAS3D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAKrC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAStE"} \ No newline at end of file diff --git a/types/Common/BoardKeyList.d.ts b/types/Common/BoardKeyList.d.ts new file mode 100644 index 0000000..4cf0d17 --- /dev/null +++ b/types/Common/BoardKeyList.d.ts @@ -0,0 +1,32 @@ +/**统一板件属性key的命名,修改值会导致无法 .xxx该属性 */ +export declare enum EBoardKeyList { + Height = "height", + Width = "width", + Thick = "thickness", + RoomName = "roomName", + CabinetName = "cabinetName", + BrMat = "boardName", + Mat = "material", + Color = "color", + Lines = "lines", + ProcessGroup = "ProcessGroup", + BigHole = "bigHoleDir", + /** + * 排钻类型,当没有定义每个边的排钻数据时,使用统一的排钻类型 + */ + DrillType = "drillType", + ComposingFace = "composingFace", + /** + * 封边数组,定义每个边的封边信息 + */ + HighSealed = "highSealed", + UpSealed = "sealedUp", + DownSealed = "sealedDown", + LeftSealed = "sealedLeft", + RightSealed = "sealedRight", + KnifeRad = "knifeRadius", + SpliteHeight = "spliteHeight", + SpliteWidth = "spliteWidth", + SpliteThickness = "spliteThickness" +} +//# sourceMappingURL=BoardKeyList.d.ts.map \ No newline at end of file diff --git a/types/Common/BoardKeyList.d.ts.map b/types/Common/BoardKeyList.d.ts.map new file mode 100644 index 0000000..89edd57 --- /dev/null +++ b/types/Common/BoardKeyList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardKeyList.d.ts","sourceRoot":"","sources":["../../../src/Common/BoardKeyList.ts"],"names":[],"mappings":"AACA,mCAAmC;AACnC,oBAAY,aAAa;IAErB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,cAAc;IACnB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,KAAK,cAAc;IACnB,GAAG,aAAa;IAChB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,OAAO,eAAe;IACtB;;OAEG;IACH,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B;;OAEG;IACH,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,QAAQ,gBAAgB;IACxB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;CACtC"} \ No newline at end of file diff --git a/types/Common/BoardUtil.d.ts b/types/Common/BoardUtil.d.ts new file mode 100644 index 0000000..1f03233 --- /dev/null +++ b/types/Common/BoardUtil.d.ts @@ -0,0 +1,7 @@ +import { Matrix4, Vector3 } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { Box3Ext } from "../Geometry/Box"; +/**分析不同柜体 */ +export declare function ParseBoardList(borads: Entity[], ocsInv?: Matrix4): Map; +export declare function MirrorEntitys(ens: Entity[], p1: Vector3, v: Vector3, nor: Vector3): void; +//# sourceMappingURL=BoardUtil.d.ts.map \ No newline at end of file diff --git a/types/Common/BoardUtil.d.ts.map b/types/Common/BoardUtil.d.ts.map new file mode 100644 index 0000000..f2c413f --- /dev/null +++ b/types/Common/BoardUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardUtil.d.ts","sourceRoot":"","sources":["../../../src/Common/BoardUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,YAAY;AACZ,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,0BA2ChE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,QAYjF"} \ No newline at end of file diff --git a/types/Common/CheckoutVaildValue.d.ts b/types/Common/CheckoutVaildValue.d.ts new file mode 100644 index 0000000..1fb6a74 --- /dev/null +++ b/types/Common/CheckoutVaildValue.d.ts @@ -0,0 +1,34 @@ +export declare enum CheckObjectType { + BR = "board", + DR = "drill", + AR = "array", + Do = "door", + RC = "referenceCutting", + WR = "winerack", + Lat = "lattice", + RLB = "rotateLayerBoard", + BBC = "boardbatchcurtail", + BBS = "lookoverboardinfos", + R2B = "rec2br", + OnlyNumber = "onlyNum", + None = "none", + SmoothEdge = "smoothEdge", + /**大于0的数字 */ + GT0Num = "gt0num" +} +export declare namespace CheckoutValid { + function HasInvailValue(obj: Object, objType: CheckObjectType): boolean; + function CheckOption(type: CheckObjectType, k: string, v: string): string; + function CheckoutBoardOption(k: string, v: string): string; + function CheckoutDrillOption(k: string, v: string | boolean): string; + function CheckoutRec2BrOption(k: string, v: string): string; + function CheckoutArrayOption(k: string, v: string): string; + function CheckoutDoorOption(k: string, v: string): string; + function CheckoutRotateLayerBoardOption(k: string, v: string): string; + function CheckBoardBatchCurtail(k: string, v: string): string; + function CheckLookOverBoardInfos(k: string, v: string): string; + function CheckOutReferenceCuttingOption(k: string, v: string): string; + function CheckoutWineRackOption(k: string, v: string): string; + function CheckoutLatticeOption(k: string, v: string): string; +} +//# sourceMappingURL=CheckoutVaildValue.d.ts.map \ No newline at end of file diff --git a/types/Common/CheckoutVaildValue.d.ts.map b/types/Common/CheckoutVaildValue.d.ts.map new file mode 100644 index 0000000..aa7f119 --- /dev/null +++ b/types/Common/CheckoutVaildValue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckoutVaildValue.d.ts","sourceRoot":"","sources":["../../../src/Common/CheckoutVaildValue.ts"],"names":[],"mappings":"AAIA,oBAAY,eAAe;IAEvB,EAAE,UAAU;IACZ,EAAE,UAAU;IACZ,EAAE,UAAU;IACZ,EAAE,SAAS;IACX,EAAE,qBAAqB;IACvB,EAAE,aAAa;IACf,GAAG,YAAY;IACf,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;IACzB,GAAG,uBAAuB;IAC1B,GAAG,WAAW;IACd,UAAU,YAAY;IACtB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,YAAY;IACZ,MAAM,WAAW;CACpB;AAED,yBAAiB,aAAa,CAC9B;IACI,SAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,WAmDnE;IACD,SAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UA6CtE;IACD,SAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmFhE;IACD,SAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAmE1E;IACD,SAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAoDjE;IACD,SAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAsChE;IACD,SAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2D/D;IACD,SAAgB,8BAA8B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB3E;IACD,SAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAanE;IACD,SAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBpE;IACD,SAAgB,8BAA8B,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3E;IACD,SAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA+BnE;IACD,SAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA4BlE;CACJ"} \ No newline at end of file diff --git a/types/Common/ColorPalette.d.ts b/types/Common/ColorPalette.d.ts new file mode 100644 index 0000000..ac18ab5 --- /dev/null +++ b/types/Common/ColorPalette.d.ts @@ -0,0 +1,28 @@ +import { Color, LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, ShaderMaterial } from 'three'; +import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial'; +export declare const LINE_WIDTH = 2; +export declare class ColorMaterial { + private constructor(); + private static _LineMaterialMap; + private static _BasicMaterialMap; + static GetLineMaterial(color: number): LineBasicMaterial; + static GetBasicMaterial(color: number): MeshBasicMaterial; + private static _BasicDoubleSideMaterialMap; + static GetBasicMaterialDoubleSide(color: number): MeshBasicMaterial; + private static _ConceptualMaterial; + static GetConceptualMaterial(color: number): ShaderMaterial; + private static _printConceptualMaterial; + static GetPrintConceptualMaterial(): ShaderMaterial; + private static _BasicTransparentMaterialMap; + static GetBasicMaterialTransparent(color: number, opacity: number): MeshBasicMaterial; + private static _BasicTransparentMaterialMap2; + static GetBasicMaterialTransparent2(color: number, opacity: number): MeshBasicMaterial; + static GetColor(color: number): Color; + static RubberBandMaterial: LineDashedMaterial; + static SnapAxisMaterial: LineDashedMaterial; + static PrintLineMatrial: LineMaterial; + static GrayTransparentMeshMaterial: MeshBasicMaterial; + static TransparentMeshMaterial: MeshBasicMaterial; + static TransparentLineMaterial: MeshBasicMaterial; +} +//# sourceMappingURL=ColorPalette.d.ts.map \ No newline at end of file diff --git a/types/Common/ColorPalette.d.ts.map b/types/Common/ColorPalette.d.ts.map new file mode 100644 index 0000000..b5b66fb --- /dev/null +++ b/types/Common/ColorPalette.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ColorPalette.d.ts","sourceRoot":"","sources":["../../../src/Common/ColorPalette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAoB,MAAM,OAAO,CAAC;AAEtI,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AA2QrE,eAAO,MAAM,UAAU,IAAI,CAAC;AAG5B,qBAAa,aAAa;IAEtB,OAAO;IACP,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAwC;IACvE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwC;IACxE,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASxD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASzD,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAwC;IAClF,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASnE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA0C;IAC5E,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM;IAY1C,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAiB;IACxD,MAAM,CAAC,0BAA0B;IAkBjC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAA6C;IACxF,MAAM,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUjE,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAA6C;IACzF,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUlE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAW7B,MAAM,CAAC,kBAAkB,qBAItB;IAGH,MAAM,CAAC,gBAAgB,qBAIpB;IACH,MAAM,CAAC,gBAAgB,eAKpB;IACH,MAAM,CAAC,2BAA2B,oBAI/B;IACH,MAAM,CAAC,uBAAuB,oBAG3B;IACH,MAAM,CAAC,uBAAuB,oBAG3B;CACN"} \ No newline at end of file diff --git a/types/Common/CommandNames.d.ts b/types/Common/CommandNames.d.ts new file mode 100644 index 0000000..2cd3d57 --- /dev/null +++ b/types/Common/CommandNames.d.ts @@ -0,0 +1,196 @@ +export declare enum CommandNames { + Puge = "PUGE", + KJLExport = "KJLEXPORT", + Group = "GROUP", + DXFImport = "DXF", + Insert = "INSERT", + Line = "LINE", + XLine = "XLINE", + Undo = "UNDO", + Redo = "REDO", + RECTANG = "RECTANG", + Circle = "CIRCLE", + Ellipse = "ELLIPSE", + Spline = "SPLINE", + Polyline = "POLYLINE", + Arc = "ARC", + Reg = "REGION", + Scale = "SCALE", + Convert2Polyline = "CONVERT2POLYLINE", + Move = "MOVE", + Rotate = "ROTATE", + RotateRefer = "ROTATEREFER", + Revolve = "REVOLVE", + Sphere = "Sphere", + SpliteTemplate = "SPLITETEMPLATE", + SwitchCamera = "SWITCHCAMERA", + Erase = "ERASE", + Break = "BREAK", + Stretch = "STRETCH", + SelectStretch = "SELECTSTRETCH", + FS = "TOPVIEW", + QS = "FRONTVIEW", + YS = "RIGHTVIEW", + ZS = "LEFTVIEW", + BackView = "BACKVIEW", + BottomView = "BOTTOMVIEW", + Swiso = "SWISO", + HideSelect = "HIDESELECT", + HideUnSelect = "HIDEUNSELECT", + Show = "SHOW", + Save = "SAVE", + SaveAs = "SAVEAS", + New = "NEW", + Open = "OPEN", + CustomUCS = "UCS", + Copy = "COPY", + Reverse = "REVERSE", + Extend = "EXTEND", + Trim = "TRIM", + Fillet = "FILLET", + Offset = "OFFSET", + PointLight = "POINTLIGHT", + PointLight2 = "POINTLIGHT2", + SpotLight = "SPOTLIGHT", + SpotLight2 = "SPOTLIGHT2", + RectLight = "RECTLIGHT", + Divide = "DIVIDE", + Point = "POINT", + AlignDim = "ALGINDIMEN", + LinearDim = "LINEARDIMEN", + AngleDim = "ANGLEDIM", + DimContinue = "CONTINUEDIM", + RadiusDim = "RADIUSDIM", + DiaDim = "DIAMETERDIMEN", + Text = "TEXT", + Intersect = "INTERSECT", + Union = "UNION", + Substract = "SUBSTRACT", + Pedit = "PEDIT", + Join = "JOIN", + Sweep = "SWEEP", + Cylineder = "CYLINEDER", + LRBoard = "LEFTRIGHTBOARD", + TBBoard = "TOPBOTTOMBOARD", + BehindBoard = "BEHINDBOARD", + LayerBoard = "LAYERBOARD", + VertialBoard = "VERTIALBOARD", + SingleBoard = "SINGLEBOARD", + CloseStrip = "CLOSESTRIP", + Door = "DOOR", + DrillConfig = "DRILLCONFIG", + Hole = "DRAWHOLE", + YiXing = "YIXING", + YXLK = "YIXINGCONTOUR", + LinearCutting = "LINEARCUTTING", + NonAssociativeCutting = "NONASSOCIATIVECUTTING", + ReferenceCutting = "REFERENCECUTTING", + AddPtOnBoard = "ADDPTONBOARD", + DeletePtOnBoard = "DELETEPTONBOARD", + BoardFindModify = "BOARDFINDMODIFY", + LookOverBoardInfos = "LOOKOVERBOARDINFOS", + BoardBatchCurtail = "BOARDBATCHCURTAIL", + AutoDimBrs = "AUTODIMBRS", + FastDimBrs = "FASTDIMBRS", + DeleteDim = "DELETEDIM", + RotateLayerBoard = "ROTATELAYERBOARD", + Drawer = "DRAWER", + DeleteHole = "DELETEHOLE", + ReverseDrillFace = "REVERSEDRILLFACE", + ActicityLayerBoard = "ACTICITYLAYERBOARD", + TestFb = "TESTFENGBIAN", + TestModeling = "TESTMODELING", + Mirror = "MIRROR", + Topline = "TOPLINE", + Winerack = "WINERACK", + Lattice = "LATTICE", + Array = "ARRAY", + ComanPanel = "COMMANDPANEL", + Config = "CONFIG", + Esc = "ESC", + Wireframe = "WIREFRAME", + Conceptual = "CONCEPTUAL", + Physical = "PHYSICAL", + Physical2 = "PHYSICAL2", + PrintType = "PRINTTYPE", + DownloadHoleOption = "DOWNHOLECONFIG", + UploadHoleConfig = "UPLOADHOLECONFIG", + ChaiDan = "CHAIDAN", + ChaiDanJB = "CHAIDANJIABEI", + ShowYouhua = "SHOWYOUHUA", + Decompose = "DECOMPOSE", + BatchModify = "BATCHMODIFY", + AutoHoleFaceSetting = "AUTOHOLEFACESETTING", + Combine = "COMBINE", + Template = "TEMPLATE", + TemplateDesign = "TEMPLATEDESIGN", + TemplateSearch = "TEMPLATESEARCH", + TemplateDelete = "TEMPLATEDELETE", + TemplateCheck = "TEMPLATECHECK", + RotateTemplate = "ROTATETEMP", + Print = "PRINT", + Extrude = "EXTRUDE", + HoleTemplate = "HOLETEMPLATE", + CheckModeling = "CHECKMODELING", + ExportData = "EXPORTDATA", + ExportView = "EXPORTVIEW", + EnableSyncData = "ENABLESYNCDATA", + DisableSyncData = "DISABLESYNCDATA", + ToggleSyncData = "TOGGLESYNCDATA", + ShowProcessingGroupModal2 = "SHOWPROCESSINGGROUPMODAL2", + DrawVSBOX = "DRAWVSBOX", + Align = "ALIGN", + BuyMaterial = "BUYMATERIAL", + Interfere = "INTERFERE", + ShowDoor = "SHOWDOOR", + HideDoor = "HIDEDOOR", + Curve2Rect = "CURVE2RECT", + Pl2Br = "RECT2BOARD", + Curve2VSBox = "CURVE2VSBOX", + SetSmoothEdge = "SETSMOOTHEDGE", + ClearRef = "CLEARRELEVANCE", + ExportObj = "EXPORTOBJ", + ExportObj2 = "EXPORTOBJ2", + ExportSTL = "EXPORTSTL", + UpdateBoardInfos = "UPDATEBOARDINFOS", + ToggleUI = "TOGGLEUI", + BoardReplaceTempate = "BOARDREPLACETEMPLATE", + Dist = "DIST", + Explode = "EXPLODE", + Explosion = "EXPLOSIONMAP", + CopyClip = "COPYCLIP", + PasteClip = "PASTECLIP", + Text2Curve = "TEXT2CURVE", + R2b = "RECT2BOARD", + RecyleBin = "RECYCLEBIN", + ChangeColorByMaterial = "CHANGECOLORBYMATERIAL", + RestoreColor = "RESTORECOLOR", + SelectAll = "SELECTALL", + CheckHoles = "CHECKHOLES", + CombinatAttributeBrush = "COMBINATATTRIBUTEBRUSH", + Rect2Winerack = "RECT2WINERACK", + MView = "MVIEW", + MView4 = "MVIEW4", + MView2 = "MVIEW2", + MView3 = "MVIEW3", + ShowFrame = "SHOWFRAME", + UnGroup = "UNGROUP", + OneKeyLayout = "ONEKEYLAYOUT", + SwitchLines = "SWITCHLINES", + OneKeyPrint = "ONEKEYPRINT", + SetHoleNoneType = "SETHOLENONETYPE", + FindMaxSizeBoard = "FINDMAXSIZEBOARDS", + FindMinSizeBoard = "FINDMINSIZEBOARDS", + CheckNoHoleBoard = "CHECKNOHOLEBOARD", + CheckDrawHole = "CHECKDRAWHOLE", + FindModelKnifeRadius = "FINDMODELKNIFERADIUS", + EditorBBS = "EDITORBBS", + CuttingFace = "CUTTINGFACE", + DrawTempByImport = "DRAWTEMPBYIMPORT", + CheckEdge = "CHECKEDGE", + Knife = "KNIFES", + R2B2 = "RECT2BOARD2", + FixIntSelfContour = "FIXINTSELFCONTOUR", + ParseHinge = "PARSEHINGE" +} +//# sourceMappingURL=CommandNames.d.ts.map \ No newline at end of file diff --git a/types/Common/CommandNames.d.ts.map b/types/Common/CommandNames.d.ts.map new file mode 100644 index 0000000..475e337 --- /dev/null +++ b/types/Common/CommandNames.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandNames.d.ts","sourceRoot":"","sources":["../../../src/Common/CommandNames.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Common/CommonSelectOption.d.ts b/types/Common/CommonSelectOption.d.ts new file mode 100644 index 0000000..4db6c97 --- /dev/null +++ b/types/Common/CommonSelectOption.d.ts @@ -0,0 +1,15 @@ +import { ComposingType, LinesType, FaceDirection } from "../UI/Store/BoardInterface"; +/**排版面选择项 */ +export declare const ComposingFaceSelectOption: { + label: string; + value: ComposingType; +}[]; +export declare const LineTypeSelectOption: { + label: string; + value: LinesType; +}[]; +export declare const BigFaceSelectOption: { + label: string; + value: FaceDirection; +}[]; +//# sourceMappingURL=CommonSelectOption.d.ts.map \ No newline at end of file diff --git a/types/Common/CommonSelectOption.d.ts.map b/types/Common/CommonSelectOption.d.ts.map new file mode 100644 index 0000000..83497a0 --- /dev/null +++ b/types/Common/CommonSelectOption.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommonSelectOption.d.ts","sourceRoot":"","sources":["../../../src/Common/CommonSelectOption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAErF,YAAY;AACZ,eAAO,MAAM,yBAAyB;;;GAarC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;GAIhC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;GAEc,CAAC"} \ No newline at end of file diff --git a/types/Common/CurveUtils.d.ts b/types/Common/CurveUtils.d.ts new file mode 100644 index 0000000..5afa961 --- /dev/null +++ b/types/Common/CurveUtils.d.ts @@ -0,0 +1,63 @@ +import { Box3, Matrix3, Matrix4, Vec2, Vector2, Vector3 } from 'three'; +import { Arc } from '../DatabaseServices/Entity/Arc'; +import { Circle } from '../DatabaseServices/Entity/Circle'; +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Ellipse } from '../DatabaseServices/Entity/Ellipse'; +import { Line } from '../DatabaseServices/Entity/Line'; +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +import { Vec3 } from '../Geometry/IVec3'; +import { IntersectResult } from '../GraphicsSystem/IntersectWith'; +export declare function getCircleCenter(pt1: Vector3, pt2: Vector3, pt3: Vector3): Vector3; +export declare function getCirAngleByChordAndTangent(chord: Vector3, tangentLine: Vector3): number; +export declare function getDeterminantFor2V(v1: Vector2, v2: Vector2): number; +export declare function getDeterminantFor3V(v1: Vector3, v2: Vector3, v3: Vector3): number; +/** + * 曲线根据连接来分组,每组都是一条首尾相连的曲线表. + * + * @export + * @param {Curve[]} cus 传入的分组的曲线表 + * @returns {Array>} 返回如下 + * [ + * [c1,c2,c3...],//后面的曲线的起点总是等于上一个曲线的终点 + * [c1,c2,c3...], + * ] + */ +export declare function curveLinkGroup(cus: Curve[]): Array>; +export declare function equalCurve(cu1: Curve, cu2: Curve, tolerance?: number): boolean; +/** +* 计算点在曲线前进方向的方位,左边或者右边 +* +* @param {Curve} cu +* @param {Vector3} pt +* @returns {boolean} 左边为-1,右边为1 +*/ +export declare function GetPointAtCurveDir(cu: Curve, pt: Vector3): number; +export declare function ConverCircleToPolyline(cir: Circle): Polyline; +export declare function GetTanPtsOnArcOrCircle(cu: Arc | Circle, lastPoint?: Vector3): Vector3[]; +export declare function CircleInternalTangentLines(cir0: Circle, cir1: Circle): Line[]; +export declare function CircleOuterTangentLines(circle0: Circle, circle1: Circle): Line[]; +export declare function getArcOrCirNearPts(cu: Circle | Arc | Ellipse, pickPoint: Vector3, viewXform: Matrix3): Vector3[]; +export declare function getTanPtsOnEllipse(cu: Ellipse, lastPoint: Vector3): any[]; +export interface IRectInfo { + isRect: boolean; + size?: Vector3; + box?: Box3; + OCS?: Matrix4; +} +export declare function IsRect(cu: Curve): IRectInfo; +/**用4个矩形点构造矩形 */ +export declare function getRectFrom4Pts(pts: Vector3[]): Polyline; +export declare function MergeCurvelist(cus: Curve[]): Curve[]; +export declare function SwapParam(res: IntersectResult[]): IntersectResult[]; +export declare function ComputerCurvesNormalOCS(curves: Curve[], allowAutoCalc?: boolean): Matrix4 | undefined; +export declare function Pts2Polyline(pts: (Vec3 | Vec2)[], isClose: boolean): Polyline; +/**获取矩形信息 */ +export declare function GetRectData(cu: Curve): { + isRect: boolean; + size?: Vector3; + box?: Box3; + OCS?: Matrix4; +}; +/**封闭多段线 分割成矩形 */ +export declare function PolylineSpliteRect(outline: Polyline): Polyline[]; +//# sourceMappingURL=CurveUtils.d.ts.map \ No newline at end of file diff --git a/types/Common/CurveUtils.d.ts.map b/types/Common/CurveUtils.d.ts.map new file mode 100644 index 0000000..31a1f6c --- /dev/null +++ b/types/Common/CurveUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CurveUtils.d.ts","sourceRoot":"","sources":["../../../src/Common/CurveUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Common/DataAdapter.d.ts b/types/Common/DataAdapter.d.ts new file mode 100644 index 0000000..ccb8e43 --- /dev/null +++ b/types/Common/DataAdapter.d.ts @@ -0,0 +1,5 @@ +import { IUiOption } from "../UI/Store/BoardInterface"; +export declare class DataAdapter { + static ConvertUIData(obj: T, isobser?: boolean): IUiOption; +} +//# sourceMappingURL=DataAdapter.d.ts.map \ No newline at end of file diff --git a/types/Common/DataAdapter.d.ts.map b/types/Common/DataAdapter.d.ts.map new file mode 100644 index 0000000..459ad90 --- /dev/null +++ b/types/Common/DataAdapter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DataAdapter.d.ts","sourceRoot":"","sources":["../../../src/Common/DataAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,qBAAa,WAAW;IAEpB,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,GAAE,OAAc,GAAG,SAAS,CAAC,CAAC,CAAC;CAiBxF"} \ No newline at end of file diff --git a/types/Common/Deving.d.ts b/types/Common/Deving.d.ts new file mode 100644 index 0000000..aa913ef --- /dev/null +++ b/types/Common/Deving.d.ts @@ -0,0 +1,3 @@ +export declare function IsDev(): boolean; +export declare function IsTest(): boolean; +//# sourceMappingURL=Deving.d.ts.map \ No newline at end of file diff --git a/types/Common/Deving.d.ts.map b/types/Common/Deving.d.ts.map new file mode 100644 index 0000000..c6e648b --- /dev/null +++ b/types/Common/Deving.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Deving.d.ts","sourceRoot":"","sources":["../../../src/Common/Deving.ts"],"names":[],"mappings":"AACA,wBAAgB,KAAK,YAGpB;AAED,wBAAgB,MAAM,YAGrB"} \ No newline at end of file diff --git a/types/Common/Dispose.d.ts b/types/Common/Dispose.d.ts new file mode 100644 index 0000000..0a8bd6a --- /dev/null +++ b/types/Common/Dispose.d.ts @@ -0,0 +1,7 @@ +import { Object3D } from "three"; +/** + * 销毁Object对象的Geometry,并不会销毁材质(新版本销毁材质,好像问题不大?) + */ +export declare function DisposeThreeObj(obj: Object3D): Object3D; +export declare function Object3DRemoveAll(obj: Object3D): Object3D; +//# sourceMappingURL=Dispose.d.ts.map \ No newline at end of file diff --git a/types/Common/Dispose.d.ts.map b/types/Common/Dispose.d.ts.map new file mode 100644 index 0000000..7a73b64 --- /dev/null +++ b/types/Common/Dispose.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Dispose.d.ts","sourceRoot":"","sources":["../../../src/Common/Dispose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,YA6B5C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,YAS9C"} \ No newline at end of file diff --git a/types/Common/ErrorMonitoring.d.ts b/types/Common/ErrorMonitoring.d.ts new file mode 100644 index 0000000..ab4c9e3 --- /dev/null +++ b/types/Common/ErrorMonitoring.d.ts @@ -0,0 +1,5 @@ +export declare class ErrorMonitoring { + constructor(); +} +export declare function ReportError(stack: any, msg?: string): Promise; +//# sourceMappingURL=ErrorMonitoring.d.ts.map \ No newline at end of file diff --git a/types/Common/ErrorMonitoring.d.ts.map b/types/Common/ErrorMonitoring.d.ts.map new file mode 100644 index 0000000..0b581c3 --- /dev/null +++ b/types/Common/ErrorMonitoring.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ErrorMonitoring.d.ts","sourceRoot":"","sources":["../../../src/Common/ErrorMonitoring.ts"],"names":[],"mappings":"AAkBA,qBAAa,eAAe;;CAa3B;AAID,wBAAsB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,GAAE,MAAkB,iBA2CpE"} \ No newline at end of file diff --git a/types/Common/FileSystem.d.ts b/types/Common/FileSystem.d.ts new file mode 100644 index 0000000..763ffdd --- /dev/null +++ b/types/Common/FileSystem.d.ts @@ -0,0 +1,176 @@ +export declare function ReadFileAsArrayBuffer(file: File): Promise; +/** + * FileSystem is used to read and write files using nunuStudio. + * + * Some operations are platform specific and might not work everywhere. + */ +export declare class FileSystem { + static fs: any; + /** + * Read file content as text. + * + * @method readFile + * @param {String} fname URL to the file. + * @param {boolean} sync If true the file will be read in sync. + * @param {Function} onLoad onLoad callback. + * @param {Function} onProgress onProgress callback. + * @return {String} File content as a string, null if reading async. + */ + static readFile: (fname: any, sync: any, onLoad: any, onProgress: any) => any; + /** + * Read file as arraybuffer data. + * + * @method readFileArrayBuffer + * @param {String} fname Name of the file + * @param {boolean} sync If true the file will be read in sync. + * @param {Function} onLoad onLoad callback. + * @param {Function} onProgress onProgress callback. + * @return {ArrayBuffer} File data as array buffer, null on error + */ + static readFileArrayBuffer: (fname: any, sync?: any, onLoad?: any, onProgress?: any) => ArrayBuffer; + /** + * Read file as base64 data. + * + * @method readFileBase64 + * @param {String} fname Name of the file + * @param {boolean} sync If true the file will be read in sync. + * @param {Function} onLoad onLoad callback. + * @param {Function} onProgress onProgress callback. + * @return {String} File data in base64, null on error + */ + static readFileBase64: (fname: any, sync?: any, onLoad?: any, onProgress?: any) => string; + static ReadFileAsText(file: File): Promise; + /** + * Write text file. + * When running without NWJS it writes file as a blob and auto downloads it. + * + * @method writeFile + * @param {String} fname File name. + * @param {String} data Text to be written to the file. + */ + static WriteFile(fname: string, data: BlobPart): void; + /** + * Write binary file using base64 data. + * + * @method writeFileBase64 + * @param {String} fname + * @param {String} data + */ + static writeFileBase64: (fname: any, data: any) => void; + /** + * Write binary file using arraybuffer data. + * + * @method writeFileArrayBuffer + * @param {String} fname + * @param {String} data + */ + static writeFileArrayBuffer(fname: any, data: any): void; + static chooserInput: HTMLInputElement; + /** + * + */ + static ChooseFile({ filter, multiple, callback }: { + filter?: string; + multiple?: boolean; + callback: (filelist: FileList) => void; + }): void; + /** + * Used as an alternative to chooseFile for saving files in the browser. + * + * Uses a prompt to question the user the file name. + * + * @method chooseFileName + * @param {Function} onLoad onLoad callback + * @param {String} saveas File extension + */ + static chooseFileName: (onLoad: any, saveas: any, name: any) => void; + /** + * Copy file (cannot be used to copy folders). + * + * Only works when running inside NWJS. + * + * @method copyFile + * @param {String} src + * @param {String} dst + */ + static copyFile: (src: any, dst: any) => void; + /** + * Make a directory (dont trow exeption if directory already exists). + * + * Only works when running inside NWJS. + * + * @method makeDirectory + * @param {String} dir + */ + static makeDirectory: (dir: any) => void; + /** + * Returns files in directory (returns empty array in case of error). + * + * Only works when running inside NWJS. + * + * @method getFilesDirectory + * @return {Array} Files in the directory + */ + static getFilesDirectory: (dir: any) => any; + /** + * Copy folder and all its files (includes symbolic links). + * + * Only works when running inside NWJS. + * + * @method copyFolder + * @param {String} src + * @param {String} dst + */ + static copyFolder: (src: any, dst: any) => void; + /** + * Check if a file exists. + * + * Only works inside of NWJS. When running inside the browser always returns false. + * + * @method fileExists + * @param {String} file File path + * @return {boolean} True is file exists + */ + static fileExists: (file: any) => any; + /** + * Get file name without extension from file path string. + * + * If input is a/b/c/abc.d output is abc. + * + * @method getFileName + * @param {String} file File path + * @return {String} File name without path and extension + */ + static getFileName: (file: any) => any; + /** + * Get file name without extension. + * + * If input is a/b/c/abc.d output is a/b/c/abc. + * + * @method getNameWithoutExtension + * @param {String} file File path + * @return {String} + */ + static getNameWithoutExtension: (file: any) => any; + /** + * Get file directoty. + * + * If input is a/b/c/abc.d output is a/b/c/ + * + * @method getFilePath + * @param {String} file File path + * @return {String} + */ + static getFilePath: (file: any) => any; + /** + * Get file extension from file path string (always in lowercase). + * + * If input is a/b/c/abc.d output is d. + * + * @method getFileExtension + * @param {String} file File path + * @return {String} + */ + static getFileExtension: (file: any) => any; +} +//# sourceMappingURL=FileSystem.d.ts.map \ No newline at end of file diff --git a/types/Common/FileSystem.d.ts.map b/types/Common/FileSystem.d.ts.map new file mode 100644 index 0000000..60ed0be --- /dev/null +++ b/types/Common/FileSystem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FileSystem.d.ts","sourceRoot":"","sources":["../../../src/Common/FileSystem.ts"],"names":[],"mappings":"AAIA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CASxF;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAEnB,MAAM,CAAC,EAAE,MAAC;IACV;;;;;;;;;MASE;IACF,MAAM,CAAC,QAAQ,+DA6Db;IAEF;;;;;;;;;OASG;IACH,MAAM,CAAC,mBAAmB,0EAyExB;IAEF;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,qEAuDnB;WAEW,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAWxD;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;IA0B9C;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,kCA2BpB;IAEF;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,CAAC,KAAK,KAAA,EAAE,IAAI,KAAA;IA2BvC,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACtC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,QAAgB,EAAE,QAAQ,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;KAAE;IAoB1I;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,gDAgBnB;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,+BASb;IAEF;;;;;;;OAOG;IACH,MAAM,CAAC,aAAa,qBAOlB;IAEF;;;;;;;OAOG;IACH,MAAM,CAAC,iBAAiB,oBAiBtB;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,+BAiCf;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,UAAU,qBAUf;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,qBAWhB;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,uBAAuB,qBAQ5B;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,WAAW,qBAWhB;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,qBAQrB;CAEL"} \ No newline at end of file diff --git a/types/Common/HostUrl.d.ts b/types/Common/HostUrl.d.ts new file mode 100644 index 0000000..b563d40 --- /dev/null +++ b/types/Common/HostUrl.d.ts @@ -0,0 +1,108 @@ +export declare const CURRENT_HOST: string; +export declare const SignUrl: { + login: string; + loginOut: string; + heart: string; + regist: string; + SMSCode: string; + LoginStatus: string; + checkRegUser: string; + findPsw: string; +}; +export declare const ImgsUrl: { + get: string; + upload: string; + delete: string; + logo: string; +}; +export declare const DirUrl: { + query: string; + create: string; + delete: string; + update: string; + move: string; +}; +export declare const MaterialUrls: { + query: string; + create: string; + get: string; + detail: string; + delete: string; + update: string; + move: string; + buy: string; + publishDetail: string; +}; +export declare const ShopUrls: { + get: string; +}; +export declare const ResourcesCDN_HOST = "https://cdn.qicad.com/"; +export declare const ToplineUrls: { + create: string; + get: string; + detail: string; + delete: string; + update: string; + move: string; +}; +export declare const FileUrls: { + create: string; + delete: string; + detail: string; + list: string; + update: string; + move: string; + copy: string; + preDetail: string; +}; +export declare const TemplateUrls: { + create: string; + delete: string; + detail: string; + list: string; + update: string; + search: string; + move: string; + check: string; +}; +export declare const ConfigUrls: { + Get: string; + Edit: string; + GetList: string; +}; +export declare const CloudUrl: { + Get: string; + Buy: string; +}; +/**cad渲染端 */ +export declare const RenderUrl: { + CheckRender: string; + Buy: string; +}; +/**购买cad包月服务 */ +export declare const BuyCadUrl: string; +/**请求这些接口将更新云盘信息 */ +export declare const ChangeZoneUrls: string[]; +/**发布模块 */ +export declare const PublishTemplateUrl: string; +export declare const PublishMaterialUrl: string; +export declare const SendTemplateUrl: string; +export declare const KJLExportUrls: string; +export declare const CF_LOGO: string; +export declare const Buy2To3: string; +export declare const BuyZengZhiBao: string; +export declare const KJLUrls: { + importOld: string; + import: string; + importv2: string; + clear: string; +}; +export declare const RecycleBinUrls: { + List: string; + Re: string; + Delete: string; +}; +export declare const ErrorReportUrl: string; +export declare let FileHistoryUrl: string; +export declare let FileHistoryFilesUrl: string; +//# sourceMappingURL=HostUrl.d.ts.map \ No newline at end of file diff --git a/types/Common/HostUrl.d.ts.map b/types/Common/HostUrl.d.ts.map new file mode 100644 index 0000000..16b8fda --- /dev/null +++ b/types/Common/HostUrl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HostUrl.d.ts","sourceRoot":"","sources":["../../../src/Common/HostUrl.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,QAAe,CAAC;AAEzC,eAAO,MAAM,OAAO;;;;;;;;;CASnB,CAAC;AACF,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AACF,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAC;AAEF,eAAO,MAAM,QAAQ;;CAEpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,2BAA2B,CAAC;AAC1D,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;CASpB,CAAC;AACF,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;CAItB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,YAAY;AACZ,eAAO,MAAM,SAAS;;;CAGrB,CAAC;AAEF,eAAe;AACf,eAAO,MAAM,SAAS,QAAmC,CAAC;AAE1D,mBAAmB;AACnB,eAAO,MAAM,cAAc,UAK1B,CAAC;AAEF,UAAU;AACV,eAAO,MAAM,kBAAkB,QAAqD,CAAC;AACrF,eAAO,MAAM,kBAAkB,QAAwD,CAAC;AAExF,eAAO,MAAM,eAAe,QAA2C,CAAC;AAExE,eAAO,MAAM,aAAa,QAAqC,CAAC;AAEhE,eAAO,MAAM,OAAO,QAAgC,CAAC;AAErD,eAAO,MAAM,OAAO,QAAuC,CAAC;AAC5D,eAAO,MAAM,aAAa,QAAqC,CAAC;AAEhE,eAAO,MAAM,OAAO;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAGF,eAAO,MAAM,cAAc,QAAqC,CAAC;AAOjE,eAAO,IAAI,cAAc,QAAkC,CAAC;AAC5D,eAAO,IAAI,mBAAmB,QAAqC,CAAC"} \ No newline at end of file diff --git a/types/Common/InputState.d.ts b/types/Common/InputState.d.ts new file mode 100644 index 0000000..098b725 --- /dev/null +++ b/types/Common/InputState.d.ts @@ -0,0 +1,24 @@ +/** + * 控制器的状态,按位表示. + * @enum {number} + */ +export declare enum InputState { + None = 0, + SelectIng = 1, + Select = 2, + GetPoint = 4, + GetDist = 8, + Entsel = 16, + GetKeyWord = 32, + GetRect = 64, + GetString = 128, + All = 255 +} +export interface KeyWord { + msg: string; + key: string; + disable?: boolean; + children?: KeyWord[]; +} +export declare const MenuDividerKWD: KeyWord; +//# sourceMappingURL=InputState.d.ts.map \ No newline at end of file diff --git a/types/Common/InputState.d.ts.map b/types/Common/InputState.d.ts.map new file mode 100644 index 0000000..530d491 --- /dev/null +++ b/types/Common/InputState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InputState.d.ts","sourceRoot":"","sources":["../../../src/Common/InputState.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,oBAAY,UAAU;IAElB,IAAI,IAAI;IACR,SAAS,IAAI;IACb,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,MAAM,KAAK;IACX,UAAU,KAAK;IACf,OAAO,KAAK;IACZ,SAAS,MAAM;IACf,GAAG,MAAa;CACnB;AAID,MAAM,WAAW,OAAO;IAEpB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,cAAc,EAAE,OAAqC,CAAC"} \ No newline at end of file diff --git a/types/Common/InterfereUtil.d.ts b/types/Common/InterfereUtil.d.ts new file mode 100644 index 0000000..b5b967d --- /dev/null +++ b/types/Common/InterfereUtil.d.ts @@ -0,0 +1,24 @@ +import { Box3, Geometry, Mesh } from "three"; +import { CSG } from "../csg/core/CSG"; +import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole"; +import { SweepSolid } from "../DatabaseServices/3DSolid/SweepSolid"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude"; +import { HardwareCompositeEntity } from "../DatabaseServices/Hardware/HardwareCompositeEntity"; +import { OBB } from "../Geometry/OBB/obb"; +export declare type Solid3D = ExtrudeSolid | SweepSolid | ExtrudeHole; +export declare class CheckInterfereTool { + entitySet: Set; + objMap: Map; + GetEntitys(selectEnts: (HardwareCompositeEntity | ExtrudeSolid | SweepSolid)[]): Solid3D[]; + IsSkipEntity(en: Entity): boolean; + Check(selectEnts: (HardwareCompositeEntity | ExtrudeSolid | SweepSolid)[], progressCallBack?: (index: number, all: number) => void): Promise, [Solid3D, Solid3D]>>; + csgCache: Map; + private GetCSG; + obbCache: Map; + private GetOBB; + boxCache: Map; + private GetBox; +} +export declare const checkInterfereTool: CheckInterfereTool; +//# sourceMappingURL=InterfereUtil.d.ts.map \ No newline at end of file diff --git a/types/Common/InterfereUtil.d.ts.map b/types/Common/InterfereUtil.d.ts.map new file mode 100644 index 0000000..f3cf07a --- /dev/null +++ b/types/Common/InterfereUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InterfereUtil.d.ts","sourceRoot":"","sources":["../../../src/Common/InterfereUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAS,QAAQ,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAO/F,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAO1C,oBAAY,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9D,qBAAa,kBAAkB;IAE3B,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IACpC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAa;IAClD,UAAU,CAAC,UAAU,EAAE,CAAC,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE;IAkB9E,YAAY,CAAC,EAAE,EAAE,MAAM;IAQjB,KAAK,CAAC,UAAU,EAAE,CAAC,uBAAuB,GAAG,YAAY,GAAG,UAAU,CAAC,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI;IA8KxI,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IACvC,OAAO,CAAC,MAAM;IAkBd,QAAQ,mBAA0B;IAClC,OAAO,CAAC,MAAM;IASd,QAAQ,oBAA2B;IACnC,OAAO,CAAC,MAAM;CAQjB;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file diff --git a/types/Common/JigMove.d.ts b/types/Common/JigMove.d.ts new file mode 100644 index 0000000..94a035c --- /dev/null +++ b/types/Common/JigMove.d.ts @@ -0,0 +1,4 @@ +import { Matrix4, Vector3 } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +export declare function JigMoveEntity(entitys: Entity[], pos?: Vector3): Promise; +//# sourceMappingURL=JigMove.d.ts.map \ No newline at end of file diff --git a/types/Common/JigMove.d.ts.map b/types/Common/JigMove.d.ts.map new file mode 100644 index 0000000..938402b --- /dev/null +++ b/types/Common/JigMove.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"JigMove.d.ts","sourceRoot":"","sources":["../../../src/Common/JigMove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,UAAc,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CA0CtG"} \ No newline at end of file diff --git a/types/Common/KeyEnum.d.ts b/types/Common/KeyEnum.d.ts new file mode 100644 index 0000000..aef0e4c --- /dev/null +++ b/types/Common/KeyEnum.d.ts @@ -0,0 +1,297 @@ +export declare enum MouseKey { + Left = 0, + Middle = 1, + Right = 2 +} +export declare enum KeyBoard { + Digit1 = 49, + Digit2 = 50, + Digit3 = 51, + Digit4 = 52, + Digit5 = 53, + Digit6 = 54, + Digit7 = 55, + Digit8 = 56, + Digit9 = 57, + Digit0 = 58, + KeyA = 65, + KeyB = 66, + KeyC = 67, + KeyD = 68, + KeyE = 69, + KeyF = 70, + KeyG = 71, + KeyH = 72, + KeyI = 73, + KeyJ = 74, + KeyK = 75, + KeyL = 76, + KeyM = 77, + KeyN = 78, + KeyO = 79, + KeyP = 80, + KeyQ = 81, + KeyR = 82, + KeyS = 83, + KeyT = 84, + KeyU = 85, + KeyV = 86, + KeyW = 87, + KeyX = 88, + KeyY = 89, + KeyZ = 90, + /** + * 逗号 + */ + Comma = 188, + CommaChrome = 229, + /** + * 句号 + */ + Period = 190, + /** + * 分号 + */ + Semicolon = 186, + /** + * 引号 + */ + Quote = 222, + /** + * 左括号 + */ + BracketLeft = 219, + /** + * 右括号 + */ + BracketRight = 220, + /** + * 反引号 + */ + Backquote = 192, + /** + * 反斜杠 + */ + Backslash = 220, + /** + * 减号 + */ + Minus = 189, + /** + * 等号 + */ + Equal = 187, + IntlRo = 193, + IntlYen = 255, + Alt = 18, + /** + * 大写锁定 + */ + CapsLock = 20, + Control = 17, + /** + * win左键 + */ + OSLeft = 91, + /** + * win右键 + */ + OSRight = 92, + Shift = 16, + ContextMenu = 93, + Enter = 13, + Space = 32, + Backspace = 8, + Tab = 9, + Delete = 46, + End = 35, + Home = 36, + Insert = 45, + PageDown = 34, + PageUp = 33, + ArrowDown = 40, + ArrowLeft = 37, + ArrowRight = 39, + ArrowUp = 38, + Escape = 27, + PrintScreen = 44, + ScrollLock = 145, + Pause = 19, + F1 = 112, + F2 = 113, + F3 = 114, + F5 = 116, + F6 = 117, + F7 = 118, + F8 = 119, + F9 = 120, + F10 = 121, + F11 = 122, + F12 = 123, + NumLock = 114, + Numpad0 = 96, + Numpad1 = 97, + Numpad2 = 98, + Numpad3 = 99, + Numpad4 = 100, + Numpad5 = 101, + Numpad6 = 102, + Numpad7 = 103, + Numpad8 = 104, + Numpad9 = 105, + NumpadAdd = 107, + NumpadDivide = 111, + NumpadEqual = 12, + NumpadMultiply = 106, + NumpadSubtract = 109, + NumpadDot = 110, + NumpadDot1 = 190 +} +export declare enum KeyCode { + Digit1 = "Digit1", + Digit2 = "Digit2", + Digit3 = "Digit3", + Digit4 = "Digit4", + Digit5 = "Digit5", + Digit6 = "Digit6", + Digit7 = "Digit7", + Digit8 = "Digit8", + Digit9 = "Digit9", + Digit0 = "Digit0", + KeyA = "KeyA", + KeyB = "KeyB", + KeyC = "KeyC", + KeyD = "KeyD", + KeyE = "KeyE", + KeyF = "KeyF", + KeyG = "KeyG", + KeyH = "KeyH", + KeyI = "KeyI", + KeyJ = "KeyJ", + KeyK = "KeyK", + KeyL = "KeyL", + KeyM = "KeyM", + KeyN = "KeyN", + KeyO = "KeyO", + KeyP = "KeyP", + KeyQ = "KeyQ", + KeyR = "KeyR", + KeyS = "KeyS", + KeyT = "KeyT", + KeyU = "KeyU", + KeyV = "KeyV", + KeyW = "KeyW", + KeyX = "KeyX", + KeyY = "KeyY", + KeyZ = "KeyZ", + /** + * 逗号 + */ + Comma = "Comma", + CommaChrome = "CommaChrome", + /** + * 句号 + */ + Period = "Period", + /** + * 分号 + */ + Semicolon = "Semicolon", + /** + * 引号 + */ + Quote = "Quote", + /** + * 左括号 + */ + BracketLeft = "BracketLeft", + /** + * 右括号 + */ + BracketRight = "BracketRight", + /** + * 反引号 + */ + Backquote = "Backquote", + /** + * 反斜杠 + */ + Backslash = "Backslash", + /** + * 减号 + */ + Minus = "Minus", + /** + * 等号 + */ + Equal = "Equal", + IntlRo = "IntlRo", + IntlYen = "IntlYen", + Alt = "Alt", + AltLeft = "AltLeft", + /** + * 大写锁定 + */ + CapsLock = "CapsLock", + Control = "Control", + ControlLeft = "ControlLeft", + /** + * win左键 + */ + OSLeft = "OSLeft", + /** + * win右键 + */ + OSRight = "OSRight", + Shift = "Shift", + ShiftLeft = "ShiftLeft", + ContextMenu = "ContextMenu", + Enter = "Enter", + Space = "Space", + Backspace = "Backspace", + Tab = "Tab", + Delete = "Delete", + End = "End", + Home = "Home", + Insert = "Insert", + PageDown = "PageDown", + PageUp = "PageUp", + ArrowDown = "ArrowDown", + ArrowLeft = "ArrowLeft", + ArrowRight = "ArrowRight", + ArrowUp = "ArrowUp", + Escape = "Escape", + PrintScreen = "PrintScreen", + ScrollLock = "ScrollLock", + Pause = "Pause", + F1 = "F1", + F2 = "F2", + F3 = "F3", + F5 = "F5", + F6 = "F6", + F7 = "F7", + F8 = "F8", + F9 = "F9", + F10 = "F10", + F11 = "F11", + F12 = "F12", + NumLock = "NumLock", + Numpad0 = "Numpad0", + Numpad1 = "Numpad1", + Numpad2 = "Numpad2", + Numpad3 = "Numpad3", + Numpad4 = "Numpad4", + Numpad5 = "Numpad5", + Numpad6 = "Numpad6", + Numpad7 = "Numpad7", + Numpad8 = "Numpad8", + Numpad9 = "Numpad9", + NumpadAdd = "NumpadAdd", + NumpadDivide = "NumpadDivide", + NumpadEqual = "NumpadEqual", + NumpadMultiply = "NumpadMultiply", + NumpadSubtract = "NumpadSubtract", + NumpadDot = "NumpadDot", + NumpadDot1 = "NumpadDot1" +} +//# sourceMappingURL=KeyEnum.d.ts.map \ No newline at end of file diff --git a/types/Common/KeyEnum.d.ts.map b/types/Common/KeyEnum.d.ts.map new file mode 100644 index 0000000..4ccd06a --- /dev/null +++ b/types/Common/KeyEnum.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyEnum.d.ts","sourceRoot":"","sources":["../../../src/Common/KeyEnum.ts"],"names":[],"mappings":"AACA,oBAAY,QAAQ;IAEhB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,KAAK,IAAI;CACZ;AAED,oBAAY,QAAQ;IAGhB,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IACX,MAAM,KAAK;IAEX,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,KAAK;IAGT;;OAEG;IACH,KAAK,MAAM;IACX,WAAW,MAAM;IACjB;;OAEG;IACH,MAAM,MAAM;IACZ;;OAEG;IACH,SAAS,MAAM;IACf;;OAEG;IACH,KAAK,MAAM;IACX;;OAEG;IACH,WAAW,MAAM;IACjB;;OAEG;IACH,YAAY,MAAM;IAClB;;OAEG;IACH,SAAS,MAAM;IACf;;OAEG;IACH,SAAS,MAAM;IACf;;OAEG;IACH,KAAK,MAAM;IACX;;OAEG;IACH,KAAK,MAAM;IACX,MAAM,MAAM;IACZ,OAAO,MAAM;IAEb,GAAG,KAAK;IACR;;OAEG;IACH,QAAQ,KAAK;IACb,OAAO,KAAK;IACZ;;OAEG;IACH,MAAM,KAAK;IACX;;OAEG;IACH,OAAO,KAAK;IACZ,KAAK,KAAK;IAEV,WAAW,KAAK;IAChB,KAAK,KAAK;IACV,KAAK,KAAK;IACV,SAAS,IAAI;IACb,GAAG,IAAI;IACP,MAAM,KAAK;IACX,GAAG,KAAK;IACR,IAAI,KAAK;IACT,MAAM,KAAK;IACX,QAAQ,KAAK;IACb,MAAM,KAAK;IACX,SAAS,KAAK;IACd,SAAS,KAAK;IACd,UAAU,KAAK;IACf,OAAO,KAAK;IACZ,MAAM,KAAK;IACX,WAAW,KAAK;IAChB,UAAU,MAAM;IAChB,KAAK,KAAK;IAGV,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,EAAE,MAAM;IACR,GAAG,MAAM;IACT,GAAG,MAAM;IACT,GAAG,MAAM;IAGT,OAAO,MAAM;IACb,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,MAAM;IACb,OAAO,MAAM;IACb,SAAS,MAAM;IACf,YAAY,MAAM;IAClB,WAAW,KAAK;IAChB,cAAc,MAAM;IACpB,cAAc,MAAM;IACpB,SAAS,MAAM;IACf,UAAU,MAAM;CACnB;AAED,oBAAY,OAAO;IAGf,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IAEjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IAGb;;OAEG;IACH,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,KAAK,UAAU;IACf;;OAEG;IACH,WAAW,gBAAgB;IAC3B;;OAEG;IACH,YAAY,iBAAiB;IAC7B;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,SAAS,cAAc;IACvB;;OAEG;IACH,KAAK,UAAU;IACf;;OAEG;IACH,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IAEnB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB;;OAEG;IACH,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAE3B;;OAEG;IACH,MAAM,WAAW;IACjB;;OAEG;IACH,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,SAAS,cAAc;IAEvB,WAAW,gBAAgB;IAC3B,KAAK,UAAU;IACf,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,KAAK,UAAU;IAGf,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IAGX,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,UAAU,eAAe;CAC5B"} \ No newline at end of file diff --git a/types/Common/LightUtils.d.ts b/types/Common/LightUtils.d.ts new file mode 100644 index 0000000..053f866 --- /dev/null +++ b/types/Common/LightUtils.d.ts @@ -0,0 +1,3 @@ +import { DirectionalLight } from "../DatabaseServices/Lights/DirectionalLight"; +export declare function DirLightShadowArea(light: DirectionalLight): void; +//# sourceMappingURL=LightUtils.d.ts.map \ No newline at end of file diff --git a/types/Common/LightUtils.d.ts.map b/types/Common/LightUtils.d.ts.map new file mode 100644 index 0000000..24e8a19 --- /dev/null +++ b/types/Common/LightUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LightUtils.d.ts","sourceRoot":"","sources":["../../../src/Common/LightUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAO/E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,QAsBzD"} \ No newline at end of file diff --git a/types/Common/Log.d.ts b/types/Common/Log.d.ts new file mode 100644 index 0000000..8130e33 --- /dev/null +++ b/types/Common/Log.d.ts @@ -0,0 +1,8 @@ +declare type LogFunction = (message?: any, ...optionalParams: any[]) => void; +export declare const _LogInjectFunctions: LogFunction[]; +export declare function Log(message?: any, ...optionalParams: any[]): void; +export declare const LogEnable: { + Display: boolean; +}; +export {}; +//# sourceMappingURL=Log.d.ts.map \ No newline at end of file diff --git a/types/Common/Log.d.ts.map b/types/Common/Log.d.ts.map new file mode 100644 index 0000000..6499dac --- /dev/null +++ b/types/Common/Log.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Log.d.ts","sourceRoot":"","sources":["../../../src/Common/Log.ts"],"names":[],"mappings":"AACA,aAAK,WAAW,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAErE,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAAO,CAAC;AAErD,wBAAgB,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI,CAIjE;AAED,eAAO,MAAM,SAAS;;CAErB,CAAC"} \ No newline at end of file diff --git a/types/Common/Material.d.ts b/types/Common/Material.d.ts new file mode 100644 index 0000000..2eed340 --- /dev/null +++ b/types/Common/Material.d.ts @@ -0,0 +1,4 @@ +export declare function guiScene(gui: any, scene: any, renderer: any, ambientLight: any): void; +export declare function guiMaterial(gui: any, mesh: any, material: any, geometry: any): void; +export declare function guiMeshBasicMaterial(gui: any, mesh: any, material: any, geometry: any): void; +//# sourceMappingURL=Material.d.ts.map \ No newline at end of file diff --git a/types/Common/Material.d.ts.map b/types/Common/Material.d.ts.map new file mode 100644 index 0000000..d9e1fa1 --- /dev/null +++ b/types/Common/Material.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Material.d.ts","sourceRoot":"","sources":["../../../src/Common/Material.ts"],"names":[],"mappings":"AA0PA,wBAAgB,QAAQ,CAAC,GAAG,KAAA,EAAE,KAAK,KAAA,EAAE,QAAQ,KAAA,EAAE,YAAY,KAAA,QA0B1D;AAqCD,wBAAgB,WAAW,CAAC,GAAG,KAAA,EAAE,IAAI,KAAA,EAAE,QAAQ,KAAA,EAAE,QAAQ,KAAA,QAqBxD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,KAAA,EAAE,IAAI,KAAA,EAAE,QAAQ,KAAA,EAAE,QAAQ,KAAA,QA6BjE"} \ No newline at end of file diff --git a/types/Common/Matrix4Utils.d.ts b/types/Common/Matrix4Utils.d.ts new file mode 100644 index 0000000..1986405 --- /dev/null +++ b/types/Common/Matrix4Utils.d.ts @@ -0,0 +1,49 @@ +import { Matrix4, Vector2, Vector3 } from 'three'; +/** + * 设置矩阵的某列的向量 + * @param {Matrix4} mat 矩阵 + * @param {number} col 列索引,0x 1y 2z 3org + * @param {Vector3} v 向量或点 + */ +export declare function matrixSetVector(mat: Matrix4, col: number, v: Vector3): void; +/** + * 返回矩阵,该坐标系将坐标系与原点的坐标系映射为坐标系, + * 并将坐标系与X轴坐标系, + * Y轴坐标轴以及Z轴坐标系统之间的坐标系统坐标系统的原点坐标系和原点坐标系统坐标轴的坐标系分别设置为XAxis,YAxis和ZAxis + * @returns {Matrix4} 返回新的矩阵 + */ +export declare function matrixAlignCoordSys(matrixFrom: Matrix4, matrixTo: Matrix4): Matrix4; +/** + * 判断2个矩形共面 + * @param {Matrix4} matrixFrom + * @param {Matrix4} matrixTo + * @returns {boolean} 2个矩阵共面 + */ +export declare function matrixIsCoplane(matrixFrom: Matrix4, matrixTo: Matrix4, fuzz?: number): boolean; +export declare function matrixScale(scale: number, center?: Vector3): Matrix4; +/** + * 设置旋转矩阵,不改变矩阵的基点 + */ +export declare function setRotationOnAxis(mtx: Matrix4, axis: Vector3, ro: number): Matrix4; +/** + * 修正镜像后矩阵 + */ +export declare function reviseMirrorMatrix(mtx: Matrix4): Matrix4; +export declare function Vector2ApplyMatrix4(mtx: Matrix4, vec: Vector2): void; +export declare function GetMirrorMat(v: Vector3): Matrix4; +export declare function ApplyMatrix4IgnorePosition(vec: { + x: number; + y: number; + z: number; +}, m: Matrix4): { + x: number; + y: number; + z: number; +}; +/** + * 把变换矩阵展平成2d矩阵,避免出现三维坐标. + */ +export declare function MatrixPlanarizere(mtx: Matrix4, z0?: boolean): Matrix4; +export declare const tempMatrix1: Matrix4; +export declare const ZMirrorMatrix: Matrix4; +//# sourceMappingURL=Matrix4Utils.d.ts.map \ No newline at end of file diff --git a/types/Common/Matrix4Utils.d.ts.map b/types/Common/Matrix4Utils.d.ts.map new file mode 100644 index 0000000..424787d --- /dev/null +++ b/types/Common/Matrix4Utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Matrix4Utils.d.ts","sourceRoot":"","sources":["../../../src/Common/Matrix4Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIlD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,QAMpE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,SAAO,GAAG,OAAO,CAe5F;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,WAM1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,WAMxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMxD;AAGD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,QAW7D;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,WAQtC;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE,EAAE,CAAC,EAAE,OAAO;OAA3C,MAAM;OAAK,MAAM;OAAK,MAAM;EAQhF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,UAAO,WAYxD;AAED,eAAO,MAAM,WAAW,SAAc,CAAC;AAEvC,eAAO,MAAM,aAAa,SAAqC,CAAC"} \ No newline at end of file diff --git a/types/Common/NumberDecimalAdjustment.d.ts b/types/Common/NumberDecimalAdjustment.d.ts new file mode 100644 index 0000000..6c287e0 --- /dev/null +++ b/types/Common/NumberDecimalAdjustment.d.ts @@ -0,0 +1,2 @@ +export declare function round10(value: number, exp: number): number; +//# sourceMappingURL=NumberDecimalAdjustment.d.ts.map \ No newline at end of file diff --git a/types/Common/NumberDecimalAdjustment.d.ts.map b/types/Common/NumberDecimalAdjustment.d.ts.map new file mode 100644 index 0000000..4ab49e6 --- /dev/null +++ b/types/Common/NumberDecimalAdjustment.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NumberDecimalAdjustment.d.ts","sourceRoot":"","sources":["../../../src/Common/NumberDecimalAdjustment.ts"],"names":[],"mappings":"AA+BA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D"} \ No newline at end of file diff --git a/types/Common/Report.d.ts b/types/Common/Report.d.ts new file mode 100644 index 0000000..ba58b02 --- /dev/null +++ b/types/Common/Report.d.ts @@ -0,0 +1,3 @@ +export declare const ReportFunctionList: ((msg: string) => void)[]; +export declare function SendReport(msg: string): void; +//# sourceMappingURL=Report.d.ts.map \ No newline at end of file diff --git a/types/Common/Report.d.ts.map b/types/Common/Report.d.ts.map new file mode 100644 index 0000000..35bab49 --- /dev/null +++ b/types/Common/Report.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Report.d.ts","sourceRoot":"","sources":["../../../src/Common/Report.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,EAAO,CAAC;AAEhE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QAIrC"} \ No newline at end of file diff --git a/types/Common/Request.d.ts b/types/Common/Request.d.ts new file mode 100644 index 0000000..8946e92 --- /dev/null +++ b/types/Common/Request.d.ts @@ -0,0 +1,36 @@ +export declare enum DirectoryId { + None = "", + FileDir = "1", + MaterialDir = "2", + ImgDir = "3", + ToplineDir = "4", + TemplateDir = "5", + DrillingDir = "6", + KnifePathDir = "7", + Frame = "8" +} +export declare enum RequestStatus { + NoLogin = 88888, + Ok = 0, + NoPermission = 102, + DeleteWarn1 = 401, + DeleteWarn2 = 402, + NoBuy = 3298, + NoBuy1 = 3299, + NoBuy2 = 3300, + NoBuy3 = 3301, + NoBuy4 = 3412, + None = -1, + OffLine = 44444, + NoToken = 6600 +} +export interface IResponseData { + err_code: RequestStatus; + err_msg: string; + [key: string]: any; +} +export declare function PostJson(url: string, body: Exclude, isShowErrMsg?: boolean): Promise; +export declare function Post(url: string, body?: BodyInit, isShowErrMsg?: boolean): Promise; +export declare function FetchGet(url: string): Promise; +export declare function uploadLogo(blob: Blob): Promise; +//# sourceMappingURL=Request.d.ts.map \ No newline at end of file diff --git a/types/Common/Request.d.ts.map b/types/Common/Request.d.ts.map new file mode 100644 index 0000000..01f1d60 --- /dev/null +++ b/types/Common/Request.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../../../src/Common/Request.ts"],"names":[],"mappings":"AAMA,oBAAY,WAAW;IAEnB,IAAI,KAAK;IACT,OAAO,MAAM;IACb,WAAW,MAAM;IACjB,MAAM,MAAM;IACZ,UAAU,MAAM;IAChB,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,YAAY,MAAM;IAClB,KAAK,MAAM;CACd;AAED,oBAAY,aAAa;IAErB,OAAO,QAAQ;IACf,EAAE,IAAI;IACN,YAAY,MAAM;IAClB,WAAW,MAAM;IACjB,WAAW,MAAM;IACjB,KAAK,OAAO;IACZ,MAAM,OAAO;IACb,MAAM,OAAO;IACb,MAAM,OAAO;IACb,MAAM,OAAO;IACb,IAAI,KAAK;IACT,OAAO,QAAQ;IACf,OAAO,OAAO;CACjB;AACD,MAAM,WAAW,aAAa;IAE1B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,YAAY,UAAO,0BAGtG;AAED,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAsDpG;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,gBAYzC;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,mBAc1C"} \ No newline at end of file diff --git a/types/Common/SerializeMaterial.d.ts b/types/Common/SerializeMaterial.d.ts new file mode 100644 index 0000000..cc2d622 --- /dev/null +++ b/types/Common/SerializeMaterial.d.ts @@ -0,0 +1,30 @@ +import { Vector3 } from "three"; +import { Database } from "../DatabaseServices/Database"; +import { PhysicalMaterialRecord } from "../DatabaseServices/PhysicalMaterialRecord"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +import { TemplateRecord } from "../DatabaseServices/Template/TemplateRecord"; +import { TemplateParam } from "../DatabaseServices/Template/Param/TemplateParam"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole"; +export declare function MaterialOut(material: PhysicalMaterialRecord): string; +export declare function MaterialIn(fileData: Object[]): PhysicalMaterialRecord; +export declare function TemplateOut(template: TemplateRecord, tempDb?: Database): string; +export declare function TemplateIn(fileData: Object[]): TemplateRecord; +export declare function TemplateParamsOut(params: TemplateParam[]): string; +export declare function TemplateParamsIn(paramsData: Object[][]): TemplateParam[]; +/**反序列化材质并加入图纸*/ +export declare function MaterialInAndAppendAppData(fileData: Object[], name?: string): PhysicalMaterialRecord; +export declare function deflate(data: string): string; +export declare function inflate(base64: string): string; +export declare function dataURItoBlob(dataURI: string): Blob; +export declare function toplineFileIn(json: string): Polyline; +export declare function getPolylineSVG(en: Polyline): string; +/** + * 获取当前图纸的缩略图(预览图) + */ +export declare function GetCurrentViewPreViewImage(restore?: boolean): Blob; +export declare function ExtrudeDrillFileIn(data: any[]): ExtrudeHole; +export declare function GetEntitysLogo(ens: Entity[], isConceptual?: boolean, dir?: Vector3): Promise; +export declare function GroupOut(ens: Entity[]): string; +export declare function GroupFileIn(fileData: Object[]): Entity[]; +//# sourceMappingURL=SerializeMaterial.d.ts.map \ No newline at end of file diff --git a/types/Common/SerializeMaterial.d.ts.map b/types/Common/SerializeMaterial.d.ts.map new file mode 100644 index 0000000..853cb31 --- /dev/null +++ b/types/Common/SerializeMaterial.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SerializeMaterial.d.ts","sourceRoot":"","sources":["../../../src/Common/SerializeMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,OAAO,EAAsB,MAAM,OAAO,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAI/D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,kDAAkD,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAKtE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAUpE;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,sBAAsB,CAKrE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAmC,UAa9F;AACD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAK7D;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,UAUxD;AACD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,mBAWtD;AAED,gBAAgB;AAChB,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAWpG;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,UAKnC;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,UAKrC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,QAyB5C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,YAOzC;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,UA0B1C;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,UAAO,GAAG,IAAI,CAY/D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,eAM7C;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,UAAQ,EAAE,GAAG,UAAwB,mBAgDpG;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAUrC;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWxD"} \ No newline at end of file diff --git a/types/Common/SetMaterial.d.ts b/types/Common/SetMaterial.d.ts new file mode 100644 index 0000000..140f0f5 --- /dev/null +++ b/types/Common/SetMaterial.d.ts @@ -0,0 +1,3 @@ +import * as THREE from 'three'; +export declare function SetMaterial(obj: THREE.Object3D, material: THREE.Material): void; +//# sourceMappingURL=SetMaterial.d.ts.map \ No newline at end of file diff --git a/types/Common/SetMaterial.d.ts.map b/types/Common/SetMaterial.d.ts.map new file mode 100644 index 0000000..a34982f --- /dev/null +++ b/types/Common/SetMaterial.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SetMaterial.d.ts","sourceRoot":"","sources":["../../../src/Common/SetMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,QAexE"} \ No newline at end of file diff --git a/types/Common/ShowSelectObjects.d.ts b/types/Common/ShowSelectObjects.d.ts new file mode 100644 index 0000000..eb4d391 --- /dev/null +++ b/types/Common/ShowSelectObjects.d.ts @@ -0,0 +1,5 @@ +import { Object3D } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +export declare const ShowObjectsFunctionList: ((ens: (Entity[]) | Object3D[]) => void)[]; +export declare function ShowSelectObjects(ens: (Entity[]) | Object3D[]): void; +//# sourceMappingURL=ShowSelectObjects.d.ts.map \ No newline at end of file diff --git a/types/Common/ShowSelectObjects.d.ts.map b/types/Common/ShowSelectObjects.d.ts.map new file mode 100644 index 0000000..0826e2b --- /dev/null +++ b/types/Common/ShowSelectObjects.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowSelectObjects.d.ts","sourceRoot":"","sources":["../../../src/Common/ShowSelectObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,eAAO,MAAM,uBAAuB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAO,CAAC;AAEtF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,QAI7D"} \ No newline at end of file diff --git a/types/Common/Singleton.d.ts b/types/Common/Singleton.d.ts new file mode 100644 index 0000000..4db0c37 --- /dev/null +++ b/types/Common/Singleton.d.ts @@ -0,0 +1,12 @@ +/** + * 构造单例类的静态类. + * # Example: + * class A extends Singleton(){}; + * //获得单例 + * let a = A.GetInstance(); + */ +export declare class Singleton { + protected constructor(); + static GetInstance(): T; +} +//# sourceMappingURL=Singleton.d.ts.map \ No newline at end of file diff --git a/types/Common/Singleton.d.ts.map b/types/Common/Singleton.d.ts.map new file mode 100644 index 0000000..1214b25 --- /dev/null +++ b/types/Common/Singleton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Singleton.d.ts","sourceRoot":"","sources":["../../../src/Common/Singleton.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,qBAAa,SAAS;IAElB,SAAS;IAGT,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;CASnC"} \ No newline at end of file diff --git a/types/Common/Sleep.d.ts b/types/Common/Sleep.d.ts new file mode 100644 index 0000000..d90f198 --- /dev/null +++ b/types/Common/Sleep.d.ts @@ -0,0 +1,2 @@ +export declare function Sleep(time: number): Promise; +//# sourceMappingURL=Sleep.d.ts.map \ No newline at end of file diff --git a/types/Common/Sleep.d.ts.map b/types/Common/Sleep.d.ts.map new file mode 100644 index 0000000..6b9eafa --- /dev/null +++ b/types/Common/Sleep.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Sleep.d.ts","sourceRoot":"","sources":["../../../src/Common/Sleep.ts"],"names":[],"mappings":"AAAA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,oBAMvC"} \ No newline at end of file diff --git a/types/Common/Status.d.ts b/types/Common/Status.d.ts new file mode 100644 index 0000000..ce1cf21 --- /dev/null +++ b/types/Common/Status.d.ts @@ -0,0 +1,23 @@ +export declare enum Status { + False = 0, + True = 1, + Canel = -1, + ConverToCircle = 101, + DuplicateRecordName = 102 +} +export declare enum UpdateDraw { + None = 0, + Matrix = 1, + Geometry = 2, + Material = 4, + All = 63 +} +/** + * WblockClne时,遇到重复记录的操作方式 + */ +export declare enum DuplicateRecordCloning { + Ignore = 1, + Replace = 2, + Rename = 3 +} +//# sourceMappingURL=Status.d.ts.map \ No newline at end of file diff --git a/types/Common/Status.d.ts.map b/types/Common/Status.d.ts.map new file mode 100644 index 0000000..4297c42 --- /dev/null +++ b/types/Common/Status.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Status.d.ts","sourceRoot":"","sources":["../../../src/Common/Status.ts"],"names":[],"mappings":"AAGA,oBAAY,MAAM;IAEd,KAAK,IAAI;IACT,IAAI,IAAI;IACR,KAAK,KAAK;IAEV,cAAc,MAAM;IAEpB,mBAAmB,MAAM;CAC5B;AAED,oBAAY,UAAU;IAElB,IAAI,IAAI;IACR,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,GAAG,KAAa;CACnB;AAED;;GAEG;AACH,oBAAY,sBAAsB;IAE9B,MAAM,IAAI;IACV,OAAO,IAAI;IACX,MAAM,IAAI;CACb"} \ No newline at end of file diff --git a/types/Common/StoreageKeys.d.ts b/types/Common/StoreageKeys.d.ts new file mode 100644 index 0000000..3d26a9b --- /dev/null +++ b/types/Common/StoreageKeys.d.ts @@ -0,0 +1,19 @@ +export declare enum StoreageKeys { + IsLogin = "isLogin", + PlatSession = "platSession", + PlatToken = "platToken", + UserName = "userName", + UserPhone = "userPhone", + RenderType = "renderType", + ExactDrill = "openExactDrill", + ConfigName = "configName_", + IsNewErp = "isNewErp", + RoomName = "roomName", + LastOpenFileId = "lastfid", + Uid = "uid", + Goods = "Goods_", + DrillTemp = "drilltemp_", + DrillReactor = "drillRreactor", + kjlConfig = "kjl" +} +//# sourceMappingURL=StoreageKeys.d.ts.map \ No newline at end of file diff --git a/types/Common/StoreageKeys.d.ts.map b/types/Common/StoreageKeys.d.ts.map new file mode 100644 index 0000000..6149354 --- /dev/null +++ b/types/Common/StoreageKeys.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StoreageKeys.d.ts","sourceRoot":"","sources":["../../../src/Common/StoreageKeys.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IAEpB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,UAAU,mBAAmB;IAC7B,UAAU,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,cAAc,YAAY;IAC1B,GAAG,QAAQ;IACX,KAAK,WAAW;IAChB,SAAS,eAAe;IACxB,YAAY,kBAAkB;IAC9B,SAAS,QAAQ;CACpB"} \ No newline at end of file diff --git a/types/Common/StretchParse.d.ts b/types/Common/StretchParse.d.ts new file mode 100644 index 0000000..66df742 --- /dev/null +++ b/types/Common/StretchParse.d.ts @@ -0,0 +1,11 @@ +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { SelectSet } from "../Editor/SelectSet"; +export interface StretchData { + moveEntityList: Entity[]; + stretchEntityMap: { + ent: Entity; + indexs: Array; + }[]; +} +export declare function StretchParse(ss: SelectSet): StretchData; +//# sourceMappingURL=StretchParse.d.ts.map \ No newline at end of file diff --git a/types/Common/StretchParse.d.ts.map b/types/Common/StretchParse.d.ts.map new file mode 100644 index 0000000..1b7c38e --- /dev/null +++ b/types/Common/StretchParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StretchParse.d.ts","sourceRoot":"","sources":["../../../src/Common/StretchParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,MAAM,WAAW,WAAW;IAExB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KAAE,EAAE,CAAC;CAC/D;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,WAAW,CA4CvD"} \ No newline at end of file diff --git a/types/Common/SystemEnum.d.ts b/types/Common/SystemEnum.d.ts new file mode 100644 index 0000000..97496e3 --- /dev/null +++ b/types/Common/SystemEnum.d.ts @@ -0,0 +1,14 @@ +export declare enum AAType { + FXAA = 0, + SMAA = 1 +} +export declare enum ViewDirType { + FS = 0, + YAS = 1, + ZS = 2, + YS = 3, + QS = 4, + HS = 5, + XN = 6 +} +//# sourceMappingURL=SystemEnum.d.ts.map \ No newline at end of file diff --git a/types/Common/SystemEnum.d.ts.map b/types/Common/SystemEnum.d.ts.map new file mode 100644 index 0000000..946190a --- /dev/null +++ b/types/Common/SystemEnum.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SystemEnum.d.ts","sourceRoot":"","sources":["../../../src/Common/SystemEnum.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAEd,IAAI,IAAI;IACR,IAAI,IAAI;CACX;AAED,oBAAY,WAAW;IAEnB,EAAE,IAAI;IACN,GAAG,IAAI;IACP,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;CACT"} \ No newline at end of file diff --git a/types/Common/TempVar.d.ts b/types/Common/TempVar.d.ts new file mode 100644 index 0000000..a690a04 --- /dev/null +++ b/types/Common/TempVar.d.ts @@ -0,0 +1,3 @@ +import { CADFiler } from "../DatabaseServices/CADFiler"; +export declare const TempCADFiler: CADFiler; +//# sourceMappingURL=TempVar.d.ts.map \ No newline at end of file diff --git a/types/Common/TempVar.d.ts.map b/types/Common/TempVar.d.ts.map new file mode 100644 index 0000000..0d32748 --- /dev/null +++ b/types/Common/TempVar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TempVar.d.ts","sourceRoot":"","sources":["../../../src/Common/TempVar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,eAAO,MAAM,YAAY,UAAiB,CAAC"} \ No newline at end of file diff --git a/types/Common/Toaster.d.ts b/types/Common/Toaster.d.ts new file mode 100644 index 0000000..6885ce2 --- /dev/null +++ b/types/Common/Toaster.d.ts @@ -0,0 +1,18 @@ +export declare enum Intent { + NONE = "none", + PRIMARY = "primary", + SUCCESS = "success", + WARNING = "warning", + DANGER = "danger" +} +export interface IToasterOption { + message: string | string[]; + timeout: number; + intent: Intent; + key?: string; +} +declare type ToasterFunction = (option: IToasterOption) => void; +export declare const ToasterInjectFunctions: ToasterFunction[]; +export declare function Toaster(option: IToasterOption): void; +export {}; +//# sourceMappingURL=Toaster.d.ts.map \ No newline at end of file diff --git a/types/Common/Toaster.d.ts.map b/types/Common/Toaster.d.ts.map new file mode 100644 index 0000000..2de8d23 --- /dev/null +++ b/types/Common/Toaster.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/Common/Toaster.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAEd,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;CACpB;AAED,MAAM,WAAW,cAAc;IAE3B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,aAAK,eAAe,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;AAExD,eAAO,MAAM,sBAAsB,EAAE,eAAe,EAAO,CAAC;AAE5D,wBAAgB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAIpD"} \ No newline at end of file diff --git a/types/Common/TypeOperator.d.ts b/types/Common/TypeOperator.d.ts new file mode 100644 index 0000000..74db394 --- /dev/null +++ b/types/Common/TypeOperator.d.ts @@ -0,0 +1,9 @@ +/** + * 继承+重写+拓展 +*/ +export declare type Merge = Pick> & R; +/** + * 继承+重写,不能拓展 + */ +export declare type Modify = Pick> & Pick>; +//# sourceMappingURL=TypeOperator.d.ts.map \ No newline at end of file diff --git a/types/Common/TypeOperator.d.ts.map b/types/Common/TypeOperator.d.ts.map new file mode 100644 index 0000000..bb9b233 --- /dev/null +++ b/types/Common/TypeOperator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TypeOperator.d.ts","sourceRoot":"","sources":["../../../src/Common/TypeOperator.ts"],"names":[],"mappings":"AAMA;;EAEE;AACF,oBAAY,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAEjE;;GAEG;AACH,oBAAY,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/types/Common/Utils.d.ts b/types/Common/Utils.d.ts new file mode 100644 index 0000000..78f4127 --- /dev/null +++ b/types/Common/Utils.d.ts @@ -0,0 +1,51 @@ +import { Object3D } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { ObjectId } from "../DatabaseServices/ObjectId"; +export declare const digitStrReg: RegExp; +export declare const commandReg: RegExp; +export declare const onlyEnExpReg: RegExp; +/**替换收口条柜名后缀 */ +export declare const ClosingStripReg: RegExp; +export declare const FileFormatReg: RegExp; +/**扣除封边是否相连和连接共用精度 */ +export declare const LINK_FUZZ = 0.001; +export declare function IsNumber(keyCode: number): boolean; +export declare function IsChar(keyCode: number): boolean; +export declare function isLetter(s: string): boolean; +export declare function isNum(s: string): boolean; +export declare function clamp(value: number, min: number, max: number): number; +export declare function FixIndex(index: number, arr: Array | number): number; +export declare function formateDate(date: Date, fmt: string): string; +export declare function isBetweenNums(v1: number, v2: number, v: number, fuzz?: number): boolean; +export declare function sliceDeep(arr: object[], start?: number, end?: number): object[]; +export declare function copyTextToClipboard(text: string): Promise; +/** + * 读取剪切板的字符串 + */ +export declare function readClipboardText(): Promise; +export declare function FixedNotZero(v: number | string, fractionDigits?: number): string; +/** + * To fixed + * @param v + * @param [fractionDigits] + * @returns + */ +export declare function ToFixed(v: number, fractionDigits?: number): string; +export declare function GetEntity(obj: Object3D): Entity | undefined; +export declare function IsEntity(obj: Object3D): boolean; +export declare function IsNoErase(id: ObjectId): boolean; +/** + * 原图地址转换为对应缩略图地址 + */ +export declare function getThumbsUrl(url: string): string; +/** + * 快速判断a是不是被修改了 + */ +export declare function equalObject(a: Object, b: Object): boolean; +export declare function cloneObject(a: T): T; +export declare function Uint8ArrayToBase64(bytes: Uint8Array): string; +/**转换服务端获取的文件大小 */ +export declare function getFileSize(size: number): string; +export declare function GetIndexDBID(id: string): string; +export declare function FixDigits(v: number, fractionDigits?: number): number; +//# sourceMappingURL=Utils.d.ts.map \ No newline at end of file diff --git a/types/Common/Utils.d.ts.map b/types/Common/Utils.d.ts.map new file mode 100644 index 0000000..49daa62 --- /dev/null +++ b/types/Common/Utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../../src/Common/Utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAI3D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,eAAO,MAAM,WAAW,QAAoB,CAAC;AAC7C,eAAO,MAAM,UAAU,QAAkB,CAAC;AAE1C,eAAO,MAAM,YAAY,QAAe,CAAC;AACzC,eAAe;AACf,eAAO,MAAM,eAAe,QAAkB,CAAC;AAC/C,eAAO,MAAM,aAAa,QAAsC,CAAC;AAEjE,qBAAqB;AACrB,eAAO,MAAM,SAAS,QAAO,CAAC;AAE9B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,WAGvC;AACD,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,WAGrC;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,WAIjC;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,WAG9B;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAG5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,UAS/D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,UAyBlD;AAGD,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,SAAO,WAI3E;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/E;AAkBD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,iBAQrD;AAID;;GAEG;AACH,wBAAsB,iBAAiB,oBAKtC;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,cAAc,GAAE,MAAU,UA2B1E;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU,UAI5D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAS3D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAG/C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,UAGvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,WAS/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAGtC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,UAOnD;AAED,kBAAkB;AAClB,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,UAUvC;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,UAGtC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,SAAI,UAGtD"} \ No newline at end of file diff --git a/types/Common/ZIndex.d.ts b/types/Common/ZIndex.d.ts new file mode 100644 index 0000000..bd8510a --- /dev/null +++ b/types/Common/ZIndex.d.ts @@ -0,0 +1,17 @@ +export declare enum ZINDEX { + Modal = "33", + RightPanel = "29", + HighMasking = "30", + Common = "20", + MainContent = "35", + ToolBar = "2", + RightMenu = "31", + Portal = "37", + ToolsBlock_small = "32", + CommandInput = "28", + TransparentTerminal = "0", + SpeechBox = "27", + CamCtrlBtn = "21", + SelectMarquee = "32" +} +//# sourceMappingURL=ZIndex.d.ts.map \ No newline at end of file diff --git a/types/Common/ZIndex.d.ts.map b/types/Common/ZIndex.d.ts.map new file mode 100644 index 0000000..574ef3a --- /dev/null +++ b/types/Common/ZIndex.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ZIndex.d.ts","sourceRoot":"","sources":["../../../src/Common/ZIndex.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAEd,KAAK,OAAO;IACZ,UAAU,OAAO;IACjB,WAAW,OAAO;IAClB,MAAM,OAAO;IACb,WAAW,OAAO;IAClB,OAAO,MAAM;IACb,SAAS,OAAO;IAChB,MAAM,OAAO;IACb,gBAAgB,OAAO;IACvB,YAAY,OAAO;IACnB,mBAAmB,MAAM;IACzB,SAAS,OAAO;IAChB,UAAU,OAAO;IACjB,aAAa,OAAO;CACvB"} \ No newline at end of file diff --git a/types/Common/binary/ArraybufferUtils.d.ts b/types/Common/binary/ArraybufferUtils.d.ts new file mode 100644 index 0000000..940080a --- /dev/null +++ b/types/Common/binary/ArraybufferUtils.d.ts @@ -0,0 +1,30 @@ +/** + * ArraybufferUtils contains methods to convert from and to ArrayBuffer binary format + */ +export declare class ArraybufferUtils { + /** + * Create arraybuffer from binary string + * + * @method fromBinaryString + * @param {String} str + * @return {Arraybuffer} data + */ + static fromBinaryString(str: any): ArrayBuffer; + /** + * Create arraybuffer from base64 string + * + * @method fromBase64 + * @param {String} base64 + * @return {Arraybuffer} data + */ + static fromBase64(str: any): ArrayBuffer; + /** + * Create arraybuffer from Nodejs buffer + * + * @method fromBuffer + * @param {Buffer} buffer + * @return {Arraybuffer} data + */ + static fromBuffer(buffer: any): ArrayBuffer; +} +//# sourceMappingURL=ArraybufferUtils.d.ts.map \ No newline at end of file diff --git a/types/Common/binary/ArraybufferUtils.d.ts.map b/types/Common/binary/ArraybufferUtils.d.ts.map new file mode 100644 index 0000000..608aa96 --- /dev/null +++ b/types/Common/binary/ArraybufferUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ArraybufferUtils.d.ts","sourceRoot":"","sources":["../../../../src/Common/binary/ArraybufferUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,gBAAgB;IAE5B;;;;;;OAMG;IACA,MAAM,CAAC,gBAAgB,CAAC,GAAG,KAAA;IAc9B;;;;;;OAMG;IACA,MAAM,CAAC,UAAU,CAAC,GAAG,KAAA;IA8BxB;;;;;;OAMG;IACA,MAAM,CAAC,UAAU,CAAC,MAAM,KAAA;CAa3B"} \ No newline at end of file diff --git a/types/Common/binary/Base64Utils.d.ts b/types/Common/binary/Base64Utils.d.ts new file mode 100644 index 0000000..97a65ed --- /dev/null +++ b/types/Common/binary/Base64Utils.d.ts @@ -0,0 +1,49 @@ +/** + * Base64Utils contains methods to convert from and to Base64 binary format. + * @static + * + */ +export declare class Base64Utils { + /** + * Charset used to encode binary data. + * + * @attribute encoding + * @type {String} + */ + static encoding: string; + /** + * Remove base64 header from data. + * + * Usefull for removing the heander from image, audio, video, etc. + * + * @method removeHeader + * @param {String} base64 + * @return {String} base64 + */ + static removeHeader: (data: any) => any; + /** + * Get the file format present in the base64 string. + * + * @method getFileFormat + * @param {String} data Base64 data. + * @return {String} File format present in the JSON data. + */ + static getFileFormat: (data: any) => any; + /** + * Create base64 string from arraybuffer. + * + * @method fromArraybuffer + * @param {Arraybuffer} arraybuffer + * @return {String} base64 + */ + static fromArraybuffer: (arraybuffer: any) => string; + /** + * Create base64 string from binary string. + * + * @method fromBinaryString + * @param {String} str + * @return {String} base64 + */ + static fromBinaryString: (str: any) => string; +} +//# sourceMappingURL=Base64Utils.d.ts.map \ No newline at end of file diff --git a/types/Common/binary/Base64Utils.d.ts.map b/types/Common/binary/Base64Utils.d.ts.map new file mode 100644 index 0000000..5c570bd --- /dev/null +++ b/types/Common/binary/Base64Utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Base64Utils.d.ts","sourceRoot":"","sources":["../../../../src/Common/binary/Base64Utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,WAAW;IAEvB;;;;;OAKG;IACA,MAAM,CAAC,QAAQ,SAAsE;IAExF;;;;;;;;OAQG;IACA,MAAM,CAAC,YAAY,qBAGjB;IAEL;;;;;;OAMG;IACA,MAAM,CAAC,aAAa,qBAMlB;IAEL;;;;;;OAMG;IACA,MAAM,CAAC,eAAe,+BA8CpB;IAEL;;;;;;OAMG;IACA,MAAM,CAAC,gBAAgB,uBAwCrB;CACL"} \ No newline at end of file diff --git a/types/Common/binary/BufferUtils.d.ts b/types/Common/binary/BufferUtils.d.ts new file mode 100644 index 0000000..8557c17 --- /dev/null +++ b/types/Common/binary/BufferUtils.d.ts @@ -0,0 +1,15 @@ +/// +/** + * BufferUtils contains methods to convert from and to Node.js Buffer binary format + */ +export declare class BufferUtils { + /** + * Create nodejs buffer from arraybuffer + * + * @method fromArrayBuffer + * @param {Arraybuffer} array + * @return {Buffer} buffer + */ + static fromArrayBuffer: (array: any) => Buffer; +} +//# sourceMappingURL=BufferUtils.d.ts.map \ No newline at end of file diff --git a/types/Common/binary/BufferUtils.d.ts.map b/types/Common/binary/BufferUtils.d.ts.map new file mode 100644 index 0000000..4a61b41 --- /dev/null +++ b/types/Common/binary/BufferUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BufferUtils.d.ts","sourceRoot":"","sources":["../../../../src/Common/binary/BufferUtils.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,qBAAa,WAAW;IAEvB;;;;;;OAMM;IACH,MAAM,CAAC,eAAe,yBAWpB;CAEL"} \ No newline at end of file diff --git a/types/Common/eval.d.ts b/types/Common/eval.d.ts new file mode 100644 index 0000000..a1c7868 --- /dev/null +++ b/types/Common/eval.d.ts @@ -0,0 +1,16 @@ +/** + * eval2("+10", { L: 100 }, "L") + * @param expr + * @param [params] + * @param [defaultParam] 当输入 +10 这样的表达式时,设置默认的操作变量 + * @returns 计算结果 + */ +export declare function eval2(expr: string, params?: {}, defaultParam?: string): number; +export declare function safeEval(expr: string, params?: {}, defaultParam?: string): number; +export declare function CheckExpr(expr: string, params: any): { + res: any; + error: any; +}; +/**解析大括号内的 */ +export declare function ParseExpr(expr: string, params?: {}): string; +//# sourceMappingURL=eval.d.ts.map \ No newline at end of file diff --git a/types/Common/eval.d.ts.map b/types/Common/eval.d.ts.map new file mode 100644 index 0000000..f66f93a --- /dev/null +++ b/types/Common/eval.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/Common/eval.ts"],"names":[],"mappings":"AAmDA;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAsB9E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAUjF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;;;EAYlD;AAGD,aAAa;AACb,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,UAOlD"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/CylinderHole.d.ts b/types/DatabaseServices/3DSolid/CylinderHole.d.ts new file mode 100644 index 0000000..c3d9b8c --- /dev/null +++ b/types/DatabaseServices/3DSolid/CylinderHole.d.ts @@ -0,0 +1,48 @@ +import { Box3, BufferGeometry, CylinderBufferGeometry, LineSegments, Mesh, Object3D, Vector3, Matrix3 } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from '../CADFiler'; +import { Hole } from "./Hole"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +export declare enum GangDrillType { + /**偏心轮 */ + Pxl = 0, + /**连接杆 */ + Ljg = 1, + /**预埋件 */ + Ymj = 2, + /**层板钉 */ + Nail = 3, + /** 木销 */ + Wood = 4, + /** 通孔 */ + TK = 5, + WoodPXL = 6 +} +export declare class CylinderHole extends Hole { + private _Radius; + private type; + constructor(); + static CreateCylHole(radius: number, height: number, type: GangDrillType): CylinderHole; + get Type(): GangDrillType; + set Type(t: GangDrillType); + set Radius(r: number); + get Height(): number; + set Height(v: number); + get Radius(): number; + get BoundingBox(): Box3; + private _MeshGeometry; + get MeshGeometry(): CylinderBufferGeometry; + private _EdgeGeometry; + private get EdgeGeometry(); + GetGripPoints(): Vector3[]; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + InitDrawObject(renderType: RenderType): LineSegments | Mesh; + private GetObject3DByRenderType; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +export declare function FastDrillingMeshGeometry(radius: number, height: number): CylinderBufferGeometry; +export declare function FastDrillingEdgeGeometry(radius: number, height: number): BufferGeometry; +//# sourceMappingURL=CylinderHole.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/CylinderHole.d.ts.map b/types/DatabaseServices/3DSolid/CylinderHole.d.ts.map new file mode 100644 index 0000000..3eed7be --- /dev/null +++ b/types/DatabaseServices/3DSolid/CylinderHole.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CylinderHole.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/CylinderHole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,sBAAsB,EAA0B,YAAY,EAAW,IAAI,EAAE,QAAQ,EAAmB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIvK,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,oBAAY,aAAa;IAErB,SAAS;IACT,GAAG,IAAI;IACP,SAAS;IACT,GAAG,IAAI;IACP,SAAS;IACT,GAAG,IAAI;IACP,SAAS;IACT,IAAI,IAAI;IACR,SAAS;IACT,IAAI,IAAI;IACR,SAAS;IACT,EAAE,IAAI;IACN,OAAO,IAAI;CACd;AAKD,qBACa,YAAa,SAAQ,IAAI;IAElC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,IAAI,CAAoC;;IAMhD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAQxE,IAAI,IAAI,IAII,aAAa,CADxB;IACD,IAAI,IAAI,CAAC,CAAC,EAAE,aAAa,EAOxB;IAED,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAUnB;IACD,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAQnB;IACD,IAAI,MAAM,IAxBI,MAAM,CA2BnB;IACD,IAAI,WAAW,SAId;IACD,OAAO,CAAC,aAAa,CAAyB;IAC9C,IAAI,YAAY,2BAMf;IAED,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,KAAK,YAAY,GAOvB;IACD,aAAa;IAOb,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAeZ,cAAc,CAAC,UAAU,EAAE,UAAU;IAIrC,OAAO,CAAC,uBAAuB;IAO/B,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAMhD,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAaxD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAkBlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B;AAKD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,0BAUtE;AAGD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAwBvF"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/Cylineder.d.ts b/types/DatabaseServices/3DSolid/Cylineder.d.ts new file mode 100644 index 0000000..6af1116 --- /dev/null +++ b/types/DatabaseServices/3DSolid/Cylineder.d.ts @@ -0,0 +1,23 @@ +import * as THREE from 'three'; +import { Object3D, Vector3 } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from '../CADFiler'; +import { Entity } from '../Entity/Entity'; +export declare class Cylineder extends Entity { + private m_Radius; + private m_Height; + private m_Center; + constructor(rad?: number, height?: number); + get Radius(): number; + set Radius(v: number); + get Height(): number; + set Height(v: number); + get Center(): Vector3; + set Center(v: Vector3); + CreateGeometry(): THREE.ExtrudeGeometry; + InitDrawObject(renderType: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Cylineder.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/Cylineder.d.ts.map b/types/DatabaseServices/3DSolid/Cylineder.d.ts.map new file mode 100644 index 0000000..f3231ad --- /dev/null +++ b/types/DatabaseServices/3DSolid/Cylineder.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Cylineder.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/Cylineder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAsB,QAAQ,EAAY,OAAO,EAAmB,MAAM,OAAO,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBACa,SAAU,SAAQ,MAAM;IAEjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAA0B;gBAC9B,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAMzC,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IACD,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IACD,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,cAAc;IASd,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ;IAIhD,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAO/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAQlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts b/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts new file mode 100644 index 0000000..54ba1c5 --- /dev/null +++ b/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts @@ -0,0 +1,52 @@ +import { BufferGeometry, Geometry, Matrix3, Matrix4, Mesh, Object3D, Vector3 } from "three"; +import { Line2 } from 'three/examples/jsm/lines/Line2'; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { Box3Ext } from "../../Geometry/Box"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { DragPointType } from "../Entity/DragPointType"; +import { ExtrudeSolid, ExtureContourCurve } from "../Entity/Extrude"; +import { Polyline } from "../Entity/Polyline"; +import { Shape } from "../Shape"; +import { OBB } from './../../Geometry/OBB/obb'; +import { Hole } from "./Hole"; +export declare class ExtrudeHole extends Hole { + private _contourCurve; + private _EdgeGeometry; + protected _knifeRadius: number; + isHole: boolean; + isThrough: boolean; + get KnifeRadius(): number; + set KnifeRadius(v: number); + Explode(): (import("../Entity/Circle").Circle | Polyline)[]; + get ContourCurve(): ExtureContourCurve; + set ContourCurve(curve: ExtureContourCurve); + CheckContourCurve(): void; + protected ApplyScaleMatrix(m: Matrix4): this; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + get Shape(): Shape; + get BoundingBoxInOCS(): Box3Ext; + get BoundingBox(): Box3Ext; + private get EdgeGeometry(); + private _MeshGeometry; + get MeshGeometry(): Geometry | BufferGeometry; + private GeneralMeshGeometry; + GetGripOrStretchPoints(dragType: DragPointType): Vector3[]; + private GetStrectchPointCountList; + MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType): void; + IsStretchHeight(indexs: number[]): boolean; + MoveGripOrStretchPointsOnly(indexList: Array, vec: Vector3, dragType: DragPointType): void; + GetGripPoints(): Array; + GetStretchPoints(): Vector3[]; + MoveGripPoints(indexList: number[], vec: Vector3): void; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + Convert2ExtrudeSolid(): ExtrudeSolid; + GetPrintObject3D(): (Line2 | Mesh)[]; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void; + get OBB(): OBB; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ExtrudeHole.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts.map b/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts.map new file mode 100644 index 0000000..0925a5b --- /dev/null +++ b/types/DatabaseServices/3DSolid/ExtrudeHole.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExtrudeHole.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/ExtrudeHole.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2C,QAAQ,EAAwE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3M,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAMvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAI7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBACa,WAAY,SAAQ,IAAI;IAEjC,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,aAAa,CAAiB;IACtC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAK;IACvB,MAAM,UAAQ;IACd,SAAS,UAAS;IAC9B,IAAI,WAAW,IAII,MAAM,CADxB;IACD,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAOxB;IACD,OAAO;IAIP,IAAI,YAAY,IAKQ,kBAAkB,CAFzC;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,kBAAkB,EA0BzC;IACD,iBAAiB;IAcjB,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW5C,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IA8BZ,IAAI,KAAK,UAKR;IACD,IAAI,gBAAgB,YAKnB;IACD,IAAI,WAAW,YAMd;IACD,OAAO,KAAK,YAAY,GAQvB;IACD,OAAO,CAAC,aAAa,CAA4B;IACjD,IAAI,YAAY,8BAOf;IACD,OAAO,CAAC,mBAAmB;IAY3B,sBAAsB,CAAC,QAAQ,EAAE,aAAa;IAW9C,OAAO,CAAC,yBAAyB;IAIjC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IAalF,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE;IAUhC,2BAA2B,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IA6E3F,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,gBAAgB;IAIhB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAIhD,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAIxD,oBAAoB;IASpB,gBAAgB;IAWhB,cAAc,CAAC,UAAU,GAAE,UAAiC;IAsB5D,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAiCtD,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAa9D,IAAI,GAAG,IAAI,GAAG,CAIb;IACD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAevB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/Hole.d.ts b/types/DatabaseServices/3DSolid/Hole.d.ts new file mode 100644 index 0000000..8a30e08 --- /dev/null +++ b/types/DatabaseServices/3DSolid/Hole.d.ts @@ -0,0 +1,13 @@ +import { Entity } from '../Entity/Entity'; +import { ObjectId } from '../ObjectId'; +import { CADFiler } from '../CADFiler'; +export declare class Hole extends Entity { + FId: ObjectId; + MId: ObjectId; + protected _Height: number; + get Height(): number; + set Height(v: number); + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Hole.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/Hole.d.ts.map b/types/DatabaseServices/3DSolid/Hole.d.ts.map new file mode 100644 index 0000000..81d4317 --- /dev/null +++ b/types/DatabaseServices/3DSolid/Hole.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Hole.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/Hole.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBACa,IAAK,SAAQ,MAAM;IAEhB,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,QAAQ,CAAC;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAQnB;IACD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAiBlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/RevolveSolid.d.ts b/types/DatabaseServices/3DSolid/RevolveSolid.d.ts new file mode 100644 index 0000000..1abed88 --- /dev/null +++ b/types/DatabaseServices/3DSolid/RevolveSolid.d.ts @@ -0,0 +1,38 @@ +import { Geometry, Matrix4, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { CADObject } from "../CADObject"; +import { Entity } from "../Entity/Entity"; +import { Polyline } from "../Entity/Polyline"; +export declare function AxisCS(n: Vector3): Matrix4; +export declare class RevolveSolid extends Entity { + private _StartAngle; + private _EndAngle; + private _Contour; + constructor(axisDirection?: Vector3, axisPos?: Vector3, contour?: Polyline, _StartAngle?: number, _EndAngle?: number); + get Contour(): Polyline; + GetGripPoints(): Vector3[]; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3): Vector3[]; + MoveGripPoints(indexs: number[], vec: Vector3): void; + private _MeshGeometry; + private _CacheContourPoints; + private _CacheContourPoints3D; + private _CacheContourPoints3DQ; + private _CacheContourPoints3DQ2; + private _CacheContourFaces; + private _CacheIsRev; + get MeshGeometry(): Geometry; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawGeometry(): void; + UpdateDrawObject(type: RenderType, obj: Object3D): Object3D; + /** + * 更新实体Jig状态时的材质 + */ + UpdateJigMaterial(color?: number): void; + RestoreJigMaterial(): void; + protected _ReadFile(file: CADFiler): this; + WriteFile(file: CADFiler): this; + ApplyPartialUndo(undoData: CADObject): void; +} +//# sourceMappingURL=RevolveSolid.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/RevolveSolid.d.ts.map b/types/DatabaseServices/3DSolid/RevolveSolid.d.ts.map new file mode 100644 index 0000000..34c1f3f --- /dev/null +++ b/types/DatabaseServices/3DSolid/RevolveSolid.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RevolveSolid.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/RevolveSolid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,OAAO,EAA4B,QAAQ,EAAuB,OAAO,EAAE,MAAM,OAAO,CAAC;AAInH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAK9C,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAM1C;AAGD,qBACa,YAAa,SAAQ,MAAM;IAOhC,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IANrB,OAAO,CAAC,QAAQ,CAAW;gBAEvB,aAAa,CAAC,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,QAAQ,EACV,WAAW,SAAI,EACf,SAAS,SAAc;IAuDnC,IAAI,OAAO,aAA4B;IAEvC,aAAa;IAeb,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;IAoBpF,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAkB7C,OAAO,CAAC,aAAa,CAAW;IAEhC,OAAO,CAAC,mBAAmB,CAAY;IACvC,OAAO,CAAC,qBAAqB,CAAY;IAEzC,OAAO,CAAC,sBAAsB,CAAY;IAC1C,OAAO,CAAC,uBAAuB,CAAmB;IAElD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,WAAW,CAAU;IAE7B,IAAI,YAAY,aA6Gf;IAGD,cAAc,CAAC,UAAU,GAAE,UAAiC;IAO5D,kBAAkB;IAKlB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAqBhD;;MAEE;IACF,iBAAiB,CAAC,KAAK,SAAI;IAK3B,kBAAkB;IAWlB,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAalC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAUxB,gBAAgB,CAAC,QAAQ,EAAE,SAAS;CAKvC"} \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/SweepSolid.d.ts b/types/DatabaseServices/3DSolid/SweepSolid.d.ts new file mode 100644 index 0000000..9da0289 --- /dev/null +++ b/types/DatabaseServices/3DSolid/SweepSolid.d.ts @@ -0,0 +1,52 @@ +import { BoxBufferGeometry, Matrix3, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { SweepGeometry } from '../../Geometry/SweepGeometry'; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from '../CADFiler'; +import { Curve } from "../Entity/Curve"; +import { Entity } from "../Entity/Entity"; +import { Polyline } from '../Entity/Polyline'; +import { OBB } from './../../Geometry/OBB/obb'; +export declare class SweepSolid extends Entity { + static UseRectFakerContour: boolean; + private _Contour; + private _PathCurve; + constructor(contour?: Polyline, pathCurve?: Curve); + Explode(): (Curve | Polyline)[]; + get Contour(): Polyline; + get Path(): Curve; + Reverse(): void; + /**保持路径左下角在0点 */ + private PathTo0; + /** + * 将轮廓变换到wcs空间,当用户选定某个与扫描线起点相切的轮廓时. + */ + private TransfromPathToWCS; + private _MeshGeometry; + private _lineGeo; + get MeshGeometry(): BoxBufferGeometry | SweepGeometry; + getLineGeo(pts: number[]): void; + private _EdgeGeometry; + private get EdgeGeometry(); + InitDrawObject(renderType: RenderType): Object3D; + UpdateDrawGeometry(): void; + UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D; + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D): void; + get BoundingBox(): import("three").Box3; + get OBB(): OBB; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Vector3[]; + GetStretchPoints(): Vector3[]; + private UpdateEndMtx; + private GetEndPoint; + private GetMidPoints; + MoveGripPoints(indexList: number[], vec: Vector3): void; + private IfPathIsLineThenZ0Vector; + MoveStretchPoints(indexList: number[], vec: Vector3): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=SweepSolid.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/3DSolid/SweepSolid.d.ts.map b/types/DatabaseServices/3DSolid/SweepSolid.d.ts.map new file mode 100644 index 0000000..9fb2ecf --- /dev/null +++ b/types/DatabaseServices/3DSolid/SweepSolid.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SweepSolid.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/3DSolid/SweepSolid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsI,OAAO,EAAiB,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAOzN,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAG/C,qBACa,UAAW,SAAQ,MAAM;IAElC,MAAM,CAAC,mBAAmB,UAAS;IAEnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAQ;gBACd,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK;IAkBjD,OAAO;IAKP,IAAI,OAAO,aAGV;IACD,IAAI,IAAI,UAGP;IACD,OAAO;IAMP,gBAAgB;IAChB,OAAO,CAAC,OAAO;IAMf;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAe;IAC/B,IAAI,YAAY,sCAuBf;IACD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE;IAQxB,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,KAAK,YAAY,GAOvB;IAED,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,QAAQ;IAkChD,kBAAkB;IAMlB,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAsCtD;;OAEG;IACH,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAuBxD,IAAI,WAAW,yBAMd;IACD,IAAI,GAAG,IAAI,GAAG,CAKb;IACD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IA0BZ,aAAa;IAOb,gBAAgB;IAOhB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IAiEnB,OAAO,CAAC,YAAY;IAepB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAYhD,OAAO,CAAC,wBAAwB;IAUhC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAUnD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/AllObjectData.d.ts b/types/DatabaseServices/AllObjectData.d.ts new file mode 100644 index 0000000..26675c5 --- /dev/null +++ b/types/DatabaseServices/AllObjectData.d.ts @@ -0,0 +1,13 @@ +import { CADFiler } from './CADFiler'; +import { ISerialize } from './ISerialize'; +import { CADObject } from './CADObject'; +/** + * 保存对象创建或者修改时的所有数据记录 + */ +export declare class AllObjectData implements ISerialize { + file: CADFiler; + constructor(obj?: CADObject); + ReadFile(file: CADFiler): this; + WriteFile(file: CADFiler): this; +} +//# sourceMappingURL=AllObjectData.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/AllObjectData.d.ts.map b/types/DatabaseServices/AllObjectData.d.ts.map new file mode 100644 index 0000000..3c03e70 --- /dev/null +++ b/types/DatabaseServices/AllObjectData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AllObjectData.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/AllObjectData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,qBACa,aAAc,YAAW,UAAU;IAE5C,IAAI,EAAE,QAAQ,CAAC;gBACH,GAAG,CAAC,EAAE,SAAS;IAS3B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAQvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"} \ No newline at end of file diff --git a/types/DatabaseServices/AutoRecord.d.ts b/types/DatabaseServices/AutoRecord.d.ts new file mode 100644 index 0000000..eade90b --- /dev/null +++ b/types/DatabaseServices/AutoRecord.d.ts @@ -0,0 +1,14 @@ +export declare const ISPROXYKEY = "_isProxy"; +/** + * 自动对CADObject的属性添加属性记录器,自动调用 `WriteAllObjectRecord` + * 如果属性是数组,那么自动添加`Proxy`. + * 可以使用`ISPROXYKEY`覆盖这个函数的代理行为(使用CADObject.CreateProxyArray快速覆盖) + * + * @param target + * @param property + * @param [descriptor] + */ +export declare function AutoRecord(target: { + WriteAllObjectRecord: () => void; +}, property: string, descriptor?: PropertyDecorator): void; +//# sourceMappingURL=AutoRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/AutoRecord.d.ts.map b/types/DatabaseServices/AutoRecord.d.ts.map new file mode 100644 index 0000000..92b5d2e --- /dev/null +++ b/types/DatabaseServices/AutoRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AutoRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/AutoRecord.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAAE,EAC7C,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,iBAAiB,QAyDjC"} \ No newline at end of file diff --git a/types/DatabaseServices/BlockTable.d.ts b/types/DatabaseServices/BlockTable.d.ts new file mode 100644 index 0000000..98101e1 --- /dev/null +++ b/types/DatabaseServices/BlockTable.d.ts @@ -0,0 +1,4 @@ +import { SymbolTable } from "./SymbolTable"; +export declare class BlockTable extends SymbolTable { +} +//# sourceMappingURL=BlockTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/BlockTable.d.ts.map b/types/DatabaseServices/BlockTable.d.ts.map new file mode 100644 index 0000000..ab062c2 --- /dev/null +++ b/types/DatabaseServices/BlockTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockTable.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/BlockTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBACa,UAAW,SAAQ,WAAW;CAG1C"} \ No newline at end of file diff --git a/types/DatabaseServices/BlockTableRecord.d.ts b/types/DatabaseServices/BlockTableRecord.d.ts new file mode 100644 index 0000000..689b64a --- /dev/null +++ b/types/DatabaseServices/BlockTableRecord.d.ts @@ -0,0 +1,20 @@ +import { Database } from './Database'; +import { Entity } from './Entity/Entity'; +import { ObjectCollection } from './ObjectCollection'; +import { SymbolTableRecord } from './SymbolTableRecord'; +import { CADFiler } from './CADFiler'; +import { Status } from '../Common/Status'; +export declare class BlockTableRecord extends SymbolTableRecord { + EntityCol: ObjectCollection; + constructor(); + SetOwnerDatabase(db: Database): this; + get Entitys(): Entity[]; + Add(obj: Entity, isCheckObjectCleanly?: boolean): Status; + Append(entity: Entity, isCheckObjectCleanly?: boolean): void; + AppendEvent(entity: Entity): void; + Remove(entity: Entity): void; + Destroy(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=BlockTableRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/BlockTableRecord.d.ts.map b/types/DatabaseServices/BlockTableRecord.d.ts.map new file mode 100644 index 0000000..c411241 --- /dev/null +++ b/types/DatabaseServices/BlockTableRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BlockTableRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/BlockTableRecord.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBACa,gBAAiB,SAAQ,iBAAiB;IAEnD,SAAS,2BAAkC;;IAO3C,gBAAgB,CAAC,EAAE,EAAE,QAAQ;IAO7B,IAAI,OAAO,aAGV;IACD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,oBAAoB,UAAO,GAAG,MAAM;IAMrD,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,UAAO;IAMlD,WAAW,CAAC,MAAM,EAAE,MAAM;IAI1B,MAAM,CAAC,MAAM,EAAE,MAAM;IAKrB,OAAO;IAQP,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAOvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/BoardLinesReactor.d.ts b/types/DatabaseServices/BoardLinesReactor.d.ts new file mode 100644 index 0000000..f87e835 --- /dev/null +++ b/types/DatabaseServices/BoardLinesReactor.d.ts @@ -0,0 +1,11 @@ +import { ApplicationService } from "../ApplicationServices/Application"; +import { LinesType } from "../UI/Store/BoardInterface"; +import { CADObject } from "./CADObject"; +import { Board } from "./Entity/Board"; +export declare class BoardLinesReactor { + constructor(app: ApplicationService); + AutoChangeBoardLines(ent: CADObject): boolean; +} +export declare function BoardIsLong(br: Board, lines?: LinesType): boolean; +export declare function BoardIsShort(br: CADObject): boolean; +//# sourceMappingURL=BoardLinesReactor.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/BoardLinesReactor.d.ts.map b/types/DatabaseServices/BoardLinesReactor.d.ts.map new file mode 100644 index 0000000..af626ce --- /dev/null +++ b/types/DatabaseServices/BoardLinesReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardLinesReactor.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/BoardLinesReactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAI7E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,qBAAa,iBAAiB;gBAEd,GAAG,EAAE,kBAAkB;IAgCnC,oBAAoB,CAAC,GAAG,EAAE,SAAS;CAwBtC;AAKD,wBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,YAA8B,GAAG,OAAO,CAqBnF;AAMD,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAKnD"} \ No newline at end of file diff --git a/types/DatabaseServices/CADFactory.d.ts b/types/DatabaseServices/CADFactory.d.ts new file mode 100644 index 0000000..7ddd3a2 --- /dev/null +++ b/types/DatabaseServices/CADFactory.d.ts @@ -0,0 +1,13 @@ +/** + * CAD对象工厂,通过注册 和暴露的创建方法,动态创建对象 + */ +export declare class CADFactory { + private constructor(); + private objectNameMap; + private static factory; + static RegisterObject(C: any): void; + static RegisterObjectAlias(C: any, name: string): void; + static CreateObject(name: string): any; +} +export declare function Factory(target: Object): void; +//# sourceMappingURL=CADFactory.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CADFactory.d.ts.map b/types/DatabaseServices/CADFactory.d.ts.map new file mode 100644 index 0000000..f8ea255 --- /dev/null +++ b/types/DatabaseServices/CADFactory.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CADFactory.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CADFactory.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,qBAAa,UAAU;IAEnB,OAAO;IACP,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAoB;IAC1C,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,GAAG;IAI5B,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM;IAI/C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG;CAKzC;AAGD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,QAGrC"} \ No newline at end of file diff --git a/types/DatabaseServices/CADFiler.d.ts b/types/DatabaseServices/CADFiler.d.ts new file mode 100644 index 0000000..8e365a3 --- /dev/null +++ b/types/DatabaseServices/CADFiler.d.ts @@ -0,0 +1,35 @@ +import { CADObject } from './CADObject'; +import { Database } from './Database'; +import { ISerialize } from './ISerialize'; +import { ObjectId } from './ObjectId'; +/** + * CAD文件数据 + */ +export declare class CADFiler { + protected _datas: any[]; + database: Database; + private readIndex; + constructor(_datas?: any[]); + Destroy(): void; + get Data(): any[]; + set Data(data: any[]); + Clear(): this; + Reset(): this; + WriteString(str: string): this; + ReadString(): string; + WriteObject(obj: ISerialize): this; + ReadObject(obj?: T): T; + CloneObjects(objects: CADObject[], clonedObjects?: CADObject[]): CADObject[]; + Write(data: any): this; + Read(): any; + ReadArray(count: number): any[]; + WriteObjectId(id: ObjectId): this; + ReadObjectId(): ObjectId; + WriteSoftObjectId(id: ObjectId): this; + ReadSoftObjectId(): ObjectId; + WriteHardObjectId(id: ObjectId): this; + ReadHardObjectId(): ObjectId; + ToString(): string; + FromString(str: string): void; +} +//# sourceMappingURL=CADFiler.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CADFiler.d.ts.map b/types/DatabaseServices/CADFiler.d.ts.map new file mode 100644 index 0000000..b388202 --- /dev/null +++ b/types/DatabaseServices/CADFiler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CADFiler.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CADFiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;GAEG;AACH,qBAAa,QAAQ;IAIL,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;IAFnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,SAAS,CAAa;gBACR,MAAM,GAAE,GAAG,EAAO;IAIxC,OAAO;IAMP,IAAI,IAAI,IAAI,GAAG,EAAE,CAGhB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAInB;IAED,KAAK;IAKL,KAAK;IAML,WAAW,CAAC,GAAG,EAAE,MAAM;IAMvB,UAAU,IAAI,MAAM;IAKpB,WAAW,CAAC,GAAG,EAAE,UAAU;IAa3B,UAAU,CAAC,CAAC,SAAS,UAAU,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;IAgBxD,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,aAAa,GAAE,SAAS,EAAO;IAgBlE,KAAK,CAAC,IAAI,EAAE,GAAG;IAUf,IAAI,IAAI,GAAG;IAKX,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAgB/B,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IASjC,YAAY,IAAI,QAAQ;IAQxB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAIrC,gBAAgB,IAAI,QAAQ;IAM5B,iBAAiB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI;IAIrC,gBAAgB;IAMhB,QAAQ;IAIR,UAAU,CAAC,GAAG,EAAE,MAAM;CAIzB"} \ No newline at end of file diff --git a/types/DatabaseServices/CADObject.d.ts b/types/DatabaseServices/CADObject.d.ts new file mode 100644 index 0000000..be4d20d --- /dev/null +++ b/types/DatabaseServices/CADObject.d.ts @@ -0,0 +1,55 @@ +import { CADFiler } from './CADFiler'; +import { CommandHistoryRecord } from './CommandHistoryRecord'; +import { Database } from './Database'; +import { ISerialize } from './ISerialize'; +import { ObjectId } from './ObjectId'; +export declare abstract class CADObject { + protected _Owner: ObjectId; + /** + * 用于储存临时数据 + */ + TempData: any; + __CacheBox__: any; + __CacheBoard__: any; + __CacheSize__: any; + __CachePolyline__: any; + set Owner(owner: ObjectId); + get Owner(): ObjectId; + Destroy(): void; + GoodBye(): any; + /** + * 当实体异步更新绘制实体完成后触发这个函数. + * Application通过注入的方式得知这个事件,刷新视图显示. + */ + AsyncUpdated(): void; + protected _db: Database; + get Db(): Database; + SetDefaultDb(db: Database): this; + SetOwnerDatabase(db: Database): this; + /** + * WblockClone 的时候,id是db分配的,此刻我们只需要设置它的db + */ + SetDatabase(db: Database): void; + protected _isErase: boolean; + get IsErase(): boolean; + Erase(isErase?: boolean): void; + objectId: ObjectId; + get Id(): ObjectId; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + ApplyPartialUndo(undoData: ISerialize): void; + UndoRecord(): CommandHistoryRecord; + WriteAllObjectRecord(): boolean; + Clone(): this; + DeepClone(ownerObject: CADObject, cloneObejct: CADObject, idMaping?: Map, isPrimary?: boolean): this; + CopyFrom(obj: CADObject): void; + /** + * 配合 `@AutoRecord` 使用 + * 使用这个方法来覆盖AutoRecord的监听行为. + * 这个行为只能用来监听实体添加和实体修改. + * 实体删除行为暂时无法监听 + * @param setCallback 设置新的实体到数组时的回调函数 + */ + protected CreateProxyArray(setCallback: (v: any) => void): any[]; +} +//# sourceMappingURL=CADObject.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CADObject.d.ts.map b/types/DatabaseServices/CADObject.d.ts.map new file mode 100644 index 0000000..584d903 --- /dev/null +++ b/types/DatabaseServices/CADObject.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CADObject.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CADObject.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,8BAAsB,SAAS;IAE3B,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC3B;;OAEG;IACI,QAAQ,EAAE,GAAG,CAAC;IAGrB,YAAY,EAAE,GAAG,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC;IACpB,aAAa,EAAE,GAAG,CAAC;IACnB,iBAAiB,EAAE,GAAG,CAAC;IAEvB,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAGxB;IACD,IAAI,KAAK,IAJQ,QAAQ,CAOxB;IAED,OAAO;IAQP,OAAO,IAAI,GAAG;IAMd;;;MAGE;IAEF,YAAY;IAKZ,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;IACxB,IAAI,EAAE,IAAI,QAAQ,CAGjB;IAGD,YAAY,CAAC,EAAE,EAAE,QAAQ;IAazB,gBAAgB,CAAC,EAAE,EAAE,QAAQ;IAc7B;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ;IAQxB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IACpC,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,KAAK,CAAC,OAAO,GAAE,OAAc;IAc7B,QAAQ,EAAE,QAAQ,CAAC;IAEnB,IAAI,EAAE,IAAI,QAAQ,CAGjB;IAQD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAevB,SAAS,CAAC,IAAI,EAAE,QAAQ;IAQxB,gBAAgB,CAAC,QAAQ,EAAE,UAAU;IAerC,UAAU,IAAI,oBAAoB;IAMlC,oBAAoB,IAAI,OAAO;IAY/B,KAAK,IAAI,IAAI;IAqBb,SAAS,CACL,WAAW,EAAE,SAAS,EACtB,WAAW,EAAE,SAAS,EACtB,QAAQ,GAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAa,EAC3C,SAAS,UAAO,GACjB,IAAI;IAMP,QAAQ,CAAC,GAAG,EAAE,SAAS;IAevB;;;;;;OAMG;IACH,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI;CA0B3D"} \ No newline at end of file diff --git a/types/DatabaseServices/CommandHistoryRecord.d.ts b/types/DatabaseServices/CommandHistoryRecord.d.ts new file mode 100644 index 0000000..ffefbfb --- /dev/null +++ b/types/DatabaseServices/CommandHistoryRecord.d.ts @@ -0,0 +1,24 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +import { HistorycRecord } from './HistorycRecord'; +import { ObjectAllDataHistoryRecord } from './ObjectAllDataHistoryRecord'; +import { ObjectId } from './ObjectId'; +/** + * 命令的历史记录 + */ +export declare class CommandHistoryRecord extends CADObject { + CommandName: string; + constructor(CommandName?: string); + private _HistoryList; + private _CreateObjects; + get HistoryList(): Map; + private GetObjectHistoryList; + EndCommand(): void; + GetObjectAllDataRecord(historyList: HistorycRecord[]): ObjectAllDataHistoryRecord | undefined; + WriteObjectHistoryPath(obj: CADObject, history: HistorycRecord): void; + WriteObjectSnapshoot(obj: CADObject): void; + CreateEraseHistory(obj: CADObject, isErase: boolean): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=CommandHistoryRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CommandHistoryRecord.d.ts.map b/types/DatabaseServices/CommandHistoryRecord.d.ts.map new file mode 100644 index 0000000..ed14fb1 --- /dev/null +++ b/types/DatabaseServices/CommandHistoryRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandHistoryRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CommandHistoryRecord.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,qBACa,oBAAqB,SAAQ,SAAS;IAE5B,WAAW;gBAAX,WAAW,SAAK;IAKnC,OAAO,CAAC,YAAY,CAAyC;IAC7D,OAAO,CAAC,cAAc,CAAwC;IAE9D,IAAI,WAAW,IAAI,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC,CAGjD;IAED,OAAO,CAAC,oBAAoB;IAO5B,UAAU;IAiBV,sBAAsB,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,0BAA0B,GAAG,SAAS;IAW7F,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc;IAe9D,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAmB1C,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IAanD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAqBvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAgB3B"} \ No newline at end of file diff --git a/types/DatabaseServices/CommandServer.d.ts b/types/DatabaseServices/CommandServer.d.ts new file mode 100644 index 0000000..6131037 --- /dev/null +++ b/types/DatabaseServices/CommandServer.d.ts @@ -0,0 +1,23 @@ +import { Singleton } from "../Common/Singleton"; +import { Command } from "../Editor/CommandMachine"; +import { ICommand } from "../UI/Components/CommandPanel/CommandList"; +/** + * 保存CAD的自定义命令,统一由这里经过CRUD操作 + */ +export declare class CommandServer extends Singleton { + private _customCommand; + private _needUpload; + CommandListMap: Map; + AddCustonCommand(icommand: ICommand): void; + DeleteCustonCommand(icommand: ICommand): void; + Upload(): Promise; + ReadCommandlist(): Promise; + SaveOldDataToServer(): Promise; + private _LastScrollTop; + SetLastScrollTop(scrollTop: number): Promise; + GetLastScrollTop(): Promise; +} +export declare class UpgradeData implements Command { + exec(): Promise; +} +//# sourceMappingURL=CommandServer.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CommandServer.d.ts.map b/types/DatabaseServices/CommandServer.d.ts.map new file mode 100644 index 0000000..acfb1d6 --- /dev/null +++ b/types/DatabaseServices/CommandServer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandServer.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CommandServer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAe,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAIlF;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;IAExC,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,WAAW,CAAS;IAC5B,cAAc,sBAA6B;IAC3C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ;IAUnC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ;IAKhC,MAAM;IAaN,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAoBtC,mBAAmB;IAuBzB,OAAO,CAAC,cAAc,CAAS;IACzB,gBAAgB,CAAC,SAAS,EAAE,MAAM;IAMlC,gBAAgB;CAQzB;AAGD,qBAAa,WAAY,YAAW,OAAO;IAEjC,IAAI;CAKb"} \ No newline at end of file diff --git a/types/DatabaseServices/Contour.d.ts b/types/DatabaseServices/Contour.d.ts new file mode 100644 index 0000000..84fce35 --- /dev/null +++ b/types/DatabaseServices/Contour.d.ts @@ -0,0 +1,58 @@ +import { Circle } from "./Entity/Circle"; +import { Curve } from "./Entity/Curve"; +import { Polyline } from "./Entity/Polyline"; +export declare class Contour { + private _Curve; + protected SetCurve(cu: Polyline | Circle): void; + /**会将传入的闭合轮廓改为逆时针 */ + static CreateContour(cus: Curve[] | Polyline | Circle, needLink?: boolean): Contour; + get Curve(): Polyline | Circle; + get Area(): number; + get BoundingBox(): import("../Geometry/Box").Box3Ext; + /** + * 不等比例缩放 + * @param {number} ref 缩放参考值,大于该值的点缩放 + * @param {number} dist 缩放距离 + * @param {string} dir x y z + */ + UnEqualProportionScale(ref: number, dist: number, dir: "x" | "y"): boolean; + Clone(): Contour; + IntersectionBoolOperation(target: Contour): Contour[]; + UnionBoolOperation(target: Contour): { + contours: Contour[]; + holes: Contour[]; + }; + SubstactBoolOperation(target: Contour): Contour[]; + /** + * 计算与目标轮廓布尔运算后的结果曲线. + */ + GetIntersetAndUnionList(target: Contour): { + intersectionList: Curve[]; + unionList: Curve[]; + }; + GetSubtractList(target: Contour): Polyline[]; + GetSubtractListByMoreTargets(targets: Contour[]): { + holes: Contour[]; + outlines: Contour[]; + }; + GetSubListWithCus(targets: Contour[]): { + holes: Polyline[]; + subtractList: Polyline[]; + }; + /** + * 获得全部闭合曲线 + * @若传入二维曲线数据,将默认子数组为闭合曲线段 + */ + static GetAllContour(cus: Curve[] | Curve[][]): Contour[]; + /** + * 合并曲线组成为多段线 + * @param cus 曲线组 + * @param [needLink=true] 需要解析成首尾连接状态 + * @returns 单一曲线,如果返回超过1个,其他的将被遗弃. + */ + static Combine(cus: Curve[], needLink?: boolean, tolerance?: number): Curve; + get Shape(): THREE.Shape; + CuInOutline(targetCur: Curve): boolean; + Equal(tar: Contour): boolean; +} +//# sourceMappingURL=Contour.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Contour.d.ts.map b/types/DatabaseServices/Contour.d.ts.map new file mode 100644 index 0000000..8a5ffd8 --- /dev/null +++ b/types/DatabaseServices/Contour.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Contour.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Contour.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM7C,qBAAa,OAAO;IAEhB,OAAO,CAAC,MAAM,CAAoB;IAElC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM;IASxC,oBAAoB;IACpB,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,QAAQ,GAAG,MAAM,EAAE,QAAQ,UAAO;IA2BtE,IAAI,KAAK,IAAI,QAAQ,GAAG,MAAM,CAG7B;IACD,IAAI,IAAI,WAGP;IACD,IAAI,WAAW,sCAGd;IACD;;;;;OAKG;IACH,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG;IAsBhE,KAAK;IAKL,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE;IAQrD,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,OAAO,EAAE,CAAC;KAAE;IAkE/E,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE;IA8BjD;;OAEG;IACH,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG;QAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,KAAK,EAAE,CAAC;KAAE;IAmG5F,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE;IA6D5C,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE;;;;IAqC/C,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE;;;;IA2FpC;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE;IAiBzD;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,QAAQ,UAAO,EAAE,SAAS,SAAO,GAAG,KAAK;IA6BtE,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAGvB;IACD,WAAW,CAAC,SAAS,EAAE,KAAK;IAI5B,KAAK,CAAC,GAAG,EAAE,OAAO;CAIrB"} \ No newline at end of file diff --git a/types/DatabaseServices/CreateObjectData.d.ts b/types/DatabaseServices/CreateObjectData.d.ts new file mode 100644 index 0000000..d95a57a --- /dev/null +++ b/types/DatabaseServices/CreateObjectData.d.ts @@ -0,0 +1,18 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +import { Database } from './Database'; +export declare class CreateObjectData extends CADObject { + Object?: CADObject; + private CADFiler; + CreateObject: CADObject; + /** + * 如果是实体新建,那么不需要调用`Save`,历史记录会在命令结束的时候调用. + * 如果是实体删除,那么请自行调用`Save`. + */ + constructor(Object?: CADObject); + Save(): this; + GetObject(db: Database): CADObject; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=CreateObjectData.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/CreateObjectData.d.ts.map b/types/DatabaseServices/CreateObjectData.d.ts.map new file mode 100644 index 0000000..afff292 --- /dev/null +++ b/types/DatabaseServices/CreateObjectData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CreateObjectData.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/CreateObjectData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBACa,gBAAiB,SAAQ,SAAS;IAWxB,MAAM,CAAC,EAAE,SAAS;IATrC,OAAO,CAAC,QAAQ,CAA4B;IAG5C,YAAY,EAAE,SAAS,CAAC;IAExB;;;OAGG;gBACgB,MAAM,CAAC,EAAE,SAAS;IAMrC,IAAI;IAUJ,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,SAAS;IAYlC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAOvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Database.d.ts b/types/DatabaseServices/Database.d.ts new file mode 100644 index 0000000..82c1daa --- /dev/null +++ b/types/DatabaseServices/Database.d.ts @@ -0,0 +1,93 @@ +import { Vector3 } from 'three'; +import { DuplicateRecordCloning } from '../Common/Status'; +import { BlockTable } from './BlockTable'; +import { BlockTableRecord } from './BlockTableRecord'; +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +import { DeepCloneFiler } from './DeepCloneFiler'; +import { GroupTable } from './GroupTable'; +import { HistoricManage } from './HistoricManage'; +import { IdMaping } from './IdMaping'; +import { AmbientLight } from './Lights/AmbientLight'; +import { DirectionalLight } from './Lights/DirectionalLight'; +import { HemisphereLight } from './Lights/HemisphereLight'; +import { MaterialTable } from './MaterialTable'; +import { ObjectId } from './ObjectId'; +import { PhysicalMaterialRecord } from './PhysicalMaterialRecord'; +import { ProcessingGroupTable } from './ProcessingGroup/ProcessingGroupTable'; +import { TemplateTable } from './Template/TemplateTable'; +import { TextureTable } from './TextureTable'; +interface OwnerContainer { + Add(object: any, isCheckObjectCleanly?: boolean): void; +} +export declare class Database { + private defaultDatabase; + hm: HistoricManage; + BlockTable: BlockTable; + MaterialTable: MaterialTable; + TextureTable: TextureTable; + TemplateTable: TemplateTable; + GroupTable: GroupTable; + ProcessingGroupTable: ProcessingGroupTable; + ModelSpace: BlockTableRecord; + LayoutSpace: BlockTableRecord; + Lights: BlockTableRecord; + AmbientLight: AmbientLight; + SunLight: DirectionalLight; + HemisphereLight: HemisphereLight; + DefaultMaterial: PhysicalMaterialRecord; + private idIndex; + private idMap; + constructor(buildDefaultDrawing?: boolean, defaultDatabase?: boolean, disableHistoric?: boolean); + private InitLight; + SettingDefaultMaterial(): void; + Destroy(): void; + FileWrite(): CADFiler; + FileRead(file: CADFiler): this; + /** + * 单个数据库内克隆对象(objects),并将他们附加到指定的容器对象(owner). + * @param objects 被克隆的对象 + * @param owner 克隆对象的容器 + * @param idMap id映射 + * @param deferXlation 指示是否应该进行ID转换 + * @returns 新克隆的对象列表 + */ + DeepCloneObjects(objects: CADObject[], owner: OwnerContainer, idMap?: IdMaping, deferXlation?: boolean): CADObject[]; + /** + * 清理拷贝后的实体空引用 + */ + private ClearEmptyAssoc; + DeepCloneObject(filer: DeepCloneFiler, object: CADObject, owner: OwnerContainer, idMap?: IdMaping): CADObject | undefined; + /** + * 将来自不同数据库的对象列表拷贝到本数据库中. + * 当前支持使用HardId模式来硬关联某个对象,使该对象能够在WblockClone时一起被带过来. + * 当前不支持硬关联对象的Owner不是默认的容器. + * 如果需要这么做,请将该对象的Owner设置为Hard关联 + * @param objects 对象不能属于本数据库 + * @param owner 克隆对象的新容器 + * @param idMap id映射 + */ + WblockCloneObejcts(objects: CADObject[], owner: OwnerContainer, idMap: IdMaping, drc: DuplicateRecordCloning): CADObject[]; + /** + * 克隆引用对象 WriteHardObjectId + */ + private WblockCloneReferenceObject; + private WblockCloneObject; + /** + * 为拷贝出来的对象分配id索引,并在数据库中注册 + */ + private AllocationObjectId; + Insert(): void; + /** + * 写块 + * @param outputDatabase 输出到指定的数据库 + * @param objects + * @param basePoint + * @param cloning + */ + Wblock(outputDataBase: Database, objects: CADObject[], basePoint: Vector3, cloning: any): void; + AllocateId(): ObjectId; + GetObjectId(index: number, create?: boolean): ObjectId; +} +export {}; +//# sourceMappingURL=Database.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Database.d.ts.map b/types/DatabaseServices/Database.d.ts.map new file mode 100644 index 0000000..8c60d78 --- /dev/null +++ b/types/DatabaseServices/Database.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Database.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Database.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/DeepCloneFiler.d.ts b/types/DatabaseServices/DeepCloneFiler.d.ts new file mode 100644 index 0000000..5436d5c --- /dev/null +++ b/types/DatabaseServices/DeepCloneFiler.d.ts @@ -0,0 +1,13 @@ +import { CADFiler } from "./CADFiler"; +import { ObjectId } from "./ObjectId"; +export declare class DeepCloneFiler extends CADFiler { + idMaping: Map; + constructor(idMaping?: Map); + ReadObjectId(): ObjectId; + ReadSoftObjectId(): ObjectId; + ReadHardObjectId(): ObjectId; + hardObjectIds: Set; + cloned: Set; + WriteHardObjectId(id: ObjectId): this; +} +//# sourceMappingURL=DeepCloneFiler.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/DeepCloneFiler.d.ts.map b/types/DatabaseServices/DeepCloneFiler.d.ts.map new file mode 100644 index 0000000..e727c04 --- /dev/null +++ b/types/DatabaseServices/DeepCloneFiler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DeepCloneFiler.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/DeepCloneFiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAErD,qBAAa,cAAe,SAAQ,QAAQ;IAErB,QAAQ;gBAAR,QAAQ,wBAA8B;IAKzD,YAAY;IAcZ,gBAAgB;IAQhB,gBAAgB;IAQhB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAChC,iBAAiB,CAAC,EAAE,EAAE,QAAQ;CAOjC"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts b/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts new file mode 100644 index 0000000..619dfab --- /dev/null +++ b/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts @@ -0,0 +1,46 @@ +import { Line as TLine, Matrix3, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Arc } from "../Entity/Arc"; +import { Entity } from "../Entity/Entity"; +import { Line } from "../Entity/Line"; +import { Text } from "../Text/Text"; +/** + * 两条直线的标注 + */ +export declare class LineAngularDimension extends Entity { + protected m_L1StartPoint: Vector3; + protected m_L1EndPoint: Vector3; + protected m_L2StartPoint: Vector3; + protected m_L2EndPoint: Vector3; + protected m_DimPoint: Vector3; + OnlyRenderType: boolean; + private _Text; + private m_Arc; + constructor(m_L1StartPoint?: Vector3, //第一条直线的起点 + m_L1EndPoint?: Vector3, //第一条直线的终点 + m_L2StartPoint?: Vector3, //第二条直线的起点 + m_L2EndPoint?: Vector3, m_DimPoint?: Vector3); + UpdateDimData(l1sp: Vector3, l1ep: Vector3, l2sp: Vector3, l2ep: Vector3, dimp: Vector3): void; + get Text(): Text; + get L1StartPoint(): Vector3; + get L2StartPoint(): Vector3; + get L1EndPoint(): Vector3; + get L2EndPoint(): Vector3; + get DimPoint(): Vector3; + get Arc(): Arc; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + Clone(): this; + Explode(): (Arc | Text)[]; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + InitDrawObject(renderType?: RenderType): Object3D; + Update2Line(l1: Line, l2: Line, intPt: Vector3, li1: TLine, li2: TLine): void; + UpdateDrawObject(renderType: RenderType, obj: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=2LineAngularDimension.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts.map b/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts.map new file mode 100644 index 0000000..fecb526 --- /dev/null +++ b/types/DatabaseServices/Dimension/2LineAngularDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"2LineAngularDimension.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/2LineAngularDimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,IAAI,KAAK,EAAa,OAAO,EAAQ,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAInG,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAK7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAc,MAAM,cAAc,CAAC;AAGhD;;GAEG;AACH,qBACa,oBAAqB,SAAQ,MAAM;IAMxC,SAAS,CAAC,cAAc;IACxB,SAAS,CAAC,YAAY;IACtB,SAAS,CAAC,cAAc;IACxB,SAAS,CAAC,YAAY;IACtB,SAAS,CAAC,UAAU;IARxB,cAAc,UAAQ;IACtB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAa;gBAEZ,cAAc,UAAgB,EAAE,UAAU;IAC1C,YAAY,UAAgB,EAAI,UAAU;IAC1C,cAAc,UAAgB,EAAE,UAAU;IAC1C,YAAY,UAAgB,EAC5B,UAAU,UAAgB;IASxC,aAAa,CACT,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;IAmB7E,IAAI,IAAI,SAGP;IACD,IAAI,YAAY,YAGf;IACD,IAAI,YAAY,YAGf;IACD,IAAI,UAAU,YAGb;IACD,IAAI,UAAU,YAGb;IACD,IAAI,QAAQ,YAGX;IACD,IAAI,GAAG,QAGN;IAED,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAa/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAiBhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IASxD,KAAK,IAAI,IAAI;IAeb,OAAO;IASP,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAWZ,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAsBvE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;IA4CtE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAgEtD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAWlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAY3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/AlignedDimension.d.ts b/types/DatabaseServices/Dimension/AlignedDimension.d.ts new file mode 100644 index 0000000..ad2f8b3 --- /dev/null +++ b/types/DatabaseServices/Dimension/AlignedDimension.d.ts @@ -0,0 +1,90 @@ +import { Box3, Material, Matrix3, Matrix4, Object3D, Vector2, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Entity } from "../Entity/Entity"; +import { Line } from "../Entity/Line"; +import { Text, TextAligen } from "../Text/Text"; +interface DefaultValue { + offset: Vector2; + isFlipped: boolean; +} +/** + * 对齐标注 + * 存在子类重载(线性标注 LinearDimension) + * @class AlignedDimension + */ +export declare class AlignedDimension extends Entity { + protected m_FootP1: Vector3; + protected m_FootP2: Vector3; + protected m_ArmP1: Vector3; + protected m_ArmP2: Vector3; + protected m_TextRotation: number; + protected m_LeadOutVisible: boolean; + private _Text; + private _TextString; + private _TextBoundingBox; + private _LeadOutLine; + private _LeadOutOffsetY; + private _LeadOutOffsetX; + private _DefaultVal; + private _LeadOutPts; + private _LeadOutIsFlipped; + private isDragLeadOutPt; + constructor(m_FootP1?: Vector3, m_FootP2?: Vector3, m_ArmP1?: Vector3, m_ArmP2?: Vector3, m_TextRotation?: number, m_LeadOutVisible?: boolean); + set FootP1(v: Vector3); + get FootP1(): Vector3; + set FootP2(v: Vector3); + get FootP2(): Vector3; + set ArmP1(v: Vector3); + get ArmP1(): Vector3; + set ArmP2(v: Vector3); + get ArmP2(): Vector3; + get TextPosition(): Vector3; + set TextPosition(p: Vector3); + get DalUcs(): Matrix4; + RaiseFooters(num: number): void; + set TextRotation(angle: number); + set TextAligen(al: TextAligen); + get Text(): Text; + set TextString(txt: string); + get TextBoundingBox(): Box3; + set TextBoundingBox(box: Box3); + set LeadOutVisible(visible: boolean); + set LeadOutFlipped(isFlipped: boolean); + get LeadOutFlipped(): boolean; + toggleLeadOutVisible(): void; + toggleLeadOutFlipped(): void; + set LeadOutOffsetY(size: number); + get LeadOutOffsetY(): number; + set LeadOutOffsetX(size: number); + get LeadOutOffsetX(): number; + set DefaultValue(val: DefaultValue); + get DefaultValue(): DefaultValue; + set TextSize(size: number); + get TextSize(): number; + Explode(): (Line | Text)[]; + Clone(): this; + CloneDrawObject(from: this): void; + protected OnlyRenderType: boolean; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): void; + /** + * 更新引线并返回textPosition + * @returns textPosition(Vector3) + * @memberof AlignedDimension + */ + UpdateLeadOutLine(): Vector3; + UpdateText(pos?: Vector3): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D, material?: Material): void; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + protected ChangeFootPt(): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +export {}; +//# sourceMappingURL=AlignedDimension.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/AlignedDimension.d.ts.map b/types/DatabaseServices/Dimension/AlignedDimension.d.ts.map new file mode 100644 index 0000000..93a198a --- /dev/null +++ b/types/DatabaseServices/Dimension/AlignedDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AlignedDimension.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/AlignedDimension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/DimDiameter.d.ts b/types/DatabaseServices/Dimension/DimDiameter.d.ts new file mode 100644 index 0000000..13e1e2c --- /dev/null +++ b/types/DatabaseServices/Dimension/DimDiameter.d.ts @@ -0,0 +1,11 @@ +import { Material, Object3D, Vector3 } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { RadiusDimension } from "./RadiusDimension"; +export declare class DiameterDimension extends RadiusDimension { + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D, material?: Material): void; + UpdateText(): void; + MoveGripPoints(indexList: number[], vec: Vector3): void; +} +//# sourceMappingURL=DimDiameter.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/DimDiameter.d.ts.map b/types/DatabaseServices/Dimension/DimDiameter.d.ts.map new file mode 100644 index 0000000..e03c509 --- /dev/null +++ b/types/DatabaseServices/Dimension/DimDiameter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DimDiameter.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/DimDiameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAQ,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAOzF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBACa,iBAAkB,SAAQ,eAAe;IAElD,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAuBvE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IA8BtD,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAmBnF,UAAU;IAMV,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;CAoCnD"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts b/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts new file mode 100644 index 0000000..a160609 --- /dev/null +++ b/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts @@ -0,0 +1,5 @@ +import { LineBasicMaterial } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { Entity } from "../Entity/Entity"; +export declare function GetDimLineMaterial(dim: Entity, renderType: RenderType): LineBasicMaterial; +//# sourceMappingURL=GetDimLineMaterial.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts.map b/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts.map new file mode 100644 index 0000000..70cabdb --- /dev/null +++ b/types/DatabaseServices/Dimension/GetDimLineMaterial.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetDimLineMaterial.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/GetDimLineMaterial.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAQzF"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/LinearDimension.d.ts b/types/DatabaseServices/Dimension/LinearDimension.d.ts new file mode 100644 index 0000000..92821fc --- /dev/null +++ b/types/DatabaseServices/Dimension/LinearDimension.d.ts @@ -0,0 +1,9 @@ +import { Vector3 } from "three"; +import { AlignedDimension } from "./AlignedDimension"; +export declare class LinearDimension extends AlignedDimension { + private m_DimDir; + get TextPosition(): Vector3; + set TextPosition(p: Vector3); + ChangeFootPt(): void; +} +//# sourceMappingURL=LinearDimension.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/LinearDimension.d.ts.map b/types/DatabaseServices/Dimension/LinearDimension.d.ts.map new file mode 100644 index 0000000..faedd12 --- /dev/null +++ b/types/DatabaseServices/Dimension/LinearDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LinearDimension.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/LinearDimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgBtD,qBACa,eAAgB,SAAQ,gBAAgB;IAEjD,OAAO,CAAC,QAAQ,CAAY;IAE5B,IAAI,YAAY,IAII,OAAO,CAD1B;IACD,IAAI,YAAY,CAAC,CAAC,EAAE,OAAO,EAyB1B;IACD,YAAY;CAcf"} \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/RadiusDimension.d.ts b/types/DatabaseServices/Dimension/RadiusDimension.d.ts new file mode 100644 index 0000000..15bcdeb --- /dev/null +++ b/types/DatabaseServices/Dimension/RadiusDimension.d.ts @@ -0,0 +1,35 @@ +import { Material, Matrix3, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Entity } from "../Entity/Entity"; +import { Line } from "../Entity/Line"; +import { Text } from "../Text/Text"; +export declare class RadiusDimension extends Entity { + protected startPt: Vector3; + protected center: Vector3; + protected endPt: Vector3; + OnlyRenderType: boolean; + protected _Text: Text; + constructor(startPt?: Vector3, center?: Vector3, endPt?: Vector3); + get StartPt(): Vector3; + set StartPt(v: Vector3); + get Center(): Vector3; + set Center(v: Vector3); + get EndPt(): Vector3; + set EndPt(v: Vector3); + Explode(): (Line | Text)[]; + Clone(): this; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D, material?: Material): void; + UpdateText(): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=RadiusDimension.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Dimension/RadiusDimension.d.ts.map b/types/DatabaseServices/Dimension/RadiusDimension.d.ts.map new file mode 100644 index 0000000..33edfc6 --- /dev/null +++ b/types/DatabaseServices/Dimension/RadiusDimension.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RadiusDimension.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Dimension/RadiusDimension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAE,OAAO,EAAQ,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKlG,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,qBACa,eAAgB,SAAQ,MAAM;IAOnC,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,MAAM;IAChB,SAAS,CAAC,KAAK;IANnB,cAAc,UAAQ;IACtB,SAAS,CAAC,KAAK,OAAc;gBAGf,OAAO,UAAgB,EACvB,MAAM,UAAgB,EACtB,KAAK,UAAgB;IAMnC,IAAI,OAAO,IAII,OAAO,CADrB;IACD,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,EAKrB;IACD,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,IAAI,KAAK,IAII,OAAO,CADnB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAKnB;IACD,OAAO;IAUP,KAAK,IAAI,IAAI;IAab,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAsBvE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAuBtD,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAiBnF,UAAU;IAOV,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAWZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IA8BhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAQxD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAQlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Arc.d.ts b/types/DatabaseServices/Entity/Arc.d.ts new file mode 100644 index 0000000..18547a2 --- /dev/null +++ b/types/DatabaseServices/Entity/Arc.d.ts @@ -0,0 +1,138 @@ +import { Box3, BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Shape, Vector2, Vector3 } from 'three'; +import { Line2 } from 'three/examples/jsm/lines/Line2'; +import { Status } from '../../Common/Status'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Curve } from './Curve'; +/** + * 圆弧实体类 + * 与ACAD不同,这个类加入了时针变量,并且默认构造的圆弧为顺时针圆弧. + * + * 关于时针圆弧: + * 起始圆弧到终止圆弧总是在0-2PI之间.(一个完整的圆). + * 圆弧的绘制从起始圆弧绘制到终止圆弧. 按照时针绘制. + * 参考计算圆弧的完整角度方法查看该计算方式. + */ +export declare class Arc extends Curve { + constructor(center?: Vector3, radius?: number, startAngle?: number, endAngle?: number, clockwise?: boolean); + private _Radius; + private _StartAngle; + private _EndAngle; + /** + * 曲线为顺时针 + */ + private _Clockwise; + get Shape(): Shape; + get Center(): Vector3; + set Center(v: Vector3); + get Normal(): Vector3; + set Normal(v: Vector3); + get Area(): number; + get Area2(): number; + get IsClose(): boolean; + get BoundingBox(): Box3; + get Radius(): number; + set Radius(v: number); + get IsClockWise(): boolean; + set IsClockWise(v: boolean); + get StartAngle(): number; + set StartAngle(v: number); + get EndAngle(): number; + set EndAngle(v: number); + get StartPoint(): Vector3; + set StartPoint(v: Vector3); + get EndPoint(): Vector3; + set EndPoint(v: Vector3); + get StartParam(): number; + get EndParam(): number; + get Length(): number; + GetParamAtPoint2(pt: Vector3): number; + PtOnCurve3(p: Vector3, fuzz?: number): boolean; + protected ApplyScaleMatrix(m: Matrix4): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + GetPointAtParam(param: number): Vector3; + GetPointAtDistance(distance: number): Vector3; + GetDistAtParam(param: number): number; + GetDistAtPoint(pt: Vector3): number; + GetParamAtPoint(pt: Vector3): number; + /** + * 利用角度计算该角度在圆弧中代表的参数. + * 如果角度在圆弧内,那么返回0-1 + * 如果角度不在圆弧内,那么尝试返回离圆弧起始或者结束的较近的参数 + * + * @param {number} an + * @returns + * @memberof Arc + */ + GetParamAtAngle(an: number): number; + /** + * 根据角度获得参数,不过在这里我们可以指定我们是要获取前面的参数还是后面的参数(正负) + * @param an + * @param [isStart] true:返回负数,false 返回正数 + * @returns + */ + GetParamAtAngle2(an: number, isStart?: boolean): number; + GetAngleAtPoint(pt: Vector3): number; + GetAngleAtParam(param: number): number; + GetSplitCurves(param: number[] | number): Arc[]; + GetOffsetCurves(offsetDist: number): Arc[]; + Extend(newParam: number): void; + Join(cu: Curve): Status; + Reverse(): this; + IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[]; + /** + * 计算出圆弧所包含的角度 + * + * @readonly + * @type {number} + * @memberof Arc + */ + get AllAngle(): number; + get Bul(): number; + /** + * 计算所包含的角度 + * + * @private + * @param {number} endAngle 结束的角度 + * @returns + * @memberof Arc + */ + ComputeAnlge(endAngle: number): number; + /** + * 解析两点和凸度所构成的圆弧 + * + * @param {Vector2} p1 + * @param {Vector2} p2 + * @param {number} bul 凸度,在cad中,凸度为 <(四分之一圆心角)的正切值> + */ + ParseFromBul(p1: Vector3 | Vector2, p2: Vector3 | Vector2, bul: number): Arc; + FromThreePoint(pt1: Vector3, pt2: Vector3, pt3: Vector3): this; + /** + * 重载: 初始化绘制实体. + * + * @param {RenderType} [renderType=RenderType.Wireframe] + */ + InitDrawObject(renderType?: RenderType): Line2 | TLine; + private UpdateGeometry; + /** + * 重载:更新绘制的实体 + * + * @param {RenderType} type + * @param {Object3D} obj + * @memberof Arc + */ + UpdateDrawObject(type: RenderType, obj: Object3D): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: Array, vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetParamAtDist(d: number): number; + GetFistDeriv(pt: number | Vector3): Vector3; + GetClosestPointTo(pt: Vector3, extend: boolean): Vector3; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Arc.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Arc.d.ts.map b/types/DatabaseServices/Entity/Arc.d.ts.map new file mode 100644 index 0000000..3a9812f --- /dev/null +++ b/types/DatabaseServices/Entity/Arc.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Arc.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Arc.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Board.d.ts b/types/DatabaseServices/Entity/Board.d.ts new file mode 100644 index 0000000..11e0515 --- /dev/null +++ b/types/DatabaseServices/Entity/Board.d.ts @@ -0,0 +1,152 @@ +import { Matrix4, Vector3, Object3D, Geometry, Matrix3, UVGenerator } from 'three'; +import { BoardOpenDir, BoardProcessOption, BoardType, FaceDirection } from '../../UI/Store/BoardInterface'; +import { CADFiler } from '../CADFiler'; +import { ObjectId } from '../ObjectId'; +import { Shape } from '../Shape'; +import { ExtrudeSolid, ExtureContourCurve } from './Extrude'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { Polyline } from './Polyline'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +export declare function ConverBoardTypeToSpaceType(type: BoardType): number; +export interface IModeling { + shape: Shape; + thickness: number; + dir: FaceDirection; + knifeRadius: number; + addLen: number; + addWidth?: number; + addDepth?: number; +} +export interface IKnifeInfo { + angle: number; + radius: number; + id: string; + name: string; +} +export interface I2DModeingItem { + depth: number; + offset: number; + knife: IKnifeInfo; +} +export interface I2DModeling { + path: Polyline; + dir: FaceDirection; + items: I2DModeingItem[]; +} +export interface IPathItem { + pt: Vector3; + bul: number; +} +export interface I3DModeling { + path: IPathItem[]; + dir: FaceDirection; + knife: IKnifeInfo; +} +/** + * 板件实体 + */ +export declare class Board extends ExtrudeSolid { + private _Rotation; + private _BoardType; + private _Name; + private _BoardProcessOption; + private _DrillList; + private _LayerNails; + RelativeHardware: ObjectId[]; + OpenDir: BoardOpenDir; + private _IsChaiDan; + private _2DModelingList; + private _3DModelingList; + constructor(); + /** + * 创建一个代理数组,数组改变时被监听 + */ + private CreateArray; + private InitBoardData; + InitBoard(length: number, width: number, thickness: number, boardType?: BoardType): void; + static CreateBoard(length: number, width: number, thickness: number, boardType?: BoardType): Board; + get DrillList(): Map; + get LayerNails(): ObjectId[]; + AppendNails(ids: ObjectId[]): void; + ClearLayerNails(): void; + /** + * 你可以安心的修改它,这样会直接影响到板件,因为板件对这个对象添加了代理. + */ + get BoardProcessOption(): BoardProcessOption; + set BoardProcessOption(obj: BoardProcessOption); + get NeedUpdateRelevanceGroove(): boolean; + protected GetRelevanceKnifes(knifs: ExtrudeSolid[]): void; + ClearRelevance(en?: ExtrudeSolid): void; + get SplitBoards(): this[]; + get BoardModeling(): IModeling[]; + set BoardModeling(models: IModeling[]); + get Modeling2D(): I2DModeling[]; + set Modeling2D(ms: I2DModeling[]); + get Modeling3D(): I3DModeling[]; + set Modeling3D(ms: I3DModeling[]); + ClearModeling2DList(): void; + ClearModeling3DList(): void; + get IsChaiDan(): boolean; + set IsChaiDan(v: boolean); + ClearBoardModeling(): void; + /** + * 注意传入的排钻列表,避免指针被引用 + */ + AppendDrillList(k: ObjectId, drs: ObjectId[][]): void; + ClearDrillList(k: ObjectId): void; + ClearAllDrillList(): void; + Erase(isErase?: boolean): void; + get RotateMat(): Matrix4; + get Height(): number; + set Height(v: number); + get Width(): number; + set Width(v: number); + get BoardType(): BoardType; + set BoardType(type: BoardType); + SetBoardType(type: BoardType): void; + get MinPoint(): Vector3; + get MaxPoint(): Vector3; + get IsRect(): boolean; + get IsSpecialShape(): boolean; + get HasGroove(): boolean; + get Name(): string; + set Name(n: string); + /** + * 板件的轮廓,在板件坐标系中的表现方式. + */ + get ContourCurve(): ExtureContourCurve; + set ContourCurve(cu: ExtureContourCurve); + Explode(): import("./Region").Region[]; + RotateBoard(rox: number, roy: number, roz: number): void; + get Rotation(): { + x: number; + y: number; + z: number; + }; + protected ApplyMirrorMatrix(m: Matrix4): this; + get UCGenerator(): UVGenerator; + UpdateUV(geo: Geometry, ocs: Matrix4, isRev?: boolean): void; + CopyFrom(obj: Board): void; + Clone(): this; + Join(target: this): import("../../Common/Status").Status; + private GetLinesDir; + private _2D3DPathObject; + private Get2DAnd3DPaths; + HandleSpliteEntitys(splitEntitys: this[]): void; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D; + OffsetPathCache: Map; + private GetOffsetPath; + private HandleBoardMaterial; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void; + CheckSealing(obj: Object3D): void; + GetStretchPoints(): Vector3[]; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + DeferUpdate(): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Board.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Board.d.ts.map b/types/DatabaseServices/Entity/Board.d.ts.map new file mode 100644 index 0000000..4c8ec0f --- /dev/null +++ b/types/DatabaseServices/Entity/Board.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Board.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Board.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAgB,QAAQ,EAAQ,QAAQ,EAAiB,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAStH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAiB,aAAa,EAAa,MAAM,+BAA+B,CAAC;AAIrI,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAQ7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAWlE;AAED,MAAM,WAAW,SAAS;IAEtB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,aAAa,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAEvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAE3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAExB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IAAG,EAAE,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAExD,MAAM,WAAW,WAAW;IAExB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,qBACa,KAAM,SAAQ,YAAY;IAEnC,OAAO,CAAC,SAAS,CAIf;IACF,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,WAAW,CAAkB;IACzB,gBAAgB,EAAE,QAAQ,EAAE,CAAM;IAClC,OAAO,EAAE,YAAY,CAAqB;IACtD,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;;IAO5C;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAyDrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,SAA2B;IA2BlG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,SAA2B;IAQ3G,IAAI,SAAS,gCAGZ;IAED,IAAI,UAAU,eAGb;IAED,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE;IAK3B,eAAe;IAWf;;OAEG;IACH,IAAI,kBAAkB,IAKM,kBAAkB,CAF7C;IAED,IAAI,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAG7C;IACD,IAAI,yBAAyB,YAY5B;IAED,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE;IAyBlD,cAAc,CAAC,EAAE,CAAC,EAAE,YAAY;IAchC,IAAI,WAAW,WAkBd;IAED,IAAI,aAAa,IA6BS,SAAS,EAAE,CADpC;IACD,IAAI,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EA8BpC;IACD,IAAI,UAAU,IAIK,WAAW,EAAE,CAD/B;IACD,IAAI,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,EAO/B;IACD,IAAI,UAAU,IAIK,WAAW,EAAE,CAD/B;IACD,IAAI,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,EAM/B;IACD,mBAAmB;IAMnB,mBAAmB;IAMnB,IAAI,SAAS,IAII,OAAO,CADvB;IACD,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAQvB;IACD,kBAAkB;IAOlB;;OAEG;IACH,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAS9C,cAAc,CAAC,CAAC,EAAE,QAAQ;IAyB1B,iBAAiB;IAOjB,KAAK,CAAC,OAAO,GAAE,OAAc;IAmB7B,IAAI,SAAS,YA4BZ;IACD,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAqBnB;IACD,IAAI,KAAK,IAII,MAAM,CADlB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAmBlB;IACD,IAAI,SAAS,IAAI,SAAS,CAGzB;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,SAAS,EAiB5B;IAGD,YAAY,CAAC,IAAI,EAAE,SAAS;IAO5B,IAAI,QAAQ,IAAI,OAAO,CAWtB;IACD,IAAI,QAAQ,IAAI,OAAO,CAKtB;IAED,IAAI,MAAM,YAGT;IAED,IAAI,cAAc,YAGjB;IAED,IAAI,SAAS,YAGZ;IAED,IAAI,IAAI,IAII,MAAM,CADjB;IACD,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAIjB;IAED;;OAEG;IACH,IAAI,YAAY,IAIK,kBAAkB,CADtC;IACD,IAAI,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAyBtC;IAED,OAAO;IAKP,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAuBjD,IAAI,QAAQ;;;;MAGX;IACD,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAK7C,IAAI,WAAW,IAAI,WAAW,CAM7B;IAED,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,UAAQ;IAMnD,QAAQ,CAAC,GAAG,EAAE,KAAK;IAenB,KAAK,IAAI,IAAI;IAQb,IAAI,CAAC,MAAM,EAAE,IAAI;IAcjB,OAAO,CAAC,WAAW;IAqCnB,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,eAAe;IAoEvB,mBAAmB,CAAC,YAAY,EAAE,IAAI,EAAE;IA2FxC,cAAc,CAAC,UAAU,aAAuB;IAgBhD,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAYtD,eAAe;;OAAqD;IACpE,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,mBAAmB;IA4B3B,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAe9D,YAAY,CAAC,GAAG,EAAE,QAAQ;IAmB1B,gBAAgB;IAShB,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IA+CxD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IA4BZ,WAAW;IASX,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAgGlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAwC3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/BoxSolid.d.ts b/types/DatabaseServices/Entity/BoxSolid.d.ts new file mode 100644 index 0000000..84fa797 --- /dev/null +++ b/types/DatabaseServices/Entity/BoxSolid.d.ts @@ -0,0 +1,16 @@ +import { Entity } from "./Entity"; +import { BoxBufferGeometry, Object3D } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +export declare function GetBoxGeoBufferGeometry(): BoxBufferGeometry; +export declare class BoxSolid extends Entity { + private _length; + private _width; + private _height; + OnlyRenderType: boolean; + private _opacity; + constructor(_length?: number, _width?: number, _height?: number); + set Opacity(o: number); + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; +} +//# sourceMappingURL=BoxSolid.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/BoxSolid.d.ts.map b/types/DatabaseServices/Entity/BoxSolid.d.ts.map new file mode 100644 index 0000000..0144a08 --- /dev/null +++ b/types/DatabaseServices/Entity/BoxSolid.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoxSolid.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/BoxSolid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAQ,QAAQ,EAA8B,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,wBAAgB,uBAAuB,sBAKtC;AAED,qBACa,QAAS,SAAQ,MAAM;IAIpB,OAAO,CAAC,OAAO;IAAM,OAAO,CAAC,MAAM;IAAM,OAAO,CAAC,OAAO;IAFpE,cAAc,UAAQ;IACtB,OAAO,CAAC,QAAQ,CAAO;gBACH,OAAO,SAAI,EAAU,MAAM,SAAI,EAAU,OAAO,SAAI;IAIxE,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,EAQpB;IACD,cAAc,CAAC,UAAU,GAAE,UAAiC;IAS5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;CAOnD"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Circle.d.ts b/types/DatabaseServices/Entity/Circle.d.ts new file mode 100644 index 0000000..896aaca --- /dev/null +++ b/types/DatabaseServices/Entity/Circle.d.ts @@ -0,0 +1,56 @@ +import { Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { Box3Ext } from '../../Geometry/Box'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Shape2 } from '../Shape2'; +import { Arc } from './Arc'; +import { Curve } from './Curve'; +import { DragPointType } from './DragPointType'; +export declare class Circle extends Curve { + constructor(center?: Vector3, radius?: number); + private _Radius; + get Shape(): Shape2; + get Center(): Vector3; + set Center(v: Vector3); + get Radius(): number; + set Radius(v: number); + protected ApplyScaleMatrix(m: Matrix4): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + get StartPoint(): Vector3; + get StartParam(): number; + get EndPoint(): Vector3; + get EndParam(): number; + PtInCurve(pt: Vector3): boolean; + get Area(): number; + get Area2(): number; + get Length(): number; + get IsClose(): boolean; + get IsClockWise(): boolean; + GetPointAtParam(param: number): Vector3; + GetPointAtDistance(distance: number): Vector3; + GetDistAtParam(param: number): number; + GetDistAtPoint(pt: Vector3): number; + GetParamAtDist(d: number): number; + GetSplitCurves(param: number[] | number): Arc[]; + GetParamAtPoint(pt?: Vector3): number; + PtOnCurve(pt: Vector3): boolean; + GetOffsetCurves(offsetDist: number): Curve[]; + IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[]; + get BoundingBox(): Box3Ext; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material: Material): Object3D; + GetDragPointCount(drag: DragPointType): number; + GetGripPoints(): Array; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + MoveGripPoints(indexList: Array, vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetFistDeriv(pt: number | Vector3): Vector3; + GetClosestPointTo(pt: Vector3, extend: boolean): Vector3; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Circle.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Circle.d.ts.map b/types/DatabaseServices/Entity/Circle.d.ts.map new file mode 100644 index 0000000..a988106 --- /dev/null +++ b/types/DatabaseServices/Entity/Circle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Circle.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Circle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAQnH,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAA2G,eAAe,EAAqD,MAAM,oCAAoC,CAAC;AACjO,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAehD,qBACa,MAAO,SAAQ,KAAK;gBAEjB,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAE,MAAa;IAMnD,OAAO,CAAC,OAAO,CAAS;IAExB,IAAI,KAAK,WAKR;IAED,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAO5C,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW7C,IAAI,UAAU,IAAI,OAAO,CAGxB;IACD,IAAI,UAAU,IAAI,MAAM,CAGvB;IACD,IAAI,QAAQ,IAAI,OAAO,CAGtB;IACD,IAAI,QAAQ,IAAI,MAAM,CAGrB;IACD,SAAS,CAAC,EAAE,EAAE,OAAO;IAIrB,IAAI,IAAI,WAGP;IACD,IAAI,KAAK,WAGR;IACD,IAAI,MAAM,WAGT;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IAGD,IAAI,WAAW,IAAI,OAAO,CAAkB;IAE5C,eAAe,CAAC,KAAK,EAAE,MAAM;IAK7B,kBAAkB,CAAC,QAAQ,EAAE,MAAM;IAMnC,cAAc,CAAC,KAAK,EAAE,MAAM;IAK5B,cAAc,CAAC,EAAE,EAAE,OAAO;IAM1B,cAAc,CAAC,CAAC,EAAE,MAAM;IAKxB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAkCvC,eAAe,CAAC,EAAE,CAAC,EAAE,OAAO;IAO5B,SAAS,CAAC,EAAE,EAAE,OAAO;IAIrB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,EAAE;IAW5C,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAwBrD,IAAI,WAAW,IAAI,OAAO,CAGzB;IAED,cAAc,CAAC,UAAU,GAAE,UAAiC;IAkB5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAKhD,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAe5E,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAQ9C,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAe/B,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAiCZ,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAsBrD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAOlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAQxD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAajC,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAiBxD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/CompositeEntity.d.ts b/types/DatabaseServices/Entity/CompositeEntity.d.ts new file mode 100644 index 0000000..0d871e7 --- /dev/null +++ b/types/DatabaseServices/Entity/CompositeEntity.d.ts @@ -0,0 +1,52 @@ +import { Matrix3, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { Box3Ext } from "../../Geometry/Box"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { DragPointType } from "./DragPointType"; +import { Entity } from "./Entity"; +export declare class CompositeEntity extends Entity { + constructor(); + Entitys: Entity[]; + /** + * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体. + */ + Explode(): Entity[]; + Traverse(callback: (arg0: Entity) => void): void; + get BoundingBox(): Box3Ext; + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): void; + get ColorIndex(): number; + set ColorIndex(color: number); + get Material(): import("../ObjectId").ObjectId; + set Material(id: import("../ObjectId").ObjectId); + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void; + RestoreJigMaterial(): void; + /** + * + * @param snapMode 捕捉模式(单一) + * @param pickPoint const + * @param lastPoint const + * @param viewXform const 最近点捕捉需要这个变量 + * @returns object snap points + */ + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList: Array, vec: Vector3): void; + private GetGripOrStretchPoints; + private GetStrectchPointCountList; + MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType): void; + CloneDrawObject(from: this): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=CompositeEntity.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/CompositeEntity.d.ts.map b/types/DatabaseServices/Entity/CompositeEntity.d.ts.map new file mode 100644 index 0000000..887cf6d --- /dev/null +++ b/types/DatabaseServices/Entity/CompositeEntity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CompositeEntity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/CompositeEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,qBACa,eAAgB,SAAQ,MAAM;;IAO3B,OAAO,EAAE,MAAM,EAAE,CAAM;IAInC;;MAEE;IACF,OAAO;IASP,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAWzC,IAAI,WAAW,YAMd;IACD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAYjF,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAmBtD,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAgB3B;IACD,IAAI,QAAQ,mCAGX;IACD,IAAI,QAAQ,CAAC,EAAE,gCAAA,EAKd;IAED,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAK9D,kBAAkB;IASlB;;;;;;;MAOE;IACF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAUZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAMhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAMxD,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IASjC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IA4ClF,eAAe,CAAC,IAAI,EAAE,IAAI;IAqB1B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Curve.d.ts b/types/DatabaseServices/Entity/Curve.d.ts new file mode 100644 index 0000000..5117bf4 --- /dev/null +++ b/types/DatabaseServices/Entity/Curve.d.ts @@ -0,0 +1,109 @@ +import { Material, Object3D, Shape, Vector3 } from 'three'; +import { Status } from '../../Common/Status'; +import { IntersectOption, IntersectResult } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { DragPointType } from './DragPointType'; +import { Entity } from './Entity'; +export declare enum ExtendType { + /** + * 前后都不延伸 + */ + None = 0, + /** + * 只允许延伸前面 + */ + Front = 1, + /** + * 只允许延伸后面 + */ + Back = 2, + /** + * 前后延伸 + */ + Both = 3 +} +/** + * 曲线的基类,子类请实现以下方法. + */ +export declare abstract class Curve extends Entity { + constructor(); + get Is2D(): boolean; + get StartPoint(): Vector3; + set StartPoint(v: Vector3); + get StartParam(): number; + get EndPoint(): Vector3; + set EndPoint(v: Vector3); + /** 曲线中点 */ + get Midpoint(): Vector3; + get MidParam(): number; + get EndParam(): number; + get Area(): number; + /** + *获得曲线的面积,逆时针为正,顺时针为负. + */ + get Area2(): number; + get Length(): number; + get IsClose(): boolean; + /** 曲线为顺时针 */ + get IsClockWise(): boolean; + abstract get Shape(): Shape; + GetPointAtParam(param: number): Vector3; + GetPointAtDistance(distance: number): Vector3; + GetDistAtParam(param: number): number; + GetDistAtPoint(pt: Vector3): number; + GetParamAtPoint(pt: Vector3): number; + GetParamAtPoint2(pt: Vector3): number; + GetParamAtDist(d: number): number; + /** + * 返回曲线在指定位置的一阶导数(在wcs内) + * + * @param {(number | Vector3)} param + * @returns {Vector3} + * @memberof Curve + */ + GetFistDeriv(param: number | Vector3): Vector3; + GetFistDerivAngle(param: number | Vector3): number; + /** + * 返回切割曲线后的结果.总是从起点开始切割,并且按顺序返回曲线. + * @param {(number[] | number)} param + * @returns {Array} + */ + GetSplitCurves(param: number[] | number): Array; + GetCurveAtParamRange(startParam: number, EndParam: number): Array; + GetSplitCurvesByPts(pt: Vector3[] | Vector3): Array; + protected SplitParamSort(param: number[] | number): number[]; + Extend(newParam: number): void; + /** + * 连接曲线到本曲线,如果成功返回true + * @param {Curve} cu 需要连接的曲线 + * @returns {boolean} 连接成功 + * @memberof Curve + */ + Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status; + Reverse(): this; + PtOnCurve(pt: Vector3, fuzz?: number): boolean; + PtOnCurve2(pt: Vector3): boolean; + PtOnCurve3(p: Vector3, fuzz?: number): boolean; + ParamOnCurve(param: number, fuzz?: number): boolean; + GetOffsetCurves(offsetDist: number): Array; + GetClosestPointTo(pt: Vector3, extend: boolean): Vector3; + /** + * 曲线相交点 + */ + IntersectWith(curve: Curve, intType: IntersectOption, tolerance?: number): Vector3[]; + /** + * 曲线相交点和点的参数 + */ + IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): IntersectResult[]; + /** + * 拽托点个数 + */ + GetDragPointCount(drag: DragPointType): number; + protected OnlyRenderType: boolean; + /** + * 重载:更新实体材质 + */ + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void; + UpdateJigMaterial(color?: number): void; +} +//# sourceMappingURL=Curve.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Curve.d.ts.map b/types/DatabaseServices/Entity/Curve.d.ts.map new file mode 100644 index 0000000..77d135c --- /dev/null +++ b/types/DatabaseServices/Entity/Curve.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Curve.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Curve.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/DragPointType.d.ts b/types/DatabaseServices/Entity/DragPointType.d.ts new file mode 100644 index 0000000..09a9307 --- /dev/null +++ b/types/DatabaseServices/Entity/DragPointType.d.ts @@ -0,0 +1,5 @@ +export declare enum DragPointType { + Grip = 0, + Stretch = 1 +} +//# sourceMappingURL=DragPointType.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/DragPointType.d.ts.map b/types/DatabaseServices/Entity/DragPointType.d.ts.map new file mode 100644 index 0000000..07edcb4 --- /dev/null +++ b/types/DatabaseServices/Entity/DragPointType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DragPointType.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/DragPointType.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAErB,IAAI,IAAI;IACR,OAAO,IAAI;CACd"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Ellipse.d.ts b/types/DatabaseServices/Entity/Ellipse.d.ts new file mode 100644 index 0000000..a045b8e --- /dev/null +++ b/types/DatabaseServices/Entity/Ellipse.d.ts @@ -0,0 +1,67 @@ +import { Box3, Matrix3, Object3D, Shape, Vector3 } from 'three'; +import { Status } from '../../Common/Status'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Curve } from './Curve'; +import { Polyline } from './Polyline'; +export declare class Ellipse extends Curve { + private _radX; + private _radY; + private _rotate; + private _startAngle; + private _endAngle; + constructor(center?: Vector3, radX?: number, radY?: number, angle?: number); + get StartParam(): number; + get EndParam(): number; + get StartPoint(): Vector3; + get EndPoint(): Vector3; + get Shape(): Shape; + get IsClose(): boolean; + get Center(): Vector3; + set Center(v: Vector3); + get RadX(): number; + set RadX(v: number); + get RadY(): number; + set RadY(v: number); + get Rotation(): number; + set Rotation(v: number); + get StartAngle(): number; + get EndAngle(): number; + set StartAngle(v: number); + set EndAngle(v: number); + get Length(): number; + get Area(): number; + get TotalAngle(): number; + get BoundingBox(): Box3; + PtInCurve(pt: Vector3): boolean; + PtOnCurve(pt: Vector3): boolean; + PtOnEllipse(pt: Vector3): boolean; + GetPointAtParam(param: number): Vector3; + GetParamAtPoint(pt?: Vector3): number; + GetPointAtDistance(distance: number): Vector3; + GetDistAtParam(param: number): number; + GetDistAtPoint(pt: Vector3): number; + GetParamAtDist(d: number): number; + GetAngleAtParam(par: number): number; + GetCircleAngleAtPoint(pt: Vector3): number; + GetFistDeriv(pt: number | Vector3): Vector3; + GetClosestPointTo(p: Vector3, extend: boolean): Vector3; + GetOffsetCurves(offsetDist: number): this[]; + GetSplitCurves(param: number[] | number): this[]; + Join(el: Ellipse): Status.False | Status.False | Status.True; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + IntersectWith2(curve: Curve, intType: IntersectOption): import("../../GraphicsSystem/IntersectWith").IntersectResult[]; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + private UpdateGeometry; + GetStretchPoints(): Array; + GetGripPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + MoveGripPoints(indexList: Array, vec: Vector3): void; + Convert2Polyline(count?: number): Polyline; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Ellipse.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Ellipse.d.ts.map b/types/DatabaseServices/Entity/Ellipse.d.ts.map new file mode 100644 index 0000000..36bca5e --- /dev/null +++ b/types/DatabaseServices/Entity/Ellipse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Ellipse.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Ellipse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Entity.d.ts b/types/DatabaseServices/Entity/Entity.d.ts new file mode 100644 index 0000000..2e049bf --- /dev/null +++ b/types/DatabaseServices/Entity/Entity.d.ts @@ -0,0 +1,156 @@ +import { Box3, Material, Matrix3, Matrix4, MeshStandardMaterial, Object3D, Vector3 } from 'three'; +import { UpdateDraw } from '../../Common/Status'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { Box3Ext } from '../../Geometry/Box'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { CADObject } from '../CADObject'; +import { ObjectId } from '../ObjectId'; +/** + * Entity 是所有图元的基类,绘制的实体都集成该类. + */ +export declare class Entity extends CADObject { + IsEmbedEntity: boolean; + /** + * 该实体的只有一个渲染类型,任何渲染类型都一个样 + */ + protected OnlyRenderType: boolean; + protected _CacheDrawObject: Map; + protected materialId: ObjectId; + protected _Color: number; + protected _Matrix: Matrix4; + protected _SpaceOCS: Matrix4; + get SpaceOCS(): Matrix4; + get SpaceOCSInv(): Matrix4; + set SpaceOCS(m: Matrix4); + protected _Visible: boolean; + GroupId: ObjectId; + Template: ObjectId; + ProcessingGroupList: ObjectId[]; + /** + * 当AutoUpdate为false时,记录需要更新的标志. + * 以便延迟更新时找到相应的更新标志. + */ + NeedUpdateFlag: UpdateDraw; + AutoUpdate: boolean; + set Material(materialId: ObjectId); + get Material(): ObjectId; + set ColorIndex(color: number); + get ColorIndex(): number; + /** + * 炸开实体 + */ + Explode(): Entity[]; + /** + * 返回对象的包围框. + */ + get BoundingBox(): Box3; + /** + * 返回对象在自身坐标系下的Box + */ + get BoundingBoxInOCS(): Box3Ext; + GetBoundingBoxInMtx(mtx: Matrix4): Box3Ext; + get BoundingBoxInSpaceCS(): Box3Ext; + get OCS(): Matrix4; + get OCSNoClone(): Matrix4; + set OCS(mat4: Matrix4); + get Normal(): Vector3; + get Position(): Vector3; + set Position(pt: Vector3); + Z0(): this; + MatrixPlanarizere(): this; + get OCSInv(): Matrix4; + /** + * 与指定实体是否共面. + */ + IsCoplaneTo(e: Entity): boolean; + /** + * 测试两个实体的包围盒是否相交. + */ + BoundingBoxIntersectWith(en: Entity): boolean; + ClearDraw(): this; + ClearDrawOfJig(): void; + get IsOnlyRender(): boolean; + _drawObject: Object3D; + get DrawObject(): Object3D; + get JigObject(): Object3D; + DestroyJigObject(): void; + protected _CurRenderType: RenderType; + UpdateRenderType(type: RenderType): void; + GetDrawObjectFromRenderType(renderType?: RenderType): Object3D; + /** + * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体. + */ + protected InitDrawObject(renderType?: RenderType): Object3D; + __UpdateVersion__: number; + /** + * 当实体数据改变时,绘制的实体必须做出改变.供框架调用 + */ + Update(mode?: UpdateDraw): void; + UpdateDrawGeometry(): void; + DeferUpdate(): void; + /** + * 当实体需要更新时,需要重载该方法,实现实体更新 + */ + UpdateDrawObject(type: RenderType, en: Object3D): void; + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void; + protected get MeshMaterial(): import("three").MeshBasicMaterial | MeshStandardMaterial; + /** + * 更新实体Jig状态时的材质 + */ + UpdateJigMaterial(color?: number): void; + RestoreJigMaterial(): void; + get Visible(): boolean; + set Visible(v: boolean); + private get IsVisible(); + UpdateVisible(): void; + GoodBye(): void; + Erase(isErase?: boolean): void; + EraseEvent(isErase: boolean): void; + /** + * 使用统一的方法设置对象的矩阵. + * 需要对缩放矩形进行重载.避免对象矩阵不是单位矩阵 + */ + ApplyMatrix(m: Matrix4): this; + protected ApplyScaleMatrix(m: Matrix4): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + /** + * + * @param snapMode 捕捉模式(单一) + * @param pickPoint const + * @param lastPoint const + * @param viewXform const 最近点捕捉需要这个变量 + * @returns object snap points + */ + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetStretchPoints(): Array; + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList: Array, vec: Vector3): void; + IntersectWith(curve: Entity, intType: IntersectOption): Vector3[]; + Clone(): this; + CloneDrawObject(from: this): void; + static __ReadFileIng__: boolean; + __ReadFileIng__: boolean; + get ReadFileIng(): boolean; + /** + * 从文件读取,序列化自身,如果需要,重载_ReadFile + */ + ReadFile(file: CADFiler): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + ApplyPartialUndo(undoData: CADObject): void; + CopyFrom(obj: CADObject): void; +} +//# sourceMappingURL=Entity.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Entity.d.ts.map b/types/DatabaseServices/Entity/Entity.d.ts.map new file mode 100644 index 0000000..5b2caa7 --- /dev/null +++ b/types/DatabaseServices/Entity/Entity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Entity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Entity.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/EntityRef.d.ts b/types/DatabaseServices/Entity/EntityRef.d.ts new file mode 100644 index 0000000..5698687 --- /dev/null +++ b/types/DatabaseServices/Entity/EntityRef.d.ts @@ -0,0 +1,17 @@ +import { Object3D } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Entity } from "./Entity"; +/** + * 外部引用的实体,比如glTF + */ +export declare class EntityRef extends Entity { + private _url?; + OnlyRenderType: boolean; + constructor(_url?: string); + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=EntityRef.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/EntityRef.d.ts.map b/types/DatabaseServices/Entity/EntityRef.d.ts.map new file mode 100644 index 0000000..98b9166 --- /dev/null +++ b/types/DatabaseServices/Entity/EntityRef.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EntityRef.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/EntityRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,qBACa,SAAU,SAAQ,MAAM;IAGrB,OAAO,CAAC,IAAI,CAAC;IADzB,cAAc,UAAQ;gBACF,IAAI,CAAC,EAAE,MAAM;IAMjC,cAAc,CAAC,UAAU,GAAE,UAAiC;IAgC5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAQhD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Extrude.d.ts b/types/DatabaseServices/Entity/Extrude.d.ts new file mode 100644 index 0000000..a543b28 --- /dev/null +++ b/types/DatabaseServices/Entity/Extrude.d.ts @@ -0,0 +1,234 @@ +import { BoxGeometry, BufferGeometry, Geometry, Matrix3, Matrix4, Mesh, Object3D, UVGenerator, Vector3 } from "three"; +import { Line2 } from "three/examples/jsm/lines/Line2"; +import { Status } from "../../Common/Status"; +import { CSG } from "../../csg/core/CSG"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { Box3Ext } from "../../Geometry/Box"; +import { OBB } from "../../Geometry/OBB/obb"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { ObjectId } from "../ObjectId"; +import { Shape } from "../Shape"; +import { Circle } from "./Circle"; +import { DragPointType } from "./DragPointType"; +import { Entity } from "./Entity"; +import { Polyline } from "./Polyline"; +import { Region } from "./Region"; +export declare type ExtureContourCurve = Polyline | Circle; +export declare type ExtureContour = Polyline | Circle | ExtrudeSolid | Region; +export declare class ExtrudeSolid extends Entity { + protected height: number; + protected width: number; + /** + * 拉伸实体的厚度 + * 我们允许它是一个负数,但是这个时候这个实体已经是一个无效的拉伸实体了. + * 允许负数,用来校验凹槽的合理性. + */ + protected thickness: number; + protected isRect: boolean; + IsKnife: boolean; + RelevanceMeats: ObjectId[]; + RelevanceKnifs: ObjectId[]; + __OriginalId__: ObjectId; + __OriginalEnt__: this; + /** + * 拉伸形状 + * 出于优化考虑,可能未初始化 + * 形状位于WCS 0点位置,不随OCS变化而变化 + */ + protected contourCurve: ExtureContourCurve; + /** + * 正面和反面的凹槽造型 + */ + protected grooves: ExtrudeSolid[]; + protected knifeRadius: number; + protected groovesAddLength: number; + protected groovesAddWidth: number; + protected groovesAddDepth: number; + __TempIndexVersion__: { + Index: number; + Version: number; + }; + constructor(); + get KnifeRadius(): number; + set KnifeRadius(v: number); + get BoundingBox(): Box3Ext; + get BoundingBoxInOCS(): Box3Ext; + get OBB(): OBB; + get GroovesAddLength(): number; + set GroovesAddLength(v: number); + get GroovesAddWidth(): number; + set GroovesAddWidth(v: number); + get GroovesAddDepth(): number; + set GroovesAddDepth(v: number); + Clone(): this; + ApplyMatrix(m: Matrix4): this; + protected ApplyScaleMatrix(m: Matrix4): this; + get Position(): Vector3; + set Position(p: Vector3); + get Width(): number; + get Height(): number; + get Thickness(): number; + set Thickness(thickness: number); + get Grooves(): ExtrudeSolid[]; + /** + * 返回未拷贝的轮廓曲线 + */ + get ContourCurve(): ExtureContourCurve; + set ContourCurve(cu: ExtureContourCurve); + /** + * 生成矩形轮廓(强制) + */ + GeneralRectContour(): void; + /** + * 转换成矩形拉伸实体 + */ + ConverToRectSolid(width?: number, height?: number, thickness?: number): this; + /** + * 更新拉伸实体的轮廓 + * @param curve 曲线已经存在WCS坐标系 + */ + SetContourCurve(curve: ExtureContourCurve): void; + /** + * 在不改变Normal和实体显示的情况下,修改X轴的指向 + * @param xAxis + */ + SetXAxis(xAxis: Vector3): this; + /** + * 检验轮廓曲线,通常当轮廓曲线被修改时,都需要检验轮廓曲线,并更新实体大小和轮廓位置. + * >计算轮廓大小 + * >判断是否矩形 + * >修正轮廓基点 + */ + CheckContourCurve(): void; + get IsRect(): boolean; + /** + * 这个拉伸实体的面域形状 + */ + get Shape(): Shape; + /** + * 实体合并(不会删除target) + */ + Join(target: this): Status; + get Volume(): number; + /** + * 被切割 + * @param extrudes 切割刀 + * @param [output=undefined] 如果实体被分裂,那么输出分裂的其他实体(如果为空,则尝试入当前实体的容器中) + * @param [checkIntersect=true] 检查相交,性能优化 + * @returns 切割是否成功 + */ + Subtract(extrudes: ExtrudeSolid[], output?: ExtrudeSolid[], checkIntersect?: boolean): boolean; + RelevanceSubtract(knif: ExtrudeSolid, check?: boolean): void; + /** + * 当实体被分裂后,加入新图纸时,需要修复关联拉槽 + */ + RepairRelevance(): void; + AppendGroove(groove: ExtrudeSolid): void; + /** 添加槽进板件,并且自动分裂. + * 通常槽已经校验过准确性,所以不在校验 + */ + AppendGrooves(grooves: ExtrudeSolid[], output?: ExtrudeSolid[]): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + protected GetStrectchPointCountList(dragType: DragPointType): number[]; + GetGripOrStretchPoints(dragType: DragPointType): Vector3[]; + MoveGripOrStretchPoints(indexList: number[], vec: Vector3, dragType: DragPointType): void; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Vector3[]; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + /** + * 只对自身的轮廓和厚度进行拉伸,忽略子实体 + */ + MoveGripOrStretchPointsOnly(indexList: Array, vec: Vector3, dragType: DragPointType): void; + IsStretchThickness(indexs: number[]): boolean; + /** + * 当调用Draw时,可以生成bsp信息 + */ + private csg; + get CSG(): CSG; + /** + * (步骤1.2.) + * 将目标拉伸实体转换成在板件内部可用的凹槽实体 + * @param target 该对象可能被修改(内部不拷贝该实体) + * @param useClone 转换后的实体是目标实体拷贝后修改的 + */ + ConverToLocalGroove(target: ExtrudeSolid): ExtrudeSolid[]; + /** + * (步骤2) + * 更新凹槽位置和厚度(校验凹槽的Z轴位置是否存在交集) + */ + GrooveCheckPosition(target: ExtrudeSolid): Status; + /** + * (步骤3) + * 计算凹槽合并 + */ + GrooveCheckMerge(): void; + /** + * (步骤4.1) + * 计算凹槽轮廓(可能分裂) + * @param target 不拷贝修改 + * @returns this[] 凹槽在本实体中正确的约束状态.(可能分裂成为多个) + */ + GrooveCheckContour(target: ExtrudeSolid): ExtrudeSolid[]; + /** + * (步骤4.2) + * 计算本实体被全身度的凹槽差集后正确的实体轮廓,和有可能的分裂实体 + * @param splitEntitys 分裂出来的实体 + * @returns [Status] Status : 消失不见 + */ + ContourCheckSubtract(splitEntitys: this[]): boolean; + IsLazyGrooveCheck: boolean; + IsNeedGrooveCheck: boolean; + /** + * 无法知道修改了轮廓是否为更新到内部凹槽. + * 无法知道修改了内部凹槽之后是否会更新到轮廓. + * 所以默认全部校验内部的凹槽 + */ + GrooveCheckAll(splitEntitys: this[]): void; + /** 校验内部槽并且自动分裂 */ + GrooveCheckAllAutoSplit(output?: ExtrudeSolid[]): void; + HandleSpliteEntitys(splitEntitys: this[]): void; + LazyGrooveCheckAll(): void; + GetPrintObject3D(): (Line2 | Mesh)[]; + InitDrawObject(renderType?: RenderType): Object3D; + get UCGenerator(): UVGenerator; + __CacheKnifVersion__: { + [key: number]: number; + }; + get NeedUpdateRelevanceGroove(): boolean; + __CacheVolume__: number; + __CacheSplitExtrudes: this[]; + /** + * 计算关联拉槽,更新绘制对象(MeshGeometry和EdgeGeometry) + */ + private CalcRelevanceGroove; + /** + * 如果实体被切割,那么将返回分裂的实体数组,否则返回自身 + */ + get SplitExtrudes(): this[]; + protected GetRelevanceKnifes(knifs: ExtrudeSolid[]): void; + ClearRelevance(en?: ExtrudeSolid): void; + private _MeshGeometry; + get MeshGeometry(): BufferGeometry; + private _EdgeGeometry; + protected get EdgeGeometry(): BufferGeometry; + UpdateUV(geo: Geometry, ocs: Matrix4, isRev?: boolean): void; + UpdateBufferGeometryUvs(isRev: boolean): void; + DeferUpdate(): void; + UpdateDrawGeometry(): void; + UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D; + UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void; + UpdateJigMaterial(color?: number): void; + /** + * 简化的文件读取和写入,只写入必要的数据,没有id,没有其他版本号 + */ + ReadFileLite(file: CADFiler): void; + WriteFileLite(file: CADFiler): void; + private ReadFileOnly; + private WriteFileOnly; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +export declare function FastMeshGeometry(width: number, height: number, thickness: number): BoxGeometry; +//# sourceMappingURL=Extrude.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Extrude.d.ts.map b/types/DatabaseServices/Entity/Extrude.d.ts.map new file mode 100644 index 0000000..34a9852 --- /dev/null +++ b/types/DatabaseServices/Entity/Extrude.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Extrude.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Extrude.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/ExtrudeConfig.d.ts b/types/DatabaseServices/Entity/ExtrudeConfig.d.ts new file mode 100644 index 0000000..bbca06a --- /dev/null +++ b/types/DatabaseServices/Entity/ExtrudeConfig.d.ts @@ -0,0 +1,5 @@ +export declare const ExtrudeConfig: { + DisableRefCut: boolean; + DisableCheckGroove: boolean; +}; +//# sourceMappingURL=ExtrudeConfig.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/ExtrudeConfig.d.ts.map b/types/DatabaseServices/Entity/ExtrudeConfig.d.ts.map new file mode 100644 index 0000000..4a64d27 --- /dev/null +++ b/types/DatabaseServices/Entity/ExtrudeConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExtrudeConfig.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/ExtrudeConfig.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa;;;CAGzB,CAAC"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Line.d.ts b/types/DatabaseServices/Entity/Line.d.ts new file mode 100644 index 0000000..4d9eb4e --- /dev/null +++ b/types/DatabaseServices/Entity/Line.d.ts @@ -0,0 +1,55 @@ +import { Box3, Line as TLine, Matrix3, Matrix4, Object3D, Shape, Vector3 } from 'three'; +import { Status } from '../../Common/Status'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Curve } from './Curve'; +export declare class Line extends Curve { + private _StartPoint; + private _EndPoint; + constructor(_StartPoint?: Vector3, _EndPoint?: Vector3); + get Is2D(): boolean; + get Shape(): Shape; + Z0(): this; + protected ApplyScaleMatrix(m: Matrix4): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, lineObj: TLine): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: Array, vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetFistDeriv(param: number | Vector3): Vector3; + IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[]; + GetPointAtParam(param: number): Vector3; + GetParamAtPoint(pt: Vector3): number; + GetParamAtDist(d: number): number; + GetPointAtDistance(distance: number): Vector3; + GetDistAtParam(param: number): number; + GetDistAtPoint(pt: Vector3): number; + GetSplitCurves(param: number[] | number): Curve[]; + GetParamAtPoint2(pt: Vector3): number; + PtOnCurve3(p: Vector3, fuzz?: number): boolean; + GetClosestAtPoint(pt: Vector3, extend: boolean): { + closestPt: Vector3; + param: number; + }; + GetClosestPointTo(pt: Vector3, extend: boolean): Vector3; + Extend(newParam: number): void; + Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status; + Reverse(): this; + GetOffsetCurves(offsetDist: number): Array; + get BoundingBox(): Box3; + get StartParam(): number; + get EndParam(): number; + get Length(): number; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + set StartPoint(p: Vector3); + get StartPoint(): Vector3; + get EndPoint(): Vector3; + set EndPoint(p: Vector3); +} +//# sourceMappingURL=Line.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Line.d.ts.map b/types/DatabaseServices/Entity/Line.d.ts.map new file mode 100644 index 0000000..8e8b0a4 --- /dev/null +++ b/types/DatabaseServices/Entity/Line.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Line.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Line.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Point.d.ts b/types/DatabaseServices/Entity/Point.d.ts new file mode 100644 index 0000000..ea245d0 --- /dev/null +++ b/types/DatabaseServices/Entity/Point.d.ts @@ -0,0 +1,28 @@ +import { Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { Entity } from "./Entity"; +export declare class Point extends Entity { + constructor(position?: Vector3); + /** + * 初始化绘制的threejs实体,子类型重载该函数初始化绘制实体. + * + * @param {RenderType} [renderType=RenderType.Wireframe] 渲染类型 + * @returns {Object3D} 返回的threejs实体. + * @memberof Entity + */ + protected InitDrawObject(renderType?: RenderType): Object3D; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList: Array, vec: Vector3): void; +} +//# sourceMappingURL=Point.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Point.d.ts.map b/types/DatabaseServices/Entity/Point.d.ts.map new file mode 100644 index 0000000..a9a36f8 --- /dev/null +++ b/types/DatabaseServices/Entity/Point.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Point.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4D,QAAQ,EAAyC,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3I,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAsBlC,qBACa,KAAM,SAAQ,MAAM;gBAEjB,QAAQ,GAAE,OAAuB;IAM7C;;;;;;MAME;IAEF,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAOjF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,GACnB,OAAO,EAAE;IAOZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAShD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;CAI3D"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Polyline.d.ts b/types/DatabaseServices/Entity/Polyline.d.ts new file mode 100644 index 0000000..bfb61bb --- /dev/null +++ b/types/DatabaseServices/Entity/Polyline.d.ts @@ -0,0 +1,193 @@ +import { BufferGeometry, Line as TLine, Matrix3, Matrix4, Object3D, Vector2, Vector3 } from 'three'; +import { Line2 } from 'three/examples/jsm/lines/Line2'; +import { Status } from '../../Common/Status'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { Box3Ext } from '../../Geometry/Box'; +import { IntersectOption } from '../../GraphicsSystem/IntersectWith'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Curve, ExtendType } from './Curve'; +import { DragPointType } from './DragPointType'; +export interface PolylineProps { + pt: Vector2; + bul: number; +} +export declare class Polyline extends Curve { + private _LineData; + private _ClosedMark; + constructor(_LineData?: PolylineProps[]); + UpdateMatrixTo(m: Matrix4): void; + /** + * 原地翻转,仅改变法向量 + */ + Flip(): this; + Reverse(): this; + set LineData(data: PolylineProps[]); + get LineData(): PolylineProps[]; + get NumberOfVertices(): number; + /** + * 在指定位置插入点. + * 例如: + * pl.AddVertexAt(pl.NumberOfVerticesk,p);//在末尾插入一个点 + * + * @param {number} index 索引位置 + * @param {Vector2} pt 点 + * @returns {this} + * @memberof Polyline + */ + AddVertexAt(index: number, pt: Vector2 | Vector2[]): this; + RemoveVertexAt(index: number): this; + RemoveVertexIn(from: number, to: number): this; + /** + * 重设闭合多段线的起点 + * @param index 起始index,如果index非整数,将用最接近的整数作为起始索引 + */ + ResetStartPoint(index: number): boolean; + GetPoint2dAt(index: number): Vector2 | undefined; + /** + * 设置指定点的位置 + * + * @param {number} index + * @param {Vector2} pt + * @memberof Polyline + */ + SetPointAt(index: number, pt: Vector2): this; + protected ApplyScaleMatrix(m: Matrix4): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + SetBulgeAt(index: number, bul: number): this; + GetBuilgeAt(index: number): number; + Rectangle(length: number, height: number): this; + RectangleFrom2Pt(p1: Vector3, p2: Vector3): this; + get StartPoint(): Vector3; + set StartPoint(p: Vector3); + get EndPoint(): Vector3; + set EndPoint(p: Vector3); + get CurveCount(): number; + get StartParam(): number; + /** + * 表示最后一条曲线的终止参数,使用该参数可以直接遍历到多段线的所有子线段. for(i; + GetCurveAtParamRange(startParam: number, endParam: number): Array; + Extend(newParam: number): void; + MatrixAlignTo2(toMatrix: Matrix4): { + pts: Vector2[]; + buls: number[]; + }; + Join(cu: Curve, allowGap?: boolean, tolerance?: number): Status.False | Status.True; + /** + * 将曲线数组组合成多段线 + * @param curves 已经使用CurveLinked的数组,总是首尾相连 + * @returns + */ + static Combine(curves: Curve[], tolerance?: number): Polyline | undefined; + /**首尾相连的曲线直接连接 */ + static FastCombine(curves: Curve[], tolerance?: number): Polyline | undefined; + PtOnCurve(pt: Vector3): boolean; + PtOnCurve3(p: Vector3, fuzz?: number): boolean; + PtInCurve(pt: Vector3): boolean; + GetClosestPointTo(pt: Vector3, extend: boolean): Vector3; + GetClosestPointTo2(pt: Vector3, extType: ExtendType): Vector3; + GetOffsetCurves(offsetDist: number): Polyline[]; + GetFeedingToolPath(offsetDist: number, offsetDistSq?: number): Polyline[]; + /** + * 分解 + */ + Explode(): Curve[]; + /** + * 根据参数得到参数所在的子曲线. + * + * 当曲线存在闭合标志时,参数必须在曲线内部,否则返回空. + * + * @param {number} param 参数值 + * @returns {Curve} 曲线(直线或者圆弧) 或空 + * @memberof Polyline + */ + GetCurveAtParam(param: number): Curve; + /** + * 得到参数在子曲线中的表示 + * + * @param {number} param 参数在多段线中表示 + * @returns {number} 参数在子曲线中表示 + * @memberof Polyline + */ + GetCurveParamAtParam(param: number): number; + /** + * 获得曲线,来自索引位置. + * @param {number} i 索引位置 整数 + */ + GetCurveAtIndex(i: number): Curve; + IntersectWith2(curve: Curve, intType: IntersectOption, tolerance?: number): import("../../GraphicsSystem/IntersectWith").IntersectResult[]; + IntersectSelf(): number[]; + IsIntersectSelf(): boolean; + get BoundingBox(): Box3Ext; + /** + * 得到曲线有用的点表和凸度(闭合曲线首尾重复) + */ + get PtsBuls(): { + pts: Vector2[]; + buls: number[]; + }; + get IsBulge(): boolean; + get Shape(): import("three").Shape; + get SVG(): string; + InitDrawObject(renderType?: RenderType): Line2 | TLine; + UpdateDrawObject(type: RenderType, en: Object3D): void; + GetDragPointCount(drag: DragPointType): number; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], moveVec: Vector3): void; + GetStretchPoints(): Vector3[]; + /** + * 范围拉伸(stretch),对夹点进行拉伸. + * 如果对圆弧的一侧进行拉伸,那么修改bul + * + * @param {Array} indexList + * @param {Vector3} vec + */ + MoveStretchPoints(indexList: Array, vec: Vector3): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +export declare const TempPolyline: Polyline; +//# sourceMappingURL=Polyline.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Polyline.d.ts.map b/types/DatabaseServices/Entity/Polyline.d.ts.map new file mode 100644 index 0000000..ba39387 --- /dev/null +++ b/types/DatabaseServices/Entity/Polyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Polyline.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Region.d.ts b/types/DatabaseServices/Entity/Region.d.ts new file mode 100644 index 0000000..4583245 --- /dev/null +++ b/types/DatabaseServices/Entity/Region.d.ts @@ -0,0 +1,55 @@ +import { Box3, BufferGeometry, Material, Matrix3, Matrix4, Object3D, Vector3 } from 'three'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { BoolOpeartionType } from '../../GraphicsSystem/BoolOperateUtils'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { ShapeManager } from '../ShapeManager'; +import { Curve } from './Curve'; +import { Entity } from './Entity'; +export declare class Region extends Entity { + private _ShapeManager; + static CreateFromCurves(cus: Curve[]): Region | undefined; + constructor(_ShapeManager?: ShapeManager); + get ShapeManager(): ShapeManager; + get Area(): number; + get BoundingBox(): Box3; + Explode(): Curve[] | Region[]; + /** + * 对于布尔操作,这个将会变换内部轮廓到对方坐标系. + * 并且这个变换不会更新图形绘制. + * @param {Matrix4} m + * @memberof Region + */ + ShapeApplyMatrix(m: Matrix4): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], moveVec: Vector3): void; + ApplyMatrix(m: Matrix4): this; + get Position(): Vector3; + set Position(pt: Vector3); + protected ApplyScaleMatrix(m: Matrix4): this; + Z0(): this; + MatrixPlanarizere(): this; + protected ApplyMirrorMatrix(m: Matrix4): this; + /** + * 请注意:该计算会操作otherRegion的矩阵 + * @param {Region} otherRegion + * @param {BoolOpeartionType} boolType + */ + BooleanOper(otherRegion: Region, boolType: BoolOpeartionType): boolean; + private _MeshGeometry; + get MeshGeometry(): BufferGeometry; + private _EdgeGeometry; + private get EdgeGeometry(); + private UpdateGeometry; + UpdateDrawGeometry(): void; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D; + /** + * 当实体需要被更新时,更新实体材质 + */ + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Region.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Entity/Region.d.ts.map b/types/DatabaseServices/Entity/Region.d.ts.map new file mode 100644 index 0000000..1b2f765 --- /dev/null +++ b/types/DatabaseServices/Entity/Region.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Region.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/Region.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAgB,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAQ,QAAQ,EAA0B,OAAO,EAAE,MAAM,OAAO,CAAC;AAIxI,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAI7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBACa,MAAO,SAAQ,MAAM;IAelB,OAAO,CAAC,aAAa;IAbjC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS;gBAarC,aAAa,GAAE,YAAiC;IAMpE,IAAI,YAAY,iBAGf;IACD,IAAI,IAAI,WAGP;IACD,IAAI,WAAW,SAMd;IACD,OAAO;IAoBP;;;;;OAKG;IACH,gBAAgB,CAAC,CAAC,EAAE,OAAO;IAK3B,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAyBZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAO/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO;IAMpD,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAQ7B,IAAI,QAAQ,IAIK,OAAO,CADvB;IACD,IAAI,QAAQ,CAAC,EAAE,EAAE,OAAO,EAgBvB;IAED,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW5C,EAAE;IAQF,iBAAiB;IAQjB,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO;IAItC;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO;IAkBtE,OAAO,CAAC,aAAa,CAAiB;IACtC,IAAI,YAAY,IAAI,cAAc,CAMjC;IAED,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,KAAK,YAAY,GAMvB;IAED,OAAO,CAAC,cAAc;IA4CtB,kBAAkB;IAMlB,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAoCvE,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAyCtD;;MAEE;IACF,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAiC7E,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"} \ No newline at end of file diff --git a/types/DatabaseServices/EraseEntityData.d.ts b/types/DatabaseServices/EraseEntityData.d.ts new file mode 100644 index 0000000..817c3f3 --- /dev/null +++ b/types/DatabaseServices/EraseEntityData.d.ts @@ -0,0 +1,9 @@ +import { CADFiler } from './CADFiler'; +import { ISerialize } from './ISerialize'; +export declare class EraseEntityData implements ISerialize { + isErase: boolean; + ReadFile(file: CADFiler): this; + WriteFile(file: CADFiler): this; + constructor(isErase?: boolean); +} +//# sourceMappingURL=EraseEntityData.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/EraseEntityData.d.ts.map b/types/DatabaseServices/EraseEntityData.d.ts.map new file mode 100644 index 0000000..8de2350 --- /dev/null +++ b/types/DatabaseServices/EraseEntityData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EraseEntityData.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/EraseEntityData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,qBACa,eAAgB,YAAW,UAAU;IAY3B,OAAO;IAV1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAK9B,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;gBAKZ,OAAO,UAAO;CAGpC"} \ No newline at end of file diff --git a/types/DatabaseServices/FaceEntity.d.ts b/types/DatabaseServices/FaceEntity.d.ts new file mode 100644 index 0000000..13a61b6 --- /dev/null +++ b/types/DatabaseServices/FaceEntity.d.ts @@ -0,0 +1,15 @@ +import { Object3D, Vector3 } from "three"; +import { RenderType } from "../GraphicsSystem/RenderType"; +import { CADFiler } from "./CADFiler"; +import { Entity } from "./Entity/Entity"; +export declare class FaceEntity extends Entity { + private p1; + private p2; + private p3; + private normal; + constructor(p1?: Vector3, p2?: Vector3, p3?: Vector3, normal?: Vector3); + protected InitDrawObject(renderType?: RenderType): Object3D; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=FaceEntity.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/FaceEntity.d.ts.map b/types/DatabaseServices/FaceEntity.d.ts.map new file mode 100644 index 0000000..6a89c0a --- /dev/null +++ b/types/DatabaseServices/FaceEntity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FaceEntity.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/FaceEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,QAAQ,EAAE,OAAO,EAAQ,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,qBACa,UAAW,SAAQ,MAAM;IAEtB,OAAO,CAAC,EAAE;IAA2B,OAAO,CAAC,EAAE;IAA2B,OAAO,CAAC,EAAE;IAA2B,OAAO,CAAC,MAAM;gBAArH,EAAE,GAAE,OAAuB,EAAU,EAAE,GAAE,OAAuB,EAAU,EAAE,GAAE,OAAuB,EAAU,MAAM,GAAE,OAAuB;IAKlK,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAYjF,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAalC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAa3B"} \ No newline at end of file diff --git a/types/DatabaseServices/FileServer.d.ts b/types/DatabaseServices/FileServer.d.ts new file mode 100644 index 0000000..a2c4503 --- /dev/null +++ b/types/DatabaseServices/FileServer.d.ts @@ -0,0 +1,40 @@ +import { Singleton } from "../Common/Singleton"; +import { IDirectoryProps } from "../UI/Components/SourceManage/CommonPanel"; +export interface IFileInfo { + file_id?: string; + dir_id?: string; + name?: string; + logo?: string; + file?: string; + zip_type?: "gzip"; + update_date?: string; + code?: string; +} +/** + * File server + * 保存CAD的文件服务,统一由这里经过文件的CRUD操作 + */ +export declare class FileServer extends Singleton { + currentFileInfo: { + name: string; + dir: IDirectoryProps; + }; + m_CurFileId: string; + CurrentFileMd5: string; + constructor(); + AddNewFile(): Promise; + GetFileMD5(fid: string): Promise; + OpenFile(fid: string): Promise; + ReadFileList(): Promise; + GetFileInfo(fid: string, code?: string): Promise<{ + name: string; + file?: string; + code: string; + }>; + CacheFileInfo(fid: string, info: IFileInfo): Promise; + UploadFile(fileInfo: IFileInfo): Promise; + UpdateFile(fileInfo: IFileInfo): Promise; + private SaveCurrentFileInfo; + Clear(): void; +} +//# sourceMappingURL=FileServer.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/FileServer.d.ts.map b/types/DatabaseServices/FileServer.d.ts.map new file mode 100644 index 0000000..c560b04 --- /dev/null +++ b/types/DatabaseServices/FileServer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FileServer.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/FileServer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOhD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAI5E,MAAM,WAAW,SAAS;IAEtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAErC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAC;KAAE,CAAC;IAEzD,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;;IAoBjB,UAAU;IAwBV,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOpD,QAAQ,CAAC,GAAG,EAAE,MAAM;IAkEpB,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAWpC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IA+BhG,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAW1C,UAAU,CAAC,QAAQ,EAAE,SAAS;IAwB9B,UAAU,CAAC,QAAQ,EAAE,SAAS;IAuBpC,OAAO,CAAC,mBAAmB;IAM3B,KAAK;CAMR"} \ No newline at end of file diff --git a/types/DatabaseServices/GroupTable.d.ts b/types/DatabaseServices/GroupTable.d.ts new file mode 100644 index 0000000..982fd04 --- /dev/null +++ b/types/DatabaseServices/GroupTable.d.ts @@ -0,0 +1,11 @@ +import { GroupRecord } from "./GroupTableRecord"; +import { ObjectCollection } from "./ObjectCollection"; +import { CADFiler } from "./CADFiler"; +import { Status } from "../Common/Status"; +export declare class GroupTable extends ObjectCollection { + Append(object: GroupRecord, isCheckObjectCleanly?: boolean): import("./ObjectId").ObjectId; + Add(record: GroupRecord, isCheckObjectCleanly?: boolean): Status; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=GroupTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/GroupTable.d.ts.map b/types/DatabaseServices/GroupTable.d.ts.map new file mode 100644 index 0000000..44e9006 --- /dev/null +++ b/types/DatabaseServices/GroupTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GroupTable.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/GroupTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBACa,UAAW,SAAQ,gBAAgB,CAAC,WAAW,CAAC;IAGzD,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,UAAO;IAUvD,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,oBAAoB,UAAO,GAAG,MAAM;IAU7D,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAMvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/GroupTableRecord.d.ts b/types/DatabaseServices/GroupTableRecord.d.ts new file mode 100644 index 0000000..d561814 --- /dev/null +++ b/types/DatabaseServices/GroupTableRecord.d.ts @@ -0,0 +1,12 @@ +import { SymbolTableRecord } from "./SymbolTableRecord"; +import { ObjectId } from "./ObjectId"; +import { CADFiler } from "./CADFiler"; +export declare class GroupRecord extends SymbolTableRecord { + Entitys: ObjectId[]; + constructor(); + get Name(): string; + set Name(name: string); + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=GroupTableRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/GroupTableRecord.d.ts.map b/types/DatabaseServices/GroupTableRecord.d.ts.map new file mode 100644 index 0000000..71d104e --- /dev/null +++ b/types/DatabaseServices/GroupTableRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GroupTableRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/GroupTableRecord.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBACa,WAAY,SAAQ,iBAAiB;IAElC,OAAO,EAAE,QAAQ,EAAE,CAAC;;IAgChC,IAAI,IAAI,IAIO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAOpB;IAGD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAavB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts b/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts new file mode 100644 index 0000000..0b8782d --- /dev/null +++ b/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts @@ -0,0 +1,15 @@ +import { CompositeEntity } from "../Entity/CompositeEntity"; +import { ICompHardwareOption } from "../../UI/Components/RightPanel/RightPanelInterface"; +import { CADFiler } from "../CADFiler"; +import { Entity } from "../Entity/Entity"; +import { ObjectId } from "../ObjectId"; +export declare class HardwareCompositeEntity extends CompositeEntity { + HardwareOption: ICompHardwareOption; + DataList: [string, string][]; + RelevanceBoards: ObjectId[]; + constructor(); + GetAllEntity(isHole?: boolean, filter?: (e: Entity) => boolean): Entity[]; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=HardwareCompositeEntity.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts.map b/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts.map new file mode 100644 index 0000000..5f33ac1 --- /dev/null +++ b/types/DatabaseServices/Hardware/HardwareCompositeEntity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareCompositeEntity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Hardware/HardwareCompositeEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBACa,uBAAwB,SAAQ,eAAe;IAE5C,cAAc,EAAE,mBAAmB,CAAuC;IAC1E,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAClC,eAAe,EAAE,QAAQ,EAAE,CAAM;;IAK7C,YAAY,CAAC,MAAM,GAAE,OAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO;IAoBrE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IA+ClC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAmC3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Hardware/HardwareTopline.d.ts b/types/DatabaseServices/Hardware/HardwareTopline.d.ts new file mode 100644 index 0000000..1bdee07 --- /dev/null +++ b/types/DatabaseServices/Hardware/HardwareTopline.d.ts @@ -0,0 +1,22 @@ +import { IToplineOption } from "../../UI/Components/RightPanel/RightPanelInterface"; +import { SweepSolid } from '../3DSolid/SweepSolid'; +import { CADFiler } from "../CADFiler"; +import { Curve } from "../Entity/Curve"; +export declare class HardwareTopline extends SweepSolid { + HardwareOption: IToplineOption; + DataList: [string, string][]; + private _contourRotation; + get ContourRotation(): number; + private _ContourWidth; + private get Contours(); + /** + *延伸取最大最小轮廓每段首尾到前面线段,取最长线段作为分段长 + * + */ + get Segmentations(): Curve[]; + get MaxLength(): number; + set ContourRotation(ro: number); + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=HardwareTopline.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Hardware/HardwareTopline.d.ts.map b/types/DatabaseServices/Hardware/HardwareTopline.d.ts.map new file mode 100644 index 0000000..2530d55 --- /dev/null +++ b/types/DatabaseServices/Hardware/HardwareTopline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareTopline.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Hardware/HardwareTopline.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,qBACa,eAAgB,SAAQ,UAAU;IAE/B,cAAc,EAAE,cAAc,CAAqC;IACnE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAC9C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,IAAI,eAAe,IAmMK,MAAM,CAhM7B;IACD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,KAAK,QAAQ,GAiCnB;IACD;;;OAGG;IACH,IAAI,aAAa,YAmJhB;IACD,IAAI,SAAS,WAGZ;IACD,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,EAS7B;IACD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IA8BlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CA0B3B"} \ No newline at end of file diff --git a/types/DatabaseServices/HistoricManage.d.ts b/types/DatabaseServices/HistoricManage.d.ts new file mode 100644 index 0000000..6a02dbc --- /dev/null +++ b/types/DatabaseServices/HistoricManage.d.ts @@ -0,0 +1,46 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +import { CommandHistoryRecord } from './CommandHistoryRecord'; +/** + * 历史记录管理 + * + * 关于子命令标记: + * 当子命令标记出现的时候,才允许出现局部撤销,否则命令执行中不允许撤销,触发命令重写了撤销和重做的事件. + */ +export declare class HistoricManage extends CADObject { + useSubCommand: boolean; + curIndex: number; + lockIndex: number; + historyRecord: CommandHistoryRecord[]; + doing: boolean; + Enable: boolean; + _SignalCommandHistory: HistoricManage; + constructor(useSubCommand?: boolean); + Clear(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + get IsNow(): boolean; + get UndoData(): CommandHistoryRecord; + StartMark(subCommandName?: string): void; + /** + * 不要在命令中直接调用这个函数! + * 请调用 commandMachine.CommandStart + */ + StartCmd(cmdName: string): void; + CurrentHasHistory(): boolean; + EndCmd(): boolean; + /** + * 获得这个命令修改的对象列表 + */ + get ChangeObjects(): Set; + GetRangeChangeObject(startIndex: number, endIndex: number): Set; + /** + * 合并命令历史记录,因为命令记录器允许存在子记录,所以当命令结束时,应该把子记录合并到父记录中,子记录将被摧毁. + */ + private MergeSubCommmand; + Undo(): boolean; + Redo(): any; + UndoEvent(cmdName: string, historyRec: CommandHistoryRecord): void; + RedoEvent(cmdName: string, historyRec: CommandHistoryRecord): void; +} +//# sourceMappingURL=HistoricManage.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/HistoricManage.d.ts.map b/types/DatabaseServices/HistoricManage.d.ts.map new file mode 100644 index 0000000..8fe7383 --- /dev/null +++ b/types/DatabaseServices/HistoricManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HistoricManage.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/HistoricManage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;GAKG;AACH,qBACa,cAAe,SAAQ,SAAS;IAUtB,aAAa;IARhC,QAAQ,EAAE,MAAM,CAAM;IACtB,SAAS,SAAM;IACf,aAAa,EAAE,oBAAoB,EAAE,CAAM;IAC3C,KAAK,EAAE,OAAO,CAAS;IACvB,MAAM,EAAE,OAAO,CAAQ;IAEvB,qBAAqB,EAAE,cAAc,CAAC;gBAEnB,aAAa,UAAO;IAKvC,KAAK;IAOL,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAYvB,SAAS,CAAC,IAAI,EAAE,QAAQ;IAYxB,IAAI,KAAK,IAAI,OAAO,CAGnB;IAED,IAAI,QAAQ,IAAI,oBAAoB,CAenC;IAGD,SAAS,CAAC,cAAc,SAAK;IAY7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM;IAUxB,iBAAiB,IAAI,OAAO;IAS5B,MAAM,IAAI,OAAO;IA+BjB;;OAEG;IACH,IAAI,aAAa,IAAI,GAAG,CAAC,SAAS,CAAC,CAclC;IACD,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC;IAS1E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB,IAAI,IAAI,OAAO;IA6Bf,IAAI;IA2BJ,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB;IAI3D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB;CAI9D"} \ No newline at end of file diff --git a/types/DatabaseServices/HistorycRecord.d.ts b/types/DatabaseServices/HistorycRecord.d.ts new file mode 100644 index 0000000..e7aee01 --- /dev/null +++ b/types/DatabaseServices/HistorycRecord.d.ts @@ -0,0 +1,14 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +import { ISerialize } from './ISerialize'; +/** + * 历史记录,用于撤销和重做的数据. + */ +export declare class HistorycRecord extends CADObject { + undoData: ISerialize; + redoData: ISerialize; + userData: ISerialize; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=HistorycRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/HistorycRecord.d.ts.map b/types/DatabaseServices/HistorycRecord.d.ts.map new file mode 100644 index 0000000..2082e00 --- /dev/null +++ b/types/DatabaseServices/HistorycRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HistorycRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/HistorycRecord.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,qBACa,cAAe,SAAQ,SAAS;IAGzC,QAAQ,EAAE,UAAU,CAAC;IAErB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IAMrB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAQvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/ISerialize.d.ts b/types/DatabaseServices/ISerialize.d.ts new file mode 100644 index 0000000..290531e --- /dev/null +++ b/types/DatabaseServices/ISerialize.d.ts @@ -0,0 +1,6 @@ +import { CADFiler } from "./CADFiler"; +export interface ISerialize { + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ISerialize.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ISerialize.d.ts.map b/types/DatabaseServices/ISerialize.d.ts.map new file mode 100644 index 0000000..6065f6a --- /dev/null +++ b/types/DatabaseServices/ISerialize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ISerialize.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ISerialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;CACnC"} \ No newline at end of file diff --git a/types/DatabaseServices/IdMaping.d.ts b/types/DatabaseServices/IdMaping.d.ts new file mode 100644 index 0000000..0b300ce --- /dev/null +++ b/types/DatabaseServices/IdMaping.d.ts @@ -0,0 +1,3 @@ +import { ObjectId } from "./ObjectId"; +export declare type IdMaping = Map; +//# sourceMappingURL=IdMaping.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/IdMaping.d.ts.map b/types/DatabaseServices/IdMaping.d.ts.map new file mode 100644 index 0000000..e90739a --- /dev/null +++ b/types/DatabaseServices/IdMaping.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IdMaping.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/IdMaping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,oBAAY,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/AmbientLight.d.ts b/types/DatabaseServices/Lights/AmbientLight.d.ts new file mode 100644 index 0000000..70dee58 --- /dev/null +++ b/types/DatabaseServices/Lights/AmbientLight.d.ts @@ -0,0 +1,8 @@ +import { Object3D } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { Light } from "./Light"; +export declare class AmbientLight extends Light { + protected _Intensity: number; + protected InitDrawObject(renderType?: RenderType): Object3D; +} +//# sourceMappingURL=AmbientLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/AmbientLight.d.ts.map b/types/DatabaseServices/Lights/AmbientLight.d.ts.map new file mode 100644 index 0000000..2ea3c8e --- /dev/null +++ b/types/DatabaseServices/Lights/AmbientLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AmbientLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/AmbientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBACa,YAAa,SAAQ,KAAK;IAEnC,SAAS,CAAC,UAAU,SAAK;IACzB,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;CAKpF"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/DirectionalLight.d.ts b/types/DatabaseServices/Lights/DirectionalLight.d.ts new file mode 100644 index 0000000..f51c541 --- /dev/null +++ b/types/DatabaseServices/Lights/DirectionalLight.d.ts @@ -0,0 +1,22 @@ +import { Matrix4, Object3D, Vector3 } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Light } from "./Light"; +/** + * 平行光源 + */ +export declare class DirectionalLight extends Light { + OnlyRenderType: boolean; + private _Target; + protected _ShowHelper: boolean; + get Target(): Vector3; + set Target(p: Vector3); + ApplyMatrix(m: Matrix4): this; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=DirectionalLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/DirectionalLight.d.ts.map b/types/DatabaseServices/Lights/DirectionalLight.d.ts.map new file mode 100644 index 0000000..98d2f96 --- /dev/null +++ b/types/DatabaseServices/Lights/DirectionalLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DirectionalLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/DirectionalLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AAGlI,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,qBACa,gBAAiB,SAAQ,KAAK;IAEvC,cAAc,UAAQ;IACtB,OAAO,CAAC,OAAO,CAAiB;IAChC,SAAS,CAAC,WAAW,UAAS;IAE9B,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAQpB;IACD,WAAW,CAAC,CAAC,EAAE,OAAO;IAOtB,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAO/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAQhD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAmBjF,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAwB/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAMlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/HemisphereLight.d.ts b/types/DatabaseServices/Lights/HemisphereLight.d.ts new file mode 100644 index 0000000..269fa30 --- /dev/null +++ b/types/DatabaseServices/Lights/HemisphereLight.d.ts @@ -0,0 +1,16 @@ +import * as THREE from "three"; +import { Object3D } from "three"; +import { Light } from "./Light"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +export declare class HemisphereLight extends Light { + private m_GroundColor; + protected _Intensity: number; + get GroundColor(): THREE.Color; + set GroundColor(color: THREE.Color); + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=HemisphereLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/HemisphereLight.d.ts.map b/types/DatabaseServices/Lights/HemisphereLight.d.ts.map new file mode 100644 index 0000000..fa3ed25 --- /dev/null +++ b/types/DatabaseServices/Lights/HemisphereLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HemisphereLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/HemisphereLight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBACa,eAAgB,SAAQ,KAAK;IAEtC,OAAO,CAAC,aAAa,CAAqB;IAC1C,SAAS,CAAC,UAAU,SAAO;IAC3B,IAAI,WAAW,IAKQ,KAAK,CAAC,KAAK,CADjC;IACD,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAKjC;IACD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAKjF,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAM/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/Light.d.ts b/types/DatabaseServices/Lights/Light.d.ts new file mode 100644 index 0000000..626ca36 --- /dev/null +++ b/types/DatabaseServices/Lights/Light.d.ts @@ -0,0 +1,29 @@ +import { Color, Object3D, Vector3 } from 'three'; +import { ObjectSnapMode } from '../../Editor/ObjectSnapMode'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Entity } from '../Entity/Entity'; +/** + * 灯光实体基类 + */ +export declare class Light extends Entity { + protected _Intensity: number; + protected _LightColor: Color; + protected _ShowHelper: boolean; + Clone(): any; + get Position(): Vector3; + set Position(v: Vector3); + get Color(): Color; + set Color(color: Color); + get ShowHelper(): boolean; + set ShowHelper(v: boolean); + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3): Vector3[]; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + UpdateDrawObject(type: RenderType, en: Object3D): void; + get Intensity(): number; + set Intensity(v: number); + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Light.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/Light.d.ts.map b/types/DatabaseServices/Lights/Light.d.ts.map new file mode 100644 index 0000000..3720f02 --- /dev/null +++ b/types/DatabaseServices/Lights/Light.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Light.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/Light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,qBACa,KAAM,SAAQ,MAAM;IAE7B,SAAS,CAAC,UAAU,EAAE,MAAM,CAAK;IACjC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAuB;IACnD,SAAS,CAAC,WAAW,UAAS;IAE9B,KAAK;IAKL,IAAI,QAAQ,IAKI,OAAO,CAFtB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAItB;IAED,IAAI,KAAK,IAIQ,KAAK,CADrB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAKrB;IACD,IAAI,UAAU,IAII,OAAO,CADxB;IACD,IAAI,UAAU,CAAC,CAAC,EAAE,OAAO,EAKxB;IACD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,GACnB,OAAO,EAAE;IASZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAKhD,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAK/C,IAAI,SAAS,IAII,MAAM,CADtB;IACD,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,EAKtB;IACD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IASlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/PointLight.d.ts b/types/DatabaseServices/Lights/PointLight.d.ts new file mode 100644 index 0000000..933b6a5 --- /dev/null +++ b/types/DatabaseServices/Lights/PointLight.d.ts @@ -0,0 +1,25 @@ +import { Object3D } from 'three'; +import { CADFiler } from '../CADFiler'; +import { Light } from './Light'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +/** + * 点光源 + */ +export declare class PointLight extends Light { + /** + * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. + * Default — 0.0. + */ + private m_Distance; + private m_Decay; + constructor(); + get Decay(): number; + set Decay(decay: number); + get Distance(): number; + set Distance(dist: number); + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=PointLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/PointLight.d.ts.map b/types/DatabaseServices/Lights/PointLight.d.ts.map new file mode 100644 index 0000000..2a62fed --- /dev/null +++ b/types/DatabaseServices/Lights/PointLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/PointLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAgE,MAAM,OAAO,CAAC;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D;;GAEG;AACH,qBACa,UAAW,SAAQ,KAAK;IAEjC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAKlC,OAAO,CAAC,OAAO,CAAe;;IAO9B,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAED,IAAI,QAAQ,IAIO,MAAM,CADxB;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAKxB;IACD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAYjF,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAS/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/RectAreaLight.d.ts b/types/DatabaseServices/Lights/RectAreaLight.d.ts new file mode 100644 index 0000000..e3cf989 --- /dev/null +++ b/types/DatabaseServices/Lights/RectAreaLight.d.ts @@ -0,0 +1,25 @@ +import { Matrix4, Object3D, Vector3 } from "three"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Light } from "./Light"; +export declare class RectAreaLight extends Light { + private m_Width; + private m_Height; + protected _ShowHelper: boolean; + protected _Intensity: number; + private m_Target; + get Target(): Vector3; + set Target(p: Vector3); + ApplyMatrix(m: Matrix4): this; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + get Height(): number; + get Width(): number; + set Height(v: number); + set Width(v: number); + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=RectAreaLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/RectAreaLight.d.ts.map b/types/DatabaseServices/Lights/RectAreaLight.d.ts.map new file mode 100644 index 0000000..e1ffbfb --- /dev/null +++ b/types/DatabaseServices/Lights/RectAreaLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RectAreaLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/RectAreaLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,OAAO,EAA2B,QAAQ,EAAwD,OAAO,EAAE,MAAM,OAAO,CAAC;AAG5J,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBACa,aAAc,SAAQ,KAAK;IAEpC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAC7B,SAAS,CAAC,WAAW,UAAQ;IAC7B,SAAS,CAAC,UAAU,SAAK;IACzB,OAAO,CAAC,QAAQ,CAAiB;IAEjC,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAKpB;IACD,WAAW,CAAC,CAAC,EAAE,OAAO;IAOtB,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAQhD,IAAI,MAAM,IAQI,MAAM,CALnB;IACD,IAAI,KAAK,IAUI,MAAM,CAPlB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IACD,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAKlB;IACD,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAsBjF,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IA+B/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IASlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAQ3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Lights/SpotLight.d.ts b/types/DatabaseServices/Lights/SpotLight.d.ts new file mode 100644 index 0000000..f2aeed6 --- /dev/null +++ b/types/DatabaseServices/Lights/SpotLight.d.ts @@ -0,0 +1,39 @@ +import { Matrix4, Object3D, Vector3 } from "three"; +import { ObjectSnapMode } from "../../Editor/ObjectSnapMode"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { CADFiler } from "../CADFiler"; +import { Light } from "./Light"; +export declare class SpotLight extends Light { + /** + * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. + * Default — 0.0. + */ + private m_Distance; + private m_Decay; + private m_Angle; + private m_Penumbra; + private m_Target; + protected _ShowHelper: boolean; + get Target(): Vector3; + set Target(v: Vector3); + get Angle(): number; + set Angle(rad: number); + get Decay(): number; + set Decay(decay: number); + get Distance(): number; + set Distance(dist: number); + get Penumbra(): number; + set Penumbra(v: number); + get EndPoint(): Vector3; + ApplyMatrix(m: Matrix4): this; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3): Vector3[]; + protected InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=SpotLight.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Lights/SpotLight.d.ts.map b/types/DatabaseServices/Lights/SpotLight.d.ts.map new file mode 100644 index 0000000..8ff1b95 --- /dev/null +++ b/types/DatabaseServices/Lights/SpotLight.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpotLight.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Lights/SpotLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,OAAO,EAA2B,QAAQ,EAA4C,OAAO,EAAE,MAAM,OAAO,CAAC;AAGjK,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,qBACa,SAAU,SAAQ,KAAK;IAEhC;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAgB;IAKlC,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,OAAO,CAAuB;IAGtC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,SAAS,CAAC,WAAW,UAAQ;IAE7B,IAAI,MAAM,IAII,OAAO,CADpB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAQpB;IACD,IAAI,KAAK,IAIM,MAAM,CADpB;IACD,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,EAKpB;IACD,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IACD,IAAI,QAAQ,IAIO,MAAM,CADxB;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAKxB;IACD,IAAI,QAAQ,IAII,MAAM,CADrB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAKrB;IACD,IAAI,QAAQ,YAGX;IACD,WAAW,CAAC,CAAC,EAAE,OAAO;IAOtB,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAQhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAWxD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,GACnB,OAAO,EAAE;IAWZ,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IA+BjF,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAkC/C,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAUlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAU3B"} \ No newline at end of file diff --git a/types/DatabaseServices/MaterialDictionary.d.ts b/types/DatabaseServices/MaterialDictionary.d.ts new file mode 100644 index 0000000..e32e42a --- /dev/null +++ b/types/DatabaseServices/MaterialDictionary.d.ts @@ -0,0 +1,14 @@ +import { Material } from "three"; +export declare const MaterialNeedUpdateKey = "needUpdateImg"; +export declare class MaterialDictionary { + MaterialDict: Map; + MaterialCallback: Map; + private _cout; + constructor(); + addMaterial(mat: Material): void; + createMaterial(): void; + extendObservable(mat: Material, id: number): void; + getMaterial(id: number): Material; + removeMaterial(id: number): void; +} +//# sourceMappingURL=MaterialDictionary.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/MaterialDictionary.d.ts.map b/types/DatabaseServices/MaterialDictionary.d.ts.map new file mode 100644 index 0000000..94ee9b2 --- /dev/null +++ b/types/DatabaseServices/MaterialDictionary.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialDictionary.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/MaterialDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAwB,MAAM,OAAO,CAAC;AAEvD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAKrD,qBAAa,kBAAkB;IAG3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,CAAK;;IAQlB,WAAW,CAAC,GAAG,EAAE,QAAQ;IAMzB,cAAc;IAMd,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM;IAgC1C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IAIjC,cAAc,CAAC,EAAE,EAAE,MAAM;CAO5B"} \ No newline at end of file diff --git a/types/DatabaseServices/MaterialTable.d.ts b/types/DatabaseServices/MaterialTable.d.ts new file mode 100644 index 0000000..00faa17 --- /dev/null +++ b/types/DatabaseServices/MaterialTable.d.ts @@ -0,0 +1,10 @@ +import { SymbolTable } from "./SymbolTable"; +import { PhysicalMaterialRecord } from "./PhysicalMaterialRecord"; +export declare class MaterialTable extends SymbolTable { + get Materials(): Map; + Remove(record: PhysicalMaterialRecord): void; + GetAt(name: string): PhysicalMaterialRecord | undefined; + Has(name: string): boolean; + AllocateName(name?: string): string; +} +//# sourceMappingURL=MaterialTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/MaterialTable.d.ts.map b/types/DatabaseServices/MaterialTable.d.ts.map new file mode 100644 index 0000000..8b1c270 --- /dev/null +++ b/types/DatabaseServices/MaterialTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialTable.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/MaterialTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,aAAc,SAAQ,WAAW;IAG1C,IAAI,SAAS,wCAGZ;IAED,MAAM,CAAC,MAAM,EAAE,sBAAsB;IAKrC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAKvD,GAAG,CAAC,IAAI,EAAE,MAAM;IAKhB,YAAY,CAAC,IAAI,GAAE,MAAa,GAAG,MAAM;CAI5C"} \ No newline at end of file diff --git a/types/DatabaseServices/MaterialTableRecord.d.ts b/types/DatabaseServices/MaterialTableRecord.d.ts new file mode 100644 index 0000000..8334520 --- /dev/null +++ b/types/DatabaseServices/MaterialTableRecord.d.ts @@ -0,0 +1,4 @@ +import { SymbolTableRecord } from "./SymbolTableRecord"; +export declare class MaterialTableRecord extends SymbolTableRecord { +} +//# sourceMappingURL=MaterialTableRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/MaterialTableRecord.d.ts.map b/types/DatabaseServices/MaterialTableRecord.d.ts.map new file mode 100644 index 0000000..1d0a7f3 --- /dev/null +++ b/types/DatabaseServices/MaterialTableRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialTableRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/MaterialTableRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qBACa,mBAAoB,SAAQ,iBAAiB;CAEzD"} \ No newline at end of file diff --git a/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts b/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts new file mode 100644 index 0000000..345c747 --- /dev/null +++ b/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts @@ -0,0 +1,11 @@ +import { CADFiler } from './CADFiler'; +import { HistorycRecord } from './HistorycRecord'; +import { ObjectId } from './ObjectId'; +export declare class ObjectAllDataHistoryRecord extends HistorycRecord { + RecordEntityId?: ObjectId; + constructor(RecordEntityId?: ObjectId); + WriteRedo(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ObjectAllDataHistoryRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts.map b/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts.map new file mode 100644 index 0000000..0118bff --- /dev/null +++ b/types/DatabaseServices/ObjectAllDataHistoryRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ObjectAllDataHistoryRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ObjectAllDataHistoryRecord.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBACa,0BAA2B,SAAQ,cAAc;IAEvC,cAAc,CAAC,EAAE,QAAQ;gBAAzB,cAAc,CAAC,EAAE,QAAQ;IAO5C,SAAS;IAOT,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAOvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/ObjectCollection.d.ts b/types/DatabaseServices/ObjectCollection.d.ts new file mode 100644 index 0000000..81791a3 --- /dev/null +++ b/types/DatabaseServices/ObjectCollection.d.ts @@ -0,0 +1,17 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +export declare class ObjectCollection extends CADObject { + Objects: T[]; + /** + * @param object + * @param isCheckObjectCleanly 检查对象是否清白,如果对象不清白,那么将会被拒绝加入到集合. + */ + Append(object: T, isCheckObjectCleanly?: boolean): import("./ObjectId").ObjectId; + AppendEvent(obj: T): void; + Remove(obj: T): void; + RemoveIndex(index: number): T; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + ApplyPartialUndo(undoData: CADObject): void; +} +//# sourceMappingURL=ObjectCollection.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ObjectCollection.d.ts.map b/types/DatabaseServices/ObjectCollection.d.ts.map new file mode 100644 index 0000000..e4d08e9 --- /dev/null +++ b/types/DatabaseServices/ObjectCollection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ObjectCollection.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ObjectCollection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,qBACa,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAE,SAAQ,SAAS;IAEhE,OAAO,EAAE,CAAC,EAAE,CAAM;IAElB;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,oBAAoB,UAAO;IA2B7C,WAAW,CAAC,GAAG,EAAE,CAAC;IAIlB,MAAM,CAAC,GAAG,EAAE,CAAC;IAMb,WAAW,CAAC,KAAK,EAAE,MAAM;IA0BzB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAavB,SAAS,CAAC,IAAI,EAAE,QAAQ;IAQxB,gBAAgB,CAAC,QAAQ,EAAE,SAAS;CAgBvC"} \ No newline at end of file diff --git a/types/DatabaseServices/ObjectId.d.ts b/types/DatabaseServices/ObjectId.d.ts new file mode 100644 index 0000000..47a2412 --- /dev/null +++ b/types/DatabaseServices/ObjectId.d.ts @@ -0,0 +1,18 @@ +import { CADObject } from './CADObject'; +export declare enum RelevancyType { + General = 0, + Soft = 1, + Hard = 2 +} +export declare class ObjectId { + private index; + private obj?; + _RelevancyType: RelevancyType; + constructor(index?: number, obj?: CADObject); + get IsErase(): boolean; + set Object(obj: CADObject); + get Object(): CADObject; + get Index(): number; + set Index(index: number); +} +//# sourceMappingURL=ObjectId.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ObjectId.d.ts.map b/types/DatabaseServices/ObjectId.d.ts.map new file mode 100644 index 0000000..5358b9d --- /dev/null +++ b/types/DatabaseServices/ObjectId.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ObjectId.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ObjectId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,aAAa;IAErB,OAAO,IAAI;IACX,IAAI,IAAI;IACR,IAAI,IAAI;CACX;AASD,qBAAa,QAAQ;IAGL,OAAO,CAAC,KAAK;IAAM,OAAO,CAAC,GAAG,CAAC;IAD3C,cAAc,gBAAyB;gBACnB,KAAK,SAAI,EAAU,GAAG,CAAC,EAAE,SAAS;IAItD,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,EAGxB;IACD,IAAI,MAAM,IAAI,SAAS,CAGtB;IACD,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAGtB;CACJ"} \ No newline at end of file diff --git a/types/DatabaseServices/PhysicalMaterialRecord.d.ts b/types/DatabaseServices/PhysicalMaterialRecord.d.ts new file mode 100644 index 0000000..9f49feb --- /dev/null +++ b/types/DatabaseServices/PhysicalMaterialRecord.d.ts @@ -0,0 +1,34 @@ +import { MeshPhysicalMaterial } from "three"; +import { CADFiler } from "./CADFiler"; +import { MaterialTableRecord } from "./MaterialTableRecord"; +import { ObjectId } from "./ObjectId"; +export interface IGoodProps { + name: string; + material: string; + color: string; +} +export declare class PhysicalMaterialRecord extends MaterialTableRecord { + color: string; + transparent: boolean; + matalness: number; + opacity: number; + depthTest: boolean; + map: ObjectId; + bumpMap: ObjectId; + bumpScale: number; + roughnessMap: ObjectId; + roughness: number; + useMap: boolean; + useBumpMap: boolean; + useRoughnessMap: boolean; + private _goodsInfo; + private material; + IsFull: boolean; + Update(): Promise; + get Material(): MeshPhysicalMaterial; + get GoodsInfo(): IGoodProps; + set GoodsInfo(info: IGoodProps); + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=PhysicalMaterialRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/PhysicalMaterialRecord.d.ts.map b/types/DatabaseServices/PhysicalMaterialRecord.d.ts.map new file mode 100644 index 0000000..fa2feef --- /dev/null +++ b/types/DatabaseServices/PhysicalMaterialRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PhysicalMaterialRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/PhysicalMaterialRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAKtC,MAAM,WAAW,UAAU;IAEvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,sBAAuB,SAAQ,mBAAmB;IAE3D,KAAK,EAAE,MAAM,CAAa;IAC1B,WAAW,UAAS;IACpB,SAAS,EAAE,MAAM,CAAK;IACtB,OAAO,EAAE,MAAM,CAAK;IACpB,SAAS,EAAE,OAAO,CAAQ;IAC1B,GAAG,EAAE,QAAQ,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,MAAM,CAAO;IACxB,YAAY,EAAE,QAAQ,CAAC;IACvB,SAAS,EAAE,MAAM,CAAO;IACxB,MAAM,UAAQ;IACd,UAAU,UAAQ;IAClB,eAAe,UAAQ;IACvB,OAAO,CAAC,UAAU,CAIhB;IAEF,OAAO,CAAC,QAAQ,CAAgC;IACpC,MAAM,UAAS;IACrB,MAAM;IA2CZ,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IACD,IAAI,SAAS,IAIO,UAAU,CAD7B;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,UAAU,EAI7B;IAED,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAoCvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAuB3B"} \ No newline at end of file diff --git a/types/DatabaseServices/PointInPolyline.d.ts b/types/DatabaseServices/PointInPolyline.d.ts new file mode 100644 index 0000000..b1f65cd --- /dev/null +++ b/types/DatabaseServices/PointInPolyline.d.ts @@ -0,0 +1,20 @@ +import { Vector3 } from 'three'; +import { Arc } from './Entity/Arc'; +import { Polyline } from './Entity/Polyline'; +/** + * 点在弓型内部 + * + * @param arc 二维圆弧 + * @param pt 点 + * @param isInChrodIsTrue 当点在弦上也认为在弓形内部 + * @returns 点在内部 + */ +export declare function IsPointInBowArc(arc: Arc, pt: Vector3, isInChrodIsTrue?: boolean): boolean; +/** + * 判断点在多段线内外 + * @param pl 多段线 + * @param pt 点 + * @returns 点在多段线内部 + */ +export declare function IsPointInPolyLine(pl: Polyline, pt: Vector3): boolean; +//# sourceMappingURL=PointInPolyline.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/PointInPolyline.d.ts.map b/types/DatabaseServices/PointInPolyline.d.ts.map new file mode 100644 index 0000000..e6b2de2 --- /dev/null +++ b/types/DatabaseServices/PointInPolyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointInPolyline.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/PointInPolyline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAoB7C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,UAAQ,GAAG,OAAO,CAqBvF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CA4FpE"} \ No newline at end of file diff --git a/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts b/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts new file mode 100644 index 0000000..b2606d9 --- /dev/null +++ b/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts @@ -0,0 +1,19 @@ +import { CADFiler } from "../CADFiler"; +import { CADObject } from "../CADObject"; +import { ObjectId } from "../ObjectId"; +import { SymbolTableRecord } from "../SymbolTableRecord"; +/** + * 加工组信息设置. + * 为了保证加工组的信息得到正确的添加和删除. + * 请保证更新Entity的加工组数据,并更新ProcessingGroup的数据. + */ +export declare class ProcessingGroupRecord extends SymbolTableRecord { + Objects: ObjectId[]; + constructor(); + get Name(): string; + set Name(name: string); + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + ApplyPartialUndo(undoData: CADObject): void; +} +//# sourceMappingURL=ProcessingGroupRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts.map b/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts.map new file mode 100644 index 0000000..943d6ed --- /dev/null +++ b/types/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessingGroupRecord.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/ProcessingGroup/ProcessingGroupRecord.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,iBAAiB;IAE5C,OAAO,EAAE,QAAQ,EAAE,CAAM;;IAMrC,IAAI,IAAI,IAIO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAOpB;IAKD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAUvB,SAAS,CAAC,IAAI,EAAE,QAAQ;IASxB,gBAAgB,CAAC,QAAQ,EAAE,SAAS;CAIvC"} \ No newline at end of file diff --git a/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts b/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts new file mode 100644 index 0000000..9b7fe7f --- /dev/null +++ b/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts @@ -0,0 +1,9 @@ +import { Status } from "../../Common/Status"; +import { ObjectCollection } from "../ObjectCollection"; +import { ProcessingGroupRecord } from "./ProcessingGroupRecord"; +export declare class ProcessingGroupTable extends ObjectCollection { + Append(object: ProcessingGroupRecord, isCheckObjectCleanly?: boolean): import("../ObjectId").ObjectId; + Add(record: ProcessingGroupRecord, isCheckObjectCleanly?: boolean): Status; + Remove(record: ProcessingGroupRecord): void; +} +//# sourceMappingURL=ProcessingGroupTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts.map b/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts.map new file mode 100644 index 0000000..9cddaf0 --- /dev/null +++ b/types/DatabaseServices/ProcessingGroup/ProcessingGroupTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessingGroupTable.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/ProcessingGroup/ProcessingGroupTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,qBACa,oBAAqB,SAAQ,gBAAgB,CAAC,qBAAqB,CAAC;IAE7E,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,UAAO;IAUjE,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE,oBAAoB,UAAO,GAAG,MAAM;IASvE,MAAM,CAAC,MAAM,EAAE,qBAAqB;CAIvC"} \ No newline at end of file diff --git a/types/DatabaseServices/RemoveObjectData.d.ts b/types/DatabaseServices/RemoveObjectData.d.ts new file mode 100644 index 0000000..d1f93db --- /dev/null +++ b/types/DatabaseServices/RemoveObjectData.d.ts @@ -0,0 +1,12 @@ +import { CADFiler } from './CADFiler'; +import { CADObject } from './CADObject'; +export declare class RemoveObjectData extends CADObject { + private index; + RemoveObject: CADObject; + constructor(index?: number); + get Index(): number; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + ApplyPartialUndo(file: CADObject): void; +} +//# sourceMappingURL=RemoveObjectData.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/RemoveObjectData.d.ts.map b/types/DatabaseServices/RemoveObjectData.d.ts.map new file mode 100644 index 0000000..bf89e54 --- /dev/null +++ b/types/DatabaseServices/RemoveObjectData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RemoveObjectData.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/RemoveObjectData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBACa,gBAAiB,SAAQ,SAAS;IAE3C,OAAO,CAAC,KAAK,CAAS;IAEtB,YAAY,EAAE,SAAS,CAAC;gBACZ,KAAK,CAAC,EAAE,MAAM;IAK1B,IAAI,KAAK,WAGR;IAMD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAMvB,SAAS,CAAC,IAAI,EAAE,QAAQ;IAMxB,gBAAgB,CAAC,IAAI,EAAE,SAAS;CAGnC"} \ No newline at end of file diff --git a/types/DatabaseServices/Shape.d.ts b/types/DatabaseServices/Shape.d.ts new file mode 100644 index 0000000..f9b952d --- /dev/null +++ b/types/DatabaseServices/Shape.d.ts @@ -0,0 +1,70 @@ +import { Matrix3, Matrix4, Shape as TShape, Vector3 } from 'three'; +import { ObjectSnapMode } from '../Editor/ObjectSnapMode'; +import { CADFiler } from './CADFiler'; +import { Contour } from './Contour'; +import { Curve } from './Entity/Curve'; +export declare class Shape { + private _Outline; + private _Holes; + private _Shape; + constructor(out?: Contour, hols?: Contour[]); + get Outline(): Contour; + get Holes(): Contour[]; + get Area(): number; + get BoundingBox(): import("../Geometry/Box").Box3Ext; + set Outline(cus: Contour); + set Holes(cus: Contour[]); + get Shape(): TShape; + get Position(): Vector3; + set Position(p: Vector3); + Z0(): this; + MatrixPlanarizere(): void; + ApplyMatrix(m: Matrix4): this; + ApplyScaleMatrix(m: Matrix4): this; + Explode(): Curve[]; + Clone(): Shape; + SetColor(color: number): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + GetGripPoints(): Vector3[]; + MoveGripPoints(indexList: Array, vec: Vector3): void; + GetStretchPoints(): Vector3[]; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + IntersectionBoolOperation(targetShape: Shape): Shape[]; + UnionBoolOperation(targetShape: Shape, checkIntersect?: boolean): Shape[]; + /** + * 如果完全被减掉,就返回0个.其他的返回1个或者n个 + * @param targetShapes 已经是合并后的形状数组 + */ + SubstactBoolOperation(targetShapes: Shape[]): Shape[]; + Equal(targetShape: Shape): boolean; + private targetOutlinesSubHoles; + /** + * 目标轮廓减去洞 + * + * @private + * @param {Contour[]} tarContours 轮廓列表 + * @param {Contour[]} holes 洞列表 + * @returns {Contour[]} 新的轮廓列表 + * @memberof Shape + */ + private targetOutlineSubHoleOutline; + static pairHoleAndOutline(contours: Contour[]): Shape[]; + /** + * 合并洞,本质是使用(并集算法)将可以并集的洞合并在一起,减少洞的数量. + * canSidewipe 用于走刀,擦边的,包含的,是否合并 + */ + static mergeContours(holes: Contour[], canSidewipe?: boolean): Contour[]; + /** + * 移除被包含的洞.(移除无效的洞,已经被更大的洞包含) + * + * @private + * @param {Contour[]} tmpHoles 洞列表 + * @returns {Contour[]} 返回的洞列表都不会互相包含. + * @memberof Shape + */ + private static removeBeContaineredHoles; + UpdateShape(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Shape.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Shape.d.ts.map b/types/DatabaseServices/Shape.d.ts.map new file mode 100644 index 0000000..8c35f9d --- /dev/null +++ b/types/DatabaseServices/Shape.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Shape.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Shape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAQ,KAAK,IAAI,MAAM,EAAE,OAAO,EAAQ,MAAM,OAAO,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAKvC,qBAAa,KAAK;IAEd,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwB;gBAC1B,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE;IAM3C,IAAI,OAAO,IAkBM,OAAO,CAfvB;IACD,IAAI,KAAK,IAmBM,OAAO,EAAE,CAhBvB;IACD,IAAI,IAAI,WAKP;IACD,IAAI,WAAW,sCAGd;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,EAIvB;IACD,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,EAIvB;IACD,IAAI,KAAK,WAIR;IACD,IAAI,QAAQ,IAII,OAAO,CADtB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,OAAO,EAMtB;IACD,EAAE;IAQF,iBAAiB;IAOjB,WAAW,CAAC,CAAC,EAAE,OAAO;IAMtB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAelC,OAAO;IAaP,KAAK;IAOL,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IA8BZ,aAAa;IASb,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAuBrD,gBAAgB;IAShB,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAwBxD,yBAAyB,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,EAAE;IAQtD,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,UAAQ,GAAG,KAAK,EAAE;IA0CvE;;;OAGG;IACH,qBAAqB,CAAC,YAAY,EAAE,KAAK,EAAE;IAoD3C,KAAK,CAAC,WAAW,EAAE,KAAK;IAWxB,OAAO,CAAC,sBAAsB;IAW9B;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IA6BnC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE;IAsBvD;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,WAAW,UAAO,GAAG,OAAO,EAAE;IAmErE;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAevC,WAAW;IAoBX,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAevB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Shape2.d.ts b/types/DatabaseServices/Shape2.d.ts new file mode 100644 index 0000000..d962811 --- /dev/null +++ b/types/DatabaseServices/Shape2.d.ts @@ -0,0 +1,6 @@ +import { Shape } from "three"; +export declare class Shape2 extends Shape { + getPoints(divisions?: number): any[]; + absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): this; +} +//# sourceMappingURL=Shape2.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Shape2.d.ts.map b/types/DatabaseServices/Shape2.d.ts.map new file mode 100644 index 0000000..faeb52b --- /dev/null +++ b/types/DatabaseServices/Shape2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Shape2.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Shape2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,EAAW,MAAM,OAAO,CAAC;AAIrD,qBAAa,MAAO,SAAQ,KAAK;IAE7B,SAAS,CAAC,SAAS,GAAE,MAAW;IAwChC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAuB7J"} \ No newline at end of file diff --git a/types/DatabaseServices/ShapeManager.d.ts b/types/DatabaseServices/ShapeManager.d.ts new file mode 100644 index 0000000..d9c9411 --- /dev/null +++ b/types/DatabaseServices/ShapeManager.d.ts @@ -0,0 +1,28 @@ +import { BoolOpeartionType } from '../GraphicsSystem/BoolOperateUtils'; +import { CADFiler } from './CADFiler'; +import { Shape } from './Shape'; +import { Matrix4 } from 'three'; +export declare class ShapeManager { + private _ShapeList; + get ShapeList(): Shape[]; + get ShapeCount(): number; + get ShapeArea(): number; + AppendShapeList(shapes: Shape | Shape[]): this; + Clear(): void; + BoolOper(otherMg: ShapeManager, booltype: BoolOpeartionType): boolean; + IntersectionBoolOperation(target: ShapeManager): boolean; + UnionBoolOperation(targetMg: ShapeManager): boolean; + SubstactBoolOperation(target: ShapeManager): boolean; + /** + * 与region.ApplyMatrix不同的是,这个是直接操作内部对象. + * 通常用来计算布尔运算时需要真实的移动这个位置. + * 并且将不会刷新显示 + * + * @param {Matrix4} mat4 + * @memberof ShapeManager + */ + ApplyMatrix(mat4: Matrix4): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ShapeManager.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ShapeManager.d.ts.map b/types/DatabaseServices/ShapeManager.d.ts.map new file mode 100644 index 0000000..105d42c --- /dev/null +++ b/types/DatabaseServices/ShapeManager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShapeManager.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ShapeManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,qBAAa,YAAY;IAErB,OAAO,CAAC,UAAU,CAAe;IACjC,IAAI,SAAS,YAGZ;IACD,IAAI,UAAU,WAGb;IACD,IAAI,SAAS,WAGZ;IACD,eAAe,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE;IAKvC,KAAK;IAIL,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB;IAa3D,yBAAyB,CAAC,MAAM,EAAE,YAAY;IAgB9C,kBAAkB,CAAC,QAAQ,EAAE,YAAY;IAkDzC,qBAAqB,CAAC,MAAM,EAAE,YAAY;IAY1C;;;;;;;OAOG;IACH,WAAW,CAAC,IAAI,EAAE,OAAO;IASzB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAWvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Spline.d.ts b/types/DatabaseServices/Spline.d.ts new file mode 100644 index 0000000..a8a6026 --- /dev/null +++ b/types/DatabaseServices/Spline.d.ts @@ -0,0 +1,33 @@ +import { CatmullRomCurve3, Matrix3, Object3D, Shape, Vector3 } from 'three'; +import { ObjectSnapMode } from '../Editor/ObjectSnapMode'; +import { RenderType } from '../GraphicsSystem/RenderType'; +import { CADFiler } from './CADFiler'; +import { Curve } from './Entity/Curve'; +export declare class Spline extends Curve { + private _PointList; + private _ClosedMark; + constructor(points?: Vector3[]); + get Shape(): Shape; + get Curve3(): CatmullRomCurve3; + get Length(): number; + get Points(): Vector3[]; + set Points(v: Vector3[]); + get CloseMark(): boolean; + get IsClose(): boolean; + set CloseMark(v: boolean); + get StartPoint(): Vector3; + get EndPoint(): Vector3; + get StartParam(): number; + get EndParam(): number; + GetGripPoints(): Vector3[]; + GetStretchPoints(): Vector3[]; + MoveGripPoints(indexList: Array, vec: Vector3): void; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, en: Object3D): void; + Convert2Polyline(count?: number): import("./Entity/Polyline").Polyline; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Spline.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Spline.d.ts.map b/types/DatabaseServices/Spline.d.ts.map new file mode 100644 index 0000000..5687bf9 --- /dev/null +++ b/types/DatabaseServices/Spline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Spline.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Spline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,gBAAgB,EAAmB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAI7G,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,qBACa,MAAO,SAAQ,KAAK;IAE7B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAkB;gBACzB,MAAM,CAAC,EAAE,OAAO,EAAE;IAM9B,IAAI,KAAK,UAGR;IACD,IAAI,MAAM,qBAGT;IAED,IAAI,MAAM,WAGT;IAED,IAAI,MAAM,IAII,OAAO,EAAE,CADtB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAKtB;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IAED,IAAI,OAAO,IAAI,OAAO,CAGrB;IACD,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAKvB;IACD,IAAI,UAAU,YAGb;IACD,IAAI,QAAQ,YAGX;IACD,IAAI,UAAU,WAGb;IACD,IAAI,QAAQ,WAGX;IACD,aAAa;IAIb,gBAAgB;IAIhB,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IASrD,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IASxD,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAiBZ,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAKvE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAc/C,gBAAgB,CAAC,KAAK,SAAI;IAsB1B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IASlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/SymbolTable.d.ts b/types/DatabaseServices/SymbolTable.d.ts new file mode 100644 index 0000000..7457b6b --- /dev/null +++ b/types/DatabaseServices/SymbolTable.d.ts @@ -0,0 +1,19 @@ +import { CADObject } from "./CADObject"; +import { Status } from "../Common/Status"; +import { SymbolTableRecord } from "./SymbolTableRecord"; +import { CADFiler } from "./CADFiler"; +export declare class SymbolTable extends CADObject { + /** + * 符号列表,支持迭代,请勿直接修改数据 + */ + Symbols: Map; + Add(record: SymbolTableRecord, isCheckObjectCleanly?: boolean): Status; + Remove(record: SymbolTableRecord): void; + GetAt(name: string): SymbolTableRecord | undefined; + Has(name: string): boolean; + AllocateName(name: string): string; + ChangeRecordName(record: SymbolTableRecord, newName: string): boolean; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=SymbolTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/SymbolTable.d.ts.map b/types/DatabaseServices/SymbolTable.d.ts.map new file mode 100644 index 0000000..4956a3c --- /dev/null +++ b/types/DatabaseServices/SymbolTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SymbolTable.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/SymbolTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBACa,WAAY,SAAQ,SAAS;IAEtC;;OAEG;IACS,OAAO,mBAA0B;IAE7C,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,oBAAoB,UAAO,GAAG,MAAM;IAenE,MAAM,CAAC,MAAM,EAAE,iBAAiB;IAOhC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAKlD,GAAG,CAAC,IAAI,EAAE,MAAM;IAKhB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAUlC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IASrE,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAevB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAU3B"} \ No newline at end of file diff --git a/types/DatabaseServices/SymbolTableRecord.d.ts b/types/DatabaseServices/SymbolTableRecord.d.ts new file mode 100644 index 0000000..aa3daf7 --- /dev/null +++ b/types/DatabaseServices/SymbolTableRecord.d.ts @@ -0,0 +1,12 @@ +import { CADObject } from "./CADObject"; +import { CADFiler } from "./CADFiler"; +import { Status } from "../Common/Status"; +export declare class SymbolTableRecord extends CADObject { + protected name: string; + get Name(): string; + set Name(name: string); + Add(obj: CADObject, isCheckObjectCleanly?: boolean): Status; + WriteFile(file: CADFiler): void; + ReadFile(file: CADFiler): void; +} +//# sourceMappingURL=SymbolTableRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/SymbolTableRecord.d.ts.map b/types/DatabaseServices/SymbolTableRecord.d.ts.map new file mode 100644 index 0000000..d65c934 --- /dev/null +++ b/types/DatabaseServices/SymbolTableRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SymbolTableRecord.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/SymbolTableRecord.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,qBAAa,iBAAkB,SAAQ,SAAS;IAE5C,SAAS,CAAC,IAAI,EAAE,MAAM,CAAM;IAC5B,IAAI,IAAI,IAIO,MAAM,CADpB;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAUpB;IAED,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,oBAAoB,UAAO,GAAG,MAAM;IAKxD,SAAS,CAAC,IAAI,EAAE,QAAQ;IAOxB,QAAQ,CAAC,IAAI,EAAE,QAAQ;CAO1B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts b/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts new file mode 100644 index 0000000..6e5b7f5 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts @@ -0,0 +1,25 @@ +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { TemplateAction } from "./TemplateAction"; +export declare enum ThicknessDirection { + Center = 0, + Back = 1, + Front = 2 +} +export interface ThicknessActionData { + Direction: ThicknessDirection; + /** + * 附加的动作 + */ + Actions: TemplateAction[]; +} +/** + * 模版动作 + */ +export declare class TempateThicknessAction extends TemplateAction { + EntityDirectionMap: Map; + protected _Update(paramDiff: number, newValue: number): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TempateThicknessAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts.map b/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts.map new file mode 100644 index 0000000..ec5fb19 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TempateThicknessAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TempateThicknessAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TempateThicknessAction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,oBAAY,kBAAkB;IAE1B,MAAM,IAAI;IACV,IAAI,IAAI;IACR,KAAK,IAAI;CACZ;AAED,MAAM,WAAW,mBAAmB;IAGhC,SAAS,EAAE,kBAAkB,CAAC;IAC9B;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,qBACa,sBAAuB,SAAQ,cAAc;IAEtD,kBAAkB,EAAE,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAa;IACnE,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IA0BrD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAqBvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAe3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateAction.d.ts b/types/DatabaseServices/Template/Action/TemplateAction.d.ts new file mode 100644 index 0000000..9125ad2 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateAction.d.ts @@ -0,0 +1,21 @@ +import { CADFiler } from "../../CADFiler"; +import { TemplateParam } from "../Param/TemplateParam"; +/** + * 模版动作 + */ +export declare class TemplateAction { + Name: string; + /** 表达式应该只能依赖自身 */ + Expr: string; + Description: string; + parent: TemplateParam; + WriteAllObjectRecord(): void; + Update(paramDiff: number | string, newValue: number | string): void; + /** + * @重载 + */ + protected _Update(paramDiff: number | string, newValue: number | string): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateAction.d.ts.map b/types/DatabaseServices/Template/Action/TemplateAction.d.ts.map new file mode 100644 index 0000000..c469cd4 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TemplateAction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD;;GAEG;AACH,qBACa,cAAc;IAEX,IAAI,EAAE,MAAM,CAAQ;IAChC,kBAAkB;IACN,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,oBAAoB;IAKpB,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgB5D;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAQvE,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAWvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts b/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts new file mode 100644 index 0000000..4df801d --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts @@ -0,0 +1,14 @@ +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { TemplateAction } from "./TemplateAction"; +export declare class TemplateFilletAction extends TemplateAction { + FilletDatas: { + Entity: ObjectId; + ArcParams: number[]; + }[]; + constructor(); + protected _Update(paramDiff: number, newValue: number): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateFilletAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts.map b/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts.map new file mode 100644 index 0000000..c8808fc --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateFilletAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateFilletAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TemplateFilletAction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBACa,oBAAqB,SAAQ,cAAc;IAGpD,WAAW,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;KAAE,EAAE,CAAM;;IAO/D,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAwCrD,QAAQ,CAAC,IAAI,EAAE,QAAQ;IA8BvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAa3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts b/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts new file mode 100644 index 0000000..9a5f7e0 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts @@ -0,0 +1,14 @@ +import { Vector3 } from "three"; +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { TemplateAction } from "./TemplateAction"; +export declare class TemplateMoveAction extends TemplateAction { + StretchDirection: Vector3; + MoveEntitys: ObjectId[]; + constructor(StretchDirection?: Vector3, MoveEntitys?: ObjectId[]); + protected _CacheMoveVector: Vector3; + protected _Update(paramDiff: number): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateMoveAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts.map b/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts.map new file mode 100644 index 0000000..4514ad4 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateMoveAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateMoveAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TemplateMoveAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBACa,kBAAmB,SAAQ,cAAc;IAG/B,gBAAgB;IACxB,WAAW,EAAE,QAAQ,EAAE;gBADf,gBAAgB,UAAc,EACtC,WAAW,GAAE,QAAQ,EAAO;IAMvC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM;IAmBnC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAavB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts b/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts new file mode 100644 index 0000000..402a82d --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts @@ -0,0 +1,16 @@ +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { TemplateMoveAction } from "./TemplateMoveAction"; +/** + * Stretch夹点动作 + */ +export declare class TemplateStretchGripAction extends TemplateMoveAction { + EntityStretchPointMap: { + entity: ObjectId; + indexs: number[]; + }[]; + protected _Update(dist: number): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateStretchGripAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts.map b/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts.map new file mode 100644 index 0000000..d413182 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateStretchGripAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateStretchGripAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TemplateStretchGripAction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBACa,yBAA0B,SAAQ,kBAAkB;IAE7D,qBAAqB,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KACpB,EAAE,CAAM;IAET,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;IAe9B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAcvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAW3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts b/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts new file mode 100644 index 0000000..17eb885 --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts @@ -0,0 +1,29 @@ +import { Box3, Vector3 } from "three"; +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { TemplateMoveAction } from "./TemplateMoveAction"; +/** + * 拽拖比例盒子动作 + */ +export declare class TemplateStretchScaleBoxAction extends TemplateMoveAction { + StretchDirection: Vector3; + EntityStretchData: { + entity: ObjectId; + scaleBox: Box3; + }[]; + /** + * 正常不会直接修改下面的2个属性,如果真的需要修改,请调用 `this.WriteAllObjectRecord`; + * 避免历史记录没有记录更新. + */ + constructor(StretchDirection?: Vector3, EntityStretchData?: { + entity: ObjectId; + scaleBox: Box3; + }[]); + protected _Update(dist: number): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +/** + * 拽拖固定大小盒子动作(弃用) + */ +//# sourceMappingURL=TemplateStretchScaleBoxAction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts.map b/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts.map new file mode 100644 index 0000000..63cfc5f --- /dev/null +++ b/types/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateStretchScaleBoxAction.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Action/TemplateStretchScaleBoxAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBACa,6BAA8B,SAAQ,kBAAkB;IAOtD,gBAAgB,EAAE,OAAO;IACzB,iBAAiB,EAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;KAAE,EAAE;IANrE;;;MAGE;gBAES,gBAAgB,GAAE,OAAuB,EACzC,iBAAiB,GAAE;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;KAAE,EAAO;IAM1E,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM;IA8B9B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAevB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAY3B;AAED;;GAEG"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Param/TemplateParam.d.ts b/types/DatabaseServices/Template/Param/TemplateParam.d.ts new file mode 100644 index 0000000..164ec00 --- /dev/null +++ b/types/DatabaseServices/Template/Param/TemplateParam.d.ts @@ -0,0 +1,45 @@ +import { CADFiler } from "../../CADFiler"; +import { TemplateAction } from "../Action/TemplateAction"; +import { TemplateRecord } from "../TemplateRecord"; +import { TemplateParamType } from "./TemplateParamType"; +/** + * 模版参数 + */ +export declare class TemplateParam { + /** + * 变量名称 + * 命名规范(同js) 并且 禁止前缀`_`,`$`. + */ + name: string; + /** 表达式 使用js引起求值(暂时) */ + expr: string | number; + /** + * 设置参数的值,通常在模版设计中可以这么干 + * 如果需要更新参数的动作,那么应该调用 UpdateParam + */ + value: string | number; + default: string | number; + description: string; + type: TemplateParamType; + min: number; + max: number; + option: any[]; + actions: TemplateAction[]; + parent: TemplateRecord; + constructor(); + WriteAllObjectRecord(): void; + /** + * private:仅供内部调用. + * 更新参数值,并且触发动作. + */ + UpdateParam(value: string | number): void; + /** + * 计算表达式的值并更新 + * @param vardefines 变量定义列表 + * @param paramMap 所有的参数列表.(可能我们需要依赖更新它) + */ + EvalUpdate(vardefines: Object, paramMap: Map, evaled: Set, update?: boolean): number; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateParam.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Param/TemplateParam.d.ts.map b/types/DatabaseServices/Template/Param/TemplateParam.d.ts.map new file mode 100644 index 0000000..7df1842 --- /dev/null +++ b/types/DatabaseServices/Template/Param/TemplateParam.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateParam.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Param/TemplateParam.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBACa,aAAa;IAEtB;;;OAGG;IACS,IAAI,EAAE,MAAM,CAAC;IACzB,uBAAuB;IACX,IAAI,EAAE,MAAM,GAAG,MAAM,CAAM;IACvC;;;OAGG;IACS,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,iBAAiB,CAA2B;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;;IAwBnC,oBAAoB;IAMpB;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkClC;;;;OAIG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,UAAO,GAAG,MAAM;IAsDvH,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAkBvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAkB3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Param/TemplateParamType.d.ts b/types/DatabaseServices/Template/Param/TemplateParamType.d.ts new file mode 100644 index 0000000..4518123 --- /dev/null +++ b/types/DatabaseServices/Template/Param/TemplateParamType.d.ts @@ -0,0 +1,10 @@ +/** + * 模版参数类型 + */ +export declare enum TemplateParamType { + String = 0, + Float = 1, + Int = 2, + Enum = 3 +} +//# sourceMappingURL=TemplateParamType.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Param/TemplateParamType.d.ts.map b/types/DatabaseServices/Template/Param/TemplateParamType.d.ts.map new file mode 100644 index 0000000..643c87b --- /dev/null +++ b/types/DatabaseServices/Template/Param/TemplateParamType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateParamType.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Param/TemplateParamType.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,iBAAiB;IAEzB,MAAM,IAAA;IACN,KAAK,IAAA;IACL,GAAG,IAAA;IACH,IAAI,IAAA;CACP"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/Positioning.d.ts b/types/DatabaseServices/Template/Positioning/Positioning.d.ts new file mode 100644 index 0000000..14ee97a --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/Positioning.d.ts @@ -0,0 +1,26 @@ +import { Matrix4, Vector3 } from "three"; +import { CADFiler } from "../../CADFiler"; +import { ISerialize } from "../../ISerialize"; +import { ObjectId } from "../../ObjectId"; +import { TemplateRecord } from "../TemplateRecord"; +export interface PositioningParam { + objects?: ObjectId[]; + index?: number; + count?: number; +} +/** + * 模版定位信息(基类) + */ +export declare abstract class Positioning implements ISerialize { + SpaceCS: Matrix4; + SpaceSize: Vector3; + /** + * 定位 (更新 SpaceCS SpaceBox SpaceSize) + */ + Positioning(param?: PositioningParam): Promise; + parent: TemplateRecord; + WriteAllObjectRecord(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Positioning.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/Positioning.d.ts.map b/types/DatabaseServices/Template/Positioning/Positioning.d.ts.map new file mode 100644 index 0000000..4c743c0 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/Positioning.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Positioning.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Positioning/Positioning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAE7B,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD;;GAEG;AACH,8BACsB,WAAY,YAAW,UAAU;IAEnD,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,gBAAgB;IAK1C,MAAM,EAAE,cAAc,CAAC;IACvB,oBAAoB;IAMpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAK9B,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAIlC"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts b/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts new file mode 100644 index 0000000..5157ce7 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts @@ -0,0 +1,13 @@ +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { Positioning } from "./Positioning"; +export declare class PositioningBoardSpace extends Positioning { + ObjectId: ObjectId; + /** + * 定位 + */ + Positioning(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=PositioningBoardSpace.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts.map b/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts.map new file mode 100644 index 0000000..f9fd415 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningBoardSpace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PositioningBoardSpace.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Positioning/PositioningBoardSpace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBACa,qBAAsB,SAAQ,WAAW;IAEtC,QAAQ,EAAE,QAAQ,CAAC;IAC/B;;MAEE;IACI,WAAW;IAcjB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAM9B,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAOlC"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts b/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts new file mode 100644 index 0000000..5cb238e --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts @@ -0,0 +1,19 @@ +import { ClampSpaceParse } from "../../../Geometry/SpaceParse/ClampSpaceParse"; +import { ClampSpaceParseFix } from "../../../Geometry/SpaceParse/ClampSpaceParseFix"; +import { CADFiler } from "../../CADFiler"; +import { ObjectId } from "../../ObjectId"; +import { Positioning, PositioningParam } from "./Positioning"; +export declare class PositioningClampSpace extends Positioning { + Objects: ObjectId[]; + SelectBoxIndex: number[]; + SignalDist: number; + FromSpaceParse(parse: ClampSpaceParse): void; + _SpaceParse: ClampSpaceParseFix; + /** + * 定位 + */ + Positioning(param?: PositioningParam): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=PositioningClampSpace.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts.map b/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts.map new file mode 100644 index 0000000..caabe70 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningClampSpace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PositioningClampSpace.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Positioning/PositioningClampSpace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,qBACa,qBAAsB,SAAQ,WAAW;IAEtC,OAAO,EAAE,QAAQ,EAAE,CAAM;IAGzB,cAAc,EAAE,MAAM,EAAE,CAAa;IACrC,UAAU,SAAO;IAE7B,cAAc,CAAC,KAAK,EAAE,eAAe;IAQrC,WAAW,EAAE,kBAAkB,CAAC;IAChC;;MAEE;IACI,WAAW,CAAC,KAAK,CAAC,EAAE,gBAAgB;IAyB1C,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAgB9B,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;CAYlC"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts b/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts new file mode 100644 index 0000000..aa723b5 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts @@ -0,0 +1,8 @@ +import { Positioning } from "./Positioning"; +/** + * 临时定位 + * 在首次绘制时使用2点3点空间时通常不能使用定位,使用临时定位设置给模块后,模块在第一次使用后清空定位. + */ +export declare class PositioningTemporary extends Positioning { +} +//# sourceMappingURL=PositioningTemporary.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts.map b/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts.map new file mode 100644 index 0000000..0b11595 --- /dev/null +++ b/types/DatabaseServices/Template/Positioning/PositioningTemporary.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PositioningTemporary.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/Positioning/PositioningTemporary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;;GAGG;AACH,qBACa,oBAAqB,SAAQ,WAAW;CAGpD"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts new file mode 100644 index 0000000..b7f4e0a --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts @@ -0,0 +1,17 @@ +import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; +import { BehindBoardOption, IGrooveOption } from "../../../UI/Store/BoardInterface"; +import { TemplateBoardRecord } from "./TemplateBoard"; +import { CADFiler } from "../../CADFiler"; +/** + * 背板模板 + */ +export declare class TemplateBehindBoard extends TemplateBoardRecord { + protected _option: BehindBoardOption; + private grooveoption; + constructor(); + set Grooveoption(option: IGrooveOption); + GeneralBoardList(space: ISpaceParse): import("../../Entity/Board").Board[]; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateBehindBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts.map new file mode 100644 index 0000000..e2e22db --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateBehindBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateBehindBoard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBACa,mBAAoB,SAAQ,mBAAmB;IAExD,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAmC;IACvE,OAAO,CAAC,YAAY,CAKlB;;IAMF,IAAI,YAAY,CAAC,MAAM,EAAE,aAAa,EAIrC;IACD,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAInC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAoCvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CA2B3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts new file mode 100644 index 0000000..6db9a6f --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts @@ -0,0 +1,21 @@ +import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; +import { BoardConfigOption, BoardProcessOption } from "../../../UI/Store/BoardInterface"; +import { CADFiler } from "../../CADFiler"; +import { Board } from "../../Entity/Board"; +import { TemplateRecord } from "../TemplateRecord"; +/** + * 板件模板的基类.(层板,立板,背板) + */ +export declare class TemplateBoardRecord extends TemplateRecord { + UseBoardProcessOption: boolean; + BoardProcessOption: BoardProcessOption; + DrawBoardCount: number; + protected _option: BoardConfigOption; + get Option(): BoardConfigOption; + set Option(option: BoardConfigOption); + protected GeneralBoardList(space: ISpaceParse): Board[]; + protected Update(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts.map new file mode 100644 index 0000000..e4341a8 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateBoard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAGzF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,qBACa,mBAAoB,SAAQ,cAAc;IAGnD,qBAAqB,UAAS;IAC9B,kBAAkB,EAAE,kBAAkB,CAAC;IAE3B,cAAc,SAAK;IAE/B,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC;IAMrC,IAAI,MAAM,IAIS,iBAAiB,CADnC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAKnC;IACD,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,EAAE;cAIvC,MAAM;IA8DtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAMvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAM3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts new file mode 100644 index 0000000..34f9872 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts @@ -0,0 +1,13 @@ +import { ILatticeOption } from "../../../UI/Store/LatticeInterface"; +import { CADFiler } from "../../CADFiler"; +import { TemplateRecord } from "../TemplateRecord"; +export declare class TemplateLatticeRecord extends TemplateRecord { + private option; + constructor(); + get Option(): ILatticeOption; + set Option(option: ILatticeOption); + protected Update(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateLatticeRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts.map new file mode 100644 index 0000000..f724dfc --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateLatticeRecord.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateLatticeRecord.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBACa,qBAAsB,SAAQ,cAAc;IAErD,OAAO,CAAC,MAAM,CAA+C;;IAM7D,IAAI,MAAM,IAIS,cAAc,CADhC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,EAKhC;cAQe,MAAM;IAiDtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IA4BvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CA4B3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts new file mode 100644 index 0000000..bf7a0ee --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts @@ -0,0 +1,20 @@ +import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; +import { LayerBoardOption, LayerNailOption } from "../../../UI/Store/BoardInterface"; +import { TemplateBoardRecord } from "./TemplateBoard"; +import { CADFiler } from "../../CADFiler"; +import { Board } from "../../Entity/Board"; +/** + * 层板模板 + */ +export declare class TemplateLayerBoard extends TemplateBoardRecord { + constructor(); + protected _option: LayerBoardOption; + private _nailOption; + get NailOption(): LayerNailOption; + set NailOption(nailOpt: LayerNailOption); + GeneralBoardList(space: ISpaceParse): Board[]; + protected Update(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts.map new file mode 100644 index 0000000..c528868 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateLayerBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateLayerBoard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C;;GAEG;AACH,qBACa,kBAAmB,SAAQ,mBAAmB;;IAOvD,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAkC;IACrE,OAAO,CAAC,WAAW,CAA6C;IAChE,IAAI,UAAU,IAIU,eAAe,CADtC;IACD,IAAI,UAAU,CAAC,OAAO,EAAE,eAAe,EAItC;IAED,gBAAgB,CAAC,KAAK,EAAE,WAAW;cAInB,MAAM;IAiBtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IA+CvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAoC3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts new file mode 100644 index 0000000..eb57b73 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts @@ -0,0 +1,12 @@ +import { CADFiler } from "../../CADFiler"; +import { TemplateRecord } from "../TemplateRecord"; +/** + * 左右侧板模板 + */ +export declare class TemplateLeftRightBoardRecord extends TemplateRecord { + constructor(); + InitBaseParams(): this; + protected Update(): Promise; + ReadFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateLeftRightBoardRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts.map new file mode 100644 index 0000000..54679ee --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateLeftRightBoardRecord.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateLeftRightBoardRecord.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,qBACa,4BAA6B,SAAQ,cAAc;;IAO5D,cAAc;cAkBE,MAAM;IAsCtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;CAwB1B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts new file mode 100644 index 0000000..32f80aa --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts @@ -0,0 +1,5 @@ +import { TemplateRecord } from "../TemplateRecord"; +export declare class TemplateSizeBoard extends TemplateRecord { + protected Update(): Promise; +} +//# sourceMappingURL=TemplateSizeBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts.map new file mode 100644 index 0000000..caf24a7 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateSizeBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateSizeBoard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,qBACa,iBAAkB,SAAQ,cAAc;cAEjC,MAAM;CA6BzB"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts new file mode 100644 index 0000000..773d3b3 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts @@ -0,0 +1,21 @@ +import { BoardProcessOption, TBBoardOption } from "../../../UI/Store/BoardInterface"; +import { CADFiler } from "../../CADFiler"; +import { TemplateRecord } from "../TemplateRecord"; +/**顶底板模板 */ +export declare class TemplateTopBottomBoard extends TemplateRecord { + private _topOption; + private _bottomOption; + UseBoardProcessOption: boolean; + BoardProcessOption: BoardProcessOption; + DrawCounts: [number, number, number]; + constructor(); + get TopOption(): TBBoardOption; + set TopOption(option: TBBoardOption); + get BottomOption(): TBBoardOption; + set BottomOption(option: TBBoardOption); + protected Update(): Promise; + private SetBoardProcess; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateTopBottomBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts.map new file mode 100644 index 0000000..1181aaa --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateTopBottomBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateTopBottomBoard.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAA4B,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAG/G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,WAAW;AACX,qBACa,sBAAuB,SAAQ,cAAc;IAEtD,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,aAAa,CAAkD;IACvE,qBAAqB,UAAS;IAC9B,kBAAkB,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAa;;IAM7D,IAAI,SAAS,IAIS,aAAa,CADlC;IACD,IAAI,SAAS,CAAC,MAAM,EAAE,aAAa,EAKlC;IACD,IAAI,YAAY,IAIS,aAAa,CADrC;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,aAAa,EAIrC;cAQe,MAAM;IA4FtB,OAAO,CAAC,eAAe;IAavB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IA0CvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAuC3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts new file mode 100644 index 0000000..9caa2d6 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts @@ -0,0 +1,15 @@ +import { ISpaceParse } from "../../../Geometry/SpaceParse/ISpaceParse"; +import { VerticalBoardOption } from "../../../UI/Store/BoardInterface"; +import { TemplateBoardRecord } from "./TemplateBoard"; +import { CADFiler } from "../../CADFiler"; +/** + * 立板模板 + */ +export declare class TemplateVerticalBoard extends TemplateBoardRecord { + constructor(); + protected _option: VerticalBoardOption; + GeneralBoardList(space: ISpaceParse): import("../../Entity/Board").Board[]; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateVerticalBoard.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts.map new file mode 100644 index 0000000..22e9beb --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateVerticalBoard.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateVerticalBoard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBACa,qBAAsB,SAAQ,mBAAmB;;IAO1D,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAqC;IAC3E,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAInC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IA+BvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAqB3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts new file mode 100644 index 0000000..272ec04 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts @@ -0,0 +1,10 @@ +import { CADFiler } from "../../CADFiler"; +import { TemplateRecord } from "../TemplateRecord"; +export declare class TemplateVisualSpace extends TemplateRecord { + IsVisible: boolean; + constructor(); + protected Update(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateVisualSpace.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts.map new file mode 100644 index 0000000..e412102 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateVisualSpace.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateVisualSpace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,qBACa,mBAAoB,SAAQ,cAAc;IAEvC,SAAS,UAAQ;;cAOb,MAAM;IAiCtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAOvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAY3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts b/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts new file mode 100644 index 0000000..43daa4d --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts @@ -0,0 +1,13 @@ +import { IWineRackOption } from "../../../UI/Store/WineRackInterface"; +import { CADFiler } from "../../CADFiler"; +import { TemplateRecord } from "../TemplateRecord"; +export declare class TemplateWineRackRecord extends TemplateRecord { + private option; + constructor(); + get Option(): IWineRackOption; + set Option(option: IWineRackOption); + protected Update(): Promise; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateWineRackRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts.map b/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts.map new file mode 100644 index 0000000..e90f661 --- /dev/null +++ b/types/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateWineRackRecord.d.ts","sourceRoot":"","sources":["../../../../../src/DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiB,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAErF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,qBACa,sBAAuB,SAAQ,cAAc;IAEtD,OAAO,CAAC,MAAM,CAAiD;;IAM/D,IAAI,MAAM,IAIS,eAAe,CADjC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,EAKjC;cACe,MAAM;IAgDtB,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAqCvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAmC3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/TempateUtils.d.ts b/types/DatabaseServices/Template/TempateUtils.d.ts new file mode 100644 index 0000000..b03a3ae --- /dev/null +++ b/types/DatabaseServices/Template/TempateUtils.d.ts @@ -0,0 +1,114 @@ +import { Vector3 } from "three"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { INeedUpdateParams } from "../../UI/Components/Template/TemplateComponent"; +import { Board } from "../Entity/Board"; +import { Entity } from './../Entity/Entity'; +import { TemplateAction } from "./Action/TemplateAction"; +import { TemplateFilletAction } from "./Action/TemplateFilletAction"; +import { TemplateRecord } from "./TemplateRecord"; +/** + * 得到最深处的模块节点 + */ +export declare function GetDeepestTemplate(brs: Entity[]): TemplateRecord | undefined; +/** + * 获得模块的尺寸 + */ +export declare function GetTempateSize(template: TemplateRecord): Vector3; +export declare function GetTempateBoards(template: TemplateRecord): Board[]; +export declare function GetTempateEntitys(template: TemplateRecord): Entity[]; +/** + * 初始化模块 + * + * 如果所有板件都在同一个模块, 那么传回原先的模块(或生成新模块) + * 如果所有板件都不在模块中,那么生成新模块. + * 如果板件在不同的模块中,那么询问用户是否生成新模块. + * + * @param ents 板件列表 + * @returns 模块记录 + */ +export declare function InitTemplate(ents: Entity[]): Promise; +/** + * 使用板件更新模块的尺寸 + */ +export declare function UpdateTemplateSizeOffBoards(template: TemplateRecord): void; +/** + * 设置模块坐标系 + * + * 通常需要调用一下`UpdateTemplateSizeOffBoards` + */ +export declare function SetTempateCoordinate(template: TemplateRecord): Promise; +/** + * 初始化模块的大小动作 + * + * 应该已经传入正确的模块大小 + * 应该先判断是否存在动作,如果有,则清空它. + * @param template + * @param [useScaleBox=true] 使用比例盒子拉伸动作?如果`=false`则使用夹点拉伸动作. + */ +export declare function InitTempateSizeActions(template: TemplateRecord, useScaleBox?: boolean): void; +/** + * 初始化模块的板厚动作 + * + * 如果已经存在动作,则会清空旧的动作. + * @param template + * @param [autoCalculate=true] 自动计算板厚的变化方向,如果为否则交给用户选择 + */ +export declare function InitTempateBoardThicknessActions(template: TemplateRecord, autoCalculate?: boolean): Promise; +/** + * 对指定的板厚动作方向进行修改 + * + * 大量抄自动初始化板厚动作的代码 + */ +export declare function UpdateTempateBoardThicknessAction(template: TemplateRecord): Promise; +/** + * 增加拉伸动作 + * + * 返回动作,并不会直接加入到模块中,可以设置完动作属性在加入 + * @param [useScaleBox=false] 使用比例盒子,否则使用夹点拽拖 + */ +export declare function AddStretchAction(template: TemplateRecord, useScaleBox?: boolean): Promise; +/** + * 增加倒角动作 + * + * 动作不会直接加到模块中,需要修改动作的参数后在加入 + * @param template + * @returns + */ +export declare function AddFilletAction(template: TemplateRecord): Promise; +/** + * 上传模块 + * @param template 模块 + * @param directoryId 目录id + * @returns 成功? + */ +export declare function UploadTemplate(template: TemplateRecord, directoryId: string): Promise; +/** + * 上传更新模块 + * @param template 模块 + * @param templateId 模块的id + * @returns 成功? + */ +export declare function UploadUpdateTemplate(template: TemplateRecord, templateId: string): Promise; +/** + * 删除模块节点,同时会删除其子节点 + */ +export declare function DeleteTempate(template: TemplateRecord): void; +export declare function CheckTempalteParamName(name: string, nameSet: Set): boolean; +export declare function GetOnlineTemplate(tid: string, props?: INeedUpdateParams[]): Promise; +export declare function EditorOnlineTemplate(template: TemplateRecord, module_id: string, isCheck: boolean): Promise; +/**仅移除模块节点 */ +export declare function RemoveTemplate(temp: TemplateRecord): void; +/** + * 模块替换 + * @param oldTemp + * @param newTemp + * @param [reSelectSpace=true] + * @param [extendExpr=true] 继承被替换模块的表达式,默认总是继承,仅当我们拾取空间到虚拟空间时,不继承变量,因为我们需要使用全新变量. + */ +export declare function ReplaceTemplate(oldTemp: TemplateRecord, newTemp: TemplateRecord, reSelectSpace?: boolean, extendExpr?: boolean): Promise; +/** + * 删除当前模块节点 + */ +export declare function DeleteCurrentTempate(template: TemplateRecord): void; +export declare function SetTemplatePositionAndSetParent(spaceParse: ISpaceParse, template: TemplateRecord, isAddDeepNode?: boolean): Promise; +//# sourceMappingURL=TempateUtils.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/TempateUtils.d.ts.map b/types/DatabaseServices/Template/TempateUtils.d.ts.map new file mode 100644 index 0000000..c7273d5 --- /dev/null +++ b/types/DatabaseServices/Template/TempateUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TempateUtils.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Template/TempateUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateRecord.d.ts b/types/DatabaseServices/Template/TemplateRecord.d.ts new file mode 100644 index 0000000..acf30b6 --- /dev/null +++ b/types/DatabaseServices/Template/TemplateRecord.d.ts @@ -0,0 +1,151 @@ +import { Matrix4, Vector3 } from "three"; +import { ISpaceParse } from "../../Geometry/SpaceParse/ISpaceParse"; +import { CADFiler } from "../CADFiler"; +import { Board } from "../Entity/Board"; +import { Entity } from "../Entity/Entity"; +import { ObjectId } from "../ObjectId"; +import { SymbolTableRecord } from "../SymbolTableRecord"; +import { TemplateParam } from "./Param/TemplateParam"; +import { Positioning } from "./Positioning/Positioning"; +import { TemplateSplitType, TemplateType } from "./TemplateType"; +export declare const TempateDefaultParamCount: number; +/** + * ### 模板记录 + * 模版与实体总是互相关联的,所以添加实体进入模版的时候,应该保证这个记录已经加入到数据库 + * + * 保留参数名称列表: L W H RX RY RZ X Y Z + * 保留参数前缀: _ $ + * + * #### 批量修改参数值. + * 程序应该只传入expr的值,(禁止直接编辑value).传入后,交由模版进行计算更新. + * 模版内部消化,决定是否保留expr.(当纯数字将被直接计算成value而不保存expr). + * + * 由于`DIV`变量的计算机制,`LWH`变量将不能依赖同层变量,(这可能会导致一些错误) + * + * 当模块节点处于切割空间内时,如果想重新绑定空间,那么空间树的位置将发生变更(实际上不管是不是在切割空间内,空间位置都可能发生变更) + * + */ +export declare class TemplateRecord extends SymbolTableRecord { + Type: TemplateType; + SplitType: TemplateSplitType; + private _Parent; + Children: ObjectId[]; + Params: TemplateParam[]; + Objects: ObjectId[]; + private _Positioning; + constructor(); + get Name(): string; + set Name(name: string); + get Parent(): ObjectId; + set Parent(id: ObjectId); + get Root(): TemplateRecord; + get Entitys(): Entity[]; + get AllEntitys(): Entity[]; + Purge(): void; + Traverse(callback: (arg0: this) => void): void; + TraverseAsync(callback: (arg0: this) => Promise): Promise; + private _NodeDepthCache; + /** 节点深度,根节点=0 */ + get NodeDepth(): number; + /** 模版定位 */ + get Positioning(): Positioning; + /** + * 当存在夹层空间定位时,辅助定位表达式将使用夹层空间作为相对空间. + */ + set Positioning(p: Positioning); + /** 初始化基础参数 */ + InitBaseParams(): this; + get LParam(): TemplateParam; + get WParam(): TemplateParam; + get HParam(): TemplateParam; + get PXParam(): TemplateParam; + get PYParam(): TemplateParam; + get PZParam(): TemplateParam; + get RXParam(): TemplateParam; + get RYParam(): TemplateParam; + get RZParam(): TemplateParam; + GetParam(paramName: string): TemplateParam | undefined; + SetParamExpr(paramName: string, expr: string | number): void; + DeleteParam(paramName: string): this; + /** + * 通常UI操作的时候,都需要更新整个树,所以隐藏这个API. + * see `UpdateTemplateTree` + * + * 更新当前节点 + * + * ### 定位 (大小,方位) + * + * - (放弃)如果当前节点是更新树的最高层(但当前节点不是根节点) + * 那么当存在夹层空间定位的时候,可以不重复进行夹层空间定位,因为此时该空间不会发生变化. + * 补充:如果夹层空间的板件都在上层,那么可以做这个优化,如果定位的板件没在模块中,那么不能进行这个优化. + * + * - [更新优先]在没有实现变量依赖收集(类似mobx)时,我们认为`positioning`的优先级最高. + * 所以`positioning`会被优先更新. `LWH`,`XYZ`. + * + * - 在使用变量定位时,需要传入上层的坐标系,以便进行相对定位. + * 使用空间分析时,已经不需要上层坐标系. + * + * - 辅助定位:帮助空间坐标系进行旋转 + * 辅助定位的参数变量将暴露出来.{RX RY RZ} + * 辅助定位作为参数变量时,用户使用值时很难正确的计算值,应~加入交互选择.(辅助计算) + * + * ### 变量表达式计算 + * + * - `LWH`将被`positioning`替代,但变量定义仍然正常存在. + * + * - 变量大部分时候都是被批量更新,(同时传入许多参数). + * + */ + protected Update(): Promise; + /** + * 使用PXPYPZ更新空间位置 + */ + private UpdatePosition; + /** + * 旋转空间定位,如果旋转成功,那么SpaceSize和SpaceCS都可能被更新 + */ + private RotateSpaceCS; + /** 以广度搜索优先更新节点树 */ + UpdateTemplateTree(): any; + /** 缓存本节点的变量定义值,当子层需要本层的参数时,可以直接获取 */ + protected _CacheParamVars: any; + protected _CacheSpaceCS: Matrix4; + protected _CacheSpaceSize: Vector3; + protected _CatchRootParam: Set; + /** + * 本节点可用的所有变量定义.(包括变量继承) + * @param [useCache=true] 当更新当前节点的时候,我们不希望使用缓存,(因为父节点的参数可能已经被更新) + * @returns + */ + GetParameterDefinition(useCache?: boolean): any; + /** + * 变量继承 + * - 每继承一层,前缀增加一个`_` + * - 顶层前缀`$` + * + * @returns 继承于父空间的变量定义列表 + */ + private GetParentParams; + get SpaceParse(): ISpaceParse; + /** + * 获得当前的模版空间的相对坐标系 + * - 存在父节点的时候使用父节点的模版空间坐标系 + * - 不存在父节点的时候使用自身的模版空间坐标系 + * + * - 空间坐标系将被定位更新 + * + * @param [useCache=true] 当更新当前节点的时候,我们不希望使用缓存,(因为父节点的参数可能已经被更新) + */ + private GetTemplateSpaceCS; + /** + * 获得当前模块的实际位置坐标系. + * 使用 GetTemplateSpaceCS 可能会得到不准确的位置.(得到Parent或者已经缓存的位置) + */ + GetTemplateRealitySpaceCS(): Matrix4; + get NeedUpdateParent(): boolean; + protected get PositioningSupportBoards(): Board[]; + protected _Version: number; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=TemplateRecord.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateRecord.d.ts.map b/types/DatabaseServices/Template/TemplateRecord.d.ts.map new file mode 100644 index 0000000..71b4305 --- /dev/null +++ b/types/DatabaseServices/Template/TemplateRecord.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateRecord.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Template/TemplateRecord.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateTable.d.ts b/types/DatabaseServices/Template/TemplateTable.d.ts new file mode 100644 index 0000000..abfe0f5 --- /dev/null +++ b/types/DatabaseServices/Template/TemplateTable.d.ts @@ -0,0 +1,8 @@ +import { ObjectCollection } from "../ObjectCollection"; +import { TemplateRecord } from "./TemplateRecord"; +import { Status } from "../../Common/Status"; +export declare class TemplateTable extends ObjectCollection { + Append(object: TemplateRecord, isCheckObjectCleanly?: boolean): import("../ObjectId").ObjectId; + Add(record: TemplateRecord, isCheckObjectCleanly?: boolean): Status; +} +//# sourceMappingURL=TemplateTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateTable.d.ts.map b/types/DatabaseServices/Template/TemplateTable.d.ts.map new file mode 100644 index 0000000..49cd8bd --- /dev/null +++ b/types/DatabaseServices/Template/TemplateTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateTable.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Template/TemplateTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBACa,aAAc,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IAE/D,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,oBAAoB,UAAO;IAU1D,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,oBAAoB,UAAO,GAAG,MAAM;CAQnE"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateTest.d.ts b/types/DatabaseServices/Template/TemplateTest.d.ts new file mode 100644 index 0000000..81a3ede --- /dev/null +++ b/types/DatabaseServices/Template/TemplateTest.d.ts @@ -0,0 +1,35 @@ +import { Command } from "../../Editor/CommandMachine"; +import { TemplateRecord } from "./TemplateRecord"; +export declare function SelectTempate(msg?: string, filterFunction?: (t: TemplateRecord) => boolean): Promise; +export declare class AddTemplateAction { + exec(): Promise; +} +export declare class TemplateAddParam { + exec(): Promise; +} +export declare class TemplateSetCoordinate { + exec(): Promise; +} +export declare class AutoTempateSizeAction { + exec(): Promise; +} +export declare class UpdateTemplate { + exec(): Promise; +} +export declare class UpdateParam2 { + timer: any; + exec(): Promise; +} +export declare class TemplateAttach { + exec(): Promise; +} +export declare class TemplateAttach2 { + exec(): Promise; +} +export declare class TemplateArray { + exec(): Promise; +} +export declare class Command_ShowTemplatePositionBoards implements Command { + exec(): Promise; +} +//# sourceMappingURL=TemplateTest.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateTest.d.ts.map b/types/DatabaseServices/Template/TemplateTest.d.ts.map new file mode 100644 index 0000000..a2d7b61 --- /dev/null +++ b/types/DatabaseServices/Template/TemplateTest.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateTest.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Template/TemplateTest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAkB,MAAM,6BAA6B,CAAC;AAWtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,wBAAsB,aAAa,CAAC,GAAG,SAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAyB3H;AAED,qBAAa,iBAAiB;IAEpB,IAAI;CAsEb;AAED,qBAAa,gBAAgB;IAEnB,IAAI;CAgBb;AAED,qBAAa,qBAAqB;IAExB,IAAI;CAOb;AAED,qBAAa,qBAAqB;IAExB,IAAI;CAiCb;AAID,qBAAa,cAAc;IAEjB,IAAI;CAiCb;AAqCD,qBAAa,YAAY;IAErB,KAAK,MAAC;IACA,IAAI;CA4Cb;AAED,qBAAa,cAAc;IAEjB,IAAI;CAkBb;AAGD,qBAAa,eAAe;IAElB,IAAI;CA2Cb;AAED,qBAAa,aAAa;IAEhB,IAAI;CAyEb;AAED,qBAAa,kCAAmC,YAAW,OAAO;IAExD,IAAI;CAiBb"} \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateType.d.ts b/types/DatabaseServices/Template/TemplateType.d.ts new file mode 100644 index 0000000..b219e3b --- /dev/null +++ b/types/DatabaseServices/Template/TemplateType.d.ts @@ -0,0 +1,15 @@ +/** + * 模版类型 + */ +export declare enum TemplateType { + Usual = 0, + Grid = 1, + Array = 2 +} +export declare enum TemplateSplitType { + None = -1, + X = 0, + Y = 1, + Z = 2 +} +//# sourceMappingURL=TemplateType.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Template/TemplateType.d.ts.map b/types/DatabaseServices/Template/TemplateType.d.ts.map new file mode 100644 index 0000000..7e308bc --- /dev/null +++ b/types/DatabaseServices/Template/TemplateType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateType.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Template/TemplateType.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,YAAY;IAGpB,KAAK,IAAA;IAEL,IAAI,IAAA;IAEJ,KAAK,IAAA;CACR;AAED,oBAAY,iBAAiB;IAEzB,IAAI,KAAK;IACT,CAAC,IAAI;IACL,CAAC,IAAI;IACL,CAAC,IAAI;CACR"} \ No newline at end of file diff --git a/types/DatabaseServices/Text/FontExt.d.ts b/types/DatabaseServices/Text/FontExt.d.ts new file mode 100644 index 0000000..45ad474 --- /dev/null +++ b/types/DatabaseServices/Text/FontExt.d.ts @@ -0,0 +1,5 @@ +import { Font } from "three"; +export declare class FontExt extends Font { + generateShapes(text: string, size: number): any[]; +} +//# sourceMappingURL=FontExt.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Text/FontExt.d.ts.map b/types/DatabaseServices/Text/FontExt.d.ts.map new file mode 100644 index 0000000..e113e90 --- /dev/null +++ b/types/DatabaseServices/Text/FontExt.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FontExt.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Text/FontExt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,OAAO,CAAC;AAIxC,qBAAa,OAAQ,SAAQ,IAAI;IAE7B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAW5C"} \ No newline at end of file diff --git a/types/DatabaseServices/Text/FontLoader.d.ts b/types/DatabaseServices/Text/FontLoader.d.ts new file mode 100644 index 0000000..efb08c5 --- /dev/null +++ b/types/DatabaseServices/Text/FontLoader.d.ts @@ -0,0 +1,33 @@ +import { FontExt } from "./FontExt"; +/** + * 字体加载器 + * # Example: + ``` + let l = FontLoader.GetLoader("宋体");//得到某个字体的加载器 + l.LoadGlyphs(""); //这行代码同时初始化了字体. + await l.AwaitLoaded(); //等待载入完成 + let ft = l.Font; //得到字体 + ``` + */ +export declare class FontLoader { + FontName: string; + Font: FontExt; + private constructor(); + /** + * 得到某个字体的加载器 + * @param fontName 字体名称 + * @returns 字体加载器 + */ + static GetLoader(fontName: string): FontLoader; + LoadGlyphs(str: string): Promise; + private waitsFunction; + AwaitLoaded(): Promise; + /** + * 初始化加载器 + */ + private Init; + private m_LoadIng; + private m_LoadQueue; + private LoodLoop; +} +//# sourceMappingURL=FontLoader.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Text/FontLoader.d.ts.map b/types/DatabaseServices/Text/FontLoader.d.ts.map new file mode 100644 index 0000000..6993449 --- /dev/null +++ b/types/DatabaseServices/Text/FontLoader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FontLoader.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Text/FontLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC;;;;;;;;;GASG;AACH,qBAAa,UAAU;IAGQ,QAAQ,EAAE,MAAM;IAD3C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO;IAIP;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM;IAW3B,UAAU,CAAC,GAAG,EAAE,MAAM;IAM5B,OAAO,CAAC,aAAa,CAAM;IAErB,WAAW;IAWjB;;OAEG;YACW,IAAI;IAOlB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAgB;YACrB,QAAQ;CAgBzB"} \ No newline at end of file diff --git a/types/DatabaseServices/Text/Text.d.ts b/types/DatabaseServices/Text/Text.d.ts new file mode 100644 index 0000000..ad2f0bc --- /dev/null +++ b/types/DatabaseServices/Text/Text.d.ts @@ -0,0 +1,52 @@ +import { Object3D, Vector3, Matrix4, Box3 } from 'three'; +import { RenderType } from '../../GraphicsSystem/RenderType'; +import { CADFiler } from '../CADFiler'; +import { Entity } from '../Entity/Entity'; +export declare enum TextAligen { + LeftTop = 3, + Top = 1, + RightTop = 5, + LeftMid = 2, + Mid = 0, + RightMid = 4, + LeftDown = 10, + Down = 8, + RightDown = 12 +} +export declare function DisposeTextShapeCache(): void; +/** + * 单行文字实体 + */ +export declare class Text extends Entity { + private _TextString; + _FontName: string; + private _Height; + private _TextRotation; + protected OnlyRenderType: boolean; + private _Align; + private box; + constructor(pos?: Vector3, _TextString?: string, _FontName?: string, _Height?: number, _TextRotation?: number); + get TextRotation(): number; + set TextRotation(v: number); + get TextString(): string; + set TextString(str: string); + set TextAligen(al: TextAligen); + get Height(): number; + set Height(v: number); + AsyncUpdateDrawObject(obj: Object3D, renderType: RenderType): Promise; + /**大概宽度 */ + get Width(): number; + get BoundingBox(): Box3; + UpdateTranslate(): void; + protected ApplyScaleMatrix(m: Matrix4): this; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(renderType: RenderType, en: Object3D): void; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + MoveStretchPoints(indexList: Array, vec: Vector3): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Text.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Text/Text.d.ts.map b/types/DatabaseServices/Text/Text.d.ts.map new file mode 100644 index 0000000..4026dd8 --- /dev/null +++ b/types/DatabaseServices/Text/Text.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Text/Text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,OAAO,EAAE,OAAO,EAA8B,IAAI,EAAE,MAAM,OAAO,CAAC;AAIhG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,oBAAY,UAAU;IAElB,OAAO,IAAI;IAAE,GAAG,IAAI;IAAE,QAAQ,IAAI;IAClC,OAAO,IAAI;IAAE,GAAG,IAAI;IAAE,QAAQ,IAAI;IAClC,QAAQ,KAAK;IAAE,IAAI,IAAI;IAAE,SAAS,KAAK;CAC1C;AAGD,wBAAgB,qBAAqB,SAKpC;AAED;;GAEG;AACH,qBACa,IAAK,SAAQ,MAAM;IAOxB,OAAO,CAAC,WAAW;IACZ,SAAS,EAAE,MAAM;IACxB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;IARzB,SAAS,CAAC,cAAc,UAAQ;IAEhC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,GAAG,CAAO;gBACN,GAAG,CAAC,EAAE,OAAO,EACb,WAAW,GAAE,MAAW,EACzB,SAAS,GAAE,MAAiB,EAC3B,OAAO,GAAE,MAAW,EACpB,aAAa,GAAE,MAAU;IAOrC,IAAI,YAAY,IAII,MAAM,CADzB;IACD,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,EAOzB;IACD,IAAI,UAAU,IAIM,MAAM,CADzB;IACD,IAAI,UAAU,CAAC,GAAG,EAAE,MAAM,EAQzB;IAED,IAAI,UAAU,CAAC,EAAE,EAAE,UAAU,EAI5B;IAED,IAAI,MAAM,IAII,MAAM,CADnB;IACD,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM,EAKnB;IAEK,qBAAqB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU;IAoCjE,UAAU;IACV,IAAI,KAAK,WAIR;IACD,IAAI,WAAW,SAUd;IAED,eAAe;IAkCf,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAW5C,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAMvE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAIhD,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ;IAS7D,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAI/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAYhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAQxD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAWlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAW3B"} \ No newline at end of file diff --git a/types/DatabaseServices/Text/TextArea.d.ts b/types/DatabaseServices/Text/TextArea.d.ts new file mode 100644 index 0000000..d1a3119 --- /dev/null +++ b/types/DatabaseServices/Text/TextArea.d.ts @@ -0,0 +1,32 @@ +import { Vector3 } from 'three'; +import { Singleton } from '../../Common/Singleton'; +import { Text } from './Text'; +export declare class TextArea extends Singleton { + private m_AreaContiner; + private m_EditorElList; + private m_TextHeight; + private m_TextPosition; + private m_TextRotation; + private m_CurrentValue; + private m_EditoringObject; + constructor(); + StartDrawText(position: Vector3, height: number, rotate: number, str: string): void; + StartEditorText(textObj: any, editorPosition?: Vector3): void; + WorldToScreenHeight(h: number): number; + CreateEditorArea(position?: Vector3): void; + get TextareaHeight(): number; + get ScreenPostion(): Vector3; + RegisterEvent(): void; + ClearEvent(): void; + OnKeyDown: (e: KeyboardEvent) => void; + OnClick: (e: MouseEvent) => void; + OnBlur: (e: Event) => Promise; + /** + *清除监听事件,将编辑的内容构建文字对象,更新视图,移除编辑框Dom + */ + EndEditor(): Promise; + EndEditorEvent(text: Text): void; + private waitPromis; + Wait(): Promise; +} +//# sourceMappingURL=TextArea.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Text/TextArea.d.ts.map b/types/DatabaseServices/Text/TextArea.d.ts.map new file mode 100644 index 0000000..106b63a --- /dev/null +++ b/types/DatabaseServices/Text/TextArea.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Text/TextArea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,QAAS,SAAQ,SAAS;IAEnC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,cAAc,CAA2C;IAEjE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,iBAAiB,CAAW;;IAepC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAU5E,eAAe,CAAC,OAAO,KAAA,EAAE,cAAc,CAAC,EAAE,OAAO;IAmBjD,mBAAmB,CAAC,CAAC,EAAE,MAAM;IAM7B,gBAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO;IAgCnC,IAAI,cAAc,WAGjB;IACD,IAAI,aAAa,YAGhB;IACD,aAAa;IAOb,UAAU;IAMV,SAAS,MAAO,aAAa,UAW3B;IACF,OAAO,MAAO,UAAU,UAatB;IACF,MAAM,MAAa,KAAK,mBA0BtB;IAEF;;OAEG;IACG,SAAS;IA+Bf,cAAc,CAAC,IAAI,EAAE,IAAI;IACzB,OAAO,CAAC,UAAU,CAAkB;IAC9B,IAAI;CAQb"} \ No newline at end of file diff --git a/types/DatabaseServices/Texture.d.ts b/types/DatabaseServices/Texture.d.ts new file mode 100644 index 0000000..e4b9b7c --- /dev/null +++ b/types/DatabaseServices/Texture.d.ts @@ -0,0 +1,26 @@ +import { Texture, Wrapping } from 'three'; +import { CADFiler } from './CADFiler'; +import { SymbolTableRecord } from './SymbolTableRecord'; +/** + * 数据化的贴图类.实现了序列化. + */ +export declare class TextureTableRecord extends SymbolTableRecord { + private wrapS; + private wrapT; + repeatX: number; + repeatY: number; + rotation: number; + imageUrl: string; + set WrapS(wrap: Wrapping); + get WrapS(): Wrapping; + get WrapT(): Wrapping; + set WrapT(wrap: Wrapping); + private texture; + Update(): Promise; + private waits; + WaitUpdate(): Promise; + GetThreeTexture(): Texture; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=Texture.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Texture.d.ts.map b/types/DatabaseServices/Texture.d.ts.map new file mode 100644 index 0000000..81a6685 --- /dev/null +++ b/types/DatabaseServices/Texture.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Texture.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Texture.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIlE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBACa,kBAAmB,SAAQ,iBAAiB;IAErD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,EAAE,MAAM,CAAK;IACpB,OAAO,EAAE,MAAM,CAAK;IACpB,QAAQ,EAAE,MAAM,CAAK;IACrB,QAAQ,EAAE,MAAM,CAAM;IAEtB,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,EAOvB;IACD,IAAI,KAAK,IARO,QAAQ,CAQU;IAClC,IAAI,KAAK,IAEO,QAAQ,CAFU;IAElC,IAAI,KAAK,CAAC,IAAI,EAAE,QAAQ,EAOvB;IAGD,OAAO,CAAC,OAAO,CAA0B;IACnC,MAAM;IA4BZ,OAAO,CAAC,KAAK,CAAkB;IACzB,UAAU;IAShB,eAAe;IAMf,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAavB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAa3B"} \ No newline at end of file diff --git a/types/DatabaseServices/TextureTable.d.ts b/types/DatabaseServices/TextureTable.d.ts new file mode 100644 index 0000000..c030e92 --- /dev/null +++ b/types/DatabaseServices/TextureTable.d.ts @@ -0,0 +1,7 @@ +import { SymbolTable } from "./SymbolTable"; +import { TextureTableRecord } from "./Texture"; +export declare class TextureTable extends SymbolTable { + AllocateName(): string; + get Textures(): Map; +} +//# sourceMappingURL=TextureTable.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/TextureTable.d.ts.map b/types/DatabaseServices/TextureTable.d.ts.map new file mode 100644 index 0000000..09d6905 --- /dev/null +++ b/types/DatabaseServices/TextureTable.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextureTable.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/TextureTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,qBACa,YAAa,SAAQ,WAAW;IAEzC,YAAY;IASZ,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAG9C;CACJ"} \ No newline at end of file diff --git a/types/DatabaseServices/Transaction.d.ts b/types/DatabaseServices/Transaction.d.ts new file mode 100644 index 0000000..fe11d5d --- /dev/null +++ b/types/DatabaseServices/Transaction.d.ts @@ -0,0 +1,19 @@ +import { Database } from "./Database"; +/** + * 事务 + */ +export declare class Transaction { + m_Db: Database; + constructor(_db: Database); + /** + * 终止事务的事务堆栈顶部。这终止导致立即回滚该事务开始以后做的所有更改。回滚应用于所有transaction-resident对象在所有事务。 + * + * @memberof Transaction + */ + Abort(): void; + AddNewlyCreatedDBObject(): void; + Commit(): void; + GetAllObjects(): void; + GetObject(): void; +} +//# sourceMappingURL=Transaction.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/Transaction.d.ts.map b/types/DatabaseServices/Transaction.d.ts.map new file mode 100644 index 0000000..08bcd2c --- /dev/null +++ b/types/DatabaseServices/Transaction.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,qBAAa,WAAW;IAEpB,IAAI,EAAE,QAAQ,CAAC;gBACH,GAAG,EAAE,QAAQ;IAIzB;;;;OAIG;IACH,KAAK;IAIL,uBAAuB;IAGvB,MAAM;IAGN,aAAa;IAGb,SAAS;CAIZ"} \ No newline at end of file diff --git a/types/DatabaseServices/TransactionManager.d.ts b/types/DatabaseServices/TransactionManager.d.ts new file mode 100644 index 0000000..3b464be --- /dev/null +++ b/types/DatabaseServices/TransactionManager.d.ts @@ -0,0 +1,7 @@ +/** + * 事务管理 + */ +declare class TransactionManager { + constructor(); +} +//# sourceMappingURL=TransactionManager.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/TransactionManager.d.ts.map b/types/DatabaseServices/TransactionManager.d.ts.map new file mode 100644 index 0000000..6f8a960 --- /dev/null +++ b/types/DatabaseServices/TransactionManager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TransactionManager.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/TransactionManager.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,cAAM,kBAAkB;;CAMvB"} \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity.d.ts b/types/DatabaseServices/ViewportEntity.d.ts new file mode 100644 index 0000000..e30f800 --- /dev/null +++ b/types/DatabaseServices/ViewportEntity.d.ts @@ -0,0 +1,67 @@ +import { Box3, BufferGeometry, Group, Material, Matrix3, MeshBasicMaterial, Object3D, Scene, Vector3 } from "three"; +import { ObjectSnapMode } from "../Editor/ObjectSnapMode"; +import { CameraUpdate } from "../GraphicsSystem/CameraUpdate"; +import { RenderType } from "../GraphicsSystem/RenderType"; +import { CADFiler } from "./CADFiler"; +import { Entity } from "./Entity/Entity"; +import { ObjectId } from "./ObjectId"; +export declare class ViewportEntity extends Entity { + private _width; + private _height; + scene: Scene; + readonly camera: CameraUpdate; + private _renderType; + private _HideObjectIds; + private _ShowObjectIds; + private _RenderTarget; + ViewData: { + left: number; + bottom: number; + }; + _Color: number; + ViewportMaterial: MeshBasicMaterial; + private _Frustum; + constructor(_width?: number, _height?: number); + get Left(): number; + get Bottom(): number; + get Width(): number; + set Width(v: number); + get ViewWidth(): number; + get ViewHeight(): number; + get Height(): number; + set Height(v: number); + IsHide(id: ObjectId): boolean; + IsShow(id: ObjectId): boolean; + get HideObjects(): ObjectId[]; + get ShowObjects(): ObjectId[]; + AppendShowObjects(ids: ObjectId[] | ObjectId): void; + RemoveShowObjects(ids: ObjectId[] | ObjectId): void; + AppendHideObjects(ids: ObjectId[] | ObjectId): void; + RemoveHideObjects(ids: ObjectId[] | ObjectId): void; + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform: Matrix3): Vector3[]; + SetUVs(geo: BufferGeometry): void; + protected OnlyRenderType: boolean; + get Entitys(): Entity[]; + get Points(): Vector3[]; + NeedUpdateTexture: boolean; + InitDrawObject(type: RenderType): Group; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + UpdateDrawObjectMaterial(type: RenderType, obj: Object3D, material?: Material): void; + UpdateByPts(p1: Vector3, p2: Vector3): void; + GetGripPoints(): Vector3[]; + MoveGripPoints(indexList: number[], moveVec: Vector3): void; + ZoomAll(): void; + get RenderType(): RenderType; + set RenderType(v: RenderType); + get BoundingBox(): Box3; + CanRennder(en: Entity): boolean; + AppendEntity(en: Entity): void; + GoodBye(): void; + UpdateScene(): void; + CloneDrawObject(from: this): void; + IsInFrustum(obj: Object3D): boolean; + IsFirstVersion: boolean; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ViewportEntity.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity.d.ts.map b/types/DatabaseServices/ViewportEntity.d.ts.map new file mode 100644 index 0000000..e05c41d --- /dev/null +++ b/types/DatabaseServices/ViewportEntity.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ViewportEntity.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/ViewportEntity.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts b/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts new file mode 100644 index 0000000..a8e5c9a --- /dev/null +++ b/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts @@ -0,0 +1,31 @@ +import { Mesh, Object3D, Vector3, WebGLRenderer } from "three"; +import { CADFiler } from "../../api"; +import { RenderType } from "../../GraphicsSystem/RenderType"; +import { Entity } from "../Entity/Entity"; +/** + * 更新视口实体的时机: + * ->在布局状态下才应该更新,否则则标记为需要更新(或者不需要标记) + * ->在缩放相机时,标记所有的需要更新(异步更新任务)(优先更新可见视口) + * ->切换到布局时,更新全部视口(使用更新任务) + */ +export declare class ViewportEntity2 extends Entity { + private _Width; + private _Height; + static Renderer: WebGLRenderer; + OnlyRenderType: boolean; + private _RenderType; + private _DisplayEntitys; + private _CameraData; + constructor(_Width?: number, _Height?: number); + SetSize(width: number, height: number): void; + AppendEntity(ens: Iterable): void; + _Target: Vector3; + private _RenderTarget; + private _Scene; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Mesh): void; + Destroy(): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +//# sourceMappingURL=ViewportEntity2.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts.map b/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts.map new file mode 100644 index 0000000..4d97c47 --- /dev/null +++ b/types/DatabaseServices/ViewportEntity/ViewportEntity2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ViewportEntity2.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/ViewportEntity/ViewportEntity2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,IAAI,EAAqB,QAAQ,EAAiC,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAC9I,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAMrC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAM1C;;;;;GAKG;AAEH,qBACa,eAAgB,SAAQ,MAAM;IAYnC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAXnB,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/B,cAAc,UAAQ;IAGtB,OAAO,CAAC,WAAW,CAAqC;IAExD,OAAO,CAAC,eAAe,CAA4B;IAEnD,OAAO,CAAC,WAAW,CAAoB;gBAE3B,MAAM,GAAE,MAAU,EAClB,OAAO,GAAE,MAAU;IAM/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAUrC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC;IASlC,OAAO,UAAyB;IAEhC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,MAAM,CAAQ;IACtB,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAoBvE,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI;IAmD5C,OAAO;IAQP,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAsBlC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAgB3B"} \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts b/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts new file mode 100644 index 0000000..3769ba7 --- /dev/null +++ b/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts @@ -0,0 +1,10 @@ +import { ViewportEntity2 } from "./ViewportEntity2"; +export declare class ViewportEntityUpdateTask { + _Viewports: ViewportEntity2[]; + private timeId; + private stop; + constructor(_Viewports: ViewportEntity2[], timeId: number); + Stop(): void; + UpdateDraw(): Promise; +} +//# sourceMappingURL=ViewportEntityUpdateTask.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts.map b/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts.map new file mode 100644 index 0000000..01ff944 --- /dev/null +++ b/types/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ViewportEntityUpdateTask.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/ViewportEntity/ViewportEntityUpdateTask.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,wBAAwB;IAGd,UAAU,EAAE,eAAe,EAAE;IAAO,OAAO,CAAC,MAAM;IADrE,OAAO,CAAC,IAAI,CAAS;gBACF,UAAU,EAAE,eAAe,EAAO,EAAU,MAAM,EAAE,MAAM;IAK7E,IAAI;IAKE,UAAU;CA+CnB"} \ No newline at end of file diff --git a/types/DatabaseServices/WblockCloneFiler.d.ts b/types/DatabaseServices/WblockCloneFiler.d.ts new file mode 100644 index 0000000..eaa7719 --- /dev/null +++ b/types/DatabaseServices/WblockCloneFiler.d.ts @@ -0,0 +1,4 @@ +import { DeepCloneFiler } from "./DeepCloneFiler"; +export declare class WblockCloneFiler extends DeepCloneFiler { +} +//# sourceMappingURL=WblockCloneFiler.d.ts.map \ No newline at end of file diff --git a/types/DatabaseServices/WblockCloneFiler.d.ts.map b/types/DatabaseServices/WblockCloneFiler.d.ts.map new file mode 100644 index 0000000..f6e1fe9 --- /dev/null +++ b/types/DatabaseServices/WblockCloneFiler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WblockCloneFiler.d.ts","sourceRoot":"","sources":["../../../src/DatabaseServices/WblockCloneFiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,gBAAiB,SAAQ,cAAc;CAGnD"} \ No newline at end of file diff --git a/types/Debug/DebugObject.d.ts b/types/Debug/DebugObject.d.ts new file mode 100644 index 0000000..6f7c440 --- /dev/null +++ b/types/Debug/DebugObject.d.ts @@ -0,0 +1,2 @@ +export declare function DebugObject(object: T, listenKey?: string): T; +//# sourceMappingURL=DebugObject.d.ts.map \ No newline at end of file diff --git a/types/Debug/DebugObject.d.ts.map b/types/Debug/DebugObject.d.ts.map new file mode 100644 index 0000000..f39bf21 --- /dev/null +++ b/types/Debug/DebugObject.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DebugObject.d.ts","sourceRoot":"","sources":["../../../src/Debug/DebugObject.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,CAsB9E"} \ No newline at end of file diff --git a/types/Editor/AutoSave.d.ts b/types/Editor/AutoSave.d.ts new file mode 100644 index 0000000..f0f3c7d --- /dev/null +++ b/types/Editor/AutoSave.d.ts @@ -0,0 +1,22 @@ +/** + * TENET(时间钳攻击) + * 这个类保证了在某个时间周期内的操作被保存,通过2个机制来确定生效. + * 1.周期调用.若有未保存的,则保存它,并且重置计时器.(常规操作) + * 2.命令结束后调用.若超过时间周期,则保存它,并且重置计时器.(容错操作,避免在周期后产生的记录需要到下个周期才能保存) + * + * 保证了: + * 在命令结束后才运行(避免在命令状态下保存导致的错误) + */ +export declare class AutoSaveServer { + isCached: boolean; + private lastTime; + private timeId; + constructor(); + Start(): void; + Stop(): void; + Do(): void; + private SaveFile; + SavaData(data: any[]): Promise; + Clear(): Promise; +} +//# sourceMappingURL=AutoSave.d.ts.map \ No newline at end of file diff --git a/types/Editor/AutoSave.d.ts.map b/types/Editor/AutoSave.d.ts.map new file mode 100644 index 0000000..ffcc02a --- /dev/null +++ b/types/Editor/AutoSave.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AutoSave.d.ts","sourceRoot":"","sources":["../../../src/Editor/AutoSave.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,qBAAa,cAAc;IAGvB,QAAQ,UAAS;IACjB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAiB;;IAU/B,KAAK;IAML,IAAI;IASJ,EAAE;IAWF,OAAO,CAAC,QAAQ;IA4BV,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IAab,KAAK;CAKrB"} \ No newline at end of file diff --git a/types/Editor/BoardMoveTool.d.ts b/types/Editor/BoardMoveTool.d.ts new file mode 100644 index 0000000..71294b8 --- /dev/null +++ b/types/Editor/BoardMoveTool.d.ts @@ -0,0 +1,15 @@ +import { Vector3 } from "three"; +import { AlignedDimension } from "../DatabaseServices/Dimension/AlignedDimension"; +import { Board } from "../DatabaseServices/Entity/Board"; +export declare class BoardMoveTool { + _DrawDimPoints: [Vector3, Vector3][]; + _DrawDims: AlignedDimension[]; + _Board: Board; + ForceUpdate: boolean; + constructor(); + Clear(): void; + private HitBoard; + private RayPoint; + private UpdateDimensionDraw; +} +//# sourceMappingURL=BoardMoveTool.d.ts.map \ No newline at end of file diff --git a/types/Editor/BoardMoveTool.d.ts.map b/types/Editor/BoardMoveTool.d.ts.map new file mode 100644 index 0000000..cef3de0 --- /dev/null +++ b/types/Editor/BoardMoveTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardMoveTool.d.ts","sourceRoot":"","sources":["../../../src/Editor/BoardMoveTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,OAAO,EAAE,MAAM,OAAO,CAAC;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAMzD,qBAAa,aAAa;IAEtB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;IAErC,SAAS,EAAE,gBAAgB,EAAE,CAAM;IAEnC,MAAM,EAAE,KAAK,CAAC;IACd,WAAW,UAAS;;IA6DpB,KAAK;YASS,QAAQ;IAgJtB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,mBAAmB;CA6C9B"} \ No newline at end of file diff --git a/types/Editor/BufferGeometry2GeometryCacheMap.d.ts b/types/Editor/BufferGeometry2GeometryCacheMap.d.ts new file mode 100644 index 0000000..df932d1 --- /dev/null +++ b/types/Editor/BufferGeometry2GeometryCacheMap.d.ts @@ -0,0 +1,3 @@ +import { BufferGeometry, Geometry } from "three"; +export declare const BufferGeometry2GeometryCacheMap: WeakMap; +//# sourceMappingURL=BufferGeometry2GeometryCacheMap.d.ts.map \ No newline at end of file diff --git a/types/Editor/BufferGeometry2GeometryCacheMap.d.ts.map b/types/Editor/BufferGeometry2GeometryCacheMap.d.ts.map new file mode 100644 index 0000000..60c0f6c --- /dev/null +++ b/types/Editor/BufferGeometry2GeometryCacheMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BufferGeometry2GeometryCacheMap.d.ts","sourceRoot":"","sources":["../../../src/Editor/BufferGeometry2GeometryCacheMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjD,eAAO,MAAM,+BAA+B,mCAA0C,CAAC"} \ No newline at end of file diff --git a/types/Editor/CameraControls.d.ts b/types/Editor/CameraControls.d.ts new file mode 100644 index 0000000..60de4c5 --- /dev/null +++ b/types/Editor/CameraControls.d.ts @@ -0,0 +1,50 @@ +import { Vector2, Vector3 } from 'three'; +import { MouseKey } from '../Common/KeyEnum'; +import { Viewer } from '../GraphicsSystem/Viewer'; +export declare enum CameraControlState { + Null = 0, + Pan = 1, + Rotate = 2, + Scale = 3 +} +export declare class CameraControls { + Viewer: Viewer; + TouchTypeList: CameraControlState[]; + domElement: HTMLElement; + StartTouchPoint: Vector3; + EndTouchPoint: Vector3; + DollyStart: Vector2; + DollyEnd: Vector2; + IsCtrlDown: boolean; + IsAltDown: boolean; + IsShiftDown: boolean; + MouseDown: Map; + State: CameraControlState; + LeftUseRotate: boolean; + constructor(Viewer: Viewer); + pointId: number; + get CanRotate(): boolean; + RegisterEvent(): void; + /** + * 窗体失去焦点时. + */ + onBlur: () => void; + onTouchStart: (event: TouchEvent) => void; + onTouchEnd: (event: TouchEvent) => void; + onTouchMove: (event: TouchEvent) => void; + beginPan(): void; + beginRotate(): void; + requestPointerLock(): void; + exitPointerLock(): void; + lastMiddleClickTime: number; + onMouseDown: (event: MouseEvent) => void; + onMouseUp: (event: MouseEvent) => void; + onMouseMove: (event: MouseEvent) => void; + /** + * 鼠标滚轮事件 + */ + onMouseWheel: (event: WheelEvent) => void; + onKeyDown: (event: KeyboardEvent) => void; + onKeyUp: (event: KeyboardEvent) => void; +} +//# sourceMappingURL=CameraControls.d.ts.map \ No newline at end of file diff --git a/types/Editor/CameraControls.d.ts.map b/types/Editor/CameraControls.d.ts.map new file mode 100644 index 0000000..6b34748 --- /dev/null +++ b/types/Editor/CameraControls.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CameraControls.d.ts","sourceRoot":"","sources":["../../../src/Editor/CameraControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAYlD,oBAAY,kBAAkB;IAE1B,IAAI,IAAI;IAAE,GAAG,IAAI;IAAE,MAAM,IAAI;IAAE,KAAK,IAAI;CAC3C;AAED,qBAAa,cAAc;IAkBJ,MAAM,EAAE,MAAM;IAhBjC,aAAa,uBAAiF;IAC9F,UAAU,EAAE,WAAW,CAAC;IAExB,eAAe,EAAE,OAAO,CAAiB;IACzC,aAAa,EAAE,OAAO,CAAiB;IACvC,UAAU,EAAE,OAAO,CAAiB;IACpC,QAAQ,EAAE,OAAO,CAAiB;IAClC,UAAU,UAAS;IACnB,SAAS,UAAS;IAClB,WAAW,UAAS;IACpB,SAAS,yBAAgC;IAEzC,KAAK,EAAE,kBAAkB,CAA2B;IAEpD,aAAa,EAAE,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM;IAMjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,SAAS,YAMZ;IACD,aAAa;IA0Bb;;OAEG;IACH,MAAM,aAUJ;IAGF,YAAY,UAAW,UAAU,UAe/B;IACF,UAAU,UAAW,UAAU,UAG7B;IACF,WAAW,UAAW,UAAU,UA4C9B;IACF,QAAQ;IAMR,WAAW;IAQX,kBAAkB;IAclB,eAAe;IAoBf,mBAAmB,SAAK;IAExB,WAAW,UAAW,UAAU,UAsC9B;IACF,SAAS,UAAW,UAAU,UAQ5B;IACF,WAAW,UAAW,UAAU,UA2B9B;IAEF;;OAEG;IACH,YAAY,UAAW,UAAU,UAgB/B;IAGF,SAAS,UAAW,aAAa,UAW/B;IACF,OAAO,UAAW,aAAa,UAQ7B;CACL"} \ No newline at end of file diff --git a/types/Editor/CommandMachine.d.ts b/types/Editor/CommandMachine.d.ts new file mode 100644 index 0000000..42bc333 --- /dev/null +++ b/types/Editor/CommandMachine.d.ts @@ -0,0 +1,35 @@ +export interface Command { + /** + * 没有历史记录,也不破坏历史记录 + * 例如Save或者Undo,Redo. + * 这些命令没有历史记录,但如果不增加约束,可能会破坏历史 + */ + NoHistory?: boolean; + Transparency?: boolean; + exec: Function; +} +declare class CommandMachine { + CommandMap: Map; + LastCmd: string; + private _CommandNameList; + ExecCommand(cmdName: string): Promise; + RegisterCommand(cmdName: string, cmd: Command): void; + RemoveCommand(cmdName: string): void; + RegisterCustomCommand(oldName: string, newName: string): void; + /** + * 意味着命令开始,系统将会帮你初始化一些事情. + * @param cmdName + * @returns 命令开始状态,如果成功返回true. + */ + CommandStart(cmdName: string, noHistory?: boolean): boolean; + /** + * 意味着命令结束了,调用这个,系统会帮你做一些事情 + * @param [abort] 是否取消该命令. + */ + CommandEnd(abort?: boolean, noHistory?: boolean): Promise; + get CommandNameList(): Set; +} +export declare const commandMachine: CommandMachine; +export declare function CommandWrap(exec: Function, cmdName?: string): Promise; +export {}; +//# sourceMappingURL=CommandMachine.d.ts.map \ No newline at end of file diff --git a/types/Editor/CommandMachine.d.ts.map b/types/Editor/CommandMachine.d.ts.map new file mode 100644 index 0000000..385750a --- /dev/null +++ b/types/Editor/CommandMachine.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandMachine.d.ts","sourceRoot":"","sources":["../../../src/Editor/CommandMachine.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,OAAO;IAEpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC;CAClB;AAGD,cAAM,cAAc;IAGhB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAA8B;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,gBAAgB,CAAqB;IACvC,WAAW,CAAC,OAAO,EAAE,MAAM;IAgDjC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO;IAM7C,aAAa,CAAC,OAAO,EAAE,MAAM;IAO7B,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAStD;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO;IAezD;;;OAGG;IACG,UAAU,CAAC,KAAK,GAAE,OAAe,EAAE,SAAS,UAAQ;IA4C1D,IAAI,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC,CAGjC;CACJ;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC;AAEnD,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,MAAW,iBAiBrE"} \ No newline at end of file diff --git a/types/Editor/CommandRegister.d.ts b/types/Editor/CommandRegister.d.ts new file mode 100644 index 0000000..d1ed7ed --- /dev/null +++ b/types/Editor/CommandRegister.d.ts @@ -0,0 +1,4 @@ +export declare function registerCommand(): void; +export declare function RegistCustomCommand(): Promise; +export declare function RemoveCustonCommand(): void; +//# sourceMappingURL=CommandRegister.d.ts.map \ No newline at end of file diff --git a/types/Editor/CommandRegister.d.ts.map b/types/Editor/CommandRegister.d.ts.map new file mode 100644 index 0000000..8f19345 --- /dev/null +++ b/types/Editor/CommandRegister.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandRegister.d.ts","sourceRoot":"","sources":["../../../src/Editor/CommandRegister.ts"],"names":[],"mappings":"AAwNA,wBAAgB,eAAe,SA2X9B;AAED,wBAAsB,mBAAmB,kBAexC;AAED,wBAAgB,mBAAmB,SAWlC"} \ No newline at end of file diff --git a/types/Editor/CommandState.d.ts b/types/Editor/CommandState.d.ts new file mode 100644 index 0000000..d628fbe --- /dev/null +++ b/types/Editor/CommandState.d.ts @@ -0,0 +1,4 @@ +export declare let CommandState: { + CommandIng: boolean; +}; +//# sourceMappingURL=CommandState.d.ts.map \ No newline at end of file diff --git a/types/Editor/CommandState.d.ts.map b/types/Editor/CommandState.d.ts.map new file mode 100644 index 0000000..1f2e820 --- /dev/null +++ b/types/Editor/CommandState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandState.d.ts","sourceRoot":"","sources":["../../../src/Editor/CommandState.ts"],"names":[],"mappings":"AACA,eAAO,IAAI,YAAY;;CAEtB,CAAC"} \ No newline at end of file diff --git a/types/Editor/ContextMenu.d.ts b/types/Editor/ContextMenu.d.ts new file mode 100644 index 0000000..3a37b4e --- /dev/null +++ b/types/Editor/ContextMenu.d.ts @@ -0,0 +1,16 @@ +import { KeyWord } from "../Common/InputState"; +import { Editor, EditorService } from "./Editor"; +/** + * 当没有执行命令时,呼出右键菜单 + */ +export declare class ContextMenuServices implements EditorService { + private editor; + IsReady: boolean; + constructor(editor: Editor); + Doit(e: MouseEvent): Promise; + Cancel(): void; + HandleMouseUp(e: MouseEvent): void; + ShowMenu(): Promise; + GeneralKeywords(): KeyWord[]; +} +//# sourceMappingURL=ContextMenu.d.ts.map \ No newline at end of file diff --git a/types/Editor/ContextMenu.d.ts.map b/types/Editor/ContextMenu.d.ts.map new file mode 100644 index 0000000..1e3efae --- /dev/null +++ b/types/Editor/ContextMenu.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/Editor/ContextMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAkB,MAAM,sBAAsB,CAAC;AAM/D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAuCjD;;GAEG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IAGzC,OAAO,CAAC,MAAM;IAD1B,OAAO,EAAE,OAAO,CAAQ;gBACJ,MAAM,EAAE,MAAM;IAI5B,IAAI,CAAC,CAAC,EAAE,UAAU;IASxB,MAAM;IAKN,aAAa,CAAC,CAAC,EAAE,UAAU;IAcrB,QAAQ;IAuBd,eAAe;CAgGlB"} \ No newline at end of file diff --git a/types/Editor/DbClick/DBClickPolyline.d.ts b/types/Editor/DbClick/DBClickPolyline.d.ts new file mode 100644 index 0000000..2ba9a52 --- /dev/null +++ b/types/Editor/DbClick/DBClickPolyline.d.ts @@ -0,0 +1,17 @@ +import { Singleton } from "../../Common/Singleton"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +export declare class DBClickPolyline extends Singleton { + private entity; + HandlePolyline: (pl: Polyline) => Promise; + private EditorVertex; + private ExecEditor; + private Join; + private ToggleVertex; + private Break; + private ChangeVertex; + private StretchStraight; + private ExecSAndBCommand; + private TransfromNonCurve; + private TransfromSpline; +} +//# sourceMappingURL=DBClickPolyline.d.ts.map \ No newline at end of file diff --git a/types/Editor/DbClick/DBClickPolyline.d.ts.map b/types/Editor/DbClick/DBClickPolyline.d.ts.map new file mode 100644 index 0000000..70ddbd6 --- /dev/null +++ b/types/Editor/DbClick/DBClickPolyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DBClickPolyline.d.ts","sourceRoot":"","sources":["../../../../src/Editor/DbClick/DBClickPolyline.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAiB,MAAM,wCAAwC,CAAC;AAWjF,qBAAa,eAAgB,SAAQ,SAAS;IAE1C,OAAO,CAAC,MAAM,CAAQ;IACtB,cAAc,OAAc,QAAQ,mBAsElC;IACF,OAAO,CAAC,YAAY,CAwElB;IACF,OAAO,CAAC,UAAU,CAuChB;IACF,OAAO,CAAC,IAAI,CAiCV;IACF,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,KAAK;IAmBb,OAAO,CAAC,YAAY,CAwBlB;IAEF,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,iBAAiB;IA4BzB,OAAO,CAAC,eAAe;CAa1B"} \ No newline at end of file diff --git a/types/Editor/DbClick/DbClick.d.ts b/types/Editor/DbClick/DbClick.d.ts new file mode 100644 index 0000000..4540e2f --- /dev/null +++ b/types/Editor/DbClick/DbClick.d.ts @@ -0,0 +1,5 @@ +import { Singleton } from "../../Common/Singleton"; +export declare class DbClickManager extends Singleton { + OnDbClick: () => Promise; +} +//# sourceMappingURL=DbClick.d.ts.map \ No newline at end of file diff --git a/types/Editor/DbClick/DbClick.d.ts.map b/types/Editor/DbClick/DbClick.d.ts.map new file mode 100644 index 0000000..f6f1f8c --- /dev/null +++ b/types/Editor/DbClick/DbClick.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DbClick.d.ts","sourceRoot":"","sources":["../../../../src/Editor/DbClick/DbClick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAiCnD,qBAAa,cAAe,SAAQ,SAAS;IAEzC,SAAS,sBAuNP;CACL"} \ No newline at end of file diff --git a/types/Editor/DefaultConfig.d.ts b/types/Editor/DefaultConfig.d.ts new file mode 100644 index 0000000..c2a8d33 --- /dev/null +++ b/types/Editor/DefaultConfig.d.ts @@ -0,0 +1,43 @@ +import { LayerBoardOption, VerticalBoardOption, BehindBoardOption, TBBoardOption, LayerNailOption, SingleBoardOption, ClosingStripOption, IBoardBatchCurtailOption, BoardProcessOption, SideBoardOption } from "../UI/Store/BoardInterface"; +import { IWineRackOption } from "../UI/Store/WineRackInterface"; +import { IBoardFindOption } from "../UI/Store/BoardFindInterface"; +import { ILatticeOption } from "../UI/Store/LatticeInterface"; +import { IDrawerConfigOption, IDoorConfigOption } from "../UI/Store/DoorInterface"; +import { ICylMetalsOption, IExtMetalsOption, ICompHardwareOption, IToplineOption } from "../UI/Components/RightPanel/RightPanelInterface"; +import { Curve2RecOption } from "../Add-on/twoD2threeD/Modals/Curve2RecModal"; +import { IUpdateBoardInfosOption } from "../UI/Components/Board/UpdateBoardInfointerface"; +import { IRec2BrOption, IRect2Br2Option } from "../Add-on/twoD2threeD/R2bInterface"; +export declare const DefaultLayerBoardConfig: LayerBoardOption; +export declare const DefaultVerticalBoardConfig: VerticalBoardOption; +export declare const DefaultBehindBoardConfig: BehindBoardOption; +export declare const DefaultWineRackConfig: IWineRackOption; +export declare const DefaultTopBoardOption: TBBoardOption; +export declare const DefaultBottomBoardOption: TBBoardOption; +export declare const DefaultSideBoardOption: SideBoardOption; +export declare const DefaultSingleBoardOption: SingleBoardOption; +export declare const DefaultClosingStripOption: ClosingStripOption; +export declare const DefaultBoardFindOption: IBoardFindOption; +export declare const DefaultLatticOption: ILatticeOption; +export declare const DefaultDoorOption: IDoorConfigOption; +export declare const DefaultDrawerOption: IDrawerConfigOption; +export declare const DefaultBoardBatchCurtailOption: IBoardBatchCurtailOption; +export declare const DefaultLatticeConfig: ILatticeOption; +export declare const DefaultNailOption: LayerNailOption; +export declare const DefaultCylinederMetalsOption: ICylMetalsOption; +export declare const DefaultExtruderMetalsOption: IExtMetalsOption; +export declare const DefaultCompositeMetalsOption: ICompHardwareOption; +export declare const DefaultToplineMetalsOption: IToplineOption; +export declare const DefaultBoardProcessOption: BoardProcessOption; +export declare const DefaultCurve2RecOption: Curve2RecOption; +export declare const DefaultUpdateInfoOption: IUpdateBoardInfosOption; +export declare const DefaultKuGanOption: { + count: number; + isHor: boolean; + depth: number; + isDefault: boolean; + leftDist: number; + rightDist: number; +}; +export declare const DefaultR2bOption: IRec2BrOption; +export declare const DefaultR2b2Option: IRect2Br2Option; +//# sourceMappingURL=DefaultConfig.d.ts.map \ No newline at end of file diff --git a/types/Editor/DefaultConfig.d.ts.map b/types/Editor/DefaultConfig.d.ts.map new file mode 100644 index 0000000..c173c92 --- /dev/null +++ b/types/Editor/DefaultConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DefaultConfig.d.ts","sourceRoot":"","sources":["../../../src/Editor/DefaultConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAiB,mBAAmB,EAAE,iBAAiB,EAAuB,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAsD,wBAAwB,EAAe,kBAAkB,EAAE,eAAe,EAAa,MAAM,4BAA4B,CAAC;AAC5V,OAAO,EAAE,eAAe,EAAuD,MAAM,+BAA+B,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAgB,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAqB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAA0C,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE3H,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAe,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACvJ,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAEpF,eAAO,MAAM,uBAAuB,EAAE,gBAkBrC,CAAC;AAGF,eAAO,MAAM,0BAA0B,EAAE,mBAiBxC,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,iBAiBtC,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,eA4BnC,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,aAanC,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,aAoBtC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,eAUpC,CAAC;AAGF,eAAO,MAAM,wBAAwB,EAAE,iBAUtC,CAAC;AAGF,eAAO,MAAM,yBAAyB,EAAE,kBAYvC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,gBAkFpC,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,cAsBjC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,iBAyC/B,CAAC;AAGF,eAAO,MAAM,mBAAmB,EAAE,mBAkCjC,CAAC;AAGF,eAAO,MAAM,8BAA8B,EAAE,wBAQ5C,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,cAqBlC,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,eAa/B,CAAC;AAGF,eAAO,MAAM,4BAA4B,EAAE,gBAiB1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,gBAkBzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,mBAoB1C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,cAexC,CAAC;AAGF,eAAO,MAAM,yBAAyB,EAAE,kBAwBvC,CAAC;AAGF,eAAO,MAAM,sBAAsB,EAAE,eAOpC,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,uBA4CrC,CAAC;AAIF,eAAO,MAAM,kBAAkB;;;;;;;CAO9B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,aAyD9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,eAY/B,CAAC"} \ No newline at end of file diff --git a/types/Editor/Editor.d.ts b/types/Editor/Editor.d.ts new file mode 100644 index 0000000..2a9fe7f --- /dev/null +++ b/types/Editor/Editor.d.ts @@ -0,0 +1,77 @@ +import { Matrix4, Vector3 } from 'three'; +import { ApplicationService } from '../ApplicationServices/Application'; +import { InputState } from '../Common/InputState'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { CommandInputManage } from '../UI/Components/CommandInput/CommandInputManage'; +import { MaskManage } from '../UI/Components/Modal/MaskManage'; +import { CommandStore } from '../UI/Store/CommandStore'; +import { ContextMenuServices } from './ContextMenu'; +import { GetDistanceServices } from './GetDistanceServices'; +import { GetEntityServices } from './GetEntityServices'; +import { GetKeyWordsServices } from './GetKeyWordService'; +import { GetPointServices } from './GetPointServices'; +import { GetRectPointServices } from './GetRectServices'; +import { SsgetServiecs } from './GetSelectionServices'; +import { GetStringService } from './GetStringService'; +import { GripDragServices } from './GripDragServices'; +import { KeyBoardControls } from './KeyBoardControls'; +import { MouseControls } from './MouseControls'; +import { GetDistendPrompt, GetEntityPrompt, GetKeyWordPrommpt, GetPointPrompt, GetSelectionPrompt, GetStringPrompt, PromptRectPointOptions } from "./PromptOptions"; +import { PromptDistendResult, PromptEntityResult, PromptPointResult, PromptRectResult, PromptResult, PromptSsgetResult } from './PromptResult'; +import { SelectControls } from './SelectControls'; +import { TransformServicess } from './TranstrolControl/TransformServices'; +import { UCSServices } from './UCSServices'; +import { ModalManage } from '../UI/Components/Modal/ModalsManage'; +export declare class Editor { + MouseCtrl: MouseControls; + KeyCtrl: KeyBoardControls; + SelectCtrl: SelectControls; + App: ApplicationService; + InputState: InputState; + CommandStore: CommandStore; + GetPointServices: GetPointServices; + GetDistanceServices: GetDistanceServices; + GetRectPointServices: GetRectPointServices; + GetEntitytServices: GetEntityServices; + SnapDragServices: GripDragServices; + transCtrl: TransformServicess; + UcsServices: UCSServices; + MaskManage: MaskManage; + ModalManage: ModalManage; + CommandInput: CommandInputManage; + SsgetServices: SsgetServiecs; + KeywordsServices: GetKeyWordsServices; + ContextMenuServices: ContextMenuServices; + InteractiveServices: EditorService[]; + GetStringService: GetStringService; + constructor(app: ApplicationService); + /** + * 在命令行输出一行提示信息. + */ + Prompt(msg: string): void; + get UCSMatrix(): Matrix4; + get UCSMatrixInv(): Matrix4; + set UCSMatrix(m: Matrix4); + SetUCSLookAt(viewDir: Vector3): void; + InputEvent(inputData: string): void; + Canel(): void; + GetPoint(prompt?: GetPointPrompt): Promise; + GetDistance(prompt?: GetDistendPrompt): Promise; + GetRectPoint(prompt?: PromptRectPointOptions): Promise; + GetAngle(prompt?: GetDistendPrompt): Promise; + GetKeyWords(prompt: GetKeyWordPrommpt): Promise; + GetString(prompt: GetStringPrompt): Promise; + GetEntity(prompt?: GetEntityPrompt): Promise; + GetSelection(prompt?: GetSelectionPrompt): Promise; + PointToScreen(pt: THREE.Vector3): THREE.Vector2; + SelectWindow(p1: THREE.Vector3, p2: THREE.Vector3): Array; + SelectAll(): Array; + RemoveSelect(ent: Entity): void; + UpdateScreen(): void; +} +export interface EditorService { + IsReady: boolean; + Doit: (e: MouseEvent) => Promise; + Cancel: () => void; +} +//# sourceMappingURL=Editor.d.ts.map \ No newline at end of file diff --git a/types/Editor/Editor.d.ts.map b/types/Editor/Editor.d.ts.map new file mode 100644 index 0000000..26a8955 --- /dev/null +++ b/types/Editor/Editor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../../src/Editor/Editor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Editor/Gesture.d.ts b/types/Editor/Gesture.d.ts new file mode 100644 index 0000000..f5c821c --- /dev/null +++ b/types/Editor/Gesture.d.ts @@ -0,0 +1,25 @@ +import { Vector2 } from "three"; +import { Editor } from "./Editor"; +export declare enum GestureDir { + Right = 1, + Top = 2, + Left = 4, + Down = 8, + All = 255 +} +export declare class Gesture { + private editor; + private m_MouseDown; + private m_MousePath; + constructor(editor: Editor); + private RegisterEvent; + private onBlur; + private onMouseDown; + private onMouseUp; + private onMouseMove; + private ParsePath; + OnGestureEndEvent(dirs: GestureDir[], path: Vector2[]): void; + OnMouseMoveEvent(path: Vector2[]): void; +} +export declare function GestureDirEqual(gd: GestureDir[], gdt: GestureDir[]): boolean; +//# sourceMappingURL=Gesture.d.ts.map \ No newline at end of file diff --git a/types/Editor/Gesture.d.ts.map b/types/Editor/Gesture.d.ts.map new file mode 100644 index 0000000..6c29067 --- /dev/null +++ b/types/Editor/Gesture.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Gesture.d.ts","sourceRoot":"","sources":["../../../src/Editor/Gesture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,oBAAY,UAAU;IAElB,KAAK,IAAI;IACT,GAAG,IAAI;IACP,IAAI,IAAI;IACR,IAAI,IAAI;IACR,GAAG,MAAa;CACnB;AAED,qBAAa,OAAO;IAIJ,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAiB;gBAChB,MAAM,EAAE,MAAM;IAOlC,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,MAAM,CAGZ;IACF,OAAO,CAAC,WAAW,CAQjB;IACF,OAAO,CAAC,SAAS,CAwBf;IACF,OAAO,CAAC,WAAW,CAOjB;IAIF,OAAO,CAAC,SAAS;IAmCjB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IAKrD,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE;CAGnC;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,WAYlE"} \ No newline at end of file diff --git a/types/Editor/GetDistanceServices.d.ts b/types/Editor/GetDistanceServices.d.ts new file mode 100644 index 0000000..0a99c23 --- /dev/null +++ b/types/Editor/GetDistanceServices.d.ts @@ -0,0 +1,14 @@ +import { GetDistendPrompt } from "./PromptOptions"; +import { GetDistancePromptBlock } from '../UI/DynamicPrompt/GetDistancePromptBlock'; +import { PromptDistendResult } from './PromptResult'; +export declare class GetDistanceServices { + private removeCalls; + private promisResolve; + Start(prompt?: GetDistendPrompt): Promise; + protected initDynInput(prompt: GetDistendPrompt): GetDistancePromptBlock; + private initHandleInput; + private RestState; + Cancel(): void; + protected _return(v?: number | string): void; +} +//# sourceMappingURL=GetDistanceServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetDistanceServices.d.ts.map b/types/Editor/GetDistanceServices.d.ts.map new file mode 100644 index 0000000..ed370fb --- /dev/null +++ b/types/Editor/GetDistanceServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetDistanceServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetDistanceServices.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEpF,OAAO,EAAE,mBAAmB,EAAgB,MAAM,gBAAgB,CAAC;AAEnE,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAgC;IAE/C,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA+EpE,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB;IA4C/C,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,SAAS;IAMjB,MAAM;IAIN,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CA+BxC"} \ No newline at end of file diff --git a/types/Editor/GetEntityServices.d.ts b/types/Editor/GetEntityServices.d.ts new file mode 100644 index 0000000..151a703 --- /dev/null +++ b/types/Editor/GetEntityServices.d.ts @@ -0,0 +1,29 @@ +import { Editor, EditorService } from './Editor'; +import { GetEntityPrompt } from "./PromptOptions"; +import { PromptEntityResult } from './PromptResult'; +/** + * 返回状态: + * Ok 选择到实体. + * Other 右键或者空格退出选择 + * None 左键点击,但是没有选择到实体 + */ +export declare class GetEntityServices implements EditorService { + _Editor: Editor; + private m_Viewer; + constructor(ed: Editor); + IsReady: boolean; + private m_promisResolve; + private removeCalls; + private prompt; + Start(prompt?: GetEntityPrompt): Promise; + private handleRightClick; + initHandleInput(prompt: GetEntityPrompt): void; + initHandleKeyDown(): void; + Cancel(): void; + Doit(e: MouseEvent): Promise; + private InitDynPrompt; + private PickEntity; + private RestState; + private Retun; +} +//# sourceMappingURL=GetEntityServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetEntityServices.d.ts.map b/types/Editor/GetEntityServices.d.ts.map new file mode 100644 index 0000000..aae5c99 --- /dev/null +++ b/types/Editor/GetEntityServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetEntityServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetEntityServices.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAgB,MAAM,gBAAgB,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,QAAQ,CAAS;gBACb,EAAE,EAAE,MAAM;IAKtB,OAAO,EAAE,OAAO,CAAS;IAEzB,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,MAAM,CAAkB;IAC1B,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;YA2EpD,gBAAgB;IAyB9B,eAAe,CAAC,MAAM,EAAE,eAAe;IA4BvC,iBAAiB;IAejB,MAAM;IAKA,IAAI,CAAC,CAAC,EAAE,UAAU;IAyBxB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,KAAK;CAQhB"} \ No newline at end of file diff --git a/types/Editor/GetKeyWordService.d.ts b/types/Editor/GetKeyWordService.d.ts new file mode 100644 index 0000000..c823040 --- /dev/null +++ b/types/Editor/GetKeyWordService.d.ts @@ -0,0 +1,39 @@ +import { KeyWord } from '../Common/InputState'; +import { GetKeyWordPrommpt } from "./PromptOptions"; +import { Editor, EditorService } from './Editor'; +import { PromptResult } from './PromptResult'; +/** + * 指定用户拾取关键字的服务. + * + * 类里面包括了mobx的监听字段,使得界面可以得到store里面的数据 + * + * 该功能包括了如下特性: + * 1.命令栏点击关键字响应关键字. + * 2.命令栏输入关键字响应. + * 3.界面点击关键字时响应. + * 4.界面点击鼠标时,刷新下拉选项列表菜单位置 + * 5.用户可以通过空格和上下按键来切换和确定选择,用esc来取消输入. + */ +export declare class GetKeyWordsServices implements EditorService { + private ed; + IsReady: boolean; + private m_PromisResolve; + protected removeCalls: Function[]; + prompt: string; + keywordList: KeyWord[]; + selectIndex: number; + childSelectIndex: number; + m_ShowChildrenIndex: number; + mousePositionX: number; + mousePositionY: number; + private container; + constructor(ed: Editor); + Doit(e: MouseEvent): Promise; + private UpdateContextMenuPosition; + Start(prompt: GetKeyWordPrommpt): Promise; + private InitHandleInput; + InitHandleKeyDown(): void; + Cancel(): void; + _Return(result: PromptResult): void; +} +//# sourceMappingURL=GetKeyWordService.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetKeyWordService.d.ts.map b/types/Editor/GetKeyWordService.d.ts.map new file mode 100644 index 0000000..e511ada --- /dev/null +++ b/types/Editor/GetKeyWordService.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetKeyWordService.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetKeyWordService.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAc,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAM5D;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IAgBzC,OAAO,CAAC,EAAE;IAdV,OAAO,EAAE,OAAO,CAAS;IACrC,OAAO,CAAC,eAAe,CAA8B;IACrD,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAM;IAE3B,MAAM,SAAM;IACZ,WAAW,EAAE,OAAO,EAAE,CAAM;IAC5B,WAAW,SAAK;IAChB,gBAAgB,SAAK;IACrB,mBAAmB,SAAM;IACzB,cAAc,SAAK;IACnB,cAAc,SAAK;IAE/B,OAAO,CAAC,SAAS,CAAc;gBAEX,EAAE,EAAE,MAAM;IAaxB,IAAI,CAAC,CAAC,EAAE,UAAU;IAQxB,OAAO,CAAC,yBAAyB;IAW3B,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiD7D,OAAO,CAAC,eAAe;IA2BvB,iBAAiB;IA8EjB,MAAM;IAIN,OAAO,CAAC,MAAM,EAAE,YAAY;CAU/B"} \ No newline at end of file diff --git a/types/Editor/GetPointServices.d.ts b/types/Editor/GetPointServices.d.ts new file mode 100644 index 0000000..8007861 --- /dev/null +++ b/types/Editor/GetPointServices.d.ts @@ -0,0 +1,42 @@ +import { Vector3 } from 'three'; +import { EditorService } from './Editor'; +import { ObjectSnapMode } from './ObjectSnapMode'; +import { GetPointPrompt } from "./PromptOptions"; +import { PromptPointResult } from './PromptResult'; +import { SnapServices } from './SnapServices'; +/** + * 为拾取点提供服务,提供一个类以供Editor引用. + */ +export declare class GetPointServices implements EditorService { + IsReady: boolean; + Doit(e: MouseEvent): Promise; + private promisResolve; + protected removeCalls: Function[]; + snapServices: SnapServices; + snapModeCurrent: ObjectSnapMode; + private _prompt; + Start(prompt?: GetPointPrompt): Promise; + private handleRightClick; + Cancel(): void; + private curPoint; + private curPointIsSnap; + private lastPoint; + UpdateCurPointEvent(): void; + private initUpdateCurPoint; + private initHandleKeyDown; + private initHandleMouseDown; + private initHandleMouseMove; + private initDrawRubberBand; + private initHandleInput; + private initPrompt; + protected initDynInput(prompt: GetPointPrompt): void; + private ReturnNone; + private UpdatePointOfRelative; + protected ReturnPoint(p: Vector3, snapMode?: ObjectSnapMode): void; + protected ReturnKeyword(keyword: string): void; + protected ReturnResult(retValue: PromptPointResult): void; + private _oldIsThreeState; + private initState; + private RestState; +} +//# sourceMappingURL=GetPointServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetPointServices.d.ts.map b/types/Editor/GetPointServices.d.ts.map new file mode 100644 index 0000000..8465783 --- /dev/null +++ b/types/Editor/GetPointServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetPointServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetPointServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,EAAE,MAAM,OAAO,CAAC;AAetD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;GAEG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IAElD,OAAO,EAAE,OAAO,CAAS;IACnB,IAAI,CAAC,CAAC,EAAE,UAAU;IAuBxB,OAAO,CAAC,aAAa,CAAmC;IAExD,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAM;IAEhC,YAAY,eAAsB;IAClC,eAAe,EAAE,cAAc,CAAsB;IAE5D,OAAO,CAAC,OAAO,CAAiB;IAC1B,KAAK,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA+ClD,gBAAgB;IAwC9B,MAAM;IAON,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAU;IAE3B,mBAAmB;IAiBnB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,eAAe;IAqDvB,OAAO,CAAC,UAAU;IAclB,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc;IAsF7C,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,qBAAqB;IAW7B,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,cAAc;IAyB3D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM;IAQvC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,iBAAiB;IAQlD,OAAO,CAAC,gBAAgB,CAAU;IAElC,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,SAAS;CAkBpB"} \ No newline at end of file diff --git a/types/Editor/GetRectServices.d.ts b/types/Editor/GetRectServices.d.ts new file mode 100644 index 0000000..553388b --- /dev/null +++ b/types/Editor/GetRectServices.d.ts @@ -0,0 +1,26 @@ +import { PromptRectPointOptions } from "./PromptOptions"; +import { PromptRectResult } from "./PromptResult"; +export declare class GetRectPointServices { + /** + * + */ + private promisResolve; + /** + * 橡皮筋绘制的对象 + */ + private rubberBandLine; + private dynPrompt; + private destroyCalls; + private _UCSMatrix; + Start(prompt?: PromptRectPointOptions): Promise; + /** + * 更新动态提示框和多段线 + */ + private UpdateDynPrompt; + DrawRubberBand(): void; + private InitState; + private RestState; + Cancel(): void; + protected ReturnResult(result: PromptRectResult): void; +} +//# sourceMappingURL=GetRectServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetRectServices.d.ts.map b/types/Editor/GetRectServices.d.ts.map new file mode 100644 index 0000000..6f7c859 --- /dev/null +++ b/types/Editor/GetRectServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetRectServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetRectServices.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,gBAAgB,CAAC;AAEhE,qBAAa,oBAAoB;IAE7B;;OAEG;IACH,OAAO,CAAC,aAAa,CAA4B;IACjD;;MAEE;IACF,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,UAAU,CAAU;IAEtB,KAAK,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2I3E;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB,cAAc;IAkBd,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,SAAS;IAmBjB,MAAM;IAMN,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB;CAUlD"} \ No newline at end of file diff --git a/types/Editor/GetSelectionServices.d.ts b/types/Editor/GetSelectionServices.d.ts new file mode 100644 index 0000000..2495151 --- /dev/null +++ b/types/Editor/GetSelectionServices.d.ts @@ -0,0 +1,21 @@ +import { Editor } from './Editor'; +import { GetSelectionPrompt } from "./PromptOptions"; +import { PromptSsgetResult } from './PromptResult'; +/** + * 提供选择状态的服务. ed.Ssget + */ +export declare class SsgetServiecs { + private _Editor; + constructor(_Editor: Editor); + private promisResolve; + Start(prompt?: GetSelectionPrompt): Promise; + private HasSelection; + private ReturnOk; + Cancel(): void; + protected Return(res: PromptSsgetResult): void; + private m_AwaitRemoveCalls; + private m_AwaitRes; + AwaitSelect(): Promise; + private _AwaitSelctReturn; +} +//# sourceMappingURL=GetSelectionServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetSelectionServices.d.ts.map b/types/Editor/GetSelectionServices.d.ts.map new file mode 100644 index 0000000..69957b3 --- /dev/null +++ b/types/Editor/GetSelectionServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetSelectionServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetSelectionServices.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,gBAAgB,CAAC;AAMjE;;GAEG;AACH,qBAAa,aAAa;IAEV,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAInC,OAAO,CAAC,aAAa,CAAmC;IACxD,KAAK,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuIlE,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,QAAQ;IAShB,MAAM;IAKN,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,iBAAiB;IAWvC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,UAAU,CAA2B;IACvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC,OAAO,CAAC,iBAAiB;CAQ5B"} \ No newline at end of file diff --git a/types/Editor/GetStringService.d.ts b/types/Editor/GetStringService.d.ts new file mode 100644 index 0000000..a4ce7b2 --- /dev/null +++ b/types/Editor/GetStringService.d.ts @@ -0,0 +1,19 @@ +import { EditorService } from "./Editor"; +import { GetStringPrompt } from "./PromptOptions"; +import { PromptResult } from "./PromptResult"; +export declare class GetStringService implements EditorService { + IsReady: boolean; + private _prompt; + protected removeCalls: Function[]; + private promisResolve; + Doit(e: MouseEvent): Promise; + Start(prompt?: GetStringPrompt): Promise; + Cancel(): void; + protected InitState(): void; + private RestState; + protected ReturnResult(retValue: PromptResult): void; + protected InitPrompt(prompt: GetStringPrompt): void; + protected InitHandleInput(prompt: GetStringPrompt): void; + private InitHandleKeyDown; +} +//# sourceMappingURL=GetStringService.d.ts.map \ No newline at end of file diff --git a/types/Editor/GetStringService.d.ts.map b/types/Editor/GetStringService.d.ts.map new file mode 100644 index 0000000..fe3b744 --- /dev/null +++ b/types/Editor/GetStringService.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetStringService.d.ts","sourceRoot":"","sources":["../../../src/Editor/GetStringService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAO5D,qBAAa,gBAAiB,YAAW,aAAa;IAElD,OAAO,EAAE,OAAO,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAkB;IACjC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAM;IACvC,OAAO,CAAC,aAAa,CAAwB;IACvC,IAAI,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,KAAK,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBtD,MAAM;IAON,SAAS,CAAC,SAAS;IAKnB,OAAO,CAAC,SAAS;IAQjB,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY;IAQ7C,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,eAAe;IAY5C,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,eAAe;IAYjD,OAAO,CAAC,iBAAiB;CAY5B"} \ No newline at end of file diff --git a/types/Editor/GripDragServices.d.ts b/types/Editor/GripDragServices.d.ts new file mode 100644 index 0000000..77ee099 --- /dev/null +++ b/types/Editor/GripDragServices.d.ts @@ -0,0 +1,39 @@ +import { Line as TLine, Vector3 } from 'three'; +import { Editor, EditorService } from './Editor'; +/** + * 夹点拽拖服务 + */ +export declare class GripDragServices implements EditorService { + private ed; + lastSnapPoint: Vector3; + private mouseCtrl; + private _SnapSize; + constructor(ed: Editor); + get SnapSize(): number; + set SnapSize(size: number); + get IsReady(): boolean; + Doit(e: MouseEvent): Promise; + Cancel(): void; + /** + * 夹点捕捉 + * @returns + */ + GripSnap(): void; + /** + * 更新捕捉夹点 + */ + private UpdateSnapPoint; + /** + * 前视图中的光标对象 + */ + previewCrossLine: TLine; + /** + * 在前视图中绘制捕捉光标 + */ + private UpdateSnapDraw; + /** + * 隐藏捕捉的十字光标 + */ + HideDrawLine(): void; +} +//# sourceMappingURL=GripDragServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/GripDragServices.d.ts.map b/types/Editor/GripDragServices.d.ts.map new file mode 100644 index 0000000..3ccb4d3 --- /dev/null +++ b/types/Editor/GripDragServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GripDragServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/GripDragServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,IAAI,KAAK,EAAU,OAAO,EAAE,MAAM,OAAO,CAAC;AAcvE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKjD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IAMtC,OAAO,CAAC,EAAE;IAHtB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAM;gBACH,EAAE,EAAE,MAAM;IAW9B,IAAI,QAAQ,IACO,MAAM,CADgB;IACzC,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAWxB;IAED,IAAI,OAAO,YAGV;IAEK,IAAI,CAAC,CAAC,EAAE,UAAU;IA8HxB,MAAM;IAKN;;;OAGG;IACH,QAAQ;IAiBR;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,gBAAgB,EAAE,KAAK,CAAa;IAEpC;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,YAAY;CAQf"} \ No newline at end of file diff --git a/types/Editor/InitKeyword.d.ts b/types/Editor/InitKeyword.d.ts new file mode 100644 index 0000000..79359a3 --- /dev/null +++ b/types/Editor/InitKeyword.d.ts @@ -0,0 +1,14 @@ +import { PromptOptions } from "./PromptOptions"; +declare function ClearKeyWord(): void; +export declare function InitKeyWord(prompt: PromptOptions): typeof ClearKeyWord; +/** + * 尝试处理输入的字符串,如果是关键字,则返回true. + * + * @export + * @param {string} inputData 用户输入的字符串 + * @param {PromptOptions} prompt + * @returns true or false + */ +export declare function IsKeyword(inputData: string, prompt: PromptOptions): boolean; +export {}; +//# sourceMappingURL=InitKeyword.d.ts.map \ No newline at end of file diff --git a/types/Editor/InitKeyword.d.ts.map b/types/Editor/InitKeyword.d.ts.map new file mode 100644 index 0000000..ad9e985 --- /dev/null +++ b/types/Editor/InitKeyword.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InitKeyword.d.ts","sourceRoot":"","sources":["../../../src/Editor/InitKeyword.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,iBAAS,YAAY,SAIpB;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,uBAYhD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,WAcjE"} \ No newline at end of file diff --git a/types/Editor/Jig.d.ts b/types/Editor/Jig.d.ts new file mode 100644 index 0000000..5a8295e --- /dev/null +++ b/types/Editor/Jig.d.ts @@ -0,0 +1,43 @@ +import { CADFiler } from "../DatabaseServices/CADFiler"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +/** + * # Example: +``` + // 1.开始拽拖:-> + // 得到临时对象,如果en是已经存在的对象,那么将会被临时修改材质 + let jigEnt = Jig.Draw(en); + // 2.拽拖中:-> ....拽拖代码.更新jigEnt,你可以临时调用Jig.Destroy(); + ... + // 3.结束拽拖: + Jig.End(); +``` + */ +export declare class Jig { + private m_JigEnts; + EntityCacheData: { + Ent: Entity; + File: CADFiler; + }[]; + private m_OrgEntitys; + End(): void; + /** + * 还原源对象的材质 + */ + RestoreOriginEntity(): void; + /** + * 将在视图中绘制该对象. + * 如果该对象已经存在图纸:那么将被拷贝,并且暂时暗显示,并且缓存原始数据,以便还原. + * @param {Entity} enOrg 源实体 + */ + Draw(enOrg: T, fast?: boolean): T; + /** + * 还原拽拖的实体到初始化状态. + * @memberof Jig + */ + Restore(): void; + /** + * 销毁临时对象,如果临时对象被加入到图纸,那么将不会被销毁. + */ + Destroy(): void; +} +//# sourceMappingURL=Jig.d.ts.map \ No newline at end of file diff --git a/types/Editor/Jig.d.ts.map b/types/Editor/Jig.d.ts.map new file mode 100644 index 0000000..82c5122 --- /dev/null +++ b/types/Editor/Jig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Jig.d.ts","sourceRoot":"","sources":["../../../src/Editor/Jig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D;;;;;;;;;;;GAWG;AACH,qBAAa,GAAG;IAGZ,OAAO,CAAC,SAAS,CAAgB;IAEjC,eAAe,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAC;KAAE,EAAE,CAAM;IACzD,OAAO,CAAC,YAAY,CAAgB;IACpC,GAAG;IAKH;;OAEG;IACH,mBAAmB;IAKnB;;;;OAIG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,UAAQ,GAAG,CAAC;IAqBjD;;;OAGG;IACH,OAAO;IAQP;;OAEG;IACH,OAAO;CAWV"} \ No newline at end of file diff --git a/types/Editor/JigUtils.d.ts b/types/Editor/JigUtils.d.ts new file mode 100644 index 0000000..4bc1715 --- /dev/null +++ b/types/Editor/JigUtils.d.ts @@ -0,0 +1,29 @@ +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { Jig } from "./Jig"; +/** + * 动态拽拖的静态类,控制动态拽拖的状态. + */ +export declare class JigUtils { + static GetJig(): Jig; + static End(): void; + static get Jig(): Jig; + /** + * 还原源对象的材质 + */ + static RestoreOriginEntity(): void; + /** + * 将在视图中绘制该对象. + * 如果该对象已经存在图纸:那么将被拷贝,并且暂时暗显示,并且缓存原始数据,以便还原. + * @param {Entity} enOrg 源实体 + */ + static Draw(enOrg: T, fast?: boolean): T; + /** + * 还原拽拖的实体到初始化状态. + */ + static Restore(): void; + /** + * 销毁临时对象,如果临时对象被加入到图纸,那么将不会被销毁. + */ + static Destroy(): void; +} +//# sourceMappingURL=JigUtils.d.ts.map \ No newline at end of file diff --git a/types/Editor/JigUtils.d.ts.map b/types/Editor/JigUtils.d.ts.map new file mode 100644 index 0000000..cf8bfb1 --- /dev/null +++ b/types/Editor/JigUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"JigUtils.d.ts","sourceRoot":"","sources":["../../../src/Editor/JigUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAI5B;;GAEG;AACH,qBAAa,QAAQ;IAEjB,MAAM,CAAC,MAAM;IAKb,MAAM,CAAC,GAAG;IAKV,MAAM,KAAK,GAAG,QAGb;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB;IAK1B;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,UAAQ,GAAG,CAAC;IAKxD;;OAEG;IACH,MAAM,CAAC,OAAO;IAKd;;OAEG;IACH,MAAM,CAAC,OAAO;CAIjB"} \ No newline at end of file diff --git a/types/Editor/KeyBoardControls.d.ts b/types/Editor/KeyBoardControls.d.ts new file mode 100644 index 0000000..e131ab0 --- /dev/null +++ b/types/Editor/KeyBoardControls.d.ts @@ -0,0 +1,11 @@ +import { KeyCode } from '../Common/KeyEnum'; +export declare class KeyBoardControls { + private m_KeyDownMap; + constructor(); + OnKeyDown(e: KeyboardEvent): void; + private onKeyDown; + KeyIsDown(key: KeyCode): Boolean; + OnKeyUp(event: KeyboardEvent): void; + private onKeyUp; +} +//# sourceMappingURL=KeyBoardControls.d.ts.map \ No newline at end of file diff --git a/types/Editor/KeyBoardControls.d.ts.map b/types/Editor/KeyBoardControls.d.ts.map new file mode 100644 index 0000000..b46cc85 --- /dev/null +++ b/types/Editor/KeyBoardControls.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyBoardControls.d.ts","sourceRoot":"","sources":["../../../src/Editor/KeyBoardControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,YAAY,CAA+B;;IAYnD,SAAS,CAAC,CAAC,EAAE,aAAa;IAG1B,OAAO,CAAC,SAAS,CAIf;IACF,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAKhC,OAAO,CAAC,KAAK,EAAE,aAAa;IAG5B,OAAO,CAAC,OAAO,CAIb;CACL"} \ No newline at end of file diff --git a/types/Editor/LayoutTool.d.ts b/types/Editor/LayoutTool.d.ts new file mode 100644 index 0000000..f339d2b --- /dev/null +++ b/types/Editor/LayoutTool.d.ts @@ -0,0 +1,15 @@ +import { Entity } from "../DatabaseServices/Entity/Entity"; +export declare const VP_TOATER_KEY = "vp"; +export declare class LayoutTool { + constructor(); + CacheCamera(): void; + Switch(): void; + Reset(): void; + get CurrentSpace(): import("../DatabaseServices/BlockTableRecord").BlockTableRecord; + AppendDatabaseSpace(en: Entity, changeColor?: boolean): void; + RemoveDatabaseSpace(en: Entity): void; + ShowViewportEntitys(ens?: Entity[], isNew?: boolean): void; + HideViewportEntitys(selects: Entity[]): void; + ChangeViewportEntitys(ens: Entity[]): void; +} +//# sourceMappingURL=LayoutTool.d.ts.map \ No newline at end of file diff --git a/types/Editor/LayoutTool.d.ts.map b/types/Editor/LayoutTool.d.ts.map new file mode 100644 index 0000000..3cf68e5 --- /dev/null +++ b/types/Editor/LayoutTool.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LayoutTool.d.ts","sourceRoot":"","sources":["../../../src/Editor/LayoutTool.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAc3D,eAAO,MAAM,aAAa,OAAO,CAAC;AA6ClC,qBAAa,UAAU;;IAkDnB,WAAW;IAKX,MAAM;IAMN,KAAK;IAuBL,IAAI,YAAY,oEAUf;IACD,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,UAAO;IAalD,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAW9B,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,UAAQ;IA8BjD,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE;IAsBrC,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE;CAetC"} \ No newline at end of file diff --git a/types/Editor/MaterialEditor.d.ts b/types/Editor/MaterialEditor.d.ts new file mode 100644 index 0000000..10e12d5 --- /dev/null +++ b/types/Editor/MaterialEditor.d.ts @@ -0,0 +1,25 @@ +import { BufferGeometry, Geometry, Mesh, Object3D } from 'three'; +import { Singleton } from '../Common/Singleton'; +import { PhysicalMaterialRecord } from '../DatabaseServices/PhysicalMaterialRecord'; +import { Viewer } from '../GraphicsSystem/Viewer'; +/** + * 材质编辑器 + */ +export declare class MaterialEditor extends Singleton { + Geometrys: Map; + m_CurGeometryName: import("mobx").IObservableValue; + Canvas: HTMLElement; + ShowObject: Object3D; + ShowMesh: Mesh; + Viewer: Viewer; + constructor(); + initGeometrys(): void; + initViewer(): void; + SetViewer(canvas: HTMLElement): void; + initScene(): void; + private Material; + setMaterial(mat: PhysicalMaterialRecord): void; + dispose(): void; + Update(): Promise; +} +//# sourceMappingURL=MaterialEditor.d.ts.map \ No newline at end of file diff --git a/types/Editor/MaterialEditor.d.ts.map b/types/Editor/MaterialEditor.d.ts.map new file mode 100644 index 0000000..3d6a3ec --- /dev/null +++ b/types/Editor/MaterialEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialEditor.d.ts","sourceRoot":"","sources":["../../../src/Editor/MaterialEditor.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,cAAc,EAAsB,QAAQ,EAAE,IAAI,EAAwB,QAAQ,EAAkF,MAAM,OAAO,CAAC;AAE5N,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAGpF,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAEzC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAC;IAElD,iBAAiB,0CAAuB;IACxC,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;;IAQf,aAAa;IAcb,UAAU;IAiBV,SAAS,CAAC,MAAM,EAAE,WAAW;IAM7B,SAAS;IAiCT,OAAO,CAAC,QAAQ,CAAyB;IACzC,WAAW,CAAC,GAAG,EAAE,sBAAsB;IAOvC,OAAO;IAGD,MAAM;CAqBf"} \ No newline at end of file diff --git a/types/Editor/MaterialMouseControl.d.ts b/types/Editor/MaterialMouseControl.d.ts new file mode 100644 index 0000000..50ca83f --- /dev/null +++ b/types/Editor/MaterialMouseControl.d.ts @@ -0,0 +1,18 @@ +import { Viewer } from '../GraphicsSystem/Viewer'; +import { Vector3 } from 'three'; +/** + * 材质编辑器的场景鼠标控制. + */ +export declare class MaterialEditorCamerControl { + m_Viewer: Viewer; + m_MouseIsDown: boolean; + m_StartPoint: Vector3; + m_EndPoint: Vector3; + constructor(view: Viewer); + initMouseControl(): void; + onMouseDown: (event: MouseEvent) => void; + onMouseUp: (event: MouseEvent) => void; + onMouseMove: (event: MouseEvent) => void; + onMouseWheel: (event: WheelEvent) => void; +} +//# sourceMappingURL=MaterialMouseControl.d.ts.map \ No newline at end of file diff --git a/types/Editor/MaterialMouseControl.d.ts.map b/types/Editor/MaterialMouseControl.d.ts.map new file mode 100644 index 0000000..0eeedcc --- /dev/null +++ b/types/Editor/MaterialMouseControl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialMouseControl.d.ts","sourceRoot":"","sources":["../../../src/Editor/MaterialMouseControl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC;;GAEG;AACH,qBAAa,0BAA0B;IAEnC,QAAQ,EAAE,MAAM,CAAC;IAGjB,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,OAAO,CAAiB;IACtC,UAAU,UAAiB;gBACf,IAAI,EAAE,MAAM;IAMxB,gBAAgB;IAQhB,WAAW,UAAW,UAAU,UAI9B;IACF,SAAS,UAAW,UAAU,UAG5B;IACF,WAAW,UAAW,UAAU,UAY9B;IACF,YAAY,UAAW,UAAU,UAU/B;CACL"} \ No newline at end of file diff --git a/types/Editor/MouseControls.d.ts b/types/Editor/MouseControls.d.ts new file mode 100644 index 0000000..5d54cfb --- /dev/null +++ b/types/Editor/MouseControls.d.ts @@ -0,0 +1,18 @@ +import { Vector3 } from 'three'; +import { Viewer } from '../GraphicsSystem/Viewer'; +import { Editor } from './Editor'; +export declare class MouseControls { + _Viewer: Viewer; + _Editor: Editor; + _CurMousePointClient: Vector3; + _CurMousePointVCS: Vector3; + _CurMousePointWCS: Vector3; + constructor(_Viewer: Viewer, _Editor: Editor); + private RegisterEvent; + onMouseMove: (e: MouseEvent) => void; + onMouseDown: (e: MouseEvent) => Promise; + onMouseUp(e: MouseEvent): void; + onDBClick(e: MouseEvent): void; + updateWordPoint: (e: MouseEvent) => void; +} +//# sourceMappingURL=MouseControls.d.ts.map \ No newline at end of file diff --git a/types/Editor/MouseControls.d.ts.map b/types/Editor/MouseControls.d.ts.map new file mode 100644 index 0000000..e6bdf1f --- /dev/null +++ b/types/Editor/MouseControls.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MouseControls.d.ts","sourceRoot":"","sources":["../../../src/Editor/MouseControls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,qBAAa,aAAa;IAOH,OAAO,EAAE,MAAM;IAAS,OAAO,EAAE,MAAM;IAL1D,oBAAoB,EAAE,OAAO,CAAiB;IAE9C,iBAAiB,EAAE,OAAO,CAAiB;IAE3C,iBAAiB,EAAE,OAAO,CAAiB;gBACxB,OAAO,EAAE,MAAM,EAAS,OAAO,EAAE,MAAM;IAI1D,OAAO,CAAC,aAAa;IASrB,WAAW,MAAO,UAAU,UAG1B;IAEF,WAAW,MAAa,UAAU,mBAehC;IACF,SAAS,CAAC,CAAC,EAAE,UAAU;IAIvB,SAAS,CAAC,CAAC,EAAE,UAAU;IAKvB,eAAe,MAAO,UAAU,UAM9B;CACL"} \ No newline at end of file diff --git a/types/Editor/ObjectSnapMode.d.ts b/types/Editor/ObjectSnapMode.d.ts new file mode 100644 index 0000000..dd04027 --- /dev/null +++ b/types/Editor/ObjectSnapMode.d.ts @@ -0,0 +1,23 @@ +/** + * OSMODE + */ +export declare enum ObjectSnapMode { + None = 0, + End = 1, + Mid = 2, + Cen = 4, + Node = 8, + Qua = 16, + Int = 32, + Ins = 64, + Per = 128, + Tan = 256, + Nea = 512, + NotEntitySnap = 1024, + App = 2048, + Ext = 4096, + Par = 8192, + Axis = 16384, + All = 31743 +} +//# sourceMappingURL=ObjectSnapMode.d.ts.map \ No newline at end of file diff --git a/types/Editor/ObjectSnapMode.d.ts.map b/types/Editor/ObjectSnapMode.d.ts.map new file mode 100644 index 0000000..88fb819 --- /dev/null +++ b/types/Editor/ObjectSnapMode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ObjectSnapMode.d.ts","sourceRoot":"","sources":["../../../src/Editor/ObjectSnapMode.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,cAAc;IAEtB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,GAAG,IAAI;IACP,GAAG,IAAI;IACP,IAAI,IAAI;IACR,GAAG,KAAK;IACR,GAAG,KAAK;IACR,GAAG,KAAK;IACR,GAAG,MAAM;IACT,GAAG,MAAM;IACT,GAAG,MAAM;IACT,aAAa,OAAO;IACpB,GAAG,OAAO;IACV,GAAG,OAAO;IACV,GAAG,OAAO;IACV,IAAI,QAAQ;IACZ,GAAG,QAAqB;CAC3B"} \ No newline at end of file diff --git a/types/Editor/PointPick.d.ts b/types/Editor/PointPick.d.ts new file mode 100644 index 0000000..67a4bcd --- /dev/null +++ b/types/Editor/PointPick.d.ts @@ -0,0 +1,20 @@ +import { Intersection, Object3D, Raycaster, Vector3 } from 'three'; +import { IViewer } from '../GraphicsSystem/IView'; +import { Filter } from './SelectFilter'; +/** + * 构造射线投射器. + * @param {Vector3} ptVcs 屏幕坐标系的点 + */ +export declare function GenerateRaycaster(ptVcs: Vector3, view: IViewer): Raycaster; +/** + * 根据鼠标位置确定鼠标范围内选中的实体. + * @param {Vector3} ptVcs 鼠标的屏幕点 + * @param {IViewer} view 指定视图 + * @param {Object3D} [selectObject] 选择的对象. 如果为空则为app.view.scene + * @param {Boolean} selectBoxGetLastestEn 点选曲线和点时是否选取最后创建的 默认true + * @returns {Object3D[]} 返回选择到的对象,注意该返回的对象并不会得到它的子对象. + */ +export declare function PointPick(ptVcs: Vector3, view: IViewer, filter?: Filter, selectObjects?: Object3D[], selectSize?: number): Object3D[]; +export declare function PointPickOneObject(ptVcs: Vector3, view: IViewer, filter?: Filter, selectObjects?: Object3D[]): Object3D; +export declare function Raycast(ray: Raycaster, objectCol: Object3D[], filter?: Filter): Intersection | undefined; +//# sourceMappingURL=PointPick.d.ts.map \ No newline at end of file diff --git a/types/Editor/PointPick.d.ts.map b/types/Editor/PointPick.d.ts.map new file mode 100644 index 0000000..ebfb510 --- /dev/null +++ b/types/Editor/PointPick.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointPick.d.ts","sourceRoot":"","sources":["../../../src/Editor/PointPick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAsB,SAAS,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAe,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,CAU1E;AAKD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EACpC,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,GAAE,QAAQ,EAAwB,EAC/C,UAAU,SAAK,GAChB,QAAQ,EAAE,CAiBZ;AAED,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,MAAM,EACf,aAAa,GAAE,QAAQ,EAAwB,GAAG,QAAQ,CA8B7D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CA2BxG"} \ No newline at end of file diff --git a/types/Editor/PromptOptions.d.ts b/types/Editor/PromptOptions.d.ts new file mode 100644 index 0000000..1c84d0b --- /dev/null +++ b/types/Editor/PromptOptions.d.ts @@ -0,0 +1,56 @@ +import { Vector3 } from 'three'; +import { PromptEntityResult, PromptSsgetResult } from './PromptResult'; +import { Filter } from './SelectFilter'; +import { SelectType } from './SelectBox'; +import { KeyWord } from '../Common/InputState'; +export interface PromptOptions { + Msg?: string; + KeyWordList?: KeyWord[]; +} +export interface GetKeyWordPrommpt extends PromptOptions { + Default?: string; + KeyWordList: KeyWord[]; + Modal?: boolean; +} +export interface GetStringPrompt extends PromptOptions { + Default?: string; +} +export interface GetPointPrompt extends PromptOptions { + BasePoint?: Vector3; + RelativeBasePoint?: Vector3; + Callback?: (pt: Vector3) => void; + AllowDrawRubberBand?: Boolean; + NotShowDynPrompt?: boolean; + /** 如果UCS和视图平行,则不捕捉Z轴 */ + NotSnapZ?: boolean; + AllowNone?: boolean; + Use2DCursor?: boolean; + DisabledSnap?: boolean; + DisabledBasePointSupportSnap?: boolean; +} +export interface GetDistendPrompt extends PromptOptions { + BasePoint?: Vector3; + DisabledBasePointSupportSnap?: boolean; + Callback?: (dist: number, pt?: Vector3) => void; + CalcDistance?: (ptBase: Vector3, pt: Vector3) => number; + Default?: number; +} +export interface PromptRectPointOptions extends PromptOptions { + BasePoint?: Vector3; +} +export interface GetEntityPrompt extends PromptOptions { + NotNone?: boolean; + UseSelect?: boolean; + IsSelect?: boolean; + Filter?: Filter; + Callback?: (res: PromptEntityResult) => void; +} +export interface GetSelectionPrompt extends PromptOptions { + Once?: boolean; + AllowNone?: boolean; + UseSelect?: boolean; + Filter?: Filter; + SelectType?: SelectType; + Callback?: (res: PromptSsgetResult) => void; +} +//# sourceMappingURL=PromptOptions.d.ts.map \ No newline at end of file diff --git a/types/Editor/PromptOptions.d.ts.map b/types/Editor/PromptOptions.d.ts.map new file mode 100644 index 0000000..9575f91 --- /dev/null +++ b/types/Editor/PromptOptions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PromptOptions.d.ts","sourceRoot":"","sources":["../../../src/Editor/PromptOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,aAAa;IAE1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IAEpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAElD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IAGjD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;IAEjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IAEnD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,aAAa;IAEzD,SAAS,CAAC,EAAE,OAAO,CAAC;CAEvB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAElD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IAErD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C"} \ No newline at end of file diff --git a/types/Editor/PromptResult.d.ts b/types/Editor/PromptResult.d.ts new file mode 100644 index 0000000..9e429dc --- /dev/null +++ b/types/Editor/PromptResult.d.ts @@ -0,0 +1,56 @@ +import { Object3D, Vector3 } from 'three'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { ObjectSnapMode } from './ObjectSnapMode'; +import { SelectSet } from './SelectSet'; +export declare enum PromptStatus { + None = 0, + Cancel = -1, + OK = 1, + Keyword = 2, + Other = 4, + String = 8, + Error = -2 +} +export declare class PromptResult { + Status: PromptStatus; + StringResult?: string; + isChild?: boolean; + Parent?: string; +} +export declare class PromptPointResult extends PromptResult { + SnaoMode: ObjectSnapMode; + private _point; + /** + * 返回三维点 + * + * @readonly + * @memberof PromptPointResult + */ + get Point(): Vector3; + set Point(pt: Vector3); + constructor(); +} +export declare class PromptDistendResult extends PromptResult { + private _value; + get Distance(): number; + set Distance(v: number); +} +export declare class PromptRectResult extends PromptResult { + Point1UCS: Vector3; + Point2UCS: Vector3; + Point1WCS: Vector3; + Point2WCS: Vector3; + get Width(): number; + get Height(): number; +} +export declare class PromptEntityResult extends PromptResult { + Entity?: Entity; + Point?: Vector3; + Object?: Object3D; + IsCircle?: boolean; + constructor(Entity?: Entity, Point?: Vector3, Object?: Object3D, IsCircle?: boolean); +} +export declare class PromptSsgetResult extends PromptResult { + SelectSet?: SelectSet; +} +//# sourceMappingURL=PromptResult.d.ts.map \ No newline at end of file diff --git a/types/Editor/PromptResult.d.ts.map b/types/Editor/PromptResult.d.ts.map new file mode 100644 index 0000000..db50148 --- /dev/null +++ b/types/Editor/PromptResult.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PromptResult.d.ts","sourceRoot":"","sources":["../../../src/Editor/PromptResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,YAAY;IAEpB,IAAI,IAAI;IACR,MAAM,KAAK;IACX,EAAE,IAAI;IACN,OAAO,IAAI;IACX,KAAK,IAAI;IACT,MAAM,IAAI;IACV,KAAK,KAAK;CACb;AAWD,qBAAa,YAAY;IAErB,MAAM,EAAE,YAAY,CAAqB;IAEzC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,EAAE,OAAO,CAAS;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CAGnB;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAE/C,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,MAAM,CAAU;IACxB;;;;;OAKG;IACH,IAAI,KAAK,IAIK,OAAO,CADpB;IACD,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO,EAGpB;;CAMJ;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IAEjD,OAAO,CAAC,MAAM,CAAS;IACvB,IAAI,QAAQ,IAII,MAAM,CADrB;IACD,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAGrB;CACJ;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAE9C,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IAEnB,IAAI,KAAK,WAGR;IAED,IAAI,MAAM,WAGT;CACJ;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAIrC,MAAM,CAAC,EAAE,MAAM;IAEf,KAAK,CAAC,EAAE,OAAO;IACf,MAAM,CAAC,EAAE,QAAQ;IACjB,QAAQ,CAAC,EAAE,OAAO;gBAJlB,MAAM,CAAC,EAAE,MAAM,EAEf,KAAK,CAAC,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,QAAQ,EACjB,QAAQ,CAAC,EAAE,OAAO;CAKhC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAE/C,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB"} \ No newline at end of file diff --git a/types/Editor/RegisterGesture.d.ts b/types/Editor/RegisterGesture.d.ts new file mode 100644 index 0000000..f38667a --- /dev/null +++ b/types/Editor/RegisterGesture.d.ts @@ -0,0 +1,3 @@ +import { Gesture } from "./Gesture"; +export declare function RegisterGesture(gt: Gesture): void; +//# sourceMappingURL=RegisterGesture.d.ts.map \ No newline at end of file diff --git a/types/Editor/RegisterGesture.d.ts.map b/types/Editor/RegisterGesture.d.ts.map new file mode 100644 index 0000000..f1bef75 --- /dev/null +++ b/types/Editor/RegisterGesture.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RegisterGesture.d.ts","sourceRoot":"","sources":["../../../src/Editor/RegisterGesture.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,QAa1C"} \ No newline at end of file diff --git a/types/Editor/SelectBase.d.ts b/types/Editor/SelectBase.d.ts new file mode 100644 index 0000000..9707a81 --- /dev/null +++ b/types/Editor/SelectBase.d.ts @@ -0,0 +1,53 @@ +import { Face3, Frustum, Matrix4, Object3D, Vector3 } from 'three'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { IViewer } from '../GraphicsSystem/IView'; +import { Filter } from './SelectFilter'; +/** + * 选择对象的基类数据 如盒子选择数据 点选数据 以后可能有多边形选区 + */ +export declare class SelectSetBase { + protected _Viewer: IViewer; + _ViewerWidth: number; + _ViewerHeight: number; + _ProjScreenMatrix: Matrix4; + _SelectList: Set; + protected _bIsPerCamera: boolean; + protected _Frustum: Frustum; + constructor(view: IViewer); + /** + * 执行该方法 会对场景内部的实体进行选择测试. 如果满足条件 将会添加在选择(渲染)列表中. + */ + Select(selectList?: Object3D[], filter?: Filter): void; + SelectGroup(filter?: Filter): number; + FrustomIntersectObject(obj: Object3D): boolean; + get SelectEntityList(): Entity[]; + CheckSelectTraverse(obj: Object3D): boolean; + /** + * 子类重载:判断实体是否需要被选中. + * @param {Object3D} obj + * @returns {boolean} + */ + protected CheckSelect(obj: Object3D): boolean; + WorldToScreenPoint(pt: Vector3): Vector3; + GetObjectVertices(obj: Object3D): { + pts: Array; + faces: Array; + }; + private GetGeometrVerticesAndFaces; + IntersectLineBase(index1: number, index2: number, screenPts: Array, worldPts: Array): boolean; + protected IntersectLine(p1Screen: Vector3, p2Screen: Vector3): boolean; + IntersectObject(obj: Object3D): boolean; + ContainsPoint(ptWcs: Vector3): boolean; + /** + * 直线在平截头体里面的裁剪. + * + * @param {Vector3} p1Screen p1对应的屏幕点,如果裁剪成功,参数会被改变 + * @param {Vector3} p2Screen 如果裁剪成功,参数会被改变 + * @param {Vector3} p1Wcs p1对应的世界坐标系 + * @param {Vector3} p2Wcs + * @param {Frustum} frusum + * @returns {boolean} 如果直线在平截头体内,那么返回true,否则返回false + */ + LineFrusumClip(p1Screen: Vector3, p2Screen: Vector3, p1Wcs: Vector3, p2Wcs: Vector3, frusum: Frustum): boolean; +} +//# sourceMappingURL=SelectBase.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectBase.d.ts.map b/types/Editor/SelectBase.d.ts.map new file mode 100644 index 0000000..173d443 --- /dev/null +++ b/types/Editor/SelectBase.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectBase.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,EAAE,OAAO,EAAiC,OAAO,EAAQ,QAAQ,EAAqB,OAAO,EAA8B,MAAM,OAAO,CAAC;AAGvK,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD,OAAO,EAAe,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAErD;;GAEG;AACH,qBAAa,aAAa;IAGtB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IAEtB,iBAAiB,UAAiB;IAClC,WAAW,gBAAuB;IAClC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAiB;gBAEhC,IAAI,EAAE,OAAO;IAczB;;MAEE;IACF,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM;IAa/C,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAgCpC,sBAAsB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAO9C,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAO/B;IAED,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAsB3C;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAK7C,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO;IASxC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG;QAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAAE;IAO/E,OAAO,CAAC,0BAA0B;IA4DlC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO;IAgB/G,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;IAItE,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAyCvC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAEtC;;;;;;;;;MASE;IACF,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;CAoBjH"} \ No newline at end of file diff --git a/types/Editor/SelectBox.d.ts b/types/Editor/SelectBox.d.ts new file mode 100644 index 0000000..f2408d8 --- /dev/null +++ b/types/Editor/SelectBox.d.ts @@ -0,0 +1,30 @@ +import { Box2, Object3D, Vector2, Vector3 } from 'three'; +import { IViewer } from '../GraphicsSystem/IView'; +import { SelectSetBase } from './SelectBase'; +export declare enum SelectType { + None = 0, + C = 1, + W = 2 +} +/** + * 矩形选区 + * 如果图形无法选择,那么注意该图形是否调用计算图形的包围球. + */ +export declare class SelectBox extends SelectSetBase { + private _SelectBox; + private _BoxCheck; + _SelectType: SelectType; + _bIsPerCamera: boolean; + constructor(view: IViewer, p1: Vector2, p2: Vector2, selectType?: SelectType); + get SelectBox(): Box2; + CheckSelectTraverse(obj: Object3D): boolean; + private CheckSelectC; + private CheckSelectW; + IntersectLine(p1Screen: Vector3, p2Screen: Vector3): boolean; + /** + * 包含该对象. 采用所有点都在选区内的做法 + */ + ContainerObject(obj: Object3D): 1 | -1; + ContainsPoint(ptWcs: Vector3): boolean; +} +//# sourceMappingURL=SelectBox.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectBox.d.ts.map b/types/Editor/SelectBox.d.ts.map new file mode 100644 index 0000000..e9aecf3 --- /dev/null +++ b/types/Editor/SelectBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectBox.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAW,QAAQ,EAAyC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,oBAAY,UAAU;IAElB,IAAI,IAAI;IACR,CAAC,IAAI;IACL,CAAC,IAAI;CACR;AAED;;;GAGG;AACH,qBAAa,SAAU,SAAQ,aAAa;IAGxC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAAoB;IACrC,WAAW,EAAE,UAAU,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;gBAEX,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,UAAU;IAyB5E,IAAI,SAAS,SAGZ;IAGD,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;IAsD3C,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,YAAY;IAUpB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO;IAI5D;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;IAatC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAIzC"} \ No newline at end of file diff --git a/types/Editor/SelectControls.d.ts b/types/Editor/SelectControls.d.ts new file mode 100644 index 0000000..cb1deb7 --- /dev/null +++ b/types/Editor/SelectControls.d.ts @@ -0,0 +1,43 @@ +import { Viewer } from '../GraphicsSystem/Viewer'; +import { Editor, EditorService } from './Editor'; +import { SelectSetBase } from './SelectBase'; +import { SelectBox, SelectType } from './SelectBox'; +import { Filter } from './SelectFilter'; +import { SelectSet } from './SelectSet'; +export declare class SelectControls implements EditorService { + private _Viewer; + private _Editor; + MaxHightightCount: number; + private _SelectCss; + private _SelectSet; + Filter: Filter; + private _SelectType; + private _FirstPickPoint; + constructor(_Viewer: Viewer, _Editor: Editor); + get IsReady(): boolean; + Doit(e: MouseEvent): Promise; + /** + * 返回当前的选择集,每次重新选择都会返回一个新的SelectSet + * 不要对返回的对象注入函数,操作AddSelect,而是使用`app.Editor.SelectCtrl.AddSelect`; + */ + get SelectSet(): SelectSet; + set SelectType(type: SelectType); + RegisterEvent(): void; + UpdateView(): void; + /** + * 模拟左键点击. + * @param [checkPick] 确认鼠标是否点击到实体. + */ + LeftClick(checkPick?: boolean): void; + SelectByCss(): SelectBox; + OnMouseMove(): void; + OnKeyDown(e: KeyboardEvent): void; + RestState(): void; + Cancel(): void; + AddSelect(selectData: SelectSetBase, noParseGroup?: boolean): void; + RemoveSelect(selectData: SelectSetBase): void; + UpdateSelectEvent(): void; + EndSelectEvent(): void; + CanenEvent(): void; +} +//# sourceMappingURL=SelectControls.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectControls.d.ts.map b/types/Editor/SelectControls.d.ts.map new file mode 100644 index 0000000..bf47b05 --- /dev/null +++ b/types/Editor/SelectControls.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectControls.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectControls.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,qBAAa,cAAe,YAAW,aAAa;IAU5C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IATnB,iBAAiB,SAAQ;IACzB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAA8B;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,eAAe,CAAU;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;IAO3B,IAAI,OAAO,YAGV;IAEK,IAAI,CAAC,CAAC,EAAE,UAAU;IAexB;;;OAGG;IACH,IAAI,SAAS,IAAI,SAAS,CAGzB;IAED,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,EAI9B;IAED,aAAa;IAgBb,UAAU;IAsCV;;;OAGG;IACH,SAAS,CAAC,SAAS,UAAO;IA8D1B,WAAW;IAYX,WAAW;IAkBX,SAAS,CAAC,CAAC,EAAE,aAAa;IAY1B,SAAS;IAQT,MAAM;IASN,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,UAAQ;IAuBzD,YAAY,CAAC,UAAU,EAAE,aAAa;IAQtC,iBAAiB;IAKjB,cAAc;IAKd,UAAU;CAIb"} \ No newline at end of file diff --git a/types/Editor/SelectFilter.d.ts b/types/Editor/SelectFilter.d.ts new file mode 100644 index 0000000..a3fcc18 --- /dev/null +++ b/types/Editor/SelectFilter.d.ts @@ -0,0 +1,12 @@ +import { Object3D } from "three"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +export interface Filter { + filterTypes?: any[]; + filterFunction?: (obj: Object3D, ent?: Entity) => boolean; + /** + * 过滤掉已经被删除的图元或者未加入到数据库的图元 + */ + filterErase?: boolean; +} +export declare function CheckFilter(obj: Object3D, filter?: Filter): boolean; +//# sourceMappingURL=SelectFilter.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectFilter.d.ts.map b/types/Editor/SelectFilter.d.ts.map new file mode 100644 index 0000000..19b7ed7 --- /dev/null +++ b/types/Editor/SelectFilter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectFilter.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectFilter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAG3D,MAAM,WAAW,MAAM;IAGnB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1D;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,WAgBzD"} \ No newline at end of file diff --git a/types/Editor/SelectLine.d.ts b/types/Editor/SelectLine.d.ts new file mode 100644 index 0000000..aa290a4 --- /dev/null +++ b/types/Editor/SelectLine.d.ts @@ -0,0 +1,13 @@ +import { Frustum, Object3D, Vector2, Vector3 } from 'three'; +import { PreViewer } from '../GraphicsSystem/PreViewer'; +import { Viewer } from '../GraphicsSystem/Viewer'; +import { SelectSetBase } from './SelectBase'; +export declare class SelectLine extends SelectSetBase { + private m_StartPt; + private m_EndPt; + _Frustum: Frustum; + constructor(view: Viewer | PreViewer, startP: Vector2, endP: Vector2); + IntersectLine(p1: Vector3, p2: Vector3): boolean; + CheckSelect(obj: Object3D): boolean; +} +//# sourceMappingURL=SelectLine.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectLine.d.ts.map b/types/Editor/SelectLine.d.ts.map new file mode 100644 index 0000000..ef2eb75 --- /dev/null +++ b/types/Editor/SelectLine.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectLine.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectLine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,QAAQ,EAAyC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,qBAAa,UAAW,SAAQ,aAAa;IAEzC,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,QAAQ,EAAE,OAAO,CAAiB;gBAEtB,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;IAiBpE,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO;IAKhD,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;CAItC"} \ No newline at end of file diff --git a/types/Editor/SelectPick.d.ts b/types/Editor/SelectPick.d.ts new file mode 100644 index 0000000..fa1224a --- /dev/null +++ b/types/Editor/SelectPick.d.ts @@ -0,0 +1,18 @@ +import { Object3D, Raycaster, Vector3 } from 'three'; +import { Viewer } from '../GraphicsSystem/Viewer'; +import { SelectBox } from './SelectBox'; +/** + * 点选的数据结构 + */ +export declare class SelectPick extends SelectBox { + _PickPointVcs: Vector3; + _Raycaster: Raycaster; + constructor(view: Viewer, ptVcs: Vector3, size?: number); + /** + * 单选重构了该方法,可以检验对象是否在选择框内 + * @param {Object3D} obj + * @returns {Boolean} + */ + IntersectObject(obj: Object3D): boolean; +} +//# sourceMappingURL=SelectPick.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectPick.d.ts.map b/types/Editor/SelectPick.d.ts.map new file mode 100644 index 0000000..d330fd4 --- /dev/null +++ b/types/Editor/SelectPick.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectPick.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectPick.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAIpD;;GAEG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAGrC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,SAAS,CAAmB;gBAC5B,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,SAAO;IAWrD;;;;OAIG;IACH,eAAe,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO;CAQ1C"} \ No newline at end of file diff --git a/types/Editor/SelectSet.d.ts b/types/Editor/SelectSet.d.ts new file mode 100644 index 0000000..03b6b26 --- /dev/null +++ b/types/Editor/SelectSet.d.ts @@ -0,0 +1,21 @@ +import { Object3D } from 'three'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { SelectSetBase } from './SelectBase'; +import { Filter } from './SelectFilter'; +export declare class SelectSet { + constructor(); + /** + * 选择数据 + */ + _SelectSetList: SelectSetBase[]; + IdSelectMap: Map; + AddSelect(selectData: SelectSetBase): void; + RemoveSelect(selectData: SelectSetBase): void; + Clear(): void; + get SelectSetList(): SelectSetBase[]; + get SelectObjectList(): Array; + get SelectEntityList(): Entity[]; + get SelectObjectCount(): number; + Filter(filter: Filter): void; +} +//# sourceMappingURL=SelectSet.d.ts.map \ No newline at end of file diff --git a/types/Editor/SelectSet.d.ts.map b/types/Editor/SelectSet.d.ts.map new file mode 100644 index 0000000..be112be --- /dev/null +++ b/types/Editor/SelectSet.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectSet.d.ts","sourceRoot":"","sources":["../../../src/Editor/SelectSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAe,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGrD,qBAAa,SAAS;;IAGlB;;OAEG;IACH,cAAc,kBAA8B;IAC5C,WAAW,6BAAoC;IAE/C,SAAS,CAAC,UAAU,EAAE,aAAa;IAoBnC,YAAY,CAAC,UAAU,EAAE,aAAa;IAetC,KAAK;IAML,IAAI,aAAa,oBAGhB;IAED,IAAI,gBAAgB,IAAI,KAAK,CAAC,QAAQ,CAAC,CAMtC;IACD,IAAI,gBAAgB,IAAI,MAAM,EAAE,CAO/B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAM9B;IAED,MAAM,CAAC,MAAM,EAAE,MAAM;CAKxB"} \ No newline at end of file diff --git a/types/Editor/ShowSnapMenu.d.ts b/types/Editor/ShowSnapMenu.d.ts new file mode 100644 index 0000000..753cabd --- /dev/null +++ b/types/Editor/ShowSnapMenu.d.ts @@ -0,0 +1,18 @@ +import { KeyWord } from "../Common/InputState"; +import { ObjectSnapMode } from "./ObjectSnapMode"; +export declare const SNAPMODE: { + E: ObjectSnapMode; + M: ObjectSnapMode; + I: ObjectSnapMode; + A: ObjectSnapMode; + X: ObjectSnapMode; + C: ObjectSnapMode; + Q: ObjectSnapMode; + G: ObjectSnapMode; + P: ObjectSnapMode; + R: ObjectSnapMode; + N: ObjectSnapMode; +}; +export declare const SnapMenuKW: KeyWord[]; +export declare function ShowSnapMenu(): Promise; +//# sourceMappingURL=ShowSnapMenu.d.ts.map \ No newline at end of file diff --git a/types/Editor/ShowSnapMenu.d.ts.map b/types/Editor/ShowSnapMenu.d.ts.map new file mode 100644 index 0000000..441baf5 --- /dev/null +++ b/types/Editor/ShowSnapMenu.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ShowSnapMenu.d.ts","sourceRoot":"","sources":["../../../src/Editor/ShowSnapMenu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,eAAO,MAAM,QAAQ;;;;;;;;;;;;CAYpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,OAAO,EAa/B,CAAC;AAEF,wBAAsB,YAAY,kBAkBjC"} \ No newline at end of file diff --git a/types/Editor/SnapMenuFixed.d.ts b/types/Editor/SnapMenuFixed.d.ts new file mode 100644 index 0000000..e4d1c58 --- /dev/null +++ b/types/Editor/SnapMenuFixed.d.ts @@ -0,0 +1,17 @@ +import * as React from "react"; +/** + * 底部状态栏的捕捉按钮. + */ +export declare class SnapMenuFixed extends React.Component<{}> { + private isMenuShow; + /** + * 模态框呼出标记,当呼出模态框时,关闭菜单不关闭蒙板. + */ + private isModalShow; + render(): JSX.Element; + RenderMenu: () => JSX.Element; + ShowMenu: (e: any) => void; + HideMenu: () => void; + private close; +} +//# sourceMappingURL=SnapMenuFixed.d.ts.map \ No newline at end of file diff --git a/types/Editor/SnapMenuFixed.d.ts.map b/types/Editor/SnapMenuFixed.d.ts.map new file mode 100644 index 0000000..11278ca --- /dev/null +++ b/types/Editor/SnapMenuFixed.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SnapMenuFixed.d.ts","sourceRoot":"","sources":["../../../src/Editor/SnapMenuFixed.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B;;GAEG;AACH,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IAEtC,OAAO,CAAC,UAAU,CAAkB;IAEhD;;OAEG;IACS,OAAO,CAAC,WAAW,CAAkB;IACjD,MAAM;IAkBN,UAAU,oBAiDR;IAEF,QAAQ,MAAO,GAAG,UAMhB;IAEF,QAAQ,aAKN;IACF,OAAO,CAAC,KAAK,CAIX;CACL"} \ No newline at end of file diff --git a/types/Editor/SnapServices.d.ts b/types/Editor/SnapServices.d.ts new file mode 100644 index 0000000..b56a8a0 --- /dev/null +++ b/types/Editor/SnapServices.d.ts @@ -0,0 +1,96 @@ +import { Vector3 } from 'three'; +import { ObjectSnapMode } from './ObjectSnapMode'; +import { GetPointPrompt } from "./PromptOptions"; +/** + * 轴线捕捉模式 + */ +export declare enum AxisSnapMode { + Polar = 1, + Ortho = 2 +} +export declare class SnapServices { + Disabled: boolean; + FilterErase: boolean; + SnapSize: number; + AxisSnapMode: AxisSnapMode; + SnapPoint: Vector3; + AxisSnapBasePoint: Vector3; + SnapModeEnable: ObjectSnapMode; + private m_SnapMode; + private m_DynPrompt; + private m_HasBasePoint; + private m_IsZAxis; + private m_SupportSnapPoints; + private m_UCS; + /** 切线捕捉时使用的基点 */ + TanBasePoint: Vector3; + Start(prompt: GetPointPrompt): void; + Stop(): void; + get SnapMode(): ObjectSnapMode; + set SnapMode(mode: ObjectSnapMode); + private UpdateCursort; + /** + * 返回合适的捕捉点,如果有的话. + * @returns 捕捉点或空 + */ + GetSnapPoint(): Vector3 | undefined; + private m_DelaySupportSnapId; + /** + * 获得实体捕捉点. + * + * 前期: + * 如果鼠标还在旧的捕捉点时,则返回旧的捕捉点. + * 清理辅助捕捉点定时器. + * + * 1.先计算了(端点,中点,圆心,垂点,切点).=>(进行辅助捕捉点添加) + * 2.计算了交点. + * 3.计算了最近点. + * @returns + */ + private GetEntitySnapPoint; + private CalcClosestSnapPoint; + private GetSupportEntity; + /** + * 轴线捕捉 + * 1.尝试轴线捕捉. + * 2.尝试延伸轴捕捉. + * 3.返回较近捕捉轴.{捕捉类型,捕捉轴,捕捉点} + * + * @param supportSnapPt 辅助的捕捉点. + * @param [isFirst] + * @returns SnapAxis + */ + private AxisSnap; + private GetAxisSnapPoint; + /** + * 十字光标组 + */ + private m_CrossCursor; + /** + * 初始化捕捉光标(十字) + */ + private InitCrossCursor; + /** + * 更新所有的十字光标 + */ + private UpdateCrossCursor; + private m_SquareCursor; + private InitSquareCursor; + private UpdateSquareCursor; + private UpdateSquareCursorMode; + private m_ObliqueCrossCursor; + private InitObliqueCrossCursor; + private UpdateObliqueCrossCursor; + private m_ObliqueOutline; + private InitObliqueOutline; + private UpdateObliqueOutline; + private UpdateObjectPosition; + private m_SupportExtLine; + m_SupportExtLinePts: Vector3[]; + private InitSupportExtLine; + private UpdateSupportExtLine; + private DrawExtend; + InitDynPrompt(): void; + UpdateDynPrompt(): void; +} +//# sourceMappingURL=SnapServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/SnapServices.d.ts.map b/types/Editor/SnapServices.d.ts.map new file mode 100644 index 0000000..2ca3fd6 --- /dev/null +++ b/types/Editor/SnapServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SnapServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/SnapServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuE,OAAO,EAAE,MAAM,OAAO,CAAC;AAsBrG,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD;;GAEG;AACH,oBAAY,YAAY;IAEpB,KAAK,IAAI;IACT,KAAK,IAAI;CACZ;AAqCD,qBAAa,YAAY;IAErB,QAAQ,EAAE,OAAO,CAAS;IAC1B,WAAW,UAAQ;IACnB,QAAQ,SAAM;IACd,YAAY,eAAsB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,cAAc,CAAsB;IACpD,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,KAAK,CAAU;IAEvB,iBAAiB;IACjB,YAAY,EAAE,OAAO,CAAC;IAEtB,KAAK,CAAC,MAAM,EAAE,cAAc;IA+C5B,IAAI;IAmBJ,IAAI,QAAQ,mBAGX;IAED,IAAI,QAAQ,CAAC,IAAI,gBAAA,EAOhB;IAED,OAAO,CAAC,aAAa;IAYrB;;;OAGG;IACH,YAAY,IAAI,OAAO,GAAG,SAAS;IASnC,OAAO,CAAC,oBAAoB,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,kBAAkB;IA+K1B,OAAO,CAAC,oBAAoB;IAgD5B,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ;IAgHhB,OAAO,CAAC,gBAAgB;IAyJxB;;OAEG;IACH,OAAO,CAAC,aAAa,CAAkB;IACvC;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,sBAAsB;IAuC9B,OAAO,CAAC,oBAAoB,CAAO;IAEnC,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,wBAAwB;IAQhC,OAAO,CAAC,gBAAgB,CAAO;IAE/B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,gBAAgB,CAAO;IAC/B,mBAAmB,EAAE,OAAO,EAAE,CAAM;IACpC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,UAAU;IAqClB,aAAa;IAQb,eAAe;CA+DlB"} \ No newline at end of file diff --git a/types/Editor/SnapStatusWrap.d.ts b/types/Editor/SnapStatusWrap.d.ts new file mode 100644 index 0000000..86ee31a --- /dev/null +++ b/types/Editor/SnapStatusWrap.d.ts @@ -0,0 +1,2 @@ +export declare function SnapDisabledWrap(newDisabled: boolean, exec: () => Promise): Promise; +//# sourceMappingURL=SnapStatusWrap.d.ts.map \ No newline at end of file diff --git a/types/Editor/SnapStatusWrap.d.ts.map b/types/Editor/SnapStatusWrap.d.ts.map new file mode 100644 index 0000000..6e4205f --- /dev/null +++ b/types/Editor/SnapStatusWrap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SnapStatusWrap.d.ts","sourceRoot":"","sources":["../../../src/Editor/SnapStatusWrap.ts"],"names":[],"mappings":"AAEA,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,cAOrF"} \ No newline at end of file diff --git a/types/Editor/TempEditor.d.ts b/types/Editor/TempEditor.d.ts new file mode 100644 index 0000000..e61bd5d --- /dev/null +++ b/types/Editor/TempEditor.d.ts @@ -0,0 +1,25 @@ +/** + * 临时编辑器,类似ACAD的块编辑器. + */ +export declare class TempEditor { + private constructor(); + static EditorIng: boolean; + private static editorScene; + private static viewerScene; + private static hmIndex; + private static light; + /** + * 开始进入临时编辑模式. + * 将记录当前命令位置,并且禁止往后撤销. + * 将Viewer.Scene切换成this.editorScene(临时场景) + */ + static Start(): void; + /** + * 结束临时编辑状态 + * 请提取所需的数据后调用这个.(因为期间造成的编辑记录将被还原.) + * Viewer.Scene还原 + * 历史记录将还原和移除 + */ + static End(): void; +} +//# sourceMappingURL=TempEditor.d.ts.map \ No newline at end of file diff --git a/types/Editor/TempEditor.d.ts.map b/types/Editor/TempEditor.d.ts.map new file mode 100644 index 0000000..a7cdfb2 --- /dev/null +++ b/types/Editor/TempEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TempEditor.d.ts","sourceRoot":"","sources":["../../../src/Editor/TempEditor.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,qBAAa,UAAU;IAEnB,OAAO;IACP,MAAM,CAAC,SAAS,UAAS;IACzB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAa;IAEvC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;IAGlC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAiC;IAErD;;;;OAIG;IACH,MAAM,CAAC,KAAK;IAiBZ;;;;;OAKG;IACH,MAAM,CAAC,GAAG;CAqCb"} \ No newline at end of file diff --git a/types/Editor/TranstrolControl/Axes.d.ts b/types/Editor/TranstrolControl/Axes.d.ts new file mode 100644 index 0000000..57229f0 --- /dev/null +++ b/types/Editor/TranstrolControl/Axes.d.ts @@ -0,0 +1,13 @@ +import { Group, LineBasicMaterial } from "three"; +export declare class Axes extends Group { + private m_ConeHeight; + private m_ConeRadius; + private m_AxesLength; + private m_Line; + private m_Cone; + constructor(); + set ConeRadius(size: number); + set Length(length: number); + set Material(m: LineBasicMaterial); +} +//# sourceMappingURL=Axes.d.ts.map \ No newline at end of file diff --git a/types/Editor/TranstrolControl/Axes.d.ts.map b/types/Editor/TranstrolControl/Axes.d.ts.map new file mode 100644 index 0000000..906f8a8 --- /dev/null +++ b/types/Editor/TranstrolControl/Axes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Axes.d.ts","sourceRoot":"","sources":["../../../../src/Editor/TranstrolControl/Axes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,KAAK,EAAQ,iBAAiB,EAAQ,MAAM,OAAO,CAAC;AAKlH,qBAAa,IAAK,SAAQ,KAAK;IAG3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,CAAC,MAAM,CAAO;;IA0BrB,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAI1B;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAKxB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,iBAAiB,EAOhC;CACJ"} \ No newline at end of file diff --git a/types/Editor/TranstrolControl/CoorAxes.d.ts b/types/Editor/TranstrolControl/CoorAxes.d.ts new file mode 100644 index 0000000..cb26dbf --- /dev/null +++ b/types/Editor/TranstrolControl/CoorAxes.d.ts @@ -0,0 +1,15 @@ +import * as THREE from 'three'; +export declare enum AxisType { + Origin = 0, + X = 1, + Y = 2, + Z = 3 +} +export declare class CoorAxes extends THREE.Group { + private m_Axis_X; + private m_Axis_Y; + private m_Axis_Z; + constructor(); + Rest(): void; +} +//# sourceMappingURL=CoorAxes.d.ts.map \ No newline at end of file diff --git a/types/Editor/TranstrolControl/CoorAxes.d.ts.map b/types/Editor/TranstrolControl/CoorAxes.d.ts.map new file mode 100644 index 0000000..ce5d438 --- /dev/null +++ b/types/Editor/TranstrolControl/CoorAxes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CoorAxes.d.ts","sourceRoot":"","sources":["../../../../src/Editor/TranstrolControl/CoorAxes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,oBAAY,QAAQ;IAEhB,MAAM,IAAI;IACV,CAAC,IAAI;IACL,CAAC,IAAI;IACL,CAAC,IAAI;CACR;AAID,qBAAa,QAAS,SAAQ,KAAK,CAAC,KAAK;IAErC,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,QAAQ,CAAO;;IAyBvB,IAAI;CAQP"} \ No newline at end of file diff --git a/types/Editor/TranstrolControl/RotateAxes.d.ts b/types/Editor/TranstrolControl/RotateAxes.d.ts new file mode 100644 index 0000000..6268957 --- /dev/null +++ b/types/Editor/TranstrolControl/RotateAxes.d.ts @@ -0,0 +1,11 @@ +import { Group } from 'three'; +export declare class RotateAxes extends Group { + private _Radius; + private _ActiveIndex; + constructor(); + private createCircle; + set AxtiveIndex(v: number); + get AxtiveIndex(): number; + Rest(): void; +} +//# sourceMappingURL=RotateAxes.d.ts.map \ No newline at end of file diff --git a/types/Editor/TranstrolControl/RotateAxes.d.ts.map b/types/Editor/TranstrolControl/RotateAxes.d.ts.map new file mode 100644 index 0000000..6284943 --- /dev/null +++ b/types/Editor/TranstrolControl/RotateAxes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RotateAxes.d.ts","sourceRoot":"","sources":["../../../../src/Editor/TranstrolControl/RotateAxes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsC,MAAM,OAAO,CAAC;AAMlE,qBAAa,UAAW,SAAQ,KAAK;IAEjC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,YAAY,CAAa;;IAcjC,OAAO,CAAC,YAAY;IAcpB,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAKxB;IACD,IAAI,WAAW,IANI,MAAM,CASxB;IACD,IAAI;CASP"} \ No newline at end of file diff --git a/types/Editor/TranstrolControl/TransformServices.d.ts b/types/Editor/TranstrolControl/TransformServices.d.ts new file mode 100644 index 0000000..94695a6 --- /dev/null +++ b/types/Editor/TranstrolControl/TransformServices.d.ts @@ -0,0 +1,28 @@ +import * as THREE from 'three'; +import { Entity } from '../../DatabaseServices/Entity/Entity'; +import { Editor, EditorService } from '../Editor'; +import { RotateAxes } from './RotateAxes'; +import { TranslateAxex } from './TranslateAxes'; +export declare enum TransMode { + Move = 0, + Rotate = 1 +} +export declare class TransformServicess implements EditorService { + m_Ents: Entity[]; + private m_CurMode; + private m_CtrlAxes; + private m_Enable; + private m_Editor; + private m_Matrix; + constructor(ed: Editor); + get IsReady(): boolean; + Doit(e: MouseEvent): Promise; + private InitAxes; + get CurAxes(): RotateAxes | TranslateAxex; + set Mode(mode: TransMode); + set Matrix(mat: THREE.Matrix4); + private UpdateAxesMatrix; + set Enable(e: boolean); + Cancel(): void; +} +//# sourceMappingURL=TransformServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/TranstrolControl/TransformServices.d.ts.map b/types/Editor/TranstrolControl/TransformServices.d.ts.map new file mode 100644 index 0000000..018c77c --- /dev/null +++ b/types/Editor/TranstrolControl/TransformServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TransformServices.d.ts","sourceRoot":"","sources":["../../../../src/Editor/TranstrolControl/TransformServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAI9D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAMlD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,oBAAY,SAAS;IAEjB,IAAI,IAAI;IACR,MAAM,IAAI;CAEb;AAID,qBAAa,kBAAmB,YAAW,aAAa;IAEpD,MAAM,EAAE,MAAM,EAAE,CAAM;IACtB,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,UAAU,CAA8E;IAChG,OAAO,CAAC,QAAQ,CAAiB;IAEjC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAsC;gBAC1C,EAAE,EAAE,MAAM;IAmCtB,IAAI,OAAO,YAGV;IACK,IAAI,CAAC,CAAC,EAAE,UAAU;IAwCxB,OAAO,CAAC,QAAQ;IAWhB,IAAI,OAAO,+BAGV;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAUvB;IAED,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAI5B;IAED,OAAO,CAAC,gBAAgB;IASxB,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAIpB;IACD,MAAM;CAQT"} \ No newline at end of file diff --git a/types/Editor/TranstrolControl/TranslateAxes.d.ts b/types/Editor/TranstrolControl/TranslateAxes.d.ts new file mode 100644 index 0000000..90d3205 --- /dev/null +++ b/types/Editor/TranstrolControl/TranslateAxes.d.ts @@ -0,0 +1,10 @@ +import { CoorAxes } from './CoorAxes'; +export declare class TranslateAxex extends CoorAxes { + m_ActiveIndex: number; + private m_OriginFace; + constructor(); + set AxtiveIndex(v: number); + get AxtiveIndex(): number; + Rest(): void; +} +//# sourceMappingURL=TranslateAxes.d.ts.map \ No newline at end of file diff --git a/types/Editor/TranstrolControl/TranslateAxes.d.ts.map b/types/Editor/TranstrolControl/TranslateAxes.d.ts.map new file mode 100644 index 0000000..bf796af --- /dev/null +++ b/types/Editor/TranstrolControl/TranslateAxes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TranslateAxes.d.ts","sourceRoot":"","sources":["../../../../src/Editor/TranstrolControl/TranslateAxes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,aAAc,SAAQ,QAAQ;IAEvC,aAAa,EAAE,MAAM,CAAK;IAC1B,OAAO,CAAC,YAAY,CAAa;;IAkBjC,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAKxB;IACD,IAAI,WAAW,IANI,MAAM,CASxB;IAED,IAAI;CAOP"} \ No newline at end of file diff --git a/types/Editor/UCSServices.d.ts b/types/Editor/UCSServices.d.ts new file mode 100644 index 0000000..7e9cd17 --- /dev/null +++ b/types/Editor/UCSServices.d.ts @@ -0,0 +1,20 @@ +import { Matrix4, Object3D } from 'three'; +import { Viewer } from '../GraphicsSystem/Viewer'; +import { Editor } from './Editor'; +export declare enum UCSPsotion { + Origin = 0, + LeftBottom = 1 +} +export declare class UCSServices { + private _Editor; + private _UCSMatrix; + private _UcsObj; + private _DisplayPosition; + constructor(_Editor: Editor); + private Update; + set UCSPsotion(type: UCSPsotion); + get UCSMatrix(): Matrix4; + set UCSMatrix(m: Matrix4); +} +export declare function MatrixToPreViewMat(mtx: Matrix4, view: Viewer, obj: Object3D, displayPosition: UCSPsotion): void; +//# sourceMappingURL=UCSServices.d.ts.map \ No newline at end of file diff --git a/types/Editor/UCSServices.d.ts.map b/types/Editor/UCSServices.d.ts.map new file mode 100644 index 0000000..68d0109 --- /dev/null +++ b/types/Editor/UCSServices.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UCSServices.d.ts","sourceRoot":"","sources":["../../../src/Editor/UCSServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAW,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,oBAAY,UAAU;IAElB,MAAM,IAAI;IACV,UAAU,IAAI;CACjB;AAGD,qBAAa,WAAW;IAKR,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,gBAAgB,CAAqB;gBACzB,OAAO,EAAE,MAAM;IAenC,OAAO,CAAC,MAAM;IAMd,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,EAO9B;IAED,IAAI,SAAS,IAAI,OAAO,CAGvB;IACD,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAIvB;CACJ;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,QAoBxG"} \ No newline at end of file diff --git a/types/Editor/UserConfig.d.ts b/types/Editor/UserConfig.d.ts new file mode 100644 index 0000000..776a742 --- /dev/null +++ b/types/Editor/UserConfig.d.ts @@ -0,0 +1,123 @@ +import { RenderType } from "../GraphicsSystem/RenderType"; +import { DrillingOption } from "../UI/Store/drillInterface"; +import { IWineRackOption } from "../UI/Store/WineRackInterface"; +import { IBaseOption, IGrooveOption } from "../UI/Store/BoardInterface"; +import { IConfigStore } from "../UI/Store/BoardStore"; +import { IConfigOption } from "../UI/Components/Board/UserConfig"; +import { AAType, ViewDirType } from "../Common/SystemEnum"; +export interface IMaxSizeProps extends IBaseOption { + height: number; + width: number; + isShow: boolean; +} +export interface ISystemConfig extends IBaseOption { + aaType: AAType; + maxHightightCount: number; + snapSize: number; + background: string; + layoutBackground: string; +} +export interface ICursorConfig extends IBaseOption { + D2: number; + D3: number; + SquareSize: number; +} +export declare class UserConfig implements IConfigStore { + private readonly _version; + _renderType: RenderType; + maxSize: IMaxSizeProps; + private _drillConfigs; + openDrillingReactor: boolean; + openAutoCuttingReactor: boolean; + /**打开将检测排钻是否在板件内*/ + openExactDrill: boolean; + winerackConfig: IWineRackOption; + userConfigName: { + [key: string]: string; + }; + private modeling2HoleRad; + isAdmin: boolean; + isMaster: boolean; + rights: any[]; + kjlConfig: IGrooveOption; + SystemConfig: ISystemConfig; + viewDirType: ViewDirType; + useCtrlRotate: boolean; + cursorSize: ICursorConfig; + autoSaveConfig: { + enable: boolean; + time: number; + }; + showLines: boolean; + keepConfig: boolean; + autoClearHistory: boolean; + chaidanOption: { + changXiuBian: number; + duanXiuBian: number; + useDefaultRad: boolean; + radius: number; + modeling2HoleRad: number; + isCheckInterfere: boolean; + noModeingData: string; + }; + autoLines: boolean; + dimTextHeight: number; + performanceConfig: { + fakersweep: boolean; + disablerefcut: boolean; + disablecheckgroove: boolean; + }; + lineWidth: number; + forceFilterPxl: boolean; + checkSealing: boolean; + sealingColorMap: [string, string][]; + constructor(); + Init(): void; + set RenderType(t: RenderType); + get RenderType(): RenderType; + SetRenderTypeEvent(): void; + get DrillConfigs(): Map; + set DrillConfigs(config: Map); + SetDrillConfigsEvent(): void; + configName: string; + configsNames: string[]; + InitOption(): void; + SaveConfig(): { + option: { + version: number; + openDrillingReactor: boolean; + openAutoCuttingReactor: boolean; + maxSize: IMaxSizeProps; + kjlConfig: IGrooveOption; + systemConfig: ISystemConfig; + viewDirType: ViewDirType; + useCtrlRotate: boolean; + cursorSize: ICursorConfig; + autoSaveConfig: { + enable: boolean; + time: number; + }; + showLines: boolean; + keepConfig: boolean; + autoClearHistory: boolean; + chaidanOption: { + changXiuBian: number; + duanXiuBian: number; + useDefaultRad: boolean; + radius: number; + modeling2HoleRad: number; + isCheckInterfere: boolean; + noModeingData: string; + }; + autoLines: boolean; + dimTextHeight: number; + lineWidth: number; + forceFilterPxl: boolean; + checkSealing: boolean; + sealingColorMap: [string, string][]; + }; + }; + UpdateOption(config: IConfigOption): void; +} +export declare const userConfig: UserConfig; +//# sourceMappingURL=UserConfig.d.ts.map \ No newline at end of file diff --git a/types/Editor/UserConfig.d.ts.map b/types/Editor/UserConfig.d.ts.map new file mode 100644 index 0000000..7592a33 --- /dev/null +++ b/types/Editor/UserConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UserConfig.d.ts","sourceRoot":"","sources":["../../../src/Editor/UserConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,aAAc,SAAQ,WAAW;IAE9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAE9C,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAE9C,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,UAAW,YAAW,YAAY;IAE3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAC/B,WAAW,EAAE,UAAU,CAAwB;IACnC,OAAO,EAAE,aAAa,CAIhC;IACU,OAAO,CAAC,aAAa,CAA4C;IACjE,mBAAmB,UAAQ;IAC3B,sBAAsB,UAAQ;IAC1C,kBAAkB;IACN,cAAc,UAAQ;IAClC,cAAc,EAAE,eAAe,CAAC;IAChC,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KAAE,CAAM;IAChD,OAAO,CAAC,gBAAgB,CAAM;IAClB,OAAO,UAAS;IAC5B,QAAQ,UAAS;IACjB,MAAM,QAAM;IACA,SAAS,EAAE,aAAa,CAIlC;IACU,YAAY,EAAE,aAAa,CAMrC;IACU,WAAW,EAAE,WAAW,CAAkB;IAC1C,aAAa,UAAQ;IACrB,UAAU,EAAE,aAAa,CAInC;IACU,cAAc;;;MAGxB;IACU,SAAS,UAAS;IAClB,UAAU,UAAS;IACnB,gBAAgB,UAAQ;IACxB,aAAa;;;;;;;;MAQvB;IACU,SAAS,UAAS;IAC9B,aAAa,SAAM;IAEP,iBAAiB;;;;MAI3B;IACF,SAAS,SAAK;IACF,cAAc,UAAQ;IAClC,YAAY,UAAS;IACrB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;;IAKzC,IAAI;IAMJ,IAAI,UAAU,CAAC,CAAC,EAAE,UAAU,EAU3B;IAED,IAAI,UAAU,IAZI,UAAU,CAYiB;IAE7C,kBAAkB;IAClB,IAAI,YAAY,IAIS,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CADrD;IACD,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAIrD;IACD,oBAAoB;IACpB,UAAU,SAAa;IACvB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,UAAU;IAuBV,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BV,YAAY,CAAC,MAAM,EAAE,aAAa;CA6DrC;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"} \ No newline at end of file diff --git a/types/Editor/VisualSpaceBox.d.ts b/types/Editor/VisualSpaceBox.d.ts new file mode 100644 index 0000000..e11754d --- /dev/null +++ b/types/Editor/VisualSpaceBox.d.ts @@ -0,0 +1,54 @@ +import { Matrix3, Object3D, Vector3 } from "three"; +import { CADFiler } from "../DatabaseServices/CADFiler"; +import { Entity } from "../DatabaseServices/Entity/Entity"; +import { RenderType } from "../GraphicsSystem/RenderType"; +import { ObjectSnapMode } from "./ObjectSnapMode"; +import { Box3Ext } from "../Geometry/Box"; +export declare class VisualSpaceBox extends Entity { + protected _Length: number; + protected _Width: number; + protected _Height: number; + OnlyRenderType: boolean; + private _LText; + private _WText; + private _HText; + private _IsRoot; + private _DisplayLength; + private _DisplayWidth; + private _DisplayHeight; + constructor(_Length?: number, _Width?: number, _Height?: number); + get Length(): number; + get Width(): number; + get Height(): number; + set IsRoot(b: boolean); + set DisplayWidth(b: boolean); + set DisplayLength(b: boolean); + set DisplayHeight(b: boolean); + SetSize(l: number, w: number, h: number): void; + get BoundingBoxInOCS(): Box3Ext; + /** + * + * @param snapMode 捕捉模式(单一) + * @param pickPoint const + * @param lastPoint const + * @param viewXform const 最近点捕捉需要这个变量 + * @returns object snap points + */ + GetObjectSnapPoints(snapMode: ObjectSnapMode, pickPoint: Vector3, lastPoint: Vector3, viewXform?: Matrix3): Vector3[]; + InitDrawObject(renderType?: RenderType): Object3D; + UpdateDrawObject(type: RenderType, obj: Object3D): void; + protected _ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; + GetGripPoints(): Array; + MoveGripPoints(indexList: number[], vec: Vector3): void; + GetStretchPoints(): Array; + /** + * 拉伸夹点,用于Stretch命令 + * + * @param {Array} indexList 拉伸点索引列表. + * @param {Vector3} vec 移动向量 + * @memberof Entity + */ + MoveStretchPoints(indexList: Array, vec: Vector3): void; +} +//# sourceMappingURL=VisualSpaceBox.d.ts.map \ No newline at end of file diff --git a/types/Editor/VisualSpaceBox.d.ts.map b/types/Editor/VisualSpaceBox.d.ts.map new file mode 100644 index 0000000..eeef0c2 --- /dev/null +++ b/types/Editor/VisualSpaceBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"VisualSpaceBox.d.ts","sourceRoot":"","sources":["../../../src/Editor/VisualSpaceBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwD,OAAO,EAAiB,QAAQ,EAAE,OAAO,EAAQ,MAAM,OAAO,CAAC;AAK9H,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAK3D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI1C,qBACa,cAAe,SAAQ,MAAM;IAgBlC,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,OAAO,EAAE,MAAM;IAhB7B,cAAc,UAAQ;IAEtB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAY;IAEd,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,cAAc,CAAQ;gBAI5B,OAAO,GAAE,MAAU,EACnB,MAAM,GAAE,MAAU,EAClB,OAAO,GAAE,MAAU;IAgBjC,IAAI,MAAM,WAA2B;IACrC,IAAI,KAAK,WAA0B;IACnC,IAAI,MAAM,WAA2B;IAGrC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,EAyBpB;IAED,IAAI,YAAY,CAAC,CAAC,EAAE,OAAO,EAQ1B;IACD,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,EAQ3B;IACD,IAAI,aAAa,CAAC,CAAC,EAAE,OAAO,EAQ3B;IAED,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAWvC,IAAI,gBAAgB,YAGnB;IAGD;;;;;;;SAOK;IACL,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IA4BZ,cAAc,CAAC,UAAU,GAAE,UAAiC;IAkB5D,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAoDhD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAuBxB,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAe/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IA4ChD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;CAM3D"} \ No newline at end of file diff --git a/types/GLSL/GoochShader.d.ts b/types/GLSL/GoochShader.d.ts new file mode 100644 index 0000000..9fd2921 --- /dev/null +++ b/types/GLSL/GoochShader.d.ts @@ -0,0 +1,33 @@ +import { ShaderMaterialParameters, Vector3 } from "three"; +export declare function GetGoochShader(): { + uniforms: { + LightPosition: { + type: string; + value: Vector3; + }; + SurfaceColor: { + type: string; + value: Vector3; + }; + WarmColor: { + type: string; + value: Vector3; + }; + CoolColor: { + type: string; + value: Vector3; + }; + DiffuseWarm: { + type: string; + value: number; + }; + DiffuseCool: { + type: string; + value: number; + }; + }; + vertexShader: any; + fragmentShader: any; +}; +export declare function GetGoodShaderSimple(color?: Vector3): ShaderMaterialParameters; +//# sourceMappingURL=GoochShader.d.ts.map \ No newline at end of file diff --git a/types/GLSL/GoochShader.d.ts.map b/types/GLSL/GoochShader.d.ts.map new file mode 100644 index 0000000..1b9366f --- /dev/null +++ b/types/GLSL/GoochShader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GoochShader.d.ts","sourceRoot":"","sources":["../../../src/GLSL/GoochShader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG1D,wBAAgB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe7B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,OAAqB,GAAG,wBAAwB,CAa1F"} \ No newline at end of file diff --git a/types/GLSL/GoochShader1.d.ts b/types/GLSL/GoochShader1.d.ts new file mode 100644 index 0000000..cee77d1 --- /dev/null +++ b/types/GLSL/GoochShader1.d.ts @@ -0,0 +1,6 @@ +export declare const GoochShader1: { + uniforms: {}; + vertexShader: any; + fragmentShader: any; +}; +//# sourceMappingURL=GoochShader1.d.ts.map \ No newline at end of file diff --git a/types/GLSL/GoochShader1.d.ts.map b/types/GLSL/GoochShader1.d.ts.map new file mode 100644 index 0000000..b5a4d2b --- /dev/null +++ b/types/GLSL/GoochShader1.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GoochShader1.d.ts","sourceRoot":"","sources":["../../../src/GLSL/GoochShader1.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;CAOxB,CAAC"} \ No newline at end of file diff --git a/types/Geometry/BSPGroupParse.d.ts b/types/Geometry/BSPGroupParse.d.ts new file mode 100644 index 0000000..1a06c8c --- /dev/null +++ b/types/Geometry/BSPGroupParse.d.ts @@ -0,0 +1,27 @@ +import { Vector3 } from "three"; +import { CSG } from "../csg/core/CSG"; +import { Polygon } from "../csg/core/math/Polygon3"; +/** + * 解决 THREEBSP(CSG) 产生的结果没有办法得到分裂的个数. + * 本类分析了THREEBSP的组合情况. + * + * Example: + * + * let topology = new BSPGroupParse(csg); + * topology.parse(); + */ +export declare class BSPGroupParse { + fractionDigits: number; + constructor(bsp?: CSG, fractionDigits?: number); + Add(poly: Polygon): void; + /** + * 返回组合点 + */ + Parse(): Vector3[][]; + private map; + private Get; + private GetPts; + private vecMap; + private GenerateP; +} +//# sourceMappingURL=BSPGroupParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/BSPGroupParse.d.ts.map b/types/Geometry/BSPGroupParse.d.ts.map new file mode 100644 index 0000000..7c8a94b --- /dev/null +++ b/types/Geometry/BSPGroupParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BSPGroupParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BSPGroupParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAEQ,cAAc;gBAAhC,GAAG,CAAC,EAAE,GAAG,EAAS,cAAc,SAAI;IAMhD,GAAG,CAAC,IAAI,EAAE,OAAO;IAajB;;OAEG;IACH,KAAK,IAAI,OAAO,EAAE,EAAE;IAoBpB,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS;CAMpB"} \ No newline at end of file diff --git a/types/Geometry/BoardUVGenerator.d.ts b/types/Geometry/BoardUVGenerator.d.ts new file mode 100644 index 0000000..391e4e5 --- /dev/null +++ b/types/Geometry/BoardUVGenerator.d.ts @@ -0,0 +1,12 @@ +import { ExtrudeBufferGeometry, UVGenerator, Vector2 } from "three"; +declare class BoardUVGenerator implements UVGenerator { + generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[]; + generateSideWallUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number, indexD: number): Vector2[]; +} +declare class BoardUVGenerator2 extends BoardUVGenerator { + generateTopUV(geometry: ExtrudeBufferGeometry, vertices: number[], indexA: number, indexB: number, indexC: number): Vector2[]; +} +export declare let boardUVGenerator: BoardUVGenerator; +export declare let boardUVGenerator2: BoardUVGenerator2; +export {}; +//# sourceMappingURL=BoardUVGenerator.d.ts.map \ No newline at end of file diff --git a/types/Geometry/BoardUVGenerator.d.ts.map b/types/Geometry/BoardUVGenerator.d.ts.map new file mode 100644 index 0000000..0578db9 --- /dev/null +++ b/types/Geometry/BoardUVGenerator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardUVGenerator.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BoardUVGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEpE,cAAM,gBAAiB,YAAW,WAAW;IAEzC,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAejH,kBAAkB,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAoCzI;AAED,cAAM,iBAAkB,SAAQ,gBAAgB;IAE5C,aAAa,CAAC,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAepH;AAED,eAAO,IAAI,gBAAgB,kBAAyB,CAAC;AACrD,eAAO,IAAI,iBAAiB,mBAA0B,CAAC"} \ No newline at end of file diff --git a/types/Geometry/Box.d.ts b/types/Geometry/Box.d.ts new file mode 100644 index 0000000..972ee3e --- /dev/null +++ b/types/Geometry/Box.d.ts @@ -0,0 +1,24 @@ +import { Box3 } from 'three'; +/** + * 盒子的切割类型 + */ +export declare enum SplitType { + X = 0, + Y = 1, + Z = 2 +} +/** + * 扩展Box3,添加切割方法,体积等 + */ +export declare class Box3Ext extends Box3 { + TempData: any; + get Volume(): number; + isSolid(minSize?: number): boolean; + substract(b: Box3Ext, spaceType: SplitType): Box3Ext[]; + clampSpace(b2: Box3Ext, splitType: SplitType): this; + intersectsBox(box: Box3, fuzz?: number): boolean; +} +export declare function IntersectsBox(box1: Box3, box2: Box3, fuzz?: number): boolean; +/**盒子二维面是否相交 */ +export declare function IntersectBox2(box1: Box3, box2: Box3, fuzz?: number): boolean; +//# sourceMappingURL=Box.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Box.d.ts.map b/types/Geometry/Box.d.ts.map new file mode 100644 index 0000000..560b4b6 --- /dev/null +++ b/types/Geometry/Box.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Box.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,IAAI,EAAE,MAAM,OAAO,CAAC;AAEtC;;GAEG;AACH,oBAAY,SAAS;IAEjB,CAAC,IAAI;IACL,CAAC,IAAI;IACL,CAAC,IAAI;CACR;AAED;;GAEG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAE7B,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,MAAM,WAIT;IAGD,OAAO,CAAC,OAAO,SAAI;IAInB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAiB1C,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAS5C,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO;CAIjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,GAAG,OAAO,CAK1E;AAED,eAAe;AACf,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,SAAO,WAIhE"} \ No newline at end of file diff --git a/types/Geometry/BufferGeometryUtils.d.ts b/types/Geometry/BufferGeometryUtils.d.ts new file mode 100644 index 0000000..b49945e --- /dev/null +++ b/types/Geometry/BufferGeometryUtils.d.ts @@ -0,0 +1,15 @@ +import { BufferGeometry, Vector3, BufferAttribute, ShapeGeometry } from "three"; +export declare namespace BufferGeometryUtils { + function CreateFromPts(pts: Vector3[]): BufferGeometry; + /** + * 更新BufferGeometry的顶点 + * @param geo + * @param pts + * @returns 当成功时返回true,更新失败时返回false + */ + function UpdatePts(geo: BufferGeometry, pts: Vector3[]): boolean; + function ArrowGeometry(): ShapeGeometry; + function MergeBufferGeometries(geometries: BufferGeometry[], useGroups?: boolean): BufferGeometry; + function MergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute; +} +//# sourceMappingURL=BufferGeometryUtils.d.ts.map \ No newline at end of file diff --git a/types/Geometry/BufferGeometryUtils.d.ts.map b/types/Geometry/BufferGeometryUtils.d.ts.map new file mode 100644 index 0000000..e314b50 --- /dev/null +++ b/types/Geometry/BufferGeometryUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BufferGeometryUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BufferGeometryUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAS,MAAM,OAAO,CAAC;AAGvF,yBAAiB,mBAAmB,CACpC;IACI,SAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,cAAc,CAG5D;IAED;;;;;OAKG;IACH,SAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAgBtE;IAGD,SAAgB,aAAa,kBAa5B;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,SAAS,GAAE,OAAe,GAAG,cAAc,CAuK9G;IAED,SAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,eAAe,CAuCpF;CAEJ"} \ No newline at end of file diff --git a/types/Geometry/CheckIntersect.d.ts b/types/Geometry/CheckIntersect.d.ts new file mode 100644 index 0000000..045842c --- /dev/null +++ b/types/Geometry/CheckIntersect.d.ts @@ -0,0 +1,19 @@ +import { Box2 } from "three"; +export interface Vec2 { + x: number; + y: number; +} +/** + * 盒子相交测试,快速判断盒子和直线或者圆是否有相交 + */ +export declare class BoxCheckIntersect { + p1: Vec2; + p2: Vec2; + p3: Vec2; + p4: Vec2; + box: Box2; + constructor(box: Box2); + IsIntersectLine(p1: Vec2, p2: Vec2): boolean; + IsIntersectCircle(cen: Vec2, radius: number): boolean; +} +//# sourceMappingURL=CheckIntersect.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CheckIntersect.d.ts.map b/types/Geometry/CheckIntersect.d.ts.map new file mode 100644 index 0000000..bf22b3d --- /dev/null +++ b/types/Geometry/CheckIntersect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CheckIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CheckIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,OAAO,CAAC;AAWjD,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAwBD;;GAEG;AACH,qBAAa,iBAAiB;IAE1B,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,GAAG,EAAE,IAAI,CAAC;gBACE,GAAG,EAAE,IAAI;IAWrB,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO;IAsB5C,iBAAiB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAMxD"} \ No newline at end of file diff --git a/types/Geometry/CoordinateSystem.d.ts b/types/Geometry/CoordinateSystem.d.ts new file mode 100644 index 0000000..86a75c8 --- /dev/null +++ b/types/Geometry/CoordinateSystem.d.ts @@ -0,0 +1,18 @@ +import { Matrix4, Vector3 } from 'three'; +/** + * 坐标系运算. + */ +export declare class CoordinateSystem { + Postion: Vector3; + XAxis: Vector3; + YAxis: Vector3; + ZAxis: Vector3; + constructor(postion?: Vector3, xAxis?: Vector3, yAxis?: Vector3, zAxis?: Vector3); + applyMatrix4(mat4: Matrix4): this; + getMatrix4(): Matrix4; + CopyForm(mat4: Matrix4): this; + extractBasis(xAxisA: Vector3, yAxisA: Vector3, zAxisA: Vector3): void; + copy(cs: CoordinateSystem): CoordinateSystem; + clone(): CoordinateSystem; +} +//# sourceMappingURL=CoordinateSystem.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CoordinateSystem.d.ts.map b/types/Geometry/CoordinateSystem.d.ts.map new file mode 100644 index 0000000..75402b6 --- /dev/null +++ b/types/Geometry/CoordinateSystem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CoordinateSystem.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CoordinateSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;gBAEH,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO;IAQhF,YAAY,CAAC,IAAI,EAAE,OAAO;IAU1B,UAAU,IAAI,OAAO;IAOrB,QAAQ,CAAC,IAAI,EAAE,OAAO;IAOtB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAM9D,IAAI,CAAC,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;IAQ5C,KAAK;CASR"} \ No newline at end of file diff --git a/types/Geometry/Count.d.ts b/types/Geometry/Count.d.ts new file mode 100644 index 0000000..e2071fd --- /dev/null +++ b/types/Geometry/Count.d.ts @@ -0,0 +1,14 @@ +/** + * 一个简单的计数器实现,本质是使用一个Map来保存元素的个数 + * + * 例: + * let count = new Count(); + * count.AddCount("Test", 1); + * count.GetCount("Test");//现在 Test 的个数为1 + */ +export declare class Count { + private m_CountMap; + GetCount(obj: any): number; + AddCount(obj: any, add: number): void; +} +//# sourceMappingURL=Count.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Count.d.ts.map b/types/Geometry/Count.d.ts.map new file mode 100644 index 0000000..b8a2f51 --- /dev/null +++ b/types/Geometry/Count.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Count.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Count.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,qBAAa,KAAK;IAEd,OAAO,CAAC,UAAU,CAA8B;IAChD,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAU1B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM;CAIjC"} \ No newline at end of file diff --git a/types/Geometry/CreateContour2.d.ts b/types/Geometry/CreateContour2.d.ts new file mode 100644 index 0000000..9985356 --- /dev/null +++ b/types/Geometry/CreateContour2.d.ts @@ -0,0 +1,7 @@ +import { Contour } from "../DatabaseServices/Contour"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +/** + * 某些时候我们不能创建轮廓,此时我们使用类似c2r的方法来构建一个外部轮廓. + */ +export declare function CreateContour2(curves: Curve[], fuzz?: number): Contour | undefined; +//# sourceMappingURL=CreateContour2.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CreateContour2.d.ts.map b/types/Geometry/CreateContour2.d.ts.map new file mode 100644 index 0000000..9cf9621 --- /dev/null +++ b/types/Geometry/CreateContour2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CreateContour2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateContour2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAKzD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,SAAO,GAAG,OAAO,GAAG,SAAS,CA2FhF"} \ No newline at end of file diff --git a/types/Geometry/CreateWireframe.d.ts b/types/Geometry/CreateWireframe.d.ts new file mode 100644 index 0000000..0f6da97 --- /dev/null +++ b/types/Geometry/CreateWireframe.d.ts @@ -0,0 +1,8 @@ +import { BufferGeometry, Line, LineBasicMaterial, Object3D } from "three"; +import { Board } from "../DatabaseServices/Entity/Board"; +import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude"; +import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole"; +export declare function CreateWireframe(en3D: Board | ExtrudeSolid): Object3D[]; +export declare function FastWireframe(br: ExtrudeSolid, color?: number): Line[]; +export declare function FastWireframe2(dr: ExtrudeHole, color?: number): Line[]; +//# sourceMappingURL=CreateWireframe.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CreateWireframe.d.ts.map b/types/Geometry/CreateWireframe.d.ts.map new file mode 100644 index 0000000..7581c59 --- /dev/null +++ b/types/Geometry/CreateWireframe.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CreateWireframe.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CreateWireframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAoC,IAAI,EAAE,iBAAiB,EAAgB,QAAQ,EAA4B,MAAM,OAAO,CAAC;AAGpJ,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAGtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,YAAY,cAsEzD;AAYD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,SAAI,6CAgDxD;AACD,wBAAgB,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,SAAI,6CAoCxD"} \ No newline at end of file diff --git a/types/Geometry/CurveIntersection.d.ts b/types/Geometry/CurveIntersection.d.ts new file mode 100644 index 0000000..9566d6a --- /dev/null +++ b/types/Geometry/CurveIntersection.d.ts @@ -0,0 +1,32 @@ +import { Box3, Vector3 } from "three"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { IntersectOption } from "../GraphicsSystem/IntersectWith"; +/** + * 简化优化版本的曲线求交, 优化版本可以参考(算法导论33.2 确定任意一对线段是否相交 p599) + */ +export declare class CurveIntersection { + protected fuzz: number; + protected boxMap: Map; + /** + * 交点数据集,key 为曲线 value 为和它相交的(曲线和交点的Map) + */ + intersect: Map>; + intersect2: Map; + /** + * @param {Curve[]} cus 请注意数组的顺序会被更改,如果你在意数组的顺序,请拷贝数组后传进来 + * @memberof CurveIntersection + */ + constructor(cus: Curve[], parseIntersectionParam?: boolean, intType?: IntersectOption, fuzz?: number); + protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[]; + protected AppendIntersectionParams(curve: Curve, params: number[]): void; + protected GenBox(cus: Curve[]): void; + protected SortCurve(cus: Curve[]): void; + GetIntersect(cu: Curve): Map; +} +export declare class CurveIntersection2 extends CurveIntersection { + /** + * Curve2Polyline使用这个时,为了避免多余的交点导致曲线切割过度,过滤掉无关的点 + */ + protected IntersectWith2(c1: Curve, c2: Curve, intType: IntersectOption): import("../GraphicsSystem/IntersectWith").IntersectResult[]; +} +//# sourceMappingURL=CurveIntersection.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CurveIntersection.d.ts.map b/types/Geometry/CurveIntersection.d.ts.map new file mode 100644 index 0000000..98d531b --- /dev/null +++ b/types/Geometry/CurveIntersection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CurveIntersection.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE;;GAEG;AACH,qBAAa,iBAAiB;IAe0E,SAAS,CAAC,IAAI;IAZlH,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAa;IAE/C;;OAEG;IACH,SAAS,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAa;IACzD,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAa;IAE7C;;;OAGG;gBACS,GAAG,EAAE,KAAK,EAAE,EAAE,sBAAsB,UAAQ,EAAE,OAAO,kBAAiC,EAAY,IAAI,SAAO;IA0CzH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;IAKvE,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAWjE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE;IAM7B,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;IAQhC,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;CASjD;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;IAErD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe;CAW1E"} \ No newline at end of file diff --git a/types/Geometry/CurveMap.d.ts b/types/Geometry/CurveMap.d.ts new file mode 100644 index 0000000..a2cbac8 --- /dev/null +++ b/types/Geometry/CurveMap.d.ts @@ -0,0 +1,51 @@ +import { Vector3 } from "three"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +export interface Vertice { + position: Vector3; + routes: Route[]; +} +export interface Route { + curve: Curve; + from: Vertice; + to: Vertice; + length: number; + isReverse: boolean; + an?: number; + s: Vector3; + e: Vector3; +} +/** + * 曲线连接图 + * 所有的顶点和边的关系 + */ +export declare class CurveMap { + numdimensions: number; + _RemoveSortLine: boolean; + private multiplier; + constructor(numdimensions?: number, _RemoveSortLine?: boolean, multiplier?: number); + _VerticeMap: Map; + _Vertices: Vertice[]; + /** + * 得到节点图的所有站点列表 + */ + get Stands(): Vertice[]; + /** + * @param curve + * @param [isArc=curve instanceof Arc] + * @param [removeDuplicate=false] + * @returns 加入成功? + */ + AddCurveToMap(curve: Curve, isArc?: boolean, removeDuplicate?: boolean, parseAngle?: boolean): boolean; + /** + * 获得唯一的顶点 + */ + GetOnlyVertice(p: Vector3): Vertice; + _LookupTable: { + [key: string]: Vector3; + }; + /** + * 生成一个唯一的向量. + */ + GenerateP(p: Vector3): Vector3; +} +//# sourceMappingURL=CurveMap.d.ts.map \ No newline at end of file diff --git a/types/Geometry/CurveMap.d.ts.map b/types/Geometry/CurveMap.d.ts.map new file mode 100644 index 0000000..0e65792 --- /dev/null +++ b/types/Geometry/CurveMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CurveMap.d.ts","sourceRoot":"","sources":["../../../src/Geometry/CurveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAIzD,MAAM,WAAW,OAAO;IAGpB,QAAQ,EAAE,OAAO,CAAC;IAElB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAGD,MAAM,WAAW,KAAK;IAElB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,CAAC,EAAE,OAAO,CAAC;IACX,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,QAAQ;IAGN,aAAa;IACb,eAAe;IACtB,OAAO,CAAC,UAAU;gBAFX,aAAa,SAAI,EACjB,eAAe,UAAQ,EACtB,UAAU,SAAsB;IAQ5C,WAAW,wBAA+B;IAE1C,SAAS,EAAE,OAAO,EAAE,CAAM;IAE1B;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,EAAE,CAGtB;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAE,OAA8B,EAAE,eAAe,GAAE,OAAe,EAAE,UAAU,UAAQ,GAAG,OAAO;IA2CjI;;MAEE;IACF,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAYnC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KAAE,CAAM;IAE/C;;OAEG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;CAmCjC"} \ No newline at end of file diff --git a/types/Geometry/DoIntersect.d.ts b/types/Geometry/DoIntersect.d.ts new file mode 100644 index 0000000..68fe0d2 --- /dev/null +++ b/types/Geometry/DoIntersect.d.ts @@ -0,0 +1,6 @@ +import { Vec2 } from "./CheckIntersect"; +/** + * 判断线段`p1q1`和线段`p2q2`是否相交. + */ +export declare function doIntersect(p1: Vec2, q1: Vec2, p2: Vec2, q2: Vec2): boolean; +//# sourceMappingURL=DoIntersect.d.ts.map \ No newline at end of file diff --git a/types/Geometry/DoIntersect.d.ts.map b/types/Geometry/DoIntersect.d.ts.map new file mode 100644 index 0000000..9b523ef --- /dev/null +++ b/types/Geometry/DoIntersect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoIntersect.d.ts","sourceRoot":"","sources":["../../../src/Geometry/DoIntersect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AA8BxC;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,OAAO,CAyB3E"} \ No newline at end of file diff --git a/types/Geometry/DrillParse/BoardGetFace.d.ts b/types/Geometry/DrillParse/BoardGetFace.d.ts new file mode 100644 index 0000000..cacb0d2 --- /dev/null +++ b/types/Geometry/DrillParse/BoardGetFace.d.ts @@ -0,0 +1,22 @@ +import { Matrix4 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Face } from "./Face"; +export declare const CanDrawHoleFuzz = 0.01; +export declare enum BoardFaceType { + Side = 0, + NoSide = 1 +} +export declare class BoardGetFace { + Board: Board; + Faces: Face[]; + constructor(Board: Board); + ParseFaces(): void; + GetTopAndBottomFace(isEdgeFace?: boolean): void; + GetSideFaces(): void; + IntersectFace(br: BoardGetFace, bInsEqual?: boolean): Face[]; + static GetAllSidesFaces(br: Board, isMergeFace?: boolean): Face[]; +} +export declare function MatrixIsCoplane2(matrixFrom: Matrix4, matrixTo: Matrix4, fuzz?: number): boolean; +export declare function GetSideFaceMtx(cu: Curve, inverseZ?: boolean): Matrix4; +//# sourceMappingURL=BoardGetFace.d.ts.map \ No newline at end of file diff --git a/types/Geometry/DrillParse/BoardGetFace.d.ts.map b/types/Geometry/DrillParse/BoardGetFace.d.ts.map new file mode 100644 index 0000000..b4a037d --- /dev/null +++ b/types/Geometry/DrillParse/BoardGetFace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardGetFace.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/BoardGetFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAI5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI9B,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC,oBAAY,aAAa;IAErB,IAAI,IAAI;IACR,MAAM,IAAI;CACb;AACD,qBAAa,YAAY;IAGF,KAAK,EAAE,KAAK;IAD/B,KAAK,EAAE,IAAI,EAAE,CAAM;gBACA,KAAK,EAAE,KAAK;IAI/B,UAAU;IAOV,mBAAmB,CAAC,UAAU,UAAQ;IAqCtC,YAAY;IA0BZ,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI,EAAE;IAqBnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,UAAQ;CAwBzD;AAGD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,SAAO,GAAG,OAAO,CAe7F;AACD,wBAAgB,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAmBnE"} \ No newline at end of file diff --git a/types/Geometry/DrillParse/CollisionDetection.d.ts b/types/Geometry/DrillParse/CollisionDetection.d.ts new file mode 100644 index 0000000..920015b --- /dev/null +++ b/types/Geometry/DrillParse/CollisionDetection.d.ts @@ -0,0 +1,11 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { BoardGetFace } from "./BoardGetFace"; +import { Face } from "./Face"; +export declare class CollisionDetection { + private _Boards; + BoardGeList: BoardGetFace[]; + CollisonFaces: Face[]; + constructor(_Boards?: Board[]); + Check(): void; +} +//# sourceMappingURL=CollisionDetection.d.ts.map \ No newline at end of file diff --git a/types/Geometry/DrillParse/CollisionDetection.d.ts.map b/types/Geometry/DrillParse/CollisionDetection.d.ts.map new file mode 100644 index 0000000..531fc5e --- /dev/null +++ b/types/Geometry/DrillParse/CollisionDetection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CollisionDetection.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/CollisionDetection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,kBAAkB;IAIf,OAAO,CAAC,OAAO;IAF3B,WAAW,EAAE,YAAY,EAAE,CAAM;IACjC,aAAa,EAAE,IAAI,EAAE,CAAM;gBACP,OAAO,GAAE,KAAK,EAAO;IAIzC,KAAK;CAoCR"} \ No newline at end of file diff --git a/types/Geometry/DrillParse/Face.d.ts b/types/Geometry/DrillParse/Face.d.ts new file mode 100644 index 0000000..0a1686d --- /dev/null +++ b/types/Geometry/DrillParse/Face.d.ts @@ -0,0 +1,36 @@ +import { Box3, Matrix4, Vector3 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Region } from "../../DatabaseServices/Entity/Region"; +import { BoardFaceType } from "./BoardGetFace"; +export interface BoardFaceParams { + type: BoardFaceType; + length: number; + width: number; + localBoard: Board; + matrix4: Matrix4; + region?: Region; + isRect?: boolean; + drillType?: string; +} +export declare class Face { + type: BoardFaceType; + Length: number; + Width: number; + private _Region; + LocalBoard: Board; + InterBoard: Board; + isEqualType: boolean; + OCS: Matrix4; + IsRect: boolean; + DrillType: string; + constructor(parameters?: BoardFaceParams); + get Region(): Region; + get OCSInv(): Matrix4; + get Normal(): Vector3; + Intersect(f: Face): Face[]; + IsIntersect(f: Face, fuzz?: number, currentCoverBoxes?: Box3[]): { + isInt: boolean; + coverBoxesList?: Box3[]; + }; +} +//# sourceMappingURL=Face.d.ts.map \ No newline at end of file diff --git a/types/Geometry/DrillParse/Face.d.ts.map b/types/Geometry/DrillParse/Face.d.ts.map new file mode 100644 index 0000000..2fa5d4d --- /dev/null +++ b/types/Geometry/DrillParse/Face.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Face.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/DrillParse/Face.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAI9D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,qBAAa,IAAI;IAEb,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,OAAO,CAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,OAAO,CAAS;IAC7B,GAAG,EAAE,OAAO,CAAiB;IAC7B,MAAM,EAAE,OAAO,CAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;gBACN,UAAU,CAAC,EAAE,eAAe;IAkBxC,IAAI,MAAM,WAKT;IACD,IAAI,MAAM,YAGT;IACD,IAAI,MAAM,YAGT;IACD,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE;IAiF1B,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAO,EAAE,iBAAiB,GAAE,IAAI,EAAO,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;KAAE;CAwHlH"} \ No newline at end of file diff --git a/types/Geometry/EdgeGeometry.d.ts b/types/Geometry/EdgeGeometry.d.ts new file mode 100644 index 0000000..690e318 --- /dev/null +++ b/types/Geometry/EdgeGeometry.d.ts @@ -0,0 +1,20 @@ +import { BufferGeometry } from "three"; +import { CSG } from "../csg/core/CSG"; +import { Polygon } from "../csg/core/math/Polygon3"; +import { LineGeometry } from "three/examples/jsm/lines/LineGeometry"; +export declare class EdgesGeometry extends BufferGeometry { + /** + * 在使用Extrude实体的时候,有可能导致面无限分裂,并且有可能造成丢线问题,使用FromCSG方法可解. + */ + FromGeometry(geometry: any, thresholdAngle?: number): this; + /** + * 解决原来算法性能低下并且结果不理想的问题 + */ + FromCSG(csg: CSG): this; + PolygonsOutline(polygons: Polygon[], coords: number[]): void; +} +export declare class CLineGeometry extends LineGeometry { + FromCSG(csg: CSG): this; + PolygonsOutline(polygons: Polygon[], coords: number[]): void; +} +//# sourceMappingURL=EdgeGeometry.d.ts.map \ No newline at end of file diff --git a/types/Geometry/EdgeGeometry.d.ts.map b/types/Geometry/EdgeGeometry.d.ts.map new file mode 100644 index 0000000..098bbfa --- /dev/null +++ b/types/Geometry/EdgeGeometry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/EdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAA6H,MAAM,OAAO,CAAC;AAGxK,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAKrE,qBAAa,aAAc,SAAQ,cAAc;IAE7C;;OAEG;IACH,YAAY,CAAC,QAAQ,KAAA,EAAE,cAAc,GAAE,MAAU;IA8GjD;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,GAAG;IAyBhB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;CAqFxD;AAwBD,qBAAa,aAAc,SAAQ,YAAY;IAE3C,OAAO,CAAC,GAAG,EAAE,GAAG;IAyChB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;CAqFxD"} \ No newline at end of file diff --git a/types/Geometry/ExportObj.d.ts b/types/Geometry/ExportObj.d.ts new file mode 100644 index 0000000..90ae7ed --- /dev/null +++ b/types/Geometry/ExportObj.d.ts @@ -0,0 +1,3 @@ +import { Entity } from './../DatabaseServices/Entity/Entity'; +export declare function ExportObj(brs: Entity[]): Promise; +//# sourceMappingURL=ExportObj.d.ts.map \ No newline at end of file diff --git a/types/Geometry/ExportObj.d.ts.map b/types/Geometry/ExportObj.d.ts.map new file mode 100644 index 0000000..a3b5e95 --- /dev/null +++ b/types/Geometry/ExportObj.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportObj.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ExportObj.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAQ7D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,iBAqC5C"} \ No newline at end of file diff --git a/types/Geometry/ExportObj2.d.ts b/types/Geometry/ExportObj2.d.ts new file mode 100644 index 0000000..893d4ff --- /dev/null +++ b/types/Geometry/ExportObj2.d.ts @@ -0,0 +1,6 @@ +import { Entity } from '../DatabaseServices/Entity/Entity'; +export declare function ExportObj(brs: Entity[]): Promise; +export declare class Command_ExportObj2 { + exec(): Promise; +} +//# sourceMappingURL=ExportObj2.d.ts.map \ No newline at end of file diff --git a/types/Geometry/ExportObj2.d.ts.map b/types/Geometry/ExportObj2.d.ts.map new file mode 100644 index 0000000..0478bca --- /dev/null +++ b/types/Geometry/ExportObj2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExportObj2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ExportObj2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAM3D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,iBAyB5C;AAED,qBAAa,kBAAkB;IAErB,IAAI;CAUb"} \ No newline at end of file diff --git a/types/Geometry/ExtrudeEdgeGeometry.d.ts b/types/Geometry/ExtrudeEdgeGeometry.d.ts new file mode 100644 index 0000000..88efb8c --- /dev/null +++ b/types/Geometry/ExtrudeEdgeGeometry.d.ts @@ -0,0 +1,4 @@ +import { BufferGeometry, Vector3 } from "three"; +export declare function GenerateExtrudeEdgeGeometry(contourPoints: Vector3[][], height: number): BufferGeometry; +export declare function GenerateBoxEdgeGeometry(length: number, width: number, height: number): BufferGeometry; +//# sourceMappingURL=ExtrudeEdgeGeometry.d.ts.map \ No newline at end of file diff --git a/types/Geometry/ExtrudeEdgeGeometry.d.ts.map b/types/Geometry/ExtrudeEdgeGeometry.d.ts.map new file mode 100644 index 0000000..4580eec --- /dev/null +++ b/types/Geometry/ExtrudeEdgeGeometry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExtrudeEdgeGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ExtrudeEdgeGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKhD,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAOtG;AAiBD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAIrG"} \ No newline at end of file diff --git a/types/Geometry/ExtrudeEdgeGeometry2.d.ts b/types/Geometry/ExtrudeEdgeGeometry2.d.ts new file mode 100644 index 0000000..8e1f3ac --- /dev/null +++ b/types/Geometry/ExtrudeEdgeGeometry2.d.ts @@ -0,0 +1,149 @@ +import { BufferGeometry, Vector3 } from "three"; +import { Contour } from "../DatabaseServices/Contour"; +import { ExtrudeSolid, ExtureContourCurve } from "../DatabaseServices/Entity/Extrude"; +import { Line } from "../DatabaseServices/Entity/Line"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +export declare enum DepthType { + Front = 1, + Back = 2, + All = 3 +} +export declare const ExtrudeBuildConfig: { + bevel: boolean; +}; +/** + * 槽的几何数据,包括槽的墙面和槽的盖子 + */ +export declare class Groove { + depthType: DepthType; + depth: number; + allDepth: number; + private box; + contourWall: ExtudeWall; + holeWalls: ExtudeWall[]; + private lid; + constructor(contour: Contour, holes: Contour[], depthType: DepthType, depth: number, allDepth: number, box?: import("./Box").Box3Ext); + /** + * @param groove this - groove + * @param [eachOther=true] 相互裁剪 + */ + ClipTo(groove: Groove, eachOther?: boolean): void; + private ClipLid; + Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild, rotateUv: boolean): void; +} +declare enum DirectionType { + Outer = 0, + Inner = 1 +} +export declare class ContourTreeNode { + contour: Contour; + children: ContourTreeNode[]; + parent: ContourTreeNode; + constructor(contour: Contour, children?: ContourTreeNode[]); + SetParent(node: ContourTreeNode): void; + Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void; + static ParseContourTree(contourNodes: ContourTreeNode[]): void; +} +declare class EdgeGeometryBuild { + allDepth: number; + lineVerticesArray: number[]; + frontLines: Line[]; + backLines: Line[]; + constructor(allDepth: number); + AddLidLine(p1: Vector3, p2: Vector3, depth: number): void; + BuildLid(verticesArray: number[], uvArray: number[], rotateUv: boolean): void; +} +/** + * 二维形状,内部用曲线胶带表示(用来计算盖子差集算法) + */ +export declare class CurveTapeShape { + children: CurveTapeShape[]; + contour: CurveTape; + holes: CurveTape[]; + constructor(contour: Contour, holes: Contour[]); + CloneNew(): CurveTapeShape; + /** + * 删除包含,同向 + */ + ClipTo(s: CurveTapeShape, append?: boolean): void; + SplitTo(s: CurveTapeShape): void; + /** + * 只保留被包含部分 + */ + private ReverseClipTo; + ChildrenClip(): void; + Draw(verticesArray: number[], uvArray: number[], front: boolean, z: number, rotateUv: boolean, allDepth: number): void; +} +/** + * 曲线胶带(一维) + */ +declare class CurveTape { + contour: Contour; + wallType: DirectionType; + tapes: Range[]; + splitParams: number[]; + constructor(contour: Contour, wallType: DirectionType); + get Curves(): Polyline[]; + /** + * 分析与另一个形状的包含关系 + */ + Parse(s: CurveTapeShape): CurveParamRangeRelation; + /** + * 删除包含,同向面 + */ + ClipTo(s: CurveTapeShape): this; + /** + * 保留被包含的部分 + */ + ReverseClipTo(s: CurveTapeShape): this; +} +declare class ExtudeWall { + curve: ExtureContourCurve; + depthType: DepthType; + depth: number; + allDepth: number; + wallType: DirectionType; + private Tape; + constructor(curve: ExtureContourCurve, depthType: DepthType, depth: number, allDepth: number, wallType: DirectionType); + /** + * 减去在另一个groove内的部分 + * @param groove this - groove + * @param [clipSyntropy=false] 删除同向的面 + */ + ClipTo(groove: Groove, clipSyntropy?: boolean): void; + ClipReverse(wall: this): void; + /** + * 当起始参数大于终止参数时,裁剪的区域经过终点 + * + * @param startParam 起始参数 + * @param endParam 终止参数 + * @param faceType 裁剪面朝向 + * @param depth 裁剪面的深度 + */ + ClipFromParam(startParam: number, endParam: number, faceType: DepthType, depth: number): this; + Draw(verticesArray: number[], uvArray: number[], edgeBuild: EdgeGeometryBuild): void; +} +/** + * 曲线参数范围关系(包含,分离,同向共线,反向共线) + * 用来表示某一曲线在另一个曲线内的关系 + */ +interface CurveParamRangeRelation { + outer: Range[]; + container: Range[]; + syntropy: Range[]; + reverse: Range[]; +} +declare type Range = [number, number]; +export declare class ExtrudeGeometryBuilder { + private br; + verticesArray: number[]; + uvArray: number[]; + edgeAndLidBuilder: EdgeGeometryBuild; + constructor(br: ExtrudeSolid); + protected GenerateMeshData(br: ExtrudeSolid): void; + get MeshGeometry(): BufferGeometry; + get EdgeGeometry(): BufferGeometry; + protected ParseGrooves(): Groove[]; +} +export {}; +//# sourceMappingURL=ExtrudeEdgeGeometry2.d.ts.map \ No newline at end of file diff --git a/types/Geometry/ExtrudeEdgeGeometry2.d.ts.map b/types/Geometry/ExtrudeEdgeGeometry2.d.ts.map new file mode 100644 index 0000000..073a4e1 --- /dev/null +++ b/types/Geometry/ExtrudeEdgeGeometry2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExtrudeEdgeGeometry2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/ExtrudeEdgeGeometry2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Geometry/FastOffset.d.ts b/types/Geometry/FastOffset.d.ts new file mode 100644 index 0000000..6cfb728 --- /dev/null +++ b/types/Geometry/FastOffset.d.ts @@ -0,0 +1,10 @@ +import { Vector3 } from "three"; +/** + * 快速的对点表进行偏移 + * @param contour + * @param [offsetDist=1] + * @param [ignoreSpike=true] 忽略尖角优化(如果不忽略,那么尖角将会变钝(有点奇怪)) + * @returns 偏移后的点表 + */ +export declare function FastOffset(contour: Vector3[], offsetDist?: number, ignoreSpike?: boolean): Vector3[]; +//# sourceMappingURL=FastOffset.d.ts.map \ No newline at end of file diff --git a/types/Geometry/FastOffset.d.ts.map b/types/Geometry/FastOffset.d.ts.map new file mode 100644 index 0000000..6210df3 --- /dev/null +++ b/types/Geometry/FastOffset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FastOffset.d.ts","sourceRoot":"","sources":["../../../src/Geometry/FastOffset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,MAAM,OAAO,CAAC;AAI/C;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,UAAU,SAAI,EAAE,WAAW,UAAO,GAAG,OAAO,EAAE,CAY5F"} \ No newline at end of file diff --git a/types/Geometry/FuzzVector.d.ts b/types/Geometry/FuzzVector.d.ts new file mode 100644 index 0000000..b33d13f --- /dev/null +++ b/types/Geometry/FuzzVector.d.ts @@ -0,0 +1,14 @@ +import { Vector3 } from "three"; +/** + * 直线方向归一化,例如(1,0,0)和(-1,0,0)方向相反,但是在直线中,可以看作同样的方向的线 + */ +export declare class FuzzDirection { + fractionDigits: number; + fuzz: number; + constructor(fractionDigits?: number); + /** + * + */ + GetKey(v: Vector3, change?: boolean): string; +} +//# sourceMappingURL=FuzzVector.d.ts.map \ No newline at end of file diff --git a/types/Geometry/FuzzVector.d.ts.map b/types/Geometry/FuzzVector.d.ts.map new file mode 100644 index 0000000..6dd5256 --- /dev/null +++ b/types/Geometry/FuzzVector.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FuzzVector.d.ts","sourceRoot":"","sources":["../../../src/Geometry/FuzzVector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC;;GAEG;AACH,qBAAa,aAAa;IAGH,cAAc;IADjC,IAAI,EAAE,MAAM,CAAC;gBACM,cAAc,SAAI;IAKrC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,UAAQ,GAAG,MAAM;CA0C7C"} \ No newline at end of file diff --git a/types/Geometry/GeUtils.d.ts b/types/Geometry/GeUtils.d.ts new file mode 100644 index 0000000..90d1f17 --- /dev/null +++ b/types/Geometry/GeUtils.d.ts @@ -0,0 +1,131 @@ +import { Box3, BufferGeometry, Geometry, Line, Matrix4, Mesh, Object3D, Vector, Vector2, Vector3 } from 'three'; +export declare const IdentityMtx4: Matrix4; +export declare const ZeroVec: Vector3; +export declare const XAxis: Vector3; +export declare const XAxisN: Vector3; +export declare const YAxis: Vector3; +export declare const YAxisN: Vector3; +export declare const ZAxis: Vector3; +export declare function AsVector2(p: { + x: number; + y: number; +}): Vector2; +export declare function AsVector3(p: { + x: number; + y: number; + z?: number; +}): Vector3; +/** + * 判断一维线段a和b是否存在交集 + */ +export declare function isIntersect(amin: number, amax: number, bmin: number, bmax: number, eps?: number): boolean; +export declare function isIntersect2(a1: number, a2: number, b1: number, b2: number, eps?: number): boolean; +/** + * 旋转一个点,旋转中心在原点 + * @param {Vector3} p 点 + * @param {number} a 角度. + * @returns {Vector3} 返回pt不拷贝. + */ +export declare function rotatePoint(p: Vector3, a: number): Vector3; +export declare function equaln(v1: number, v2: number, fuzz?: number): boolean; +export declare function equalnn(dis?: number): (v1: number, v2: number) => boolean; +interface P2 { + x: number; + y: number; +} +export declare function equalv3(v1: Vector3, v2: Vector3, fuzz?: number): boolean; +export declare function equalv2(v1: P2, v2: P2, fuzz?: number): boolean; +/** + * 按照极坐标的方式移动一个点 + * + * @export + * @template + * @param {T} v 向量(2d,3d) + * @param {number} an 角度 + * @param {number} dis 距离 + * @returns {T} + */ +export declare function polar(v: T, an: number, dis: number): T; +export declare function angle(v: Vector3 | Vector2): number; +/** + * 求两个向量的夹角,顺时针为负,逆时针为正 + * + * @param {Vector3} v1 + * @param {Vector3} v2 + * @param {Vector3} [ref] 参考向量,如果为世界坐标系则为0,0,1 + * @returns + */ +export declare function angleTo(v1: Vector3, v2: Vector3, ref?: Vector3): number; +export declare function getLoocAtUpVec(dir: Vector3): Vector3; +export declare function createLookAtMat4(dir: Vector3): Matrix4; +/** + * 判断2个向量是不是平行,尽量传入单位向量,才能保证计算精度 + */ +export declare function isParallelTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean; +/** + * 垂直向量 + */ +export declare function isPerpendicularityTo(v1: Vector3, v2: Vector3, fuzz?: number): boolean; +export declare function ptToString(v: Vector3, fractionDigits?: number): string; +export declare function midPoint(v1: Vector3, v2: Vector3): Vector3; +export declare function midPoint2(v1: Vector2, v2: Vector2): Vector2; +/** + * 获得Three对象的包围盒. + * @param obj + * @param [updateMatrix] 是否应该更新对象矩阵 + * @returns box + */ +export declare function GetBox(obj: Object3D, updateMatrix?: boolean): Box3; +export declare function GetBoxArr(arr: Array): Box3; +export declare function MoveMatrix(v: Vector3): Matrix4; +export declare function getPtPostion(sp: Vector3, ep: Vector3, c: Vector3, inPt: Vector3): { + sp: Vector3; + ep: Vector3; +}; +export declare function angleAndX(v: Vector3 | Vector2): number; +/** + * 将角度调整为0-2pi之间 + */ +export declare function clampRad(an: number): number; +export declare function updateGeometry(l: Line | Mesh, geometry: Geometry | BufferGeometry): void; +export declare function UpdateBoundingSphere(obj: Object3D): void; +export declare type compareVectorFn = (v1: Vector, v2: Vector3) => number; +/** + * 构建返回一个用来排序的函数.根据key创建排序规则. + * + * 当key = "xyz" 时,点集按 x从小到大,y从小到大 z从小到大 + * key = "X" 时,点集按 x从大到小 + * 以此类推. + * + * 例子: + * let pts:Vector3[] =...; + * pts.sort(comparePoint("x")); //x从小到大排序 + * pts.sort(comparePoint("zX")); //z从小到大 x从大到小 + * + * @export + * @param {string} sortKey + * @returns {compareVectorFn} + */ +export declare function comparePoint(sortKey: string): compareVectorFn; +/** + *计算各轴旋转角度 + */ +export declare function GetEulerAngle(x: Vector3, y: Vector3, z: Vector3): { + roX: number; + roY: number; + roZ: number; +}; +/** + * 方形框捕捉 + * @param sqCenter 正方形点 + * @param snapPt 被捕捉的点 + * @param size 捕捉框大小 + */ +export declare function SnapPoint(sqCenter: Vector3, snapPt: Vector3, size: number): boolean; +export declare function SelectNearP(pts: Vector3[], refPt: Vector3): Vector3; +/**n是否在AB之间,fuzz 若为负的,允许相等 */ +export declare function IsBetweenA2B(n: number, A: number, B: number, fuzz?: number): boolean; +/** 矩阵是世界坐标系 */ +export declare function MatrixIsIdentityCS(mtx: Matrix4): boolean; +export {}; +//# sourceMappingURL=GeUtils.d.ts.map \ No newline at end of file diff --git a/types/Geometry/GeUtils.d.ts.map b/types/Geometry/GeUtils.d.ts.map new file mode 100644 index 0000000..0c0ded9 --- /dev/null +++ b/types/Geometry/GeUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GeUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/GeUtils.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Geometry/IVec3.d.ts b/types/Geometry/IVec3.d.ts new file mode 100644 index 0000000..2a99108 --- /dev/null +++ b/types/Geometry/IVec3.d.ts @@ -0,0 +1,6 @@ +export interface Vec3 { + x: number; + y: number; + z: number; +} +//# sourceMappingURL=IVec3.d.ts.map \ No newline at end of file diff --git a/types/Geometry/IVec3.d.ts.map b/types/Geometry/IVec3.d.ts.map new file mode 100644 index 0000000..62db27e --- /dev/null +++ b/types/Geometry/IVec3.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IVec3.d.ts","sourceRoot":"","sources":["../../../src/Geometry/IVec3.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IAEjB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb"} \ No newline at end of file diff --git a/types/Geometry/Matrix2.d.ts b/types/Geometry/Matrix2.d.ts new file mode 100644 index 0000000..7dd1222 --- /dev/null +++ b/types/Geometry/Matrix2.d.ts @@ -0,0 +1,10 @@ +import { Vector2, Vector3, Matrix4 } from "three"; +export declare class Matrix2 { + el: number[]; + set(ix: number, iy: number, jx: number, jy: number): void; + applyVector(vec: Vector2 | Vector3): this; + fromMatrix4(mtx4: Matrix4): void; + setRotate(theta: number): this; + invert(): this; +} +//# sourceMappingURL=Matrix2.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Matrix2.d.ts.map b/types/Geometry/Matrix2.d.ts.map new file mode 100644 index 0000000..ee2e182 --- /dev/null +++ b/types/Geometry/Matrix2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Matrix2.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Matrix2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAElD,qBAAa,OAAO;IAGhB,EAAE,WAAgB;IAElB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IAQlD,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAUlC,WAAW,CAAC,IAAI,EAAE,OAAO;IAOzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS9B,MAAM,IAAI,IAAI;CAUjB"} \ No newline at end of file diff --git a/types/Geometry/OBB/obb.d.ts b/types/Geometry/OBB/obb.d.ts new file mode 100644 index 0000000..5ae2061 --- /dev/null +++ b/types/Geometry/OBB/obb.d.ts @@ -0,0 +1,10 @@ +import { Vector3, Matrix4 } from 'three'; +export declare class OBB { + ocs: Matrix4; + halfSizes: Vector3; + _EPSILON: number; + center: Vector3; + constructor(ocs: Matrix4, halfSizes: Vector3); + intersectsOBB(obb: OBB, is2D?: boolean, ucsInv?: Matrix4): boolean; +} +//# sourceMappingURL=obb.d.ts.map \ No newline at end of file diff --git a/types/Geometry/OBB/obb.d.ts.map b/types/Geometry/OBB/obb.d.ts.map new file mode 100644 index 0000000..023e2de --- /dev/null +++ b/types/Geometry/OBB/obb.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"obb.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/OBB/obb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAWzC,qBAAa,GAAG;IAMO,GAAG,EAAE,OAAO;IAAS,SAAS,EAAE,OAAO;IAJ1D,QAAQ,SAAQ;IAET,MAAM,EAAE,OAAO,CAAC;gBAEJ,GAAG,EAAE,OAAO,EAAS,SAAS,EAAE,OAAO;IAK1D,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO;CAkOrE"} \ No newline at end of file diff --git a/types/Geometry/OBJExporter.d.ts b/types/Geometry/OBJExporter.d.ts new file mode 100644 index 0000000..b966f37 --- /dev/null +++ b/types/Geometry/OBJExporter.d.ts @@ -0,0 +1,8 @@ +import { Object3D } from 'three'; +export declare class OBJExporter { + parse(object: Object3D): { + obj: string; + mtl: string; + }; +} +//# sourceMappingURL=OBJExporter.d.ts.map \ No newline at end of file diff --git a/types/Geometry/OBJExporter.d.ts.map b/types/Geometry/OBJExporter.d.ts.map new file mode 100644 index 0000000..7237635 --- /dev/null +++ b/types/Geometry/OBJExporter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OBJExporter.d.ts","sourceRoot":"","sources":["../../../src/Geometry/OBJExporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAA6F,MAAM,OAAO,CAAC;AAE5H,qBAAa,WAAW;IAEpB,KAAK,CAAC,MAAM,EAAE,QAAQ;;;;CAsUzB"} \ No newline at end of file diff --git a/types/Geometry/Orbit.d.ts b/types/Geometry/Orbit.d.ts new file mode 100644 index 0000000..0d182a1 --- /dev/null +++ b/types/Geometry/Orbit.d.ts @@ -0,0 +1,28 @@ +import { Vector3 } from "three"; +/** + * 轨道控制的数学类,观察向量和角度的互相转换 + * 当x当抬头或者低头到90度时,触发万向锁. + */ +export declare class Orbit { + private phi; + theta: number; + get RoX(): number; + set RoX(v: number); + /** + * 使用旋转角度 计算观察向量 + * @param [outDirection] 引用传入,如果传入,那么就不构造新的向量 + * @returns 返回观察向量 + */ + UpdateDirection(outDirection?: Vector3): Vector3; + /** + * 使用观察向量,计算旋转角度 + * @param dir 这个向量会被修改成单位向量. + */ + SetFromDirection(dir: Vector3): void; + /** + * 参考任意轴坐标系算法. + * http://help.autodesk.com/view/ACD/2017/CHS/?guid=GUID-E19E5B42-0CC7-4EBA-B29F-5E1D595149EE + */ + static ComputUpDirection(n: Vector3, ay?: Vector3, ax?: Vector3): Vector3; +} +//# sourceMappingURL=Orbit.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Orbit.d.ts.map b/types/Geometry/Orbit.d.ts.map new file mode 100644 index 0000000..df52e04 --- /dev/null +++ b/types/Geometry/Orbit.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Orbit.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Orbit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,OAAO,CAAC;AAG3C;;;GAGG;AACH,qBAAa,KAAK;IAGd,OAAO,CAAC,GAAG,CAAa;IAGxB,KAAK,EAAE,MAAM,CAAK;IAElB,IAAI,GAAG,WAGN;IACD,IAAI,GAAG,CAAC,CAAC,QAAA,EAGR;IAED;;;;OAIG;IACH,eAAe,CAAC,YAAY,UAAgB,GAAG,OAAO;IAYtD;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAapC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAE,OAAuB,EAAE,EAAE,GAAE,OAAuB,GAAG,OAAO;CAY1G"} \ No newline at end of file diff --git a/types/Geometry/Plane.d.ts b/types/Geometry/Plane.d.ts new file mode 100644 index 0000000..c8d3dc2 --- /dev/null +++ b/types/Geometry/Plane.d.ts @@ -0,0 +1,7 @@ +import { Line3, Plane, Ray, Vector3 } from "three"; +export declare class PlaneExt extends Plane { + constructor(normal?: Vector3, constant?: number | Vector3); + intersectLine(line: Line3, optionalTarget?: Vector3, extendLine?: boolean): Vector3; + intersectRay(ray: Ray, optionalTarget?: Vector3, extendLine?: boolean): Vector3; +} +//# sourceMappingURL=Plane.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Plane.d.ts.map b/types/Geometry/Plane.d.ts.map new file mode 100644 index 0000000..96f0dd6 --- /dev/null +++ b/types/Geometry/Plane.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEnD,qBAAa,QAAS,SAAQ,KAAK;gBAEnB,MAAM,UAAuB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IAStE,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,UAAgB,EAAE,UAAU,UAAQ,GAAG,OAAO;IA4BvF,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO;CAMlF"} \ No newline at end of file diff --git a/types/Geometry/PointShapeUtils.d.ts b/types/Geometry/PointShapeUtils.d.ts new file mode 100644 index 0000000..42512d7 --- /dev/null +++ b/types/Geometry/PointShapeUtils.d.ts @@ -0,0 +1,17 @@ +import { Vector3 } from "three"; +import { LinesType } from "../UI/Store/BoardInterface"; +export declare class PointShapeUtils { + static SquarePts(size: number): Vector3[]; + static OutsideLinePts(squareSize: number, lineLength: number): Vector3[]; + static CrossLinePts(lineLength: number): Vector3[]; + static CrossLine3DPts(lineLength: number): Vector3[][]; + static TrianglePts(size: number): Vector3[]; + static CirclePts(size: number): any[]; + static ObliqueCrossPts(size: number): Vector3[]; + static ObliqueCrossLinePts(size: number): Vector3[]; + static SandClockPts(size: number): Vector3[]; + static TangentPts(size: number): Vector3[]; + static PerPts(size: number): Vector3[]; + static LinesDirPts(len: number, width: number, lineType: LinesType): Vector3[]; +} +//# sourceMappingURL=PointShapeUtils.d.ts.map \ No newline at end of file diff --git a/types/Geometry/PointShapeUtils.d.ts.map b/types/Geometry/PointShapeUtils.d.ts.map new file mode 100644 index 0000000..ce81aa4 --- /dev/null +++ b/types/Geometry/PointShapeUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointShapeUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/PointShapeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,qBAAa,eAAe;IAGxB,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAW7B,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAmB5D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM;IAUtC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM;IAYxC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;IAU/B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;IAS7B,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM;IAInC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM;IAKvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM;IAWhC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;IAa9B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;IAY1B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;CAyCrE"} \ No newline at end of file diff --git a/types/Geometry/RegionParse.d.ts b/types/Geometry/RegionParse.d.ts new file mode 100644 index 0000000..4f8a52f --- /dev/null +++ b/types/Geometry/RegionParse.d.ts @@ -0,0 +1,42 @@ +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { Route, Vertice } from "./CurveMap"; +declare type RegionRouteS = Route[][]; +/** +面域分析,基于最小循环图重新实现的版本,拓展了实现求最大轮廓。 +当最大轮廓=最小轮廓时,只绘制最大轮廓(独立轮廓无分裂)。 + +算法只实现去重模式,业务场景应该没有非去重模式。 +如果需要非去重模式,那么应该获取到多个CurveMap,然后对多个CurveMap进行面域分析,得出多个重叠的面域。 + */ +export declare class RegionParse { + numDimensions: number; + private removeDuplicate; + RegionsOutline: RegionRouteS; + RegionsInternal: RegionRouteS; + ExpLineMap: Map; + private _CurveCount; + /** + * @param cuList 请不要传递圆和椭圆. + * @param [numDimensions=3] 精度:小数点后个数 + * @param [removeDuplicate=true] 删除重复(现在必须是true,请不要修改它) + */ + constructor(cuList: Curve[], numDimensions?: number, removeDuplicate?: boolean); + RemoveFilamentAt(v: Vertice, vertices: Vertice[]): void; + RemoveEdge(r: Route): void; + /** + * 找到最下方并且最左边的站 yx + */ + private FindLowerLeftStand; + /** + * 构造路线图. 每个节点对应下一个路口的路线表. 路口表使用逆时针排序,起始角度使用正x轴. + * @returns 所有的顶点 + */ + private GenerateVerticeMap; + private BreakArc; + /** + * 曲线是否已经被算法使用 + */ + GetCueveUsed(cu: Curve): boolean; +} +export {}; +//# sourceMappingURL=RegionParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/RegionParse.d.ts.map b/types/Geometry/RegionParse.d.ts.map new file mode 100644 index 0000000..264181a --- /dev/null +++ b/types/Geometry/RegionParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RegionParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RegionParse.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAY,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAItD,aAAK,YAAY,GAAG,KAAK,EAAE,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,qBAAa,WAAW;IAiBgB,aAAa;IAAM,OAAO,CAAC,eAAe;IAd9E,cAAc,EAAE,YAAY,CAAM;IAElC,eAAe,EAAE,YAAY,CAAM;IAGnC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAa;IAE5C,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;OAIG;gBACS,MAAM,EAAE,KAAK,EAAE,EAAS,aAAa,SAAI,EAAU,eAAe,UAAO;IA6DrF,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IAiBhD,UAAU,CAAC,CAAC,EAAE,KAAK;IAWnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAwE1B,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,OAAO;CAYnC"} \ No newline at end of file diff --git a/types/Geometry/RotateUV.d.ts b/types/Geometry/RotateUV.d.ts new file mode 100644 index 0000000..7e79531 --- /dev/null +++ b/types/Geometry/RotateUV.d.ts @@ -0,0 +1,2 @@ +export declare function RotateUVs(geo: THREE.Geometry): void; +//# sourceMappingURL=RotateUV.d.ts.map \ No newline at end of file diff --git a/types/Geometry/RotateUV.d.ts.map b/types/Geometry/RotateUV.d.ts.map new file mode 100644 index 0000000..893487e --- /dev/null +++ b/types/Geometry/RotateUV.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RotateUV.d.ts","sourceRoot":"","sources":["../../../src/Geometry/RotateUV.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,QAc5C"} \ No newline at end of file diff --git a/types/Geometry/Simplify.d.ts b/types/Geometry/Simplify.d.ts new file mode 100644 index 0000000..6d1dcf9 --- /dev/null +++ b/types/Geometry/Simplify.d.ts @@ -0,0 +1,7 @@ +interface P { + x: number; + y: number; +} +export declare function simplify(points: P[], sqTolerance?: number, highestQuality?: boolean): P[]; +export {}; +//# sourceMappingURL=Simplify.d.ts.map \ No newline at end of file diff --git a/types/Geometry/Simplify.d.ts.map b/types/Geometry/Simplify.d.ts.map new file mode 100644 index 0000000..32dc078 --- /dev/null +++ b/types/Geometry/Simplify.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Simplify.d.ts","sourceRoot":"","sources":["../../../src/Geometry/Simplify.ts"],"names":[],"mappings":"AAMA,UAAU,CAAC;IAEP,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAyGD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,GAAE,MAAU,EAAE,cAAc,GAAE,OAAc,OAQ5F"} \ No newline at end of file diff --git a/types/Geometry/SortEntityByBox.d.ts b/types/Geometry/SortEntityByBox.d.ts new file mode 100644 index 0000000..aac3ca4 --- /dev/null +++ b/types/Geometry/SortEntityByBox.d.ts @@ -0,0 +1,10 @@ +import { Box3 } from "three"; +export interface EBox { + BoundingBox: Box3; +} +/** + * 根据盒子x排序盒子 + * @param {EBox[]} arr + */ +export declare function SortEntityByBox(arr: T[], sort?: boolean): Map; +//# sourceMappingURL=SortEntityByBox.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SortEntityByBox.d.ts.map b/types/Geometry/SortEntityByBox.d.ts.map new file mode 100644 index 0000000..6c01adc --- /dev/null +++ b/types/Geometry/SortEntityByBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SortEntityByBox.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SortEntityByBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAG7B,MAAM,WAAW,IAAI;IAEjB,WAAW,EAAE,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE,OAAc,gBAmB7E"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParse.d.ts b/types/Geometry/SpaceParse/ClampSpaceParse.d.ts new file mode 100644 index 0000000..06d45ed --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParse.d.ts @@ -0,0 +1,32 @@ +import { Ray } from "three"; +import { PromptDistendResult } from "../../Editor/PromptResult"; +import { Box3Ext, SplitType } from "../Box"; +import { ISpaceParse } from "./ISpaceParse"; +/** + * 夹层空间分析 + */ +export declare class ClampSpaceParse extends ISpaceParse { + Parse(): Promise; + /** + * 单板延伸空间的时候的延伸距离 + */ + get SignalDist(): number; + protected _signalDist: number; + ParseSignalBoard(): Promise; + GetSignalDist(): Promise; + SetRay(ray: Ray): void; + SelectBoxRecord: Map; + WrapSelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise; + /** + * virtual (请重载) 当盒子空间被切割时,选择合适的空间 + * @param splitBoxs 切割后的盒子(2个) + * @param splitType 切割类型 + * @returns box 盒子 + */ + SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise; + /** + *用单块板包围盒切割空间 + */ + private SpliteBoxsAndSelect; +} +//# sourceMappingURL=ClampSpaceParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParse.d.ts.map b/types/Geometry/SpaceParse/ClampSpaceParse.d.ts.map new file mode 100644 index 0000000..efb6f9e --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClampSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAEtC,KAAK;IAiEX;;OAEG;IACH,IAAI,UAAU,WAGb;IACD,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAExB,gBAAgB;IA4BhB,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQnD,MAAM,CAAC,GAAG,EAAE,GAAG;IAIf,eAAe,yBAAgC;IACzC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjF;;;;;OAKG;IACG,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7E;;OAEG;YACW,mBAAmB;CAsCpC"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts b/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts new file mode 100644 index 0000000..7671c04 --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts @@ -0,0 +1,6 @@ +import { ClampSpaceParse } from "./ClampSpaceParse"; +import { PromptDistendResult } from "../../Editor/PromptResult"; +export declare class ClampSpaceParseDist extends ClampSpaceParse { + GetSignalDist(): Promise; +} +//# sourceMappingURL=ClampSpaceParseDist.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts.map b/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts.map new file mode 100644 index 0000000..af9f91c --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseDist.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClampSpaceParseDist.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseDist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAG9E,qBAAa,mBAAoB,SAAQ,eAAe;IAG9C,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;CActD"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts b/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts new file mode 100644 index 0000000..73a93c3 --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts @@ -0,0 +1,10 @@ +import { ClampSpaceParse } from "./ClampSpaceParse"; +import { PromptDistendResult } from "../../Editor/PromptResult"; +import { Box3Ext, SplitType } from "../Box"; +export declare class ClampSpaceParseFix extends ClampSpaceParse { + set SignalDist(v: number); + get SignalDist(): number; + GetSignalDist(): Promise; + SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise; +} +//# sourceMappingURL=ClampSpaceParseFix.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts.map b/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts.map new file mode 100644 index 0000000..108ae4f --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseFix.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClampSpaceParseFix.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAgB,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,eAAe;IAEnD,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,EAGvB;IACD,IAAI,UAAU,IAJI,MAAM,CAOvB;IAGK,aAAa,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAQ7C,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAKhF"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts b/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts new file mode 100644 index 0000000..911d1e7 --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts @@ -0,0 +1,15 @@ +import { Box3Ext, SplitType } from "../Box"; +import { ClampSpaceParseDist } from "./ClampSpaceParseDist"; +/** + * 夹层空间分析重载,使用GetkeyWord来选择合适的盒子. + */ +export declare class ClampSpaceParseKey extends ClampSpaceParseDist { + /** + * virtual (请重载) 当盒子空间被切割时,选择合适的空间 + * @param splitBoxs 切割后的盒子(2个) + * @param splitType 切割类型 + * @returns box 盒子 + */ + SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise; +} +//# sourceMappingURL=ClampSpaceParseKey.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts.map b/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts.map new file mode 100644 index 0000000..3242e5a --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseKey.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClampSpaceParseKey.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseKey.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,mBAAmB;IAEvD;;;;;MAKE;IACI,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAsBhF"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts b/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts new file mode 100644 index 0000000..5feb6ad --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts @@ -0,0 +1,15 @@ +import { Ray } from "three"; +import { Box3Ext, SplitType } from "../Box"; +import { ClampSpaceParseDist } from "./ClampSpaceParseDist"; +export declare class ClampSpaceParseRay extends ClampSpaceParseDist { + private selectRay; + SetRay(ray: Ray): this; + /** + * virtual (请重载) 当盒子空间被切割时,选择合适的空间 + * @param splitBoxs 切割后的盒子(2个) + * @param splitType 切割类型 + * @returns box 盒子 + */ + SelectBox(splitBoxs: Box3Ext[], splitType: SplitType): Promise; +} +//# sourceMappingURL=ClampSpaceParseRay.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts.map b/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts.map new file mode 100644 index 0000000..450dd09 --- /dev/null +++ b/types/Geometry/SpaceParse/ClampSpaceParseRay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClampSpaceParseRay.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ClampSpaceParseRay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,qBAAa,kBAAmB,SAAQ,mBAAmB;IAEvD,OAAO,CAAC,SAAS,CAAM;IAEvB,MAAM,CAAC,GAAG,EAAE,GAAG;IAOf;;;;;MAKE;IACI,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAiBhF"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ISpaceParse.d.ts b/types/Geometry/SpaceParse/ISpaceParse.d.ts new file mode 100644 index 0000000..704fd4b --- /dev/null +++ b/types/Geometry/SpaceParse/ISpaceParse.d.ts @@ -0,0 +1,61 @@ +import { Matrix4, Vector3 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { BoardType } from "../../UI/Store/BoardInterface"; +import { Box3Ext, SplitType } from "../Box"; +import { VisualSpaceBox } from './../../Editor/VisualSpaceBox'; +export declare class ISpaceParse { + /** + * 解析空间成功 + */ + ParseOK: boolean; + /** + * 空间占地盒子 + */ + SpaceBox: Box3Ext; + /** + * 空间盒子所在的位置矩阵 + */ + SpaceOCS: Matrix4; + SpaceOCSInv: Matrix4; + /** + * 板件映射表 + */ + BoardMap: Map; + /** + * 解析空间所用的板件列表 + */ + Boards: Board[]; + LeftBoard: Board; + RightBoard: Board; + /** + * 动态中,禁止执行二次操作 + */ + IsDynamic: Boolean; + /**选到的虚拟空间 */ + VisualSpaceBox: VisualSpaceBox; + Rotation: { + x: number; + y: number; + z: number; + }; + /** + * # 构造后请手动调用Parse()方法. + * @param boards 板件列表 + * @param [spaceOCS] 默认空间矩阵,如果不设置将使用第一块板作为空间矩阵 + */ + constructor(boards?: Board[], spaceOCS?: Matrix4); + Parse(): Promise; + get Size(): Vector3; + get DrawCS(): Matrix4; + /** + * 构造板件类型Map + */ + protected GeneralBoardMap(): void; + /** + * 解析板件的盒子,并且(排序,归并) + * @param boardCol + * @param splitType + */ + protected ParseBoardBox(boardCol: Board[], splitType: SplitType): Box3Ext[]; +} +//# sourceMappingURL=ISpaceParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/ISpaceParse.d.ts.map b/types/Geometry/SpaceParse/ISpaceParse.d.ts.map new file mode 100644 index 0000000..025625c --- /dev/null +++ b/types/Geometry/SpaceParse/ISpaceParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ISpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/ISpaceParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qBAAa,WAAW;IAEpB;;OAEG;IACH,OAAO,UAAS;IAEhB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAa;IAE9C;;OAEG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAS;IAC3B,aAAa;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ;;;;MAAwB;IAEhC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,EAAE,OAAO;IAe1C,KAAK;IAIX,IAAI,IAAI,YAKP;IAED,IAAI,MAAM,IAAI,OAAO,CAOpB;IAED;;OAEG;IACH,SAAS,CAAC,eAAe;IA0BzB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE;CAmE9E"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/Point2SpaceParse.d.ts b/types/Geometry/SpaceParse/Point2SpaceParse.d.ts new file mode 100644 index 0000000..f6bc78d --- /dev/null +++ b/types/Geometry/SpaceParse/Point2SpaceParse.d.ts @@ -0,0 +1,5 @@ +import { ISpaceParse } from "./ISpaceParse"; +export declare class Point2SpaceParse extends ISpaceParse { + Parse(): Promise; +} +//# sourceMappingURL=Point2SpaceParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/Point2SpaceParse.d.ts.map b/types/Geometry/SpaceParse/Point2SpaceParse.d.ts.map new file mode 100644 index 0000000..3ad44c9 --- /dev/null +++ b/types/Geometry/SpaceParse/Point2SpaceParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Point2SpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/Point2SpaceParse.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,gBAAiB,SAAQ,WAAW;IAEvC,KAAK;CAuDd"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts b/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts new file mode 100644 index 0000000..dd938b4 --- /dev/null +++ b/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts @@ -0,0 +1,5 @@ +import { ISpaceParse } from "./ISpaceParse"; +export declare class Point3SpaceParse extends ISpaceParse { + Parse(): Promise; +} +//# sourceMappingURL=Point3SpaceParse,.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts.map b/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts.map new file mode 100644 index 0000000..c91a4d9 --- /dev/null +++ b/types/Geometry/SpaceParse/Point3SpaceParse,.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Point3SpaceParse,.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/Point3SpaceParse,.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C,qBAAa,gBAAiB,SAAQ,WAAW;IAEvC,KAAK;CAgFd"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectBoards.d.ts b/types/Geometry/SpaceParse/PointSelectBoards.d.ts new file mode 100644 index 0000000..121c4a9 --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectBoards.d.ts @@ -0,0 +1,17 @@ +import { Intersection, Object3D, Ray, Vector3 } from "three"; +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Viewer } from "../../GraphicsSystem/Viewer"; +/** + * 点选空间拾取板件方法,该方法通过构造射线去拾取板件,并且尝试得到周围的板件. + */ +export declare class PointSelectBoards { + private ptVcs; + private view; + private boardObjects; + SelectBoards: Board[]; + Intersection: Intersection; + constructor(ptVcs: Vector3, view: Viewer, boardObjects: Object3D[]); + private Select; + get Ray(): Ray; +} +//# sourceMappingURL=PointSelectBoards.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectBoards.d.ts.map b/types/Geometry/SpaceParse/PointSelectBoards.d.ts.map new file mode 100644 index 0000000..b1eb2df --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectBoards.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointSelectBoards.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectBoards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAW,QAAQ,EAAE,GAAG,EAAa,OAAO,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAK5D,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAIrD;;GAEG;AACH,qBAAa,iBAAiB;IAKd,OAAO,CAAC,KAAK;IAAW,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,YAAY;IAHvE,YAAY,EAAE,KAAK,EAAE,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;gBAEd,KAAK,EAAE,OAAO,EAAU,IAAI,EAAE,MAAM,EAAU,YAAY,EAAE,QAAQ,EAAE;IAiB1F,OAAO,CAAC,MAAM;IAwFd,IAAI,GAAG,IAAI,GAAG,CAWb;CACJ"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpace.d.ts b/types/Geometry/SpaceParse/PointSelectSpace.d.ts new file mode 100644 index 0000000..4650e7d --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpace.d.ts @@ -0,0 +1,38 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Entity } from "../../DatabaseServices/Entity/Entity"; +import { PromptPointResult } from "../../Editor/PromptResult"; +import { ISpaceParse } from "./ISpaceParse"; +import { PointSelectBoards } from "./PointSelectBoards"; +export declare enum EnableSelectType { + Stretch = 1, + Two = 2, + Three = 4, + All = 7 +} +export declare class PointSelectSpace { + SpaceParse: ISpaceParse; + GetPointRes: PromptPointResult; + Enable: EnableSelectType; + UseUCSSpace: boolean; + Select(callback?: Function): any; + get ParseOK(): boolean; + /** + * Virtual + * @param brs + */ + protected ParseBySelect(brs: Board[]): Promise; + /** + * Virtual + * @param ptSelect + */ + protected ParseByPointSelect(ptSelect: PointSelectBoards, isDynamic?: boolean): Promise; + protected ParseBy2Point(): Promise; + protected ParseBy3Point(): Promise; + private PointParseSpace; + private PointParseVisualSpace; + private ShowSpaceBox; + private TryRotateSpaceToUCS; +} +export declare function FilterVisualSpaceBox(e: Entity): boolean; +export declare function TryRotateSpaceToUCS(spaceParse: ISpaceParse): void; +//# sourceMappingURL=PointSelectSpace.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpace.d.ts.map b/types/Geometry/SpaceParse/PointSelectSpace.d.ts.map new file mode 100644 index 0000000..b2fe6fb --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointSelectSpace.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectSpace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAI9D,OAAO,EAAE,iBAAiB,EAAgB,MAAM,2BAA2B,CAAC;AAI5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,oBAAY,gBAAgB;IAExB,OAAO,IAAI;IACX,GAAG,IAAI;IACP,KAAK,IAAI;IACT,GAAG,IAAa;CACnB;AASD,qBAAa,gBAAgB;IAEzB,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,iBAAiB,CAAC;IAE/B,MAAM,mBAAwB;IAE9B,WAAW,UAAS;IACd,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ;IA0GhC,IAAI,OAAO,IAAI,OAAO,CAGrB;IAED;;;OAGG;cACa,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;IAI1C;;;OAGG;cACa,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,UAAQ;cAGjE,aAAa;cAGb,aAAa;YAIf,eAAe;IAuB7B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,mBAAmB;CAI9B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,WAG7C;AAGD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,WAAW,QAoC1D"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts b/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts new file mode 100644 index 0000000..4ff23f5 --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts @@ -0,0 +1,10 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { PointSelectBoards } from "./PointSelectBoards"; +import { PointSelectSpace } from "./PointSelectSpace"; +export declare class PointSelectSpaceClamp extends PointSelectSpace { + protected ParseBySelect(brs: Board[], isDynamic?: boolean): Promise; + protected ParseByPointSelect(ptSelect: PointSelectBoards, isDynamic?: boolean): Promise; + protected ParseBy2Point(isDynamic?: boolean): Promise; + protected ParseBy3Point(isDynamic?: boolean): Promise; +} +//# sourceMappingURL=PointSelectSpaceClamp.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts.map b/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts.map new file mode 100644 index 0000000..0ecd6dd --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpaceClamp.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointSelectSpaceClamp.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectSpaceClamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,qBAAa,qBAAsB,SAAQ,gBAAgB;cAEvC,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,SAAS,UAAQ;cAO7C,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,UAAQ;cAMjE,aAAa,CAAC,SAAS,UAAQ;cAM/B,aAAa,CAAC,SAAS,UAAQ;CAMlD"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts b/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts new file mode 100644 index 0000000..1f53a8d --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts @@ -0,0 +1,11 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { PointSelectBoards } from "./PointSelectBoards"; +import { PointSelectSpace } from "./PointSelectSpace"; +/** + * (弃用) 原顶底板空间分析 + */ +export declare class PointSelectSpaceSurround extends PointSelectSpace { + protected ParseBySelect(brs: Board[]): Promise; + protected ParseByPointSelect(ptSelect: PointSelectBoards): Promise; +} +//# sourceMappingURL=PointSelectSpaceSurround.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts.map b/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts.map new file mode 100644 index 0000000..a022c01 --- /dev/null +++ b/types/Geometry/SpaceParse/PointSelectSpaceSurround.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PointSelectSpaceSurround.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/PointSelectSpaceSurround.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;cAE1C,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE;cAM1B,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB;CAKjE"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts b/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts new file mode 100644 index 0000000..774c56c --- /dev/null +++ b/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts @@ -0,0 +1,14 @@ +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { ISpaceParse } from "./ISpaceParse"; +/** + * 板件周围轮廓分析 + */ +export declare class SurroundOutlineParse extends ISpaceParse { + Polylines: Polyline[]; + Outlines: Curve[]; + Parse(): Promise; + private GetOutline; + private ParseBoardList; +} +//# sourceMappingURL=SurroundOutlineParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts.map b/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts.map new file mode 100644 index 0000000..904023c --- /dev/null +++ b/types/Geometry/SpaceParse/SurroundOutlineParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SurroundOutlineParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/SurroundOutlineParse.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAIlE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IAEjD,SAAS,EAAE,QAAQ,EAAE,CAAM;IAC3B,QAAQ,EAAE,KAAK,EAAE,CAAM;IACjB,KAAK;IAyDX,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,cAAc;CAuCzB"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts b/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts new file mode 100644 index 0000000..e128572 --- /dev/null +++ b/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts @@ -0,0 +1,12 @@ +import { ISpaceParse } from "./ISpaceParse"; +/** + * (弃用)绘制顶底板所需要的空间 + */ +export declare class SurroundSpaceParse extends ISpaceParse { + Parse(): Promise; + /** + * 解析基准板 + */ + ParseStandBoard(): Promise; +} +//# sourceMappingURL=SurroundSpaceParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts.map b/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts.map new file mode 100644 index 0000000..5dd341c --- /dev/null +++ b/types/Geometry/SpaceParse/SurroundSpaceParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SurroundSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/SurroundSpaceParse.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAEzC,KAAK;IA4CX;;OAEG;IACG,eAAe;CA+BxB"} \ No newline at end of file diff --git a/types/Geometry/SpaceParse/TotalSpaceParse.d.ts b/types/Geometry/SpaceParse/TotalSpaceParse.d.ts new file mode 100644 index 0000000..3fc5c0d --- /dev/null +++ b/types/Geometry/SpaceParse/TotalSpaceParse.d.ts @@ -0,0 +1,8 @@ +import { ISpaceParse } from "./ISpaceParse"; +/** + * 板件占用空间分析 + */ +export declare class TotalSpaceParse extends ISpaceParse { + Parse(): Promise; +} +//# sourceMappingURL=TotalSpaceParse.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SpaceParse/TotalSpaceParse.d.ts.map b/types/Geometry/SpaceParse/TotalSpaceParse.d.ts.map new file mode 100644 index 0000000..a5c6a64 --- /dev/null +++ b/types/Geometry/SpaceParse/TotalSpaceParse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TotalSpaceParse.d.ts","sourceRoot":"","sources":["../../../../src/Geometry/SpaceParse/TotalSpaceParse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;IAEtC,KAAK;CAYd"} \ No newline at end of file diff --git a/types/Geometry/SweepGeometry.d.ts b/types/Geometry/SweepGeometry.d.ts new file mode 100644 index 0000000..f0f168e --- /dev/null +++ b/types/Geometry/SweepGeometry.d.ts @@ -0,0 +1,15 @@ +import { Geometry } from "three"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +/** + * 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体. + * 该几何体需要轮廓和路径的起始截面垂直,否则构造的实体将会错误. + */ +export declare class SweepGeometry extends Geometry { + edgePts: number[]; + constructor(contour: Polyline, path: Curve); + AddShape(contour: Polyline, path: Curve): void; + private BuildSideFaces; + private BuildLid; +} +//# sourceMappingURL=SweepGeometry.d.ts.map \ No newline at end of file diff --git a/types/Geometry/SweepGeometry.d.ts.map b/types/Geometry/SweepGeometry.d.ts.map new file mode 100644 index 0000000..9ce668b --- /dev/null +++ b/types/Geometry/SweepGeometry.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SweepGeometry.d.ts","sourceRoot":"","sources":["../../../src/Geometry/SweepGeometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAgD,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAK/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IAEvC,OAAO,EAAE,MAAM,EAAE,CAAM;gBACX,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;IAS1C,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;IA8CvC,OAAO,CAAC,cAAc;IA2FtB,OAAO,CAAC,QAAQ;CAkCnB"} \ No newline at end of file diff --git a/types/Geometry/UVUtils.d.ts b/types/Geometry/UVUtils.d.ts new file mode 100644 index 0000000..bef3882 --- /dev/null +++ b/types/Geometry/UVUtils.d.ts @@ -0,0 +1,4 @@ +import { Geometry, Matrix4 } from "three"; +export declare function ScaleUV(geo: Geometry, scale?: number): void; +export declare function ScaleUV2(geo: Geometry, ocs: Matrix4, xScale?: number, yScale?: number, isInvert?: boolean): void; +//# sourceMappingURL=UVUtils.d.ts.map \ No newline at end of file diff --git a/types/Geometry/UVUtils.d.ts.map b/types/Geometry/UVUtils.d.ts.map new file mode 100644 index 0000000..d4c00ca --- /dev/null +++ b/types/Geometry/UVUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UVUtils.d.ts","sourceRoot":"","sources":["../../../src/Geometry/UVUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAEnD,wBAAgB,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,SAAO,QAYlD;AACD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,SAAO,EAAE,MAAM,SAAO,EAAE,QAAQ,UAAQ,QAwBnG"} \ No newline at end of file diff --git a/types/GraphicsSystem/BoolOperateUtils.d.ts b/types/GraphicsSystem/BoolOperateUtils.d.ts new file mode 100644 index 0000000..df4664b --- /dev/null +++ b/types/GraphicsSystem/BoolOperateUtils.d.ts @@ -0,0 +1,13 @@ +import { Vector3 } from 'three'; +import { Circle } from '../DatabaseServices/Entity/Circle'; +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Ellipse } from '../DatabaseServices/Entity/Ellipse'; +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +export declare enum BoolOpeartionType { + Intersection = 0, + Union = 1, + Subtract = 2 +} +export declare function isTargetCurInOrOnSourceCur(sourceCur: Polyline | Circle | Ellipse, targetCur: Curve): boolean; +export declare function IsPtsAllOutOrOnReg(sourceReg: Polyline | Circle, pts: Vector3[]): boolean; +//# sourceMappingURL=BoolOperateUtils.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/BoolOperateUtils.d.ts.map b/types/GraphicsSystem/BoolOperateUtils.d.ts.map new file mode 100644 index 0000000..d988dd0 --- /dev/null +++ b/types/GraphicsSystem/BoolOperateUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoolOperateUtils.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/BoolOperateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,oBAAY,iBAAiB;IAEzB,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,QAAQ,IAAI;CACf;AAMD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,WAkBlG;AA+BD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,WAO9E"} \ No newline at end of file diff --git a/types/GraphicsSystem/CalcEdgeSealing.d.ts b/types/GraphicsSystem/CalcEdgeSealing.d.ts new file mode 100644 index 0000000..2e4f0f1 --- /dev/null +++ b/types/GraphicsSystem/CalcEdgeSealing.d.ts @@ -0,0 +1,34 @@ +import { Board } from "../DatabaseServices/Entity/Board"; +import { Circle } from "../DatabaseServices/Entity/Circle"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +import { IHighSealedItem } from "../UI/Store/BoardInterface"; +/** + *曲线列表分段 + * @l-arc-l,l-arc-arc-l,l-arc-l-arc-l.... + */ +export declare function ParagraphCulist(cus: Curve[]): void; +/** + *计算封边 + */ +export declare function CalcEdgeSealing(cus: Curve[]): boolean; +export declare function GetBoardHighSeal(br: Board, sealcus: Curve[]): IHighSealedItem[]; +/**偏移前后曲线起点没改变 */ +export declare function OffsetOutlineSpNotChange(oldcu: Curve, newCu: Curve): boolean; +/** + * 获取板件封边轮廓线段数组 + * 消除共线的数据,不改变轮廓方向 + * isOffset-是否偏移轮廓用于查看 + * */ +export declare function GetBoardSealingCurves(br: Board, isOffset?: boolean): Curve[]; +/** + * 获取板件轮廓 + * 结果轮廓拆单用,统一逆时针数据 + * hasSealing 轮廓是否包含封边 + * 用户计算拆单侧孔面id + */ +export declare function GetSealedBoardContour(br: Board, hasSealing: boolean): Polyline | Circle | undefined; +export declare function ParagraphSealinglist(hightSeal: IHighSealedItem[], cus: Curve[]): IHighSealedItem[]; +/**处理常规板件封边数据和上下左右封边值 */ +export declare function HandleRectBoardSealingData(br: Board, edges: IHighSealedItem[], cus?: Curve[]): void; +//# sourceMappingURL=CalcEdgeSealing.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/CalcEdgeSealing.d.ts.map b/types/GraphicsSystem/CalcEdgeSealing.d.ts.map new file mode 100644 index 0000000..858e95e --- /dev/null +++ b/types/GraphicsSystem/CalcEdgeSealing.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CalcEdgeSealing.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/CalcEdgeSealing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,QA4G3C;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,WA+F3C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,qBA6B3D;AAED,iBAAiB;AACjB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,WASlE;AAED;;;;KAIK;AACL,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,UAAQ,GAAG,KAAK,EAAE,CAiC1E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAmDnG;AAGD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,qBAoF9E;AAED,wBAAwB;AACxB,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAgC5F"} \ No newline at end of file diff --git a/types/GraphicsSystem/CameraUpdate.d.ts b/types/GraphicsSystem/CameraUpdate.d.ts new file mode 100644 index 0000000..7fe1c22 --- /dev/null +++ b/types/GraphicsSystem/CameraUpdate.d.ts @@ -0,0 +1,62 @@ +import { Box3, OrthographicCamera, PerspectiveCamera, Vector3 } from 'three'; +import { CADFiler } from '../DatabaseServices/CADFiler'; +export declare enum CameraType { + OrthographicCamera = 1, + PerspectiveCamera = 2 +} +declare type Camera = OrthographicCamera | PerspectiveCamera; +/** + * + * 相机的控制. + * ->切换相机 + * ->设置视口大小 + * ->旋转和移动相机. + */ +export declare class CameraUpdate { + private _CurCamera; + private _CameraArray; + private _Width; + private _Height; + private _ViewHeight; + private _Target; + private _Direction; + private _Orbit; + _MinViewHeight: number; + _MaxViewHeight: number; + constructor(); + get Aspect(): number; + get Camera(): Camera; + get ViewHeight(): number; + set ViewHeight(height: number); + get Direction(): Vector3; + SetSize(width: number, height: number): void; + get Width(): number; + get Height(): number; + /** + * 平移相机. + * @param {Vector3} mouseMove + */ + Pan(mouseMove: Vector3): void; + Rotate(mouseMove: Vector3, target: Vector3): void; + Zoom(scale: number, scaleCenter?: Vector3): void; + ZoomExtensBox3(box3: Box3): void; + /** + * 设置相机的观察向量. + * @param {Vector3} dir 方向向量,这个向量传入后会被更改为单位向量 + */ + LookAt(dir: Vector3): void; + LookAtEvent(dir: Vector3): void; + UpdateUp(): void; + /** + * 根据视口大小,设置相机视口范围. + */ + Update(): void; + ZoomEvent(): void; + set CameraType(type: CameraType); + get CameraType(): CameraType; + SwitchCamera(): void; + ReadFile(file: CADFiler): void; + WriteFile(file: CADFiler): void; +} +export {}; +//# sourceMappingURL=CameraUpdate.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/CameraUpdate.d.ts.map b/types/GraphicsSystem/CameraUpdate.d.ts.map new file mode 100644 index 0000000..5233b66 --- /dev/null +++ b/types/GraphicsSystem/CameraUpdate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CameraUpdate.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/CameraUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAQxD,oBAAY,UAAU;IAElB,kBAAkB,IAAI;IACtB,iBAAiB,IAAI;CACxB;AAED,aAAK,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAErD;;;;;;GAMG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAA4C;IAGhE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,WAAW,CAAgB;IAGnC,OAAO,CAAC,OAAO,CAA0B;IAEzC,OAAO,CAAC,UAAU,CAAkC;IAEpD,OAAO,CAAC,MAAM,CAAsB;IAGpC,cAAc,SAAQ;IACtB,cAAc,SAAO;;IAiBrB,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,MAAM,IAAI,MAAM,CAGnB;IACD,IAAI,UAAU,WAGb;IACD,IAAI,UAAU,CAAC,MAAM,QAAA,EAIpB;IAED,IAAI,SAAS,YAGZ;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKrC,IAAI,KAAK,WAGR;IACD,IAAI,MAAM,WAGT;IAED;;;OAGG;IACH,GAAG,CAAC,SAAS,EAAE,OAAO;IAStB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IA0B1C,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO;IAoBzC,cAAc,CAAC,IAAI,EAAE,IAAI;IAsBzB;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,OAAO;IAQnB,WAAW,CAAC,GAAG,EAAE,OAAO;IAExB,QAAQ;IAIR;;OAEG;IACH,MAAM;IA+BN,SAAS;IAIT,IAAI,UAAU,CAAC,IAAI,EAAE,UAAU,EAI9B;IACD,IAAI,UAAU,IALO,UAAU,CAW9B;IAED,YAAY;IAaZ,QAAQ,CAAC,IAAI,EAAE,QAAQ;IAYvB,SAAS,CAAC,IAAI,EAAE,QAAQ;CAO3B"} \ No newline at end of file diff --git a/types/GraphicsSystem/Cursor.d.ts b/types/GraphicsSystem/Cursor.d.ts new file mode 100644 index 0000000..d58f2b8 --- /dev/null +++ b/types/GraphicsSystem/Cursor.d.ts @@ -0,0 +1,52 @@ +import { Object3D, Vector3 } from "three"; +export declare enum CursorMode { + None = 0, + GetEntity = 1, + GetPoint = 2 +} +/** + * 在前视图中显示的光标 + */ +export declare class Cursor { + /** + * 光标的绘制对象 + */ + CursorObject: Object3D; + /** + * 方向框大小 + */ + private _SquareSize; + /** + * 延伸线长度 + */ + private _LineLength; + private _3DLineLength; + private _SquareObject; + private _OutsideCrossLineObject; + private _CrossLineObject; + private _threeDLine; + private _Mode; + private _isTheeeDMode; + constructor(); + get IsThreeMode(): boolean; + set IsThreeMode(bool: boolean); + set Mode(mode: CursorMode); + set LineLength2D(l: number); + set LineLength3D(l: number); + UpdateCursor(): void; + set Position(ptView: Vector3); + /** + * 设置选择框的大小 + */ + set SquareSize(size: number); + get SquareSize(): number; + set CrossLineLength(length: number); + UpdateEvent(): void; + Update3DLine(): void; + private SquarePts; + private OutsideLinePts; + private CrossLinePts; + private CreateCross3DLine; + set Color(n: number); +} +//# sourceMappingURL=Cursor.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/Cursor.d.ts.map b/types/GraphicsSystem/Cursor.d.ts.map new file mode 100644 index 0000000..1159903 --- /dev/null +++ b/types/GraphicsSystem/Cursor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Cursor.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/Cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,QAAQ,EAAE,OAAO,EAAS,MAAM,OAAO,CAAC;AAQrF,oBAAY,UAAU;IAElB,IAAI,IAAI;IACR,SAAS,IAAI;IACb,QAAQ,IAAI;CACf;AAED;;GAEG;AACH,qBAAa,MAAM;IAEf;;OAEG;IACH,YAAY,WAAkB;IAE9B;;OAEG;IACH,OAAO,CAAC,WAAW,CAAM;IAEzB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,aAAa,CAAO;IAE5B,OAAO,CAAC,aAAa,CAAO;IAC5B,OAAO,CAAC,uBAAuB,CAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAe;IACvC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,aAAa,CAAS;;IAwB9B,IAAI,WAAW,IAIO,OAAO,CAD5B;IACD,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,EAQ5B;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,EAOxB;IACD,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,EAMzB;IACD,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,EAUzB;IACD,YAAY;IA+BZ,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAM3B;IAED;;OAEG;IACH,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAO1B;IACD,IAAI,UAAU,IARO,MAAM,CAW1B;IAED,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,EAOjC;IAGD,WAAW;IAKX,YAAY;IAYZ,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;IAYzB,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAGlB;CACJ"} \ No newline at end of file diff --git a/types/GraphicsSystem/FXAAPass.d.ts b/types/GraphicsSystem/FXAAPass.d.ts new file mode 100644 index 0000000..1f666c1 --- /dev/null +++ b/types/GraphicsSystem/FXAAPass.d.ts @@ -0,0 +1,6 @@ +import { ShaderPass } from "three/examples/jsm/postprocessing/ShaderPass"; +export declare class FXAAPass extends ShaderPass { + constructor(); + setSize(width: number, height: number): void; +} +//# sourceMappingURL=FXAAPass.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/FXAAPass.d.ts.map b/types/GraphicsSystem/FXAAPass.d.ts.map new file mode 100644 index 0000000..be2739b --- /dev/null +++ b/types/GraphicsSystem/FXAAPass.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FXAAPass.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/FXAAPass.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE1E,qBAAa,QAAS,SAAQ,UAAU;;IAOpC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIxC"} \ No newline at end of file diff --git a/types/GraphicsSystem/GripScene.d.ts b/types/GraphicsSystem/GripScene.d.ts new file mode 100644 index 0000000..6f18630 --- /dev/null +++ b/types/GraphicsSystem/GripScene.d.ts @@ -0,0 +1,12 @@ +import { BufferGeometry, Object3D, Points, PointsMaterial } from 'three'; +export declare class GripScene extends Object3D { + _GripMaterial: PointsMaterial; + _GripMap: Map>; + constructor(); + Append(obj: Object3D): void; + Remove(obj: Object3D): void; + Clear(): void; + Update(entity: Object3D): void; + UpdateAll(): void; +} +//# sourceMappingURL=GripScene.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/GripScene.d.ts.map b/types/GraphicsSystem/GripScene.d.ts.map new file mode 100644 index 0000000..ee52359 --- /dev/null +++ b/types/GraphicsSystem/GripScene.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GripScene.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/GripScene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAKzE,qBAAa,SAAU,SAAQ,QAAQ;IAGnC,aAAa,EAAE,cAAc,CAAC;IAE9B,QAAQ,0HAA+B;;IAWvC,MAAM,CAAC,GAAG,EAAE,QAAQ;IAgBpB,MAAM,CAAC,GAAG,EAAE,QAAQ;IAYpB,KAAK;IASL,MAAM,CAAC,MAAM,EAAE,QAAQ;IAKvB,SAAS;CAqBZ"} \ No newline at end of file diff --git a/types/GraphicsSystem/IView.d.ts b/types/GraphicsSystem/IView.d.ts new file mode 100644 index 0000000..1f812ec --- /dev/null +++ b/types/GraphicsSystem/IView.d.ts @@ -0,0 +1,8 @@ +import { Camera, Scene } from "three"; +export interface IViewer { + Camera: Camera; + Width: number; + Height: number; + Scene: Scene; +} +//# sourceMappingURL=IView.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/IView.d.ts.map b/types/GraphicsSystem/IView.d.ts.map new file mode 100644 index 0000000..35ec095 --- /dev/null +++ b/types/GraphicsSystem/IView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IView.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/IView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,WAAW,OAAO;IAEpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;CAChB"} \ No newline at end of file diff --git a/types/GraphicsSystem/IntersectWith.d.ts b/types/GraphicsSystem/IntersectWith.d.ts new file mode 100644 index 0000000..91a3844 --- /dev/null +++ b/types/GraphicsSystem/IntersectWith.d.ts @@ -0,0 +1,74 @@ +import { Vector3 } from 'three'; +import { Arc } from '../DatabaseServices/Entity/Arc'; +import { Circle } from '../DatabaseServices/Entity/Circle'; +import { Curve } from '../DatabaseServices/Entity/Curve'; +import { Ellipse } from '../DatabaseServices/Entity/Ellipse'; +import { Line } from '../DatabaseServices/Entity/Line'; +import { Polyline } from '../DatabaseServices/Entity/Polyline'; +/** + * 相交延伸选项. + * + * @export + * @enum {number} + */ +export declare enum IntersectOption { + /** + * 两者都不延伸 + */ + OnBothOperands = 0, + /** + * 延伸自身 + */ + ExtendThis = 1, + /** + * 延伸参数 + */ + ExtendArg = 2, + /** + * 延伸两者 + */ + ExtendBoth = 3 +} +export interface IntersectResult { + pt: Vector3; + thisParam: number; + argParam: number; +} +export declare function reverseIntersectOption(intType: IntersectOption): IntersectOption; +export declare function IntersectCircleAndCircle(cu1: Circle | Arc, cu2: Circle | Arc): IntersectResult[]; +/** + * 计算圆与圆弧的交点. + * + * @export + * @param {Circle} circle 圆 + * @param {Arc} arc 圆弧 + * @param {IntersectOption} extType 延伸选项 + * @returns 交点集合 + */ +export declare function IntersectCircleAndArc(circle: Circle, arc: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[]; +/** + * 计算圆弧与圆弧的交点 + * + * @export + * @param {Arc} arc1 圆弧 + * @param {Arc} arc2 圆弧 + * @param {IntersectOption} extType 延伸选项 + * @returns 交点集合 + */ +export declare function IntersectArcAndArc(arc1: Arc, arc2: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[]; +export declare function IntersectEllipseAndLine(l: Line, el: Ellipse, extType: IntersectOption, tolerance?: number): IntersectResult[]; +export declare function IntersectLineAndCircle(line: Line, circle: Circle, extType: IntersectOption, tolerance?: number): IntersectResult[]; +export declare function IntersectLineAndArc(line: Line, arc: Arc, extType: IntersectOption, tolerance?: number): IntersectResult[]; +export declare function IntersectLAndLFor2D(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3; +export declare function IntersectLAndLFor2D2(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3): Vector3[]; +export declare function IntersectLine3AndLine3(p1: Vector3, p2: Vector3, p3: Vector3, p4: Vector3, epsilon?: number): Vector3; +export declare function IntersectLineAndLine(l1: Line, l2: Line, extType: IntersectOption, fuzz?: number): IntersectResult[]; +export declare function IntersectPolylineAndCurve(pl: Polyline, cu: Curve, extType: IntersectOption, tolerance?: number): IntersectResult[]; +export declare function IntersectLineAndEllipseFor2D(l: Line, el: Ellipse): { + pt: Vector3; + thisParam: number; + argParam: number; +}[]; +export declare function IntersectEllipseAndCircleOrArc(el: Ellipse, cir: Circle | Arc, type: IntersectOption): IntersectResult[]; +export declare function IntersectEllipse(el1: Ellipse, el2: Ellipse, type: IntersectOption): IntersectResult[]; +//# sourceMappingURL=IntersectWith.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/IntersectWith.d.ts.map b/types/GraphicsSystem/IntersectWith.d.ts.map new file mode 100644 index 0000000..f10c3bf --- /dev/null +++ b/types/GraphicsSystem/IntersectWith.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IntersectWith.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/IntersectWith.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/GraphicsSystem/Octree.d.ts b/types/GraphicsSystem/Octree.d.ts new file mode 100644 index 0000000..954a558 --- /dev/null +++ b/types/GraphicsSystem/Octree.d.ts @@ -0,0 +1,52 @@ +import { Vector3 } from "three"; +/** + * 移植THree。js八叉树,未完善 + */ +export declare class Octree { + nodeCount: any; + INDEX_INSIDE_CROSS: any; + INDEX_OUTSIDE_OFFSET: any; + INDEX_OUTSIDE_POS_X: any; + INDEX_OUTSIDE_NEG_X: any; + INDEX_OUTSIDE_POS_Y: any; + INDEX_OUTSIDE_NEG_Y: any; + INDEX_OUTSIDE_POS_Z: any; + INDEX_OUTSIDE_NEG_Z: any; + INDEX_OUTSIDE_MAP: any; + FLAG_POS_X: any; + FLAG_NEG_X: any; + FLAG_POS_Y: any; + FLAG_NEG_Y: any; + FLAG_POS_Z: any; + FLAG_NEG_Z: any; + utilVec31Search: Vector3; + utilVec32Search: Vector3; + scene: any; + visualGeometry: any; + visualMaterial: any; + objects: any; + objectsMap: {}; + objectsData: any[]; + objectsDeferred: any[]; + depthMax: any; + objectsThreshold: any; + overlapPct: any; + undeferred: any; + root: any; + constructor(parameters?: any); + update(): void; + add(object: any, options?: any): void; + addDeferred(object: any, options?: any): void; + addObjectData(object: any, part: any): void; + remove(object: any): void; + extend(octree: Octree): void; + rebuild(): void; + updateObject(object: any): void; + search(position: Vector3, radius: number, organizeByObject: boolean, direction: Vector3): void; + setRoot(root: any): void; + getDepthEnd(): number; + getNodeCountEnd(): number; + getObjectCountEnd(): number; + toConsole(): void; +} +//# sourceMappingURL=Octree.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/Octree.d.ts.map b/types/GraphicsSystem/Octree.d.ts.map new file mode 100644 index 0000000..565a56d --- /dev/null +++ b/types/GraphicsSystem/Octree.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Octree.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/Octree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgB,MAAM,OAAO,CAAC;AAS9C;;GAEG;AACH,qBAAa,MAAM;IAEf,SAAS,MAAC;IACV,kBAAkB,MAAC;IACnB,oBAAoB,MAAC;IACrB,mBAAmB,MAAC;IACpB,mBAAmB,MAAC;IACpB,mBAAmB,MAAC;IACpB,mBAAmB,MAAC;IACpB,mBAAmB,MAAC;IACpB,mBAAmB,MAAC;IACpB,iBAAiB,MAAC;IAClB,UAAU,MAAC;IACX,UAAU,MAAC;IAAC,UAAU,MAAC;IAAC,UAAU,MAAC;IAAC,UAAU,MAAC;IAAC,UAAU,MAAC;IAC3D,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,MAAC;IACN,cAAc,MAAC;IACf,cAAc,MAAC;IACf,OAAO,MAAC;IACR,UAAU,KAAM;IAChB,WAAW,QAAM;IACjB,eAAe,QAAM;IAErB,QAAQ,MAAC;IACT,gBAAgB,MAAC;IACjB,UAAU,MAAC;IACX,UAAU,MAAC;IACX,IAAI,MAAC;gBACO,UAAU,CAAC,EAAE,GAAG;IAmE5B,MAAM;IAKN,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG;IAK9B,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG;IAKtC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG;IAKpC,MAAM,CAAC,MAAM,EAAE,GAAG;IAKlB,MAAM,CAAC,MAAM,EAAE,MAAM;IAKrB,OAAO;IAKP,YAAY,CAAC,MAAM,EAAE,GAAG;IAKxB,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;IAKvF,OAAO,CAAC,IAAI,EAAE,GAAG;IAKjB,WAAW,IAAI,MAAM;IAKrB,eAAe,IAAI,MAAM;IAMzB,iBAAiB,IAAI,MAAM;IAM3B,SAAS;CAIZ"} \ No newline at end of file diff --git a/types/GraphicsSystem/OffsetPolyline.d.ts b/types/GraphicsSystem/OffsetPolyline.d.ts new file mode 100644 index 0000000..ca0642f --- /dev/null +++ b/types/GraphicsSystem/OffsetPolyline.d.ts @@ -0,0 +1,60 @@ +import { Box3, Matrix4, Vector3 } from "three"; +import { Contour } from "../DatabaseServices/Contour"; +import { Arc } from "../DatabaseServices/Entity/Arc"; +import { Circle } from "../DatabaseServices/Entity/Circle"; +import { Curve } from "../DatabaseServices/Entity/Curve"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +interface IOffsetResult { + index: number; + curve: Curve; + sp?: Vector3; + preArc?: Curve; + ep?: Vector3; + nextArc?: Curve; + paddingCurve?: Curve[]; +} +declare class CurveTreeNode { + curve: Curve; + children: CurveTreeNode[]; + box: Box3; + used: boolean; + constructor(curve: Curve, box?: Box3); + TrimBy(contour: Contour, box: Box3): void; + get Nodes(): CurveTreeNode[]; +} +export declare class OffsetPolyline { + _Polyline: Polyline; + _OffsetDist: number; + _ToolPath: boolean; + private _OffsetDistSq; + _CacheOCS: Matrix4; + _Vertexs: Vector3[]; + _SubCurves: Curve[]; + _Circles: Circle[]; + _SubOffsetedCurves: IOffsetResult[]; + _CurveTreeNodes: CurveTreeNode[]; + _CurveTrimedTreeNodes: CurveTreeNode[]; + _TrimPolylineContours: Contour[]; + _TrimCircleContours: Circle[]; + _TrimArcContours: Contour[]; + _RetCurves: Polyline[]; + _IsClose: boolean; + _OffsetDistSign: number; + constructor(_Polyline: Polyline, _OffsetDist: number, _ToolPath?: boolean, _OffsetDistSq?: number); + Do(): Polyline[]; + InitSubCurves(): this; + protected GeneralCirclesAndVertexs(): void; + protected OffsetSubCurves(): void; + protected LinkSubCurves(): void; + private IsSharpCorner; + protected GeneralTrimContours(): void; + protected TrimByContours(): void; + private FilterInvalidCurve; + private JoinCollinear; + private LinkResultPolyline; + CheckPointDir(pt: Vector3): boolean; + GetPointAtCurveDir(pt: Vector3): number; + protected CreateArc(center: Vector3, startP: Vector3, endP?: Vector3): Arc; +} +export {}; +//# sourceMappingURL=OffsetPolyline.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/OffsetPolyline.d.ts.map b/types/GraphicsSystem/OffsetPolyline.d.ts.map new file mode 100644 index 0000000..3515ebe --- /dev/null +++ b/types/GraphicsSystem/OffsetPolyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OffsetPolyline.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/OffsetPolyline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAK/C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAM/D,UAAU,aAAa;IAEnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;CAC1B;AAED,cAAM,aAAa;IAKI,KAAK,EAAE,KAAK;IAH/B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,GAAG,EAAE,IAAI,CAAC;IACV,IAAI,EAAE,OAAO,CAAC;gBACK,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI;IAK3C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI;IAiDlC,IAAI,KAAK,oBAUR;CACJ;AAED,qBAAa,cAAc;IA0BJ,SAAS,EAAE,QAAQ;IAAS,WAAW,EAAE,MAAM;IAAS,SAAS;IAChF,OAAO,CAAC,aAAa;IAxBzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IAGnB,kBAAkB,EAAE,aAAa,EAAE,CAAC;IAEpC,eAAe,EAAE,aAAa,EAAE,CAAC;IAEjC,qBAAqB,EAAE,aAAa,EAAE,CAAC;IAGvC,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAG5B,UAAU,EAAE,QAAQ,EAAE,CAAC;IAEvB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;gBAEL,SAAS,EAAE,QAAQ,EAAS,WAAW,EAAE,MAAM,EAAS,SAAS,UAAQ,EAChF,aAAa,SAA2B;IAKpD,EAAE,IAAI,QAAQ,EAAE;IAoChB,aAAa;IAUb,SAAS,CAAC,wBAAwB;IAWlC,SAAS,CAAC,eAAe;IAkBzB,SAAS,CAAC,aAAa;IA8JvB,OAAO,CAAC,aAAa;IAUrB,SAAS,CAAC,mBAAmB;IAoK7B,SAAS,CAAC,cAAc;IAqBxB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,aAAa;IAoCrB,OAAO,CAAC,kBAAkB;IAwE1B,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO;IAKnC,kBAAkB,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IA0FvC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO;CAOvE"} \ No newline at end of file diff --git a/types/GraphicsSystem/OutlinePass.d.ts b/types/GraphicsSystem/OutlinePass.d.ts new file mode 100644 index 0000000..8c61da9 --- /dev/null +++ b/types/GraphicsSystem/OutlinePass.d.ts @@ -0,0 +1,61 @@ +import { Color, Matrix4, MeshBasicMaterial, MeshDepthMaterial, Object3D, OrthographicCamera, PerspectiveCamera, Scene, ShaderMaterial, Vector2, WebGLRenderer, WebGLRenderTarget } from "three"; +import { Pass } from "three/examples/jsm/postprocessing/Pass"; +/** + * @author spidersharma / http://eduperiment.com/ + */ +export declare class OutlinePass extends Pass { + renderScene: Scene; + renderCamera: OrthographicCamera | PerspectiveCamera; + resolution: Vector2; + selectedObjects: Object3D[]; + renderObjects: Object3D[]; + visibleEdgeColor: Color; + hiddenEdgeColor: Color; + edgeGlow: number; + usePatternTexture: boolean; + edgeThickness: number; + edgeStrength: number; + downSampleRatio: number; + pulsePeriod: number; + maskBufferMaterial: MeshBasicMaterial; + renderTargetMaskBuffer: WebGLRenderTarget; + depthMaterial: MeshDepthMaterial; + prepareMaskMaterial: ShaderMaterial; + renderTargetDepthBuffer: WebGLRenderTarget; + renderTargetMaskDownSampleBuffer: WebGLRenderTarget; + renderTargetBlurBuffer1: WebGLRenderTarget; + renderTargetBlurBuffer2: WebGLRenderTarget; + edgeDetectionMaterial: ShaderMaterial; + renderTargetEdgeBuffer1: WebGLRenderTarget; + renderTargetEdgeBuffer2: WebGLRenderTarget; + separableBlurMaterial1: ShaderMaterial; + separableBlurMaterial2: ShaderMaterial; + overlayMaterial: ShaderMaterial; + copyUniforms: { + [x: string]: { + value: any; + }; + }; + materialCopy: ShaderMaterial; + oldClearColor: Color; + oldClearAlpha: number; + fsQuad: Pass.FullScreenQuad; + tempPulseColor1: Color; + tempPulseColor2: Color; + textureMatrix: Matrix4; + patternTexture: any; + constructor(renderScene: Scene, renderCamera: OrthographicCamera | PerspectiveCamera, resolution?: Vector2, selectedObjects?: Object3D[]); + dispose(): void; + setSize(width: number, height: number): void; + changeVisibilityOfSelectedObjects(bVisible: any): void; + changeVisibilityOfNonSelectedObjects(bVisible: any): void; + updateTextureMatrix(): void; + render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, deltaTime: number, maskActive: boolean): void; + getPrepareMaskMaterial(): ShaderMaterial; + getEdgeDetectionMaterial(): ShaderMaterial; + getSeperableBlurMaterial(maxRadius: number): ShaderMaterial; + getOverlayMaterial(): ShaderMaterial; + static BlurDirectionX: Vector2; + static BlurDirectionY: Vector2; +} +//# sourceMappingURL=OutlinePass.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/OutlinePass.d.ts.map b/types/GraphicsSystem/OutlinePass.d.ts.map new file mode 100644 index 0000000..c2420bb --- /dev/null +++ b/types/GraphicsSystem/OutlinePass.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OutlinePass.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/OutlinePass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAA4B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAc,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAgC,KAAK,EAAE,cAAc,EAAiB,OAAO,EAAW,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC9S,OAAO,EAAE,IAAI,EAAE,MAAM,wCAAwC,CAAC;AAG9D;;GAEG;AACH,qBAAa,WAAY,SAAQ,IAAI;IAmCtB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,kBAAkB,GAAG,iBAAiB;IACpD,UAAU,EAAE,OAAO;IACnB,eAAe,EAAE,QAAQ,EAAE;IApCtC,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,gBAAgB,EAAE,KAAK,CAAsB;IAC7C,eAAe,EAAE,KAAK,CAA8B;IACpD,QAAQ,EAAE,MAAM,CAAO;IACvB,iBAAiB,EAAE,OAAO,CAAS;IACnC,aAAa,EAAE,MAAM,CAAO;IAC5B,YAAY,EAAE,MAAM,CAAO;IAC3B,eAAe,EAAE,MAAM,CAAK;IAC5B,WAAW,EAAE,MAAM,CAAK;IACxB,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,sBAAsB,EAAE,iBAAiB,CAAC;IAC1C,aAAa,EAAE,iBAAiB,CAAC;IACjC,mBAAmB,EAAE,cAAc,CAAC;IACpC,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,gCAAgC,EAAE,iBAAiB,CAAC;IACpD,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,qBAAqB,EAAE,cAAc,CAAC;IACtC,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,uBAAuB,EAAE,iBAAiB,CAAC;IAC3C,sBAAsB,EAAE,cAAc,CAAC;IACvC,sBAAsB,EAAE,cAAc,CAAC;IACvC,eAAe,EAAE,cAAc,CAAC;IAChC,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,GAAG,CAAC;SAAE,CAAC;KAAE,CAAC;IAChD,YAAY,EAAE,cAAc,CAAC;IAC7B,aAAa,EAAE,KAAK,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC;IAC5B,eAAe,EAAE,KAAK,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,GAAG,CAAC;gBAET,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,kBAAkB,GAAG,iBAAiB,EACpD,UAAU,GAAE,OAA+B,EAC3C,eAAe,GAAE,QAAQ,EAAO;IAwG3C,OAAO;IAaP,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAuBrC,iCAAiC,CAAC,QAAQ,KAAA;IAqC1C,oCAAoC,CAAC,QAAQ,KAAA;IA8D7C,mBAAmB;IAYnB,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;IA4IrI,sBAAsB;IA+CtB,wBAAwB;IA8CxB,wBAAwB,CAAC,SAAS,EAAE,MAAM;IAsD1C,kBAAkB;IAoDlB,MAAM,CAAC,cAAc,UAAyB;IAC9C,MAAM,CAAC,cAAc,UAAyB;CACjD"} \ No newline at end of file diff --git a/types/GraphicsSystem/PreViewer.d.ts b/types/GraphicsSystem/PreViewer.d.ts new file mode 100644 index 0000000..7806f9d --- /dev/null +++ b/types/GraphicsSystem/PreViewer.d.ts @@ -0,0 +1,46 @@ +import { Line, LineBasicMaterial, LineDashedMaterial, Scene, Vector3 } from 'three'; +import { CameraUpdate } from './CameraUpdate'; +import { Cursor } from './Cursor'; +export declare enum DrawMode { + Square = 0, + Cross = 1, + ObliqueCross = 2 +} +export declare class PreViewer { + private m_bNeedUpdate; + private m_Render; + private m_Scene; + protected m_Camera: CameraUpdate; + private m_Width; + private m_Height; + /** + * 光标对象 + */ + Cursor: Cursor; + private m_DomEl; + constructor(container: HTMLElement); + UpdateSize(width: number, height: number): void; + get Width(): number; + get Height(): number; + get Scene(): Scene; + get Camera(): import("three").OrthographicCamera | import("three").PerspectiveCamera; + UpdateScreen(): void; + StartRender: () => void; + Render(): void; + private InitCamera; + private InitRender; + WorldToViewPoint(pWcs: Vector3): Vector3; + ScreenPointToViewerPoint(p: Vector3): Vector3; + ViewerPointToScreenPoint(p: Vector3): Vector3; + Draw(mode: DrawMode, size: number, pt: Vector3, material: LineBasicMaterial | LineDashedMaterial, isWcs?: boolean): Line; + /** + * 在视图中绘制线,并返回该对象 + * @param pts 点表 + * @param material 材质 + * @param [isWCS] 点表是世界坐标系 + * @param [type] 绘制类型 Line or LineSegment + * @returns + */ + DrawLine(pts: Vector3[], material: LineBasicMaterial | LineDashedMaterial, isWCS?: boolean, type?: typeof Line): Line; +} +//# sourceMappingURL=PreViewer.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/PreViewer.d.ts.map b/types/GraphicsSystem/PreViewer.d.ts.map new file mode 100644 index 0000000..eeda37c --- /dev/null +++ b/types/GraphicsSystem/PreViewer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PreViewer.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/PreViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAgB,KAAK,EAAE,OAAO,EAAiB,MAAM,OAAO,CAAC;AAKjH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,oBAAY,QAAQ;IAEhB,MAAM,IAAI;IACV,KAAK,IAAI;IACT,YAAY,IAAI;CACnB;AAGD,qBAAa,SAAS;IAElB,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,QAAQ,CAAgB;IAEhC,OAAO,CAAC,OAAO,CAAe;IAE9B,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IAEzB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAGf,OAAO,CAAC,OAAO,CAAc;gBACjB,SAAS,EAAE,WAAW;IAkBlC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAYxC,IAAI,KAAK,WAGR;IACD,IAAI,MAAM,WAGT;IACD,IAAI,KAAK,UAA2B;IACpC,IAAI,MAAM,2EAAmC;IAC7C,YAAY;IAIZ,WAAW,aAQT;IACF,MAAM;IAMN,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,UAAU;IAwBlB,gBAAgB,CAAC,IAAI,EAAE,OAAO;IAM9B,wBAAwB,CAAC,CAAC,EAAE,OAAO;IAOnC,wBAAwB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO;IAW7C,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,KAAK,GAAE,OAAc;IAoCvH;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,iBAAiB,GAAG,kBAAkB,EAAE,KAAK,UAAO,EAAE,IAAI,cAAO;CAiBvG"} \ No newline at end of file diff --git a/types/GraphicsSystem/RenderPerformanceStatus.d.ts b/types/GraphicsSystem/RenderPerformanceStatus.d.ts new file mode 100644 index 0000000..2eeb5d3 --- /dev/null +++ b/types/GraphicsSystem/RenderPerformanceStatus.d.ts @@ -0,0 +1,10 @@ +import Stats = require('stats.js'); +import { Viewer } from './Viewer'; +/** + * 渲染性能状态查看器. 在DOM上显示一个渲染帧数 + */ +export declare class RenderPerformanceStatus { + m_Stats: Stats; + constructor(view: Viewer); +} +//# sourceMappingURL=RenderPerformanceStatus.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/RenderPerformanceStatus.d.ts.map b/types/GraphicsSystem/RenderPerformanceStatus.d.ts.map new file mode 100644 index 0000000..befc3f5 --- /dev/null +++ b/types/GraphicsSystem/RenderPerformanceStatus.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RenderPerformanceStatus.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/RenderPerformanceStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,UAAU,CAAC,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;GAEG;AACH,qBAAa,uBAAuB;IAEhC,OAAO,EAAE,KAAK,CAAC;gBACH,IAAI,EAAE,MAAM;CAkB3B"} \ No newline at end of file diff --git a/types/GraphicsSystem/RenderType.d.ts b/types/GraphicsSystem/RenderType.d.ts new file mode 100644 index 0000000..88be43f --- /dev/null +++ b/types/GraphicsSystem/RenderType.d.ts @@ -0,0 +1,40 @@ +/** + * 场景的渲染类型. + */ +export declare enum RenderType { + /** + * 线框模式 + */ + Wireframe = 1, + /** + * 概念 + */ + Conceptual = 2, + /** + * 物理着色PBR + */ + Physical = 3, + Jig = 4, + Print = 5, + /**物理带线框 */ + Physical2 = 6, + Edge = 7, + /******************************************** 在视口时的渲染模式 */ + /** + * 线框模式 + */ + WireframePrint = 101, + /** + * 概念 + */ + ConceptualPrint = 102, + /** + * 物理着色PBR + */ + PhysicalPrint = 103, + JigPrint = 104, + PrintPrint = 105, + /**物理带线框 */ + Physical2Print = 106 +} +//# sourceMappingURL=RenderType.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/RenderType.d.ts.map b/types/GraphicsSystem/RenderType.d.ts.map new file mode 100644 index 0000000..52af22f --- /dev/null +++ b/types/GraphicsSystem/RenderType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RenderType.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/RenderType.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,UAAU;IAElB;;OAEG;IACH,SAAS,IAAI;IAEb;;OAEG;IACH,UAAU,IAAI;IAGd;;OAEG;IACH,QAAQ,IAAI;IAEZ,GAAG,IAAI;IACP,KAAK,IAAI;IACT,WAAW;IACX,SAAS,IAAI;IACb,IAAI,IAAI;IAER,0DAA0D;IAC1D;;MAEE;IACF,cAAc,MAAM;IAEpB;;OAEG;IACH,eAAe,MAAM;IAGrB;;OAEG;IACH,aAAa,MAAM;IAEnB,QAAQ,MAAM;IACd,UAAU,MAAM;IAChB,WAAW;IACX,cAAc,MAAM;CACvB"} \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts b/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts new file mode 100644 index 0000000..e5b4740 --- /dev/null +++ b/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts @@ -0,0 +1,38 @@ +import { Singleton } from "../../Common/Singleton"; +import { ExtrudeHole } from "../../DatabaseServices/3DSolid/ExtrudeHole"; +import { Board, IModeling } from "../../DatabaseServices/Entity/Board"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Shape } from "../../DatabaseServices/Shape"; +/** + *计算走刀工具类 + */ +export declare class FeedingToolPath extends Singleton { + /** + * 处理形状,内偏移 + * @param shape 造型Shape + * @param knifRadius 刀半径/偏移距离 + * @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓 + */ + private HandleShape; + /**用于测试走刀路径 */ + TestCalcPath(br: Board, isCd?: boolean): Curve[]; + /** + * 计算走刀路径 + */ + CalcPath(modelings: IModeling[], br: Board): Curve[]; + GetModelFeedPath(br: Board, m: IModeling): Curve[]; + private GrooveAddSize; + private GetContours; + CheckModeling(br: Board): number[]; + CheckCustomHole(br: Board): ExtrudeHole[]; + HandleThoughGroove(br: Board, shape: Shape, knifeRadius: number): void; +} +export declare function GetModelingFromCustomDrill(br: Board): { + modeling: (IModeling & { + originEn: ExtrudeHole; + })[]; + sideModeling: (IModeling & { + originEn: ExtrudeHole; + })[]; +}; +//# sourceMappingURL=FeedingToolPath.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts.map b/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts.map new file mode 100644 index 0000000..12cf472 --- /dev/null +++ b/types/GraphicsSystem/ToolPath/FeedingToolPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FeedingToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/FeedingToolPath.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAG5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAcrD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAE1C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IA0InB,cAAc;IACd,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,UAAQ;IAkBpC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE;IASpD,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE;IA8ClD,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,WAAW;IAuCnB,aAAa,CAAC,EAAE,EAAE,KAAK;IAcvB,eAAe,CAAC,EAAE,EAAE,KAAK;IAoBzB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM;CAuHlE;AACD,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,KAAK;;kBAKT,WAAW;;;kBACP,WAAW;;EAwGzD"} \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts b/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts new file mode 100644 index 0000000..60d93ec --- /dev/null +++ b/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts @@ -0,0 +1,19 @@ +import { IRectInfo } from "../../Common/CurveUtils"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Shape } from "../../DatabaseServices/Shape"; +/** + * 优化走刀路径,连接偏移后的曲线数组 + * @param offsetCus 偏移后的曲线组 + * @param originShape 原始走刀形状 + * @param rad 刀半径 + * @returns tool path + */ +export declare function OptimizeToolPath(offsetCus: Curve[], originShape: Shape, rad: number): Curve[]; +/**获取内偏移的轮廓 */ +export declare function GetOffsetCurves(cu: Curve, dist: number, rectInfo?: IRectInfo): Curve[]; +/** 获得曲线内偏移方向*/ +export declare function GetCurveToInDir(cu: Curve): number; +/**矩形偏移,正为内偏移 */ +export declare function RectOffset(rect: Polyline, res: IRectInfo, dist: number): Polyline; +//# sourceMappingURL=OptimizeToolPath.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts.map b/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts.map new file mode 100644 index 0000000..894eebd --- /dev/null +++ b/types/GraphicsSystem/ToolPath/OptimizeToolPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OptimizeToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/OptimizeToolPath.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsD,SAAS,EAAU,MAAM,yBAAyB,CAAC;AAGhH,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAGrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAwH7F;AAiHD,cAAc;AACd,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,CAatF;AAED,eAAe;AACf,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAGjD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YA+BtE"} \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts b/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts new file mode 100644 index 0000000..73b4616 --- /dev/null +++ b/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts @@ -0,0 +1,18 @@ +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Vec3 } from "../../Geometry/IVec3"; +/** + * V型刀走刀数据,第一刀直接扎进去,最后一刀提刀 + * @param polyline + * @param feedingDepth 走刀深度 + * @param knifAngle 通常为60度.按弧度表示 + */ +export declare function VKnifToolPath(polyline: Polyline, feedingDepth: number, knifAngle: number): { + pt: Vec3; + bul: number; +}[]; +export declare function VData2Curve(data: { + pt: Vec3; + bul: number; +}[]): Curve[]; +//# sourceMappingURL=VKnifToolPath.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts.map b/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts.map new file mode 100644 index 0000000..95925df --- /dev/null +++ b/types/GraphicsSystem/ToolPath/VKnifToolPath.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"VKnifToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/VKnifToolPath.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,EAAE,CAmEvH;AAGD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE,EAAE,WAiB7D"} \ No newline at end of file diff --git a/types/GraphicsSystem/Viewer.d.ts b/types/GraphicsSystem/Viewer.d.ts new file mode 100644 index 0000000..28d523e --- /dev/null +++ b/types/GraphicsSystem/Viewer.d.ts @@ -0,0 +1,86 @@ +import { Matrix4, Object3D, Scene, Vector2, Vector3, WebGLRenderer } from 'three'; +import { EffectComposer } from "three/examples/jsm/postprocessing/EffectComposer"; +import { RenderPass } from "three/examples/jsm/postprocessing/RenderPass"; +import { AAType } from '../Common/SystemEnum'; +import { Database } from '../DatabaseServices/Database'; +import { Entity } from '../DatabaseServices/Entity/Entity'; +import { ViewportEntity } from '../DatabaseServices/ViewportEntity'; +import { CameraUpdate } from './CameraUpdate'; +import { GripScene } from './GripScene'; +import { IViewer } from './IView'; +import { OutlinePass } from './OutlinePass'; +import { PreViewer } from './PreViewer'; +export declare class Viewer { + protected NeedUpdate: boolean; + CameraCtrl: CameraUpdate; + LookTarget: Vector3; + Renderer: WebGLRenderer; + PreViewer: PreViewer; + UsePass: boolean; + _AAType: AAType; + RenderPass: RenderPass; + OutlinePass: OutlinePass; + Composer: EffectComposer; + private _SMAAPass; + private _Scene; + private _RenderSelectScene; + GripScene: GripScene; + DomEl: HTMLElement; + private _Width; + private _Height; + private needUpdateEnts; + isLayout: boolean; + ViewPorts: ViewportEntity[]; + LayoutScene: Scene; + CurrentViewport: ViewportEntity; + constructor(canvasContainer: HTMLElement); + get Scene(): Scene; + set Scene(s: Scene); + get Camera(): import("three").OrthographicCamera | import("three").PerspectiveCamera; + get Width(): number; + get Height(): number; + set AAType(type: AAType); + get AAType(): AAType; + InitRender(canvasContainer: HTMLElement): void; + OnSize: (width?: number, height?: number) => void; + StartRender: () => void; + UpdateRender(): void; + Render(): void; + ScreenToWorld(pt: Vector3, planNormal?: Vector3, constant?: Vector3): Vector3; + /** + * 世界坐标系转到屏幕坐标系的变换矩阵 + * wcsP.applyMatrix4(dcs) => dcsP; + */ + get DCS(): Matrix4; + WorldToScreen(pt: Vector3): Vector3; + /** + * 更新视角观测目标(物体中心) + */ + UpdateLockTarget(): void; + IsLookSelect: boolean; + private _OldUsePass; + StartLookSelect(): void; + EndLookSelect(): void; + /**当前相机控制 */ + get CameraControl(): CameraUpdate; + Rotate(mouseMove: Vector3): void; + Pan(mouseMove: Vector3): void; + Zoom(scale: number, center?: Vector3): void; + ZoomAll(UpdateRender?: boolean): void; + ZoomtoEntitys(ens: Entity[]): void; + ViewToTop(): void; + ViewToFront(): void; + ViewToSwiso(): void; + /** + * 获得当前视图显示图元的对象列表(Threejs对象). + */ + get VisibleObjects(): Object3D[]; + get VisibleEntitys(): Entity[]; + private LazyRenderDatabase; + RenderDatabase(db: Database): void; + SwitchLayout(): void; + AddViewport(en: Entity, isZoom?: boolean): void; + ViewportPoint(pt: Vector3 | Vector2, viewport: ViewportEntity): void; + GetIViewer(pts: (Vector3 | Vector2)[]): IViewer; +} +//# sourceMappingURL=Viewer.d.ts.map \ No newline at end of file diff --git a/types/GraphicsSystem/Viewer.d.ts.map b/types/GraphicsSystem/Viewer.d.ts.map new file mode 100644 index 0000000..bdc5947 --- /dev/null +++ b/types/GraphicsSystem/Viewer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Viewer.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/Viewer.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Hot/HotCommand.d.ts b/types/Hot/HotCommand.d.ts new file mode 100644 index 0000000..c1b8d0e --- /dev/null +++ b/types/Hot/HotCommand.d.ts @@ -0,0 +1,2 @@ +export declare const HotCMD: (any: any) => any; +//# sourceMappingURL=HotCommand.d.ts.map \ No newline at end of file diff --git a/types/Hot/HotCommand.d.ts.map b/types/Hot/HotCommand.d.ts.map new file mode 100644 index 0000000..0e26899 --- /dev/null +++ b/types/Hot/HotCommand.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HotCommand.d.ts","sourceRoot":"","sources":["../../../src/Hot/HotCommand.ts"],"names":[],"mappings":"AA+DA,eAAO,MAAM,MAAM,gBACO,GA4BnB,CAAC"} \ No newline at end of file diff --git a/types/IndexedDb/IndexedDbStore.d.ts b/types/IndexedDb/IndexedDbStore.d.ts new file mode 100644 index 0000000..41d225d --- /dev/null +++ b/types/IndexedDb/IndexedDbStore.d.ts @@ -0,0 +1,48 @@ +export declare enum StoreName { + Texture = "Texture", + /** + * 文件的数据 + */ + Dwg = "Dwg", + /** + * 文件的FileInfo + */ + Data = "Data", + /** + * 文件的个数 + */ + FileId = "fileId", + /** + * 当前配置版本号 + */ + ConfigVersion = "configVersion", + ConfigData = "configData", + FontData = "Text", + Command = "Customize", + FileCache = "fileCache" +} +export declare class IndexedDbStore { + private dbRequest; + private db; + m_CurrentFileId: string; + /** + * Creates an instance of IndexedDbStore. + * @param {string} dbName + * @memberof IndexedDbStore + */ + private constructor(); + private static cadStore; + static CADStore(): Promise; + opening: boolean; + resFunctionList: Function[]; + Open(): Promise; + InitStore(): ((db: IDBDatabase) => void)[]; + Put(storeName: StoreName, key: string, value: any): IDBRequest; + Get(storeName: StoreName, key: string): Promise; + Has(storeName: StoreName, key: string): Promise; + Delete(storeName: StoreName, key: string): void; + Clear(storeName: StoreName): void; + GetDataList(storeName: StoreName): Promise; + GetDataMap(storeName: StoreName): Promise; +} +//# sourceMappingURL=IndexedDbStore.d.ts.map \ No newline at end of file diff --git a/types/IndexedDb/IndexedDbStore.d.ts.map b/types/IndexedDb/IndexedDbStore.d.ts.map new file mode 100644 index 0000000..8b5b3c2 --- /dev/null +++ b/types/IndexedDb/IndexedDbStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IndexedDbStore.d.ts","sourceRoot":"","sources":["../../../src/IndexedDb/IndexedDbStore.ts"],"names":[],"mappings":"AASA,oBAAY,SAAS;IAEjB,OAAO,YAAY;IACnB;;OAEG;IACH,GAAG,QAAQ;IACX;;OAEG;IACH,IAAI,SAAS;IACb;;MAEE;IACF,MAAM,WAAW;IACjB;;OAEG;IACH,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,QAAQ,SAAS;IACjB,OAAO,cAAc;IACrB,SAAS,cAAc;CAC1B;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,EAAE,CAAc;IACxB,eAAe,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,OAAO;IAGP,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwC;WAClD,QAAQ;IAMrB,OAAO,UAAS;IAChB,eAAe,EAAE,QAAQ,EAAE,CAAM;IAC3B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiD9B,SAAS,UAII,WAAW;IA+CxB,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAM3C,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM;IAiBrC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM;IAiB3C,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM;IAOxC,KAAK,CAAC,SAAS,EAAE,SAAS;IAIpB,WAAW,CAAC,SAAS,EAAE,SAAS;IAqBhC,UAAU,CAAC,SAAS,EAAE,SAAS;CAmBxC"} \ No newline at end of file diff --git a/types/Loader/ExrLoader.d.ts b/types/Loader/ExrLoader.d.ts new file mode 100644 index 0000000..5087ec6 --- /dev/null +++ b/types/Loader/ExrLoader.d.ts @@ -0,0 +1,3 @@ +import { Texture } from "three"; +export declare function LoadDefaultExr(): Promise; +//# sourceMappingURL=ExrLoader.d.ts.map \ No newline at end of file diff --git a/types/Loader/ExrLoader.d.ts.map b/types/Loader/ExrLoader.d.ts.map new file mode 100644 index 0000000..b267a45 --- /dev/null +++ b/types/Loader/ExrLoader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExrLoader.d.ts","sourceRoot":"","sources":["../../../src/Loader/ExrLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA6B,MAAM,OAAO,CAAC;AAM3D,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBvD"} \ No newline at end of file diff --git a/types/Loader/FBXLoader.d.ts b/types/Loader/FBXLoader.d.ts new file mode 100644 index 0000000..344db8e --- /dev/null +++ b/types/Loader/FBXLoader.d.ts @@ -0,0 +1,7 @@ +import { Group } from "three"; +export interface LoaderState { + State: boolean; + object?: Group; +} +export declare function loadFBX(fileName: string): Promise; +//# sourceMappingURL=FBXLoader.d.ts.map \ No newline at end of file diff --git a/types/Loader/FBXLoader.d.ts.map b/types/Loader/FBXLoader.d.ts.map new file mode 100644 index 0000000..1d5dbdb --- /dev/null +++ b/types/Loader/FBXLoader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FBXLoader.d.ts","sourceRoot":"","sources":["../../../src/Loader/FBXLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAC;AAI9C,MAAM,WAAW,WAAW;IAExB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;CAClB;AAoBD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0B9D"} \ No newline at end of file diff --git a/types/Loader/ImageLoader.d.ts b/types/Loader/ImageLoader.d.ts new file mode 100644 index 0000000..423b519 --- /dev/null +++ b/types/Loader/ImageLoader.d.ts @@ -0,0 +1,5 @@ +export declare function SaveImage(blob: File, md5: string): Promise; +export declare function LoadImageFromFile(blob: File): Promise; +export declare function LoadImageFromUrl(url: string): Promise; +export declare function LoadImageFromMd5(md5: string): Promise; +//# sourceMappingURL=ImageLoader.d.ts.map \ No newline at end of file diff --git a/types/Loader/ImageLoader.d.ts.map b/types/Loader/ImageLoader.d.ts.map new file mode 100644 index 0000000..709396c --- /dev/null +++ b/types/Loader/ImageLoader.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ImageLoader.d.ts","sourceRoot":"","sources":["../../../src/Loader/ImageLoader.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAItD;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc7E;AAGD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAW7E;AAGD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAc7E"} \ No newline at end of file diff --git a/types/Nest/Common/ArrayExt.d.ts b/types/Nest/Common/ArrayExt.d.ts new file mode 100644 index 0000000..4703853 --- /dev/null +++ b/types/Nest/Common/ArrayExt.d.ts @@ -0,0 +1,44 @@ +/** + * 删除数组中指定的元素,返回数组本身 + * @param {Array} arr 需要操作的数组 + * @param {*} el 需要移除的元素 + */ +export declare function arrayRemove(arr: Array, el: T): Array; +export declare function arrayRemoveOnce(arr: Array, el: T): Array; +/** + * 删除通过函数校验的元素 + * @param {(e: T) => boolean} checkFuntion 校验函数 + */ +export declare function arrayRemoveIf(arr: Array, checkFuntion: (e: T) => boolean): Array; +export declare function arrayFirst(arr: Array): T; +export declare function arrayLast(arr: { + [key: number]: T; + length: number; +}): T; +/** + * 根据数值从小到大排序数组 + * @param {Array} arr + * @returns {Array} 返回自身 + */ +export declare function arraySortByNumber(arr: Array): Array; +/** + * 对排序好的数组进行去重操作 + * @param {(e1, e2) => boolean} [checkFuction] 校验对象相等函数 + * @returns {Array} 返回自身 + */ +export declare function arrayRemoveDuplicateBySort(arr: Array, checkFuction?: (e1: T, e2: T) => boolean): Array; +export declare function arrayMap(arr: Array, mapFunc: (v: T) => T): Array; +declare function checkEqual(e1: any, e2: any): boolean; +/** + * 改变数组的值顺序 + * @param arr 需要改变初始值位置的数组 + * @param index //将index位置以后的值放到起始位置 + */ +export declare function changeArrayStartIndex(arr: T[], index: number): T[]; +export declare function equalArray(a: T[], b: T[], checkF?: typeof checkEqual): boolean; +export declare function arrayClone(arr: T[]): T[]; +export declare function arrayPushArray(arr1: T[], arr2: T[]): T[]; +export declare function arraySum(arr: number[]): number; +export declare function FilterSet(s: Set, fn: (el: T) => boolean): Set; +export {}; +//# sourceMappingURL=ArrayExt.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/ArrayExt.d.ts.map b/types/Nest/Common/ArrayExt.d.ts.map new file mode 100644 index 0000000..39d08e1 --- /dev/null +++ b/types/Nest/Common/ArrayExt.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayExt.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/ArrayExt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAa7D;AAGD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAMjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAazF;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAG9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE,GAAG,CAAC,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,OAAoB,GAAG,KAAK,CAAC,CAAC,CAAC,CAS3H;AAGD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAKzE;AAOD,iBAAS,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAIrE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,oBAAa,WAOhE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAG3C;AAGD,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAS3D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAKrC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAStE"} \ No newline at end of file diff --git a/types/Nest/Common/Box2.d.ts b/types/Nest/Common/Box2.d.ts new file mode 100644 index 0000000..cb84e1e --- /dev/null +++ b/types/Nest/Common/Box2.d.ts @@ -0,0 +1,33 @@ +import { Vector2 } from "./Vector2"; +import { Point } from "./Point"; +export declare class Box2 { + min: Vector2; + max: Vector2; + constructor(min?: Vector2, max?: Vector2); + get area(): number; + set(min: Vector2, max: Vector2): Box2; + setFromPoints(points: Vector2[]): Box2; + private static _setFromCenterAndSize_v1; + setFromCenterAndSize(center: Vector2, size: Vector2): Box2; + clone(): Box2; + copy(box: Box2): Box2; + makeEmpty(): Box2; + isEmpty(): boolean; + getCenter(result?: Vector2): Vector2; + getSize(result?: Vector2): Vector2; + expandByPoint(point: Vector2): Box2; + expandByVector(vector: Vector2): Box2; + expandByScalar(scalar: number): Box2; + containsPoint(point: Vector2): boolean; + containsBox(box: Box2): boolean; + getParameter(point: Vector2, result?: Vector2): Vector2; + intersectsBox(box: Box2): boolean; + clampPoint(point: Vector2, result?: Vector2): Vector2; + private static _distanceToPoint_v1; + distanceToPoint(point: Vector2): number; + intersect(box: Box2): Box2; + union(box: Box2): Box2; + translate(offset: Point): Box2; + equals(box: Box2): boolean; +} +//# sourceMappingURL=Box2.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Box2.d.ts.map b/types/Nest/Common/Box2.d.ts.map new file mode 100644 index 0000000..4cfed87 --- /dev/null +++ b/types/Nest/Common/Box2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Box2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Box2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,IAAI;IAEb,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;gBACD,GAAG,UAAsC,EAAE,GAAG,UAAsC;IAMhG,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAMrC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAStC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAiB;IACxD,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAQ1D,KAAK,IAAI,IAAI;IAIb,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAMrB,SAAS,IAAI,IAAI;IAMjB,OAAO,IAAI,OAAO;IAKlB,SAAS,CAAC,MAAM,GAAE,OAAuB,GAAG,OAAO;IAInD,OAAO,CAAC,MAAM,GAAE,OAAuB,GAAG,OAAO;IAIjD,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAMnC,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMrC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMpC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAStC,WAAW,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAS/B,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,OAAuB,GAAG,OAAO;IAStE,aAAa,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAUjC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,OAAuB,GAAG,OAAO;IAIpE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAiB;IACnD,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAMvC,SAAS,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAM1B,KAAK,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAMtB,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI;IAM9B,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;CAI7B"} \ No newline at end of file diff --git a/types/Nest/Common/ClipperCpp.d.ts b/types/Nest/Common/ClipperCpp.d.ts new file mode 100644 index 0000000..b2087ae --- /dev/null +++ b/types/Nest/Common/ClipperCpp.d.ts @@ -0,0 +1,6 @@ +import * as clipperLib from "js-angusj-clipper/web"; +export declare let clipperCpp: { + lib?: clipperLib.ClipperLibWrapper; +}; +export declare function InitClipperCpp(): Promise; +//# sourceMappingURL=ClipperCpp.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/ClipperCpp.d.ts.map b/types/Nest/Common/ClipperCpp.d.ts.map new file mode 100644 index 0000000..37bd881 --- /dev/null +++ b/types/Nest/Common/ClipperCpp.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClipperCpp.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/ClipperCpp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AAEpD,eAAO,IAAI,UAAU,EAAE;IAAE,GAAG,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC;CAAO,CAAC;AACpE,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB9C"} \ No newline at end of file diff --git a/types/Nest/Common/ComparePoint.d.ts b/types/Nest/Common/ComparePoint.d.ts new file mode 100644 index 0000000..9929f1f --- /dev/null +++ b/types/Nest/Common/ComparePoint.d.ts @@ -0,0 +1,23 @@ +interface Vec2 { + x: number; + y: number; +} +export declare type CompareVectorFn = (v1: Vec2, v2: Vec2) => number; +/** + * 构建返回一个用来排序的函数.根据key创建排序规则. + * + * 当key = "xyz" 时,点集按 x从小到大,y从小到大 z从小到大 + * key = "X" 时,点集按 x从大到小 + * 以此类推. + * + * 例子: + * let pts:Vector3[] =...; + * pts.sort(comparePoint("x")); //x从小到大排序 + * pts.sort(comparePoint("zX")); //z从小到大 x从大到小 + * + * @export + * @param {string} sortKey + */ +export declare function ComparePoint(sortKey: string): CompareVectorFn; +export {}; +//# sourceMappingURL=ComparePoint.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/ComparePoint.d.ts.map b/types/Nest/Common/ComparePoint.d.ts.map new file mode 100644 index 0000000..2099cba --- /dev/null +++ b/types/Nest/Common/ComparePoint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ComparePoint.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/ComparePoint.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAE;AAExC,oBAAY,eAAe,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,MAAM,CAAC;AAO7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAiC7D"} \ No newline at end of file diff --git a/types/Nest/Common/ConvexHull2D.d.ts b/types/Nest/Common/ConvexHull2D.d.ts new file mode 100644 index 0000000..10f110b --- /dev/null +++ b/types/Nest/Common/ConvexHull2D.d.ts @@ -0,0 +1,3 @@ +import { Point } from "./Point"; +export declare function ConvexHull2D(points: Point[]): Point[]; +//# sourceMappingURL=ConvexHull2D.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/ConvexHull2D.d.ts.map b/types/Nest/Common/ConvexHull2D.d.ts.map new file mode 100644 index 0000000..15e2df0 --- /dev/null +++ b/types/Nest/Common/ConvexHull2D.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConvexHull2D.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/ConvexHull2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAKrD"} \ No newline at end of file diff --git a/types/Nest/Common/Filer.d.ts b/types/Nest/Common/Filer.d.ts new file mode 100644 index 0000000..9d738b4 --- /dev/null +++ b/types/Nest/Common/Filer.d.ts @@ -0,0 +1,13 @@ +/** + * CAD文件数据 + */ +export declare class NestFiler { + _datas: any[]; + private readIndex; + constructor(_datas?: any[]); + Clear(): this; + Reset(): this; + Write(data: any): this; + Read(): any; +} +//# sourceMappingURL=Filer.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Filer.d.ts.map b/types/Nest/Common/Filer.d.ts.map new file mode 100644 index 0000000..5349b01 --- /dev/null +++ b/types/Nest/Common/Filer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Filer.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Filer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,SAAS;IAGC,MAAM,EAAE,GAAG,EAAE;IADhC,OAAO,CAAC,SAAS,CAAa;gBACX,MAAM,GAAE,GAAG,EAAO;IAErC,KAAK;IAKL,KAAK;IAML,KAAK,CAAC,IAAI,EAAE,GAAG;IAMf,IAAI,IAAI,GAAG;CAId"} \ No newline at end of file diff --git a/types/Nest/Common/Point.d.ts b/types/Nest/Common/Point.d.ts new file mode 100644 index 0000000..6da79f0 --- /dev/null +++ b/types/Nest/Common/Point.d.ts @@ -0,0 +1,5 @@ +export interface Point { + x: number; + y: number; +} +//# sourceMappingURL=Point.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Point.d.ts.map b/types/Nest/Common/Point.d.ts.map new file mode 100644 index 0000000..8a1529e --- /dev/null +++ b/types/Nest/Common/Point.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Point.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IAElB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb"} \ No newline at end of file diff --git a/types/Nest/Common/Random.d.ts b/types/Nest/Common/Random.d.ts new file mode 100644 index 0000000..50c937b --- /dev/null +++ b/types/Nest/Common/Random.d.ts @@ -0,0 +1,2 @@ +export declare function RandomIndex(count: number, exclude?: number): number; +//# sourceMappingURL=Random.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Random.d.ts.map b/types/Nest/Common/Random.d.ts.map new file mode 100644 index 0000000..e165374 --- /dev/null +++ b/types/Nest/Common/Random.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Random.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Random.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAMnE"} \ No newline at end of file diff --git a/types/Nest/Common/Shuffle.d.ts b/types/Nest/Common/Shuffle.d.ts new file mode 100644 index 0000000..1987313 --- /dev/null +++ b/types/Nest/Common/Shuffle.d.ts @@ -0,0 +1,2 @@ +export declare function ShuffleArray(array: T[]): void; +//# sourceMappingURL=Shuffle.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Shuffle.d.ts.map b/types/Nest/Common/Shuffle.d.ts.map new file mode 100644 index 0000000..20dc1e6 --- /dev/null +++ b/types/Nest/Common/Shuffle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Shuffle.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Shuffle.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,QAO/C"} \ No newline at end of file diff --git a/types/Nest/Common/Sleep.d.ts b/types/Nest/Common/Sleep.d.ts new file mode 100644 index 0000000..d90f198 --- /dev/null +++ b/types/Nest/Common/Sleep.d.ts @@ -0,0 +1,2 @@ +export declare function Sleep(time: number): Promise; +//# sourceMappingURL=Sleep.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Sleep.d.ts.map b/types/Nest/Common/Sleep.d.ts.map new file mode 100644 index 0000000..30f9461 --- /dev/null +++ b/types/Nest/Common/Sleep.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Sleep.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Sleep.ts"],"names":[],"mappings":"AAAA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,oBAMvC"} \ No newline at end of file diff --git a/types/Nest/Common/Util.d.ts b/types/Nest/Common/Util.d.ts new file mode 100644 index 0000000..05f0d12 --- /dev/null +++ b/types/Nest/Common/Util.d.ts @@ -0,0 +1,8 @@ +export declare function equaln(v1: number, v2: number, fuzz?: number): boolean; +export declare function FixIndex(index: number, arr: Array | number): number; +/** + * @param compart 如果t2大于t1那么返回t2 + * @returns 索引 + */ +export declare function Max(arr: T[], compart: (t1: T, t2: T) => boolean): number; +//# sourceMappingURL=Util.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Util.d.ts.map b/types/Nest/Common/Util.d.ts.map new file mode 100644 index 0000000..376d370 --- /dev/null +++ b/types/Nest/Common/Util.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Util.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,SAAO,WAGzD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,UAS/D;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,GAAG,MAAM,CAc3E"} \ No newline at end of file diff --git a/types/Nest/Common/Vector2.d.ts b/types/Nest/Common/Vector2.d.ts new file mode 100644 index 0000000..cac6ebb --- /dev/null +++ b/types/Nest/Common/Vector2.d.ts @@ -0,0 +1,60 @@ +import { Point } from "./Point"; +export declare class Vector2 { + x: number; + y: number; + readonly isVector2: boolean; + constructor(x?: number, y?: number); + get width(): number; + set width(value: number); + get height(): number; + set height(value: number); + set(x: number, y: number): Vector2; + setScalar(scalar: number): Vector2; + setX(x: number): Vector2; + setY(y: number): Vector2; + setComponent(index: number, value: number): Vector2; + getComponent(index: number): number; + clone(): Vector2; + copy(v: Vector2): Vector2; + add(v: Point): Vector2; + addScalar(s: number): Vector2; + addVectors(a: Vector2, b: Vector2): Vector2; + addScaledVector(v: Vector2, s: number): Vector2; + sub(v: Vector2): Vector2; + subScalar(s: number): Vector2; + subVectors(a: Vector2, b: Vector2): Vector2; + multiply(v: Vector2): Vector2; + multiplyScalar(scalar: number): Vector2; + divide(v: Vector2): Vector2; + divideScalar(scalar: number): Vector2; + min(v: Vector2): Vector2; + max(v: Vector2): Vector2; + clamp(min: Vector2, max: Vector2): Vector2; + private static clampScalar_min; + private static clampScalar_max; + clampScalar(minVal: number, maxVal: number): Vector2; + clampLength(min: number, max: number): Vector2; + floor(): Vector2; + ceil(): Vector2; + round(): Vector2; + roundToZero(): Vector2; + negate(): Vector2; + dot(v: Vector2): number; + lengthSq(): number; + length(): number; + lengthManhattan(): number; + normalize(): Vector2; + angle(): number; + distanceTo(v: Vector2): number; + distanceToSquared(v: Vector2): number; + distanceToManhattan(v: Vector2): number; + setLength(length: number): Vector2; + lerp(v: Vector2, alpha: number): Vector2; + lerpVectors(v1: Vector2, v2: Vector2, alpha: number): Vector2; + equals(v: Vector2): boolean; + fromArray(array: Float32Array | number[], offset?: number): Vector2; + toArray(array?: Float32Array | number[], offset?: number): Float32Array | number[]; + fromAttribute(attribute: any, index: number, offset?: number): Vector2; + rotateAround(center: Vector2, angle: number): Vector2; +} +//# sourceMappingURL=Vector2.d.ts.map \ No newline at end of file diff --git a/types/Nest/Common/Vector2.d.ts.map b/types/Nest/Common/Vector2.d.ts.map new file mode 100644 index 0000000..814b810 --- /dev/null +++ b/types/Nest/Common/Vector2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Common/Vector2.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/Nest/Converter/ConverBoard2Part.d.ts b/types/Nest/Converter/ConverBoard2Part.d.ts new file mode 100644 index 0000000..51139c7 --- /dev/null +++ b/types/Nest/Converter/ConverBoard2Part.d.ts @@ -0,0 +1,12 @@ +import { Board } from "../../DatabaseServices/Entity/Board"; +import { Circle } from "../../DatabaseServices/Entity/Circle"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Point } from "../Common/Point"; +import { Part } from "../Core/Part"; +/** + * 针对板件的曲线变点表做的特殊优化 + */ +export declare function Curves2Points(cu: Circle | Polyline, outside: boolean, knifRadius: number): [(Circle | Polyline), Point[]]; +export declare function Polylin2Points(pl: Polyline, outside: boolean, knifRadius: number): [Polyline, Point[]]; +export declare function ConverBoard2Part(board: Board, knifRadius?: number): Part; +//# sourceMappingURL=ConverBoard2Part.d.ts.map \ No newline at end of file diff --git a/types/Nest/Converter/ConverBoard2Part.d.ts.map b/types/Nest/Converter/ConverBoard2Part.d.ts.map new file mode 100644 index 0000000..e689ccc --- /dev/null +++ b/types/Nest/Converter/ConverBoard2Part.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConverBoard2Part.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/ConverBoard2Part.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUpC;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAMzH;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAiDtG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,SAAM,GAAG,IAAI,CAiFrE"} \ No newline at end of file diff --git a/types/Nest/Converter/Curves2Parts.d.ts b/types/Nest/Converter/Curves2Parts.d.ts new file mode 100644 index 0000000..242b467 --- /dev/null +++ b/types/Nest/Converter/Curves2Parts.d.ts @@ -0,0 +1,33 @@ +import { Box3 } from "three"; +import { Circle } from "../../DatabaseServices/Entity/Circle"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +import { Point } from "../Common/Point"; +import { Part } from "../Core/Part"; +import { Path } from "../Core/Path"; +import { IOffset } from "./Simplify2"; +/** 内外接多边形 */ +export declare function Circle2Points(circle: Circle, knifRadius: number, splitSize?: number, outside?: boolean): Point[]; +export declare function Curve2Path(curve: Circle | Polyline, outside?: boolean): Path; +export declare class CurveWrap { + Curve: Polyline | Circle; + KnifRadius: number; + IsOutside: boolean; + BoundingBox: Box3; + Area: number; + SimplyPolyline: Polyline; + SimplyOffset: IOffset; + Used: boolean; + Holes: CurveWrap[]; + Points: Point[]; + constructor(Curve: Polyline | Circle, KnifRadius?: number, IsOutside?: boolean); + ContainsCurve(curve: CurveWrap): boolean; + GetOutsidePoints(): Point[]; + GetInsidePoints(): Point[]; +} +/** + * 曲线集合转零件集合. + * 如果存在曲线嵌套,那么自动设置为网洞 + * 零件会和曲线绑定,以便后续应用坐标系变换 + */ +export declare function Curves2Parts(curves: (Polyline | Circle)[], binPath: Path, KnifRadius?: number): Part[]; +//# sourceMappingURL=Curves2Parts.d.ts.map \ No newline at end of file diff --git a/types/Nest/Converter/Curves2Parts.d.ts.map b/types/Nest/Converter/Curves2Parts.d.ts.map new file mode 100644 index 0000000..c541ee3 --- /dev/null +++ b/types/Nest/Converter/Curves2Parts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Curves2Parts.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Curves2Parts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAW,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,OAAO,EAA0B,MAAM,aAAa,CAAC;AAE9D,aAAa;AACb,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,SAAK,EAAE,OAAO,UAAQ,GAAG,KAAK,EAAE,CAiB1G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,UAAQ,GAAG,IAAI,CAa1E;AAED,qBAAa,SAAS;IAaC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAAS,UAAU;IAAa,SAAS,EAAE,OAAO;IAX7F,WAAW,EAAE,IAAI,CAAC;IAElB,IAAI,EAAE,MAAM,CAAC;IAEb,cAAc,EAAE,QAAQ,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,UAAS;IACb,KAAK,EAAE,SAAS,EAAE,CAAM;IAExB,MAAM,EAAE,KAAK,EAAE,CAAC;gBAEG,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAS,UAAU,SAAI,EAAS,SAAS,GAAE,OAAc;IAwBpG,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAOxC,gBAAgB,IAAI,KAAK,EAAE;IA6B3B,eAAe,IAAI,KAAK,EAAE;CAyB7B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,SAAM,GAAG,IAAI,EAAE,CAuDnG"} \ No newline at end of file diff --git a/types/Nest/Converter/Path2Polyline.d.ts b/types/Nest/Converter/Path2Polyline.d.ts new file mode 100644 index 0000000..29162e2 --- /dev/null +++ b/types/Nest/Converter/Path2Polyline.d.ts @@ -0,0 +1,4 @@ +import { Point } from "../Common/Point"; +import { Polyline } from "../../DatabaseServices/Entity/Polyline"; +export declare function Path2Polyline(path: Point[]): Polyline; +//# sourceMappingURL=Path2Polyline.d.ts.map \ No newline at end of file diff --git a/types/Nest/Converter/Path2Polyline.d.ts.map b/types/Nest/Converter/Path2Polyline.d.ts.map new file mode 100644 index 0000000..8659dcf --- /dev/null +++ b/types/Nest/Converter/Path2Polyline.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Path2Polyline.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Path2Polyline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGlE,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CASrD"} \ No newline at end of file diff --git a/types/Nest/Converter/Simplify2.d.ts b/types/Nest/Converter/Simplify2.d.ts new file mode 100644 index 0000000..86eb668 --- /dev/null +++ b/types/Nest/Converter/Simplify2.d.ts @@ -0,0 +1,11 @@ +interface P { + x: number; + y: number; +} +export interface IOffset { + negativeOffset: number; + positiveOffset: number; +} +export declare function SimplifyDouglasPeucker(points: P[], sqTolerance: number): [P[], IOffset]; +export {}; +//# sourceMappingURL=Simplify2.d.ts.map \ No newline at end of file diff --git a/types/Nest/Converter/Simplify2.d.ts.map b/types/Nest/Converter/Simplify2.d.ts.map new file mode 100644 index 0000000..656bee4 --- /dev/null +++ b/types/Nest/Converter/Simplify2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Simplify2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Converter/Simplify2.ts"],"names":[],"mappings":"AAEA,UAAU,CAAC;IAEP,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IAEpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AA0ED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,CAQvF"} \ No newline at end of file diff --git a/types/Nest/Core/Container.d.ts b/types/Nest/Core/Container.d.ts new file mode 100644 index 0000000..dbc03de --- /dev/null +++ b/types/Nest/Core/Container.d.ts @@ -0,0 +1,47 @@ +import { Paths } from "js-angusj-clipper/web"; +import { Box2 } from "../Common/Box2"; +import { CompareVectorFn } from "../Common/ComparePoint"; +import { NestFiler } from "../Common/Filer"; +import { Point } from "../Common/Point"; +import { Part } from "./Part"; +import { Path } from "./Path"; +import { PlaceType } from "./PlaceType"; +/** + * 排料零件的容器,用来放置零件 + * 它是一块大板 + * 也可以是一个网洞 + * 也可以是余料 + */ +export declare class Container { + protected BinPath?: Path; + private _PlaceType; + ParentId: number; + ChildrenIndex: number; + ParentM: Point; + PlacedParts: Part[]; + PlacedArea: number; + PlacedBox: Box2; + PlacedHull: Point[]; + StatusKey: string; + CompartePoint: CompareVectorFn; + constructor(BinPath?: Path, _PlaceType?: PlaceType, compare?: string); + get UseRatio(): number; + private _NotPuts; + private PrePut; + private Calc; + PutPart(p: Part, greedy?: boolean): boolean; + protected GetNFPs(part: Part, binNfp: Point[][]): Paths; + /** + * 将Part添加的Placed列表 + * @param part 零件,已经计算了放置状态 + * @param [calc=true] 是否计算当前的容器状态? + */ + private AppendPart; + /** + * 得到最左边的点 + */ + protected GetFarLeftP(nfp: Point[][]): Point; + ReadFile(file: NestFiler, parts: Part[]): this; + WriteFile(file: NestFiler): void; +} +//# sourceMappingURL=Container.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/Container.d.ts.map b/types/Nest/Core/Container.d.ts.map new file mode 100644 index 0000000..075f0a3 --- /dev/null +++ b/types/Nest/Core/Container.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/Container.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAgB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAQ,IAAI,EAAiB,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAaxC;;;;;GAKG;AACH,qBAAa,SAAS;IAeN,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI;IAAE,OAAO,CAAC,UAAU;IAbxD,QAAQ,EAAE,MAAM,CAAM;IACtB,aAAa,EAAE,MAAM,CAAK;IAC1B,OAAO,EAAE,KAAK,CAAC;IAEf,WAAW,EAAE,IAAI,EAAE,CAAM;IAEzB,UAAU,SAAK;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,KAAK,EAAE,CAAC;IAEpB,SAAS,EAAE,MAAM,CAAC;IAElB,aAAa,EAAE,eAAe,CAAC;gBACT,OAAO,CAAC,EAAE,IAAI,EAAU,UAAU,YAAgB,EAAE,OAAO,SAAO;IAQxF,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED,OAAO,CAAC,QAAQ,CAAqB;IAErC,OAAO,CAAC,MAAM;IAgHd,OAAO,CAAC,IAAI;IAkCZ,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,UAAQ,GAAG,OAAO;IAuCzC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK;IAoCvD;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA0BlB;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK;IAgB5C,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;IAuBvC,SAAS,CAAC,IAAI,EAAE,SAAS;CA4B5B"} \ No newline at end of file diff --git a/types/Nest/Core/DefaultBin.d.ts b/types/Nest/Core/DefaultBin.d.ts new file mode 100644 index 0000000..10f0da8 --- /dev/null +++ b/types/Nest/Core/DefaultBin.d.ts @@ -0,0 +1,3 @@ +import { Path } from "./Path"; +export declare let DefaultBin: Path; +//# sourceMappingURL=DefaultBin.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/DefaultBin.d.ts.map b/types/Nest/Core/DefaultBin.d.ts.map new file mode 100644 index 0000000..b49e1f5 --- /dev/null +++ b/types/Nest/Core/DefaultBin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DefaultBin.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/DefaultBin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,eAAO,IAAI,UAAU,MAA+F,CAAC"} \ No newline at end of file diff --git a/types/Nest/Core/GNestConfig.d.ts b/types/Nest/Core/GNestConfig.d.ts new file mode 100644 index 0000000..a88392a --- /dev/null +++ b/types/Nest/Core/GNestConfig.d.ts @@ -0,0 +1,6 @@ +export declare const GNestConfig: { + RotateHole: boolean; + UsePartGroup: boolean; + UseOffsetSimplify: boolean; +}; +//# sourceMappingURL=GNestConfig.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/GNestConfig.d.ts.map b/types/Nest/Core/GNestConfig.d.ts.map new file mode 100644 index 0000000..4e7a6f1 --- /dev/null +++ b/types/Nest/Core/GNestConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GNestConfig.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/GNestConfig.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"} \ No newline at end of file diff --git a/types/Nest/Core/Individual.d.ts b/types/Nest/Core/Individual.d.ts new file mode 100644 index 0000000..9cfdaad --- /dev/null +++ b/types/Nest/Core/Individual.d.ts @@ -0,0 +1,48 @@ +import { NestFiler } from "../Common/Filer"; +import { Container } from "./Container"; +import { Part } from "./Part"; +import { Path } from "./Path"; +import { PlaceType } from "./PlaceType"; +/** + * 个体(表示某一次优化的结果,或者还没开始优化的状态) + * 个体是由一堆零件组成的,零件可以有不同的状态。 + * + * 个体单独变异 + * 可以是某个零件的旋转状态发生改变 + * 可以是零件的顺序发生改变 + * + * 个体交配(感觉暂时不需要) + * 个体和其他个体进行基因交换 + */ +export declare class Individual { + Parts?: Part[]; + mutationRate: number; + private bin?; + private remBins; + constructor(Parts?: Part[], mutationRate?: number, bin?: Path, remBins?: Path[]); + Fitness: number; + Containers: Container[]; + HoleContainers: Container[]; + /** + * 评估健康程度 + */ + Evaluate(bestCount: number, greedy?: boolean, type?: PlaceType): void; + /** + * 在网洞利用时,保持纹路正确 + * + * @param bestCount + * @param greedy + * @param type + */ + private EvaluateOfUseRotateHole; + private AppendHoles; + private InitHoleContainers; + Clone(): Individual; + /** + * 突变 + */ + Mutate(): this; + ReadFile(file: NestFiler): void; + WriteFile(f: NestFiler): void; +} +//# sourceMappingURL=Individual.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/Individual.d.ts.map b/types/Nest/Core/Individual.d.ts.map new file mode 100644 index 0000000..d3cd4ac --- /dev/null +++ b/types/Nest/Core/Individual.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Individual.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/Individual.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IAEA,KAAK,CAAC,EAAE,IAAI,EAAE;IAAS,YAAY;IAAQ,OAAO,CAAC,GAAG,CAAC;IAAQ,OAAO,CAAC,OAAO;gBAA9E,KAAK,CAAC,EAAE,IAAI,EAAE,EAAS,YAAY,SAAM,EAAU,GAAG,CAAC,EAAE,IAAI,EAAU,OAAO,GAAE,IAAI,EAAO;IAE9G,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,UAAQ,EAAE,IAAI,CAAC,EAAE,SAAS;IAwD5D;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAgE/B,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,kBAAkB;IAiB1B,KAAK;IAOL;;MAEE;IACF,MAAM;IAgDN,QAAQ,CAAC,IAAI,EAAE,SAAS;IAexB,SAAS,CAAC,CAAC,EAAE,SAAS;CAYzB"} \ No newline at end of file diff --git a/types/Nest/Core/NestCache.d.ts b/types/Nest/Core/NestCache.d.ts new file mode 100644 index 0000000..5827376 --- /dev/null +++ b/types/Nest/Core/NestCache.d.ts @@ -0,0 +1,19 @@ +import { Path } from "./Path"; +import { Point } from "../Common/Point"; +export declare class NestCache { + static count1: number; + static count2: number; + static PositionCache: { + [key: string]: Point; + }; + static NoPutCache: { + [key: string]: Set; + }; + private static CacheRect; + /** + * 用于创建原点在0点的矩形路径 + */ + static CreatePath(x: number, y: number, knifRadius?: number): Path; + static Clear(): void; +} +//# sourceMappingURL=NestCache.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/NestCache.d.ts.map b/types/Nest/Core/NestCache.d.ts.map new file mode 100644 index 0000000..106cb5e --- /dev/null +++ b/types/Nest/Core/NestCache.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NestCache.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/NestCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,qBAAa,SAAS;IAElB,MAAM,CAAC,MAAM,SAAK;IAClB,MAAM,CAAC,MAAM,SAAK;IAElB,MAAM,CAAC,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;KAAE,CAAM;IACrD,MAAM,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAAE,CAAM;IACxD,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2B;IAEnD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,SAAM,GAAG,IAAI;IAc/D,MAAM,CAAC,KAAK;CAOf"} \ No newline at end of file diff --git a/types/Nest/Core/NestDatabase.d.ts b/types/Nest/Core/NestDatabase.d.ts new file mode 100644 index 0000000..401dc3d --- /dev/null +++ b/types/Nest/Core/NestDatabase.d.ts @@ -0,0 +1,16 @@ +import { Part } from "./Part"; +import { Path } from "./Path"; +import { NestFiler } from "../Common/Filer"; +/** + * 排料数据库,用这个类来序列化需要排料的数据 + * 用于在Work间传输 + */ +export declare class NestDatabase { + Paths: Path[]; + Bin: Path; + Parts: Part[]; + ReadFile(file: NestFiler): void; + WriteFile(file: NestFiler): void; + get File(): NestFiler; +} +//# sourceMappingURL=NestDatabase.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/NestDatabase.d.ts.map b/types/Nest/Core/NestDatabase.d.ts.map new file mode 100644 index 0000000..466e10f --- /dev/null +++ b/types/Nest/Core/NestDatabase.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NestDatabase.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/NestDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;;GAGG;AACH,qBAAa,YAAY;IAErB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,IAAI,EAAE,CAAC;IAId,QAAQ,CAAC,IAAI,EAAE,SAAS;IAuBxB,SAAS,CAAC,IAAI,EAAE,SAAS;IAczB,IAAI,IAAI,cAKP;CACJ"} \ No newline at end of file diff --git a/types/Nest/Core/OptimizeMachine.d.ts b/types/Nest/Core/OptimizeMachine.d.ts new file mode 100644 index 0000000..6a7c63c --- /dev/null +++ b/types/Nest/Core/OptimizeMachine.d.ts @@ -0,0 +1,34 @@ +import { Individual } from "./Individual"; +import { Part } from "./Part"; +import { Path } from "./Path"; +/** + * 优化器 + * 配置优化器 + * 放入零件 + * 按下启动 + * 按下暂停 + * 清理机台 + */ +export declare class OptimizeMachine { + Config: { + PopulationCount: number; + }; + Bin: Path; + Parts: Part[]; + PartCount: number[]; + private _IsSuspend; + protected _Individuals: Individual[]; + constructor(); + PutParts(parts: Part[]): void; + callBack: (i: Individual) => Promise; + Start(): Promise; + calcCount: number; + best: number; + bestP: Individual; + bestCount: number; + private Run; + Suspend(): void; + Continue(): void; + Clear(): void; +} +//# sourceMappingURL=OptimizeMachine.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/OptimizeMachine.d.ts.map b/types/Nest/Core/OptimizeMachine.d.ts.map new file mode 100644 index 0000000..4f53765 --- /dev/null +++ b/types/Nest/Core/OptimizeMachine.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OptimizeMachine.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/OptimizeMachine.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;GAOG;AACH,qBAAa,eAAe;IAGxB,MAAM,EAAE;QACJ,eAAe,EAAE,MAAM,CAAC;KAC3B,CAAC;IAEF,GAAG,EAAE,IAAI,CAAC;IAEV,KAAK,EAAE,IAAI,EAAE,CAAC;IAEd,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,OAAO,CAAC,UAAU,CAAS;IAE3B,SAAS,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;;IAQrC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE;IAatB,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGrC,KAAK;IA0BX,SAAS,SAAK;IACd,IAAI,SAAY;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,SAAK;YACA,GAAG;IAmEjB,OAAO;IAQP,QAAQ;IAMR,KAAK;CAGR"} \ No newline at end of file diff --git a/types/Nest/Core/OptimizeWorker.worker.d.ts b/types/Nest/Core/OptimizeWorker.worker.d.ts new file mode 100644 index 0000000..d015057 --- /dev/null +++ b/types/Nest/Core/OptimizeWorker.worker.d.ts @@ -0,0 +1,6 @@ +declare const _default: { + new (stringUrl: string | URL, options?: WorkerOptions): Worker; + prototype: Worker; +} & (new () => Worker); +export default _default; +//# sourceMappingURL=OptimizeWorker.worker.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/OptimizeWorker.worker.d.ts.map b/types/Nest/Core/OptimizeWorker.worker.d.ts.map new file mode 100644 index 0000000..bc6c6f6 --- /dev/null +++ b/types/Nest/Core/OptimizeWorker.worker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OptimizeWorker.worker.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/OptimizeWorker.worker.ts"],"names":[],"mappings":";;;eA0BgD,MAAM;AAAtD,wBAAwD"} \ No newline at end of file diff --git a/types/Nest/Core/Part.d.ts b/types/Nest/Core/Part.d.ts new file mode 100644 index 0000000..eda8e6d --- /dev/null +++ b/types/Nest/Core/Part.d.ts @@ -0,0 +1,64 @@ +import { Box2 } from "../Common/Box2"; +import { NestFiler } from "../Common/Filer"; +import { Point } from "../Common/Point"; +import { PartState } from "./PartState"; +import { Path } from "./Path"; +/** + * 零件类 + * 零件类可以绑定数据,也存在位置和旋转状态的信息 + * + * 初始化零件: + * 传入零件的轮廓,刀半径,包围容器(或者为空?) + * 初始化用于放置的轮廓。将轮廓首点移动到0点,记录移动的点P。 + * + * 零件放置位置: + * 表示零件轮廓首点的位置。 + * + * 零件的旋转: + * 表示零件轮廓按照首点(0)旋转。 + * + * 还原零件的放置状态: + * 同样将零件移动到0点 + * 同样将零件旋转 + * 同样将零件移动到指定的位置 + * 零件可能处于容器中,变换到容器坐标系 + * + */ +export declare class Part { + Id: number; + private _Holes; + _RotateHoles: PartState[][]; + StateIndex: number; + RotatedStates: PartState[]; + PlacePosition: Point; + HolePosition: Point; + UserData: T; + Parent: Part; + PlaceCS: Matrix; + PlaceIndex: number; + GroupMap: { + [key: number]: Part[]; + }; + get State(): PartState; + get Holes(): PartState[]; + Init(path: Path, bin: Path, rotateCount?: number): this; + Init2(path: Path, bin: Path, rotations?: number[]): this; + ParseGroup(partOther: Part, bin: Path): Part[]; + AppendHole(path: Path): void; + Mirror(doubleFace: boolean): void; + Clone(): Part; + Mutate(): this; + ReadFile(file: NestFiler): void; + WriteFile(file: NestFiler): void; +} +export declare class PartGroup extends Part { + part1: Part; + part2: Part; + index1: number; + index2: number; + p: Point; + box: Box2; + constructor(part1: Part, part2: Part, index1: number, index2: number, p: Point, box: Box2, bin: Path); + Export(): Part[]; +} +//# sourceMappingURL=Part.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/Part.d.ts.map b/types/Nest/Core/Part.d.ts.map new file mode 100644 index 0000000..e18232e --- /dev/null +++ b/types/Nest/Core/Part.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Part.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/Part.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG;IAEnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,MAAM,CAAmB;IACjC,YAAY,EAAE,SAAS,EAAE,EAAE,CAAM;IAEjC,UAAU,SAAK;IACf,aAAa,EAAE,SAAS,EAAE,CAAM;IAChC,aAAa,EAAE,KAAK,CAAC;IAErB,YAAY,EAAE,KAAK,CAAC;IAGpB,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IAGnB,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;KAAE,CAAM;IAC1C,IAAI,KAAK,IAAI,SAAS,CAGrB;IAED,IAAI,KAAK,IAAI,SAAS,EAAE,CAKvB;IAGD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,SAAI,GAAG,IAAI;IAalD,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,IAAI;IAmD5D,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,EAAE;IA6D9C,UAAU,CAAC,IAAI,EAAE,IAAI;IA4CrB,MAAM,CAAC,UAAU,EAAE,OAAO;IA8B1B,KAAK;IAaL,MAAM,IAAI,IAAI;IAOd,QAAQ,CAAC,IAAI,EAAE,SAAS;IAwCxB,SAAS,CAAC,IAAI,EAAE,SAAS;CAwB5B;AAGD,qBAAa,SAAU,SAAQ,IAAI;IAEZ,KAAK,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,CAAC,EAAE,KAAK;IACR,GAAG,EAAE,IAAI;gBALD,KAAK,EAAE,IAAI,EACnB,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,KAAK,EACR,GAAG,EAAE,IAAI,EAChB,GAAG,EAAE,IAAI;IAQb,MAAM,IAAI,IAAI,EAAE;CAiBnB"} \ No newline at end of file diff --git a/types/Nest/Core/PartState.d.ts b/types/Nest/Core/PartState.d.ts new file mode 100644 index 0000000..5a09fe6 --- /dev/null +++ b/types/Nest/Core/PartState.d.ts @@ -0,0 +1,19 @@ +import { Path } from "./Path"; +import { Point } from "../Common/Point"; +import { NestFiler } from "../Common/Filer"; +/** + * 用于存放零件旋转后的状态 + * 记录了用于放置时的轮廓。该轮廓总是首点等于0,便于放置时的计算。 + */ +export declare class PartState { + Rotation: number; + OrigionMinPoint: Point; + MinPoint: Point; + Contour: Path; + IsMirror: boolean; + MirrorOriginMinPoint: Point; + Mirror(): PartState; + ReadFile(file: NestFiler): void; + WriteFile(file: NestFiler): void; +} +//# sourceMappingURL=PartState.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/PartState.d.ts.map b/types/Nest/Core/PartState.d.ts.map new file mode 100644 index 0000000..430f049 --- /dev/null +++ b/types/Nest/Core/PartState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PartState.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/PartState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,qBAAa,SAAS;IAElB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,KAAK,CAAC;IAEvB,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IAEd,QAAQ,EAAE,OAAO,CAAS;IAC1B,oBAAoB,EAAE,KAAK,CAAC;IAE5B,MAAM,IAAI,SAAS;IAkBnB,QAAQ,CAAC,IAAI,EAAE,SAAS;IAYxB,SAAS,CAAC,IAAI,EAAE,SAAS;CAQ5B"} \ No newline at end of file diff --git a/types/Nest/Core/Path.d.ts b/types/Nest/Core/Path.d.ts new file mode 100644 index 0000000..c04b68b --- /dev/null +++ b/types/Nest/Core/Path.d.ts @@ -0,0 +1,56 @@ +import { Box2 } from "../Common/Box2"; +import { NestFiler } from "../Common/Filer"; +import { Point } from "../Common/Point"; +import { Vector2 } from "../Common/Vector2"; +/** + * 轮廓路径类 + * 可以求NFP,和保存NFPCahce + * 因为NFP结果是按照最低点移动的,所以将点旋转后,按照盒子将点移动到0点. + */ +export declare class Path { + OrigionPoints?: Point[]; + Id: number; + Points: Point[]; + OutsideNFPCache: { + [key: number]: Point[][]; + }; + InsideNFPCache: { + [key: number]: Point[][]; + }; + constructor(OrigionPoints?: Point[], rotation?: number); + Origion: Path; + OrigionMinPoint: Vector2; + Rotation: number; + Size: Vector2; + private Init; + GetNFPs(path: Path, outside: boolean): Point[][]; + GetOutsideNFP(path: Path): Point[][]; + GetInsideNFP(path: Path): Point[][]; + private _InPoint; + /** + * 用这个点来检测是否在Path内部 + */ + private get InPoint(); + protected _BigIntPoints: Point[]; + get BigIntPoints(): Point[]; + private _BigSize; + get BigSize(): Vector2; + protected _MirrorPoints: Point[]; + get MirrorPoints(): Point[]; + protected _BoundingBox: Box2; + get BoundingBox(): Box2; + protected _Area: number; + get Area(): number; + set Area(a: number); + private _IsRect; + get IsRect(): boolean; + ReadFile(file: NestFiler): void; + WriteFile(file: NestFiler): void; +} +export declare function Area(pts: Point[]): number; +/** + * 平移点表,返回新点表 + */ +export declare function TranslatePath(pts: Point[], p: Point): Point[]; +export declare function PathScale(pts: Point[], scale: number): Point[]; +//# sourceMappingURL=Path.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/Path.d.ts.map b/types/Nest/Core/Path.d.ts.map new file mode 100644 index 0000000..38dc2b5 --- /dev/null +++ b/types/Nest/Core/Path.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/Path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,IAAI;IAOM,aAAa,CAAC,EAAE,KAAK,EAAE;IAL1C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,CAAC;KAAE,CAAM;IACpD,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,EAAE,CAAC;KAAE,CAAM;gBAEhC,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,QAAQ,GAAE,MAAU;IAMhE,OAAO,EAAE,IAAI,CAAC;IAEd,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IAEjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,IAAI;IAyCZ,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,EAAE,EAAE;IA2ChD,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;IA6BpC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;IAuCnC,OAAO,CAAC,QAAQ,CAAQ;IAExB;;OAEG;IACH,OAAO,KAAK,OAAO,GAalB;IAED,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;IACjC,IAAI,YAAY,YAWf;IAED,OAAO,CAAC,QAAQ,CAAU;IAC1B,IAAI,OAAO,YAKV;IAED,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;IACjC,IAAI,YAAY,YASf;IAED,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC;IAC7B,IAAI,WAAW,SAKd;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,IAAI,IAAI,IAMI,MAAM,CADjB;IACD,IAAI,IAAI,CAAC,CAAC,EAAE,MAAM,EAGjB;IAED,OAAO,CAAC,OAAO,CAAU;IACzB,IAAI,MAAM,YAQT;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAsB/B,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;CAuBnC;AAID,wBAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,CAYzC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAM7D;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAQ9D"} \ No newline at end of file diff --git a/types/Nest/Core/PathGenerator.d.ts b/types/Nest/Core/PathGenerator.d.ts new file mode 100644 index 0000000..53ceabe --- /dev/null +++ b/types/Nest/Core/PathGenerator.d.ts @@ -0,0 +1,26 @@ +import { Path } from "./Path"; +/** + * 轮廓路径构造器 + * 传递一组简化后的点表过来,如果已经有同样的点表时,返回已经生产的Path,避免重复产生Path。 + * 使用相同的PATH有复用路径缓存。 + * + * 每次进行优化时,必须清理构造器,保证Path生成是对本次优化唯一。 + */ +declare class PathGenerator { + paths: Path[]; + pathAreaMap: { + [key: string]: Path[]; + }; + cacheCount: number; + /** + * 如果存在同样的轮廓,则返回已经构造的轮廓, + * 如果没有,则返回自身,并且注册它。 + * 如果id没有被注册,那么证明它无法放置在bin中 + */ + Allocate(path: Path): Path; + RegisterId(path: Path): void; + Clear(): void; +} +export declare let PathGeneratorSingle: PathGenerator; +export {}; +//# sourceMappingURL=PathGenerator.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/PathGenerator.d.ts.map b/types/Nest/Core/PathGenerator.d.ts.map new file mode 100644 index 0000000..264dcb1 --- /dev/null +++ b/types/Nest/Core/PathGenerator.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PathGenerator.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/PathGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B;;;;;;GAMG;AACH,cAAM,aAAa;IAEf,KAAK,EAAE,IAAI,EAAE,CAAM;IACnB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,CAAC;KAAE,CAAM;IAG7C,UAAU,SAAK;IACf;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAqB1B,UAAU,CAAC,IAAI,EAAE,IAAI;IASrB,KAAK;CAMR;AA0BD,eAAO,IAAI,mBAAmB,eAAoB,CAAC"} \ No newline at end of file diff --git a/types/Nest/Core/PlaceType.d.ts b/types/Nest/Core/PlaceType.d.ts new file mode 100644 index 0000000..f5fc098 --- /dev/null +++ b/types/Nest/Core/PlaceType.d.ts @@ -0,0 +1,6 @@ +export declare enum PlaceType { + Hull = 0, + Box = 1, + Gravity = 2 +} +//# sourceMappingURL=PlaceType.d.ts.map \ No newline at end of file diff --git a/types/Nest/Core/PlaceType.d.ts.map b/types/Nest/Core/PlaceType.d.ts.map new file mode 100644 index 0000000..76463b8 --- /dev/null +++ b/types/Nest/Core/PlaceType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PlaceType.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Core/PlaceType.ts"],"names":[],"mappings":"AACA,oBAAY,SAAS;IAEjB,IAAI,IAAI;IACR,GAAG,IAAI;IACP,OAAO,IAAI;CACd"} \ No newline at end of file diff --git a/types/Nest/Test/PlaceUtil.d.ts b/types/Nest/Test/PlaceUtil.d.ts new file mode 100644 index 0000000..45bacb8 --- /dev/null +++ b/types/Nest/Test/PlaceUtil.d.ts @@ -0,0 +1,11 @@ +import { Matrix4 } from "three"; +import { Vec3 } from "../../Geometry/IVec3"; +import { Individual } from "../Core/Individual"; +import { NestDatabase } from "../Core/NestDatabase"; +import { Part } from "../Core/Part"; +import { Path } from "../Core/Path"; +export declare function PlaceCS(part: Part, move?: Vec3): Matrix4; +export declare function DrawBin(count: number, binPath: Path): void; +export declare function Place(inv: Individual, parts: Part[], binPath: Path): void; +export declare function InitParts(binPath?: Path): Promise; +//# sourceMappingURL=PlaceUtil.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/PlaceUtil.d.ts.map b/types/Nest/Test/PlaceUtil.d.ts.map new file mode 100644 index 0000000..d007551 --- /dev/null +++ b/types/Nest/Test/PlaceUtil.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PlaceUtil.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/PlaceUtil.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAWzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAO5C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAa,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAUpC,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAsBxD;AAWD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,QAenD;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,QA2JlE;AAED,wBAAsB,SAAS,CAAC,OAAO,OAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D3E"} \ No newline at end of file diff --git a/types/Nest/Test/TestData.d.ts b/types/Nest/Test/TestData.d.ts new file mode 100644 index 0000000..0b311aa --- /dev/null +++ b/types/Nest/Test/TestData.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_NFPData implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestData.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestData.d.ts.map b/types/Nest/Test/TestData.d.ts.map new file mode 100644 index 0000000..4839685 --- /dev/null +++ b/types/Nest/Test/TestData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestData.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAgBb"} \ No newline at end of file diff --git a/types/Nest/Test/TestHull.d.ts b/types/Nest/Test/TestHull.d.ts new file mode 100644 index 0000000..6c521cb --- /dev/null +++ b/types/Nest/Test/TestHull.d.ts @@ -0,0 +1,4 @@ +export declare class Command_TestHull { + exec(): Promise; +} +//# sourceMappingURL=TestHull.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestHull.d.ts.map b/types/Nest/Test/TestHull.d.ts.map new file mode 100644 index 0000000..c3d0eaa --- /dev/null +++ b/types/Nest/Test/TestHull.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestHull.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestHull.ts"],"names":[],"mappings":"AAQA,qBAAa,gBAAgB;IAEnB,IAAI;CAab"} \ No newline at end of file diff --git a/types/Nest/Test/TestNFP.d.ts b/types/Nest/Test/TestNFP.d.ts new file mode 100644 index 0000000..e5df9fa --- /dev/null +++ b/types/Nest/Test/TestNFP.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestNFP implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestNFP.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestNFP.d.ts.map b/types/Nest/Test/TestNFP.d.ts.map new file mode 100644 index 0000000..b228712 --- /dev/null +++ b/types/Nest/Test/TestNFP.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestNFP.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestNFP.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAStD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CAsEb"} \ No newline at end of file diff --git a/types/Nest/Test/TestOffset.d.ts b/types/Nest/Test/TestOffset.d.ts new file mode 100644 index 0000000..62a4212 --- /dev/null +++ b/types/Nest/Test/TestOffset.d.ts @@ -0,0 +1,7 @@ +/** + * 测试结果 19-20点以上时,使用c++进行偏移会更快 + */ +export declare class Command_TestOffset { + exec(): Promise; +} +//# sourceMappingURL=TestOffset.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestOffset.d.ts.map b/types/Nest/Test/TestOffset.d.ts.map new file mode 100644 index 0000000..de9dc55 --- /dev/null +++ b/types/Nest/Test/TestOffset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestOffset.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestOffset.ts"],"names":[],"mappings":"AAMA;;GAEG;AAEH,qBAAa,kBAAkB;IAErB,IAAI;CA8Bb"} \ No newline at end of file diff --git a/types/Nest/Test/TestPlace.d.ts b/types/Nest/Test/TestPlace.d.ts new file mode 100644 index 0000000..d7e19d4 --- /dev/null +++ b/types/Nest/Test/TestPlace.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestPlace implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestPlace.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestPlace.d.ts.map b/types/Nest/Test/TestPlace.d.ts.map new file mode 100644 index 0000000..872f70b --- /dev/null +++ b/types/Nest/Test/TestPlace.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestPlace.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestPlace.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,qBAAa,iBAAkB,YAAW,OAAO;IAEvC,IAAI;CA4Eb"} \ No newline at end of file diff --git a/types/Nest/Test/TestSimply.d.ts b/types/Nest/Test/TestSimply.d.ts new file mode 100644 index 0000000..dc3d949 --- /dev/null +++ b/types/Nest/Test/TestSimply.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestSimply implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestSimply.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestSimply.d.ts.map b/types/Nest/Test/TestSimply.d.ts.map new file mode 100644 index 0000000..1ef7d51 --- /dev/null +++ b/types/Nest/Test/TestSimply.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestSimply.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestSimply.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBACa,kBAAmB,YAAW,OAAO;IAExC,IAAI;CAiCb"} \ No newline at end of file diff --git a/types/Nest/Test/TestVariant.d.ts b/types/Nest/Test/TestVariant.d.ts new file mode 100644 index 0000000..e2d2388 --- /dev/null +++ b/types/Nest/Test/TestVariant.d.ts @@ -0,0 +1,8 @@ +import { Individual } from "../Core/Individual"; +import { Curve } from "../../DatabaseServices/Entity/Curve"; +import { Matrix4 } from "three"; +export declare let NestVariant: { + best?: Individual; + curveMap?: Map; +}; +//# sourceMappingURL=TestVariant.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestVariant.d.ts.map b/types/Nest/Test/TestVariant.d.ts.map new file mode 100644 index 0000000..b15fe84 --- /dev/null +++ b/types/Nest/Test/TestVariant.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestVariant.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestVariant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,eAAO,IAAI,WAAW,EAAE;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACR,CAAC"} \ No newline at end of file diff --git a/types/Nest/Test/TestYH2.d.ts b/types/Nest/Test/TestYH2.d.ts new file mode 100644 index 0000000..2d36c6a --- /dev/null +++ b/types/Nest/Test/TestYH2.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestYH2 implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestYH2.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestYH2.d.ts.map b/types/Nest/Test/TestYH2.d.ts.map new file mode 100644 index 0000000..1a47625 --- /dev/null +++ b/types/Nest/Test/TestYH2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestYH2.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestYH2.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA2Bb"} \ No newline at end of file diff --git a/types/Nest/Test/TestYHSingle.d.ts b/types/Nest/Test/TestYHSingle.d.ts new file mode 100644 index 0000000..2b4bf5d --- /dev/null +++ b/types/Nest/Test/TestYHSingle.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestYHSingle implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestYHSingle.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestYHSingle.d.ts.map b/types/Nest/Test/TestYHSingle.d.ts.map new file mode 100644 index 0000000..40a84b2 --- /dev/null +++ b/types/Nest/Test/TestYHSingle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestYHSingle.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestYHSingle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBACa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAsDb"} \ No newline at end of file diff --git a/types/Nest/Test/TestYHWorker.d.ts b/types/Nest/Test/TestYHWorker.d.ts new file mode 100644 index 0000000..1d3a00e --- /dev/null +++ b/types/Nest/Test/TestYHWorker.d.ts @@ -0,0 +1,5 @@ +import { Command } from "../../Editor/CommandMachine"; +export declare class Command_TestYHWorker implements Command { + exec(): Promise; +} +//# sourceMappingURL=TestYHWorker.d.ts.map \ No newline at end of file diff --git a/types/Nest/Test/TestYHWorker.d.ts.map b/types/Nest/Test/TestYHWorker.d.ts.map new file mode 100644 index 0000000..14a0e04 --- /dev/null +++ b/types/Nest/Test/TestYHWorker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TestYHWorker.d.ts","sourceRoot":"","sources":["../../../../src/Nest/Test/TestYHWorker.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAe,MAAM,6BAA6B,CAAC;AAQnE,qBACa,oBAAqB,YAAW,OAAO;IAE1C,IAAI;CAwCb"} \ No newline at end of file diff --git a/types/Production/GetProjectedArea.d.ts b/types/Production/GetProjectedArea.d.ts new file mode 100644 index 0000000..de1d610 --- /dev/null +++ b/types/Production/GetProjectedArea.d.ts @@ -0,0 +1,3 @@ +import { Board } from "../DatabaseServices/Entity/Board"; +export declare function GetProjectedArea(brs: Board[]): Promise; +//# sourceMappingURL=GetProjectedArea.d.ts.map \ No newline at end of file diff --git a/types/Production/GetProjectedArea.d.ts.map b/types/Production/GetProjectedArea.d.ts.map new file mode 100644 index 0000000..9944c2b --- /dev/null +++ b/types/Production/GetProjectedArea.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetProjectedArea.d.ts","sourceRoot":"","sources":["../../../src/Production/GetProjectedArea.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAMzD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,mBAalD"} \ No newline at end of file diff --git a/types/Production/ParseBoardHoleData.d.ts b/types/Production/ParseBoardHoleData.d.ts new file mode 100644 index 0000000..e6ec109 --- /dev/null +++ b/types/Production/ParseBoardHoleData.d.ts @@ -0,0 +1,32 @@ +import { Vector3 } from "three"; +import { CylinderHole } from "../DatabaseServices/3DSolid/CylinderHole"; +import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole"; +import { Board } from "../DatabaseServices/Entity/Board"; +import { ExtureContourCurve } from "../DatabaseServices/Entity/Extrude"; +import { IBoardHoleInfo, IDrillingOption } from "./Product"; +/** + * 解析排钻数据的性能优化类,这个类并没有启用 + */ +export declare class ParseBoardHoleData { + private _Board; + private _offsetTanslation; + private _SealedContour; + private _Normal; + private _OCSInv; + private _OCSInvRo; + private _ContourBox; + frontBackHoles: IDrillingOption[]; + sideHoles: IDrillingOption[]; + constructor(_Board: Board, _offsetTanslation: Vector3, _SealedContour: ExtureContourCurve, //已经计算封边的轮廓 + _Normal?: Vector3, _OCSInv?: import("three").Matrix4, _OCSInvRo?: import("three").Matrix4, _ContourBox?: import("../Geometry/Box").Box3Ext); + GetData(): IBoardHoleInfo; + /**分析常规排钻 */ + ParseCylHoles(d: CylinderHole, offsetTanslation: Vector3): void; + /**分析自定义圆柱排钻 */ + ParseExtrudeHoles(d: ExtrudeHole, offsetTanslation: Vector3): void; + /**拆单那边需要把侧孔 z 坐标转换为从上到下 */ + private InvertPosition; + PointCheckCache: Map; + private PointInBoard; +} +//# sourceMappingURL=ParseBoardHoleData.d.ts.map \ No newline at end of file diff --git a/types/Production/ParseBoardHoleData.d.ts.map b/types/Production/ParseBoardHoleData.d.ts.map new file mode 100644 index 0000000..0903995 --- /dev/null +++ b/types/Production/ParseBoardHoleData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ParseBoardHoleData.d.ts","sourceRoot":"","sources":["../../../src/Production/ParseBoardHoleData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAiB,MAAM,0CAA0C,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAIxE,OAAO,EAAgB,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE1E;;GAEG;AACH,qBAAa,kBAAkB;IAMvB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,WAAW;IAVvB,cAAc,EAAE,eAAe,EAAE,CAAM;IACvC,SAAS,EAAE,eAAe,EAAE,CAAM;gBAGtB,MAAM,EAAE,KAAK,EACb,iBAAiB,EAAE,OAAO,EAC1B,cAAc,EAAE,kBAAkB,EAAC,WAAW;IAC9C,OAAO,UAAgB,EACvB,OAAO,0BAAgB,EACvB,SAAS,0BAAuC,EAChD,WAAW,oCAA6B;IAqBpD,OAAO,IAAI,cAAc;IAKzB,YAAY;IACZ,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,GAAG,IAAI;IA2G/D,eAAe;IACf,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,GAAG,IAAI;IA2FlE,2BAA2B;IAC3B,OAAO,CAAC,cAAc;IAOtB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAClD,OAAO,CAAC,YAAY;CAcvB"} \ No newline at end of file diff --git a/types/Production/Product.d.ts b/types/Production/Product.d.ts new file mode 100644 index 0000000..0c9b0f6 --- /dev/null +++ b/types/Production/Product.d.ts @@ -0,0 +1,182 @@ +import { Vector2, Vector3 } from "three"; +import { EBoardKeyList } from "../Common/BoardKeyList"; +import { GangDrillType } from "../DatabaseServices/3DSolid/CylinderHole"; +import { Arc } from "../DatabaseServices/Entity/Arc"; +import { Board, I2DModeingItem, IKnifeInfo } from "../DatabaseServices/Entity/Board"; +import { Circle } from "../DatabaseServices/Entity/Circle"; +import { ExtureContourCurve } from "../DatabaseServices/Entity/Extrude"; +import { Polyline } from "../DatabaseServices/Entity/Polyline"; +import { HardwareCompositeEntity } from "../DatabaseServices/Hardware/HardwareCompositeEntity"; +import { HardwareTopline } from "../DatabaseServices/Hardware/HardwareTopline"; +import { Vec2 } from "../Geometry/CheckIntersect"; +import { IHardwareOption } from "../UI/Components/RightPanel/RightPanelInterface"; +import { BoardOpenDir, FaceDirection, IHighSealedItem } from "../UI/Store/BoardInterface"; +import { Entity } from './../DatabaseServices/Entity/Entity'; +/**轮廓数据 */ +export interface IContourData { + pts: Vec2[]; + buls: number[]; +} +export interface I3DContourData { + pts: Vector3[]; + buls: number[]; +} +export declare type IHardwareType = HardwareTopline | HardwareCompositeEntity; +export interface ISealingData extends IHighSealedItem { + length: number; + type?: string; + shop?: string; +} +export interface IModelingData { + feeding: IContourData[]; + thickness: number; + dir: FaceDirection | number; + knifeRadius: number; +} +export declare enum DrillingFace { + Front = 0, + Back = 1 +} +export interface IDrillingOption { + position: Vector3; + radius: number; + type: GangDrillType; + depth: number; + face: DrillingFace; + endPt?: Vector3; + angle?: number; +} +export interface IBoardHoleInfo { + frontBackHoles: IDrillingOption[]; + sideHoles: IDrillingOption[]; +} +interface IBoardProdInfo { + id: number; + name: string; + [EBoardKeyList.RoomName]: string; + [EBoardKeyList.CabinetName]: string; + [EBoardKeyList.Mat]: string; + [EBoardKeyList.BrMat]: string; + [EBoardKeyList.Color]: string; + [EBoardKeyList.Lines]: number; + [EBoardKeyList.DrillType]: string; + spliteHeight: string; + spliteThickness: string; + spliteWidth: string; + isRect: boolean; + remarks: [string, string][]; + kaiLiaoWidth: number; + kaiLiaoHeight: number; + openDir: BoardOpenDir; +} +export interface I2DModeling { + path: IContourData; + dir: FaceDirection; + items: I2DModeingItem[]; +} +export interface I3DModeling { + path: I3DContourData; + dir: FaceDirection; + knife: IKnifeInfo; +} +/**拆单数据 */ +export interface ISpliteOrderData { + info: IBoardProdInfo; + outline: IContourData; + sealing: ISealingData[]; + modeling: IModelingData[]; + holes: IBoardHoleInfo; + sideModeling: IModelingData[]; + offsetTanslation: Vector3; + originOutlin: IContourData; + metalsData?: { + metals: number; + comp: number; + }; + boardContour: IContourData; + originModelingData: { + sideModeling: IOriginModelingData[]; + modeling: IOriginModelingData[]; + }; + modeling2D: I2DModeling[]; + modeling3D: I3DModeling[]; +} +export interface IBoardMetalsData { + metals: ISpliteHardwareData[]; + comp: ISpliteHardwareData[]; +} +export interface ISpliteHardwareData { + metalsOption: IHardwareOption; + dataList: [string, string][]; + children: ISpliteHardwareData[]; + length?: number; + size: Vector3; +} +export interface IOriginModelingData { + outline: IContourData; + holes: IContourData[]; + thickness: number; + dir: FaceDirection | number; + knifeRadius: number; +} +export declare namespace Production { + /**获取板件拆单数据 */ + function GetBoardSplitOrderData(br: Board): ISpliteOrderData | undefined; + function GetBoardInfo(br: Board, size: Vector3): IBoardProdInfo; + /** + * 转换成多段线并且将圆弧打断(大于1/4的话) + */ + function ConverToPolylineAndSplitArc(cu: Polyline | Circle, isOutline?: boolean, isSplite?: boolean): IContourData; + function ConverCircleToPolyline(cir: Circle): Polyline; + /** 打断多段线超过1/4圆的圆弧*/ + function SplitePolylineAtArc(cu: Polyline, isSplite?: boolean): { + pts: Vector2[]; + buls: number[]; + }; + function SplitetArc(arc: Arc, hasEnd?: boolean): { + pts: Vector3[]; + buls: number[]; + }; + /** + * 获取封边数据 + * 封边数据未统一逆时针顺序,用于拆单 + * */ + function GetBoardSealingData(br: Board): ISealingData[]; + function GetMetalTotalEntitys(md: HardwareCompositeEntity, isHole?: boolean, filter?: (e: Entity) => boolean): Entity[]; + function GetOriginBoardModelingData(br: Board): { + modeling: IOriginModelingData[]; + sideModeling: IOriginModelingData[]; + }; + function GetBoardModelingData(br: Board, offsetTanslation: Vector3): { + modeling: IModelingData[]; + sideModeling: IModelingData[]; + }; + /**获取板件的轮廓 + *有拆单尺寸返回矩形 + *用于拆单的轮廓统一逆时针 */ + function GetSpliteOutline(br: Board, isSplite: boolean): ExtureContourCurve | undefined; + function GetSpiteSize(br: Board): { + spliteHeight: number; + spliteWidth: number; + spliteThickness: number; + }; + function GetSpliteOutlineBySpliteSize(br: Board): Polyline; + /**孔信息,侧孔的z 均为 从上到下距离 */ + function GetBoardHolesData(br: Board, offsetTanslation: Vector3, sealedContour: ExtureContourCurve): IBoardHoleInfo; + function GetHardwareCompositeData(en: HardwareCompositeEntity): ISpliteHardwareData; + function GetHardwareToplineData(en: HardwareTopline): ISpliteHardwareData[]; + /**获取排钻数量 */ + function GetTotalDrillCount(brs: (Board | IHardwareType)[]): { + drillCount: import("../Add-on/LookOverBoardInfos/LookOverBoardInfosTool").ICountType[]; + hardwareCount: import("../Add-on/LookOverBoardInfos/LookOverBoardInfosTool").ICountType[]; + sealCount: import("../Add-on/LookOverBoardInfos/LookOverBoardInfosTool").ICountType[]; + areaCount: import("../Add-on/LookOverBoardInfos/LookOverBoardInfosTool").ICountType[]; + }; + function GetCabSize(brList: Board[]): Map; + function Data2Polyline(data: IContourData, isClose?: boolean): Polyline; + function Report(ens: Entity[], msg: string): void; + function Get2DModeing(br: Board, offset: Vector3): I2DModeling[]; + function Get3DModeing(br: Board, offset: Vector3): I3DModeling[]; +} +export {}; +//# sourceMappingURL=Product.d.ts.map \ No newline at end of file diff --git a/types/Production/Product.d.ts.map b/types/Production/Product.d.ts.map new file mode 100644 index 0000000..b979562 --- /dev/null +++ b/types/Production/Product.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Product.d.ts","sourceRoot":"","sources":["../../../src/Production/Product.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD,OAAO,EAAgB,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAGvF,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AACrD,OAAO,EAAE,KAAK,EAAa,cAAc,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAE/E,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAIlD,OAAO,EAAe,eAAe,EAAkB,MAAM,iDAAiD,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAS7D,UAAU;AACV,MAAM,WAAW,YAAY;IAEzB,GAAG,EAAE,IAAI,EAAE,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,MAAM,WAAW,cAAc;IAE3B,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AACD,oBAAY,aAAa,GAAG,eAAe,GAAG,uBAAuB,CAAC;AAEtE,MAAM,WAAW,YAAa,SAAQ,eAAe;IAEjD,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,aAAa;IAE1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,oBAAY,YAAY;IAGpB,KAAK,IAAI;IACT,IAAI,IAAI;CACX;AAED,MAAM,WAAW,eAAe;IAE5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAE3B,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,SAAS,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,UAAU,cAAc;IAEpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAExB,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;CAC3B;AACD,MAAM,WAAW,WAAW;IAExB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,UAAU;AACV,MAAM,WAAW,gBAAgB;IAE7B,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IAC/C,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE;QAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC;QAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;KAAE,CAAC;IAC9F,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,UAAU,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAE7B,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,IAAI,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAEhC,YAAY,EAAE,eAAe,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAEhC,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACvB;AAGD,yBAAiB,UAAU,CAC3B;IACI,cAAc;IACd,SAAgB,sBAAsB,CAAC,EAAE,EAAE,KAAK,GAAG,gBAAgB,GAAG,SAAS,CA4D9E;IACD,SAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,CA0BrE;IAED;;OAEG;IACH,SAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,EAAE,SAAS,UAAO,EAAE,QAAQ,UAAO,GAAG,YAAY,CA8BlH;IAED,SAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAQ5D;IAQD,oBAAoB;IACpB,SAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,UAAO,GAAG;QAAE,GAAG,EAAE,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;KAAE,CAuDtG;IACD,SAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,UAAQ,GAAG;QAAE,GAAG,EAAE,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;KAAE,CAkCxF;IAED;;;SAGK;IACL,SAAgB,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,YAAY,EAAE,CA+C7D;IAED,SAAgB,oBAAoB,CAAC,EAAE,EAAE,uBAAuB,EAAE,MAAM,UAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,YAqBhH;IACD,SAAgB,0BAA0B,CAAC,EAAE,EAAE,KAAK;;;MAiCnD;IACD,SAAgB,oBAAoB,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO;;;MA+CxE;IAED;;oBAEgB;IAChB,SAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS,CAiB7F;IACD,SAAgB,YAAY,CAAC,EAAE,EAAE,KAAK;;;;MAYrC;IAED,SAAgB,4BAA4B,CAAC,EAAE,EAAE,KAAK,YAOrD;IAED,wBAAwB;IACxB,SAAgB,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,GAAG,cAAc,CAoGzH;IAqPD,SAAgB,wBAAwB,CAAC,EAAE,EAAE,uBAAuB,GAAG,mBAAmB,CAkCzF;IAED,SAAgB,sBAAsB,CAAC,EAAE,EAAE,eAAe,yBAyCzD;IAED,YAAY;IACZ,SAAgB,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE;;;;;MAGhE;IAED,SAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CA4B/D;IACD,SAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,UAAO,YAM/D;IACD,SAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,QAMhD;IACD,SAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,iBActD;IACD,SAAgB,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,iBA0CtD;CACJ"} \ No newline at end of file diff --git a/types/Reactor/CommandReactor.d.ts b/types/Reactor/CommandReactor.d.ts new file mode 100644 index 0000000..06d891c --- /dev/null +++ b/types/Reactor/CommandReactor.d.ts @@ -0,0 +1,14 @@ +import { ApplicationService } from "../ApplicationServices/Application"; +import { CADObject } from "../DatabaseServices/CADObject"; +declare type CommandEndListener = (cmdName: string, changeObjects: CADObject[], createObjects: CADObject[]) => void | Promise; +export declare class CommandReactor { + private app; + _cmdName: string; + _createObejcts: CADObject[]; + constructor(app: ApplicationService); + CommandEndReactor(hasRecord: boolean): Promise; + private _commandEndListeners; + OnCommandEnd(listener: CommandEndListener): Function; +} +export {}; +//# sourceMappingURL=CommandReactor.d.ts.map \ No newline at end of file diff --git a/types/Reactor/CommandReactor.d.ts.map b/types/Reactor/CommandReactor.d.ts.map new file mode 100644 index 0000000..f3eb465 --- /dev/null +++ b/types/Reactor/CommandReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandReactor.d.ts","sourceRoot":"","sources":["../../../src/Reactor/CommandReactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAGxE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK1D,aAAK,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5H,qBAAa,cAAc;IAIX,OAAO,CAAC,GAAG;IAFvB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,SAAS,EAAE,CAAM;gBACb,GAAG,EAAE,kBAAkB;IAsBrC,iBAAiB,CAAC,SAAS,EAAE,OAAO;IA6B1C,OAAO,CAAC,oBAAoB,CAA4B;IAGxD,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,QAAQ;CAQvD"} \ No newline at end of file diff --git a/types/Reactor/RelevanceCuttingReactor.d.ts b/types/Reactor/RelevanceCuttingReactor.d.ts new file mode 100644 index 0000000..d1b0ac6 --- /dev/null +++ b/types/Reactor/RelevanceCuttingReactor.d.ts @@ -0,0 +1,6 @@ +import { ApplicationService } from "../ApplicationServices/Application"; +export declare class RelevanceCuttingReactor { + private app; + constructor(app: ApplicationService); +} +//# sourceMappingURL=RelevanceCuttingReactor.d.ts.map \ No newline at end of file diff --git a/types/Reactor/RelevanceCuttingReactor.d.ts.map b/types/Reactor/RelevanceCuttingReactor.d.ts.map new file mode 100644 index 0000000..a029d8d --- /dev/null +++ b/types/Reactor/RelevanceCuttingReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RelevanceCuttingReactor.d.ts","sourceRoot":"","sources":["../../../src/Reactor/RelevanceCuttingReactor.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAkE7E,qBAAa,uBAAuB;IAEpB,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,kBAAkB;CA8G9C"} \ No newline at end of file diff --git a/types/Reactor/SyncDataReactor.d.ts b/types/Reactor/SyncDataReactor.d.ts new file mode 100644 index 0000000..a78c724 --- /dev/null +++ b/types/Reactor/SyncDataReactor.d.ts @@ -0,0 +1,7 @@ +import { ApplicationService } from "../ApplicationServices/Application"; +export declare class SyncDataReactor { + private app; + Enable: boolean; + constructor(app: ApplicationService); +} +//# sourceMappingURL=SyncDataReactor.d.ts.map \ No newline at end of file diff --git a/types/Reactor/SyncDataReactor.d.ts.map b/types/Reactor/SyncDataReactor.d.ts.map new file mode 100644 index 0000000..2615861 --- /dev/null +++ b/types/Reactor/SyncDataReactor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SyncDataReactor.d.ts","sourceRoot":"","sources":["../../../src/Reactor/SyncDataReactor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAcxE,qBAAa,eAAe;IAGZ,OAAO,CAAC,GAAG;IADvB,MAAM,UAAS;gBACK,GAAG,EAAE,kBAAkB;CAiI9C"} \ No newline at end of file diff --git a/types/UI/Components/Asset.d.ts b/types/UI/Components/Asset.d.ts new file mode 100644 index 0000000..490bc06 --- /dev/null +++ b/types/UI/Components/Asset.d.ts @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { Board } from '../../DatabaseServices/Entity/Board'; +import { PhysicalMaterialRecord } from '../../DatabaseServices/PhysicalMaterialRecord'; +/** + * 材质球 纹理 预览 + */ +export declare class Asset extends React.Component<{ + material: PhysicalMaterialRecord; +}, {}> { + image: HTMLImageElement; + nameEl: HTMLDivElement; + removeCall: Function[]; + private assetEl; + private renderIng; + /** + * 更新渲染材质球预览图 + */ + private UpdateRenderPreview; + private Destroy; + componentDidMount(): Promise; + componentWillUnmount(): void; + handleDoubleClick: () => void; + handleApply: () => void; + handleCollection: () => Promise; + handleDelete: () => void; + handleStart: (e: DragEvent) => void; + render(): JSX.Element; +} +export declare function ApplyGoodInfo(en: Board, material: PhysicalMaterialRecord): void; +//# sourceMappingURL=Asset.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Asset.d.ts.map b/types/UI/Components/Asset.d.ts.map new file mode 100644 index 0000000..2159dd4 --- /dev/null +++ b/types/UI/Components/Asset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Asset.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AA2CvF;;GAEG;AACH,qBACa,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,QAAQ,EAAE,sBAAsB,CAAC;CAAE,EAAE,EAAE,CAAC;IAEjF,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAM;IAC5B,OAAO,CAAC,OAAO,CAAc;IAE7B,OAAO,CAAC,SAAS,CAAS;IAE1B;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAkBzB;IACF,OAAO,CAAC,OAAO,CAIb;IACI,iBAAiB;IAOvB,oBAAoB;IAKpB,iBAAiB,aAIf;IAEF,WAAW,aAgBT;IACF,gBAAgB,sBAiCd;IACF,YAAY,aAGV;IACF,WAAW,MAAO,SAAS,UAGzB;IACF,MAAM;CAoCT;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,QAKxE"} \ No newline at end of file diff --git a/types/UI/Components/BBS/BBSCommon.d.ts b/types/UI/Components/BBS/BBSCommon.d.ts new file mode 100644 index 0000000..e1d9d37 --- /dev/null +++ b/types/UI/Components/BBS/BBSCommon.d.ts @@ -0,0 +1,95 @@ +import * as React from 'react'; +import { IconName, IOptionProps } from '@blueprintjs/core'; +import { ICountType } from '../../../Add-on/LookOverBoardInfos/LookOverBoardInfosTool'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { LinesType } from '../../Store/BoardInterface'; +import { ProcessingGroupRecord } from '../../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord'; +import { IBoardInfoOptions } from './BoardInfosList'; +import { ObjectId } from '../../../DatabaseServices/ObjectId'; +export interface SortBtnData { + text: string; + icon: IconName; +} +export declare const SelectElementIndex: number[]; +export declare class TitleBanner extends React.Component<{ + sortBtnData: SortBtnData[]; + style: any; + handleOrder: Function; +}, {}> { + icon: IconName; + getBtnData: (data: string) => boolean; + render(): JSX.Element; +} +export declare enum PartsType { + Hole = 0, + Hardware = 1, + Area = 2, + Edge = 3 +} +interface IPartsTableProps { + type: PartsType; + partsCount: (ICountType | ICountType)[]; + titles: string[]; +} +export declare class PartsTable extends React.Component { + private renderBody; + render(): JSX.Element; +} +interface IBBSSealingComponentProps { + click: (v: string) => void; + board: Board; + option: IBoardInfoOptions; + ModifyDataRecord: (index: number, brData: Board, modifyKey: string, value: string | LinesType | ProcessingGroupRecord[]) => void; + index: number; +} +export declare class BBSSealingComponent extends React.Component { + render(): JSX.Element; +} +interface IBBSDrillingComponentProps extends IBBSSealingComponentProps { + selectOption: string[]; + ToggleBgColor: () => void; +} +export declare class BBSHighDrillingComponent extends React.Component { + render(): JSX.Element; +} +interface IBBSLinesComponentProps { + option: IBoardInfoOptions; + ModifyDataRecord: (index: number, brData: Board, modifyKey: string, value: string | LinesType | ProcessingGroupRecord[]) => void; + index: number; + board: Board; + ToggleBgColor: () => void; + HandleOnClick: (v: any) => void; + selectOption: IOptionProps[] | string[]; + optKey: string; +} +export declare class BBSSelectComponent extends React.Component { + render(): JSX.Element; + private handleChange; +} +interface IBBSProcessGroupItemProps { + option: IBoardInfoOptions; + ModifyDataRecord: (index: number, brData: Board, modifyKey: string, value: string | LinesType | ProcessingGroupRecord[]) => void; + index: number; + board: Board; + HandleOnClick: (v?: any) => void; + realBr: Board; + processGroupData: Map; +} +export declare class BBSProcessGroupItem extends React.Component { + private showAlert; + private removepg; + private tags; + componentDidMount(): void; + render(): JSX.Element; + private GetRemovable; + private RemoveTag; + private updateTags; + private GetInputVal; + private HandleAlertOnComfirm; + private GetTemplatePgName; +} +export declare class BBSRemarksComponent extends React.Component { + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=BBSCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BBS/BBSCommon.d.ts.map b/types/UI/Components/BBS/BBSCommon.d.ts.map new file mode 100644 index 0000000..a455ec0 --- /dev/null +++ b/types/UI/Components/BBS/BBSCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BBSCommon.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/BBS/BBSCommon.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Components/BBS/BBSEditor.d.ts b/types/UI/Components/BBS/BBSEditor.d.ts new file mode 100644 index 0000000..589232b --- /dev/null +++ b/types/UI/Components/BBS/BBSEditor.d.ts @@ -0,0 +1,14 @@ +import * as React from 'react'; +import { BBSEditorStore } from '../../Store/BBSEditorStore'; +export interface IBBSEditorProps { + store: BBSEditorStore; +} +export declare class BBSEditor extends React.Component { + selectValue: number; + render(): JSX.Element; + private moveValue; + handleDragStart: (e: React.DragEvent) => void; + handleDragOver: (e: React.DragEvent) => void; + handleDragend: (e: React.DragEvent) => void; +} +//# sourceMappingURL=BBSEditor.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BBS/BBSEditor.d.ts.map b/types/UI/Components/BBS/BBSEditor.d.ts.map new file mode 100644 index 0000000..c989df5 --- /dev/null +++ b/types/UI/Components/BBS/BBSEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BBSEditor.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/BBS/BBSEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,cAAc,EAA0B,MAAM,4BAA4B,CAAC;AAIpF,MAAM,WAAW,eAAe;IAE5B,KAAK,EAAE,cAAc,CAAC;CACzB;AAED,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IAC/C,WAAW,SAAM;IACtB,MAAM;IAmEb,OAAO,CAAC,SAAS,CAAS;IAC1B,eAAe,MAAO,eAAe,UAOnC;IACF,cAAc,MAAO,eAAe,UAWlC;IACF,aAAa,MAAO,eAAe,UAuBjC;CACL"} \ No newline at end of file diff --git a/types/UI/Components/BBS/BoardInfosList.d.ts b/types/UI/Components/BBS/BoardInfosList.d.ts new file mode 100644 index 0000000..ef7e848 --- /dev/null +++ b/types/UI/Components/BBS/BoardInfosList.d.ts @@ -0,0 +1,52 @@ +import React = require("react"); +import { EBoardKeyList } from "../../../Common/BoardKeyList"; +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { ObjectId } from "../../../DatabaseServices/ObjectId"; +import { ProcessingGroupRecord } from "../../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord"; +import { LinesType, BoardProcessOption } from "../../Store/BoardInterface"; +export interface IBoardInfoListProps { + className: string; + index: number; + dataBr: Board; + realBr: Board; + UpdateSeletctedBr: Function; + ModifyDataRecord: (index: number, brData: Board, modifyKey: string, value: string | LinesType | ProcessingGroupRecord[]) => void; + processGroupData: Map; + style: React.CSSProperties; + isSelect: boolean; +} +declare type GetBBSBoardInfoType = { + [P in (keyof T)]?: P extends EBoardKeyList.ProcessGroup ? ProcessingGroupRecord[] : T[P]; +}; +export interface IBoardInfoOptions extends GetBBSBoardInfoType { + Height?: string; + Width?: string; + Thickness?: string; + Name?: string; + upDrill?: string; + downDrill?: string; + leftDrill?: string; + rightDrill?: string; +} +/** + * 批量查看板件属性 列表 + */ +export declare class BoardInfoList extends React.Component { + trRef: HTMLDivElement; + isSelected: boolean; + private removeFuncs; + private option; + constructor(props: any); + componentDidMount(): void; + componentWillUnmount(): void; + UNSAFE_componentWillReceiveProps(nextProps: IBoardInfoListProps): void; + getDrillOptins(dataBr: Board, isBase?: boolean): string[]; + private isInvailKey; + render(): JSX.Element; + InitState: (board: Board) => void; + HandleOnClick: (findSameTypeBrDataKey?: string) => void; + GetBgColor: () => string; + ToggleBgColor: () => void; +} +export {}; +//# sourceMappingURL=BoardInfosList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BBS/BoardInfosList.d.ts.map b/types/UI/Components/BBS/BoardInfosList.d.ts.map new file mode 100644 index 0000000..3b0add1 --- /dev/null +++ b/types/UI/Components/BBS/BoardInfosList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardInfosList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/BBS/BoardInfosList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAKhC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AAExG,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAa,MAAM,4BAA4B,CAAC;AAWtF,MAAM,WAAW,mBAAmB;IAEhC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;IACd,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,qBAAqB,EAAE,KAAK,IAAI,CAAC;IACjI,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,mBAAmB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,YAAY,GAAG,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3F,CAAC;AAEF,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB,CAAC,kBAAkB,CAAC;IAE9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;IAEvE,KAAK,EAAE,cAAc,CAAC;IACV,UAAU,EAAE,OAAO,CAAS;IACxC,OAAO,CAAC,WAAW,CAAkB;IACzB,OAAO,CAAC,MAAM,CAAoB;gBAClC,KAAK,KAAA;IAKjB,iBAAiB;IAUjB,oBAAoB;IAMpB,gCAAgC,CAAC,SAAS,EAAE,mBAAmB;IAK/D,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,UAAQ;IAgB5C,OAAO,CAAC,WAAW;IAcZ,MAAM;IA4Ib,SAAS,UAAW,KAAK,UA0DvB;IACF,aAAa,2BAA4B,MAAM,UAK7C;IACF,UAAU,eASR;IACF,aAAa,aAIX;CACL"} \ No newline at end of file diff --git a/types/UI/Components/BBS/BoardLIst.d.ts b/types/UI/Components/BBS/BoardLIst.d.ts new file mode 100644 index 0000000..45ea6df --- /dev/null +++ b/types/UI/Components/BBS/BoardLIst.d.ts @@ -0,0 +1,35 @@ +import * as React from 'react'; +import { SortBtnData } from './BBSCommon'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { IBoardInfoOptions } from './BoardInfosList'; +import { LinesType } from '../../Store/BoardInterface'; +import { ProcessingGroupRecord } from '../../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord'; +import { ObjectId } from '../../../DatabaseServices/ObjectId'; +interface BoardData { + dataBr: Board[]; + realBr: Board[]; +} +interface IBoardListProps { + height: number; + width: number; + dragDivH: number; + searchRes: BoardData; + selectedBrOnList: Board[]; + UpdateDisplayData: (dataSource?: Board[]) => void; + isCtrlDown: boolean; + processGroupMap: Map; + modifyBoardData: Map; + UpdateSeletctedBr: (index: number, findSameTypeBrDataKey?: string) => void; + ModifyBoard: (br: Board, opts: IBoardInfoOptions) => void; +} +export declare class BoardList extends React.Component { + sortBtnData: SortBtnData[]; + private oldLeft; + render(): JSX.Element; + SortFunc: (a: number | string, b: number | string, asc: boolean) => number; + HandleSort: (btnText: string) => void; + ModifyDataMap: (index: number, brData: Board, modifyKey: string, value: string | LinesType | ProcessingGroupRecord[]) => void; + private handleScroll; +} +export {}; +//# sourceMappingURL=BoardLIst.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BBS/BoardLIst.d.ts.map b/types/UI/Components/BBS/BoardLIst.d.ts.map new file mode 100644 index 0000000..bbfd75e --- /dev/null +++ b/types/UI/Components/BBS/BoardLIst.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardLIst.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/BBS/BoardLIst.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAKvD,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAiB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AACxG,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAI9D,UAAU,SAAS;IAEf,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AAED,UAAU,eAAe;IAErB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,iBAAiB,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC;IAClD,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC/C,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E,WAAW,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC7D;AAED,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IAG/C,WAAW,EAAE,WAAW,EAAE,CAUpC;IACF,OAAO,CAAC,OAAO,CAAS;IACxB,MAAM;IAkDN,QAAQ,MAAO,MAAM,GAAG,MAAM,KAAK,MAAM,GAAG,MAAM,OAAO,OAAO,YAM9D;IAEF,UAAU,YAAa,MAAM,UAoD3B;IAEF,aAAa,UAAW,MAAM,UAAU,KAAK,aAAa,MAAM,SAAS,MAAM,GAAG,SAAS,GAAG,qBAAqB,EAAE,UA4BnH;IACF,OAAO,CAAC,YAAY,CAelB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/BBS/LookOverBoardInfos.d.ts b/types/UI/Components/BBS/LookOverBoardInfos.d.ts new file mode 100644 index 0000000..2d71905 --- /dev/null +++ b/types/UI/Components/BBS/LookOverBoardInfos.d.ts @@ -0,0 +1,72 @@ +import React = require("react"); +import { ICountType } from "../../../Add-on/LookOverBoardInfos/LookOverBoardInfosTool"; +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { ObjectId } from "../../../DatabaseServices/ObjectId"; +import { IHardwareType } from "../../../Production/Product"; +import { EFindType } from "../../Store/BoardFindInterface"; +import { IBoardInfoOptions } from "./BoardInfosList"; +interface BoardData { + dataBr: Board[]; + realBr: Board[]; +} +interface LookOverBoardInfosModalProps { + boardList: (Board | IHardwareType)[]; +} +declare class ListItemSelectEvent { + SingerSelectItemEvent(): void; +} +interface LookOverBoardInfosModalState { + dragDivH: number; +} +export declare const ListItemSelectEventEmitter: ListItemSelectEvent; +/** + * 批量查看板件属性 对话框 (bbs) + */ +export declare class LookOverBoardInfosModal extends React.Component { + dragDivH: number; + dataList: BoardData; + drillCount: ICountType[]; + hardwareCount: ICountType[]; + areaCount: ICountType[]; + sealCount: ICountType[]; + searchRes: BoardData; + searchingStr: string; + private boardDataInArray; + private removeFuncs; + modifyBoardData: Map; + selectedBrOnList: Board[]; + findSameTypeBrDataKey: string; + isCtrlDown: boolean; + processGroupMap: Map; + constructor(p: any); + UNSAFE_componentWillMount(): void; + UpdateDisplayData(dataSource?: Board[]): void; + UpdateDrillCount(brs?: (Board | IHardwareType)[]): void; + get BoardList(): Board[]; + UpdateProcessGroupData(): void; + InitWidth: () => void; + componentDidMount(): void; + componentWillUnmount(): void; + OnOk(state: number, data?: { + type: EFindType; + }): Promise; + ConvertBoardListDataToArray: () => void; + GetBrPGNamesWithNumber: (br: Board) => string[]; + SearchData: () => void; + RegxpTest: (b: string, regexpArr: RegExp[]) => boolean; + SpiltSearchStr: (str: string) => string[]; + ClearSelectedBr: () => void; + LookSelectBr: () => void; + private ClearSelect; + CheckOutSameTypeBr: (boardList: Board[]) => void; + UpdateSeletctedBr: ((index: number, findSameTypeBrDataKey?: string) => void) & import("mobx").IAction; + private CheckOutChosenBr; + private FilterBr; + ModifyBoard: (br: Board, opts: IBoardInfoOptions) => void; + Modify(): void; + CalcArea: () => string; + HandleExportCSV: () => void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=LookOverBoardInfos.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BBS/LookOverBoardInfos.d.ts.map b/types/UI/Components/BBS/LookOverBoardInfos.d.ts.map new file mode 100644 index 0000000..6b308bb --- /dev/null +++ b/types/UI/Components/BBS/LookOverBoardInfos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LookOverBoardInfos.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/BBS/LookOverBoardInfos.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAQhC,OAAO,EAAE,UAAU,EAA0B,MAAM,2DAA2D,CAAC;AAa/G,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAQ9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAO3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAarD,UAAU,SAAS;IAEf,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,EAAE,CAAC;CACnB;AACD,UAAU,4BAA4B;IAElC,SAAS,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC;CACxC;AAGD,cAAM,mBAAmB;IAGrB,qBAAqB;CAIxB;AACD,UAAU,4BAA4B;IAElC,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,eAAO,MAAM,0BAA0B,qBAA0B,CAAC;AAMlE;;GAEG;AACH,qBACa,uBAAwB,SAAQ,KAAK,CAAC,SAAS,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAEpH,QAAQ,EAAE,MAAM,CAAa;IAE7B,QAAQ,EAAE,SAAS,CAA8B;IAErC,UAAU,EAAE,UAAU,EAAE,CAAM;IAC9B,aAAa,EAAE,UAAU,EAAE,CAAM;IACjC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAM;IACpC,SAAS,EAAE,UAAU,EAAE,CAAM;IAE7B,SAAS,EAAE,SAAS,CAAiB;IAErC,YAAY,SAAM;IAE9B,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,WAAW,CAAkB;IAErC,eAAe,EAAE,GAAG,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAa;IAE/C,gBAAgB,EAAE,KAAK,EAAE,CAAM;IAE/B,qBAAqB,EAAE,MAAM,CAAC;IAE9B,UAAU,EAAE,OAAO,CAAS;IACxC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAa;gBAEzC,CAAC,KAAA;IAOb,yBAAyB;IAMzB,iBAAiB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE;IAQtC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,EAAE;IAShD,IAAI,SAAS,IAAI,KAAK,EAAE,CAGvB;IACD,sBAAsB;IA8DtB,SAAS,aAeP;IAEF,iBAAiB;IAqFjB,oBAAoB;IAMd,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;KAAE;IAkCrD,2BAA2B,aAkHzB;IAEF,sBAAsB,OAAQ,KAAK,cAkCjC;IAKF,UAAU,aAwBR;IAEF,SAAS,MAAO,MAAM,aAAa,MAAM,EAAE,aAUzC;IAEF,cAAc,QAAS,MAAM,cAY3B;IAKF,eAAe,aAKb;IACF,YAAY,aAGV;IAGF,OAAO,CAAC,WAAW,CAKjB;IAEF,kBAAkB,cAAe,KAAK,EAAE,UAUtC;IAEF,iBAAiB,WAAkB,MAAM,0BAA0B,MAAM,oCA2BtE;IAEH,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,QAAQ,CAwFd;IACF,WAAW,OAAQ,KAAK,QAAQ,iBAAiB,UAwE/C;IAEF,MAAM;IAWN,QAAQ,eAMN;IAEF,eAAe,aA8Cb;IAKF,MAAM;CA8HT"} \ No newline at end of file diff --git a/types/UI/Components/Board/BehindBoardModal.d.ts b/types/UI/Components/Board/BehindBoardModal.d.ts new file mode 100644 index 0000000..86ee2a5 --- /dev/null +++ b/types/UI/Components/Board/BehindBoardModal.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { BehindBoardStore } from '../../Store/BoardStore'; +export declare class BehindBoardModal extends React.Component<{ + store?: BehindBoardStore; +}, {}> { + private m_ScaleParameter; + private moveDir; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=BehindBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BehindBoardModal.d.ts.map b/types/UI/Components/Board/BehindBoardModal.d.ts.map new file mode 100644 index 0000000..b949dc8 --- /dev/null +++ b/types/UI/Components/Board/BehindBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BehindBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BehindBoardModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAAE,EAAE,EAAE,CAAC;IAEpF,OAAO,CAAC,gBAAgB,CAGtB;IACU,OAAO,CAAC,OAAO,CAAQ;IACnC,yBAAyB;IAUzB,MAAM;CAkHT"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardCommon.d.ts b/types/UI/Components/Board/BoardCommon.d.ts new file mode 100644 index 0000000..d9a89e8 --- /dev/null +++ b/types/UI/Components/Board/BoardCommon.d.ts @@ -0,0 +1,135 @@ +import * as React from 'react'; +import { CheckObjectType } from '../../../Common/CheckoutVaildValue'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { BoardConfigOption, IBaseOption, BoardProcessOption, BrRelativePos, TBBoardOption, IHightDrillOption, AnyObject, IUiOption, IDrawBoardAutoCutOption } from '../../Store/BoardInterface'; +export interface ISetItemOption { + type: CheckObjectType; + optKey: string; + title?: string; + option: AnyObject; + /**不传将默认属性允许为字符串类型 */ + uiOption?: IUiOption; + isDisabled?: boolean; + placeHolder?: string; + onChange?: (e: any, ...arg: any[]) => void; + inline?: boolean; + className?: string; + onBlur?(e?: any): any; /**输入框失去焦点触发 */ + onFocus?(e?: any): any; /**输入框获得焦点触发 */ + maxLength?: number; + inputRef?: (el: any) => void; + update?(): any; + mounted?(): any; /**组件挂载完成触发 */ + isUpper?: boolean; + tip?: string; + titleStyle?: React.CSSProperties; +} +interface ISetBlockOption { + type: CheckObjectType; + pars: Array>; + option: IBaseOption; + uiOption?: Object; + className?: string; + isInline?: boolean; + onChange?: (e: any, ...arg: any[]) => void; + disabled?: boolean; + children?: React.ReactNode; +} +interface TBProps { + pars: string[][]; + option: TBBoardOption; + uiOption: Object; + istop: boolean; +} +export declare class SetBoardDataItem extends React.Component { + componentDidMount(): void; + componentDidUpdate(): void; + render(): JSX.Element; +} +export declare const SetBoardDataBlock: (props: ISetBlockOption) => JSX.Element; +export declare const TBBoardDataBlock: (props: TBProps) => JSX.Element; +export declare const BoardDirectionIcon: () => JSX.Element; +declare type ISpaceProps = { + calcSpaceSize: string; + spaceSize?: number; + count?: number; + thickness?: number; + boardRelative?: BrRelativePos; +}; +interface BroadPosProps { + uiOption: IUiOption; + option: ISpaceProps; + posPars: [BrRelativePos, string][]; +} +export declare class BoardRePosBlock extends React.Component { + private pars; + private spaceSizeInputEl; + private countInputEl; + private updateFocus; + private handleChangePos; + componentDidMount(): void; + render(): JSX.Element; +} +export declare class Notes extends React.Component<{ + remarks: [string, string][]; +}> { + render(): JSX.Element; +} +export declare const ItemName: ({ title, opt, className }: { + title: string; + opt: { + name: string; + }; + className?: string; +}) => JSX.Element; +export declare const BoardTypeComponent: (data: { + opt?: BoardConfigOption; + className?: string; +}) => JSX.Element; +interface I5InputComponent extends ISetItemOption { + showDirectionIcon: boolean; + hasCenter: boolean; + upKey: string; + downKey: string; + leftKey: string; + rightKey: string; + centerKey?: string; + isShowEditor?: boolean; + highDrillOption?: IHightDrillOption; +} +/** + * 一圈输入框 + */ +export declare class Input5Or4Component extends React.Component { + render(): JSX.Element; +} +interface IDrillTypeSelect { + opt: BoardProcessOption; + br: Board; + isShowHigh?: boolean; + onFocus?: Function; + drillOption: IHightDrillOption; +} +export declare class DrillTypeSelectCom extends React.Component { + constructor(props: any); + get Options(): string[]; + private editorDrilling; + private handleChange; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +interface IAutoCutCheckboxProps { + autoCutOption: IDrawBoardAutoCutOption; + isFlex?: boolean; +} +export declare class AutoCutCheckbox extends React.Component { + static defaultProps: { + isFlex: boolean; + }; + ToggleValue: (type: number) => void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=BoardCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardCommon.d.ts.map b/types/UI/Components/Board/BoardCommon.d.ts.map new file mode 100644 index 0000000..1d07603 --- /dev/null +++ b/types/UI/Components/Board/BoardCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardCommon.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardCommon.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardConfigModal.d.ts b/types/UI/Components/Board/BoardConfigModal.d.ts new file mode 100644 index 0000000..a1107c5 --- /dev/null +++ b/types/UI/Components/Board/BoardConfigModal.d.ts @@ -0,0 +1,35 @@ +import { IObservableValue } from "mobx"; +import * as React from 'react'; +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { BoardConfigOption, BoardProcessOption, IGrooveOption, IUiOption } from '../../Store/BoardInterface'; +interface BoardConfigProps { + boardConfig: BoardConfigOption; + boardProcess: BoardProcessOption; + br: Board; + canDrawSpeical: IObservableValue; + canModeling: IObservableValue; + grooveOption: IGrooveOption; + uiBoardConfig: IUiOption; +} +export declare class BoardConfigModal extends React.Component { + private pars; + private groovePars; + private processPars; + private rotatePars; + constructor(props: any); + componentWillUnmount(): void; + render(): JSX.Element; + /** + * 提取 + */ + private PickUpModelingOutline; + PickUpModelingOutline2: () => Promise; + PickUpModelingOutline3: () => Promise; + private ChangeModeling; + private ChangeModeling2; + private AddModeling; + private AddModeling2; + private ChangeModeling3; +} +export {}; +//# sourceMappingURL=BoardConfigModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardConfigModal.d.ts.map b/types/UI/Components/Board/BoardConfigModal.d.ts.map new file mode 100644 index 0000000..3e91c18 --- /dev/null +++ b/types/UI/Components/Board/BoardConfigModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardConfigModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardConfigModal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,KAAK,EAAuC,MAAM,wCAAwC,CAAC;AAUpG,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAiB,aAAa,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAiB5H,UAAU,gBAAgB;IAEtB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,kBAAkB,CAAC;IACjC,EAAE,EAAE,KAAK,CAAC;IACV,cAAc,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,YAAY,EAAE,aAAa,CAAC;IAC5B,aAAa,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;CAC/C;AAID,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;IACvE,OAAO,CAAC,IAAI,CACV;IACF,OAAO,CAAC,UAAU,CAEhB;IACF,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,UAAU,CAEhB;gBACU,KAAK,KAAA;IAIjB,oBAAoB;IAIpB,MAAM;IAmGN;;GAED;IACC,OAAO,CAAC,qBAAqB,CAkE3B;IACF,sBAAsB,sBA4CpB;IACF,sBAAsB,sBAsFpB;IACF,OAAO,CAAC,cAAc,CA6FpB;IACF,OAAO,CAAC,eAAe,CA8ErB;IACF,OAAO,CAAC,WAAW,CA2CjB;IACF,OAAO,CAAC,YAAY,CA4ClB;IACF,OAAO,CAAC,eAAe,CAsErB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardFindCommon.d.ts b/types/UI/Components/Board/BoardFindCommon.d.ts new file mode 100644 index 0000000..7b28576 --- /dev/null +++ b/types/UI/Components/Board/BoardFindCommon.d.ts @@ -0,0 +1,53 @@ +import * as React from 'react'; +import { IBoardFindOption } from '../../Store/BoardFindInterface'; +import { IUpdateBoardInfosOption } from './UpdateBoardInfointerface'; +import { UpdateBoardInfosStore } from '../../Store/UpdateBoardInfoStore'; +import { BoardFindStore } from '../../Store/BoardFindModifyStore'; +export interface IBoardProps { + k: string; + useKey?: string; + option: IBoardFindOption; + title: string; + isCompare?: boolean; + hasTolerance: boolean; + isLayer?: boolean; + isSmall?: boolean; + checkChange?(): any; + onClick?(...args: any[]): any; +} +export declare class BoardFindItem extends React.Component { + render(): JSX.Element; +} +export interface IFindSelectItem { + k: string; + useKey?: string; + option: IBoardFindOption; + title: string; + selectOption: any[]; + checkChange?(): any; +} +export declare class BoardFindSelectItem extends React.Component { + render(): JSX.Element; +} +interface IMatColorComProps { + option: IBoardFindOption | IUpdateBoardInfosOption; + getBoardOption: () => void; + change?: () => void; + hasCompare: boolean; +} +export declare class MatColorCom extends React.Component { + showShops: import("mobx").IObservableValue; + render(): JSX.Element; + private handleSelectGoods; +} +interface ISealDrillProps { + store: UpdateBoardInfosStore | BoardFindStore; + onChange?: () => void; + selectOptions: string[]; +} +export declare class SealDrillCom extends React.Component { + render(): JSX.Element; + private handleSelectAllDrillOrSeal; +} +export {}; +//# sourceMappingURL=BoardFindCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardFindCommon.d.ts.map b/types/UI/Components/Board/BoardFindCommon.d.ts.map new file mode 100644 index 0000000..5454196 --- /dev/null +++ b/types/UI/Components/Board/BoardFindCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardFindCommon.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardFindCommon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAA4B,MAAM,gCAAgC,CAAC;AAE5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAIrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,MAAM,WAAW,WAAW;IAExB,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,QAAG;IACf,OAAO,CAAC,CAAC,GAAG,IAAI,OAAA,OAAE;CACrB;AAED,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;IACxD,MAAM;CAiDhB;AAED,MAAM,WAAW,eAAe;IAE5B,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,WAAW,CAAC,QAAG;CAClB;AACD,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAClE,MAAM;CAuChB;AAGD,UAAU,iBAAiB;IAEvB,MAAM,EAAE,gBAAgB,GAAG,uBAAuB,CAAC;IACnD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAE/D,SAAS,2CAAyB;IAClC,MAAM;IA+EN,OAAO,CAAC,iBAAiB,CAOvB;CACL;AAED,UAAU,eAAe;IAErB,KAAK,EAAE,qBAAqB,GAAG,cAAc,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAGD,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IAE9D,MAAM;IAmMN,OAAO,CAAC,0BAA0B,CA0BhC;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardFindModify.d.ts b/types/UI/Components/Board/BoardFindModify.d.ts new file mode 100644 index 0000000..caa2057 --- /dev/null +++ b/types/UI/Components/Board/BoardFindModify.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { BoardFindStore } from '../../Store/BoardFindModifyStore'; +interface IBoardFindState { + userInputName: string; +} +export default class BoardFindModifyModal extends React.Component<{ + store?: BoardFindStore; +}, IBoardFindState> { + _brNameList: [string, boolean][]; + private showShops; + constructor(props: any); + private handleSelectAll; + private handleReverseSelect; + private handleSelectAllDrillOrSeal; + private handleIsSelectAll; + private getBoardOption; + private handleApplyBrName; + private handleSelectGoods; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=BoardFindModify.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardFindModify.d.ts.map b/types/UI/Components/Board/BoardFindModify.d.ts.map new file mode 100644 index 0000000..a84d62b --- /dev/null +++ b/types/UI/Components/Board/BoardFindModify.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardFindModify.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardFindModify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAelE,UAAU,eAAe;IAErB,aAAa,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC;CAAE,EAAE,eAAe,CAAC;IAC/F,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAG1C;IACF,OAAO,CAAC,SAAS,CAAyB;gBAC9B,KAAK,KAAA;IAOjB,OAAO,CAAC,eAAe,CAUrB;IACF,OAAO,CAAC,mBAAmB,CAUzB;IACF,OAAO,CAAC,0BAA0B,CAchC;IACF,OAAO,CAAC,iBAAiB,CAGvB;YACY,cAAc;IAQ5B,OAAO,CAAC,iBAAiB,CAYvB;IACF,OAAO,CAAC,iBAAiB,CAOvB;IACF,MAAM;CA0YT"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardModal.d.ts b/types/UI/Components/Board/BoardModal.d.ts new file mode 100644 index 0000000..016dda1 --- /dev/null +++ b/types/UI/Components/Board/BoardModal.d.ts @@ -0,0 +1,52 @@ +import * as React from 'react'; +import { BoardStore } from '../../Store/BoardStore'; +export declare enum BoardModalType { + LR = "lr", + TB = "tb", + Be = "be", + Ly = "ly", + Ve = "ve", + Sg = "sg", + Skt = "skt", + Dr = "dr", + Zx = "zx", + Mb = "mb", + Find = "findBr", + JG = "jg", + Lat = "lattice", + TempDes = "templatedesign", + ProcessGroupCategory = "processgroupcategory", + Ct = "drawer", + ActLr = "activelr", + CompMetals = "compmetals", + ToplineMetals = "toplinemetals", + UserConfig = "userConfig", + Curves2Rec = "curves2rec", + Rec2Br = "rec2br", + SmoothEdge = "smoothEdge", + UpdateBoardInfo = "updateboardinfo", + YX = "yixing", + R2WR = "R2WR", + ZX2 = "vmodeling", + ZX3 = "3dmodeling", + R2B2 = "R2B2" +} +export interface BoardModalProps { + type: BoardModalType; + store: BoardStore; +} +/** +* 板件模态框父组件 +*/ +export declare class BoardModal extends React.Component { + private event; + private isAutoCut_backup; + constructor(props: BoardModalProps); + renderBoardModal: () => JSX.Element; + registerEvent(): void; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private confirm; +} +//# sourceMappingURL=BoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardModal.d.ts.map b/types/UI/Components/Board/BoardModal.d.ts.map new file mode 100644 index 0000000..05dbcf5 --- /dev/null +++ b/types/UI/Components/Board/BoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAoB,UAAU,EAAiH,MAAM,wBAAwB,CAAC;AAerL,oBAAY,cAAc;IAEtB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,IAAI,WAAW;IACf,EAAE,OAAO;IACT,GAAG,YAAY;IACf,OAAO,mBAAmB;IAC1B,oBAAoB,yBAAyB;IAC7C,EAAE,WAAW;IACb,KAAK,aAAa;IAClB,UAAU,eAAe;IACzB,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,eAAe,oBAAoB;IACnC,EAAE,WAAW;IACb,IAAI,SAAS;IACb,GAAG,cAAc;IACjB,GAAG,eAAe;IAClB,IAAI,SAAS;CAChB;AACD,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED;;EAEE;AACF,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAEhE,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,gBAAgB,CAAU;gBACtB,KAAK,EAAE,eAAe;IAIlC,gBAAgB,oBAsBd;IACF,aAAa;IAyBb,yBAAyB;IAMzB,oBAAoB;IAKpB,MAAM;IAiEN,OAAO,CAAC,OAAO,CAcb;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardOptionModal.d.ts b/types/UI/Components/Board/BoardOptionModal.d.ts new file mode 100644 index 0000000..aa5ee10 --- /dev/null +++ b/types/UI/Components/Board/BoardOptionModal.d.ts @@ -0,0 +1,69 @@ +import * as React from 'react'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +export declare const BoardOptionModal: { + new (props: any): { + _ConfigOption: import("../../Store/BoardInterface").SingleBoardOption; + _ProcessOption: import("../../Store/BoardInterface").BoardProcessOption; + _GrooveOption: import("../../Store/BoardInterface").IGrooveOption; + drillsOption: import("../../../Add-on/DrawDrilling/HoleUtils").IRectHoleOption; + _CurrentBoard: import("mobx").IObservableValue; + _IsSpecialBoard: import("mobx").IObservableValue; + canDrawSpecial: import("mobx").IObservableValue; + canModeling: import("mobx").IObservableValue; + remarks: [string, string][]; + otherBoardData: { + isChaiDan: boolean; + } & import("mobx").IObservableObject; + _UIConfigOPtion: import("../../Store/BoardInterface").IUiOption; + readonly CurrentBoard: Board; + render(): JSX.Element; + setBrConfig: (() => void) & import("mobx").IAction; + InitRectBoardDrillOption: (() => void) & import("mobx").IAction; + SetRectHighDrill: () => void; + handleComfirmOption: () => void; + handleChangeCurrentBoard: (br: Board) => void; + context: any; + setState(state: {} | ((prevState: Readonly<{}>, props: Readonly<{ + board: Board; + }>) => {} | Pick<{}, K>) | Pick<{}, K>, callback?: () => void): void; + forceUpdate(callback?: () => void): void; + readonly props: Readonly<{ + board: Board; + }> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + componentDidMount?(): void; + shouldComponentUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): boolean; + componentWillUnmount?(): void; + componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; + getSnapshotBeforeUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>): any; + componentDidUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>, snapshot?: any): void; + componentWillMount?(): void; + UNSAFE_componentWillMount?(): void; + componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + }; + displayName: string; + contextType?: React.Context; +}; +//# sourceMappingURL=BoardOptionModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardOptionModal.d.ts.map b/types/UI/Components/Board/BoardOptionModal.d.ts.map new file mode 100644 index 0000000..f1ae7ea --- /dev/null +++ b/types/UI/Components/Board/BoardOptionModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardOptionModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardOptionModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAiG/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAsC,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/BoardProcessModal.d.ts b/types/UI/Components/Board/BoardProcessModal.d.ts new file mode 100644 index 0000000..2ce0ab9 --- /dev/null +++ b/types/UI/Components/Board/BoardProcessModal.d.ts @@ -0,0 +1,34 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { BoardProcessOption, IHightDrillOption } from '../../Store/BoardInterface'; +import "../Modal/ModalStyle/BoardProcessModal.less"; +interface BoardProcessProps { + opt: BoardProcessOption; + isSpecial?: IObservableValue; + br?: Board; + drillOption?: IHightDrillOption; + otherBoardData?: { + [key: string]: any; + }; +} +export declare class BoardProcessModal extends React.Component { + private showShops; + private showAlert; + private tags; + private container; + private matPars; + private editorEdgeSealing; + private renderEl; + private getOption; + private selectGoods; + private onProcessInputDbClick; + private onAlertConfirm; + private IsWineRackORLattice; + private updateTags; + UNSAFE_componentWillMount(): Promise; + componentDidMount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=BoardProcessModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/BoardProcessModal.d.ts.map b/types/UI/Components/Board/BoardProcessModal.d.ts.map new file mode 100644 index 0000000..bd178e7 --- /dev/null +++ b/types/UI/Components/Board/BoardProcessModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardProcessModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/BoardProcessModal.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAQ/D,OAAO,EAAE,kBAAkB,EAAiB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAElG,OAAO,4CAA4C,CAAC;AAKpD,UAAU,iBAAiB;IAEvB,GAAG,EAAE,kBAAkB,CAAC;IACxB,SAAS,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACtC,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,cAAc,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE,CAAC;CAC5C;AACD,qBACa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzE,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAyB;IAC9B,OAAO,CAAC,IAAI,CAAgB;IACxC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAEb;IACF,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,QAAQ,CAiCd;IACF,OAAO,CAAC,SAAS,CAiBf;IACF,OAAO,CAAC,WAAW,CAejB;IACF,OAAO,CAAC,qBAAqB,CAG3B;IACF,OAAO,CAAC,cAAc,CAcpB;IACF,OAAO,CAAC,mBAAmB,CAQzB;IACF,OAAO,CAAC,UAAU,CA0BhB;IACI,yBAAyB;IAI/B,iBAAiB;IAIjB,MAAM;CAgNT"} \ No newline at end of file diff --git a/types/UI/Components/Board/ClosingStripModal.d.ts b/types/UI/Components/Board/ClosingStripModal.d.ts new file mode 100644 index 0000000..9ef5f7d --- /dev/null +++ b/types/UI/Components/Board/ClosingStripModal.d.ts @@ -0,0 +1,5 @@ +import { ClosingStripStore } from '../../Store/BoardStore'; +export declare const ClosingStripModal: (props: { + store?: ClosingStripStore; +}) => JSX.Element; +//# sourceMappingURL=ClosingStripModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/ClosingStripModal.d.ts.map b/types/UI/Components/Board/ClosingStripModal.d.ts.map new file mode 100644 index 0000000..f237341 --- /dev/null +++ b/types/UI/Components/Board/ClosingStripModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ClosingStripModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/ClosingStripModal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAS3D,eAAO,MAAM,iBAAiB,UACR;IAAE,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAAE,gBAoE7C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/CommonBoardOption.d.ts b/types/UI/Components/Board/CommonBoardOption.d.ts new file mode 100644 index 0000000..65c33b8 --- /dev/null +++ b/types/UI/Components/Board/CommonBoardOption.d.ts @@ -0,0 +1,92 @@ +import * as React from 'react'; +import { Board } from '../../../DatabaseServices/Entity/Board'; +import { BoardProcessOption, IGrooveOption, SingleBoardOption, IUiOption } from '../../Store/BoardInterface'; +import { IObservableValue } from 'mobx'; +import { IRectHoleOption } from '../../../Add-on/DrawDrilling/HoleUtils'; +export interface ICommonOptionProps { + _CurrentBoard: IObservableValue; + setBrConfig?: () => void; + handleComfirmOption?: () => void; + _ConfigOption?: SingleBoardOption; + _ProcessOption?: BoardProcessOption; + _GrooveOption?: IGrooveOption; + drillsOption?: IRectHoleOption; + canDrawSpecial?: IObservableValue; + canModeling?: IObservableValue; + _IsSpecialBoard?: IObservableValue; + otherBoardData: { + [key: string]: any; + }; + handleChangeCurrentBoard?: (br: Board) => void; + uiConfigOption?: IUiOption; + remarks?: [string, string][]; +} +export declare function AddCommonBoardProps(Com: React.ComponentType): { + new (props: any): { + _ConfigOption: SingleBoardOption; + _ProcessOption: BoardProcessOption; + _GrooveOption: IGrooveOption; + drillsOption: IRectHoleOption; + _CurrentBoard: IObservableValue; + _IsSpecialBoard: IObservableValue; + canDrawSpecial: IObservableValue; + canModeling: IObservableValue; + remarks: [string, string][]; + otherBoardData: { + isChaiDan: boolean; + } & import("mobx").IObservableObject; + _UIConfigOPtion: IUiOption; + readonly CurrentBoard: Board; + render(): JSX.Element; + setBrConfig: (() => void) & import("mobx").IAction; + InitRectBoardDrillOption: (() => void) & import("mobx").IAction; + SetRectHighDrill: () => void; + handleComfirmOption: () => void; + handleChangeCurrentBoard: (br: Board) => void; + context: any; + setState(state: {} | ((prevState: Readonly<{}>, props: Readonly<{ + board: Board; + }>) => {} | Pick<{}, K>) | Pick<{}, K>, callback?: () => void): void; + forceUpdate(callback?: () => void): void; + readonly props: Readonly<{ + board: Board; + }> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + componentDidMount?(): void; + shouldComponentUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): boolean; + componentWillUnmount?(): void; + componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; + getSnapshotBeforeUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>): any; + componentDidUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>, snapshot?: any): void; + componentWillMount?(): void; + UNSAFE_componentWillMount?(): void; + componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + }; + displayName: string; + contextType?: React.Context; +}; +export declare function InitRectBoardDrillOption(br: Board, option: IRectHoleOption): void; +export declare function SetRectHighDrill(br: Board, option: IRectHoleOption): void; +//# sourceMappingURL=CommonBoardOption.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/CommonBoardOption.d.ts.map b/types/UI/Components/Board/CommonBoardOption.d.ts.map new file mode 100644 index 0000000..149ecf5 --- /dev/null +++ b/types/UI/Components/Board/CommonBoardOption.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommonBoardOption.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/CommonBoardOption.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAI/D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAa,MAAM,4BAA4B,CAAC;AAExH,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAGxC,OAAO,EAA2B,eAAe,EAAmB,MAAM,wCAAwC,CAAC;AAEnH,MAAM,WAAW,kBAAkB;IAE/B,aAAa,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,cAAc,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE,CAAC;IACxC,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/C,cAAc,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAChC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC;;uBAKlD,iBAAiB;wBAGhB,kBAAkB;uBAGnB,aAAa;sBAMd,eAAe;uBAMd,iBAAiB,KAAK,CAAC;;;;iBAI7B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;;;;yBAEV,UAAU,iBAAiB,CAAC;;;;;;;uCAqMb,KAAK;;;mBAhOF,KAAK;;;;mBAAL,KAAK;;;;;;;;;;mBAAL,KAAK;;;;;mBAAL,KAAK;;;mBAAL,KAAK;;;;;mBAAL,KAAK;;;mBAAL,KAAK;;;mBAAL,KAAK;;;mBAAL,KAAK;;;;;EAuOtD;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAG1E;AACD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,QAGlE"} \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorCommon.d.ts b/types/UI/Components/Board/Door/DoorCommon.d.ts new file mode 100644 index 0000000..fdb8e60 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorCommon.d.ts @@ -0,0 +1,31 @@ +import * as React from 'react'; +import { IDrawerConfigOption, IDoorConfigOption } from '../../../Store/DoorInterface'; +import { IUiOption } from '../../../Store/BoardInterface'; +import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; +export interface IUpDownSpaceComponentProps { + store: DoorDrawerStore; + uiOption: IUiOption; +} +export declare class UpDownSpaceComponent extends React.Component { + private isLockDown; + isLockUp: boolean; + componentWillMount(): void; + render(): JSX.Element; + private handleTBOffset; + private handleTBOffsetBlur; + private handleChangePosition; +} +interface IChangeDoorOrDrawerPosition extends IUpDownSpaceComponentProps { + isDoor: boolean; + handleDrawerDepth(): any; +} +export declare class ChangeDoorOrDrawerPosition extends React.Component { + render(): JSX.Element; + private handleChangeDoorPosType; +} +export declare class DoorDrawerRowCol extends React.Component { + render(): JSX.Element; + private toggleSelected; +} +export {}; +//# sourceMappingURL=DoorCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorCommon.d.ts.map b/types/UI/Components/Board/Door/DoorCommon.d.ts.map new file mode 100644 index 0000000..63889a1 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorCommon.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Board/Door/DoorCommon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAe,MAAM,8BAA8B,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAQjF,MAAM,WAAW,0BAA0B;IAEvC,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;CAChE;AAED,qBACa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC;IACrE,OAAO,CAAC,UAAU,CAAQ;IAC1B,QAAQ,UAAS;IAC7B,kBAAkB;IAMX,MAAM;IAgDb,OAAO,CAAC,cAAc,CAIpB;IACF,OAAO,CAAC,kBAAkB,CA+CxB;IACF,OAAO,CAAC,oBAAoB,CAiB1B;CACL;AAGD,UAAU,2BAA4B,SAAQ,0BAA0B;IAEpE,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,QAAG;CACvB;AAED,qBACa,0BAA2B,SAAQ,KAAK,CAAC,SAAS,CAAC,2BAA2B,EAAE,EAAE,CAAC;IAE5F,MAAM;IAqEN,OAAO,CAAC,uBAAuB,CAmC7B;CACL;AAED,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC;IAE7E,MAAM;IAgDN,OAAO,CAAC,cAAc,CASpB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorConfigModal.d.ts b/types/UI/Components/Board/Door/DoorConfigModal.d.ts new file mode 100644 index 0000000..43ff2e0 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorConfigModal.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; +export declare class DoorConfigModal extends React.Component<{ + store?: DoorDrawerStore; +}> { + private uiOption; + private isDoor; + private handleDrawerDepth; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=DoorConfigModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorConfigModal.d.ts.map b/types/UI/Components/Board/Door/DoorConfigModal.d.ts.map new file mode 100644 index 0000000..0b3f077 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorConfigModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorConfigModal.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Board/Door/DoorConfigModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AASjF,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAE9E,OAAO,CAAC,QAAQ,CAAqD;IACrE,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,iBAAiB,CAOvB;IACF,yBAAyB;IAKzB,MAAM;CAoNT"} \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorModal.d.ts b/types/UI/Components/Board/Door/DoorModal.d.ts new file mode 100644 index 0000000..a8e5fbf --- /dev/null +++ b/types/UI/Components/Board/Door/DoorModal.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { BoardModalType } from '../BoardModal'; +import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; +export declare class DoorModal extends React.Component<{ + store: DoorDrawerStore; + type: BoardModalType; +}, {}> { + private startSelect; + UNSAFE_componentWillMount(): void; + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private startSelectTemplate; + private changeTemplateProps; + private clearSelectTemplateInfo; +} +//# sourceMappingURL=DoorModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorModal.d.ts.map b/types/UI/Components/Board/Door/DoorModal.d.ts.map new file mode 100644 index 0000000..71261b9 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorModal.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Board/Door/DoorModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAcjF,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;CAAE,EAAE,EAAE,CAAC;IAEjG,OAAO,CAAC,WAAW,CAAyB;IAC5C,yBAAyB;IAKzB,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAiBjB,oBAAoB;IAQpB,MAAM;IA6FN,OAAO,CAAC,mBAAmB,CAGzB;IACF,OAAO,CAAC,mBAAmB,CAazB;IACF,OAAO,CAAC,uBAAuB,CAiB7B;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts b/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts new file mode 100644 index 0000000..17f5b63 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; +export declare class DoorPreviewComponent extends React.Component<{ + store?: DoorDrawerStore; +}> { + componentDidMount(): void; + renderRowInfo: () => React.ReactNode[]; + renderColInfo: () => React.ReactNode[]; + render(): JSX.Element; + private handleCheck; + private handleChange; +} +//# sourceMappingURL=DoorPreviewComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts.map b/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts.map new file mode 100644 index 0000000..645a755 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorPreviewComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorPreviewComponent.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Board/Door/DoorPreviewComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAUjF,qBACa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAEnF,iBAAiB;IAcjB,aAAa,0BAyDX;IACF,aAAa,0BAwDX;IACF,MAAM;IA2DN,OAAO,CAAC,WAAW,CAyDjB;IACF,OAAO,CAAC,YAAY,CAclB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorPreviewItem.d.ts b/types/UI/Components/Board/Door/DoorPreviewItem.d.ts new file mode 100644 index 0000000..7eac293 --- /dev/null +++ b/types/UI/Components/Board/Door/DoorPreviewItem.d.ts @@ -0,0 +1,30 @@ +import * as React from 'react'; +import { DoorDrawerStore } from '../../../Store/DoorDrawerStore/DoorDrawerStore'; +import { IDoorInfo } from "../../../Store/DoorInterface"; +interface IDoorPreviewItemProps { + store: DoorDrawerStore; + info: IDoorInfo; + doorCom?: any; + onDbClick?: () => void; + handleChange: (e: React.ChangeEvent, info: IDoorInfo) => void; + handleCheck: (e: React.FocusEvent, info: IDoorInfo) => void; +} +export declare class DoorPreviewLgItem extends React.Component { + render(): JSX.Element; +} +export declare class DoorPreviewSmItem extends React.Component { + render(): JSX.Element; +} +export declare class DoorPreviewItem extends React.Component { + private timeId; + isOpen: boolean; + render(): JSX.Element; + private RenderRadiusOption; + private RenderInputAndLock; + private handleMouseDown; + private handleKeydown; + private handleCheck; + private handleChange; +} +export {}; +//# sourceMappingURL=DoorPreviewItem.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Door/DoorPreviewItem.d.ts.map b/types/UI/Components/Board/Door/DoorPreviewItem.d.ts.map new file mode 100644 index 0000000..935477b --- /dev/null +++ b/types/UI/Components/Board/Door/DoorPreviewItem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorPreviewItem.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Board/Door/DoorPreviewItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,OAAO,EAAe,SAAS,EAAe,MAAM,8BAA8B,CAAC;AAEnF,UAAU,qBAAqB;IAE3B,KAAK,EAAE,eAAe,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9D,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CAC/D;AAaD,qBACa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;IAE7E,MAAM;CAmET;AAGD,qBACa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;IAE7E,MAAM;CA8CT;AAED,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;IAC3E,OAAO,CAAC,MAAM,CAAiB;IACnB,MAAM,UAAS;IAC3B,MAAM;IA0DN,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,kBAAkB;IAkD1B,OAAO,CAAC,eAAe,CAWrB;IACF,OAAO,CAAC,aAAa,CAOnB;IACF,OAAO,CAAC,WAAW,CAIjB;IACF,OAAO,CAAC,YAAY,CAIlB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/DrillCommon.d.ts b/types/UI/Components/Board/DrillCommon.d.ts new file mode 100644 index 0000000..22d96d5 --- /dev/null +++ b/types/UI/Components/Board/DrillCommon.d.ts @@ -0,0 +1,33 @@ +import { IOptionProps } from '@blueprintjs/core'; +import * as React from 'react'; +import { DrillStore } from '../../Store/DrillStore'; +export declare class DrillTypeCom extends React.Component<{ + store: DrillStore; +}, { + typeName: string; +}> { + constructor(props: any); + private addDrillType; + private handleOnChange; + private handleDelete; + private handleUpdate; + private renderRadiosType; + private renderSelectType; + render(): JSX.Element; +} +export declare class SelectDrillTemp extends React.Component<{ + store: DrillStore; +}, {}> { + drillingTempList: IOptionProps[]; + drillingDirList: IOptionProps[]; + private _dirCache; + private _fun; + UNSAFE_componentWillMount(): Promise; + componentWillUnmount(): void; + render(): JSX.Element; + private getTempList; + private getDirList; + private handleChangeDirs; + private handleChangeTemp; +} +//# sourceMappingURL=DrillCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/DrillCommon.d.ts.map b/types/UI/Components/Board/DrillCommon.d.ts.map new file mode 100644 index 0000000..30a5e1f --- /dev/null +++ b/types/UI/Components/Board/DrillCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillCommon.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/DrillCommon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2C,YAAY,EAAoD,MAAM,mBAAmB,CAAC;AAG5I,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;CAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;CAAE,CAAC;gBAEhF,KAAK,KAAA;IAOjB,OAAO,CAAC,YAAY,CAKlB;IACF,OAAO,CAAC,cAAc,CAKpB;IACF,OAAO,CAAC,YAAY,CAUlB;IACF,OAAO,CAAC,YAAY,CAKjB;IACH,OAAO,CAAC,gBAAgB,CActB;IACF,OAAO,CAAC,gBAAgB,CAYtB;IACF,MAAM;CA6CT;AAED,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;CAAE,EAAE,EAAE,CAAC;IAEhE,gBAAgB,EAAE,YAAY,EAAE,CAAM;IACtC,eAAe,EAAE,YAAY,EAAE,CAAM;IACjD,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,IAAI,CAAW;IACjB,yBAAyB;IAY/B,oBAAoB;IAQpB,MAAM;IAsCN,OAAO,CAAC,WAAW,CAuBjB;IACF,OAAO,CAAC,UAAU,CA6BhB;IACF,OAAO,CAAC,gBAAgB,CAMtB;IACF,OAAO,CAAC,gBAAgB,CAMtB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/DrillRules.d.ts b/types/UI/Components/Board/DrillRules.d.ts new file mode 100644 index 0000000..4869beb --- /dev/null +++ b/types/UI/Components/Board/DrillRules.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +import { DrillStore } from '../../Store/DrillStore'; +export declare class DrillRulesComponent extends React.Component<{ + store?: DrillStore; +}, {}> { + render(): JSX.Element; + private writeRule; +} +//# sourceMappingURL=DrillRules.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/DrillRules.d.ts.map b/types/UI/Components/Board/DrillRules.d.ts.map new file mode 100644 index 0000000..14ef77a --- /dev/null +++ b/types/UI/Components/Board/DrillRules.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillRules.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/DrillRules.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;CAAE,EAAE,EAAE,CAAC;IACjF,MAAM;IA+DN,OAAO,CAAC,SAAS,CAaf;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/GangDrillModal.d.ts b/types/UI/Components/Board/GangDrillModal.d.ts new file mode 100644 index 0000000..e348331 --- /dev/null +++ b/types/UI/Components/Board/GangDrillModal.d.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { DrillStore } from '../../Store/DrillStore'; +export declare class DrillModal extends React.Component<{ + store?: DrillStore; +}, {}> { + private posPars; + private posPars2; + private holePars; + private drillPars; + private event; + registerEvent(): void; + private saveAndDrilling; + private ok; + private cancel; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=GangDrillModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/GangDrillModal.d.ts.map b/types/UI/Components/Board/GangDrillModal.d.ts.map new file mode 100644 index 0000000..1bbe0ae --- /dev/null +++ b/types/UI/Components/Board/GangDrillModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GangDrillModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/GangDrillModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWpD,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,UAAU,CAAC;CAAE,EAAE,EAAE,CAAC;IACxE,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,QAAQ,CAGd;IACF,OAAO,CAAC,QAAQ,CAId;IACF,OAAO,CAAC,SAAS,CAIf;IACF,OAAO,CAAC,KAAK,CAAW;IACxB,aAAa;IAYb,OAAO,CAAC,eAAe,CAerB;IACF,OAAO,CAAC,EAAE,CAaR;IACF,OAAO,CAAC,MAAM,CAKZ;IACF,yBAAyB;IAKzB,oBAAoB;IAKpB,MAAM;CAuQT"} \ No newline at end of file diff --git a/types/UI/Components/Board/LastExtractBoardContour.d.ts b/types/UI/Components/Board/LastExtractBoardContour.d.ts new file mode 100644 index 0000000..8c0435b --- /dev/null +++ b/types/UI/Components/Board/LastExtractBoardContour.d.ts @@ -0,0 +1,5 @@ +import { Curve } from "../../../DatabaseServices/Entity/Curve"; +export declare const LastExtractBoardContour: { + Contour: Curve; +}; +//# sourceMappingURL=LastExtractBoardContour.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/LastExtractBoardContour.d.ts.map b/types/UI/Components/Board/LastExtractBoardContour.d.ts.map new file mode 100644 index 0000000..17a118b --- /dev/null +++ b/types/UI/Components/Board/LastExtractBoardContour.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LastExtractBoardContour.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/LastExtractBoardContour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAE/D,eAAO,MAAM,uBAAuB,EAAE;IAAE,OAAO,EAAE,KAAK,CAAC;CAEtD,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/LayerBoardModal.d.ts b/types/UI/Components/Board/LayerBoardModal.d.ts new file mode 100644 index 0000000..21646d5 --- /dev/null +++ b/types/UI/Components/Board/LayerBoardModal.d.ts @@ -0,0 +1,5 @@ +import { LayerBoardStore } from '../../Store/BoardStore'; +export declare const LayerBoardModal: (props: { + store?: LayerBoardStore; +}) => JSX.Element; +//# sourceMappingURL=LayerBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/LayerBoardModal.d.ts.map b/types/UI/Components/Board/LayerBoardModal.d.ts.map new file mode 100644 index 0000000..179de2c --- /dev/null +++ b/types/UI/Components/Board/LayerBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LayerBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/LayerBoardModal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIzD,eAAO,MAAM,eAAe,UACN;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,gBAgI3C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/Rect2Winerack.d.ts b/types/UI/Components/Board/Rect2Winerack.d.ts new file mode 100644 index 0000000..d628271 --- /dev/null +++ b/types/UI/Components/Board/Rect2Winerack.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { Rect2WinerackStore } from '../../Store/Rect2WinerackStore'; +interface IRect2WinerackProps { + store: Rect2WinerackStore; +} +export declare class Rect2Winerack extends React.Component { + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private handleKeydown; + private ok; + private cancel; +} +export {}; +//# sourceMappingURL=Rect2Winerack.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/Rect2Winerack.d.ts.map b/types/UI/Components/Board/Rect2Winerack.d.ts.map new file mode 100644 index 0000000..78c6de6 --- /dev/null +++ b/types/UI/Components/Board/Rect2Winerack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rect2Winerack.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/Rect2Winerack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAUpE,UAAU,mBAAmB;IAEzB,KAAK,EAAE,kBAAkB,CAAC;CAC7B;AAED,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IACnE,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAcjB,oBAAoB;IAKb,MAAM;IAuFb,OAAO,CAAC,aAAa,CAGnB;IACF,OAAO,CAAC,EAAE,CAGR;IACF,OAAO,CAAC,MAAM,CAGZ;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/SingleBoardModal.d.ts b/types/UI/Components/Board/SingleBoardModal.d.ts new file mode 100644 index 0000000..73f7d16 --- /dev/null +++ b/types/UI/Components/Board/SingleBoardModal.d.ts @@ -0,0 +1,5 @@ +import { SingleBoardStore } from "../../Store/BoardStore"; +export declare const SingleBoardModal: (props: { + store?: SingleBoardStore; +}) => JSX.Element; +//# sourceMappingURL=SingleBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/SingleBoardModal.d.ts.map b/types/UI/Components/Board/SingleBoardModal.d.ts.map new file mode 100644 index 0000000..3431015 --- /dev/null +++ b/types/UI/Components/Board/SingleBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SingleBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/SingleBoardModal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,eAAO,MAAM,gBAAgB,UACP;IAAE,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAAE,gBA8B5C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/SpecialBoardModal.d.ts b/types/UI/Components/Board/SpecialBoardModal.d.ts new file mode 100644 index 0000000..0d25bb3 --- /dev/null +++ b/types/UI/Components/Board/SpecialBoardModal.d.ts @@ -0,0 +1,14 @@ +import * as React from 'react'; +import { SpecialShapeStore } from '../../Store/BoardStore'; +export declare class SpecialShapeBoardModal extends React.Component<{ + store: SpecialShapeStore; +}, {}> { + private pars; + private splitePars; + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private ok; +} +//# sourceMappingURL=SpecialBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/SpecialBoardModal.d.ts.map b/types/UI/Components/Board/SpecialBoardModal.d.ts.map new file mode 100644 index 0000000..a022d41 --- /dev/null +++ b/types/UI/Components/Board/SpecialBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpecialBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/SpecialBoardModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAU3D,qBACa,sBAAuB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,iBAAiB,CAAC;CAAE,EAAE,EAAE,CAAC;IAE1F,OAAO,CAAC,IAAI,CAA+D;IAC3E,OAAO,CAAC,UAAU,CAAiF;IACnG,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAWjB,oBAAoB;IAQpB,MAAM;IA+DN,OAAO,CAAC,EAAE,CAQR;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/TopBottomBoardModal.d.ts b/types/UI/Components/Board/TopBottomBoardModal.d.ts new file mode 100644 index 0000000..f2b501c --- /dev/null +++ b/types/UI/Components/Board/TopBottomBoardModal.d.ts @@ -0,0 +1,5 @@ +import { TopBottomBoardStore } from '../../Store/BoardStore'; +export declare const TopBottomBoardModal: (props: { + store?: TopBottomBoardStore; +}) => JSX.Element; +//# sourceMappingURL=TopBottomBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/TopBottomBoardModal.d.ts.map b/types/UI/Components/Board/TopBottomBoardModal.d.ts.map new file mode 100644 index 0000000..0e29eb3 --- /dev/null +++ b/types/UI/Components/Board/TopBottomBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TopBottomBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/TopBottomBoardModal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,eAAO,MAAM,mBAAmB,UACV;IAAE,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAAE,gBAmG/C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/UpdateBoardInfointerface.d.ts b/types/UI/Components/Board/UpdateBoardInfointerface.d.ts new file mode 100644 index 0000000..cefdf5d --- /dev/null +++ b/types/UI/Components/Board/UpdateBoardInfointerface.d.ts @@ -0,0 +1,49 @@ +import { EBoardKeyList } from "../../../Common/BoardKeyList"; +import { LinesType, FaceDirection, ComposingType, IBaseOption } from "../../Store/BoardInterface"; +export interface IUpdateBoardInfosOption extends IBaseOption { + condition: IUpdateInfoCondition; + [EBoardKeyList.RoomName]: string; + [EBoardKeyList.CabinetName]: string; + [EBoardKeyList.Lines]: LinesType; + [EBoardKeyList.BigHole]: FaceDirection; + [EBoardKeyList.DrillType]: string; + [EBoardKeyList.ComposingFace]: ComposingType; + upDownDrill: [boolean, boolean]; + [EBoardKeyList.UpSealed]?: string; + [EBoardKeyList.DownSealed]?: string; + [EBoardKeyList.LeftSealed]?: string; + [EBoardKeyList.RightSealed]?: string; + [EBoardKeyList.KnifeRad]: string; + remarks: [string, string][]; + [EBoardKeyList.BrMat]: string; + [EBoardKeyList.Mat]: string; + [EBoardKeyList.Color]: string; + grooveAddLength: string; + grooveAddWidth: string; + grooveAddDepth: string; + highDrill: string[]; +} +export interface IUpdateInfoCondition { + [EBoardKeyList.RoomName]: boolean; + [EBoardKeyList.CabinetName]: boolean; + [EBoardKeyList.Lines]: boolean; + [EBoardKeyList.BigHole]: boolean; + [EBoardKeyList.DrillType]: boolean; + [EBoardKeyList.ComposingFace]: boolean; + [EBoardKeyList.UpSealed]: boolean; + [EBoardKeyList.DownSealed]: boolean; + [EBoardKeyList.LeftSealed]: boolean; + [EBoardKeyList.RightSealed]: boolean; + useZhengFanDrill: boolean; + remarks: boolean; + [EBoardKeyList.KnifeRad]: boolean; + [EBoardKeyList.Mat]: boolean; + grooveAddLength: boolean; + grooveAddWidth: boolean; + grooveAddDepth: boolean; + upDrill: boolean; + downDrill: boolean; + leftDrill: boolean; + rightDrill: boolean; +} +//# sourceMappingURL=UpdateBoardInfointerface.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/UpdateBoardInfointerface.d.ts.map b/types/UI/Components/Board/UpdateBoardInfointerface.d.ts.map new file mode 100644 index 0000000..328dbe9 --- /dev/null +++ b/types/UI/Components/Board/UpdateBoardInfointerface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpdateBoardInfointerface.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/UpdateBoardInfointerface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAElG,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAExD,SAAS,EAAE,oBAAoB,CAAC;IAChC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IACjC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IACvC,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAClC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC;IACpC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5B,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAC5B,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IAEjC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACrC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IACjC,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IACnC,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACvC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IACpC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAClC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACvB"} \ No newline at end of file diff --git a/types/UI/Components/Board/UpdateBoardInfos.d.ts b/types/UI/Components/Board/UpdateBoardInfos.d.ts new file mode 100644 index 0000000..7eda8dd --- /dev/null +++ b/types/UI/Components/Board/UpdateBoardInfos.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { UpdateBoardInfosStore } from '../../Store/UpdateBoardInfoStore'; +export interface IUpdateBoardInfoModalProps { + store: UpdateBoardInfosStore; +} +export declare class UpdateBoardInfoModal extends React.Component { + private par; + private selectOptions; + render(): JSX.Element; + private ok; + private addName; + private deleteName; + private exportNames; + private getBoardOption; +} +//# sourceMappingURL=UpdateBoardInfos.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/UpdateBoardInfos.d.ts.map b/types/UI/Components/Board/UpdateBoardInfos.d.ts.map new file mode 100644 index 0000000..d7a0bf3 --- /dev/null +++ b/types/UI/Components/Board/UpdateBoardInfos.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpdateBoardInfos.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/UpdateBoardInfos.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAqBzE,MAAM,WAAW,0BAA0B;IAEvC,KAAK,EAAE,qBAAqB,CAAC;CAChC;AAED,qBAEa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC;IACjF,OAAO,CAAC,GAAG,CAAyI;IACpJ,OAAO,CAAC,aAAa,CAKnB;IACK,MAAM;IAiLb,OAAO,CAAC,EAAE,CAKR;IACF,OAAO,CAAC,OAAO,CAKb;IACF,OAAO,CAAC,UAAU,CAWhB;IACF,OAAO,CAAC,WAAW,CAuFjB;IACF,OAAO,CAAC,cAAc,CAuBpB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Board/UserConfig.d.ts b/types/UI/Components/Board/UserConfig.d.ts new file mode 100644 index 0000000..f10c3c3 --- /dev/null +++ b/types/UI/Components/Board/UserConfig.d.ts @@ -0,0 +1,43 @@ +import * as React from 'react'; +import { BoardProcessOption, IGrooveOption, LayerNailOption, TBBoardOption, AnyObject, IDrawBoardAutoCutOption } from '../../Store/BoardInterface'; +import { IConfigStore } from '../../Store/BoardStore'; +import { DrillingOption } from '../../Store/drillInterface'; +import { BoardModalType } from './BoardModal'; +import { IDrawerInfo, IDoorInfo } from '../../Store/DoorInterface'; +export interface IConfigOption { + option?: T; + nailData?: LayerNailOption; + topBoardData?: TBBoardOption; + bottomBoardData?: TBBoardOption; + processData?: BoardProcessOption; + ruleMap?: Map; + grooveData?: IGrooveOption; + doorsInfo?: (IDrawerInfo | IDoorInfo)[]; + processGroupCategory?: string[]; + autoCutOption?: IDrawBoardAutoCutOption; +} +interface UserConfigState { +} +interface IConfigProps { + type: BoardModalType; + store: IConfigStore; + isUpdate?: boolean; +} +/** + *用户配置 + */ +export declare class UserConfig extends React.Component { + private _userConfigStore; + static defaultProps: { + isUpdate: boolean; + }; + constructor(props: any); + private handleInitConfig; + private handleSaveConfig; + private handleDeleteConfig; + private updateBoardOption; + UNSAFE_componentWillMount(): Promise; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=UserConfig.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/UserConfig.d.ts.map b/types/UI/Components/Board/UserConfig.d.ts.map new file mode 100644 index 0000000..8a392fe --- /dev/null +++ b/types/UI/Components/Board/UserConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UserConfig.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/UserConfig.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACnJ,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAInE,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,SAAS;IAExC,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,aAAa,CAAC;IAChC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,SAAS,CAAC,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,UAAU,eAAe;CAExB;AAED,UAAU,YAAY;IAElB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC;IAC1E,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,MAAM,CAAC,YAAY;;MAEjB;gBACU,KAAK,KAAA;IAMjB,OAAO,CAAC,gBAAgB,CAgBtB;IACF,OAAO,CAAC,gBAAgB,CAGtB;IAEF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,iBAAiB,CASvB;IACI,yBAAyB;IAuC/B,MAAM;CAkET"} \ No newline at end of file diff --git a/types/UI/Components/Board/VerticalBoardModal.d.ts b/types/UI/Components/Board/VerticalBoardModal.d.ts new file mode 100644 index 0000000..f82733e --- /dev/null +++ b/types/UI/Components/Board/VerticalBoardModal.d.ts @@ -0,0 +1,5 @@ +import { VerticalBoardStore } from '../../Store/BoardStore'; +export declare const VerticalBoardModal: (props: { + store?: VerticalBoardStore; +}) => JSX.Element; +//# sourceMappingURL=VerticalBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/VerticalBoardModal.d.ts.map b/types/UI/Components/Board/VerticalBoardModal.d.ts.map new file mode 100644 index 0000000..985e21a --- /dev/null +++ b/types/UI/Components/Board/VerticalBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"VerticalBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/VerticalBoardModal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,eAAO,MAAM,kBAAkB,UACT;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAAE,gBA0D9C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Board/WineRack.d.ts b/types/UI/Components/Board/WineRack.d.ts new file mode 100644 index 0000000..9b33883 --- /dev/null +++ b/types/UI/Components/Board/WineRack.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { WineRackStore } from '../../Store/WineRackStore'; +export declare class WineRackModal extends React.Component<{ + store?: WineRackStore; +}, {}> { + private event; + private basePars; + private cutPars; + handleExec: () => Promise; + private checkDisabled; + private handleCancle; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=WineRack.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/WineRack.d.ts.map b/types/UI/Components/Board/WineRack.d.ts.map new file mode 100644 index 0000000..a9bfeac --- /dev/null +++ b/types/UI/Components/Board/WineRack.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WineRack.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/WineRack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAgB1D,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAE9E,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAEd;IACF,OAAO,CAAC,OAAO,CAGb;IACF,UAAU,sBA+BR;IACF,OAAO,CAAC,aAAa,CAqCnB;IACF,OAAO,CAAC,YAAY,CAIlB;IACF,iBAAiB;IAmBjB,oBAAoB;IAKpB,MAAM;CA2PT"} \ No newline at end of file diff --git a/types/UI/Components/Board/leftRightBoardModal.d.ts b/types/UI/Components/Board/leftRightBoardModal.d.ts new file mode 100644 index 0000000..575909a --- /dev/null +++ b/types/UI/Components/Board/leftRightBoardModal.d.ts @@ -0,0 +1,5 @@ +import { SideBoardStore } from '../../Store/BoardStore'; +export declare const LeftRightBoardModal: (props: { + store?: SideBoardStore; +}) => JSX.Element; +//# sourceMappingURL=leftRightBoardModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Board/leftRightBoardModal.d.ts.map b/types/UI/Components/Board/leftRightBoardModal.d.ts.map new file mode 100644 index 0000000..416fc72 --- /dev/null +++ b/types/UI/Components/Board/leftRightBoardModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"leftRightBoardModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Board/leftRightBoardModal.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD,eAAO,MAAM,mBAAmB,UACV;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC;CAAE,gBAY1C,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/BoardBatchCurtailModal.d.ts b/types/UI/Components/BoardBatchCurtailModal.d.ts new file mode 100644 index 0000000..d92ad2e --- /dev/null +++ b/types/UI/Components/BoardBatchCurtailModal.d.ts @@ -0,0 +1,25 @@ +import React = require("react"); +import '../Css/batchCurtailModal.less'; +import { BoardStore } from "../Store/BoardStore"; +import { IBoardBatchCurtailOption } from "../Store/BoardInterface"; +export interface IBoardBatchCurtailProps { + store: BoardBatchCurtailStore; +} +export declare class BoardBatchCurtailStore extends BoardStore { + m_Option: IBoardBatchCurtailOption; + checkValue: IBoardBatchCurtailOption; + HasInvailValue(): boolean; + InitOption(): void; +} +export declare class BoardBatchCurtailModal extends React.Component { + constructor(props: any); + private CONFIG_CURTAIL; + private Ok; + private Close; + private CheckFunc; + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=BoardBatchCurtailModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/BoardBatchCurtailModal.d.ts.map b/types/UI/Components/BoardBatchCurtailModal.d.ts.map new file mode 100644 index 0000000..7a2ddb6 --- /dev/null +++ b/types/UI/Components/BoardBatchCurtailModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardBatchCurtailModal.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/BoardBatchCurtailModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAChC,OAAO,+BAA+B,CAAC;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAUjD,OAAO,EAAE,wBAAwB,EAAe,MAAM,yBAAyB,CAAC;AAKhF,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,sBAAsB,CAAC;CACjC;AAED,qBAAa,sBAAuB,SAAQ,UAAU;IAEtC,QAAQ,EAAE,wBAAwB,CAQ5C;IACF,UAAU,EAAE,wBAAwB,CAA6C;IACjF,cAAc;IASd,UAAU;CAKb;AACD,qBACa,sBAAuB,SAAQ,KAAK,CAAC,SAAS,CAAC,uBAAuB,EAAE,EAAE,CAAC;gBAExE,KAAK,KAAA;IAMjB,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,EAAE,CAiBR;IACF,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,SAAS;IAuBjB,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAWjB,oBAAoB;IAQb,MAAM;CA+FhB"} \ No newline at end of file diff --git a/types/UI/Components/Button.d.ts b/types/UI/Components/Button.d.ts new file mode 100644 index 0000000..dbfe32a --- /dev/null +++ b/types/UI/Components/Button.d.ts @@ -0,0 +1,5 @@ +import * as React from "react"; +export declare class Button extends React.Component<{}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=Button.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Button.d.ts.map b/types/UI/Components/Button.d.ts.map new file mode 100644 index 0000000..014d1ea --- /dev/null +++ b/types/UI/Components/Button.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAC/C,MAAM;CAOT"} \ No newline at end of file diff --git a/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts b/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts new file mode 100644 index 0000000..57da683 --- /dev/null +++ b/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts @@ -0,0 +1,26 @@ +import * as React from "react"; +import { Singleton } from "../../../Common/Singleton"; +declare enum MenuType { + ControlsMenu = 0, + ViewMenu = 1, + VisualStyleMenu = 2 +} +export declare class CameraControlBtnStore extends Singleton { + m_isMenuShow: number; + m_ViewMenuTitle: string; + m_CameraType: string; + constructor(); + set ViewBtnTitle(title: string); + get ViewBtnTitle(): string; +} +export declare class CameraControlBtn extends React.Component<{ + store: CameraControlBtnStore; +}, {}> { + render(): JSX.Element; + RenderControlsMenu: () => JSX.Element; + RenderViewMenu: () => JSX.Element; + ShowMenu: (menuType: MenuType) => void; + HideMenu: () => void; +} +export {}; +//# sourceMappingURL=CameraControlBtn.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts.map b/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts.map new file mode 100644 index 0000000..53c7eca --- /dev/null +++ b/types/UI/Components/CameraControlButton/CameraControlBtn.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CameraControlBtn.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CameraControlButton/CameraControlBtn.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,aAAK,QAAQ;IAET,YAAY,IAAI;IAChB,QAAQ,IAAI;IACZ,eAAe,IAAI;CACtB;AAoCD,qBAAa,qBAAsB,SAAQ,SAAS;IAEpC,YAAY,EAAE,MAAM,CAAM;IAC1B,eAAe,EAAE,MAAM,CAAW;IAClC,YAAY,EAAE,MAAM,CAAQ;;IAkDxC,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAG7B;IACD,IAAI,YAAY,IAJQ,MAAM,CAO7B;CACJ;AACD,qBAEa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,qBAAqB,CAAC;CAAE,EAAE,EAAE,CAAC;IAExF,MAAM;IAgFN,kBAAkB,oBA+BhB;IAEF,cAAc,oBA4DZ;IAEF,QAAQ,aAAc,QAAQ,UAI5B;IAEF,QAAQ,aAIN;CACL"} \ No newline at end of file diff --git a/types/UI/Components/CameraControlButton/IVisualType.d.ts b/types/UI/Components/CameraControlButton/IVisualType.d.ts new file mode 100644 index 0000000..1cd8db6 --- /dev/null +++ b/types/UI/Components/CameraControlButton/IVisualType.d.ts @@ -0,0 +1,8 @@ +import { CommandNames } from "../../../Common/CommandNames"; +interface IVisualStyle { + title: string; + cmd: CommandNames; +} +export declare const VisualStyleData: IVisualStyle[]; +export {}; +//# sourceMappingURL=IVisualType.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CameraControlButton/IVisualType.d.ts.map b/types/UI/Components/CameraControlButton/IVisualType.d.ts.map new file mode 100644 index 0000000..f785df2 --- /dev/null +++ b/types/UI/Components/CameraControlButton/IVisualType.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IVisualType.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CameraControlButton/IVisualType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,UAAU,YAAY;IAElB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,YAAY,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,EAAE,YAAY,EAiBzC,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Carousel.d.ts b/types/UI/Components/Carousel.d.ts new file mode 100644 index 0000000..81bd3b4 --- /dev/null +++ b/types/UI/Components/Carousel.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { TopPanelStore, IDealerInfo } from '../Store/TopPanelStore'; +export interface CarouselProps { + store?: TopPanelStore; + infos: IDealerInfo; +} +/** + * 轮播组件 + */ +export declare class Carousel extends React.Component { + timeId: any; + position: number[]; + handleStart: () => void; + handleClose: () => void; + handleClick: (i: number) => void; + componentWillUnmount(): void; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=Carousel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Carousel.d.ts.map b/types/UI/Components/Carousel.d.ts.map new file mode 100644 index 0000000..6727479 --- /dev/null +++ b/types/UI/Components/Carousel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Carousel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAE1B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;CACtB;AAKD;;GAEG;AACH,qBAEa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC;IAC7D,MAAM,MAAQ;IACF,QAAQ,WAAiB;IACrC,WAAW,aAcT;IACF,WAAW,aAGT;IACF,WAAW,MAAO,MAAM,UAWtB;IACF,oBAAoB;IAIpB,iBAAiB;IAKV,MAAM;CA0DhB"} \ No newline at end of file diff --git a/types/UI/Components/ColorPanel.d.ts b/types/UI/Components/ColorPanel.d.ts new file mode 100644 index 0000000..a1ed4bc --- /dev/null +++ b/types/UI/Components/ColorPanel.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +interface IColorState { + isFocus: boolean; +} +interface IColorProps { + color: string; + onChange?: (color: string) => void; + position?: { + left?: number; + right?: number; + }; +} +export declare class ColorPanel extends React.Component { + private event; + constructor(props: Readonly); + handleChangeColor: (color: string) => void; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ColorPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ColorPanel.d.ts.map b/types/UI/Components/ColorPanel.d.ts.map new file mode 100644 index 0000000..d18975d --- /dev/null +++ b/types/UI/Components/ColorPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ColorPanel.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/ColorPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,WAAW;IAEjB,OAAO,EAAE,OAAO,CAAC;CACpB;AACD,UAAU,WAAW;IAEjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KAAE,CAAC;CACjD;AAED,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IAErE,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC;IAOxC,iBAAiB,UAAW,MAAM,UAIhC;IACF,iBAAiB;IAOjB,oBAAoB;IAKpB,MAAM;CA6BT"} \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInput.d.ts b/types/UI/Components/CommandInput/CommandInput.d.ts new file mode 100644 index 0000000..c9bf0ee --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInput.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { CommandStore } from "../../Store/CommandStore"; +interface Props { + commandStore?: CommandStore; + ShowOutput: (event?: React.MouseEvent) => void; +} +export declare class CommandInput extends React.Component { + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=CommandInput.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInput.d.ts.map b/types/UI/Components/CommandInput/CommandInput.d.ts.map new file mode 100644 index 0000000..b0305dc --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInput.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandInput.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandInput/CommandInput.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,UAAU,KAAK;IAEX,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAC3E;AAED,qBAEa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;IAE1D,MAAM;CAgCT"} \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInputManage.d.ts b/types/UI/Components/CommandInput/CommandInputManage.d.ts new file mode 100644 index 0000000..f156de2 --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInputManage.d.ts @@ -0,0 +1,6 @@ +export declare class CommandInputManage { + private m_InputContainer; + constructor(); + RenderCommandInput(): void; +} +//# sourceMappingURL=CommandInputManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInputManage.d.ts.map b/types/UI/Components/CommandInput/CommandInputManage.d.ts.map new file mode 100644 index 0000000..1fbec2d --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInputManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandInputManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandInput/CommandInputManage.tsx"],"names":[],"mappings":"AAMA,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,gBAAgB,CAAc;;IAQtC,kBAAkB;CAIrB"} \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInputUI.d.ts b/types/UI/Components/CommandInput/CommandInputUI.d.ts new file mode 100644 index 0000000..b01489b --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInputUI.d.ts @@ -0,0 +1,24 @@ +import React = require("react"); +import { Rnd } from "react-rnd"; +import { CommandStore } from "../../Store/CommandStore"; +export declare const CommandInputHeight = 24; +export declare class CommandInputUI extends React.Component<{ + commandStore?: CommandStore; +}, {}> { + rnd: Rnd; + leftRatio: number; + topRatio: number; + /** + * 打开或者关闭历史命令显示 + */ + OnOffCommandLineOutputDisplay: () => void; + UpdateTransparentTerminalDisplay: () => void; + componentDidMount(): void; + render(): JSX.Element; + private clampSize; + /** + * 更新位置占比 + */ + private onDragStop; +} +//# sourceMappingURL=CommandInputUI.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandInput/CommandInputUI.d.ts.map b/types/UI/Components/CommandInput/CommandInputUI.d.ts.map new file mode 100644 index 0000000..3191dea --- /dev/null +++ b/types/UI/Components/CommandInput/CommandInputUI.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandInputUI.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandInput/CommandInputUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAEhC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAMxD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,qBAEa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,EAAE,YAAY,CAAC;CAAE,EAAE,EAAE,CAAC;IAErF,GAAG,EAAE,GAAG,CAAC;IAGT,SAAS,SAAK;IAEd,QAAQ,SAAK;IAEb;;OAEG;IACH,6BAA6B,aAoB3B;IAEF,gCAAgC,aAI9B;IAEF,iBAAiB;IAoBjB,MAAM;IA2BN,OAAO,CAAC,SAAS,CAef;IAEF;;OAEG;IACH,OAAO,CAAC,UAAU,CAQhB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/CommandInput/TransparentTerminal.d.ts b/types/UI/Components/CommandInput/TransparentTerminal.d.ts new file mode 100644 index 0000000..e32d72d --- /dev/null +++ b/types/UI/Components/CommandInput/TransparentTerminal.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { CommandStore } from "../../Store/CommandStore"; +export declare class TransparentTerminal extends React.Component<{ + commandStore?: CommandStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=TransparentTerminal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandInput/TransparentTerminal.d.ts.map b/types/UI/Components/CommandInput/TransparentTerminal.d.ts.map new file mode 100644 index 0000000..1904b51 --- /dev/null +++ b/types/UI/Components/CommandInput/TransparentTerminal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TransparentTerminal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandInput/TransparentTerminal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,qBAKa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,EAAE,YAAY,CAAC;CAAE,EAAE,EAAE,CAAC;IAE1F,MAAM;CAgCT"} \ No newline at end of file diff --git a/types/UI/Components/CommandLine.d.ts b/types/UI/Components/CommandLine.d.ts new file mode 100644 index 0000000..006d3b4 --- /dev/null +++ b/types/UI/Components/CommandLine.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import { CommandMsg } from '../Store/CommandStore'; +export declare class CommandLine extends React.Component<{ + msg: CommandMsg; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=CommandLine.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandLine.d.ts.map b/types/UI/Components/CommandLine.d.ts.map new file mode 100644 index 0000000..db1297c --- /dev/null +++ b/types/UI/Components/CommandLine.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandLine.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/CommandLine.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;CAAE,EAAE,EAAE,CAAC;IAEtE,MAAM;CAIT"} \ No newline at end of file diff --git a/types/UI/Components/CommandLineContainer.d.ts b/types/UI/Components/CommandLineContainer.d.ts new file mode 100644 index 0000000..1d5b5b6 --- /dev/null +++ b/types/UI/Components/CommandLineContainer.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { CommandStore } from '../Store/CommandStore'; +export declare class CommandLineContainer extends React.Component<{ + commandStore?: CommandStore; +}, null> { + m_OutputContainer: HTMLElement; + m_CommandListContainer: HTMLElement; + componentDidUpdate(): void; + render(): JSX.Element; +} +//# sourceMappingURL=CommandLineContainer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandLineContainer.d.ts.map b/types/UI/Components/CommandLineContainer.d.ts.map new file mode 100644 index 0000000..77d4d0d --- /dev/null +++ b/types/UI/Components/CommandLineContainer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandLineContainer.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/CommandLineContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,qBAEa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,EAAE,YAAY,CAAC;CAAE,EAAE,IAAI,CAAC;IAI7F,iBAAiB,EAAE,WAAW,CAAC;IAC/B,sBAAsB,EAAE,WAAW,CAAC;IACpC,kBAAkB;IAIlB,MAAM;CAkBT"} \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CmdPanel.d.ts b/types/UI/Components/CommandPanel/CmdPanel.d.ts new file mode 100644 index 0000000..4c791df --- /dev/null +++ b/types/UI/Components/CommandPanel/CmdPanel.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +interface CommandPanelState { + tabArr: [string, string, number][]; +} +export declare class CommandPanel extends React.Component<{}, CommandPanelState> { + private searchList; + private searchRes; + private inputEl; + private ulRef; + private scrollCard; + private regexp; + id: string; + searchString: string; + constructor(p: any, s: any); + UseLastScrollTop(): Promise; + componentDidMount(): void; + handleTabsClick: () => Promise; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=CmdPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CmdPanel.d.ts.map b/types/UI/Components/CommandPanel/CmdPanel.d.ts.map new file mode 100644 index 0000000..21bf742 --- /dev/null +++ b/types/UI/Components/CommandPanel/CmdPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CmdPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandPanel/CmdPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,UAAU,iBAAiB;IAEvB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACtC;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAEpE,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAc;IACpB,OAAO,CAAC,MAAM,CAAmC;IACjD,EAAE,SAAS;IACX,YAAY,EAAE,MAAM,CAAC;gBACrB,CAAC,KAAA,EAAE,CAAC,KAAA;IAwBV,gBAAgB;IAOtB,iBAAiB;IAejB,eAAe,sBAOb;IACF,oBAAoB;IAMpB,MAAM;CA6IT"} \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CommandItem.d.ts b/types/UI/Components/CommandPanel/CommandItem.d.ts new file mode 100644 index 0000000..691cc1c --- /dev/null +++ b/types/UI/Components/CommandPanel/CommandItem.d.ts @@ -0,0 +1,24 @@ +import * as React from "react"; +import { ICommand } from "./CommandList"; +interface CommandItemProps { + commandData: ICommand; +} +/** + * 命令面板列表项 + * TODO:相应项根据命令数据改为变量名接收传入值 + */ +export declare class CommandItem extends React.Component { + private flag; + private m_InputEl; + private m_commandItemEl; + private isCNInput; + private isReset; + constructor(props: any); + componentDidMount(): void; + handleLiClick: () => void; + handleOnChange: () => void; + handleOnBlur: () => void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=CommandItem.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CommandItem.d.ts.map b/types/UI/Components/CommandPanel/CommandItem.d.ts.map new file mode 100644 index 0000000..63dcdfa --- /dev/null +++ b/types/UI/Components/CommandPanel/CommandItem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandItem.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandPanel/CommandItem.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,QAAQ,EAAe,MAAM,eAAe,CAAC;AAUtD,UAAU,gBAAgB;IAEtB,WAAW,EAAE,QAAQ,CAAC;CACzB;AAED;;;GAGG;AACH,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,CAAC;IACtD,OAAO,CAAC,IAAI,CAAuB;IAC/C,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,eAAe,CAAgB;IAC3B,OAAO,CAAC,SAAS,CAAkB;IAC/C,OAAO,CAAC,OAAO,CAAS;gBACZ,KAAK,KAAA;IAIjB,iBAAiB;IAsBjB,aAAa,aAOX;IACF,cAAc,aAiCZ;IACF,YAAY,aAqCV;IAEF,MAAM;CA+HT"} \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CommandList.d.ts b/types/UI/Components/CommandPanel/CommandList.d.ts new file mode 100644 index 0000000..228708d --- /dev/null +++ b/types/UI/Components/CommandPanel/CommandList.d.ts @@ -0,0 +1,21 @@ +/** + * 命令面板列表数据 + * 非搜索项放在开头,暂勿随意更改位置,待优化 + * @export + * @interface ICommand + */ +export interface ICommand { + readonly icon?: string; + readonly typeId: string; + readonly link?: string; + readonly defaultCustom: string; + customizeed?: string; + readonly type: string; + readonly chName: string; + readonly command: string; + readonly chDes: string; + customize?: string; + readonly time?: string; +} +export declare const CommandList: ICommand[]; +//# sourceMappingURL=CommandList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/CommandPanel/CommandList.d.ts.map b/types/UI/Components/CommandPanel/CommandList.d.ts.map new file mode 100644 index 0000000..f6d5c0f --- /dev/null +++ b/types/UI/Components/CommandPanel/CommandList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/CommandPanel/CommandList.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IAErB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,EAAE,QAAQ,EAyuDjC,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Common.d.ts b/types/UI/Components/Common.d.ts new file mode 100644 index 0000000..6e8e0e2 --- /dev/null +++ b/types/UI/Components/Common.d.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { IOptionProps } from '@blueprintjs/core'; +import '../Css/common.less'; +export interface IInputSelectProps { + title: string; + options: Array; + value: string; + inline: boolean; + onChange?: (e: React.ChangeEvent) => void; + onSelect?: (val: string) => void; +} +export declare class InputSelect extends React.Component { + private isOpen; + render(): JSX.Element; + private handleClick; +} +//# sourceMappingURL=Common.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Common.d.ts.map b/types/UI/Components/Common.d.ts.map new file mode 100644 index 0000000..fa15db5 --- /dev/null +++ b/types/UI/Components/Common.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Common.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Common.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA+B,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAI9E,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAE9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACnD,OAAO,CAAC,MAAM,CAAS;IAC5B,MAAM;IA6Cb,OAAO,CAAC,WAAW,CAQjB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Common/CommonIframe.d.ts b/types/UI/Components/Common/CommonIframe.d.ts new file mode 100644 index 0000000..8097391 --- /dev/null +++ b/types/UI/Components/Common/CommonIframe.d.ts @@ -0,0 +1,15 @@ +import * as React from 'react'; +interface ICommonIframeProps { + url: string; + title: string; + onMessage: (e: MessageEvent) => void; + renderFooter?: () => JSX.Element; +} +export declare class CommonIframe extends React.Component { + isMax: boolean; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=CommonIframe.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Common/CommonIframe.d.ts.map b/types/UI/Components/Common/CommonIframe.d.ts.map new file mode 100644 index 0000000..48554ef --- /dev/null +++ b/types/UI/Components/Common/CommonIframe.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommonIframe.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Common/CommonIframe.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,UAAU,kBAAkB;IAExB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACpC;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAEzD,KAAK,UAAS;IAC1B,iBAAiB;IAIjB,oBAAoB;IAKpB,MAAM;CAyBT"} \ No newline at end of file diff --git a/types/UI/Components/Common/Confirm.d.ts b/types/UI/Components/Common/Confirm.d.ts new file mode 100644 index 0000000..0c49daa --- /dev/null +++ b/types/UI/Components/Common/Confirm.d.ts @@ -0,0 +1,33 @@ +import * as React from 'react'; +declare class Confirm { + private _container; + constructor(); + static CreateConfirm(): Confirm; + close(): void; + show(option: { + message: string | string[]; + hasCancel?: boolean; + }): Promise; + show2(option: { + message: string | string[]; + onConfirm: () => void; + }): void; +} +interface ICommonConfirmProps { + message: string | string[]; + res: Function; + close: Function; + hasCancel: boolean; +} +export declare class CommonConfirm extends React.Component { + renderMessage: () => string | JSX.Element[]; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private confirm; + private cancel; + private handleKeydown; +} +export declare const AppConfirm: Confirm; +export {}; +//# sourceMappingURL=Confirm.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Common/Confirm.d.ts.map b/types/UI/Components/Common/Confirm.d.ts.map new file mode 100644 index 0000000..52d5fef --- /dev/null +++ b/types/UI/Components/Common/Confirm.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Confirm.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Common/Confirm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,cAAM,OAAO;IAET,OAAO,CAAC,UAAU,CAAiB;;IAQnC,MAAM,CAAC,aAAa;IAIpB,KAAK;IAKC,IAAI,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1F,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,IAAI,CAAC;KAAE;CAIvE;AAGD,UAAU,mBAAmB;IAEzB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IAEnE,aAAa,+BAQX;IACF,iBAAiB;IAIjB,oBAAoB;IAIpB,MAAM;IAgBN,OAAO,CAAC,OAAO,CAIb;IACF,OAAO,CAAC,MAAM,CAIZ;IACF,OAAO,CAAC,aAAa,CAUnB;CACL;AAyDD,eAAO,MAAM,UAAU,SAA0B,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/Common/Datalist.d.ts b/types/UI/Components/Common/Datalist.d.ts new file mode 100644 index 0000000..ff53076 --- /dev/null +++ b/types/UI/Components/Common/Datalist.d.ts @@ -0,0 +1,36 @@ +import * as React from 'react'; +import { AnyObject } from '../../Store/BoardInterface'; +import '../../Css/dataList.less'; +export interface IDataListProps { + dataList: any[]; + select: (e: any, data: any) => void; + showContextMenu?: (e: React.MouseEvent, data: AnyObject) => void; + idKey: string; + renderButtons?: (data: any) => JSX.Element; + renderOtherElement?: (data: any) => JSX.Element; + selectData: Set; + showInfos: boolean; + dbclickImg?: (data: AnyObject) => void; + dragStart?: (data: AnyObject) => void; + preview?: boolean; + isSvg?: boolean; + handleMounseDown?: (e: React.MouseEvent, data: AnyObject) => void; + liStyle?: React.CSSProperties; + className?: string; + style?: React.CSSProperties; + activeId?: string; + hintClassName?: string; + canDrag?: boolean; +} +export declare class DataList extends React.Component { + static defaultProps: Partial; + renderBigData: () => JSX.Element; + renderSmall: () => JSX.Element; + render(): JSX.Element; + private showContextMenu; + handleMouseDown: (e: React.MouseEvent, data: AnyObject) => void; + handleMouseUp: (e: React.MouseEvent, data: AnyObject) => void; + handleDbImgClick: (data: any) => void; + handleDragStart: (data: any) => void; +} +//# sourceMappingURL=Datalist.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Common/Datalist.d.ts.map b/types/UI/Components/Common/Datalist.d.ts.map new file mode 100644 index 0000000..0e69238 --- /dev/null +++ b/types/UI/Components/Common/Datalist.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Datalist.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Common/Datalist.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,yBAAyB,CAAC;AAIjC,MAAM,WAAW,cAAc;IAE3B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,MAAM,EAAE,CAAC,CAAC,KAAA,EAAE,IAAI,KAAA,KAAK,IAAI,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,CAAC,IAAI,KAAA,KAAK,GAAG,CAAC,OAAO,CAAC;IACtC,kBAAkB,CAAC,EAAE,CAAC,IAAI,KAAA,KAAK,GAAG,CAAC,OAAO,CAAC;IAC3C,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/E,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBACa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;IACzD,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAO1C;IACF,aAAa,oBAsFX;IACF,WAAW,oBAsDT;IACK,MAAM;IA4Bb,OAAO,CAAC,eAAe,CAIrB;IACF,eAAe,MAAO,gBAAgB,CAAC,WAAW,CAAC,QAAQ,SAAS,UAclE;IACF,aAAa,MAAO,gBAAgB,CAAC,WAAW,CAAC,QAAQ,SAAS,UAGhE;IACF,gBAAgB,sBAId;IACF,eAAe,sBAIb;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Common/PopoverButton.d.ts b/types/UI/Components/Common/PopoverButton.d.ts new file mode 100644 index 0000000..c9c79e8 --- /dev/null +++ b/types/UI/Components/Common/PopoverButton.d.ts @@ -0,0 +1,23 @@ +import * as React from 'react'; +import { Position, IconName, MaybeElement } from '@blueprintjs/core'; +export interface IPopOverButtonProps { + position?: Position; + disabled?: boolean; + confirmCallback: () => void; + message: string; + targetTitle: string; + icon?: IconName | MaybeElement; + closeFocusElement?: HTMLElement; + style?: React.CSSProperties; + className?: string; +} +export declare class PopoverButton extends React.Component { + private confirmBtn; + private cancelBtn; + static defaultProps: { + position: "top"; + }; + render(): JSX.Element; + private handleKeyDown; +} +//# sourceMappingURL=PopoverButton.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Common/PopoverButton.d.ts.map b/types/UI/Components/Common/PopoverButton.d.ts.map new file mode 100644 index 0000000..5611a12 --- /dev/null +++ b/types/UI/Components/Common/PopoverButton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PopoverButton.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Common/PopoverButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAW,QAAQ,EAAiC,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG7G,MAAM,WAAW,mBAAmB;IAEhC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC;IACnE,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,SAAS,CAAoB;IACrC,MAAM,CAAC,YAAY;;MAEjB;IACK,MAAM;IAgDb,OAAO,CAAC,aAAa,CAOnB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/ComponentObjectId.d.ts b/types/UI/Components/ComponentObjectId.d.ts new file mode 100644 index 0000000..e37a247 --- /dev/null +++ b/types/UI/Components/ComponentObjectId.d.ts @@ -0,0 +1,2 @@ +export declare function GetCompoentObjectIdString(Compoent: any): string; +//# sourceMappingURL=ComponentObjectId.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ComponentObjectId.d.ts.map b/types/UI/Components/ComponentObjectId.d.ts.map new file mode 100644 index 0000000..122d10f --- /dev/null +++ b/types/UI/Components/ComponentObjectId.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ComponentObjectId.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/ComponentObjectId.ts"],"names":[],"mappings":"AAmBA,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAG/D"} \ No newline at end of file diff --git a/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts b/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts new file mode 100644 index 0000000..a0a8b16 --- /dev/null +++ b/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { GetKeyWordsServices } from '../../../Editor/GetKeyWordService'; +/** + * 关键字选择菜单 + */ +export declare class KeyWordContextMenu extends React.Component<{ + keywordStore?: GetKeyWordsServices; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=KeyWordContextMenu.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts.map b/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts.map new file mode 100644 index 0000000..e616a01 --- /dev/null +++ b/types/UI/Components/ContextMenu/KeyWordContextMenu.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KeyWordContextMenu.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ContextMenu/KeyWordContextMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAIxE;;GAEG;AACH,qBAEa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAAE,EAAE,EAAE,CAAC;IAEzF,MAAM;CAgFhB"} \ No newline at end of file diff --git a/types/UI/Components/ContextMenu/MenuItem.d.ts b/types/UI/Components/ContextMenu/MenuItem.d.ts new file mode 100644 index 0000000..2e813c8 --- /dev/null +++ b/types/UI/Components/ContextMenu/MenuItem.d.ts @@ -0,0 +1,62 @@ +import * as React from "react"; +import { IActionProps, ILinkProps, IPopoverProps } from "@blueprintjs/core"; +export interface IMenuItemProps extends IActionProps, ILinkProps { + /** Item text, required for usability. */ + text: React.ReactNode; + /** Whether this menu item should appear with an active state. */ + active?: boolean; + /** + * Children of this component will be rendered in a __submenu__ that appears when hovering or + * clicking on this menu item. + * + * Use `text` prop for the content of the menu item itself. + */ + children?: React.ReactNode; + /** + * Whether this menu item is non-interactive. Enabling this prop will ignore `href`, `tabIndex`, + * and mouse event handlers (in particular click, down, enter, leave). + */ + disabled?: boolean; + /** + * Right-aligned label text content, useful for displaying hotkeys. + * + * This prop actually supports JSX elements, but TypeScript will throw an error because + * `HTMLAttributes` only allows strings. Use `labelElement` to supply a JSX element in TypeScript. + */ + label?: string; + /** + * Right-aligned label content, useful for displaying hotkeys. + */ + labelElement?: React.ReactNode; + /** + * Whether the text should be allowed to wrap to multiple lines. + * If `false`, text will be truncated with an ellipsis when it reaches `max-width`. + * @default false + */ + multiline?: boolean; + /** + * Props to spread to `Popover`. Note that `content` and `minimal` cannot be + * changed and `usePortal` defaults to `false` so all submenus will live in + * the same container. + */ + popoverProps?: Partial; + /** + * Whether an enabled item without a submenu should automatically close its parent popover when clicked. + * @default true + */ + shouldDismissPopover?: boolean; + /** + * Name of the HTML tag that wraps the MenuItem. + * @default "a" + */ + tagName?: keyof JSX.IntrinsicElements; + isShowChildren?: boolean; +} +export declare class MenuItem extends React.PureComponent> { + static defaultProps: IMenuItemProps; + static displayName: string; + render(): JSX.Element; + private maybeRenderLabel; + private maybeRenderPopover; +} +//# sourceMappingURL=MenuItem.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ContextMenu/MenuItem.d.ts.map b/types/UI/Components/ContextMenu/MenuItem.d.ts.map new file mode 100644 index 0000000..78e4df7 --- /dev/null +++ b/types/UI/Components/ContextMenu/MenuItem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ContextMenu/MenuItem.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAA4F,MAAM,mBAAmB,CAAC;AAEtK,MAAM,WAAW,cAAe,SAAQ,YAAY,EAAE,UAAU;IAG5D,yCAAyC;IACzC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IAEtB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE/B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEtC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,qBAAa,QAAS,SAAQ,KAAK,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAC7G,OAAc,YAAY,EAAE,cAAc,CAMxC;IACF,OAAc,WAAW,SAAoC;IAEtD,MAAM;IAmDb,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,kBAAkB;CA2B7B"} \ No newline at end of file diff --git a/types/UI/Components/EntityModal/EntityColorList.d.ts b/types/UI/Components/EntityModal/EntityColorList.d.ts new file mode 100644 index 0000000..345b911 --- /dev/null +++ b/types/UI/Components/EntityModal/EntityColorList.d.ts @@ -0,0 +1,23 @@ +import * as React from 'react'; +import { EntityStore } from '../../Store/EntityStore'; +export declare const ColorItem: (props: { + className: string; + text: string; + style?: React.CSSProperties; + value?: number; +}) => JSX.Element; +export declare const ColorStyle: [string, number][]; +export declare class ColorModal extends React.Component<{ + store?: EntityStore; +}, {}> { + isShow: boolean; + constructor(props: any); + private registerEvent; + private CloseColorList; + private changeEntityColor; + private handleMouseMove; + private handleClick; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=EntityColorList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/EntityModal/EntityColorList.d.ts.map b/types/UI/Components/EntityModal/EntityColorList.d.ts.map new file mode 100644 index 0000000..bbdc59a --- /dev/null +++ b/types/UI/Components/EntityModal/EntityColorList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EntityColorList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/EntityModal/EntityColorList.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,eAAO,MAAM,SAAS,UAAW;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE,gBAIzG,CAAC;AAEV,eAAO,MAAM,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAMxC,CAAC;AAEF,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC;CAAE,EAAE,EAAE,CAAC;IAE7D,MAAM,UAAS;gBACf,KAAK,KAAA;IAKjB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc,CAOpB;IAEF,OAAO,CAAC,iBAAiB,CAWvB;IACF,OAAO,CAAC,eAAe,CAMrB;IACF,OAAO,CAAC,WAAW,CAUjB;IACF,oBAAoB;IAIpB,MAAM;CA+DT"} \ No newline at end of file diff --git a/types/UI/Components/EntityModal/EntityModal.d.ts b/types/UI/Components/EntityModal/EntityModal.d.ts new file mode 100644 index 0000000..bb73450 --- /dev/null +++ b/types/UI/Components/EntityModal/EntityModal.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { EntityStore } from '../../Store/EntityStore'; +export declare class EntityModal extends React.Component<{ + store?: EntityStore; +}, {}> { + private event; + constructor(props: any); + registerEvent(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=EntityModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/EntityModal/EntityModal.d.ts.map b/types/UI/Components/EntityModal/EntityModal.d.ts.map new file mode 100644 index 0000000..8b40417 --- /dev/null +++ b/types/UI/Components/EntityModal/EntityModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EntityModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/EntityModal/EntityModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC;CAAE,EAAE,EAAE,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,KAAA;IAKjB,aAAa;IASb,oBAAoB;IAMpB,MAAM;CAoDT"} \ No newline at end of file diff --git a/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts b/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts new file mode 100644 index 0000000..4f0c81d --- /dev/null +++ b/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { ExtrudeHole } from '../../../DatabaseServices/3DSolid/ExtrudeHole'; +export declare class ExtrudeHoleModal extends React.Component<{ + entity: ExtrudeHole; +}> { + private event; + private option; + constructor(props: any); + registerEvent(): void; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private confirm; + private cancel; +} +//# sourceMappingURL=ExtrudeHoleModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts.map b/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts.map new file mode 100644 index 0000000..f956c3c --- /dev/null +++ b/types/UI/Components/EntityModal/ExtrudeHoleModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ExtrudeHoleModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/EntityModal/ExtrudeHoleModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAK5E,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,MAAM,EAAE,WAAW,CAAC;CAAE,CAAC;IAC3E,OAAO,CAAC,KAAK,CAAW;IACZ,OAAO,CAAC,MAAM,CAGxB;gBACU,KAAK,KAAA;IAIjB,aAAa;IASb,yBAAyB;IAMzB,oBAAoB;IAKpB,MAAM;IAkCN,OAAO,CAAC,OAAO,CAWb;IACF,OAAO,CAAC,MAAM,CAGZ;CACL"} \ No newline at end of file diff --git a/types/UI/Components/LatticeDrawer.d.ts b/types/UI/Components/LatticeDrawer.d.ts new file mode 100644 index 0000000..d4770ee --- /dev/null +++ b/types/UI/Components/LatticeDrawer.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { LatticeDrawerStore } from '../Store/LatticeDrawerStore'; +export declare class LatticeDrawer extends React.Component<{ + store?: LatticeDrawerStore; +}, {}> { + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private ok; + private cancel; +} +//# sourceMappingURL=LatticeDrawer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/LatticeDrawer.d.ts.map b/types/UI/Components/LatticeDrawer.d.ts.map new file mode 100644 index 0000000..d7cbf69 --- /dev/null +++ b/types/UI/Components/LatticeDrawer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LatticeDrawer.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/LatticeDrawer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAajE,qBAEa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAAE,EAAE,EAAE,CAAC;IACnF,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAmBjB,oBAAoB;IAQb,MAAM;IAkJb,OAAO,CAAC,EAAE,CAeR;IACF,OAAO,CAAC,MAAM,CAGZ;CACL"} \ No newline at end of file diff --git a/types/UI/Components/MainContent/Content.d.ts b/types/UI/Components/MainContent/Content.d.ts new file mode 100644 index 0000000..208cae8 --- /dev/null +++ b/types/UI/Components/MainContent/Content.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +import './MainContent.less'; +export declare class ContentComponent extends React.Component<{ + store?: TopPanelStore; +}> { + private updateLog; + handleAddNewFile: () => Promise; + handleOpenFile: (fid: string) => Promise; + componentDidMount(): Promise; + render(): JSX.Element; +} +//# sourceMappingURL=Content.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MainContent/Content.d.ts.map b/types/UI/Components/MainContent/Content.d.ts.map new file mode 100644 index 0000000..150ec55 --- /dev/null +++ b/types/UI/Components/MainContent/Content.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/MainContent/Content.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,oBAAoB,CAAC;AAG5B,qBAEa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,CAAC;IAEjE,OAAO,CAAC,SAAS,CAA4D;IAEzF,gBAAgB,sBAKd;IACF,cAAc,QAAe,MAAM,mBAKjC;IACI,iBAAiB;IAoBvB,MAAM;CAuFT"} \ No newline at end of file diff --git a/types/UI/Components/MainContent/Login.d.ts b/types/UI/Components/MainContent/Login.d.ts new file mode 100644 index 0000000..bf3d465 --- /dev/null +++ b/types/UI/Components/MainContent/Login.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +import { IResponseData } from '../../../Common/Request'; +interface ILoginState { + user_name: string; + pass_word: string; +} +export declare function saveLoginInfos(data: IResponseData): void; +export default class Login extends React.Component<{ + store?: TopPanelStore; +}, ILoginState> { + isLoginIng: boolean; + constructor(props: any); + handleLogin: () => Promise; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=Login.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MainContent/Login.d.ts.map b/types/UI/Components/MainContent/Login.d.ts.map new file mode 100644 index 0000000..5e92ddc --- /dev/null +++ b/types/UI/Components/MainContent/Login.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Login.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/MainContent/Login.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAA2B,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAOjF,UAAU,WAAW;IAEjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,QAYjD;AAKD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,WAAW,CAAC;IAE3E,UAAU,UAAS;gBAEnB,KAAK,KAAA;IASjB,WAAW,sBAqCT;IAEF,MAAM;CAiGT"} \ No newline at end of file diff --git a/types/UI/Components/MainContent/MainContent.d.ts b/types/UI/Components/MainContent/MainContent.d.ts new file mode 100644 index 0000000..27c1f4f --- /dev/null +++ b/types/UI/Components/MainContent/MainContent.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +import './MainContent.less'; +export declare class MainContent extends React.Component<{ + store?: TopPanelStore; +}> { + UNSAFE_componentWillMount(): Promise; + render(): JSX.Element; +} +//# sourceMappingURL=MainContent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MainContent/MainContent.d.ts.map b/types/UI/Components/MainContent/MainContent.d.ts.map new file mode 100644 index 0000000..bafb036 --- /dev/null +++ b/types/UI/Components/MainContent/MainContent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MainContent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/MainContent/MainContent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,OAAO,oBAAoB,CAAC;AAO5B,qBAEa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,CAAC;IAElE,yBAAyB;IAsC/B,MAAM;CAyBT"} \ No newline at end of file diff --git a/types/UI/Components/MainContent/Regist.d.ts b/types/UI/Components/MainContent/Regist.d.ts new file mode 100644 index 0000000..e066b90 --- /dev/null +++ b/types/UI/Components/MainContent/Regist.d.ts @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +declare enum InputType { + PSW = 0, + ComfirmPSW = 1, + PHONE = 2, + OK = 3 +} +export default class Regist extends React.Component<{ + store?: TopPanelStore; +}> { + private errMsg; + private flag; + private inputIntent; + private SMSBtnText; + private pwdInputType1; + private pwdInputType2; + private registInput; + private openAgreement; + private phoneRegex; + private pswRegex; + constructor(props: any); + handleRegist: () => Promise; + handleCheckPhoneNum: (text: string) => Promise; + handleSMS: () => Promise; + private SetTime; + CheckPhoneNumFromLocalStorage(): void; + valueTest: (type: InputType) => Promise; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=Regist.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MainContent/Regist.d.ts.map b/types/UI/Components/MainContent/Regist.d.ts.map new file mode 100644 index 0000000..cfa9d74 --- /dev/null +++ b/types/UI/Components/MainContent/Regist.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Regist.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/MainContent/Regist.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAwB1D,aAAK,SAAS;IAEV,GAAG,IAAI;IACP,UAAU,IAAI;IACd,KAAK,IAAI;IACT,EAAE,IAAI;CACT;AAKD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAqB;IAEvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,WAAW,CAAe;IAC9C,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAwC;gBAC5C,KAAK,KAAA;IAgBjB,YAAY,sBA0DV;IACF,mBAAmB,SAAgB,MAAM,sBAMvC;IACF,SAAS,sBAoBP;IACF,OAAO,CAAC,OAAO,CAkBb;IAEF,6BAA6B;IA+B7B,SAAS,SAAgB,SAAS,mBA0EhC;IACF,MAAM;CAiKT"} \ No newline at end of file diff --git a/types/UI/Components/MaterialContainer.d.ts b/types/UI/Components/MaterialContainer.d.ts new file mode 100644 index 0000000..30ea592 --- /dev/null +++ b/types/UI/Components/MaterialContainer.d.ts @@ -0,0 +1,33 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { PhysicalMaterialRecord } from '../../DatabaseServices/PhysicalMaterialRecord'; +import { MaterialEditorLayout } from '../Layout/MaterialEditorLayout'; +import { IDirectoryProps } from './SourceManage/CommonPanel'; +export interface MaterialContainerProps { + material: PhysicalMaterialRecord; + onlineId?: string; + isNew?: boolean; + isOpen?: IObservableValue; + currentDir?: IDirectoryProps; + getData?: () => void; +} +export declare const MATCONTENTID = "matContent"; +/** + * 材质球编辑器的容器 + */ +export declare class MaterialContainer extends React.Component { + materialEditor: MaterialEditorLayout; + container: HTMLElement; + private _isUploading; + private event; + constructor(props: MaterialContainerProps); + handleOpen: () => void; + handleClose: () => void; + private handleUploadLogo; + handleUploadMtl: () => Promise; + handleUpdateMtl: () => Promise; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=MaterialContainer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MaterialContainer.d.ts.map b/types/UI/Components/MaterialContainer.d.ts.map new file mode 100644 index 0000000..9e63f18 --- /dev/null +++ b/types/UI/Components/MaterialContainer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialContainer.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/MaterialContainer.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,MAAM,WAAW,sBAAsB;IAEnC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,eAAe,CAAC;AAEzC;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,sBAAsB,EAAE,EAAE,CAAC;IAC9E,cAAc,EAAE,oBAAoB,CAAC;IACrC,SAAS,EAAE,WAAW,CAAC;IACX,OAAO,CAAC,YAAY,CAAS;IACzC,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,EAAE,sBAAsB;IAIzC,UAAU,aASR;IACF,WAAW,aAOT;IACF,OAAO,CAAC,gBAAgB,CAiBtB;IACF,eAAe,sBA4Bb;IACF,eAAe,sBAsBb;IACF,iBAAiB;IAwBjB,oBAAoB;IAUb,MAAM;CAmFhB"} \ No newline at end of file diff --git a/types/UI/Components/MaterialExplorer.d.ts b/types/UI/Components/MaterialExplorer.d.ts new file mode 100644 index 0000000..be3ca92 --- /dev/null +++ b/types/UI/Components/MaterialExplorer.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { MaterialTable } from '../../DatabaseServices/MaterialTable'; +/** + * 材质浏览器 + * 没有使用装饰器来实现右键菜单的原因: + * https://github.com/palantir/blueprint/issues/2972 +*/ +export declare class MaterialExplorer extends React.Component<{ + materialTable: MaterialTable; +}, {}> { + constructor(p: any, s: any); + componentDidMount(): void; + componentWillUnmount(): void; + handleDrop: (e: DragEvent) => void; + render(): JSX.Element; + handleCreateMaterial: () => void; +} +//# sourceMappingURL=MaterialExplorer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/MaterialExplorer.d.ts.map b/types/UI/Components/MaterialExplorer.d.ts.map new file mode 100644 index 0000000..cb8efee --- /dev/null +++ b/types/UI/Components/MaterialExplorer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialExplorer.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/MaterialExplorer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAqBrE;;;;EAIE;AACF,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,aAAa,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;gBAE5E,CAAC,KAAA,EAAE,CAAC,KAAA;IAIhB,iBAAiB;IAKjB,oBAAoB;IAIpB,UAAU,MAAO,SAAS,UA0BxB;IACF,MAAM;IA0CN,oBAAoB,aAKlB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ActivityLayerBoard.d.ts b/types/UI/Components/Modal/ActivityLayerBoard.d.ts new file mode 100644 index 0000000..dc3f388 --- /dev/null +++ b/types/UI/Components/Modal/ActivityLayerBoard.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { ActivityLayerBoardStore } from '../../Store/ActivityLayerBoardStore'; +interface IActivityLayerBoardProps { + store: ActivityLayerBoardStore; +} +export declare class ActivityLayerBoard extends React.Component { + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private changeShrink; + private ok; + private cancel; +} +export {}; +//# sourceMappingURL=ActivityLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ActivityLayerBoard.d.ts.map b/types/UI/Components/Modal/ActivityLayerBoard.d.ts.map new file mode 100644 index 0000000..a768921 --- /dev/null +++ b/types/UI/Components/Modal/ActivityLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActivityLayerBoard.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ActivityLayerBoard.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAQ9E,UAAU,wBAAwB;IAE9B,KAAK,EAAE,uBAAuB,CAAC;CAClC;AAOD,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC;IAC7E,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAWjB,oBAAoB;IAQb,MAAM;IAsMb,OAAO,CAAC,YAAY,CAiClB;IACF,OAAO,CAAC,EAAE,CAmBR;IACF,OAAO,CAAC,MAAM,CAGZ;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ArrayModal.d.ts b/types/UI/Components/Modal/ArrayModal.d.ts new file mode 100644 index 0000000..ee2be82 --- /dev/null +++ b/types/UI/Components/Modal/ArrayModal.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { ArrayStore } from '../../../Add-on/Array'; +export interface ArrayModalProps { + store: ArrayStore; +} +export declare class ArrayModal extends React.Component<{ + store: ArrayStore; +}, {}> { + private event; + constructor(props: any); + registerEvent(): void; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=ArrayModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ArrayModal.d.ts.map b/types/UI/Components/Modal/ArrayModal.d.ts.map new file mode 100644 index 0000000..06ae7da --- /dev/null +++ b/types/UI/Components/Modal/ArrayModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ArrayModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ArrayModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAiC,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAUlF,MAAM,WAAW,eAAe;IAE5B,KAAK,EAAE,UAAU,CAAC;CACrB;AACD,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;CAAE,EAAE,EAAE,CAAC;IACvE,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,KAAA;IAIjB,aAAa;IAqBb,yBAAyB;IAKzB,oBAAoB;IAMpB,MAAM;CAmET"} \ No newline at end of file diff --git a/types/UI/Components/Modal/CadModal.d.ts b/types/UI/Components/Modal/CadModal.d.ts new file mode 100644 index 0000000..ba341d6 --- /dev/null +++ b/types/UI/Components/Modal/CadModal.d.ts @@ -0,0 +1,57 @@ +import { ResizeDirection } from "re-resizable"; +import * as React from 'react'; +import { ResizableDelta } from "react-rnd"; +import { AnyObject } from '../../Store/BoardInterface'; +import { ModalPosition } from "./ModalInterface"; +import { IModalProps } from "./ModalsManage"; +export declare const DATA_KEY = "data-modalkey"; +export declare class CADModal { + private _rootModal?; + static ModalOldPosition: { + left: string; + top: string; + }; + container: HTMLElement; + IsModal: Boolean; + rndDiv: HTMLElement; + dragHandleEl: HTMLElement; + dhTopEnd: number; + dividerEl: HTMLElement; + dividerTopLast: number; + canMinimize: boolean; + canResize: boolean; + resizeSize: { + width: number; + height: number; + }; + Callback: Function; + private originDialogDisplayVal; + private minimizeEl; + private _mask; + private _canForceMax; + /**锁定后不能关闭和最大化 */ + IsLock: boolean; + constructor(_rootContainer: HTMLElement, _rootModal?: CADModal); + private RegisterEvent; + private onFocus; + static Create(rootContainer: HTMLElement, Component: React.ComponentType, props: T, option?: IModalProps): CADModal; + Render(Component: React.ComponentType, props: T, option?: IModalProps): void; + ChangeDragHandleTopValue(direction: ResizeDirection, delta: ResizableDelta): void; + Update(Component: React.ComponentType, props: T, option?: IModalProps): void; + SetPosition(pos: ModalPosition): void; + private MoveModal; + ExecCmd(data?: { + cname?: string; + [key: string]: any; + }): Promise; + Minimize(): void; + ScaleModalSize(): void; + ToggleCanMinimize(canMinimize?: boolean): void; + private ShowMasking; + private HideMasking; + Focus(): void; + RestoreZIndex(): void; + Destory(): void; + EndCmd(): void; +} +//# sourceMappingURL=CadModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/CadModal.d.ts.map b/types/UI/Components/Modal/CadModal.d.ts.map new file mode 100644 index 0000000..8e6d7d9 --- /dev/null +++ b/types/UI/Components/Modal/CadModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CadModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/CadModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAO,MAAM,WAAW,CAAC;AAKhD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,QAAQ,kBAAkB,CAAC;AAExC,qBAAa,QAAQ;IAoBwB,OAAO,CAAC,UAAU,CAAC;IAlB5D,MAAM,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;KAAE,CAA2B;IAClF,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,OAAO,CAAS;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,WAAW,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;KAAE,CAAC;IAC/C,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,iBAAiB;IACjB,MAAM,UAAS;gBACH,cAAc,EAAE,WAAW,EAAU,UAAU,CAAC,EAAE,QAAQ;IAStE,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,OAAO,CA4Bb;IACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAE,WAAgB;IAQpI,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAE,WAAgB;IAwFjG,wBAAwB,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc;IAkB1E,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,GAAE,WAAgB;IAgEjG,WAAW,CAAC,GAAG,EAAE,aAAa;IAsC9B,OAAO,CAAC,SAAS;IAuDX,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAY3D,QAAQ;IAwCR,cAAc;IAUd,iBAAiB,CAAC,WAAW,CAAC,EAAE,OAAO;IAIvC,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,WAAW;IAKnB,KAAK;IAKL,aAAa;IAIb,OAAO;IAQP,MAAM;CAIT"} \ No newline at end of file diff --git a/types/UI/Components/Modal/DrillingTemplateList.d.ts b/types/UI/Components/Modal/DrillingTemplateList.d.ts new file mode 100644 index 0000000..b24b6ce --- /dev/null +++ b/types/UI/Components/Modal/DrillingTemplateList.d.ts @@ -0,0 +1,33 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { IDirectoryProps } from '../SourceManage/CommonPanel'; +export interface IDrillTempListProps { + deleteFun?: (temp: { + module_id: any; + }) => void; + dataList?: any[]; + select?: (e: React.FormEvent, data: any) => void; + isRename: IObservableValue; + updata: (name: string, dir: IDirectoryProps, call: Function) => void; + getData?: () => void; + info: { + id: string; + name: string; + }; + selectIds?: Set; + showInfos?: boolean; +} +export declare class DrillingTemplateList extends React.Component { + private _cameraFiler; + constructor(props: any); + private renderToasterMessage; + render(): JSX.Element; + private handleMounseDown; + private showContextMenu; + private startEditorTopline; + private exitEditor; + handleUpdateTemp: () => Promise; +} +//# sourceMappingURL=DrillingTemplateList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/DrillingTemplateList.d.ts.map b/types/UI/Components/Modal/DrillingTemplateList.d.ts.map new file mode 100644 index 0000000..23146b2 --- /dev/null +++ b/types/UI/Components/Modal/DrillingTemplateList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillingTemplateList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/DrillingTemplateList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAU9D,MAAM,WAAW,mBAAmB;IAEhC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,MAAC;KAAE,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACnE,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAC;CAAE,CAAC;IAC3G,OAAO,CAAC,YAAY,CAAW;gBACnB,KAAK,KAAA;IAOjB,OAAO,CAAC,oBAAoB,CAc1B;IACK,MAAM;IA0Bb,OAAO,CAAC,gBAAgB,CAItB;IAGF,OAAO,CAAC,eAAe,CAsBrB;IACF,OAAO,CAAC,kBAAkB,CAoCxB;IACF,OAAO,CAAC,UAAU,CAUhB;IACF,gBAAgB,sBAkDd;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/DrillingTemplateManage.d.ts b/types/UI/Components/Modal/DrillingTemplateManage.d.ts new file mode 100644 index 0000000..44af3db --- /dev/null +++ b/types/UI/Components/Modal/DrillingTemplateManage.d.ts @@ -0,0 +1,14 @@ +import * as React from 'react'; +export declare class DrillingTemplateManage extends React.Component<{}> { + private canCreateTemplate; + private currentInfo; + renderNav: () => JSX.Element; + renderMenuItems: () => JSX.Element; + render(): JSX.Element; + handleTemplate: (name: string, currentDir: any, callback: Function) => Promise; + private handleCreateTemplate; + handleRenameTemp: (name: string) => Promise; + private drawTemplate; + private startCreateDrillingTemp; +} +//# sourceMappingURL=DrillingTemplateManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/DrillingTemplateManage.d.ts.map b/types/UI/Components/Modal/DrillingTemplateManage.d.ts.map new file mode 100644 index 0000000..b060539 --- /dev/null +++ b/types/UI/Components/Modal/DrillingTemplateManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillingTemplateManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/DrillingTemplateManage.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,qBACa,sBAAuB,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;IAC3D,OAAO,CAAC,iBAAiB,CAAyB;IACtC,OAAO,CAAC,WAAW,CAAwB;IACvD,SAAS,oBAaP;IACF,eAAe,oBAOb;IACK,MAAM;IAwEb,cAAc,SAAgB,MAAM,6BAAwB,QAAQ,mBA+BlE;IACF,OAAO,CAAC,oBAAoB,CA+D1B;IAEF,gBAAgB,SAAgB,MAAM,mBAcpC;IACF,OAAO,CAAC,YAAY,CAelB;IACF,OAAO,CAAC,uBAAuB,CAK7B;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/FrameManager.d.ts b/types/UI/Components/Modal/FrameManager.d.ts new file mode 100644 index 0000000..09445af --- /dev/null +++ b/types/UI/Components/Modal/FrameManager.d.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +export interface IFrameManageProps { +} +export declare class FrameManage extends React.Component { + private canCreateFrame; + private currentInfo; + constructor(props: any); + renderNav: () => JSX.Element; + renderMenuItems: () => JSX.Element; + render(): JSX.Element; + private startCreateFrame; + handleFrame: (name: string, currentDir: any, callback: Function) => Promise; + private handleCreateFrame; + handleRenameTopline: (name: string) => Promise; + private draw; +} +//# sourceMappingURL=FrameManager.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/FrameManager.d.ts.map b/types/UI/Components/Modal/FrameManager.d.ts.map new file mode 100644 index 0000000..e89f3c2 --- /dev/null +++ b/types/UI/Components/Modal/FrameManager.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FrameManager.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/FrameManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuB/B,MAAM,WAAW,iBAAiB;CAEjC;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAC/D,OAAO,CAAC,cAAc,CAAyB;IACnC,OAAO,CAAC,WAAW,CAAwB;gBAC3C,KAAK,KAAA;IAOjB,SAAS,oBAaP;IACF,eAAe,oBAOb;IACK,MAAM;IAkDb,OAAO,CAAC,gBAAgB,CAKtB;IACF,WAAW,SAAgB,MAAM,6BAAwB,QAAQ,mBA4B/D;IACF,OAAO,CAAC,iBAAiB,CAwEvB;IAEF,mBAAmB,SAAgB,MAAM,mBAcvC;IACF,OAAO,CAAC,IAAI,CAkDV;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/HardwareModal.d.ts b/types/UI/Components/Modal/HardwareModal.d.ts new file mode 100644 index 0000000..135ac86 --- /dev/null +++ b/types/UI/Components/Modal/HardwareModal.d.ts @@ -0,0 +1,69 @@ +import * as React from 'react'; +import { BaseHardwareStore } from '../../Store/RightPanelStore/HardwareStore'; +import { BoardModalType } from '../Board/BoardModal'; +interface IMetalsModal { + store: BaseHardwareStore; + type: BoardModalType; + title: string; +} +export declare function GetHardwareModal(Com: any, props: IMetalsModal): { + new (props: {} | Readonly<{}>): { + render(): JSX.Element; + ok: () => Promise; + cancel: () => void; + getOption: () => Promise; + context: any; + setState(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K>) | Pick<{}, K>, callback?: () => void): void; + forceUpdate(callback?: () => void): void; + readonly props: Readonly<{}> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + componentDidMount?(): void; + shouldComponentUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): boolean; + componentWillUnmount?(): void; + componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; + getSnapshotBeforeUpdate?(prevProps: Readonly<{}>, prevState: Readonly<{}>): any; + componentDidUpdate?(prevProps: Readonly<{}>, prevState: Readonly<{}>, snapshot?: any): void; + componentWillMount?(): void; + UNSAFE_componentWillMount?(): void; + componentWillReceiveProps?(nextProps: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{}>, nextContext: any): void; + componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void; + }; + new (props: {}, context: any): { + render(): JSX.Element; + ok: () => Promise; + cancel: () => void; + getOption: () => Promise; + context: any; + setState(state: {} | ((prevState: Readonly<{}>, props: Readonly<{}>) => {} | Pick<{}, K>) | Pick<{}, K>, callback?: () => void): void; + forceUpdate(callback?: () => void): void; + readonly props: Readonly<{}> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + componentDidMount?(): void; + shouldComponentUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): boolean; + componentWillUnmount?(): void; + componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; + getSnapshotBeforeUpdate?(prevProps: Readonly<{}>, prevState: Readonly<{}>): any; + componentDidUpdate?(prevProps: Readonly<{}>, prevState: Readonly<{}>, snapshot?: any): void; + componentWillMount?(): void; + UNSAFE_componentWillMount?(): void; + componentWillReceiveProps?(nextProps: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{}>, nextContext: any): void; + componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillUpdate?(nextProps: Readonly<{}>, nextState: Readonly<{}>, nextContext: any): void; + }; + contextType?: React.Context; +}; +export {}; +//# sourceMappingURL=HardwareModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/HardwareModal.d.ts.map b/types/UI/Components/Modal/HardwareModal.d.ts.map new file mode 100644 index 0000000..2738b87 --- /dev/null +++ b/types/UI/Components/Modal/HardwareModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/HardwareModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,UAAU,YAAY;IAElB,KAAK,EAAE,iBAAiB,CAAC;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,wBAAgB,gBAAgB,CAAC,GAAG,KAAA,EAAE,KAAK,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyGxD"} \ No newline at end of file diff --git a/types/UI/Components/Modal/InsertModal.d.ts b/types/UI/Components/Modal/InsertModal.d.ts new file mode 100644 index 0000000..00c4f1f --- /dev/null +++ b/types/UI/Components/Modal/InsertModal.d.ts @@ -0,0 +1,10 @@ +import * as React from "react"; +import { IFileInfo } from "../../../DatabaseServices/FileServer"; +export declare class InsertModal extends React.Component<{ + files: IFileInfo[]; + res: any; +}, {}> { + rootStyle: React.CSSProperties; + render(): JSX.Element; +} +//# sourceMappingURL=InsertModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/InsertModal.d.ts.map b/types/UI/Components/Modal/InsertModal.d.ts.map new file mode 100644 index 0000000..debd633 --- /dev/null +++ b/types/UI/Components/Modal/InsertModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InsertModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/InsertModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;CAAE,EAAE,EAAE,CAAC;IAEnF,SAAS,EAAE,KAAK,CAAC,aAAa,CAE5B;IACF,MAAM;CAwET"} \ No newline at end of file diff --git a/types/UI/Components/Modal/InterfereModal.d.ts b/types/UI/Components/Modal/InterfereModal.d.ts new file mode 100644 index 0000000..66dd82d --- /dev/null +++ b/types/UI/Components/Modal/InterfereModal.d.ts @@ -0,0 +1,18 @@ +import { Component } from 'react'; +import { Mesh } from 'three'; +import { Solid3D } from '../../../Common/InterfereUtil'; +interface IInterfereProps { + count: number; + data: Map; +} +export declare class InterfereModal extends Component { + currentIndex: number; + render(): JSX.Element; + private close; + private restore; + private next; + private previos; + private update; +} +export {}; +//# sourceMappingURL=InterfereModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/InterfereModal.d.ts.map b/types/UI/Components/Modal/InterfereModal.d.ts.map new file mode 100644 index 0000000..73a2eea --- /dev/null +++ b/types/UI/Components/Modal/InterfereModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InterfereModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/InterfereModal.tsx"],"names":[],"mappings":"AAGA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAQ,IAAI,EAA8B,MAAM,OAAO,CAAC;AAK/D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAExD,UAAU,eAAe;IAErB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;CACvC;AAED,qBACa,cAAe,SAAQ,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAClD,YAAY,SAAM;IAC9B,MAAM;IA8CN,OAAO,CAAC,KAAK,CAIX;IACF,OAAO,CAAC,OAAO,CAQb;IACF,OAAO,CAAC,IAAI,CAMV;IACF,OAAO,CAAC,OAAO,CAQb;IACF,OAAO,CAAC,MAAM,CAYZ;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/LightModal.d.ts b/types/UI/Components/Modal/LightModal.d.ts new file mode 100644 index 0000000..d532680 --- /dev/null +++ b/types/UI/Components/Modal/LightModal.d.ts @@ -0,0 +1,31 @@ +import * as React from 'react'; +import { Light } from '../../../DatabaseServices/Lights/Light'; +import { LightModalState } from '../../Store/RightPanelStore/LightStore'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +export declare class LightModal extends React.Component<{ + store?: RightPanelStore; +}, {}> { + isCollapse: boolean; + render(): JSX.Element; +} +interface ILightComponentProps { + data: LightModalState; + light: Light; + pars: [string, string][]; + isShowPos: boolean; + isSelectTarget: boolean; + hideColor?: boolean; + hasApplyBtn?: boolean; +} +export declare class LightDataCom extends React.Component { + target: string; + showHelper: boolean; + handleSelectTarget: () => Promise; + private UpdateTarget; + HandleFocus: () => void; + private applyChange; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=LightModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/LightModal.d.ts.map b/types/UI/Components/Modal/LightModal.d.ts.map new file mode 100644 index 0000000..bb340f7 --- /dev/null +++ b/types/UI/Components/Modal/LightModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LightModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/LightModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAK/D,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAM9E,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,EAAE,EAAE,CAAC;IACjE,UAAU,UAAS;IAC/B,MAAM;CAyBT;AAED,UAAU,oBAAoB;IAE1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC3D,MAAM,EAAE,MAAM,CAAW;IACzB,UAAU,EAAE,OAAO,CAAS;IACxC,kBAAkB,sBAkBhB;IACF,OAAO,CAAC,YAAY,CAKlB;IACF,WAAW,aAUT;IACF,OAAO,CAAC,WAAW,CA6CjB;IACF,yBAAyB;IAKzB,MAAM;CA+IT"} \ No newline at end of file diff --git a/types/UI/Components/Modal/MaskManage.d.ts b/types/UI/Components/Modal/MaskManage.d.ts new file mode 100644 index 0000000..ea4dd4f --- /dev/null +++ b/types/UI/Components/Modal/MaskManage.d.ts @@ -0,0 +1,17 @@ +/** + * 模态/非模态组件公用的蒙版类 + */ +export declare class MaskManage { + m_Masking: HTMLElement; + events: Function[]; + constructor(); + get IsShow(): boolean; + private RegisterEvent; + OnFocusEvent(): void; + /** + * isTransparent-是否透明,isLow-是否低层级的遮罩,低层级不覆盖已经显示的遮罩 + */ + ShowMask(isTransparent?: boolean, isLow?: boolean): void; + Clear(): void; +} +//# sourceMappingURL=MaskManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/MaskManage.d.ts.map b/types/UI/Components/Modal/MaskManage.d.ts.map new file mode 100644 index 0000000..15ac486 --- /dev/null +++ b/types/UI/Components/Modal/MaskManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaskManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/MaskManage.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,UAAU;IAEZ,SAAS,EAAE,WAAW,CAAC;IAC9B,MAAM,EAAE,QAAQ,EAAE,CAAM;;IAwBxB,IAAI,MAAM,YAGT;IAED,OAAO,CAAC,aAAa;IAQrB,YAAY;IAIZ;;OAEG;IACH,QAAQ,CAAC,aAAa,UAAQ,EAAE,KAAK,UAAQ;IAa7C,KAAK;CAQR"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalContainer.d.ts b/types/UI/Components/Modal/ModalContainer.d.ts new file mode 100644 index 0000000..27206d8 --- /dev/null +++ b/types/UI/Components/Modal/ModalContainer.d.ts @@ -0,0 +1,81 @@ +import React, { Component } from 'react'; +import { IconName } from '@blueprintjs/core'; +import { IConfigStore } from '../../Store/BoardStore'; +import { BoardModalType } from '../Board/BoardModal'; +interface IModalProps { + modalId?: string; + className?: string; + title: string; + close: () => void; + icon?: IconName; + hasConfig?: boolean; + store?: IConfigStore; + children?: JSX.Element | (JSX.Element[]); + footerChildren?: JSX.Element | (JSX.Element[]); + type?: BoardModalType; + bodyClass?: string; + bodyStyle?: React.CSSProperties; + footerStyle?: React.CSSProperties; + containerEl?: (el: any) => void; + logo?: boolean; + helpUrl?: string; +} +export declare class CommonModal extends Component { + render(): JSX.Element; +} +interface IModalContainer { + containerEl?: (el: any) => void; + modalId?: string; + className?: string; + children?: JSX.Element | JSX.Element[]; +} +export declare class ModalContainer extends Component { + render(): JSX.Element; +} +interface IModalHeaderProps { + title: string; + close: () => void; + icon?: IconName; + isMaxBtn?: boolean; + isPinBtn?: boolean; + logo?: boolean; + helpUrl?: string; +} +export declare class ModalHeader extends Component { + private isPin; + private isMax; + private pinBtnEl; + static defaultProps: { + logo: boolean; + }; + onPinBtnClick: (e: any) => void; + ChangeModalSize: () => void; + private renderIcon; + render(): JSX.Element; +} +interface IModalBodyProps { + bodyStyle?: React.CSSProperties; + children?: JSX.Element | JSX.Element[]; + className?: string; +} +export declare class ModalBody extends Component { + static defaultProps: { + className: string; + }; + render(): JSX.Element; +} +interface IModalFooterProps { + style?: React.CSSProperties; + hasConfig?: boolean; + store?: IConfigStore; + children?: JSX.Element | (JSX.Element[]); + type?: BoardModalType; +} +export declare class ModalFooter extends Component { + static defaultProps: { + hasConfig: boolean; + }; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ModalContainer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalContainer.d.ts.map b/types/UI/Components/Modal/ModalContainer.d.ts.map new file mode 100644 index 0000000..64ffbc3 --- /dev/null +++ b/types/UI/Components/Modal/ModalContainer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModalContainer.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ModalContainer.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalInterface.d.ts b/types/UI/Components/Modal/ModalInterface.d.ts new file mode 100644 index 0000000..b46f6dc --- /dev/null +++ b/types/UI/Components/Modal/ModalInterface.d.ts @@ -0,0 +1,19 @@ +export declare enum ModalPosition { + Center = "center", + Right = "right", + RightMid = "rightMid", + Left = "left", + Mouse = "mouse", + Top = "top", + Old = "old" +} +/** + *模态框状态 + * @export + * @enum {number} + */ +export declare enum ModalState { + Ok = 1, + Cancel = -1 +} +//# sourceMappingURL=ModalInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalInterface.d.ts.map b/types/UI/Components/Modal/ModalInterface.d.ts.map new file mode 100644 index 0000000..05d7876 --- /dev/null +++ b/types/UI/Components/Modal/ModalInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModalInterface.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ModalInterface.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IAErB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;CACd;AACD;;;;GAIG;AACH,oBAAY,UAAU;IAElB,EAAE,IAAI;IACN,MAAM,KAAK;CACd"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalsManage.d.ts b/types/UI/Components/Modal/ModalsManage.d.ts new file mode 100644 index 0000000..eb3fc96 --- /dev/null +++ b/types/UI/Components/Modal/ModalsManage.d.ts @@ -0,0 +1,67 @@ +/// +import { Pick } from '../../../Add-on/Array'; +import { Editor } from '../../../Editor/Editor'; +import { AnyObject } from '../../Store/BoardInterface'; +import { CADModal } from './CadModal'; +import { ModalPosition, ModalState } from './ModalInterface'; +import './ModalStyle/Modal.less'; +export interface IModalResult { + Status: ModalState | Pick; + Data?: T; +} +export interface IModalProps { + position?: ModalPosition; + /**允许缩放模态框 */ + resizable?: boolean; + /**是否允许最小化 */ + canMinimize?: boolean; + /**是否为模态框 */ + isModal?: boolean; + /**是否最大化 */ + isMax?: boolean; + /**根模态框 */ + root?: CADModal; + /**可以在命令执行中放大 */ + canForceMax?: boolean; +} +export declare class ModalManage { + private ed; + m_PromisRes: (res: IModalResult) => void; + private m_ModalContainer; + stopKeyDownEvent: boolean; + private _currentFocusKey; + private _List; + private _Show; + IsCtrlDown: boolean; + IsAltDown: boolean; + constructor(ed: Editor); + get IsModal(): Boolean; + get CurrentModal(): CADModal; + get CurrentModalKey(): string; + private RegisterEvent; + onFocus(e: FocusEvent): void; + OnKeyDown(e: KeyboardEvent): void; + onKeyUp(e: KeyboardEvent): void; + RenderModeless(Component: React.ComponentType, props?: T, option?: IModalProps): void; + RenderModal(Component: React.ComponentType, props?: T, option?: IModalProps): void; + EndExecingCmd(): Promise; + SetCallback(callback: Function): void; + ExecCmd(data?: { + cname?: string; + [key: string]: any; + }): Promise; + Wait(): Promise; + get Show(): boolean; + set Show(isShow: boolean); + set Visible(v: boolean); + ToggleShow(): void; + MinAll(): void; + ChangeFoucus(key?: string): void; + RestoreZIndex(): void; + private Close; + private Clear; + Destory(): void; + DestoryAndExec(data?: IModalResult, isClose?: boolean): Promise; + DestoryAll(): void; +} +//# sourceMappingURL=ModalsManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ModalsManage.d.ts.map b/types/UI/Components/Modal/ModalsManage.d.ts.map new file mode 100644 index 0000000..a91f188 --- /dev/null +++ b/types/UI/Components/Modal/ModalsManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModalsManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ModalsManage.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAO7C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,yBAAyB,CAAC;AAEjC,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IAEjC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,aAAa;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU;IACV,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,gBAAgB;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,WAAW;IAWR,OAAO,CAAC,EAAE;IATtB,WAAW,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,gBAAgB,CAAc;IACtC,gBAAgB,UAAS;IACzB,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,KAAK,CAAQ;IACrB,UAAU,UAAS;IACnB,SAAS,UAAS;gBAEE,EAAE,EAAE,MAAM;IAW9B,IAAI,OAAO,YAGV;IACD,IAAI,YAAY,aAGf;IACD,IAAI,eAAe,WAGlB;IAED,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,CAAC,EAAE,UAAU;IAgBrB,SAAS,CAAC,CAAC,EAAE,aAAa;IAmC1B,OAAO,CAAC,CAAC,EAAE,aAAa;IAcxB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAE,WAAgB;IA0B1G,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAE,WAAgB;IAgBjG,aAAa;IAQnB,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAIxB,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAAE;IAW3D,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAI7B,IAAI,IAAI,IAIS,OAAO,CADvB;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAIvB;IACD,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,EAGrB;IACD,UAAU;IAQV,MAAM;IAQN,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM;IAezB,aAAa;IAKb,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,KAAK;IAUb,OAAO;IAOD,cAAc,CAAC,IAAI,GAAE,YAAwC,EAAE,OAAO,UAAO;IAgBnF,UAAU;CAYb"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts b/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts new file mode 100644 index 0000000..70f6fdc --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts @@ -0,0 +1,7 @@ +import * as React from 'react'; +export declare class ChaiDanPanel extends React.Component { + private chaidanUiData; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=ChaiDanModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts.map b/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts.map new file mode 100644 index 0000000..58e1fad --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/ChaiDanModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ChaiDanModal.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/ChaiDanModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS;IAE7C,OAAO,CAAC,aAAa,CAAiB;IACtC,yBAAyB;IAIzB,MAAM;CAoET"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts b/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts new file mode 100644 index 0000000..be65b36 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts @@ -0,0 +1,36 @@ +import React = require("react"); +import { Singleton } from "../../../../Common/Singleton"; +export declare enum EOptionTabId { + File = "file", + Show = "xs", + Sys = "sys", + Draw = "ht", + ChaiDan = "chaidan", + Perf = "perf" +} +export declare class ConfigStore extends Singleton { + oldBgcolor: string; + oldLyBg: string; + checkSealing: boolean; + sealingArr: [string, string][]; + OnCanel: () => void; + OnOK: () => Promise; +} +/** + * 选项配置对话框(右键O呼出) + */ +export declare class ConfigDialog extends React.Component<{ + store: ConfigStore; +}> { + private selectedTabId; + private curFileTitle; + optionModal: HTMLElement; + private event; + constructor(props: any); + RegisterHandleKeyBoardEvent(): void; + componentDidMount(): Promise; + componentWillUnmount(): void; + getFileName: () => Promise; + render(): JSX.Element; +} +//# sourceMappingURL=ConfigDialog.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts.map b/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts.map new file mode 100644 index 0000000..e989d6a --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/ConfigDialog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ConfigDialog.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/ConfigDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAQhC,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAiBzD,oBAAY,YAAY;IAEpB,IAAI,SAAS;IACb,IAAI,OAAO;IACX,GAAG,QAAQ;IACX,IAAI,OAAO;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;CAChB;AAED,qBAAa,WAAY,SAAQ,SAAS;IAEtC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IACJ,YAAY,UAAS;IACrB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAA8C;IACxF,OAAO,aAcL;IACF,IAAI,sBAwCF;CACL;AAED;;GAEG;AACH,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;CAAE,CAAC;IAE1D,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAQ;IACxC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,KAAA;IAQjB,2BAA2B;IAgBrB,iBAAiB;IAgBvB,oBAAoB;IAKpB,WAAW,sBAOT;IACF,MAAM;CAuDT"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts b/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts new file mode 100644 index 0000000..c426ae3 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts @@ -0,0 +1,14 @@ +import React = require("react"); +import { ColorResult } from "react-color"; +import { ConfigStore } from "./ConfigDialog"; +export declare class DisplayConfigPanel extends React.Component<{ + store: ConfigStore; +}> { + private _OpenColorPick; + _AAType: string; + UNSAFE_componentWillMount(): void; + handleChangeColor: (color: ColorResult) => void; + render(): JSX.Element; + handleClick: () => void; +} +//# sourceMappingURL=DisplayConfigPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts.map b/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts.map new file mode 100644 index 0000000..aad73a0 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/DisplayConfigPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DisplayConfigPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/DisplayConfigPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAIhC,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AAIxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAwB7C,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;CAAE,CAAC;IAEhE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,SAAQ;IAC3B,yBAAyB;IAIzB,iBAAiB,UAAW,WAAW,UAQrC;IACF,MAAM;IAwDN,WAAW,aAGT;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts b/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts new file mode 100644 index 0000000..afe5f79 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { UserConfig, IMaxSizeProps } from '../../../../Editor/UserConfig'; +import { IUiOption } from '../../../Store/BoardInterface'; +import { ConfigStore } from './ConfigDialog'; +interface IConfigProps { + config: UserConfig; + store: ConfigStore; +} +export declare class DrawConfigPanel extends React.Component { + maxSizeConfig: IUiOption; + private oldShowLine; + private toggleDrillingReactor; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=DrawConfigPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts.map b/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts.map new file mode 100644 index 0000000..60f158f --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/DrawConfigPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawConfigPanel.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/DrawConfigPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAc,MAAM,+BAA+B,CAAC;AAKtF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAK1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,UAAU,YAAY;IAElB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;CACtB;AAED,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IACtD,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACpD,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,qBAAqB,CAK3B;IACF,yBAAyB;IAMzB,oBAAoB;IAiBb,MAAM;CAwHhB"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/FrameList.d.ts b/types/UI/Components/Modal/OptionModal/FrameList.d.ts new file mode 100644 index 0000000..a906b96 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/FrameList.d.ts @@ -0,0 +1,35 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { IDirectoryProps } from '../../SourceManage/CommonPanel'; +export interface IToplineListProps { + deleteFun?: (topline?: { + topline_id: any; + }) => void; + dataList?: any[]; + select?: (e: React.FormEvent, data: any) => void; + draw: (id: string) => void; + isRename: IObservableValue; + updata: (name: string, dir: IDirectoryProps, call: Function) => void; + getData?: () => void; + info: { + id: string; + name: string; + }; + selectIds?: Set; + showInfos?: boolean; +} +export declare class FrameList extends React.Component { + private _cameraFiler; + constructor(props: any); + private handleDbClick; + private handleMounseDown; + private exitEditor; + private renderToasterMessage; + private startEditorFrame; + private handleUpdateFrame; + private showContextMenu; + render(): JSX.Element; +} +//# sourceMappingURL=FrameList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/FrameList.d.ts.map b/types/UI/Components/Modal/OptionModal/FrameList.d.ts.map new file mode 100644 index 0000000..6351c95 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/FrameList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FrameList.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/FrameList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKjE,MAAM,WAAW,iBAAiB;IAE9B,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,MAAC;KAAE,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAC;CAAE,CAAC;IAC9F,OAAO,CAAC,YAAY,CAAW;gBACnB,KAAK,KAAA;IAOjB,OAAO,CAAC,aAAa,CAGnB;IACF,OAAO,CAAC,gBAAgB,CAItB;IACF,OAAO,CAAC,UAAU,CAUhB;IACF,OAAO,CAAC,oBAAoB,CAc1B;IACF,OAAO,CAAC,gBAAgB,CAoCtB;IACF,OAAO,CAAC,iBAAiB,CAqCvB;IAEF,OAAO,CAAC,eAAe,CAgCrB;IACK,MAAM;CA2BhB"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts b/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts new file mode 100644 index 0000000..ab8c2ab --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +export interface IPerformancePanelProps { +} +export declare class PerformancePanel extends React.Component { + private autorun; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=PerformancePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts.map b/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts.map new file mode 100644 index 0000000..d94f22a --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/PerformancePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PerformancePanel.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/PerformancePanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,sBAAsB;CAEtC;AAED,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC;IACzE,OAAO,CAAC,OAAO,CAAW;IAC1B,iBAAiB;IAqCjB,oBAAoB;IAKb,MAAM;CAuBhB"} \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts b/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts new file mode 100644 index 0000000..f4a7142 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +export declare class SystemConfigPanel extends React.Component { + private systemUiData; + private cursorUiData; + private saveUiData; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=SystemConfig.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts.map b/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts.map new file mode 100644 index 0000000..66aea80 --- /dev/null +++ b/types/UI/Components/Modal/OptionModal/SystemConfig.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SystemConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/Modal/OptionModal/SystemConfig.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,qBACa,iBAAkB,SAAQ,KAAK,CAAC,SAAS;IAElD,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,UAAU,CAAiB;IACnC,yBAAyB;IAMzB,MAAM;CA4FT"} \ No newline at end of file diff --git a/types/UI/Components/Modal/ProcessingGroupModal.d.ts b/types/UI/Components/Modal/ProcessingGroupModal.d.ts new file mode 100644 index 0000000..bffeaad --- /dev/null +++ b/types/UI/Components/Modal/ProcessingGroupModal.d.ts @@ -0,0 +1,81 @@ +import React from "react"; +import { ITreeNode } from "@blueprintjs/core"; +import '../../Css/ProcessingGroupModal.less'; +import { ProcessingGroupRecord } from "../../../DatabaseServices/ProcessingGroup/ProcessingGroupRecord"; +import { Entity } from "../../../DatabaseServices/Entity/Entity"; +import { CADObject } from "../../../DatabaseServices/CADObject"; +import { Singleton } from "../../../Common/Singleton"; +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { IConfigStore } from "../../Store/BoardStore"; +import { IConfigOption } from "../Board/UserConfig"; +interface EntityNodeData { + self: CADObject; + parent: ProcessingGroupRecord; +} +interface TemplatePgData { + nodeName: string; + brarr: Board[]; +} +interface ProcessingGroupModalState { + nodes: ITreeNode[]; + rightNodes: ITreeNode[]; + canAlertOpen1: boolean; + canAlertOpen2: boolean; + alertType: number; +} +export declare class ProcessingGroupModalStore extends Singleton implements IConfigStore { + flag: number; + addEnts: Entity[]; + checkEnts: Entity[]; + selectedLeftNodeSet: Set; + selectedRightNodeSet: Set; + selectedGroupSet: Set; + selectedObjectSet: Set; + selectedTempPgs: TemplatePgData[]; + tempPgs: TemplatePgData[]; + expandedNodesId: any[]; + processGroupCategory: string[]; + InitOption: () => void; + SaveConfig: () => IConfigOption; + ResetData: () => void; + configName: string; + configsNames: string[]; + UpdateOption: Function; +} +export declare class ProcessingGroupModal extends React.Component<{ + store: ProcessingGroupModalStore; +}, ProcessingGroupModalState> { + private canCreateGroup; + private pgCategoryMap; + private getNodeID; + private removeFuncs; + constructor(props: any); + UNSAFE_componentWillMount(): Promise; + componentDidMount(): void; + componentWillUnmount(): void; + CheckSelect: () => void; + /** + * 添加已选择的实体 + * type:number + * 0: 覆盖, 1: 新增 + */ + private AddChildFromSelect; + private parseNodes; + RecoverSelectedNode: (nodes: ITreeNode[], leftNodes: ITreeNode[]) => void; + private HandleNodeSelect; + private forEachNode; + private HandleNodeCollapse; + _Return: () => void; + private AddProcessGroup; + DelGroup: (g: ProcessingGroupRecord) => void; + private DelAlertConfirm; + private ShowGroups; + private ClearSelect; + private Exec; + private ShowSelectBoards; + private AddProcessingGroup; + private UpdateProcessingGroup; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ProcessingGroupModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/ProcessingGroupModal.d.ts.map b/types/UI/Components/Modal/ProcessingGroupModal.d.ts.map new file mode 100644 index 0000000..cd842ee --- /dev/null +++ b/types/UI/Components/Modal/ProcessingGroupModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ProcessingGroupModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/ProcessingGroupModal.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Components/Modal/RecycleBin.d.ts b/types/UI/Components/Modal/RecycleBin.d.ts new file mode 100644 index 0000000..d7cf461 --- /dev/null +++ b/types/UI/Components/Modal/RecycleBin.d.ts @@ -0,0 +1,40 @@ +import * as React from 'react'; +export interface IRecycleBinProps { +} +interface IRecycleFile { + recycle_id: string; + rela_name: string; + rela_logo: string; + rela_type: string; + dir_path: string; + size: string; + delete_date: string; +} +export declare class RecycleBin extends React.Component { + isLoading: boolean; + dataList: IRecycleFile[]; + pageData: { + count: number; + currentPage: number; + pageCount: number; + }; + private container; + private tool; + private selectId; + isCtrlDown: boolean; + private removeFuncs; + renderLogo: (data: IRecycleFile) => JSX.Element; + renderMenu: () => JSX.Element; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private GetData; + handleMouseDown: (e: React.MouseEvent) => void; + private showContextMenu; + handleClickItem: (e: React.MouseEvent) => void; + handleDeleteFile: () => Promise; + handleRecycleFile: () => Promise; + getType: (data: IRecycleFile) => string; +} +export {}; +//# sourceMappingURL=RecycleBin.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/RecycleBin.d.ts.map b/types/UI/Components/Modal/RecycleBin.d.ts.map new file mode 100644 index 0000000..a783035 --- /dev/null +++ b/types/UI/Components/Modal/RecycleBin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RecycleBin.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/RecycleBin.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiB/B,MAAM,WAAW,gBAAgB;CAEhC;AACD,UAAU,YAAY;IAElB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAID,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACjD,SAAS,UAAQ;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,QAAQ;;;;MAIlB;IACF,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,IAAI,CAAiB;IACjB,OAAO,CAAC,QAAQ,CAAqB;IACjD,UAAU,EAAE,OAAO,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAkB;IACrC,UAAU,SAAU,YAAY,iBAkB9B;IACF,UAAU,oBA0CR;IACF,iBAAiB;IAyCjB,oBAAoB;IAOb,MAAM;IAyDb,OAAO,CAAC,OAAO,CAqBb;IACF,eAAe,MAAO,gBAAgB,CAAC,WAAW,CAAC,UAOjD;IACF,OAAO,CAAC,eAAe,CAerB;IACF,eAAe,MAAO,gBAAgB,CAAC,aAAa,CAAC,UASnD;IACF,gBAAgB,sBAsBd;IACF,iBAAiB,sBAaf;IACF,OAAO,SAAU,YAAY,YAa3B;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Modal/SavaAsModal.d.ts b/types/UI/Components/Modal/SavaAsModal.d.ts new file mode 100644 index 0000000..42fc7b1 --- /dev/null +++ b/types/UI/Components/Modal/SavaAsModal.d.ts @@ -0,0 +1,24 @@ +import * as React from 'react'; +import { ITreeNode } from '@blueprintjs/core'; +interface ISaveAsProps { + currentName: string; +} +export declare class SaveAsModal extends React.Component { + private currentDirId; + private event; + constructor(props: any); + componentDidMount(): Promise; + componentWillUnmount(): void; + render(): JSX.Element; + private handleNodeCollapse; + private handleNodeClick; + private SelectNode; + private forEachNode; + private Save; + private Cancel; +} +export {}; +//# sourceMappingURL=SavaAsModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/SavaAsModal.d.ts.map b/types/UI/Components/Modal/SavaAsModal.d.ts.map new file mode 100644 index 0000000..3524eca --- /dev/null +++ b/types/UI/Components/Modal/SavaAsModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SavaAsModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/SavaAsModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAkD,MAAM,mBAAmB,CAAC;AAW9F,UAAU,YAAY;IAElB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE,CAAC;IACrF,OAAO,CAAC,YAAY,CAAM;IACtC,OAAO,CAAC,KAAK,CAAW;gBACZ,KAAK,KAAA;IAQX,iBAAiB;IAgBvB,oBAAoB;IAKb,MAAM;IAoCb,OAAO,CAAC,kBAAkB,CAIxB;IACF,OAAO,CAAC,eAAe,CAIrB;IAEF,OAAO,CAAC,UAAU,CAShB;IAEF,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,IAAI,CAUV;IACF,OAAO,CAAC,MAAM;CAIjB"} \ No newline at end of file diff --git a/types/UI/Components/Modal/SnapModal.d.ts b/types/UI/Components/Modal/SnapModal.d.ts new file mode 100644 index 0000000..9633f87 --- /dev/null +++ b/types/UI/Components/Modal/SnapModal.d.ts @@ -0,0 +1,24 @@ +import * as React from "react"; +import { DownPanelStore, ISnapData } from "../../Store/DownPanelStore"; +export interface ICheckboxOption { + data: ISnapData; + onChange?: Function; +} +/** + * 对象捕捉设置 + */ +export declare class SnapModal extends React.Component<{ + store: DownPanelStore; +}, {}> { + private event; + RegisterHandleKeyBoardEvent: () => void; + UNSAFE_componentWillMount(): void; + OnOK: () => void; + OnCanel(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export declare class SnapModalItem extends React.Component { + render(): JSX.Element; +} +//# sourceMappingURL=SnapModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Modal/SnapModal.d.ts.map b/types/UI/Components/Modal/SnapModal.d.ts.map new file mode 100644 index 0000000..cafe359 --- /dev/null +++ b/types/UI/Components/Modal/SnapModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SnapModal.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Modal/SnapModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAM,KAAK,MAAM,OAAO,CAAC;AAOhC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvE,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;GAEG;AACH,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,cAAc,CAAC;CAAE,EAAE,EAAE,CAAC;IAE1E,OAAO,CAAC,KAAK,CAAW;IACxB,2BAA2B,aAqCzB;IACF,yBAAyB;IAKzB,IAAI,aAKF;IACF,OAAO;IAIP,oBAAoB;IAMpB,MAAM;CA6FT;AAED,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAEnE,MAAM;CAkBT"} \ No newline at end of file diff --git a/types/UI/Components/Panel.d.ts b/types/UI/Components/Panel.d.ts new file mode 100644 index 0000000..32a974a --- /dev/null +++ b/types/UI/Components/Panel.d.ts @@ -0,0 +1,33 @@ +import * as React from 'react'; +import { DownPanelStore } from '../Store/DownPanelStore'; +import { TopPanelStore } from '../Store/TopPanelStore'; +interface TopPanelState { + isCollapse: boolean; + panelType: string; + theme: ToggleBtnIcon; +} +declare enum ToggleBtnIcon { + FLASH = "flash", + MOON = "moon" +} +export declare class TopPanel extends React.Component<{ + store?: TopPanelStore; +}, {}> { + state: TopPanelState; + constructor(props: any); + handleClick: (str: any) => void; + handleCancel: () => void; + handleToggleTheme: () => void; + handleLoginOut: () => Promise; + render(): JSX.Element; + private renderLogined; + private openFileManage; +} +export declare class DownPanel extends React.Component<{ + store?: DownPanelStore; +}, {}> { + private handleChange; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=Panel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Panel.d.ts.map b/types/UI/Components/Panel.d.ts.map new file mode 100644 index 0000000..4046ef0 --- /dev/null +++ b/types/UI/Components/Panel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Panel.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAUvD,UAAU,aAAa;IAEnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;CACxB;AACD,aAAK,aAAa;IAEd,KAAK,UAAU;IACf,IAAI,SAAS;CAChB;AAQD,qBAEa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAEzE,KAAK,EAAE,aAAa,CAAC;gBACT,KAAK,KAAA;IASjB,WAAW,qBAGT;IACF,YAAY,aAGV;IACF,iBAAiB,aAcf;IACF,cAAc,sBAWZ;IACF,MAAM;IAkEN,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,cAAc,CAMpB;CACL;AAGD,qBAEa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC;CAAE,EAAE,EAAE,CAAC;IAE3E,OAAO,CAAC,YAAY,CAYlB;IACF,MAAM;CA2FT"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/BoardPropsComponent.d.ts b/types/UI/Components/RightPanel/BoardPropsComponent.d.ts new file mode 100644 index 0000000..3d59355 --- /dev/null +++ b/types/UI/Components/RightPanel/BoardPropsComponent.d.ts @@ -0,0 +1,69 @@ +import React = require("react"); +import { Board } from "../../../DatabaseServices/Entity/Board"; +export declare const BoardPropsComponent: { + new (props: any): { + _ConfigOption: import("../../Store/BoardInterface").SingleBoardOption; + _ProcessOption: import("../../Store/BoardInterface").BoardProcessOption; + _GrooveOption: import("../../Store/BoardInterface").IGrooveOption; + drillsOption: import("../../../Add-on/DrawDrilling/HoleUtils").IRectHoleOption; + _CurrentBoard: import("mobx").IObservableValue; + _IsSpecialBoard: import("mobx").IObservableValue; + canDrawSpecial: import("mobx").IObservableValue; + canModeling: import("mobx").IObservableValue; + remarks: [string, string][]; + otherBoardData: { + isChaiDan: boolean; + } & import("mobx").IObservableObject; + _UIConfigOPtion: import("../../Store/BoardInterface").IUiOption; + readonly CurrentBoard: Board; + render(): JSX.Element; + setBrConfig: (() => void) & import("mobx").IAction; + InitRectBoardDrillOption: (() => void) & import("mobx").IAction; + SetRectHighDrill: () => void; + handleComfirmOption: () => void; + handleChangeCurrentBoard: (br: Board) => void; + context: any; + setState(state: {} | ((prevState: Readonly<{}>, props: Readonly<{ + board: Board; + }>) => {} | Pick<{}, K>) | Pick<{}, K>, callback?: () => void): void; + forceUpdate(callback?: () => void): void; + readonly props: Readonly<{ + board: Board; + }> & Readonly<{ + children?: React.ReactNode; + }>; + state: Readonly<{}>; + refs: { + [key: string]: React.ReactInstance; + }; + componentDidMount?(): void; + shouldComponentUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): boolean; + componentWillUnmount?(): void; + componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void; + getSnapshotBeforeUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>): any; + componentDidUpdate?(prevProps: Readonly<{ + board: Board; + }>, prevState: Readonly<{}>, snapshot?: any): void; + componentWillMount?(): void; + UNSAFE_componentWillMount?(): void; + componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + UNSAFE_componentWillReceiveProps?(nextProps: Readonly<{ + board: Board; + }>, nextContext: any): void; + componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + UNSAFE_componentWillUpdate?(nextProps: Readonly<{ + board: Board; + }>, nextState: Readonly<{}>, nextContext: any): void; + }; + displayName: string; + contextType?: React.Context; +}; +//# sourceMappingURL=BoardPropsComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/BoardPropsComponent.d.ts.map b/types/UI/Components/RightPanel/BoardPropsComponent.d.ts.map new file mode 100644 index 0000000..97b2958 --- /dev/null +++ b/types/UI/Components/RightPanel/BoardPropsComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardPropsComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/BoardPropsComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAShC,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AA6G/D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAC"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts b/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts new file mode 100644 index 0000000..be048e4 --- /dev/null +++ b/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts @@ -0,0 +1,7 @@ +import React = require("react"); +import { TabId } from "@blueprintjs/core"; +export declare class BoardTemplatePanel extends React.Component { + tabId: TabId; + render(): JSX.Element; +} +//# sourceMappingURL=BoardTemplatePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts.map b/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts.map new file mode 100644 index 0000000..3bca29c --- /dev/null +++ b/types/UI/Components/RightPanel/BoardTemplatePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardTemplatePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/BoardTemplatePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAChC,OAAO,EAAa,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIrD,qBAEa,kBAAmB,SAAQ,KAAK,CAAC,SAAS;IAEvC,KAAK,EAAE,KAAK,CAAa;IACrC,MAAM;CAgBT"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/CommonMetalPanel.d.ts b/types/UI/Components/RightPanel/CommonMetalPanel.d.ts new file mode 100644 index 0000000..b18e6d8 --- /dev/null +++ b/types/UI/Components/RightPanel/CommonMetalPanel.d.ts @@ -0,0 +1,17 @@ +import * as React from 'react'; +import { BaseHardwareStore } from '../../Store/RightPanelStore/HardwareStore'; +export interface ICommonMetalPanelProps { + store: BaseHardwareStore; + isTopline?: boolean; +} +export declare class CommonMetalPanel extends React.Component { + private par; + private pars1; + private pars2; + private pars3; + private size; + private length; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=CommonMetalPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/CommonMetalPanel.d.ts.map b/types/UI/Components/RightPanel/CommonMetalPanel.d.ts.map new file mode 100644 index 0000000..e63d6eb --- /dev/null +++ b/types/UI/Components/RightPanel/CommonMetalPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommonMetalPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/CommonMetalPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAM9E,MAAM,WAAW,sBAAsB;IAEnC,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,sBAAsB,CAAC;IACzE,OAAO,CAAC,GAAG,CAA2F;IACtG,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,KAAK,CAA6E;IAC1F,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,yBAAyB;IAclB,MAAM;CAqIhB"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts b/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts new file mode 100644 index 0000000..fa53fbc --- /dev/null +++ b/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +import { CompositeHardwareStore } from '../../Store/RightPanelStore/HardwareStore'; +interface ICompositeMatalPanelPanelProps { + store: CompositeHardwareStore; +} +export declare class CompositeMatalPanel extends React.Component { + render(): JSX.Element; + private draw; + private changeType; +} +export {}; +//# sourceMappingURL=CompositeMetalsPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts.map b/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts.map new file mode 100644 index 0000000..1d7ef80 --- /dev/null +++ b/types/UI/Components/RightPanel/CompositeMetalsPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CompositeMetalsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/CompositeMetalsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AAanF,UAAU,8BAA8B;IAEpC,KAAK,EAAE,sBAAsB,CAAC;CACjC;AAED,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC,8BAA8B,CAAC;IAC7E,MAAM;IA0Cb,OAAO,CAAC,IAAI,CAgCV;IACF,OAAO,CAAC,UAAU,CAKhB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/DrillComponent.d.ts b/types/UI/Components/RightPanel/DrillComponent.d.ts new file mode 100644 index 0000000..3e791f1 --- /dev/null +++ b/types/UI/Components/RightPanel/DrillComponent.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +export declare class DrillingComponent extends React.Component<{ + store?: RightPanelStore; +}> { + render(): JSX.Element; + private ok; + private exit; +} +//# sourceMappingURL=DrillComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/DrillComponent.d.ts.map b/types/UI/Components/RightPanel/DrillComponent.d.ts.map new file mode 100644 index 0000000..6b8e8c4 --- /dev/null +++ b/types/UI/Components/RightPanel/DrillComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/DrillComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAK9E,qBAEa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAEhF,MAAM;IAkEN,OAAO,CAAC,EAAE,CAIR;IACF,OAAO,CAAC,IAAI;CAIf"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/MatalsPanel.d.ts b/types/UI/Components/RightPanel/MatalsPanel.d.ts new file mode 100644 index 0000000..52bcff8 --- /dev/null +++ b/types/UI/Components/RightPanel/MatalsPanel.d.ts @@ -0,0 +1,11 @@ +import { TabId } from '@blueprintjs/core'; +import * as React from 'react'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +export interface IMatalPanelProps { + store?: RightPanelStore; +} +export declare class MatalPanel extends React.Component { + tabId: TabId; + render(): JSX.Element; +} +//# sourceMappingURL=MatalsPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/MatalsPanel.d.ts.map b/types/UI/Components/RightPanel/MatalsPanel.d.ts.map new file mode 100644 index 0000000..7efe44b --- /dev/null +++ b/types/UI/Components/RightPanel/MatalsPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MatalsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/MatalsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,EAAQ,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,WAAW,gBAAgB;IAE7B,KAAK,CAAC,EAAE,eAAe,CAAC;CAC3B;AASD,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACjD,KAAK,EAAE,KAAK,CAAkB;IACnC,MAAM;CAmBhB"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts b/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts new file mode 100644 index 0000000..7d21146 --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts @@ -0,0 +1,40 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { IDirectoryProps } from '../../SourceManage/CommonPanel'; +import { IKnifeProps, IUiOption } from '../../../Store/BoardInterface'; +export interface IKnifeListProps { + deleteFun?: (topline: { + topline_id: any; + }) => void; + dataList?: any[]; + select?: (e: React.FormEvent, data: any) => void; + draw: (id: string) => void; + isRename: IObservableValue; + updata: (name: string, dir: IDirectoryProps, call: Function) => void; + getData?: () => void; + info: { + id: string; + name: string; + props: IKnifeProps; + }; + selectIds?: Set; + showInfos?: boolean; +} +export declare class KnifeList extends React.Component { + private _cameraFiler; + uiData: IUiOption; + private originProps; + constructor(props: any); + private handleDbClick; + private handleMounseDown; + private exitEditor; + private renderToasterMessage; + private startEditorTopline; + private handleUpdateKnife; + private showContextMenu; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=KnifeList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts.map b/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts.map new file mode 100644 index 0000000..22dc40b --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/KnifeList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KnifeList.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/RightPanel/Modeling/KnifeList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKjE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAGvE,MAAM,WAAW,eAAe;IAE5B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,UAAU,MAAC;KAAE,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAC;KAAE,CAAC;IACxD,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAC;CAAE,CAAC;IAC5F,OAAO,CAAC,YAAY,CAAW;IACnB,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,WAAW,CAAc;gBACrB,KAAK,KAAA;IAOjB,OAAO,CAAC,aAAa,CAGnB;IACF,OAAO,CAAC,gBAAgB,CAmBtB;IACF,OAAO,CAAC,UAAU,CAQhB;IACF,OAAO,CAAC,oBAAoB,CAc1B;IACF,OAAO,CAAC,kBAAkB,CAkCxB;IACF,OAAO,CAAC,iBAAiB,CAuCvB;IAEF,OAAO,CAAC,eAAe,CAsBrB;IACF,iBAAiB;IAKV,MAAM;CA4ChB"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts b/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts new file mode 100644 index 0000000..07914c8 --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts @@ -0,0 +1,26 @@ +import { Component } from 'react'; +import { IKnifeInfo2 } from '../../../Store/RightPanelStore/Modeling2Store'; +interface IKnifeManageProps { + knifeInfo?: IKnifeInfo2; +} +interface IKnifeManageState { +} +export declare class KnifeManage extends Component { + private canAddPath; + private isSelectKnife; + private currentInfo; + constructor(props: any); + renderNav: () => JSX.Element; + renderMenuItems: () => any; + render(): JSX.Element; + handleKnifePath: (name: string, currentDir: any, callback: Function) => Promise; + private handleCreateKnife; + handleRenameKP: (name: string) => Promise; + private drawKnife; + private startAddKinfePath; + private show; + private close; + private selectKnife; +} +export {}; +//# sourceMappingURL=KnifeManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts.map b/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts.map new file mode 100644 index 0000000..86ca4c9 --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/KnifeManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KnifeManage.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/RightPanel/Modeling/KnifeManage.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAuBzC,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAE5E,UAAU,iBAAiB;IAEvB,SAAS,CAAC,EAAE,WAAW,CAAC;CAC3B;AACD,UAAU,iBAAiB;CAG1B;AAED,qBACa,WAAY,SAAQ,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC5E,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,aAAa,CAAS;IAClB,OAAO,CAAC,WAAW,CAI7B;gBACU,KAAK,KAAA;IAKjB,SAAS,oBAeP;IACF,eAAe,YAGb;IACF,MAAM;IA8DN,eAAe,SAAgB,MAAM,6BAAwB,QAAQ,mBAgCnE;IACF,OAAO,CAAC,iBAAiB,CAoEvB;IAEF,cAAc,SAAgB,MAAM,mBAclC;IACF,OAAO,CAAC,SAAS,CAoBf;IACF,OAAO,CAAC,iBAAiB,CAKvB;IACF,OAAO,CAAC,IAAI,CAeV;IACF,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,WAAW,CAMjB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts b/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts new file mode 100644 index 0000000..b2f7f1d --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { Modeling2Store } from '../../../Store/RightPanelStore/Modeling2Store'; +export declare class ModelingComponent2 extends React.Component<{ + store?: Modeling2Store; + is3D: boolean; +}> { + render(): JSX.Element; + private handleItem; + private startSelectKnife; +} +//# sourceMappingURL=ModelingComponent2.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts.map b/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts.map new file mode 100644 index 0000000..319258b --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/ModelingComponent2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModelingComponent2.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/RightPanel/Modeling/ModelingComponent2.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAA4C,cAAc,EAAE,MAAM,+CAA+C,CAAC;AASzH,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;CAAE,CAAC;IAE/F,MAAM;IA6FN,OAAO,CAAC,UAAU,CAchB;IACF,OAAO,CAAC,gBAAgB,CAGtB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts b/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts new file mode 100644 index 0000000..51a2638 --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts @@ -0,0 +1,11 @@ +import { IKnifeProps, IUiOption } from '../../../Store/BoardInterface'; +interface IKnifeModalProps { + id: string; + currentProps: IKnifeProps; + uiOption: IUiOption; + originProps: IKnifeProps; + updateList(): any; +} +declare const _default: (props: IKnifeModalProps) => JSX.Element; +export default _default; +//# sourceMappingURL=knifePropsModal.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts.map b/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts.map new file mode 100644 index 0000000..e5dc2c1 --- /dev/null +++ b/types/UI/Components/RightPanel/Modeling/knifePropsModal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"knifePropsModal.d.ts","sourceRoot":"","sources":["../../../../../../src/UI/Components/RightPanel/Modeling/knifePropsModal.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAQvE,UAAU,gBAAgB;IAEtB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,QAAG;CAChB;;AAmED,wBAAyC"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ModelingComponent.d.ts b/types/UI/Components/RightPanel/ModelingComponent.d.ts new file mode 100644 index 0000000..8273156 --- /dev/null +++ b/types/UI/Components/RightPanel/ModelingComponent.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { FaceDirection } from '../../Store/BoardInterface'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +export interface IModelingItem { + readonly color: number; + height: number; + dir: FaceDirection; + knifeRad: number; + addLen: number; + addWidth: number; + addDepth: number; +} +export declare class ModelingComponent extends React.Component<{ + store?: RightPanelStore; +}> { + render(): JSX.Element; +} +//# sourceMappingURL=ModelingComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ModelingComponent.d.ts.map b/types/UI/Components/RightPanel/ModelingComponent.d.ts.map new file mode 100644 index 0000000..db9b314 --- /dev/null +++ b/types/UI/Components/RightPanel/ModelingComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModelingComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/ModelingComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAK9E,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAEa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAEhF,MAAM;CAkFT"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanel.d.ts b/types/UI/Components/RightPanel/RightPanel.d.ts new file mode 100644 index 0000000..ceb7330 --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanel.d.ts @@ -0,0 +1,29 @@ +import * as React from 'react'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +import './Modeling.less'; +import './BoardProps.less'; +import './TemplateParam.less'; +export declare enum RightTabId { + BoardProps = "boardprops", + Model = "modeing", + Seal = "sealing", + Drill = "drilling", + Scene = "scenes", + Material = "material", + Template = "template", + TemplateParam = "templateparam", + Matals = "matals", + Model2 = "modeing2", + Model3 = "modeing3" +} +export declare class RightPanel extends React.Component<{ + store?: RightPanelStore; +}> { + private m_Container; + constructor(props: any); + Close: () => void; + HandleFocus(): void; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=RightPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanel.d.ts.map b/types/UI/Components/RightPanel/RightPanel.d.ts.map new file mode 100644 index 0000000..0182362 --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RightPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/RightPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,sBAAsB,CAAC;AAa9B,oBAAY,UAAU;IAElB,UAAU,eAAe;IACzB,KAAK,YAAY;IACjB,IAAI,YAAY;IAChB,KAAK,aAAa;IAClB,KAAK,WAAW;IAChB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,MAAM,WAAW;IACjB,MAAM,aAAa;IACnB,MAAM,aAAa;CACtB;AAED,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAEzE,OAAO,CAAC,WAAW,CAAkC;gBACzC,KAAK,KAAA;IAKjB,KAAK,aAIH;IACF,WAAW;IAIX,iBAAiB;IAUjB,MAAM;CAqCT"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanelButton.d.ts b/types/UI/Components/RightPanel/RightPanelButton.d.ts new file mode 100644 index 0000000..2ca706b --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanelButton.d.ts @@ -0,0 +1,22 @@ +import React from "react"; +import { RightPanelStore } from "../../Store/RightPanelStore/RightPanelStore"; +import { DownPanelStore } from "../../Store/DownPanelStore"; +export declare class RightPanelButton extends React.Component<{ + store: RightPanelStore; +}, { + classname: string; +}> { + constructor(props: any); + handleClick(): void; + render(): JSX.Element; +} +export declare class PropertiesPanelButton extends React.Component<{ + store: DownPanelStore; +}, { + classname: string; +}> { + constructor(props: any); + handleClick(): void; + render(): JSX.Element; +} +//# sourceMappingURL=RightPanelButton.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanelButton.d.ts.map b/types/UI/Components/RightPanel/RightPanelButton.d.ts.map new file mode 100644 index 0000000..74ae999 --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanelButton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RightPanelButton.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/RightPanelButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAe,MAAM,4BAA4B,CAAC;AAKzE,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;CAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;CAAE,CAAC;gBAE1F,KAAK,KAAA;IASjB,WAAW;IAMX,MAAM;CAaT;AAED,qBAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,cAAc,CAAC;CAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;CAAE,CAAC;gBAE9F,KAAK,KAAA;IAejB,WAAW;IAeX,MAAM;CAaT"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanelInterface.d.ts b/types/UI/Components/RightPanel/RightPanelInterface.d.ts new file mode 100644 index 0000000..ac41bec --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanelInterface.d.ts @@ -0,0 +1,44 @@ +import { IBaseOption } from "../../Store/BoardInterface"; +import { EBoardKeyList } from "../../../Common/BoardKeyList"; +export interface IHardwareOption extends IBaseOption { + name: string; + unit: string; + [EBoardKeyList.RoomName]: string; + [EBoardKeyList.CabinetName]: string; + costExpr: string; + actualExpr: string; + model: string; + factory: string; + brand: string; + spec: string; + comments: string; + isHole: boolean; +} +export interface ICylMetalsOption extends IHardwareOption { + rad: number; + height: number; + count: string; +} +export interface IExtMetalsOption extends IHardwareOption { + thickness: number; + knifeRad: number; + addLen: number; + isHole: boolean; + count: string; +} +export declare enum EMetalsType { + Metals = "\u4E94\u91D1", + Comp = "\u7EC4\u4EF6" +} +export interface ICompHardwareOption extends IHardwareOption { + type: EMetalsType; + isSplite: boolean; + isSplitePrice: boolean; + color: string; + [EBoardKeyList.Mat]: string; + count: string; +} +export interface IToplineOption extends IHardwareOption { + addLen: string; +} +//# sourceMappingURL=RightPanelInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/RightPanelInterface.d.ts.map b/types/UI/Components/RightPanel/RightPanelInterface.d.ts.map new file mode 100644 index 0000000..00e766c --- /dev/null +++ b/types/UI/Components/RightPanel/RightPanelInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RightPanelInterface.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/RightPanelInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IAErD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IAErD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,WAAW;IAEnB,MAAM,iBAAO;IACb,IAAI,iBAAO;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAExD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IAEnD,MAAM,EAAE,MAAM,CAAC;CAClB"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ScenePanel.d.ts b/types/UI/Components/RightPanel/ScenePanel.d.ts new file mode 100644 index 0000000..0b29163 --- /dev/null +++ b/types/UI/Components/RightPanel/ScenePanel.d.ts @@ -0,0 +1,16 @@ +import * as React from 'react'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +/**太阳光照射距离 */ +export declare const DefaultDist: { + dist: number; +}; +export declare class ScenePanel extends React.Component<{ + store?: RightPanelStore; +}, {}> { + UNSAFE_componentWillMount(): void; + render(): JSX.Element; + private SetSunProps; + private handleSuntime; + private triggleLightShow; +} +//# sourceMappingURL=ScenePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ScenePanel.d.ts.map b/types/UI/Components/RightPanel/ScenePanel.d.ts.map new file mode 100644 index 0000000..ed698c0 --- /dev/null +++ b/types/UI/Components/RightPanel/ScenePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ScenePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/ScenePanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAQ9E,aAAa;AACb,eAAO,MAAM,WAAW;;CAAkB,CAAC;AAE3C,qBAEa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,EAAE,EAAE,CAAC;IAE7E,yBAAyB;IAWzB,MAAM;IAuFN,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa,CAkCnB;IACF,OAAO,CAAC,gBAAgB,CAkBtB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/SealingComponent.d.ts b/types/UI/Components/RightPanel/SealingComponent.d.ts new file mode 100644 index 0000000..f105f3d --- /dev/null +++ b/types/UI/Components/RightPanel/SealingComponent.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { RightPanelStore } from '../../Store/RightPanelStore/RightPanelStore'; +export declare class SealingComponent extends React.Component<{ + store?: RightPanelStore; +}> { + render(): JSX.Element; + private ok; + private exit; +} +//# sourceMappingURL=SealingComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/SealingComponent.d.ts.map b/types/UI/Components/RightPanel/SealingComponent.d.ts.map new file mode 100644 index 0000000..8ba3bdc --- /dev/null +++ b/types/UI/Components/RightPanel/SealingComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SealingComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/SealingComponent.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAK9E,qBAEa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;CAAE,CAAC;IAE/E,MAAM;IAyDN,OAAO,CAAC,EAAE,CAIR;IACF,OAAO,CAAC,IAAI;CAIf"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/TemplateParamPanel.d.ts b/types/UI/Components/RightPanel/TemplateParamPanel.d.ts new file mode 100644 index 0000000..9962817 --- /dev/null +++ b/types/UI/Components/RightPanel/TemplateParamPanel.d.ts @@ -0,0 +1,99 @@ +import { ITreeNode } from "@blueprintjs/core"; +import React from "react"; +import { TemplateRecord } from "../../../DatabaseServices/Template/TemplateRecord"; +import { INeedUpdateParams } from "../Template/TemplateComponent"; +interface TemplateParamState { + nodes: ITreeNode[]; +} +interface TemplateParamProps { + selectTemplateId: number; + inputRefs: HTMLInputElement[]; +} +declare enum OutlineType { + This = 0, + Child = 1 +} +export declare class TemplateParamPanel extends React.Component { + private displayTemplateRootId; + private currentTemplateId; + private currentProps; + private removeFuncs; + private treeListScrollTop; + private treeListHeight; + private scrollCard; + private templateObjIdSet; + constructor(props: Readonly); + componentDidMount(): void; + componentWillUnmount(): void; + componentDidUpdate(prevProps: TemplateParamProps): void; + SetParamDetailInputRefs: (ref: HTMLInputElement) => void; + GetCurrentTemplate(): TemplateRecord | undefined; + UpdateCurrentProps(temp?: TemplateRecord): void; + InitData(): void; + Template2TreeNode: (template: TemplateRecord) => ITreeNode; + private HandleNodeCollapse; + private ShowContextMenu; + private AddSpace; + private RotateSpace; + private BatchModifyCurrentLayerCabinetName; + ModifyCabinetName: (tr: TemplateRecord, cabinetName: string) => void; + private BatchModifyCurrentChildrenCabinetName; + private HandleNodeSelect; + private forEachNode; + private GetAllChildFromThisTemplate; + private DeleteTreeNode; + OutlineSpace: (node: ITreeNode, type: OutlineType) => void; + SeparateSpace: (nodeData: ITreeNode) => void; + render(): JSX.Element; +} +export declare class TemplateParamDetail extends React.Component<{ + updateParams: INeedUpdateParams[]; + currentShowTemplate: TemplateRecord; + callback: Function; + setInputRefFunc: Function; +}> { + basePtParam: { + PX: { + expr: string; + val: string; + }; + PY: { + expr: string; + val: string; + }; + PZ: { + expr: string; + val: string; + }; + }; + rotateParam: { + RX: { + expr: string; + val: string; + }; + RY: { + expr: string; + val: string; + }; + RZ: { + expr: string; + val: string; + }; + }; + private paramdef; + private dangerInputTargets; + componentDidMount(): void; + componentDidUpdate(prevProps: { + currentShowTemplate: TemplateRecord; + }): void; + private onKeydown; + UpdateBasePtAndRotationParam(): void; + GetAssociateBrNums(tr: TemplateRecord): number; + ShowSplitType: (tr: TemplateRecord) => "X" | "Y" | "Z" | "空"; + ChangeInputUIClass: (e: HTMLInputElement, par: INeedUpdateParams) => void; + CheckParamExpr: (par: INeedUpdateParams) => boolean; + ApplyParamExpr: () => Promise; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=TemplateParamPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/TemplateParamPanel.d.ts.map b/types/UI/Components/RightPanel/TemplateParamPanel.d.ts.map new file mode 100644 index 0000000..9f88e60 --- /dev/null +++ b/types/UI/Components/RightPanel/TemplateParamPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateParamPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/TemplateParamPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4C,SAAS,EAAsC,MAAM,mBAAmB,CAAC;AAG5H,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AAKnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,UAAU,kBAAkB;IAExB,KAAK,EAAE,SAAS,EAAE,CAAC;CACtB;AAED,UAAU,kBAAkB;IAExB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CACjC;AACD,aAAK,WAAW;IAEZ,IAAI,IAAI;IACR,KAAK,IAAI;CACZ;AAKD,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG3F,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,iBAAiB,CAAS;IAGtB,OAAO,CAAC,YAAY,CAA2B;IAE3D,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,gBAAgB,CAA0B;gBACtC,KAAK,EAAE,QAAQ,CAAC,kBAAkB,CAAC;IAQ/C,iBAAiB;IAkEjB,oBAAoB;IAOpB,kBAAkB,CAAC,SAAS,EAAE,kBAAkB;IAgChD,uBAAuB,QAAS,gBAAgB,UAI9C;IAGF,kBAAkB,IAAI,cAAc,GAAG,SAAS;IAoBhD,kBAAkB,CAAC,IAAI,CAAC,EAAE,cAAc;IAcxC,QAAQ;IAwBR,iBAAiB,aAAc,cAAc,KAAG,SAAS,CAYvD;IAGF,OAAO,CAAC,kBAAkB,CAIxB;IAEF,OAAO,CAAC,eAAe,CAiErB;IAKF,OAAO,CAAC,QAAQ,CAkBd;IAEF,OAAO,CAAC,WAAW,CAMjB;IAGF,OAAO,CAAC,kCAAkC,CAIxC;IAEF,iBAAiB,OAAQ,cAAc,eAAe,MAAM,UAa1D;IAEF,OAAO,CAAC,qCAAqC,CAW3C;IAGF,OAAO,CAAC,gBAAgB,CAetB;IAEF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,2BAA2B,CAKjC;IAGF,OAAO,CAAC,cAAc,CAWpB;IAEF,YAAY,SAAU,SAAS,QAAQ,WAAW,UAkChD;IAGF,aAAa,aAAc,SAAS,UAelC;IACF,MAAM;CAsCT;AAKD,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAAC,mBAAmB,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,eAAe,EAAE,QAAQ,CAAC;CAAE,CAAC;IACpK,WAAW;;;;;;;;;;;;;MAA0F;IACrG,WAAW;;;;;;;;;;;;;MAA0F;IACjH,OAAO,CAAC,QAAQ,CAA2D;IAE3E,OAAO,CAAC,kBAAkB,CAAoC;IAC9D,iBAAiB;IAIjB,kBAAkB,CAAC,SAAS,EAAE;QAAE,mBAAmB,EAAE,cAAc,CAAC;KAAE;IActE,OAAO,CAAC,SAAS,CAgBf;IAGF,4BAA4B;IAiB5B,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM;IAO9C,aAAa,OAAQ,cAAc,2BAajC;IAGF,kBAAkB,MAAO,gBAAgB,OAAO,iBAAiB,UAe/D;IAKF,cAAc,QAAS,iBAAiB,aAsBtC;IAGF,cAAc,sBAkBZ;IAEK,MAAM;CA0IhB"} \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts b/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts new file mode 100644 index 0000000..841176f --- /dev/null +++ b/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { ToplineMetalsStore } from '../../Store/RightPanelStore/HardwareStore'; +interface IToplineMetalsPanelProps { + store: ToplineMetalsStore; +} +export declare class ToplineMetalsPanel extends React.Component { + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ToplineMetalsPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts.map b/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts.map new file mode 100644 index 0000000..7744ab5 --- /dev/null +++ b/types/UI/Components/RightPanel/ToplineMetalsPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToplineMetalsPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/RightPanel/ToplineMetalsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAG/E,UAAU,wBAAwB;IAE9B,KAAK,EAAE,kBAAkB,CAAC;CAC7B;AAED,qBACa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,CAAC;IACtE,MAAM;CAShB"} \ No newline at end of file diff --git a/types/UI/Components/RotateLayerBoard.d.ts b/types/UI/Components/RotateLayerBoard.d.ts new file mode 100644 index 0000000..724e51f --- /dev/null +++ b/types/UI/Components/RotateLayerBoard.d.ts @@ -0,0 +1,42 @@ +import * as React from 'react'; +import '../Css/rotateLyModal.less'; +import { BoardStore } from '../Store/BoardStore'; +import { IBaseOption } from '../Store/BoardInterface'; +export interface IRotateLayerBoardProps { + store: RotateLayerBoardStore; +} +interface IRotateLayerBoardOption extends IBaseOption { + angle: number; + length: number; + frontDist: number; + backDist: number; +} +export declare class RotateLayerBoardStore extends BoardStore { + m_Option: IRotateLayerBoardOption; + HasInvailValue(): boolean; +} +export declare enum ERotateType { + Angle = "angle", + Length = "length" +} +export interface IRotateLayerBoardState { + rotateType: ERotateType; + angle: string; + length: string; + frontDist: string; + backDist: string; +} +export declare class RotateLayerBoardModal extends React.Component { + private CONFIG_TYPE; + constructor(props: any); + private Ok; + private Close; + private Save; + UNSAFE_componentWillMount(): Promise; + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=RotateLayerBoard.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/RotateLayerBoard.d.ts.map b/types/UI/Components/RotateLayerBoard.d.ts.map new file mode 100644 index 0000000..4b6cd71 --- /dev/null +++ b/types/UI/Components/RotateLayerBoard.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RotateLayerBoard.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/RotateLayerBoard.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAItD,MAAM,WAAW,sBAAsB;IAEnC,KAAK,EAAE,qBAAqB,CAAC;CAChC;AACD,UAAU,uBAAwB,SAAQ,WAAW;IAEjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,qBAAa,qBAAsB,SAAQ,UAAU,CAAC,uBAAuB,CAAC;IAE9D,QAAQ,EAAE,uBAAuB,CAK3C;IACF,cAAc;CAIjB;AACD,oBAAY,WAAW;IAEnB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AACD,MAAM,WAAW,sBAAsB;IAEnC,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACtG,OAAO,CAAC,WAAW,CAAa;gBACpB,KAAK,KAAA;IAWjB,OAAO,CAAC,EAAE,CAiBR;IACF,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI,CAIV;IACI,yBAAyB;IAQ/B,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IAWjB,oBAAoB;IAQb,MAAM;CA8EhB"} \ No newline at end of file diff --git a/types/UI/Components/SelectMarquee.d.ts b/types/UI/Components/SelectMarquee.d.ts new file mode 100644 index 0000000..4fb503c --- /dev/null +++ b/types/UI/Components/SelectMarquee.d.ts @@ -0,0 +1,9 @@ +import * as React from "react"; +import { CSSProperties } from 'react'; +export declare class SelectMarquee extends React.Component<{}, null> { + rightColor: string; + leftColor: string; + css: CSSProperties; + render(): JSX.Element; +} +//# sourceMappingURL=SelectMarquee.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SelectMarquee.d.ts.map b/types/UI/Components/SelectMarquee.d.ts.map new file mode 100644 index 0000000..60f81c1 --- /dev/null +++ b/types/UI/Components/SelectMarquee.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectMarquee.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/SelectMarquee.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;IAExD,UAAU,SAA2B;IACrC,SAAS,SAA2B;IACpC,GAAG,EAAE,aAAa,CAahB;IACF,MAAM;CAOT"} \ No newline at end of file diff --git a/types/UI/Components/SettingPanel/SettingPanel.d.ts b/types/UI/Components/SettingPanel/SettingPanel.d.ts new file mode 100644 index 0000000..65cee6b --- /dev/null +++ b/types/UI/Components/SettingPanel/SettingPanel.d.ts @@ -0,0 +1,12 @@ +import * as React from 'react'; +export interface SettingPanelProps { + handleClose: Function; + isOpen: boolean; +} +export interface SettingPanelState { +} +export declare class SettingPanel extends React.Component { + constructor(props: SettingPanelProps); + render(): JSX.Element; +} +//# sourceMappingURL=SettingPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SettingPanel/SettingPanel.d.ts.map b/types/UI/Components/SettingPanel/SettingPanel.d.ts.map new file mode 100644 index 0000000..986c272 --- /dev/null +++ b/types/UI/Components/SettingPanel/SettingPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SettingPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SettingPanel/SettingPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAE9B,WAAW,EAAE,QAAQ,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;CAEjC;AAED,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;gBACvE,KAAK,EAAE,iBAAiB;IAOpC,MAAM;CAeT"} \ No newline at end of file diff --git a/types/UI/Components/SimpleDialog.d.ts b/types/UI/Components/SimpleDialog.d.ts new file mode 100644 index 0000000..20213e9 --- /dev/null +++ b/types/UI/Components/SimpleDialog.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +export interface ISimpleDialogProps { + title: string; + childern: JSX.Element[]; + onclose: Function; + isOpen: boolean; +} +export declare class SimpleDialog extends React.Component { + render(): JSX.Element; +} +//# sourceMappingURL=SimpleDialog.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SimpleDialog.d.ts.map b/types/UI/Components/SimpleDialog.d.ts.map new file mode 100644 index 0000000..da50ad9 --- /dev/null +++ b/types/UI/Components/SimpleDialog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleDialog.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/SimpleDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,kBAAkB;IAE/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC;IAC1D,MAAM;CAiChB"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/CommonPanel.d.ts b/types/UI/Components/SourceManage/CommonPanel.d.ts new file mode 100644 index 0000000..174a094 --- /dev/null +++ b/types/UI/Components/SourceManage/CommonPanel.d.ts @@ -0,0 +1,122 @@ +import { ITreeNode } from '@blueprintjs/core'; +import * as React from 'react'; +import { DirectoryId } from '../../../Common/Request'; +import './TexturePanel.less'; +export interface IDirectoryProps { + id: DirectoryId; + path: string; + pathNum: number[]; +} +interface ICommonPanelState { + isContextMenuOpen: boolean; + nodes: ITreeNode[]; + defaultDirName: string; + updateNode: ITreeNode; + isSelectAll: boolean; + searchStr: string; +} +interface ICommonPanelProps { + defaultDirId: string; + renderNav?: () => JSX.Element; + renderMenuItems?: () => JSX.Element; + canDelete?: boolean; + deleteUrl: string; + getUrl: string; + clickTree?: () => void; + delete?: (data: any) => void; + canOrder?: boolean; + maxDirLength?: number; + copyUrl?: string; + dirNameFilter?: string[]; + loadCacheDirKey?: string; +} +/** + * 贴图,材质面板通用组件,左边目录右边数据列表 + */ +export declare class CommonPanel extends React.Component { + private tree; + startHandleDir: import("mobx").IObservableValue; + private timeId; + dataList: import("mobx").IObservableArray; + selectIds: Set; + private _orderType; + currentDir: IDirectoryProps; + pageData: { + count: number; + currentPage: number; + pageCount: number; + }; + private _dragId; + private nodeEls; + static defaultProps: Partial; + static CurrentDirCache: Map; + private selectContainer; + private selectTool; + private idKey; + private loading; + private showInfos; + private event; + private copyIds; + constructor(props: any); + get IsCtrlDown(): Boolean; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private handleSelectAll; + private handleSelectData; + private SelectNode; + private handleNodeClick; + private forEachNode; + private handleNodeCollapse; + private getCurrentDir; + private showContextMenu; + private parseNodes; + private handleDir; + private handleAddDir; + private addTreeNodes; + private handleUpdateDir; + handleDeleteDir: () => Promise; + private DeleteTreeNode; + handleSearch: (e: React.ChangeEvent) => Promise; + /** + * 服务段获取数据 + * name-查询字符串,curr_page-当前页,dir_id:目录id + * desc 倒序 + */ + handleGetData: (queryData?: { + dir_id?: string; + name?: string; + curr_page?: number; + }) => Promise; + private getSelectDataIds; + private handDeleteData; + private handleTreeMouseDown; + private updateNodeEls; + private getTargetId; + private _moveDirId; + private _moveElement; + private handleDirDragStart; + private _targetElement; + private _postion; + private handleDirMove; + private handleDragStart; + private handleDragEnd; + private handleMoveFiles; + private expandTimeId; + private handleDragEnterFile; + private handleDragLeave; + private loadCurrentNode; + private loadingData; + private moveDir; + private sendDir; + private getNodeFromId; + private moveDirNode; + private autoExpand; + private getPathInfoById; + private handleKeydown; + private _isPasted; + private copy; + private paste; +} +export {}; +//# sourceMappingURL=CommonPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/CommonPanel.d.ts.map b/types/UI/Components/SourceManage/CommonPanel.d.ts.map new file mode 100644 index 0000000..c801738 --- /dev/null +++ b/types/UI/Components/SourceManage/CommonPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommonPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/CommonPanel.tsx"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/FileList.d.ts b/types/UI/Components/SourceManage/FileList.d.ts new file mode 100644 index 0000000..2bd4105 --- /dev/null +++ b/types/UI/Components/SourceManage/FileList.d.ts @@ -0,0 +1,28 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +export interface IFileListProps { + dataList?: any[]; + deleteFun?: (pic?: { + image_id: string; + }) => void; + store?: TopPanelStore; + select?: (e: any, data: any) => void; + isRename: IObservableValue; + info: { + fid: string; + name: string; + }; + selectIds?: Set; + showInfos?: boolean; + copy?: Function; + paste?: Function; + copyIds?: Set; +} +export declare class FileList extends React.Component { + isShowSize: boolean; + handleOpenFile: (fid: string) => Promise; + private showContextMenu; + render(): JSX.Element; +} +//# sourceMappingURL=FileList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/FileList.d.ts.map b/types/UI/Components/SourceManage/FileList.d.ts.map new file mode 100644 index 0000000..dea61c4 --- /dev/null +++ b/types/UI/Components/SourceManage/FileList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FileList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/FileList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;KAAE,KAAK,IAAI,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,CAAC,KAAA,EAAE,IAAI,KAAA,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IACrC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAGD,qBAEa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC;IACjD,UAAU,UAAS;IAC/B,cAAc,QAAe,MAAM,mBAMjC;IAMF,OAAO,CAAC,eAAe,CA4FrB;IACK,MAAM;CAwChB"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/FilePanel.d.ts b/types/UI/Components/SourceManage/FilePanel.d.ts new file mode 100644 index 0000000..8fa3ac4 --- /dev/null +++ b/types/UI/Components/SourceManage/FilePanel.d.ts @@ -0,0 +1,26 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +import { CommonPanel, IDirectoryProps } from './CommonPanel'; +/** + * 我的文件列表 + */ +export declare class FilePanel extends React.Component<{ + store?: TopPanelStore; +}, {}> { + commonPanel: CommonPanel; + private canCreateFile; + private currentFileInfo; + selectEl: HTMLInputElement; + private _isImporting; + handleImportFile: (files: FileList) => Promise; + handleAddNewFile: (name: string, currentDir: IDirectoryProps) => void; + handleFile: (name: string, currentDir: IDirectoryProps, callBack: () => void) => Promise; + handleDelete: (data: { + file_ids: string[]; + }) => void; + renderNav: () => JSX.Element; + renderMenuItems: () => JSX.Element; + BatchSend: () => void; + render(): JSX.Element; +} +//# sourceMappingURL=FilePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/FilePanel.d.ts.map b/types/UI/Components/SourceManage/FilePanel.d.ts.map new file mode 100644 index 0000000..1913014 --- /dev/null +++ b/types/UI/Components/SourceManage/FilePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FilePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/FilePanel.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAI7D;;GAEG;AACH,qBAEa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAE1E,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,eAAe,CAA6B;IACpD,QAAQ,EAAE,gBAAgB,CAAC;IACf,OAAO,CAAC,YAAY,CAAS;IACzC,gBAAgB,UAAiB,QAAQ,mBAmEvC;IACF,gBAAgB,SAAU,MAAM,cAAc,eAAe,UAU3D;IACF,UAAU,SAAgB,MAAM,cAAc,eAAe,YAAY,MAAM,IAAI,mBAqBjF;IAiBF,YAAY,SAAU;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;KAAE,UAQ3C;IACF,SAAS,oBAqDP;IACF,eAAe,oBAOb;IAGF,SAAS,aAcP;IAEF,MAAM;CA8BT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/HandleDirComponent.d.ts b/types/UI/Components/SourceManage/HandleDirComponent.d.ts new file mode 100644 index 0000000..bbf9e98 --- /dev/null +++ b/types/UI/Components/SourceManage/HandleDirComponent.d.ts @@ -0,0 +1,25 @@ +import * as React from 'react'; +import './TexturePanel.less'; +import { IObservableValue } from 'mobx'; +import { IDirectoryProps } from './CommonPanel'; +interface IHandleDirProps { + isOpen: IObservableValue; + handleFunc: (dirName: string, ...rest: any[]) => void; + isReset: boolean; + defualtValue: string; + title?: string; + getData?: () => void; + currentDir?: IDirectoryProps; + className?: string; +} +export declare class HandleDirComponent extends React.Component { + private inputEl; + private container; + componentDidMount(): void; + private onKeydown; + private handleClick; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=HandleDirComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/HandleDirComponent.d.ts.map b/types/UI/Components/SourceManage/HandleDirComponent.d.ts.map new file mode 100644 index 0000000..2833b63 --- /dev/null +++ b/types/UI/Components/SourceManage/HandleDirComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HandleDirComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/HandleDirComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,UAAU,eAAe;IAErB,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,OAAA,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAExE,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,SAAS,CAAiB;IAClC,iBAAiB;IAKjB,OAAO,CAAC,SAAS,CAqBf;IACF,OAAO,CAAC,WAAW,CAYjB;IACF,oBAAoB;IAMpB,MAAM;CAgCT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/ImgList.d.ts b/types/UI/Components/SourceManage/ImgList.d.ts new file mode 100644 index 0000000..d0ee69a --- /dev/null +++ b/types/UI/Components/SourceManage/ImgList.d.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +import { MaterialStore } from '../../Store/MaterialStore'; +export interface IImgListProps { + dataList?: any[]; + deleteFun?: (pic?: { + image_id: string; + }) => void; + store?: MaterialStore; + select?: (e: any, data: any) => void; + selectIds?: Set; + showInfos?: boolean; +} +export declare class ImgList extends React.Component { + private isShowSize; + renderEditorPanel(pic: any): JSX.Element; + handleApplyPic: (pic: any) => void; + render(): JSX.Element; +} +//# sourceMappingURL=ImgList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/ImgList.d.ts.map b/types/UI/Components/SourceManage/ImgList.d.ts.map new file mode 100644 index 0000000..d63003c --- /dev/null +++ b/types/UI/Components/SourceManage/ImgList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ImgList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/ImgList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAI1D,MAAM,WAAW,aAAa;IAE1B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;KAAE,KAAK,IAAI,CAAC;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,CAAC,KAAA,EAAE,IAAI,KAAA,KAAK,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAEa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;IAC/C,OAAO,CAAC,UAAU,CAAS;IACvC,iBAAiB,CAAC,GAAG,KAAA;IAsCrB,cAAc,qBAOZ;IACK,MAAM;CA8BhB"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/MaterialList.d.ts b/types/UI/Components/SourceManage/MaterialList.d.ts new file mode 100644 index 0000000..a7edf65 --- /dev/null +++ b/types/UI/Components/SourceManage/MaterialList.d.ts @@ -0,0 +1,24 @@ +import * as React from 'react'; +export interface IImgListProps { + deleteFun?: (mtl?: any) => void; + dataList?: any[]; + select?: (e: any, data: any) => void; + getData?: () => void; + selectIds?: Set; + showInfos?: boolean; +} +export declare class MaterialList extends React.Component { + private isShowSize; + private readyMtl; + private handleGetMtlJson; + private editor; + private handleDragStart; + private handleApply; + private applyMtl; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private showContextMenu; + private publishTemplate; +} +//# sourceMappingURL=MaterialList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/MaterialList.d.ts.map b/types/UI/Components/SourceManage/MaterialList.d.ts.map new file mode 100644 index 0000000..7c3388d --- /dev/null +++ b/types/UI/Components/SourceManage/MaterialList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/MaterialList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,WAAW,aAAa;IAE1B,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAA,KAAK,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,KAAA,EAAE,IAAI,KAAA,KAAK,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;IACpD,OAAO,CAAC,UAAU,CAAS;IACvC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,gBAAgB,CAUtB;IACF,OAAO,CAAC,MAAM,CASZ;IACF,OAAO,CAAC,eAAe,CAGrB;IACF,OAAO,CAAC,WAAW,CAUjB;IACF,OAAO,CAAC,QAAQ,CAYd;IACF,iBAAiB;IAIjB,oBAAoB;IAIb,MAAM;IA8Bb,OAAO,CAAC,eAAe,CAoCrB;IACF,OAAO,CAAC,eAAe,CAGrB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/MaterialPanel.d.ts b/types/UI/Components/SourceManage/MaterialPanel.d.ts new file mode 100644 index 0000000..eb231bc --- /dev/null +++ b/types/UI/Components/SourceManage/MaterialPanel.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +import './TexturePanel.less'; +interface IMaterialProps { +} +interface IMaterialState { +} +/** + * 材质管理器面板 + * + */ +export declare class MaterialPanel extends React.Component { + private startCreateMat; + constructor(props: any); + handleAddMaterial: () => void; + renderNav(): JSX.Element; + renderMenuItems(): JSX.Element; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=MaterialPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/MaterialPanel.d.ts.map b/types/UI/Components/SourceManage/MaterialPanel.d.ts.map new file mode 100644 index 0000000..28c58cf --- /dev/null +++ b/types/UI/Components/SourceManage/MaterialPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/MaterialPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,qBAAqB,CAAC;AAE7B,UAAU,cAAc;CAEvB;AACD,UAAU,cAAc;CAEvB;AAED;;;GAGG;AACH,qBACa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAE9E,OAAO,CAAC,cAAc,CAAyB;gBACnC,KAAK,KAAA;IAIjB,iBAAiB,aAIf;IACF,SAAS;IAiBT,eAAe;IAWf,MAAM;CAuBT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/Pagination.d.ts b/types/UI/Components/SourceManage/Pagination.d.ts new file mode 100644 index 0000000..09e3acc --- /dev/null +++ b/types/UI/Components/SourceManage/Pagination.d.ts @@ -0,0 +1,26 @@ +import * as React from 'react'; +interface IPaginationProps { + getImgListFun: (data?: any) => void; + pageData: { + count: number; + currentPage: number; + pageCount: number; + }; +} +/** + * 分页组件 + */ +export declare class Pagination extends React.Component { + private _timeId; + constructor(props: any); + private renderPagesList; + private handleChangePage; + /**更新页码组 */ + private handleChangeStartPage; + private handleChangeInput; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=Pagination.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/Pagination.d.ts.map b/types/UI/Components/SourceManage/Pagination.d.ts.map new file mode 100644 index 0000000..c918bb3 --- /dev/null +++ b/types/UI/Components/SourceManage/Pagination.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/Pagination.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,UAAU,gBAAgB;IAEtB,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;KAAE,CAAC;CACxE;AAED;;GAEG;AACH,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;CAAE,CAAC;IACrF,OAAO,CAAC,OAAO,CAAwB;gBAC3B,KAAK,KAAA;IAQjB,OAAO,CAAC,eAAe,CAuBrB;IACF,OAAO,CAAC,gBAAgB,CAStB;IACF,WAAW;IACX,OAAO,CAAC,qBAAqB,CAM3B;IACF,OAAO,CAAC,iBAAiB,CAavB;IACF,MAAM;CAkDT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SelectDataList.d.ts b/types/UI/Components/SourceManage/SelectDataList.d.ts new file mode 100644 index 0000000..ecc743f --- /dev/null +++ b/types/UI/Components/SourceManage/SelectDataList.d.ts @@ -0,0 +1,22 @@ +export declare class SelectDataTool { + private container; + private mouseOn; + private startX; + private startY; + private selectEl; + SelectCallBack: (els: HTMLElement[]) => void; + StartCallBack: () => void; + offsetTop: number; + offsetLeft: number; + pointId: number; + constructor(container: HTMLElement); + private getOffsetTop; + private getOffsetLeft; + private getPointId; + private Start; + private Move; + private Stop; + private SelectEvent; + Destory(): void; +} +//# sourceMappingURL=SelectDataList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SelectDataList.d.ts.map b/types/UI/Components/SourceManage/SelectDataList.d.ts.map new file mode 100644 index 0000000..2d3fce8 --- /dev/null +++ b/types/UI/Components/SourceManage/SelectDataList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectDataList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/SelectDataList.ts"],"names":[],"mappings":"AAIA,qBAAa,cAAc;IAWX,OAAO,CAAC,SAAS;IAT7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAiB;IACjC,cAAc,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC7C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;gBACI,SAAS,EAAE,WAAW;IAQ1C,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,UAAU,CAGhB;IACF,OAAO,CAAC,KAAK,CAmCX;IACF,OAAO,CAAC,IAAI,CA8BV;IACF,OAAO,CAAC,IAAI,CA0BV;IACF,OAAO,CAAC,WAAW;IAKnB,OAAO;CAaV"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SoucePanel.d.ts b/types/UI/Components/SourceManage/SoucePanel.d.ts new file mode 100644 index 0000000..4dd4a33 --- /dev/null +++ b/types/UI/Components/SourceManage/SoucePanel.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +export interface SoucePanelState { + showIndex: number; +} +/** + * 资源管理器面板 + * TODO:贴图,模型面板组件,和材质组件类似 + * TODO:相应数据传入 + */ +export default class SoucePanel extends React.Component<{ + store?: TopPanelStore; +}, {}> { + ref: React.RefObject; + removeReg: Function; + constructor(p: any); + UnReg: () => void; + render(): JSX.Element; +} +//# sourceMappingURL=SoucePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SoucePanel.d.ts.map b/types/UI/Components/SourceManage/SoucePanel.d.ts.map new file mode 100644 index 0000000..9a2a3b5 --- /dev/null +++ b/types/UI/Components/SourceManage/SoucePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SoucePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/SoucePanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM1D,MAAM,WAAW,eAAe;IAE5B,SAAS,EAAE,MAAM,CAAC;CACrB;AAID;;;;GAIG;AAGH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IACnF,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACrC,SAAS,EAAE,QAAQ,CAAC;gBACR,CAAC,KAAA;IAMb,KAAK,aAOH;IAEF,MAAM;CAyET"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SpaceInfoBar.d.ts b/types/UI/Components/SourceManage/SpaceInfoBar.d.ts new file mode 100644 index 0000000..c0b11d3 --- /dev/null +++ b/types/UI/Components/SourceManage/SpaceInfoBar.d.ts @@ -0,0 +1,9 @@ +import * as React from 'react'; +import { TopPanelStore } from '../../Store/TopPanelStore'; +export declare class SpaceInfoBar extends React.Component<{ + store?: TopPanelStore; +}, {}> { + UNSAFE_componentWillMount(): Promise; + render(): JSX.Element; +} +//# sourceMappingURL=SpaceInfoBar.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/SpaceInfoBar.d.ts.map b/types/UI/Components/SourceManage/SpaceInfoBar.d.ts.map new file mode 100644 index 0000000..21aad09 --- /dev/null +++ b/types/UI/Components/SourceManage/SpaceInfoBar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpaceInfoBar.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/SpaceInfoBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAY1D,qBAEa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAEvE,yBAAyB;IAI/B,MAAM;CAgCT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/TexturePanel.d.ts b/types/UI/Components/SourceManage/TexturePanel.d.ts new file mode 100644 index 0000000..5f0e03c --- /dev/null +++ b/types/UI/Components/SourceManage/TexturePanel.d.ts @@ -0,0 +1,20 @@ +import * as React from 'react'; +import { MaterialStore } from '../../Store/MaterialStore'; +interface ITexturePanelState { +} +interface ITexturePanelProps { + store?: MaterialStore; +} +/** + * 贴图组件 + */ +export declare class TexturePanel extends React.Component { + private startUpload; + private isApplyPanel; + constructor(props: any); + private renderNav; + private renderMenuItems; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=TexturePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/TexturePanel.d.ts.map b/types/UI/Components/SourceManage/TexturePanel.d.ts.map new file mode 100644 index 0000000..1677b77 --- /dev/null +++ b/types/UI/Components/SourceManage/TexturePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TexturePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/TexturePanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D,UAAU,kBAAkB;CAE3B;AACD,UAAU,kBAAkB;IAExB,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB;AACD;;GAEG;AACH,qBAEa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAErF,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,YAAY,CAAkB;gBAC1B,KAAK,KAAA;IAMjB,OAAO,CAAC,SAAS,CAaf;IACF,OAAO,CAAC,eAAe,CAOrB;IACF,MAAM;CAmBT"} \ No newline at end of file diff --git a/types/UI/Components/SourceManage/UploadCom.d.ts b/types/UI/Components/SourceManage/UploadCom.d.ts new file mode 100644 index 0000000..44aea1e --- /dev/null +++ b/types/UI/Components/SourceManage/UploadCom.d.ts @@ -0,0 +1,34 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +interface IUploadProps { + isOpen: IObservableValue; + currentDir?: { + id: string; + path: string; + }; + getData?: Function; +} +/** + *上传图片组件 + */ +export declare class UploadComponent extends React.Component { + private uploadInput; + private filesUrls; + private imgSizes; + private files; + private processValue; + private fileReader; + private isEndUpload; + private isOk; + private isUploading; + handleSelectFiles: (e: any) => Promise; + handleFileList: (filelist: FileList) => Promise; + private Wait; + handleUpload: () => Promise; + private handleDelete; + private handleClose; + componentDidMount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=UploadCom.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SourceManage/UploadCom.d.ts.map b/types/UI/Components/SourceManage/UploadCom.d.ts.map new file mode 100644 index 0000000..1c08ee3 --- /dev/null +++ b/types/UI/Components/SourceManage/UploadCom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UploadCom.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SourceManage/UploadCom.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,UAAU,YAAY;IAElB,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED;;GAEG;AACH,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAClE,OAAO,CAAC,WAAW,CAAmB;IAC1B,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,QAAQ,CAAK;IACjC,OAAO,CAAC,KAAK,CAAM;IACP,OAAO,CAAC,YAAY,CAAM;IACtC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAa;IACb,OAAO,CAAC,WAAW,CAAS;IACxC,iBAAiB,4BAIf;IACF,cAAc,aAAoB,QAAQ,mBAiBxC;IAEF,OAAO,CAAC,IAAI;IAKZ,YAAY,sBA0CV;IACF,OAAO,CAAC,YAAY,CAKlB;IACF,OAAO,CAAC,WAAW,CAOjB;IACF,iBAAiB;IAejB,MAAM;CAwGT"} \ No newline at end of file diff --git a/types/UI/Components/SpeechBox/SpeechBox.d.ts b/types/UI/Components/SpeechBox/SpeechBox.d.ts new file mode 100644 index 0000000..c0a24f0 --- /dev/null +++ b/types/UI/Components/SpeechBox/SpeechBox.d.ts @@ -0,0 +1,10 @@ +import React = require("react"); +import { Rnd } from "react-rnd"; +export declare class SpeechBox extends React.Component<{}, {}> { + rnd: Rnd; + leftRatio: number; + topRatio: number; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=SpeechBox.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SpeechBox/SpeechBox.d.ts.map b/types/UI/Components/SpeechBox/SpeechBox.d.ts.map new file mode 100644 index 0000000..fdd5989 --- /dev/null +++ b/types/UI/Components/SpeechBox/SpeechBox.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpeechBox.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SpeechBox/SpeechBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAIhC,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAElD,GAAG,EAAE,GAAG,CAAC;IAET,SAAS,SAAK;IAEd,QAAQ,SAAK;IACb,iBAAiB;IAkBjB,MAAM;CAkBT"} \ No newline at end of file diff --git a/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts b/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts new file mode 100644 index 0000000..f2c1617 --- /dev/null +++ b/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts @@ -0,0 +1,5 @@ +export declare class SpeechBoxManage { + container: HTMLDivElement; + constructor(); +} +//# sourceMappingURL=SpeechBoxManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts.map b/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts.map new file mode 100644 index 0000000..1daca20 --- /dev/null +++ b/types/UI/Components/SpeechBox/SpeechBoxManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SpeechBoxManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/SpeechBox/SpeechBoxManage.tsx"],"names":[],"mappings":"AAMA,qBAAa,eAAe;IAExB,SAAS,EAAE,cAAc,CAAC;;CAY7B"} \ No newline at end of file diff --git a/types/UI/Components/Status.d.ts b/types/UI/Components/Status.d.ts new file mode 100644 index 0000000..02f1976 --- /dev/null +++ b/types/UI/Components/Status.d.ts @@ -0,0 +1,11 @@ +import * as React from "react"; +import { CSSProperties } from 'react'; +/** + * 底部状态栏. + */ +export declare class Status extends React.Component<{}, {}> { + style: CSSProperties; + mouseCoordStyle: CSSProperties; + render(): JSX.Element; +} +//# sourceMappingURL=Status.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Status.d.ts.map b/types/UI/Components/Status.d.ts.map new file mode 100644 index 0000000..e080b31 --- /dev/null +++ b/types/UI/Components/Status.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Status.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;GAEG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAE/C,KAAK,EAAE,aAAa,CAGlB;IACF,eAAe,EAAE,aAAa,CAK5B;IACF,MAAM;CAUT"} \ No newline at end of file diff --git a/types/UI/Components/Template/ActionTree.d.ts b/types/UI/Components/Template/ActionTree.d.ts new file mode 100644 index 0000000..447bfab --- /dev/null +++ b/types/UI/Components/Template/ActionTree.d.ts @@ -0,0 +1,16 @@ +import { ITreeNode, TreeEventHandler } from '@blueprintjs/core'; +import * as React from 'react'; +export interface IActionTreeProps { + nodes: ITreeNode[]; + className?: string; + onNodeDoubleClick?: TreeEventHandler; + onNodeClick?: TreeEventHandler; + onNodeCollapse?: (node: ITreeNode) => void; +} +export default class ActionTree extends React.Component { + render(): JSX.Element; + private handleDbclick; + private handleclick; + private handleNodeCollapse; +} +//# sourceMappingURL=ActionTree.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/ActionTree.d.ts.map b/types/UI/Components/Template/ActionTree.d.ts.map new file mode 100644 index 0000000..cc2d9eb --- /dev/null +++ b/types/UI/Components/Template/ActionTree.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActionTree.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/ActionTree.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,EAAE;IAEpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CAC9C;AAGD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC9D,MAAM;IAmDb,OAAO,CAAC,aAAa,CAOnB;IACF,OAAO,CAAC,WAAW,CAOjB;IACF,OAAO,CAAC,kBAAkB,CAMxB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/GetRoomCabName.d.ts b/types/UI/Components/Template/GetRoomCabName.d.ts new file mode 100644 index 0000000..96fc144 --- /dev/null +++ b/types/UI/Components/Template/GetRoomCabName.d.ts @@ -0,0 +1,19 @@ +import * as React from 'react'; +export interface IGetRoomInfo { + roomName: string; + cabName: string; + useCabName: boolean; + cabIndex?: number; + originCabName: string; +} +interface IGetRoomCabNameProps { + option: IGetRoomInfo; + needBoardName?: boolean; +} +export declare class GetRoomCabName extends React.Component { + private getOption; + render(): JSX.Element; + private handleChangeCabName; +} +export {}; +//# sourceMappingURL=GetRoomCabName.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/GetRoomCabName.d.ts.map b/types/UI/Components/Template/GetRoomCabName.d.ts.map new file mode 100644 index 0000000..7047b62 --- /dev/null +++ b/types/UI/Components/Template/GetRoomCabName.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetRoomCabName.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/GetRoomCabName.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,YAAY;IAEzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AACD,UAAU,oBAAoB;IAE1B,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC;IACrE,OAAO,CAAC,SAAS,CAkBf;IACK,MAAM;IAqCb,OAAO,CAAC,mBAAmB,CAMzB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/KuGanDetail.d.ts b/types/UI/Components/Template/KuGanDetail.d.ts new file mode 100644 index 0000000..98a43c4 --- /dev/null +++ b/types/UI/Components/Template/KuGanDetail.d.ts @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { KuGanStore } from '../../Store/KuGanStore'; +interface IKuGanDetailProps { + store: KuGanStore; +} +export declare class KuGanDetail extends React.Component { + private isLoading; + componentDidMount(): Promise; + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=KuGanDetail.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/KuGanDetail.d.ts.map b/types/UI/Components/Template/KuGanDetail.d.ts.map new file mode 100644 index 0000000..c5ea84a --- /dev/null +++ b/types/UI/Components/Template/KuGanDetail.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KuGanDetail.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/KuGanDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD,UAAU,iBAAiB;IAEvB,KAAK,EAAE,UAAU,CAAC;CACrB;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACnD,OAAO,CAAC,SAAS,CAAQ;IAC/B,iBAAiB;IAMvB,oBAAoB;IAIb,MAAM;CAkEhB"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateActionDiglog.d.ts b/types/UI/Components/Template/TemplateActionDiglog.d.ts new file mode 100644 index 0000000..cb76410 --- /dev/null +++ b/types/UI/Components/Template/TemplateActionDiglog.d.ts @@ -0,0 +1,37 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { TemplateAction } from '../../../DatabaseServices/Template/Action/TemplateAction'; +import { TempalteEditorStore } from '../../Store/TemplateEditorStore'; +import { IActionParam } from './TemplateActionList'; +import { INeedUpdateParams } from './TemplateComponent'; +export declare enum EEditorActionType { + Add = 0, + Editor = 1, + AddFillet = 2, + AddParams = 3 +} +export interface ITempalteActionDialogProps { + store: TempalteEditorStore; + type: EEditorActionType; + open: IObservableValue; + currentAction?: TemplateAction; + currentNodePath?: number[]; + currentActionInfo?: IActionParam; +} +export declare class TempalteActionDialog extends React.Component { + private isCNInput; + pararmConfig: INeedUpdateParams; + private renderDialogBody; + private renderActionDialog; + private renderParamsDialog; + componentWillUnmount(): void; + render(): JSX.Element; + handleClick: () => Promise; + handleModifyAction: () => void; + private addAction; + private addActionToTemplate; + private addTemplateParam; + private handleAddNode; + handleCloseDialog: () => void; +} +//# sourceMappingURL=TemplateActionDiglog.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateActionDiglog.d.ts.map b/types/UI/Components/Template/TemplateActionDiglog.d.ts.map new file mode 100644 index 0000000..5d7bfa8 --- /dev/null +++ b/types/UI/Components/Template/TemplateActionDiglog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateActionDiglog.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateActionDiglog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAEpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAG1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD,oBAAY,iBAAiB;IAEzB,GAAG,IAAI;IACP,MAAM,IAAI;IACV,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,0BAA0B;IAEvC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iBAAiB,CAAC,EAAE,YAAY,CAAC;CACpC;AAED,qBACa,oBAAqB,SAAQ,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC;IACjF,OAAO,CAAC,SAAS,CAAS;IACd,YAAY,EAAE,iBAAiB,CAMzC;IACF,OAAO,CAAC,gBAAgB,CAMtB;IACF,OAAO,CAAC,kBAAkB,CAkDxB;IACF,OAAO,CAAC,kBAAkB,CAoCxB;IACF,oBAAoB;IAIb,MAAM;IA4Db,WAAW,sBAyCT;IACF,kBAAkB,aAQhB;IACF,OAAO,CAAC,SAAS,CA2Bf;IACF,OAAO,CAAC,mBAAmB,CAMzB;IACF,OAAO,CAAC,gBAAgB,CAWtB;IACF,OAAO,CAAC,aAAa,CAiCnB;IACF,iBAAiB,aAGf;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateActionList.d.ts b/types/UI/Components/Template/TemplateActionList.d.ts new file mode 100644 index 0000000..dcd29b0 --- /dev/null +++ b/types/UI/Components/Template/TemplateActionList.d.ts @@ -0,0 +1,38 @@ +import * as React from 'react'; +import { TempalteEditorStore } from '../../Store/TemplateEditorStore'; +export interface ITempalteActionListProps { + store: TempalteEditorStore; +} +export interface IActionParam { + paramName?: string; + actionName: string; + expr: string; +} +export default class TempalteActionList extends React.Component { + private _tree; + private index; + private _currentAction; + private startEditorAction; + actionInfo: IActionParam; + private _currentNodePath; + private _editorActType; + constructor(props: any); + componentWillMount(): void; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private InitAction; + private handleCancelSelect; + private handleDblick; + private handleNodeCollapse; + private handleNodeClick; + private SelectNode; + private forEachNode; + private parseUpdateNodes; + private handleAddAction; + private deleteAction; + private clickBrThicknessButton; + private addBrThicknessButton; + private autoSetTemplate; +} +//# sourceMappingURL=TemplateActionList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateActionList.d.ts.map b/types/UI/Components/Template/TemplateActionList.d.ts.map new file mode 100644 index 0000000..9675d02 --- /dev/null +++ b/types/UI/Components/Template/TemplateActionList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateActionList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateActionList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,mBAAmB,EAAgB,MAAM,iCAAiC,CAAC;AAKpF,MAAM,WAAW,wBAAwB;IAErC,KAAK,EAAE,mBAAmB,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,EAAE,EAAE,CAAC;IACzF,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAyB;IACtC,UAAU,EAAE,YAAY,CAAgC;IACpE,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,cAAc,CAA4B;gBACtC,KAAK,KAAA;IAIjB,kBAAkB;IAKlB,iBAAiB;IAIjB,oBAAoB;IAIb,MAAM;IA+Db,OAAO,CAAC,UAAU,CAOhB;IACF,OAAO,CAAC,kBAAkB,CASxB;IACF,OAAO,CAAC,YAAY,CAYlB;IAEF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,eAAe,CAIrB;IAEF,OAAO,CAAC,UAAU,CAYhB;IAEF,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,gBAAgB,CA8BtB;IACF,OAAO,CAAC,eAAe,CASrB;IACF,OAAO,CAAC,YAAY,CAwClB;IACF,OAAO,CAAC,sBAAsB,CAa5B;IACF,OAAO,CAAC,oBAAoB,CAY1B;IACF,OAAO,CAAC,eAAe,CAMrB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateComponent.d.ts b/types/UI/Components/Template/TemplateComponent.d.ts new file mode 100644 index 0000000..dad3f11 --- /dev/null +++ b/types/UI/Components/Template/TemplateComponent.d.ts @@ -0,0 +1,47 @@ +import * as React from 'react'; +import { TempalteEditorStore } from '../../Store/TemplateEditorStore'; +import { IDirectoryProps } from '../SourceManage/CommonPanel'; +import { ITempTagProps } from '../../../Add-on/Template/TemplateTagCommand'; +export interface INeedUpdateParams { + name: string; + value: string | number; + description: string; + expr?: string | number; + isLock?: boolean; +} +export interface ITemplateManage { + store?: TempalteEditorStore; + currentTag?: ITempTagProps; +} +export declare class TemplateManage extends React.Component { + private option; + private canCreateTemplate; + private currentProps; + private currentTemplateInfo; + private autoCutOption; + constructor(props: any); + private renderNav; + private renderMenuItems; + private startCreateTemplate; + handleTemplate: (name: string, currentDir: IDirectoryProps, callback: Function) => Promise; + private uploadTemplate; + private handleRenameTemplate; + private GetTempalteAndUpdate; + private handleInsert; + private handleInsertByBasePt; + private SetRootCabName; + private handleInsertBySpace; + private DrawKuGanBySpace; + private handleEditor; + private handleReplace; + private handleInsertHandle; + private addHandleToDoor; + private selectTemplateTag; + private renderBody; + private renderTemplateInfo; + private renderTemplateList; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=TemplateComponent.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateComponent.d.ts.map b/types/UI/Components/Template/TemplateComponent.d.ts.map new file mode 100644 index 0000000..15e9b8e --- /dev/null +++ b/types/UI/Components/Template/TemplateComponent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateComponent.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAe,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAe3E,OAAO,EAAsB,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAWhG,MAAM,WAAW,iBAAiB;IAE9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE5B,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,aAAa,CAAC;CAC9B;AAED,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IACxD,OAAO,CAAC,MAAM,CAMxB;IACF,OAAO,CAAC,iBAAiB,CAAyB;IACtC,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,mBAAmB,CAA6C;IACxE,OAAO,CAAC,aAAa,CAAqE;gBAC1F,KAAK,KAAA;IAOjB,OAAO,CAAC,SAAS,CAyDf;IACF,OAAO,CAAC,eAAe,CAOrB;IACF,OAAO,CAAC,mBAAmB,CAKzB;IAEF,cAAc,SAAgB,MAAM,cAAc,eAAe,YAAY,QAAQ,mBAoCnF;IACF,OAAO,CAAC,cAAc,CA2BpB;IACF,OAAO,CAAC,oBAAoB,CAc1B;IACF,OAAO,CAAC,oBAAoB,CAU1B;IACF,OAAO,CAAC,YAAY,CAgClB;IACF,OAAO,CAAC,oBAAoB,CAqF1B;IACF,OAAO,CAAC,cAAc,CA6BpB;IACF,OAAO,CAAC,mBAAmB,CAmCzB;IACF,OAAO,CAAC,gBAAgB,CA2EtB;IACF,OAAO,CAAC,YAAY,CAMlB;IACF,OAAO,CAAC,aAAa,CAoJnB;IACF,OAAO,CAAC,kBAAkB,CA6BxB;IACF,OAAO,CAAC,eAAe,CAgJrB;IACF,OAAO,CAAC,iBAAiB,CAIvB;IACF,OAAO,CAAC,UAAU,CAMhB;IACF,OAAO,CAAC,kBAAkB,CAUxB;IACF,OAAO,CAAC,kBAAkB,CAiCxB;IACF,iBAAiB;IAIjB,oBAAoB;IAKb,MAAM;CA4DhB"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateDetail.d.ts b/types/UI/Components/Template/TemplateDetail.d.ts new file mode 100644 index 0000000..e866ca1 --- /dev/null +++ b/types/UI/Components/Template/TemplateDetail.d.ts @@ -0,0 +1,32 @@ +import * as React from 'react'; +import { TemplateParam } from '../../../DatabaseServices/Template/Param/TemplateParam'; +import { INeedUpdateParams } from './TemplateComponent'; +import { IDrawerDoorTempInfo, ISelectTempInfo } from '../../Store/DoorInterface'; +import { IDirectoryProps } from '../SourceManage/CommonPanel'; +export interface ITemplateDetailProps { + style?: React.CSSProperties; + className?: string; + params?: TemplateParam[]; + updateParams: INeedUpdateParams[]; + currentInfo?: IDrawerDoorTempInfo; + getData?: () => void; + showSelectTemp?: boolean; + selectInfo?: ISelectTempInfo; + isUpload?: boolean; + disableKeys?: string[]; + onBlur?: (name: string, val: string) => void; + isShowTag?: boolean; + currentDir?: IDirectoryProps; +} +export declare class TemplateDetail extends React.Component { + static defaultProps: { + isShowTag: boolean; + }; + private renderHandleConfig; + private renderKuGanggConfigs; + render(): JSX.Element; + private handleUpdateParam; + private addTag; + private removeTag; +} +//# sourceMappingURL=TemplateDetail.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateDetail.d.ts.map b/types/UI/Components/Template/TemplateDetail.d.ts.map new file mode 100644 index 0000000..066aab4 --- /dev/null +++ b/types/UI/Components/Template/TemplateDetail.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateDetail.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,aAAa,EAAE,MAAM,wDAAwD,CAAC;AAEvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAA6B,MAAM,2BAA2B,CAAC;AAM5G,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,MAAM,WAAW,oBAAoB;IAEjC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC;AAgBD,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC;IACrE,MAAM,CAAC,YAAY;;MAEjB;IACF,OAAO,CAAC,kBAAkB,CAmExB;IACF,OAAO,CAAC,oBAAoB,CAK1B;IACK,MAAM;IAqJb,OAAO,CAAC,iBAAiB,CAqBvB;IACF,OAAO,CAAC,MAAM,CAaZ;IACF,OAAO,CAAC,SAAS,CAIf;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateEditor.d.ts b/types/UI/Components/Template/TemplateEditor.d.ts new file mode 100644 index 0000000..43e26b6 --- /dev/null +++ b/types/UI/Components/Template/TemplateEditor.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +import { TempalteEditorStore } from '../../Store/TemplateEditorStore'; +export interface ITemplateEditorProps { + store: TempalteEditorStore; + tid?: string; + isCheck?: boolean; +} +export declare const TEMP_EDITOR_KEY = "tempEditorKey"; +export declare class TemplateEditor extends React.Component { + private event; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private handleClose; + /** + * <更新模块> 更新线上的模块 + */ + private handleUpdateTemplate; + private handleUploadTemplate; + private exit; +} +//# sourceMappingURL=TemplateEditor.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateEditor.d.ts.map b/types/UI/Components/Template/TemplateEditor.d.ts.map new file mode 100644 index 0000000..69ea722 --- /dev/null +++ b/types/UI/Components/Template/TemplateEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateEditor.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAWtE,MAAM,WAAW,oBAAoB;IAEjC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAW;IACxB,iBAAiB;IA8CjB,oBAAoB;IAQb,MAAM;IAyDb,OAAO,CAAC,WAAW,CAMjB;IAEF;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAK1B;IACF,OAAO,CAAC,oBAAoB,CAI1B;IACF,OAAO,CAAC,IAAI,CAMV;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateInterface.d.ts b/types/UI/Components/Template/TemplateInterface.d.ts new file mode 100644 index 0000000..bd74989 --- /dev/null +++ b/types/UI/Components/Template/TemplateInterface.d.ts @@ -0,0 +1,9 @@ +export interface IKuGangDrawOption { + count: number; + isHor: boolean; + depth: number; + isDefault: boolean; + leftDist: number; + rightDist: number; +} +//# sourceMappingURL=TemplateInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateInterface.d.ts.map b/types/UI/Components/Template/TemplateInterface.d.ts.map new file mode 100644 index 0000000..806f572 --- /dev/null +++ b/types/UI/Components/Template/TemplateInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateInterface.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateInterface.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iBAAiB;IAE9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACrB"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateList.d.ts b/types/UI/Components/Template/TemplateList.d.ts new file mode 100644 index 0000000..f892368 --- /dev/null +++ b/types/UI/Components/Template/TemplateList.d.ts @@ -0,0 +1,50 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { INeedUpdateParams } from './TemplateComponent'; +import { IDrawerDoorTempInfo, ISelectTempInfo } from '../../Store/DoorInterface'; +import { IDirectoryProps } from '../SourceManage/CommonPanel'; +import { IGetRoomInfo } from './GetRoomCabName'; +export interface ITemplateListProps { + deleteFun?: (temp: { + module_id: any; + }) => void; + dataList?: any[]; + select?: (e: React.FormEvent, data: any) => void; + getData?: () => void; + /**当前的模板ui参数 */ + currentProps: INeedUpdateParams[]; + isRename?: IObservableValue; + /**当前点选的模板信息 */ + currentInfo: IDrawerDoorTempInfo; + editor?: () => void; + /**禁止删除模板 */ + forbidDelete?: boolean; + /**隐藏选择checkbox */ + hideSelectBox?: boolean; + /**选择的模板信息 */ + selectInfo?: ISelectTempInfo; + currentDir?: IDirectoryProps; + cabOption?: IGetRoomInfo; + selectIds?: Set; + showInfos?: boolean; + insert?: (bool: boolean) => void; +} +export interface ITempItemBack { + module_id: string; + props: string; + name: string; + logo: string; + dir_id: string; +} +export declare class TemplateList extends React.Component { + private _params; + private watchDir; + UNSAFE_componentWillMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private handleMounseDown; + private showContextMenu; + private publishTemplate; + private handleDbclick; +} +//# sourceMappingURL=TemplateList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateList.d.ts.map b/types/UI/Components/Template/TemplateList.d.ts.map new file mode 100644 index 0000000..2739470 --- /dev/null +++ b/types/UI/Components/Template/TemplateList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,gBAAgB,EAAY,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAA2C,MAAM,2BAA2B,CAAC;AAE1H,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,WAAW,kBAAkB;IAE/B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,MAAC;KAAE,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACnE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,eAAe;IACf,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrC,eAAe;IACf,WAAW,EAAE,mBAAmB,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa;IACb,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAE1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC;IACjE,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAW;IAC3B,yBAAyB;IAOzB,oBAAoB;IAKb,MAAM;IAmCb,OAAO,CAAC,gBAAgB,CA+EtB;IAEF,OAAO,CAAC,eAAe,CA4BrB;IACF,OAAO,CAAC,eAAe,CAGrB;IACF,OAAO,CAAC,aAAa,CAInB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateParamList.d.ts b/types/UI/Components/Template/TemplateParamList.d.ts new file mode 100644 index 0000000..64c1a24 --- /dev/null +++ b/types/UI/Components/Template/TemplateParamList.d.ts @@ -0,0 +1,25 @@ +import * as React from 'react'; +import { TempalteEditorStore } from '../../Store/TemplateEditorStore'; +export interface ITemplateParamListProps { + store: TempalteEditorStore; +} +export default class TemplateParamList extends React.Component { + private startAddParam; + private isEditorParamName; + private currentInput; + componentDidUpdate(): void; + render(): JSX.Element; + private deleteParam; + private setParamOrCoordinate; + /** + * 设置变量值 + */ + private SetParamValue; + private setCoordinate; + private updateSize; + private updateTempalteParam; + private moveTemplateParam; + private startEditorParamName; + private handleChangeParamName; +} +//# sourceMappingURL=TemplateParamList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateParamList.d.ts.map b/types/UI/Components/Template/TemplateParamList.d.ts.map new file mode 100644 index 0000000..f50cff6 --- /dev/null +++ b/types/UI/Components/Template/TemplateParamList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateParamList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateParamList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAetE,MAAM,WAAW,uBAAuB;IAEpC,KAAK,EAAE,mBAAmB,CAAC;CAC9B;AAGD,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC,uBAAuB,CAAC;IACnF,OAAO,CAAC,aAAa,CAAyB;IAClC,OAAO,CAAC,iBAAiB,CAAS;IAC9C,OAAO,CAAC,YAAY,CAAmB;IACvC,kBAAkB;IAKX,MAAM;IAkIb,OAAO,CAAC,WAAW,CA0BjB;IACF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF;;OAEG;IACH,OAAO,CAAC,aAAa,CAanB;IACF,OAAO,CAAC,aAAa,CAInB;IACF,OAAO,CAAC,UAAU,CAShB;IACF,OAAO,CAAC,mBAAmB,CAiBzB;IACF,OAAO,CAAC,iBAAiB,CAiDvB;IACF,OAAO,CAAC,oBAAoB,CAa1B;IACF,OAAO,CAAC,qBAAqB,CA8B3B;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateSaveDir.d.ts b/types/UI/Components/Template/TemplateSaveDir.d.ts new file mode 100644 index 0000000..ae3fed5 --- /dev/null +++ b/types/UI/Components/Template/TemplateSaveDir.d.ts @@ -0,0 +1,18 @@ +import * as React from 'react'; +import { ITreeNode } from '@blueprintjs/core'; +interface ITemplateSaveDirProps { + upload: (dirid: React.ReactText) => void; +} +export declare class TemplateSaveDir extends React.Component { + constructor(props: any); + componentWillMount(): Promise; + render(): JSX.Element; + private handleNodeCollapse; + private handleNodeClick; +} +/**后台的数据目录转为ui树 */ +export declare function ParseDirNodes(dirs: any[], defaultId: string, isRoot?: boolean): ITreeNode<{}>[]; +export {}; +//# sourceMappingURL=TemplateSaveDir.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateSaveDir.d.ts.map b/types/UI/Components/Template/TemplateSaveDir.d.ts.map new file mode 100644 index 0000000..e29a2b5 --- /dev/null +++ b/types/UI/Components/Template/TemplateSaveDir.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateSaveDir.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateSaveDir.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA4E,SAAS,EAAQ,MAAM,mBAAmB,CAAC;AAG9H,UAAU,qBAAqB;IAE3B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;CAC5C;AAED,qBAAa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE;IAAE,KAAK,EAAE,SAAS,EAAE,CAAC;CAAE,CAAC;gBACpF,KAAK,KAAA;IAOX,kBAAkB;IAOjB,MAAM;IAqBb,OAAO,CAAC,kBAAkB,CAIxB;IACF,OAAO,CAAC,eAAe,CAGrB;CACL;AAED,kBAAkB;AAClB,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAO,mBAiC1E"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateSelect.d.ts b/types/UI/Components/Template/TemplateSelect.d.ts new file mode 100644 index 0000000..54da713 --- /dev/null +++ b/types/UI/Components/Template/TemplateSelect.d.ts @@ -0,0 +1,20 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { DoorDrawerStore } from '../../Store/DoorDrawerStore/DoorDrawerStore'; +export interface ITemplateselectProps { + open: IObservableValue; + store: DoorDrawerStore; + filter: string[]; +} +export declare class TemplateSelect extends React.Component { + private currentProps; + private currentInfo; + private container; + constructor(props: any); + private handleClose; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private applySelectTemp; +} +//# sourceMappingURL=TemplateSelect.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateSelect.d.ts.map b/types/UI/Components/Template/TemplateSelect.d.ts.map new file mode 100644 index 0000000..66b7171 --- /dev/null +++ b/types/UI/Components/Template/TemplateSelect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateSelect.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,MAAM,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAU9E,MAAM,WAAW,oBAAoB;IAEjC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAC7D,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAA6C;IAC5E,OAAO,CAAC,SAAS,CAAc;gBACnB,KAAK,KAAA;IAKjB,OAAO,CAAC,WAAW,CAGjB;IACF,iBAAiB;IAmCjB,oBAAoB;IAIb,MAAM;IAoDb,OAAO,CAAC,eAAe,CAcrB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateTagCom.d.ts b/types/UI/Components/Template/TemplateTagCom.d.ts new file mode 100644 index 0000000..23e8ccf --- /dev/null +++ b/types/UI/Components/Template/TemplateTagCom.d.ts @@ -0,0 +1,29 @@ +import * as React from 'react'; +import { IDrawerDoorTempInfo } from '../../Store/DoorInterface'; +import { ITempTagProps } from '../../../Add-on/Template/TemplateTagCommand'; +import { INeedUpdateParams } from './TemplateComponent'; +import { IGetRoomInfo } from './GetRoomCabName'; +export interface ITemplateTagComProps { + currentTag: ITempTagProps; + currentTemplateInfo: IDrawerDoorTempInfo; + currentProps: INeedUpdateParams[]; + cabOption: IGetRoomInfo; +} +export declare class TemplateTagCom extends React.Component { + private params; + private dataList; + private pageData; + private currentTag; + private canInput; + private isDesc; + UNSAFE_componentWillMount(): Promise; + render(): JSX.Element; + private readTemplateInfo; + private selectTemplateTag; + private _propsCache; + private selectTemp; + private showContextMenu; + private removeTag; + private addTagDesc; +} +//# sourceMappingURL=TemplateTagCom.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/TemplateTagCom.d.ts.map b/types/UI/Components/Template/TemplateTagCom.d.ts.map new file mode 100644 index 0000000..780741a --- /dev/null +++ b/types/UI/Components/Template/TemplateTagCom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateTagCom.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/TemplateTagCom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAsB,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAGhG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IAEjC,UAAU,EAAE,aAAa,CAAC;IAC1B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,SAAS,EAAE,YAAY,CAAC;CAC3B;AAED,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAEzD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAI1B;IACU,OAAO,CAAC,UAAU,CAA8D;IAC5F,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,MAAM,CAAQ;IAChB,yBAAyB;IAKxB,MAAM;IA8Db,OAAO,CAAC,gBAAgB,CA2BtB;IACF,OAAO,CAAC,iBAAiB,CAUvB;IACF,OAAO,CAAC,WAAW,CAAsC;IACzD,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,eAAe,CAqCrB;IACF,OAAO,CAAC,SAAS,CAOf;IACF,OAAO,CAAC,UAAU,CAahB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/Template/ToplineList.d.ts b/types/UI/Components/Template/ToplineList.d.ts new file mode 100644 index 0000000..c212cfc --- /dev/null +++ b/types/UI/Components/Template/ToplineList.d.ts @@ -0,0 +1,35 @@ +import { IObservableValue } from 'mobx'; +import * as React from 'react'; +import { IDirectoryProps } from '../SourceManage/CommonPanel'; +export interface IToplineListProps { + deleteFun?: (topline?: { + topline_id: any; + }) => void; + dataList?: any[]; + select?: (e: React.FormEvent, data: any) => void; + draw: (id: string) => void; + isRename: IObservableValue; + updata: (name: string, dir: IDirectoryProps, call: Function) => void; + getData?: () => void; + info: { + id: string; + name: string; + }; + selectIds?: Set; + showInfos?: boolean; +} +export declare class ToplineList extends React.Component { + private _cameraFiler; + constructor(props: any); + private handleDbClick; + private handleMounseDown; + private exitEditor; + private renderToasterMessage; + private startEditorTopline; + private handleUpdateTopline; + private showContextMenu; + render(): JSX.Element; +} +//# sourceMappingURL=ToplineList.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/ToplineList.d.ts.map b/types/UI/Components/Template/ToplineList.d.ts.map new file mode 100644 index 0000000..f139f03 --- /dev/null +++ b/types/UI/Components/Template/ToplineList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToplineList.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/ToplineList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,MAAM,WAAW,iBAAiB;IAE9B,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,UAAU,MAAC;KAAE,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE,CAAC;IACpC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAC;CAAE,CAAC;IAChG,OAAO,CAAC,YAAY,CAAW;gBACnB,KAAK,KAAA;IAOjB,OAAO,CAAC,aAAa,CAGnB;IACF,OAAO,CAAC,gBAAgB,CAItB;IACF,OAAO,CAAC,UAAU,CAUhB;IACF,OAAO,CAAC,oBAAoB,CAc1B;IACF,OAAO,CAAC,kBAAkB,CAmCxB;IACF,OAAO,CAAC,mBAAmB,CAuCzB;IAEF,OAAO,CAAC,eAAe,CAqCrB;IACK,MAAM;CA4BhB"} \ No newline at end of file diff --git a/types/UI/Components/Template/ToplineManage.d.ts b/types/UI/Components/Template/ToplineManage.d.ts new file mode 100644 index 0000000..8d0e576 --- /dev/null +++ b/types/UI/Components/Template/ToplineManage.d.ts @@ -0,0 +1,22 @@ +import * as React from 'react'; +interface ITopllineManageProps { +} +interface ITopllineManageState { + defaultDirName: string; +} +export declare class TopllineManage extends React.Component { + private canCreateTopline; + private option; + private currentInfo; + constructor(props: any); + handleTopline: (name: string, currentDir: any, callback: Function) => Promise; + private handleCreateTopline; + handleRenameTopline: (name: string) => Promise; + private drawTopline; + private startCreateTopline; + renderNav: () => JSX.Element; + renderMenuItems: () => JSX.Element; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=ToplineManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Template/ToplineManage.d.ts.map b/types/UI/Components/Template/ToplineManage.d.ts.map new file mode 100644 index 0000000..b21d645 --- /dev/null +++ b/types/UI/Components/Template/ToplineManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToplineManage.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/Template/ToplineManage.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,UAAU,oBAAoB;CAE7B;AACD,UAAU,oBAAoB;IAE1B,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,qBACa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3F,OAAO,CAAC,gBAAgB,CAAyB;IACrC,OAAO,CAAC,MAAM,CAKxB;IACU,OAAO,CAAC,WAAW,CAAwB;gBAC3C,KAAK,KAAA;IAOjB,aAAa,SAAgB,MAAM,6BAAwB,QAAQ,mBA4BjE;IACF,OAAO,CAAC,mBAAmB,CAmFzB;IAEF,mBAAmB,SAAgB,MAAM,mBAcvC;IACF,OAAO,CAAC,WAAW,CAejB;IACF,OAAO,CAAC,kBAAkB,CAKxB;IACF,SAAS,oBAaP;IACF,eAAe,oBAOb;IACK,MAAM;CA8DhB"} \ No newline at end of file diff --git a/types/UI/Components/Toaster.d.ts b/types/UI/Components/Toaster.d.ts new file mode 100644 index 0000000..5679ee8 --- /dev/null +++ b/types/UI/Components/Toaster.d.ts @@ -0,0 +1,35 @@ +import { IToastOptions } from "@blueprintjs/core"; +import * as React from 'react'; +import { ISetItemOption } from "./Board/BoardCommon"; +export declare const AppToaster: import("@blueprintjs/core").IToaster; +/**展示多行提示 */ +export declare function ShowLinesToaster(strArr: string[], props: Partial, key?: string): void; +interface IToasterInputProps extends ISetItemOption { + inputClassName?: string; + onBlur?(e?: any, hasError?: boolean): any; + onClick?(e?: any): any; + callback?: Function; + selectAll?: boolean; +} +/** + * 参数option为属性对象 + */ +export declare class ToasterInput extends React.Component { + private showData; + private errorMsg; + private hideErrorMsg; + static defaultProps: { + isUpper: boolean; + }; + getErrorMsg: (v: string) => void; + handleChange: (e: React.ChangeEvent) => void; + handleClick: (e: any) => void; + handleBlur: (e: any) => void; + handleFocus: (e: React.FocusEvent) => void; + UNSAFE_componentWillMount(): void; + componentDidMount(): void; + UNSAFE_componentWillReceiveProps(nextProps: any): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=Toaster.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/Toaster.d.ts.map b/types/UI/Components/Toaster.d.ts.map new file mode 100644 index 0000000..57fbf38 --- /dev/null +++ b/types/UI/Components/Toaster.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../../src/UI/Components/Toaster.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,eAAO,MAAM,UAAU,sCAIrB,CAAC;AACH,YAAY;AACZ,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,QAuB7F;AAED,UAAU,kBAAmB,SAAQ,cAAc;IAE/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAA,EAAE,QAAQ,CAAC,EAAE,OAAO,OAAE;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAA,OAAE;IACb,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,qBACa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,CAAC;IAErE,OAAO,CAAC,QAAQ,CAAS;IACb,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,YAAY,CAAQ;IACxC,MAAM,CAAC,YAAY;;MAEjB;IACF,WAAW,MAAO,MAAM,UAWtB;IACF,YAAY,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAyCpD;IACF,WAAW,mBAKT;IACF,UAAU,mBAQR;IACF,WAAW,MAAO,gBAAgB,CAAC,gBAAgB,CAAC,UAIlD;IACF,yBAAyB;IAWzB,iBAAiB;IAIjB,gCAAgC,CAAC,SAAS,KAAA;IAO1C,MAAM;CA6BT"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/PropertiesPanel.d.ts b/types/UI/Components/ToolBar/PropertiesPanel.d.ts new file mode 100644 index 0000000..5c1c677 --- /dev/null +++ b/types/UI/Components/ToolBar/PropertiesPanel.d.ts @@ -0,0 +1,13 @@ +import React from "react"; +import { PropertiesStore } from "./PropertiesStore"; +import { Entity } from "../../../DatabaseServices/Entity/Entity"; +export interface PropertiesPanelProps { + store?: PropertiesStore; +} +export declare class PropertiesPanel extends React.Component { + Exit(): void; + HandleSelectOnChange(e: React.ChangeEvent): void; + GetEntsByType(ents: Entity[], type: string): Entity[]; + render(): JSX.Element; +} +//# sourceMappingURL=PropertiesPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/PropertiesPanel.d.ts.map b/types/UI/Components/ToolBar/PropertiesPanel.d.ts.map new file mode 100644 index 0000000..c346548 --- /dev/null +++ b/types/UI/Components/ToolBar/PropertiesPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PropertiesPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/PropertiesPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAejE,MAAM,WAAW,oBAAoB;IAEjC,KAAK,CAAC,EAAE,eAAe,CAAC;CAC3B;AACD,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAE1E,IAAI;IAMJ,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC;IAM5D,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;IAe1C,MAAM;CAoFT"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/PropertiesStore.d.ts b/types/UI/Components/ToolBar/PropertiesStore.d.ts new file mode 100644 index 0000000..04baf96 --- /dev/null +++ b/types/UI/Components/ToolBar/PropertiesStore.d.ts @@ -0,0 +1,5 @@ +import { EntityStore } from "../../Store/EntityStore"; +export declare class PropertiesStore extends EntityStore { + constructor(); +} +//# sourceMappingURL=PropertiesStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/PropertiesStore.d.ts.map b/types/UI/Components/ToolBar/PropertiesStore.d.ts.map new file mode 100644 index 0000000..69fe870 --- /dev/null +++ b/types/UI/Components/ToolBar/PropertiesStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PropertiesStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/PropertiesStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,qBAAa,eAAgB,SAAQ,WAAW;;CAkB/C"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/Properties_Dim.d.ts b/types/UI/Components/ToolBar/Properties_Dim.d.ts new file mode 100644 index 0000000..40fc6c0 --- /dev/null +++ b/types/UI/Components/ToolBar/Properties_Dim.d.ts @@ -0,0 +1,18 @@ +import React from "react"; +import { AlignedDimension } from "../../../DatabaseServices/Dimension/AlignedDimension"; +export interface Properties_DimPanelProps { + ents: AlignedDimension[]; +} +export declare class Properties_DimPanel extends React.Component { + private removeFuncs; + outlineCheckDims: boolean; + private dim_TextSize; + private dim_InputEl; + private numericInputVal; + private isPopoverOpen; + componentDidMount(): void; + componentWillUnmount(): void; + private Dim_UseDefault; + render(): JSX.Element; +} +//# sourceMappingURL=Properties_Dim.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/Properties_Dim.d.ts.map b/types/UI/Components/ToolBar/Properties_Dim.d.ts.map new file mode 100644 index 0000000..424ae67 --- /dev/null +++ b/types/UI/Components/ToolBar/Properties_Dim.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Properties_Dim.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/Properties_Dim.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAC;AAGxF,MAAM,WAAW,wBAAwB;IAErC,IAAI,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED,qBACa,mBAAoB,SAAQ,KAAK,CAAC,SAAS,CAAC,wBAAwB,EAAE,EAAE,CAAC;IAElF,OAAO,CAAC,WAAW,CAAkB;IACzB,gBAAgB,EAAE,OAAO,CAAQ;IACjC,OAAO,CAAC,YAAY,CAAc;IAC9C,OAAO,CAAC,WAAW,CAAmB;IAC1B,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAAkB;IACnD,iBAAiB;IAiCjB,oBAAoB;IAMpB,OAAO,CAAC,cAAc;IAoBtB,MAAM;CAwKT"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/Properties_Text.d.ts b/types/UI/Components/ToolBar/Properties_Text.d.ts new file mode 100644 index 0000000..76ef5b9 --- /dev/null +++ b/types/UI/Components/ToolBar/Properties_Text.d.ts @@ -0,0 +1,19 @@ +import React from "react"; +import { Text } from "../../../DatabaseServices/Text/Text"; +export interface Properties_TextProps { + ents: Text[]; +} +export declare class Properties_Text extends React.Component { + private removeFuncs; + private dim_TextSize; + private dim_InputEl; + private numericInputVal; + private isPopoverOpen; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; + private handleChange; + private handleFocus; + private handleBlur; +} +//# sourceMappingURL=Properties_Text.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/Properties_Text.d.ts.map b/types/UI/Components/ToolBar/Properties_Text.d.ts.map new file mode 100644 index 0000000..83b738c --- /dev/null +++ b/types/UI/Components/ToolBar/Properties_Text.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Properties_Text.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/Properties_Text.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAAE,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAC3D,MAAM,WAAW,oBAAoB;IAEjC,IAAI,EAAE,IAAI,EAAE,CAAC;CAChB;AAED,qBACa,eAAgB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAE1E,OAAO,CAAC,WAAW,CAAkB;IACzB,OAAO,CAAC,YAAY,CAAc;IAC9C,OAAO,CAAC,WAAW,CAAmB;IAC1B,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,aAAa,CAAkB;IACnD,iBAAiB;IASjB,oBAAoB;IAMpB,MAAM;IAgCN,OAAO,CAAC,YAAY,CAelB;IACF,OAAO,CAAC,WAAW,CAGjB;IACF,OAAO,CAAC,UAAU,CAqBhB;CACL"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/ToolBar.d.ts b/types/UI/Components/ToolBar/ToolBar.d.ts new file mode 100644 index 0000000..f3e1631 --- /dev/null +++ b/types/UI/Components/ToolBar/ToolBar.d.ts @@ -0,0 +1,10 @@ +import * as React from 'react'; +import { ICommandIconInfo } from '../TopToolBar/TopToolBarInterface'; +import './PropertiesPanel.less'; +export interface ToolBarProps { + iconList: ICommandIconInfo[]; +} +export declare class ToolBar extends React.Component { + render(): JSX.Element; +} +//# sourceMappingURL=ToolBar.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/ToolBar.d.ts.map b/types/UI/Components/ToolBar/ToolBar.d.ts.map new file mode 100644 index 0000000..82191cd --- /dev/null +++ b/types/UI/Components/ToolBar/ToolBar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToolBar.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/ToolBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,wBAAwB,CAAC;AAIhC,MAAM,WAAW,YAAY;IAEzB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAChC;AACD,qBACa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,CAAC;IAE1D,MAAM;CA4BT"} \ No newline at end of file diff --git a/types/UI/Components/ToolBar/ToolbarContainer.d.ts b/types/UI/Components/ToolBar/ToolbarContainer.d.ts new file mode 100644 index 0000000..6d69ae3 --- /dev/null +++ b/types/UI/Components/ToolBar/ToolbarContainer.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +import { ICommandIconInfo } from '../TopToolBar/TopToolBarInterface'; +export declare class ToolbarContainer extends React.Component<{}, {}> { + iconList: ICommandIconInfo[]; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=ToolbarContainer.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/ToolBar/ToolbarContainer.d.ts.map b/types/UI/Components/ToolBar/ToolbarContainer.d.ts.map new file mode 100644 index 0000000..eae0ba1 --- /dev/null +++ b/types/UI/Components/ToolBar/ToolbarContainer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToolbarContainer.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/ToolBar/ToolbarContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAWrE,qBACa,gBAAiB,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAC7C,QAAQ,EAAE,gBAAgB,EAAE,CAwBtC;IACF,iBAAiB;IA4BjB,MAAM;CAsBT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/DimensionPanel.d.ts b/types/UI/Components/TopToolBar/DimensionPanel.d.ts new file mode 100644 index 0000000..d4142b4 --- /dev/null +++ b/types/UI/Components/TopToolBar/DimensionPanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class DimensionPanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=DimensionPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/DimensionPanel.d.ts.map b/types/UI/Components/TopToolBar/DimensionPanel.d.ts.map new file mode 100644 index 0000000..818044c --- /dev/null +++ b/types/UI/Components/TopToolBar/DimensionPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DimensionPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/DimensionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;CAAE,EAAE,EAAE,CAAC;IAEhF,MAAM;CAoBT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/DrawingPanel.d.ts b/types/UI/Components/TopToolBar/DrawingPanel.d.ts new file mode 100644 index 0000000..c567658 --- /dev/null +++ b/types/UI/Components/TopToolBar/DrawingPanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class DrawingPanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=DrawingPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/DrawingPanel.d.ts.map b/types/UI/Components/TopToolBar/DrawingPanel.d.ts.map new file mode 100644 index 0000000..414350e --- /dev/null +++ b/types/UI/Components/TopToolBar/DrawingPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawingPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/DrawingPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;CAAE,EAAE,EAAE,CAAC;IAE9E,MAAM;CAgCT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/FileOperationPanel.d.ts b/types/UI/Components/TopToolBar/FileOperationPanel.d.ts new file mode 100644 index 0000000..fae6fc7 --- /dev/null +++ b/types/UI/Components/TopToolBar/FileOperationPanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class FileOperationPanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=FileOperationPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/FileOperationPanel.d.ts.map b/types/UI/Components/TopToolBar/FileOperationPanel.d.ts.map new file mode 100644 index 0000000..c7b87ca --- /dev/null +++ b/types/UI/Components/TopToolBar/FileOperationPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FileOperationPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/FileOperationPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,EAAE,EAAE,CAAC;IAEnF,MAAM;CAcT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/RenderPanel.d.ts b/types/UI/Components/TopToolBar/RenderPanel.d.ts new file mode 100644 index 0000000..210fa7e --- /dev/null +++ b/types/UI/Components/TopToolBar/RenderPanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class RenderPanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=RenderPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/RenderPanel.d.ts.map b/types/UI/Components/TopToolBar/RenderPanel.d.ts.map new file mode 100644 index 0000000..bdb3872 --- /dev/null +++ b/types/UI/Components/TopToolBar/RenderPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RenderPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/RenderPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAC;CAAE,EAAE,EAAE,CAAC;IAE7E,MAAM;CAsCT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts b/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts new file mode 100644 index 0000000..5c2017c --- /dev/null +++ b/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class TemplateAndModulePanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=TemplateAndModulePanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts.map b/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts.map new file mode 100644 index 0000000..735f132 --- /dev/null +++ b/types/UI/Components/TopToolBar/TemplateAndModulePanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateAndModulePanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/TemplateAndModulePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,sBAAuB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,EAAE,EAAE,CAAC;IAEvF,MAAM;CA0BT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts b/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts new file mode 100644 index 0000000..a69315e --- /dev/null +++ b/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts @@ -0,0 +1,8 @@ +import React = require("react"); +import { ToolsBlockStore } from "./ToolsBlockStore"; +export declare class ThreeDEntityPanel extends React.Component<{ + store: ToolsBlockStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=ThreeDEntityPanel.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts.map b/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts.map new file mode 100644 index 0000000..8a64aa4 --- /dev/null +++ b/types/UI/Components/TopToolBar/ThreeDEntityPanel.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ThreeDEntityPanel.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/ThreeDEntityPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAGhC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,EAAE,EAAE,CAAC;IAElF,MAAM;CAcT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ToolsBlock.d.ts b/types/UI/Components/TopToolBar/ToolsBlock.d.ts new file mode 100644 index 0000000..466969d --- /dev/null +++ b/types/UI/Components/TopToolBar/ToolsBlock.d.ts @@ -0,0 +1,22 @@ +import React = require("react"); +import { ICommandIconInfo } from "./TopToolBarInterface"; +export interface ToolsBlockProps { + blockId: string; + list: ICommandIconInfo[]; + execFun: Function; + btnTitile: string; +} +export declare class ToolsBlock extends React.Component { + isExtendShow: boolean; + divEl: HTMLDivElement; + listMain: ICommandIconInfo[]; + listSmall: ICommandIconInfo[]; + componentDidMount(): void; + componentWillUnmount(): void; + componentDidUpdate(): void; + calSmallIconList: () => void; + HandleOnClick: (cmd: string) => Promise; + renderMainList: () => JSX.Element[]; + render(): JSX.Element; +} +//# sourceMappingURL=ToolsBlock.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ToolsBlock.d.ts.map b/types/UI/Components/TopToolBar/ToolsBlock.d.ts.map new file mode 100644 index 0000000..8216b8e --- /dev/null +++ b/types/UI/Components/TopToolBar/ToolsBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToolsBlock.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/ToolsBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAWhC,OAAO,EAAE,gBAAgB,EAAgD,MAAM,uBAAuB,CAAC;AAKvG,MAAM,WAAW,eAAe;IAE5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACrB;AACD,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,CAAC;IAEpD,YAAY,EAAE,OAAO,CAAS;IAC1C,KAAK,EAAE,cAAc,CAAC;IACV,QAAQ,EAAE,gBAAgB,EAAE,CAAgC;IAC5D,SAAS,EAAE,gBAAgB,EAAE,CAA6B;IACtE,iBAAiB;IAWjB,oBAAoB;IAIpB,kBAAkB;IAKlB,gBAAgB,aAmCd;IACF,aAAa,QAAe,MAAM,mBAmBhC;IACF,cAAc,sBAkBZ;IACF,MAAM;CAkET"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts b/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts new file mode 100644 index 0000000..e3211fe --- /dev/null +++ b/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts @@ -0,0 +1,9 @@ +import { Singleton } from "../../../Common/Singleton"; +import { ToolsBlockOption, TopToolBarBlockData } from "./TopToolBarInterface"; +export declare class ToolsBlockStore extends Singleton { + execFun: Function; + iconList: ToolsBlockOption; + blocksData: TopToolBarBlockData; + calcIconNumInTabs(): void; +} +//# sourceMappingURL=ToolsBlockStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts.map b/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts.map new file mode 100644 index 0000000..94062b7 --- /dev/null +++ b/types/UI/Components/TopToolBar/ToolsBlockStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ToolsBlockStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/ToolsBlockStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,qBAAa,eAAgB,SAAQ,SAAS;IAE1C,OAAO,EAAE,QAAQ,CAAuC;IACxD,QAAQ,EAAE,gBAAgB,CAiBxB;IAEF,UAAU,EAAE,mBAAmB,CA0BzB;IAEN,iBAAiB;CAUpB"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TopToolBar.d.ts b/types/UI/Components/TopToolBar/TopToolBar.d.ts new file mode 100644 index 0000000..daf4adc --- /dev/null +++ b/types/UI/Components/TopToolBar/TopToolBar.d.ts @@ -0,0 +1,6 @@ +import React = require("react"); +export declare class TopToolBar extends React.Component<{}, {}> { + private selectedTabId; + render(): JSX.Element; +} +//# sourceMappingURL=TopToolBar.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TopToolBar.d.ts.map b/types/UI/Components/TopToolBar/TopToolBar.d.ts.map new file mode 100644 index 0000000..7bc8261 --- /dev/null +++ b/types/UI/Components/TopToolBar/TopToolBar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TopToolBar.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/TopToolBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,QAAQ,OAAO,CAAC,CAAC;AAchC,qBACa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IAEvC,OAAO,CAAC,aAAa,CAAiB;IAClD,MAAM;CAqLT"} \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts b/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts new file mode 100644 index 0000000..900b08c --- /dev/null +++ b/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts @@ -0,0 +1,36 @@ +export interface ICommandIconInfo { + svg: string; + title: string; + command: string; +} +export interface ToolsBlockOption { + file: ICommandIconInfo[]; + twoD: ICommandIconInfo[]; + threeD: ICommandIconInfo[]; + brDraw: ICommandIconInfo[]; + brEdit: ICommandIconInfo[]; + dim: ICommandIconInfo[]; + light: ICommandIconInfo[]; + drill: ICommandIconInfo[]; + view: ICommandIconInfo[]; + visualStyle: ICommandIconInfo[]; + render: ICommandIconInfo[]; + produce: ICommandIconInfo[]; + module: ICommandIconInfo[]; + template: ICommandIconInfo[]; + commodity: ICommandIconInfo[]; + layout: ICommandIconInfo[]; +} +export interface TopToolBarBlockDataItem { + IconNum: number; + blocksId: string[]; +} +export interface TopToolBarBlockData { + file: TopToolBarBlockDataItem; + draw: TopToolBarBlockDataItem; + temp: TopToolBarBlockDataItem; + entity: TopToolBarBlockDataItem; + dimension: TopToolBarBlockDataItem; + renderAndView: TopToolBarBlockDataItem; +} +//# sourceMappingURL=TopToolBarInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts.map b/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts.map new file mode 100644 index 0000000..59898da --- /dev/null +++ b/types/UI/Components/TopToolBar/TopToolBarInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TopToolBarInterface.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/TopToolBar/TopToolBarInterface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAE7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,gBAAgB;IAE7B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,GAAG,EAAE,gBAAgB,EAAE,CAAC;IACxB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAE9B;AACD,MAAM,WAAW,uBAAuB;IAEpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,mBAAmB;IAEhC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,uBAAuB,CAAC;IACnC,aAAa,EAAE,uBAAuB,CAAC;CAC1C"} \ No newline at end of file diff --git a/types/UI/Components/commandLineInput/InputHint.d.ts b/types/UI/Components/commandLineInput/InputHint.d.ts new file mode 100644 index 0000000..a66eb10 --- /dev/null +++ b/types/UI/Components/commandLineInput/InputHint.d.ts @@ -0,0 +1,40 @@ +import * as React from 'react'; +import { KeyWord } from '../../../Common/InputState'; +import { CommandStore } from '../../Store/CommandStore'; +import './InputHint.css'; +interface InputHintProps { + cmdList: Set; + keyWordList: Array; + cmdPrompt: string; + historyCmdList: string[]; + handleInputCallback: (data: string) => any; + commandStore: CommandStore; +} +interface InputHitState { + isShowHistory: boolean; + intelliSenseIndex: number; + intelliSenseCommand: Array; +} +/** + * + */ +export declare class InputHint extends React.Component { + state: InputHitState; + private inputEl; + private selectIndex; + private isCNInput; + constructor(p: any, s: any); + /** + * 创建组件时 + */ + componentDidMount(): void; + handleOnChangeIntelliSense(cmd: string): void; + handleShowHistoryCommand: () => void; + handleCallback(cmd: string): void; + handleKeyboardEvent: (e: KeyboardEvent) => void; + private handleIntellSence; + private Cancel; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=InputHint.d.ts.map \ No newline at end of file diff --git a/types/UI/Components/commandLineInput/InputHint.d.ts.map b/types/UI/Components/commandLineInput/InputHint.d.ts.map new file mode 100644 index 0000000..9ca78ee --- /dev/null +++ b/types/UI/Components/commandLineInput/InputHint.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InputHint.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Components/commandLineInput/InputHint.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAKrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,iBAAiB,CAAC;AAEzB,UAAU,cAAc;IAEpB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAErB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC;IAE3C,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,UAAU,aAAa;IAEnB,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,aAAa,CAAC;IAElE,KAAK,EAAE,aAAa,CAAC;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,SAAS,CAAkB;gBACvB,CAAC,KAAA,EAAE,CAAC,KAAA;IAUhB;;OAEG;IACH,iBAAiB;IAmBV,0BAA0B,CAAC,GAAG,EAAE,MAAM;IA+EtC,wBAAwB,aAQ7B;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM;IAO1B,mBAAmB,MAAO,aAAa,UA+B5C;IAEF,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,MAAM;IAUP,MAAM;CAiFhB"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/AngleDynamicInput.d.ts b/types/UI/DynamicPrompt/AngleDynamicInput.d.ts new file mode 100644 index 0000000..cd2a684 --- /dev/null +++ b/types/UI/DynamicPrompt/AngleDynamicInput.d.ts @@ -0,0 +1,14 @@ +import { RealDynamicInput } from "./RealDynamicInput"; +export declare class AngleDynamicInput extends RealDynamicInput { + private angleSymbolEl; + constructor(el: HTMLElement); + UpdateSymbolElPosition(): void; + set Fixed(v: boolean); + protected fixNumebr: number; + set Value(v: number); + get Value(): number; + OnInput(): void; + Destroy(): void; + SetPosition(x: number, y: number): void; +} +//# sourceMappingURL=AngleDynamicInput.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/AngleDynamicInput.d.ts.map b/types/UI/DynamicPrompt/AngleDynamicInput.d.ts.map new file mode 100644 index 0000000..09de2da --- /dev/null +++ b/types/UI/DynamicPrompt/AngleDynamicInput.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"AngleDynamicInput.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/AngleDynamicInput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qBAAa,iBAAkB,SAAQ,gBAAgB;IAEnD,OAAO,CAAC,aAAa,CAAc;gBACvB,EAAE,EAAE,WAAW;IAS3B,sBAAsB;IAYtB,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAKnB;IAED,SAAS,CAAC,SAAS,SAAK;IACxB,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAIlB;IACD,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,OAAO;IAKP,OAAO;IAKP,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAMnC"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/DynamicInputBase.d.ts b/types/UI/DynamicPrompt/DynamicInputBase.d.ts new file mode 100644 index 0000000..443e34c --- /dev/null +++ b/types/UI/DynamicPrompt/DynamicInputBase.d.ts @@ -0,0 +1,28 @@ +/** + * 所有动态输入框的基类,包含一个inputEl + */ +export declare class DynamicInput { + inputEl: HTMLInputElement; + container: HTMLElement; + UpdateWidth: Function; + isShiftDown: boolean; + isCtrlDown: boolean; + constructor(container: HTMLElement); + private _IsLock; + private _HasLock; + set IsLock(lock: boolean); + get IsLock(): boolean; + set Value(value: any); + get Value(): any; + OnInput(): void; + OnInputKeyDown(e: KeyboardEvent): void; + OnInputKeyUp(e: KeyboardEvent): void; + Focus(): void; + private SetSelect; + Blur(): void; + SetPosition(x: number, y: number): void; + set Fixed(v: boolean); + Destroy(): void; + OnToggleRelativeEvent(): void; +} +//# sourceMappingURL=DynamicInputBase.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/DynamicInputBase.d.ts.map b/types/UI/DynamicPrompt/DynamicInputBase.d.ts.map new file mode 100644 index 0000000..7e939a7 --- /dev/null +++ b/types/UI/DynamicPrompt/DynamicInputBase.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DynamicInputBase.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/DynamicInputBase.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,YAAY;IAGrB,OAAO,EAAE,gBAAgB,CAAC;IAG1B,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,QAAQ,CAAC;IAEtB,WAAW,UAAS;IACpB,UAAU,UAAS;gBACP,SAAS,EAAE,WAAW;IA8ClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAKvB;IACD,IAAI,MAAM,IANO,OAAO,CASvB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAMnB;IACD,IAAI,KAAK,IAAI,GAAG,CAGf;IACD,OAAO;IAQP,cAAc,CAAC,CAAC,EAAE,aAAa;IAoC/B,YAAY,CAAC,CAAC,EAAE,aAAa;IAStB,KAAK;IAOZ,OAAO,CAAC,SAAS;IAMV,IAAI;IAgBX,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAOhC,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAGnB;IAED,OAAO;IAKP,qBAAqB;CAGxB"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/DynamicInputManage.d.ts b/types/UI/DynamicPrompt/DynamicInputManage.d.ts new file mode 100644 index 0000000..496adf7 --- /dev/null +++ b/types/UI/DynamicPrompt/DynamicInputManage.d.ts @@ -0,0 +1,27 @@ +import { DynamicInput } from './DynamicInputBase'; +export declare class DynamicInputManage { + private inputCollection; + private focusIndex; + private container; + private isDisplay; + private constructor(); + private static manage; + static GetManage(): DynamicInputManage; + _IsInputing: boolean; + set IsInputing(v: boolean); + get IsInputing(): boolean; + get IsLockIng(): boolean; + get Container(): HTMLElement; + get InputCollection(): DynamicInput[]; + Focus(): void; + set FocusIndex(v: number); + AddDynamicInput(dynamicInput: DynamicInput): void; + RemoveDynamicInput(dynInput: DynamicInput): void; + private RegisterEvent; + private HandleDynamicInput; + NextFocus(): void; + SendInput(): void; + HandleInputEvent(cmd: any): any; + ToggleDynamicInput(): void; +} +//# sourceMappingURL=DynamicInputManage.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/DynamicInputManage.d.ts.map b/types/UI/DynamicPrompt/DynamicInputManage.d.ts.map new file mode 100644 index 0000000..14f67ec --- /dev/null +++ b/types/UI/DynamicPrompt/DynamicInputManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DynamicInputManage.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/DynamicInputManage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,qBAAa,kBAAkB;IAG3B,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,SAAS,CAAc;IAE/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO;IA6BP,OAAO,CAAC,MAAM,CAAC,MAAM,CAAqB;IAC1C,MAAM,CAAC,SAAS;IAQhB,WAAW,EAAE,OAAO,CAAS;IAC7B,IAAI,UAAU,CAAC,CAAC,SAAA,EAQf;IACD,IAAI,UAAU,YAGb;IACD,IAAI,SAAS,YAGZ;IAGD,IAAI,SAAS,IAAI,WAAW,CAG3B;IACD,IAAI,eAAe,mBAGlB;IAED,KAAK;IAQL,IAAI,UAAU,CAAC,CAAC,EAAE,MAAM,EAIvB;IAEM,eAAe,CAAC,YAAY,EAAE,YAAY;IAI1C,kBAAkB,CAAC,QAAQ,EAAE,YAAY;IAMhD,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,kBAAkB,CAkCxB;IACK,SAAS;IAOT,SAAS;IAKT,gBAAgB,CAAC,GAAG,EAAE,GAAG;IAKzB,kBAAkB;CAK5B"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts b/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts new file mode 100644 index 0000000..e1347bb --- /dev/null +++ b/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts @@ -0,0 +1,12 @@ +import { Vector3 } from 'three'; +import { DynamicInputManage } from './DynamicInputManage'; +import { PromptBlock } from './PromptBlock'; +export declare class GetDistancePromptBlock extends PromptBlock { + private valueDynIpt; + constructor(dynamicInputManage: DynamicInputManage); + set ValuePostion(v: Vector3); + set Value(v: number); + get Value(): number; + Destroy(): void; +} +//# sourceMappingURL=GetDistancePromptBlock.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts.map b/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts.map new file mode 100644 index 0000000..a0990d7 --- /dev/null +++ b/types/UI/DynamicPrompt/GetDistancePromptBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetDistancePromptBlock.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/GetDistancePromptBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,qBAAa,sBAAuB,SAAQ,WAAW;IAGnD,OAAO,CAAC,WAAW,CAAmB;gBAC1B,kBAAkB,EAAE,kBAAkB;IASlD,IAAI,YAAY,CAAC,CAAC,EAAE,OAAO,EAI1B;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAIlB;IACD,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED,OAAO;CAKV"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts b/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts new file mode 100644 index 0000000..d4a13ff --- /dev/null +++ b/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts @@ -0,0 +1,33 @@ +import { Vector3 } from 'three'; +import { DynamicInputManage } from './DynamicInputManage'; +import { PromptBlock } from './PromptBlock'; +/** + * 拾取点的动态提示框,包括了一个提示字符串和三个值. + */ +export declare class GetPointPromptBlock extends PromptBlock { + private pointValueDynInput; + private relativeSpan; + private regFunctions; + constructor(dynamicInputManage: DynamicInputManage); + set Relative(b: boolean); + get Relative(): boolean; + set Value(v: Vector3); + get Value(): Vector3; + Destroy(): void; +} +/** + * 有基点的动态输入框 (拾取点) + */ +export declare class GetPoint2PromptBlock extends PromptBlock { + private basePoint; + private distanceDynIpt; + private angleDynIpt; + constructor(dynamicInputManage: DynamicInputManage); + set BasePoint(v: Vector3); + get BasePoint(): Vector3; + set Value(v: Vector3); + get Dist(): number; + get Value(): Vector3; + Destroy(): void; +} +//# sourceMappingURL=GetPointPromptBlock.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts.map b/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts.map new file mode 100644 index 0000000..7af531f --- /dev/null +++ b/types/UI/DynamicPrompt/GetPointPromptBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetPointPromptBlock.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/GetPointPromptBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAEhD,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,YAAY,CAAkB;IAGtC,OAAO,CAAC,YAAY,CAAkB;gBAC1B,kBAAkB,EAAE,kBAAkB;IAwClD,IAAI,QAAQ,CAAC,CAAC,SAAA,EAGb;IACD,IAAI,QAAQ,YAGX;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAMnB;IACD,IAAI,KAAK,IAPI,OAAO,CAYnB;IAED,OAAO;CAOV;AAGD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;IAEjD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,cAAc,CAAmB;IACzC,OAAO,CAAC,WAAW,CAAoB;gBAC3B,kBAAkB,EAAE,kBAAkB;IAWlD,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,EAGvB;IACD,IAAI,SAAS,IAJI,OAAO,CAOvB;IAED,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,EAoCnB;IACD,IAAI,IAAI,IAAI,MAAM,CAGjB;IACD,IAAI,KAAK,IAAI,OAAO,CAQnB;IACD,OAAO;CAMV"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts b/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts new file mode 100644 index 0000000..aab8523 --- /dev/null +++ b/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts @@ -0,0 +1,17 @@ +import { PromptBlock } from "./PromptBlock"; +import { RealDynamicInput } from "./RealDynamicInput"; +import { DynamicInputManage } from "./DynamicInputManage"; +import { Vector3 } from "three"; +/** + * 拾取矩形范围点的动态提示框 + */ +export declare class GetRectPointPromptBlock extends PromptBlock { + xDynIpt: RealDynamicInput; + yDynIpt: RealDynamicInput; + constructor(dynamicInputManage?: DynamicInputManage); + UpdateSize(x: number, y: number): void; + UpdatePosition(p1Screen: Vector3, p2Screen: Vector3): void; + get Width(): number; + get Height(): number; +} +//# sourceMappingURL=GetRectPointPromptBlock.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts.map b/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts.map new file mode 100644 index 0000000..d431f28 --- /dev/null +++ b/types/UI/DynamicPrompt/GetRectPointPromptBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GetRectPointPromptBlock.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/GetRectPointPromptBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAQ,MAAM,OAAO,CAAC;AAEtC;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,WAAW;IAEpD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;gBACd,kBAAkB,GAAE,kBAAmD;IAgBnF,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAM/B,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IAMnD,IAAI,KAAK,WAGR;IACD,IAAI,MAAM,WAGT;CACJ"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/PromptBlock.d.ts b/types/UI/DynamicPrompt/PromptBlock.d.ts new file mode 100644 index 0000000..1c62617 --- /dev/null +++ b/types/UI/DynamicPrompt/PromptBlock.d.ts @@ -0,0 +1,19 @@ +import { DynamicInputManage } from './DynamicInputManage'; +import { DynamicInput } from './DynamicInputBase'; +import { Vector3 } from "three"; +/** + * 动态输入的提示块, 包含了提示信息和后续的输入框. + */ +export declare class PromptBlock { + promptContainer: HTMLElement; + private promptEl; + protected dynamicInputManage: DynamicInputManage; + private dynInputList; + constructor(dynamicInputManage: DynamicInputManage); + AddDynamicInput(dynamicInput: DynamicInput): void; + set Visible(v: boolean); + SetPostion(mousePos: Vector3): void; + UpdatePrompt(prompt: string): void; + Destroy(): void; +} +//# sourceMappingURL=PromptBlock.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/PromptBlock.d.ts.map b/types/UI/DynamicPrompt/PromptBlock.d.ts.map new file mode 100644 index 0000000..c4e9bef --- /dev/null +++ b/types/UI/DynamicPrompt/PromptBlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PromptBlock.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/PromptBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAKhC;;GAEG;AACH,qBAAa,WAAW;IAGb,eAAe,EAAE,WAAW,CAAC;IAEpC,OAAO,CAAC,QAAQ,CAAc;IAC9B,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,OAAO,CAAC,YAAY,CAAsB;gBAC9B,kBAAkB,EAAE,kBAAkB;IAoB3C,eAAe,CAAC,YAAY,EAAE,YAAY;IAOjD,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,EAGrB;IAGM,UAAU,CAAC,QAAQ,EAAE,OAAO;IAmB5B,YAAY,CAAC,MAAM,EAAE,MAAM;IAMlC,OAAO;CASV"} \ No newline at end of file diff --git a/types/UI/DynamicPrompt/RealDynamicInput.d.ts b/types/UI/DynamicPrompt/RealDynamicInput.d.ts new file mode 100644 index 0000000..5d5e512 --- /dev/null +++ b/types/UI/DynamicPrompt/RealDynamicInput.d.ts @@ -0,0 +1,10 @@ +import { DynamicInput } from './DynamicInputBase'; +export declare class RealDynamicInput extends DynamicInput { + constructor(container: HTMLElement); + protected fixNumebr: number; + set Value(v: number); + get Value(): number; + OnInput(): void; + OnInputKeyDown(e: KeyboardEvent): void; +} +//# sourceMappingURL=RealDynamicInput.d.ts.map \ No newline at end of file diff --git a/types/UI/DynamicPrompt/RealDynamicInput.d.ts.map b/types/UI/DynamicPrompt/RealDynamicInput.d.ts.map new file mode 100644 index 0000000..8221365 --- /dev/null +++ b/types/UI/DynamicPrompt/RealDynamicInput.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RealDynamicInput.d.ts","sourceRoot":"","sources":["../../../../src/UI/DynamicPrompt/RealDynamicInput.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,qBAAa,gBAAiB,SAAQ,YAAY;gBAElC,SAAS,EAAE,WAAW;IAMlC,SAAS,CAAC,SAAS,SAAK;IACxB,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,EAGlB;IAED,IAAI,KAAK,IAAI,MAAM,CAGlB;IACD,OAAO;IASP,cAAc,CAAC,CAAC,EAAE,aAAa;CAmBlC"} \ No newline at end of file diff --git a/types/UI/Editor/Asset/Asset.d.ts b/types/UI/Editor/Asset/Asset.d.ts new file mode 100644 index 0000000..ae55926 --- /dev/null +++ b/types/UI/Editor/Asset/Asset.d.ts @@ -0,0 +1,18 @@ +import { Vector2 } from "three"; +export declare class Asset { + scale: Vector2; + visible: boolean; + position: Vector2; + size: Vector2; + text: HTMLDivElement; + icon: HTMLImageElement; + element: HTMLDivElement; + parent: HTMLElement; + constructor(parent: HTMLElement); + setParent(parent: any): void; + setIcon(icon: any): void; + setText(text: any): void; + destroy(): void; + updateInterface(): void; +} +//# sourceMappingURL=Asset.d.ts.map \ No newline at end of file diff --git a/types/UI/Editor/Asset/Asset.d.ts.map b/types/UI/Editor/Asset/Asset.d.ts.map new file mode 100644 index 0000000..f4642ee --- /dev/null +++ b/types/UI/Editor/Asset/Asset.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Editor/Asset/Asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,qBAAa,KAAK;IAEd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;gBACR,MAAM,EAAE,WAAW;IAgE/B,SAAS,CAAC,MAAM,KAAA;IAUhB,OAAO,CAAC,IAAI,KAAA;IAMZ,OAAO,CAAC,IAAI,KAAA;IAMZ,OAAO;IASP,eAAe;CAgBlB"} \ No newline at end of file diff --git a/types/UI/Editor/Asset/MaterialRenderer.d.ts b/types/UI/Editor/Asset/MaterialRenderer.d.ts new file mode 100644 index 0000000..51b0e6c --- /dev/null +++ b/types/UI/Editor/Asset/MaterialRenderer.d.ts @@ -0,0 +1,16 @@ +import { Material, Mesh, Scene, Sprite, WebGLRenderer, Camera } from 'three'; +export declare class MaterialRenderer { + sprite: Sprite; + sphere: Mesh; + scene: Scene; + camera: Camera; + canvas: HTMLCanvasElement; + renderer: WebGLRenderer; + constructor(); + setSize(x: number, y: number): void; + update(material: Material): void; + getBlob(material: Material): Promise; + render(material: Material, onRender: any): void; +} +export declare function MaterialRendererSingle(): MaterialRenderer; +//# sourceMappingURL=MaterialRenderer.d.ts.map \ No newline at end of file diff --git a/types/UI/Editor/Asset/MaterialRenderer.d.ts.map b/types/UI/Editor/Asset/MaterialRenderer.d.ts.map new file mode 100644 index 0000000..56b138a --- /dev/null +++ b/types/UI/Editor/Asset/MaterialRenderer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Editor/Asset/MaterialRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,QAAQ,EAAE,IAAI,EAAwD,KAAK,EAAkB,MAAM,EAAkB,aAAa,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEjL,qBAAa,gBAAgB;IAEzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;;IAoCxB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAI5B,MAAM,CAAC,QAAQ,EAAE,QAAQ;IAyBzB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,KAAA;CAOtC;AAGD,wBAAgB,sBAAsB,qBAMrC"} \ No newline at end of file diff --git a/types/UI/Editor/Material/dialog.d.ts b/types/UI/Editor/Material/dialog.d.ts new file mode 100644 index 0000000..3a0875c --- /dev/null +++ b/types/UI/Editor/Material/dialog.d.ts @@ -0,0 +1,2 @@ +export declare function renderDialog(): void; +//# sourceMappingURL=dialog.d.ts.map \ No newline at end of file diff --git a/types/UI/Editor/Material/dialog.d.ts.map b/types/UI/Editor/Material/dialog.d.ts.map new file mode 100644 index 0000000..7d6dc5d --- /dev/null +++ b/types/UI/Editor/Material/dialog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Editor/Material/dialog.tsx"],"names":[],"mappings":"AA0CA,wBAAgB,YAAY,SAO3B"} \ No newline at end of file diff --git a/types/UI/IconEnum.d.ts b/types/UI/IconEnum.d.ts new file mode 100644 index 0000000..d45809d --- /dev/null +++ b/types/UI/IconEnum.d.ts @@ -0,0 +1,185 @@ +/** + * icon和title对应表 + * + * @export enum + * + */ +export declare const ICON_CDN = "https://font.cfcad.cn/Icon/"; +export declare enum IconEnum { + Point = "Point.svg", + Line = "Line.svg", + Arc = "Arc.svg", + Circle = "Circle.svg", + PolyLine = "Polyline.svg", + Rectangle = "Rectangle.svg", + Text = "Text.svg", + SpLine = "Spline.svg", + Box = "Box.svg", + Region = "Region.svg", + Tangen = "Tangen.svg", + Center = "Center.svg", + ZYC = "ZYC.svg", + DDB = "DDB.svg", + CB = "CB.svg", + BB = "BB.svg", + LB = "LB.svg", + DB = "DB.svg", + Floor = "Floor.svg", + Door = "Door.svg", + YX = "YX.svg", + YXLK = "YXLK.svg", + WineRack = "WineRack.svg", + SKT = "SKT.svg", + DimALigned = "DimAligned.svg", + DimLinear = "DimLinear.svg", + DimAngle = "DimAngle.svg", + DimContinued = "DimContinued.svg", + Copy = "Copy.svg", + CopyClip = "CopyClip.svg", + PasteClip = "PasteClip.svg", + Delete = "Delete.svg", + Redo = "Redo.svg", + Cancel = "Cancel.svg", + Break = "Break.svg", + Array = "Array.svg", + Extend = "Extend.svg", + Zoom = "Zoom.svg", + Divide = "Divide.svg", + Fillet = "Fillet.svg", + Reverse = "Reverse.svg", + Stretch = "Stretch.svg", + GridStretch = "GridStretch.svg", + Offset = "Offset.svg", + Length = "Length.svg", + Pedit = "Pedit.svg", + Join = "Join.svg", + FBX = "FBX.svg", + Save = "Save.svg", + Open = "Open.svg", + Entsel = "Entsel.svg", + Multisel = "Multisel.svg", + Ball = "Ball.svg", + SkyBox = "Skybox.svg", + Cuboid = "Cuboid.svg", + UCS = "UCS.svg", + Cylinder = "Cylinder.svg", + ObliqueCB = "ObliqueCB.svg", + AdjustCB = "AdjustCB.svg", + SpotLamp = "SpotLamp.svg", + DownLamp = "DownLamp.svg", + ParamPtLight = "ParamPtLight.svg", + RectLight = "RectLight.svg", + SunLight = "SunLight.svg", + Camera = "Camera.svg", + CSGunion = "CSGunion.svg", + CSGintersect = "CSGintersect.svg", + RegionIntersect = "RegionIntersect.svg", + RegionUnion = "RegionUnion.svg", + RegionSub = "RegionSub.svg", + Sweep = "Sweep.svg", + Explode = "Explode.svg", + Move = "Move.svg", + Rotate = "Rotate.svg", + RotateRef = "RotateRef.svg", + QG = "QG.svg", + QG2 = "QG2.svg", + QG4 = "QG4.svg", + zJoin = "zJoin.svg", + BoardFindModify = "BoardFindModify.svg", + Drawer = "Drawer.svg", + Mirror = "Mirror.svg", + Drill = "Drill.svg", + DrillConfig = "DrillConfig.svg", + DeleteDrill = "DeleteDrill.svg", + BottomView = "BottomView.svg", + FrontView = "FrontView.svg", + LeftView = "LeftView.svg", + Retraction = "Retraction.svg", + Swiso = "Swiso.svg", + TopView = "TopView.svg", + BackView = "BackView.svg", + RightView = "RightView.svg", + JoinBoard = "JoinBoard.svg", + Diameter = "Diameter.svg", + TopLine = "TopLine1.svg", + ExplosionMap = "ExplosionMap.svg", + Undo = "Undo.svg", + WireframeView = "WireframeView.svg", + SaveAs = "SaveAs.svg", + ConceptView = "ConceptView.svg", + New = "New.svg", + AutoDim = "AutoDim.svg", + Entity = "Entity.svg", + ERPManage = "ERPManage.svg", + ERPManage2 = "ERPManage2.svg", + DXF = "DXF.svg", + ModuleManage = "ModuleManage.svg", + QuotePrice = "QuotePrice.svg", + Reality = "Reality.svg", + TemplateDesign = "TemplateDesign.svg", + Wireframe = "Wireframe.svg", + SplitOrder = "SplitOrder.svg", + BBS = "BBS.svg", + HideDrill = "HideDrill.svg", + FastDim = "FastDim.svg", + DelDim = "DelDim.svg", + BatchModifyDrillAndSeal = "BatchModifyDrillAndSeal.svg", + HistoryOptimize = "HistoryOptimize.svg", + Lattice = "Lattice.svg", + EditPolyLine = "EditPolyLine.svg", + ClosestPoint = "ClosestPoint.svg", + SouthWest = "SouthWest.svg", + DrawAxis = "DrawAxis.svg", + CircleWithCrossDottedLine = "CircleWithCrossDottedLine.svg", + CommodityManage = "CommodityManage.svg", + DAL = "DAL.svg", + HoleModule = "HoleModule.svg", + ExtrudeEntity = "StretchEntity.svg", + ReviewTemplate = "ReviewTemplate.svg", + SelectStretch = "SelectStretch.svg", + DoubleSplitOrder = "DoubleSplitOrder.svg", + BacthModifyActiveLayerBr = "BacthModifyActiveLayerBr.svg", + ModifyHoleFace = "ModifyHoleFace.svg", + CheckModel = "CheckModel.svg", + ExportData = "ExportData.svg", + Alignment = "Alignment.svg", + CheckInterference = "CheckInterference.svg", + ShareMaterial = "ShareMaterial.svg", + ProcessGroup = "ProcessGroup.svg", + TemplateReplace = "TemplateReplace.svg", + CutSpace = "CutSpace.svg", + Text2Curve = "Text2Curve.svg", + Synchronizing = "Synchronizing.svg", + Synchronous = "Synchronous.svg", + Print = "Print.svg", + SunnySideSealing = "SunnySideSealing.svg", + Rec2Br = "Rec2Br.svg", + ClearRelatedGroove = "ClearRelatedGroove.svg", + ClearHistoryRecord = "ClearHistoryRecord.svg", + Curve2Rec = "Curve2Rec.svg", + DrawVSBox = "DrawVSBox.svg", + Curve2VSBox = "Curve2VSBox.svg", + ExportView = "ExportView2.svg", + UpdateInfo = "ChangeBoardAttributeFromBoardName.svg", + Revolve = "Revolve.svg", + RestoreColor = "RestoreColor.svg", + ChangeColorByMat = "ChangeColorByMat.svg", + Cabrush = "Cabrush.svg", + Convert2Polyline = "Convert2Polyline.svg", + CheckHole = "CheckHoles.svg", + Rect2Winerack = "Rect2Winerack.svg", + Group = "GROUP.svg", + UnGroup = "UPGROUP.svg", + Mview = "MVIEW.svg", + Mview4 = "MVIEW4.svg", + Mview2 = "MVIEW2.svg", + Mview3 = "MVIEW3.svg", + ShowFrame = "SHOWFRAME.svg", + OneKeyLayout = "ONEKEYLAYOUT.svg", + OneKeyPrint = "ONEKEYPRINT.svg", + CheckNoHoleBoard = "CHECKNOHOLEBOARD.svg", + CheckDrawHole = "CHECKDRAWHOLE.svg", + EditorBBS = "EDITORBBS.svg", + R2b2 = "R2B2.svg" +} +//# sourceMappingURL=IconEnum.d.ts.map \ No newline at end of file diff --git a/types/UI/IconEnum.d.ts.map b/types/UI/IconEnum.d.ts.map new file mode 100644 index 0000000..3b7aeac --- /dev/null +++ b/types/UI/IconEnum.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IconEnum.d.ts","sourceRoot":"","sources":["../../../src/UI/IconEnum.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/JsPlugin/Dialog.d.ts b/types/UI/JsPlugin/Dialog.d.ts new file mode 100644 index 0000000..f70652c --- /dev/null +++ b/types/UI/JsPlugin/Dialog.d.ts @@ -0,0 +1,18 @@ +export declare class Dialog { + m_root: HTMLElement; + m_caption: Element; + m_bMoveIng: boolean; + constructor(id: string); + registerResize(): void; + origin: any; + originLocation: any; + registerMove(): void; + dialogMouseMoveHandler: (e: MouseEvent) => void; +} +export declare class WinManager { + constructor(); + moveHandler: any; + onMouseMove: (e: MouseEvent) => void; + onMouseDown: (e: MouseEvent) => void; +} +//# sourceMappingURL=Dialog.d.ts.map \ No newline at end of file diff --git a/types/UI/JsPlugin/Dialog.d.ts.map b/types/UI/JsPlugin/Dialog.d.ts.map new file mode 100644 index 0000000..20dd924 --- /dev/null +++ b/types/UI/JsPlugin/Dialog.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/UI/JsPlugin/Dialog.ts"],"names":[],"mappings":"AAkBA,qBAAa,MAAM;IAEf,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IAEnB,UAAU,EAAE,OAAO,CAAS;gBAEhB,EAAE,EAAE,MAAM;IAiBtB,cAAc;IAuFd,MAAM,MAAC;IACP,cAAc,MAAC;IACf,YAAY;IAwBZ,sBAAsB,MAAO,UAAU,UAMrC;CACL;AAED,qBAAa,UAAU;;IASnB,WAAW,MAAa;IACxB,WAAW,MAAO,UAAU,UAM1B;IACF,WAAW,MAAO,UAAU,UAE1B;CACL"} \ No newline at end of file diff --git a/types/UI/JsPlugin/InputAutoSize.d.ts b/types/UI/JsPlugin/InputAutoSize.d.ts new file mode 100644 index 0000000..ac227c4 --- /dev/null +++ b/types/UI/JsPlugin/InputAutoSize.d.ts @@ -0,0 +1,13 @@ +/** + * 自适应input的输入框大小,请设置好样式,并加入到dom节点后在调用该函数,如果样式更新,请重新注册. + * @param element input元素 + * @param [options] + * @returns + */ +export declare function AutoReSize(element: HTMLInputElement, options?: { + minWidth: number; +}): { + updateWidth: () => string; + removeEvent: () => void; +}; +//# sourceMappingURL=InputAutoSize.d.ts.map \ No newline at end of file diff --git a/types/UI/JsPlugin/InputAutoSize.d.ts.map b/types/UI/JsPlugin/InputAutoSize.d.ts.map new file mode 100644 index 0000000..8bed38b --- /dev/null +++ b/types/UI/JsPlugin/InputAutoSize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InputAutoSize.d.ts","sourceRoot":"","sources":["../../../../src/UI/JsPlugin/InputAutoSize.ts"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;CAAE;;;EAqEpF"} \ No newline at end of file diff --git a/types/UI/JsPlugin/SelectMarquee.d.ts b/types/UI/JsPlugin/SelectMarquee.d.ts new file mode 100644 index 0000000..8088a7f --- /dev/null +++ b/types/UI/JsPlugin/SelectMarquee.d.ts @@ -0,0 +1,23 @@ +import { Vector2 } from "three"; +import { SelectType } from "../../Editor/SelectBox"; +import { Viewer } from "../../GraphicsSystem/Viewer"; +export declare class SelectMarquee { + rightColor: string; + leftColor: string; + rightBorder: string; + leftBorder: string; + start: Vector2; + end: Vector2; + dom: HTMLElement; + width: number; + height: number; + viewer: Viewer; + selectType: SelectType; + constructor(view: Viewer); + Show(): void; + Hide(): void; + Update(): void; + SetStart(x: number, y: number): void; + SetEnd(x: number, y: number): void; +} +//# sourceMappingURL=SelectMarquee.d.ts.map \ No newline at end of file diff --git a/types/UI/JsPlugin/SelectMarquee.d.ts.map b/types/UI/JsPlugin/SelectMarquee.d.ts.map new file mode 100644 index 0000000..d0bb1af --- /dev/null +++ b/types/UI/JsPlugin/SelectMarquee.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SelectMarquee.d.ts","sourceRoot":"","sources":["../../../../src/UI/JsPlugin/SelectMarquee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,qBAAa,aAAa;IAEtB,UAAU,SAA4B;IACtC,SAAS,SAA2B;IACpC,WAAW,SAAmC;IAC9C,UAAU,SAAkC;IAC5C,KAAK,EAAE,OAAO,CAAiB;IAC/B,GAAG,EAAE,OAAO,CAAiB;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAmB;gBAE7B,IAAI,EAAE,MAAM;IAqBxB,IAAI;IAKJ,IAAI;IAKJ,MAAM;IA+BN,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAK7B,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAM9B"} \ No newline at end of file diff --git a/types/UI/JsPlugin/Symbol.d.ts b/types/UI/JsPlugin/Symbol.d.ts new file mode 100644 index 0000000..931be35 --- /dev/null +++ b/types/UI/JsPlugin/Symbol.d.ts @@ -0,0 +1,30 @@ +import './Symbol.css'; +export declare class Symbol { + m_symbol: HTMLElement; + constructor(container: HTMLElement, type: string); + Destroy(): void; +} +export declare enum SymbolType { + Copy = "bp3-icon-duplicate", + Delete = "bp3-icon-trash", + Replace = "bp3-icon-swap-horizontal", + Overturn = "bp3-icon-exchange", + Collection = "bp3-icon-star-empty", + Info = "bp3-icon-info-sign", + UnCollection = "bp3-icon-star", + translate = "bp3-icon-move", + world = "bp3-icon-zoom-to-fit", + rotate = "bp3-icon-refresh", + local = "bp3-icon-exchange" +} +export declare class SymbolManage { + private m_symbolContainer; + private m_symbolList; + constructor(); + get Container(): HTMLElement; + get SymbolList(): Symbol[]; + AddSymbol(type: string): void; + setPosition(x: number, y: number): void; + Clear(): void; +} +//# sourceMappingURL=Symbol.d.ts.map \ No newline at end of file diff --git a/types/UI/JsPlugin/Symbol.d.ts.map b/types/UI/JsPlugin/Symbol.d.ts.map new file mode 100644 index 0000000..d1bb7ee --- /dev/null +++ b/types/UI/JsPlugin/Symbol.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Symbol.d.ts","sourceRoot":"","sources":["../../../../src/UI/JsPlugin/Symbol.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AAGtB,qBAAa,MAAM;IAEf,QAAQ,EAAE,WAAW,CAAC;gBACV,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAQhD,OAAO;CAIV;AAED,oBAAY,UAAU;IAElB,IAAI,uBAAuB;IAC3B,MAAM,mBAAmB;IACzB,OAAO,6BAA6B;IACpC,QAAQ,sBAAsB;IAC9B,UAAU,wBAAwB;IAClC,IAAI,uBAAuB;IAC3B,YAAY,kBAAkB;IAC9B,SAAS,kBAAkB;IAC3B,KAAK,yBAAyB;IAC9B,MAAM,qBAAqB;IAC3B,KAAK,sBAAsB;CAG9B;AACD,qBAAa,YAAY;IAErB,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,YAAY,CAAgB;;IAWpC,IAAI,SAAS,gBAGZ;IACD,IAAI,UAAU,aAGb;IACD,SAAS,CAAC,IAAI,EAAE,MAAM;IAKtB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKhC,KAAK;CAWR"} \ No newline at end of file diff --git a/types/UI/Layout/ApplicationLayout.d.ts b/types/UI/Layout/ApplicationLayout.d.ts new file mode 100644 index 0000000..7ff29a1 --- /dev/null +++ b/types/UI/Layout/ApplicationLayout.d.ts @@ -0,0 +1,16 @@ +import { MaterialContainerProps } from '../Components/MaterialContainer'; +export declare let appUi: WebCAD; +export declare class WebCAD { + constructor(); + initRootLayout(): void; + renderMain(): void; + renderTopPanel(): void; + renderTopToolBar(): void; + renderDownPanel(): void; + renderRightPanel(): void; + renderCommandInput(): void; + renderCameraControlButton(): void; + renderToolBar(): void; + showMaterialEditor(props: MaterialContainerProps): void; +} +//# sourceMappingURL=ApplicationLayout.d.ts.map \ No newline at end of file diff --git a/types/UI/Layout/ApplicationLayout.d.ts.map b/types/UI/Layout/ApplicationLayout.d.ts.map new file mode 100644 index 0000000..5680d1e --- /dev/null +++ b/types/UI/Layout/ApplicationLayout.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ApplicationLayout.d.ts","sourceRoot":"","sources":["../../../../src/UI/Layout/ApplicationLayout.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAoB5F,eAAO,IAAI,KAAK,EAAE,MAAM,CAAC;AAEzB,qBAAa,MAAM;;IA8Df,cAAc;IAiDd,UAAU;IAQV,cAAc;IAMd,gBAAgB;IAMhB,eAAe;IAMf,gBAAgB;IAyBhB,kBAAkB;IAKlB,yBAAyB;IAazB,aAAa;IAsBb,kBAAkB,CAAC,KAAK,EAAE,sBAAsB;CAInD"} \ No newline at end of file diff --git a/types/UI/Layout/LayoutOnSizeEventManage.d.ts b/types/UI/Layout/LayoutOnSizeEventManage.d.ts new file mode 100644 index 0000000..c6ba70a --- /dev/null +++ b/types/UI/Layout/LayoutOnSizeEventManage.d.ts @@ -0,0 +1,12 @@ +/** + * Layout onsize的 消息统一管理 + */ +declare class LayoutOnsizeEventManage { + callbackList: Map void)[]>; + dispatchonSize(id: string): void; + register(id: string, callback: any): () => void; + remove(id: string, callback: any): void; +} +export declare let layoutOnsizeEvent: LayoutOnsizeEventManage; +export {}; +//# sourceMappingURL=LayoutOnSizeEventManage.d.ts.map \ No newline at end of file diff --git a/types/UI/Layout/LayoutOnSizeEventManage.d.ts.map b/types/UI/Layout/LayoutOnSizeEventManage.d.ts.map new file mode 100644 index 0000000..ee02d0a --- /dev/null +++ b/types/UI/Layout/LayoutOnSizeEventManage.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LayoutOnSizeEventManage.d.ts","sourceRoot":"","sources":["../../../../src/UI/Layout/LayoutOnSizeEventManage.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,cAAM,uBAAuB;IAEzB,YAAY,oBAA8B,MAAM,KAAK,IAAI,KAAK;IAC9D,cAAc,CAAC,EAAE,EAAE,MAAM;IAUzB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,KAAA;IAiB7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,KAAA;CAO9B;AAED,eAAO,IAAI,iBAAiB,yBAAgC,CAAC"} \ No newline at end of file diff --git a/types/UI/Layout/LayoutUtils.d.ts b/types/UI/Layout/LayoutUtils.d.ts new file mode 100644 index 0000000..8c26a1e --- /dev/null +++ b/types/UI/Layout/LayoutUtils.d.ts @@ -0,0 +1,10 @@ +import * as GoldenLayout from 'golden-layout'; +export declare const ContainerComponenName = "container"; +/** + * 注册容器组件. + * + * @export + * @param {GoldenLayout} layout + */ +export declare function LayoutRegisterContainerComponent(layout: GoldenLayout): void; +//# sourceMappingURL=LayoutUtils.d.ts.map \ No newline at end of file diff --git a/types/UI/Layout/LayoutUtils.d.ts.map b/types/UI/Layout/LayoutUtils.d.ts.map new file mode 100644 index 0000000..908ce90 --- /dev/null +++ b/types/UI/Layout/LayoutUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LayoutUtils.d.ts","sourceRoot":"","sources":["../../../../src/UI/Layout/LayoutUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAG9C,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,QAUpE"} \ No newline at end of file diff --git a/types/UI/Layout/MaterialEditorLayout.d.ts b/types/UI/Layout/MaterialEditorLayout.d.ts new file mode 100644 index 0000000..87759f3 --- /dev/null +++ b/types/UI/Layout/MaterialEditorLayout.d.ts @@ -0,0 +1,17 @@ +import { PhysicalMaterialRecord } from '../../DatabaseServices/PhysicalMaterialRecord'; +import { MaterialEditor } from '../../Editor/MaterialEditor'; +export declare class MaterialEditorLayout { + material: PhysicalMaterialRecord; + editor: MaterialEditor; + htmlEl: HTMLElement; + destroyFuncs: Function[]; + constructor(material: PhysicalMaterialRecord); + private initViewer; + private initLayout; + getSceneConfigEl(): HTMLElement; + getAttributePanelEl(): HTMLElement; + renderSceneConfig(): void; + renderAttributePanel(): void; + dispose(): void; +} +//# sourceMappingURL=MaterialEditorLayout.d.ts.map \ No newline at end of file diff --git a/types/UI/Layout/MaterialEditorLayout.d.ts.map b/types/UI/Layout/MaterialEditorLayout.d.ts.map new file mode 100644 index 0000000..eefe7c7 --- /dev/null +++ b/types/UI/Layout/MaterialEditorLayout.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialEditorLayout.d.ts","sourceRoot":"","sources":["../../../../src/UI/Layout/MaterialEditorLayout.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7D,qBAAa,oBAAoB;IAKV,QAAQ,EAAE,sBAAsB;IAHnD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,WAAW,CAAyC;IAC5D,YAAY,EAAE,QAAQ,EAAE,CAAM;gBACX,QAAQ,EAAE,sBAAsB;IAOnD,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,UAAU;IAyBlB,gBAAgB;IAIhB,mBAAmB;IAInB,iBAAiB;IAYjB,oBAAoB;IAWpB,OAAO;CAQV"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/GoodsList.d.ts b/types/UI/MaterialEditor/GoodsList.d.ts new file mode 100644 index 0000000..be56596 --- /dev/null +++ b/types/UI/MaterialEditor/GoodsList.d.ts @@ -0,0 +1,34 @@ +import * as React from 'react'; +import { IObservableValue } from 'mobx'; +export interface IGoodInfo { + goods_id: string; + name: string; + color: string; + material: string; +} +interface IGoodsListProps { + select: (good: IGoodInfo) => void; + open: IObservableValue; +} +export declare class GoodsList extends React.Component { + private timeId; + searchStr: string; + goods: any[]; + info: { + count: number; + currentPage: number; + pageCount: number; + }; + private isDesc; + UNSAFE_componentWillMount(): void; + render(): JSX.Element; + handleChange: (e: React.ChangeEvent) => void; + handleSearch: (opt?: { + curr_page: number; + }) => Promise; + private handleKeyDown; + private handleHideSelect; + private handleOrderGoods; +} +export {}; +//# sourceMappingURL=GoodsList.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/GoodsList.d.ts.map b/types/UI/MaterialEditor/GoodsList.d.ts.map new file mode 100644 index 0000000..969401d --- /dev/null +++ b/types/UI/MaterialEditor/GoodsList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GoodsList.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/GoodsList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAc,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAUpD,MAAM,WAAW,SAAS;IAEtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,eAAe;IAErB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;CACnC;AAED,qBACa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IAC3D,OAAO,CAAC,MAAM,CAAiB;IACnB,SAAS,SAAM;IACf,KAAK,QAAM;IACX,IAAI;;;;MAId;IACF,OAAO,CAAC,MAAM,CAAU;IACxB,yBAAyB;IAIlB,MAAM;IA0Eb,YAAY,MAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,UAUpD;IACF,YAAY,SAAe;QAAE,SAAS,EAAE,MAAM,CAAC;KAAE,mBAsB/C;IACF,OAAO,CAAC,aAAa,CAMnB;IACF,OAAO,CAAC,gBAAgB,CAGtB;IACF,OAAO,CAAC,gBAAgB,CAUtB;CACL"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialCommon.d.ts b/types/UI/MaterialEditor/MaterialCommon.d.ts new file mode 100644 index 0000000..4aac5e4 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialCommon.d.ts @@ -0,0 +1,77 @@ +import { IObservableValue } from "mobx"; +import * as React from "react"; +export declare class Input extends React.Component<{ + value: IObservableValue; + disabled?: boolean; +}, {}> { + inputEl: HTMLInputElement; + dispose: Function; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export declare class ColorSelect extends React.Component<{ + color: IObservableValue; +}, {}> { + bSelectColor: boolean; + handleClose: (e: React.MouseEvent) => void; + render(): JSX.Element; +} +export declare class Lable extends React.Component<{ + prompt: string; + style?: React.CSSProperties; + promptStyle?: React.CSSProperties; +}, {}> { + render(): JSX.Element; +} +export declare class LableInput extends React.Component<{ + value: IObservableValue; + prompt: string; + promptStyle?: React.CSSProperties; +}, {}> { + render(): JSX.Element; +} +export declare class Check extends React.Component<{ + value: IObservableValue; + prompt: string; + promptStyle?: React.CSSProperties; +}, {}> { + inputEl: HTMLInputElement; + dispose: Function; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export declare class Slider extends React.Component<{ + value: IObservableValue; + prompt: string; + min: number; + max: number; + step: number; +}, {}> { + inputEl: HTMLInputElement; + inputSlider: HTMLInputElement; + dispose: Function; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export declare class Select extends React.Component<{ + value: IObservableValue; + prompt: string; + selects: { + label: string; + value: any; + }[]; +}, {}> { + selectEl: HTMLSelectElement; + dispose: Function; + componentDidMount(): void; + componentWillUnmount(): void; + render(): JSX.Element; +} +export declare const WrapSelects: { + label: string; + value: import("three").Wrapping; +}[]; +//# sourceMappingURL=MaterialCommon.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialCommon.d.ts.map b/types/UI/MaterialEditor/MaterialCommon.d.ts.map new file mode 100644 index 0000000..84a8962 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialCommon.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialCommon.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/MaterialCommon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,gBAAgB,EAAc,MAAM,MAAM,CAAC;AAE7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAc/B,qBAAa,KAAM,SAAQ,KAAK,CAAC,SAAS,CACtC;IACI,KAAK,EAAE,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,EACC,EAAE,CAAC;IACL,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;IAClB,iBAAiB;IASjB,oBAAoB;IAMpB,MAAM;CA0CT;AAeD,qBACa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAAE,EAAE,EAAE,CAAC;IAC1E,YAAY,UAAS;IACjC,WAAW,MAAO,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,UAK5D;IACF,MAAM;CA0BT;AAED,qBAAa,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAC/H,MAAM;CAaT;AAED,qBAAa,UAAW,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAExI,MAAM;CAYT;AAED,qBAAa,KAAM,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAEpI,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC;IAClB,iBAAiB;IASjB,oBAAoB;IAKpB,MAAM;CAmBT;AAED,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE,EAAE,EAAE,CAAC;IAEzI,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,OAAO,EAAE,QAAQ,CAAC;IAClB,iBAAiB;IAWjB,oBAAoB;IAKpB,MAAM;CA4BT;AAED,qBAAa,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;KAAE,EAAE,CAAC;CAAE,EAAE,EAAE,CAAC;IAEzI,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,QAAQ,CAAC;IAClB,iBAAiB;IASjB,oBAAoB;IAKpB,MAAM;CA8BT;AAGD,eAAO,MAAM,WAAW;;;GAGwB,CAAC"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialEditorContent.d.ts b/types/UI/MaterialEditor/MaterialEditorContent.d.ts new file mode 100644 index 0000000..b1f4e8e --- /dev/null +++ b/types/UI/MaterialEditor/MaterialEditorContent.d.ts @@ -0,0 +1,15 @@ +import * as React from 'react'; +import { ITextureEditorProps } from './TextureList'; +import { TextureTableRecord } from '../../DatabaseServices/Texture'; +import { MaterialStore } from '../Store/MaterialStore'; +interface IMaterialEditorContentProps { + store?: MaterialStore; + option: ITextureEditorProps; + texture: TextureTableRecord; +} +export declare class MaterialEditorContent extends React.Component { + componentWillUnmount(): void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=MaterialEditorContent.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialEditorContent.d.ts.map b/types/UI/MaterialEditor/MaterialEditorContent.d.ts.map new file mode 100644 index 0000000..839e643 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialEditorContent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialEditorContent.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/MaterialEditorContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,UAAU,2BAA2B;IAEjC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAED,qBAEa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC,2BAA2B,EAAE,EAAE,CAAC;IACvF,oBAAoB;IAIb,MAAM;CAoGhB"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialLinkShop.d.ts b/types/UI/MaterialEditor/MaterialLinkShop.d.ts new file mode 100644 index 0000000..9ba1d72 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialLinkShop.d.ts @@ -0,0 +1,16 @@ +import * as React from "react"; +import { MaterialStore } from "../Store/MaterialStore"; +import { IGoodInfo } from "./GoodsList"; +export declare class MaterialLinkShopId extends React.Component<{ + store?: MaterialStore; +}, {}> { + private showShops; + private container; + private matPars; + constructor(props: any); + handleOpenShopList: () => void; + handleSelectGood: (good: IGoodInfo) => void; + componentDidMount(): void; + render(): JSX.Element; +} +//# sourceMappingURL=MaterialLinkShop.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialLinkShop.d.ts.map b/types/UI/MaterialEditor/MaterialLinkShop.d.ts.map new file mode 100644 index 0000000..0f8d5b4 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialLinkShop.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialLinkShop.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/MaterialLinkShop.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAa,SAAS,EAAE,MAAM,aAAa,CAAC;AAKnD,qBAEa,kBAAmB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAEnF,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,OAAO,CAEb;gBACU,KAAK,KAAA;IAIjB,kBAAkB,aAGhB;IACF,gBAAgB,SAAU,SAAS,UAWjC;IACF,iBAAiB;IAIjB,MAAM;CA8BT"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialShop.d.ts b/types/UI/MaterialEditor/MaterialShop.d.ts new file mode 100644 index 0000000..8f6c8ba --- /dev/null +++ b/types/UI/MaterialEditor/MaterialShop.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; +export declare class MetarialShop extends React.Component<{}, {}> { + private mtlIdSet; + OnMessage: (e: MessageEvent) => Promise; + private handleBuy; + render(): JSX.Element; +} +//# sourceMappingURL=MaterialShop.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/MaterialShop.d.ts.map b/types/UI/MaterialEditor/MaterialShop.d.ts.map new file mode 100644 index 0000000..1cb5163 --- /dev/null +++ b/types/UI/MaterialEditor/MaterialShop.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialShop.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/MaterialShop.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAa;IAE7B,SAAS,MAAa,YAAY,mBAIhC;IACF,OAAO,CAAC,SAAS,CA8Bf;IACF,MAAM;CAQT"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/PropertiesPane.d.ts b/types/UI/MaterialEditor/PropertiesPane.d.ts new file mode 100644 index 0000000..36fbeaf --- /dev/null +++ b/types/UI/MaterialEditor/PropertiesPane.d.ts @@ -0,0 +1,8 @@ +import * as React from "react"; +import { MaterialStore } from "../Store/MaterialStore"; +export declare class PropertiesPane extends React.Component<{ + store?: MaterialStore; +}, {}> { + render(): JSX.Element; +} +//# sourceMappingURL=PropertiesPane.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/PropertiesPane.d.ts.map b/types/UI/MaterialEditor/PropertiesPane.d.ts.map new file mode 100644 index 0000000..f0e251b --- /dev/null +++ b/types/UI/MaterialEditor/PropertiesPane.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"PropertiesPane.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/PropertiesPane.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAOvD,qBAEa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,CAAC,EAAE,aAAa,CAAC;CAAE,EAAE,EAAE,CAAC;IAC/E,MAAM;CA8CT"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureContent.d.ts b/types/UI/MaterialEditor/TextureContent.d.ts new file mode 100644 index 0000000..5489e18 --- /dev/null +++ b/types/UI/MaterialEditor/TextureContent.d.ts @@ -0,0 +1,11 @@ +import * as React from 'react'; +import { MaterialStore } from '../Store/MaterialStore'; +import { TextureTableRecord } from '../../DatabaseServices/Texture'; +export interface ITextureContentProps { + store?: MaterialStore; + textures: [string, TextureTableRecord][]; +} +export default class TextureContent extends React.Component { + render(): JSX.Element; +} +//# sourceMappingURL=TextureContent.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureContent.d.ts.map b/types/UI/MaterialEditor/TextureContent.d.ts.map new file mode 100644 index 0000000..998d7f9 --- /dev/null +++ b/types/UI/MaterialEditor/TextureContent.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextureContent.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/TextureContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAMpE,MAAM,WAAW,oBAAoB;IAEjC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC;CAC5C;AAID,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3E,MAAM;CA6GhB"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureItem.d.ts b/types/UI/MaterialEditor/TextureItem.d.ts new file mode 100644 index 0000000..0a7e20a --- /dev/null +++ b/types/UI/MaterialEditor/TextureItem.d.ts @@ -0,0 +1,18 @@ +import * as React from "react"; +import { MaterialStore } from "../Store/MaterialStore"; +import { TextureStore } from "../Store/TextureStore"; +export declare const WrapSelects: { + label: string; + value: import("three").Wrapping; +}[]; +interface ITextureProps { + prompt: string; + textureStore: TextureStore; + store?: MaterialStore; +} +export declare class Texture extends React.Component { + handleSelectImg: () => void; + render(): JSX.Element; +} +export {}; +//# sourceMappingURL=TextureItem.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureItem.d.ts.map b/types/UI/MaterialEditor/TextureItem.d.ts.map new file mode 100644 index 0000000..be665ef --- /dev/null +++ b/types/UI/MaterialEditor/TextureItem.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextureItem.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/TextureItem.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAYrD,eAAO,MAAM,WAAW;;;GAGwB,CAAC;AAEjD,UAAU,aAAa;IAEnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,qBAEa,OAAQ,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC;IAC3D,eAAe,aAeb;IACF,MAAM;CAqET"} \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureList.d.ts b/types/UI/MaterialEditor/TextureList.d.ts new file mode 100644 index 0000000..908a5ba --- /dev/null +++ b/types/UI/MaterialEditor/TextureList.d.ts @@ -0,0 +1,21 @@ +import * as React from 'react'; +import { Wrapping } from 'three'; +import { MaterialStore } from '../Store/MaterialStore'; +export interface TextureListProps { + store?: MaterialStore; +} +export interface ITextureEditorProps { + name: string; + wrapS: Wrapping; + wrapT: Wrapping; + repeatX: string; + repeatY: string; + len?: string; + wid?: string; +} +export declare class TextureList extends React.Component { + handleOpen: (el: HTMLElement, isTexture: boolean) => void; + handleClear(): void; + render(): JSX.Element; +} +//# sourceMappingURL=TextureList.d.ts.map \ No newline at end of file diff --git a/types/UI/MaterialEditor/TextureList.d.ts.map b/types/UI/MaterialEditor/TextureList.d.ts.map new file mode 100644 index 0000000..e4f969a --- /dev/null +++ b/types/UI/MaterialEditor/TextureList.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextureList.d.ts","sourceRoot":"","sources":["../../../../src/UI/MaterialEditor/TextureList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,MAAM,WAAW,gBAAgB;IAE7B,KAAK,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAEhC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAEa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACnE,UAAU,OAAQ,WAAW,aAAa,OAAO,UAc/C;IACF,WAAW;IAIJ,MAAM;CA6FhB"} \ No newline at end of file diff --git a/types/UI/Store/ActivityLayerBoardStore.d.ts b/types/UI/Store/ActivityLayerBoardStore.d.ts new file mode 100644 index 0000000..122d8ab --- /dev/null +++ b/types/UI/Store/ActivityLayerBoardStore.d.ts @@ -0,0 +1,21 @@ +import { BoardStore } from "./BoardStore"; +import { LayerNailOption, IShinkOption, IUiOption, INailRule } from "./BoardInterface"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare class ActivityLayerBoardStore extends BoardStore { + m_Option: IShinkOption; + nailOption: LayerNailOption; + private uiNailOption; + currentRule: INailRule; + currentIndex: number; + rules: INailRule[]; + uiRule: IUiOption; + get UINailOption(): IUiOption; + get UIRule(): IUiOption; + AppendRule(): void; + RemoveRule(): Promise; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; +} +//# sourceMappingURL=ActivityLayerBoardStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/ActivityLayerBoardStore.d.ts.map b/types/UI/Store/ActivityLayerBoardStore.d.ts.map new file mode 100644 index 0000000..cbce062 --- /dev/null +++ b/types/UI/Store/ActivityLayerBoardStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ActivityLayerBoardStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/ActivityLayerBoardStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIvF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAI/D,qBAAa,uBAAwB,SAAQ,UAAU,CAAC,YAAY,CAAC;IAErD,QAAQ,EAAE,YAAY,CAOhC;IACU,UAAU,EAAE,eAAe,CAAuC;IAClE,OAAO,CAAC,YAAY,CAA6B;IACjD,WAAW,EAAE,SAAS,CAIhC;IACU,YAAY,SAAM;IAClB,KAAK,EAAE,SAAS,EAAE,CAAM;IACxB,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,YAAY,+BAKf;IACD,IAAI,MAAM,yBAKT;IACD,UAAU;IAWJ,UAAU;IAYhB,UAAU;IA6BV,UAAU;IAUV,YAAY,CAAC,GAAG,EAAE,aAAa;IAY/B,cAAc;CAIjB"} \ No newline at end of file diff --git a/types/UI/Store/BBSEditorStore.d.ts b/types/UI/Store/BBSEditorStore.d.ts new file mode 100644 index 0000000..4f91d2f --- /dev/null +++ b/types/UI/Store/BBSEditorStore.d.ts @@ -0,0 +1,15 @@ +import { IConfigStore } from "./BoardStore"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare const TotalTabbarTitlesInfos: [string, string][]; +export declare class BBSEditorStore implements IConfigStore { + configName: string; + configsNames: any[]; + tabbarIndexs: number[]; + InitOption(): void; + SaveConfig(): { + option: number[]; + }; + UpdateOption(config: IConfigOption): void; +} +export declare const bbsEditorStore: BBSEditorStore; +//# sourceMappingURL=BBSEditorStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/BBSEditorStore.d.ts.map b/types/UI/Store/BBSEditorStore.d.ts.map new file mode 100644 index 0000000..0724801 --- /dev/null +++ b/types/UI/Store/BBSEditorStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BBSEditorStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/BBSEditorStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,eAAO,MAAM,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAcpD,CAAC;AAEF,qBAAa,cAAe,YAAW,YAAY;IAEnC,UAAU,SAAQ;IAClB,YAAY,QAAM;IAClB,YAAY,WAAkD;IAC1E,UAAU;IAKV,UAAU;;;IAMV,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;CAI/C;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/BoardFindInterface.d.ts b/types/UI/Store/BoardFindInterface.d.ts new file mode 100644 index 0000000..e653b3b --- /dev/null +++ b/types/UI/Store/BoardFindInterface.d.ts @@ -0,0 +1,106 @@ +import { LinesType, FaceDirection, ComposingType, IBaseOption } from "./BoardInterface"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; +export declare const DRILL_KEYS: string[]; +export interface IBoardFindOption extends IBaseOption { + condition: IFindCondition; + compareType: ICompareType; + tolerance: ITolerance; + layer: string; + [EBoardKeyList.Height]: string; + [EBoardKeyList.Width]: string; + [EBoardKeyList.Thick]: string; + [EBoardKeyList.RoomName]: string; + [EBoardKeyList.CabinetName]: string; + brName: string; + [EBoardKeyList.BrMat]: string; + [EBoardKeyList.Mat]: string; + [EBoardKeyList.Color]: string; + [EBoardKeyList.Lines]: LinesType; + [EBoardKeyList.BigHole]: FaceDirection; + [EBoardKeyList.DrillType]: string; + [EBoardKeyList.ComposingFace]: ComposingType; + [EBoardKeyList.UpSealed]: string; + [EBoardKeyList.DownSealed]: string; + [EBoardKeyList.LeftSealed]: string; + [EBoardKeyList.RightSealed]: string; + highDrill: string[]; + upDownDrill: [boolean, boolean]; + isClose: boolean; + remarks: [string, string][]; + isChaidan: boolean; + [EBoardKeyList.KnifeRad]: string; +} +export interface IFindCondition { + layer: boolean; + [EBoardKeyList.Height]: boolean; + [EBoardKeyList.Width]: boolean; + [EBoardKeyList.Thick]: boolean; + useWood: boolean; + useDrill: boolean; + useNail: boolean; + useDoor: boolean; + useDim: boolean; + useSpecial: boolean; + useModeling: boolean; + [EBoardKeyList.RoomName]: boolean; + [EBoardKeyList.CabinetName]: boolean; + brName: boolean; + [EBoardKeyList.Mat]: boolean; + [EBoardKeyList.Lines]: boolean; + [EBoardKeyList.BigHole]: boolean; + [EBoardKeyList.DrillType]: boolean; + useKeyWord: boolean; + [EBoardKeyList.ComposingFace]: boolean; + [EBoardKeyList.UpSealed]: boolean; + [EBoardKeyList.DownSealed]: boolean; + [EBoardKeyList.LeftSealed]: boolean; + [EBoardKeyList.RightSealed]: boolean; + upDrill: boolean; + downDrill: boolean; + leftDrill: boolean; + rightDrill: boolean; + useZhengFanDrill: boolean; + useChaidan: boolean; + [EBoardKeyList.KnifeRad]: boolean; +} +export interface ICompareType { + [EBoardKeyList.Height]: ECompareType; + [EBoardKeyList.Width]: ECompareType; + [EBoardKeyList.Thick]: ECompareType; + [EBoardKeyList.RoomName]: ECompareType; + [EBoardKeyList.CabinetName]: ECompareType; + brName: ECompareType; + [EBoardKeyList.BrMat]: ECompareType; + [EBoardKeyList.Mat]: ECompareType; + [EBoardKeyList.Color]: ECompareType; + [EBoardKeyList.Lines]: ECompareType; + [EBoardKeyList.BigHole]: ECompareType; + [EBoardKeyList.DrillType]: ECompareType; + [EBoardKeyList.ComposingFace]: ECompareType; + [EBoardKeyList.KnifeRad]: ECompareType; +} +export interface ITolerance { + [EBoardKeyList.Height]: string; + [EBoardKeyList.Width]: string; + [EBoardKeyList.Thick]: string; + [EBoardKeyList.KnifeRad]: string; +} +export declare enum EFindType { + Find = 0, + Modify = 1, + FindMaxSize = 2, + FindSplite = 3, + GetOption = 4, + RemoveModeling = 5, + RemoveSpecialShape = 6, + RemoveModelingAndSpecial = 7, + ModifyHardware = 8, + FindMinSize = 9 +} +export declare enum ECompareType { + Equal = "=", + UnEqual = "!=", + Greater = ">=", + Less = "<=" +} +//# sourceMappingURL=BoardFindInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/BoardFindInterface.d.ts.map b/types/UI/Store/BoardFindInterface.d.ts.map new file mode 100644 index 0000000..71f551a --- /dev/null +++ b/types/UI/Store/BoardFindInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardFindInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/BoardFindInterface.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Store/BoardFindModifyStore.d.ts b/types/UI/Store/BoardFindModifyStore.d.ts new file mode 100644 index 0000000..00ab88b --- /dev/null +++ b/types/UI/Store/BoardFindModifyStore.d.ts @@ -0,0 +1,19 @@ +import { BoardStore } from "./BoardStore"; +import { IBoardFindOption } from "./BoardFindInterface"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare class BoardFindStore extends BoardStore { + m_Option: IBoardFindOption; + isSelectAllSealed: boolean; + isSelectAllDrill: boolean; + isSelectAll: boolean; + isRevSelect: boolean; + constructor(); + private SetDrillType; + OnOk(state: number, data?: T): Promise; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + CheckIsSelectAll(): void; + HasInvailValue(): boolean; +} +//# sourceMappingURL=BoardFindModifyStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/BoardFindModifyStore.d.ts.map b/types/UI/Store/BoardFindModifyStore.d.ts.map new file mode 100644 index 0000000..2d3913f --- /dev/null +++ b/types/UI/Store/BoardFindModifyStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardFindModifyStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/BoardFindModifyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA4B,MAAM,sBAAsB,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAO/D,qBAAa,cAAe,SAAQ,UAAU;IAE9B,QAAQ,EAAE,gBAAgB,CAAsD;IAChF,iBAAiB,UAAS;IAC1B,gBAAgB,UAAS;IACzB,WAAW,UAAS;IAEpB,WAAW,UAAS;;IAMhC,OAAO,CAAC,YAAY;IAWd,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;IAkBrC,UAAU;IAUV,UAAU;IAOV,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,gBAAgB,CAAC;IA4BjD,gBAAgB;IAOhB,cAAc;CAIjB"} \ No newline at end of file diff --git a/types/UI/Store/BoardInterface.d.ts b/types/UI/Store/BoardInterface.d.ts new file mode 100644 index 0000000..8237ffb --- /dev/null +++ b/types/UI/Store/BoardInterface.d.ts @@ -0,0 +1,288 @@ +import { EBoardKeyList } from "../../Common/BoardKeyList"; +import { ObjectId } from "../../DatabaseServices/ObjectId"; +export declare enum BoardType { + Layer = 0, + Vertical = 1, + Behind = 2 +} +/** + *勿随意更改属性名,若更改,需更改对应UI模态框的属性和检验方法的key + * + */ +export interface IBaseOption { + version?: number; +} +export interface BoardData { + boardConfig: BoardConfigOption; + boardProcess: BoardProcessOption; +} +export declare enum DrillType { + Yes = "\u6392", + None = "\u4E0D\u6392", + More = "**\u591A\u79CD**", + Invail = "\u65E0\u6548\u914D\u7F6E" +} +export declare enum FaceDirection { + Front = 0, + Back = 1 +} +export declare enum LinesType { + /** 正纹 */ + Positive = 0, + /** 反纹 */ + Reverse = 1, + /** 可翻转 */ + CanReversal = 2 +} +export declare enum ComposingType { + Positive = 0, + Reverse = 1, + Arbitrary = 2 +} +/** + *背板靠上还是靠下 + * + * @export + * @enum {number} + */ +export declare enum BehindHeightPositon { + ForTop = "top", + ForBottom = "bottom", + AllHeight = "all" +} +/** + *板件相对位置 + * + * @export + * @enum {number} + */ +export declare enum BrRelativePos { + Front = "front", + Back = "back", + Top = "top", + Bottom = "bottom", + Left = "left", + Right = "right", + Div = "div" +} +export interface IHighSealedItem { + size: number; +} +export interface BoardProcessOption extends IBaseOption { + [EBoardKeyList.RoomName]?: string; + [EBoardKeyList.CabinetName]?: string; + [EBoardKeyList.BrMat]?: string; + [EBoardKeyList.Mat]?: string; + [EBoardKeyList.Color]?: string; + [EBoardKeyList.Lines]?: LinesType; + [EBoardKeyList.ProcessGroup]?: ObjectId[]; + [EBoardKeyList.BigHole]?: FaceDirection; + [EBoardKeyList.DrillType]?: string; + [EBoardKeyList.ComposingFace]?: ComposingType; + [EBoardKeyList.HighSealed]?: IHighSealedItem[]; + [EBoardKeyList.UpSealed]?: string; + [EBoardKeyList.DownSealed]?: string; + [EBoardKeyList.LeftSealed]?: string; + [EBoardKeyList.RightSealed]?: string; + [EBoardKeyList.SpliteHeight]?: string; + [EBoardKeyList.SpliteWidth]?: string; + [EBoardKeyList.SpliteThickness]?: string; + highDrill?: string[]; + frontDrill: boolean; + backDrill: boolean; + remarks: [string, string][]; + useBoardProcessOption?: boolean; +} +/** + *板件参数 + */ +export interface BoardConfigOption extends IBaseOption { + type: BoardType; + name: string; + thickness?: number; + height?: number; + width?: number; +} +export interface SideBoardOption extends BoardConfigOption { + spaceSize?: number; + leftShrink: number; + rightShrink: number; +} +/** + *背板参数 + * + * @export + * @interface BehindBoardOption + * @extends {BoardConfigOption} + */ +export interface BehindBoardOption extends BoardConfigOption { + leftExt: number; + rightExt: number; + topExt: number; + bottomExt: number; + boardPosition: BehindHeightPositon; + moveDist: number; + spaceSize?: number; + count?: number; + boardRelative?: BrRelativePos; + calcHeight: string; + calcSpaceSize: string; + calcMoveDist: string; +} +/** + *层板参数 + * + * @export + * @interface LayerBoardOption + * @extends {BoardConfigOption} + */ +export interface LayerBoardOption extends BoardConfigOption { + calcHeight: string; + frontShrink: number; + leftShrink: number; + rightShrink: number; + isTotalLength: boolean; + isActive: boolean; + spaceSize?: number; + count?: number; + boardRelative?: BrRelativePos; + calcSpaceSize: string; + calcFrontShrink: string; + calcLeftShrink: string; + calcRightShrink: string; +} +/** + *层板钉参数 + * + * @export + * @interface LayerNailOption + */ +export interface LayerNailOption extends IBaseOption { + isDraw: boolean; + addCount: number; + dist: number; + isGroup: boolean; + isInBack: boolean; + front: number; + behind: number; + count: number; + rad: number; + length: number; + depth: number; +} +/** + *立板参数 + */ +export interface VerticalBoardOption extends BoardConfigOption { + frontShrink: number; + bottomShrink: number; + isTotalLength: boolean; + isTotalWidth: boolean; + count?: number; + spaceSize?: number; + boardRelative?: BrRelativePos; + calcWidth: string; + calcHeight: string; + calcSpaceSize: string; + calcFrontShrink: string; + calcBottomShrink: string; +} +export interface TBBoardOption extends BoardConfigOption { + isDraw: boolean; + frontDist: number; + behindDistance: number; + isWrapSide: boolean; + useLFData: boolean; + leftExt: number; + rightExt: number; + offset: number; + isDrawFooter?: boolean; + footThickness?: number; + footBehindShrink?: number; + isDrawBackFooter?: boolean; + footerOffset?: number; + isDrawStrengthenStrip?: boolean; + divCount?: number; +} +export interface SingleBoardOption extends BoardConfigOption { + rotateX: number; + rotateY: number; + rotateZ: number; +} +export declare enum StripType { + H = "h", + V = "v" +} +export interface ClosingStripOption extends BoardConfigOption { + boardRelative: BrRelativePos; + striptype: StripType; + frontShrink: number; + isDrawFuZhu: boolean; + fzWidth: number; + fzThickness: number; +} +export interface IGrooveOption extends IBaseOption { + grooveAddLength: string; + grooveAddWidth: string; + grooveAddDepth: string; + knifeRadius?: string; +} +export interface IShinkOption extends IBaseOption { + left: number; + right: number; + front: number; + back: number; + isLREqual: boolean; + isFBEqual: boolean; +} +export declare type IUiOption = { + [P in (keyof T)]: T[P] extends number ? string : T[P]; +}; +export interface INailRule extends IBaseOption { + startDist: number; + endDist: number; + count: number; +} +export interface IHightDrillOption { + up: string; + down: string; + left: string; + right: string; +} +export declare enum CurtailType { + PerBr = "0", + Total = "1" +} +export interface IBoardBatchCurtailOption extends IBaseOption { + type: CurtailType; + front: number; + back: number; + left: number; + right: number; + moveBrs: boolean; +} +export declare enum BoardOpenDir { + Left = 1, + Right = 2, + Up = 3, + Down = 4, + None = 0 +} +export declare type AnyObject = { + [key: string]: any; +}; +export interface ISmoothEdgeOption extends IBaseOption { + smoothEdge: number; + edge: number; + scale: number; + filterArr: string[]; +} +export interface IDrawBoardAutoCutOption { + isAutoCut: boolean; + isRelevance: boolean; +} +export interface IKnifeProps { + radius: number; + angle: number; +} +//# sourceMappingURL=BoardInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/BoardInterface.d.ts.map b/types/UI/Store/BoardInterface.d.ts.map new file mode 100644 index 0000000..e22400a --- /dev/null +++ b/types/UI/Store/BoardInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/BoardInterface.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Store/BoardStore.d.ts b/types/UI/Store/BoardStore.d.ts new file mode 100644 index 0000000..134e3c5 --- /dev/null +++ b/types/UI/Store/BoardStore.d.ts @@ -0,0 +1,120 @@ +import { Singleton } from '../../Common/Singleton'; +import { Board } from '../../DatabaseServices/Entity/Board'; +import { TemplateRecord } from '../../DatabaseServices/Template/TemplateRecord'; +import { IConfigOption } from '../Components/Board/UserConfig'; +import { BehindBoardOption, BoardConfigOption, IBaseOption, BoardProcessOption, ClosingStripOption, IGrooveOption, LayerBoardOption, LayerNailOption, SideBoardOption, SingleBoardOption, TBBoardOption, VerticalBoardOption, IUiOption, AnyObject, IHightDrillOption, IDrawBoardAutoCutOption } from './BoardInterface'; +export interface IConfigStore { + configName: string; + configsNames: string[]; + InitOption: () => void; + SaveConfig: () => IConfigOption; + UpdateOption: Function; + HasInvailValue?: () => boolean; + EditorTemplate?: TemplateRecord; + InitConfigs?: () => { + [key: string]: IConfigOption; + }; +} +export declare class BoardStore extends Singleton implements IConfigStore { + configName: string; + configsNames: string[]; + EditorTemplate: TemplateRecord; + m_Option: T; + protected m_UiOption: IUiOption; + readonly title: string; + m_BoardProcessOption: BoardProcessOption; + remarks: [string, string][]; + rectDrillOption: IHightDrillOption; + autoCutOption: IDrawBoardAutoCutOption; + constructor(); + InitOption(): void; + protected InitDrillType(): void; + protected InitRectDrillData(highDrill: string[]): void; + get UIOption(): IUiOption; + get BoardProcessOption(): BoardProcessOption; + GetBoardProcessOption(br: Board): void; + OnOk(state: number, isClose?: boolean, d?: AnyObject): Promise; + private SetRemarks; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + protected UpdateRemarks(cof: IConfigOption): void; + HasInvailValue(): boolean; + InitConfigs(): any; +} +export declare class SideBoardStore extends BoardStore { + m_Option: SideBoardOption; + title: string; + constructor(); + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare class TopBottomBoardStore extends BoardStore { + topBoardOption: TBBoardOption; + bottomBoardOption: TBBoardOption; + title: string; + topUiOption: IUiOption; + bottomUiOption: IUiOption; + get TopUiOption(): IUiOption; + get BottomUiOption(): IUiOption; + InitConfigs(): { + [key: string]: IConfigOption; + }; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + private UpdateConfigVersion; + HasInvailValue(): boolean; +} +export declare class BehindBoardStore extends BoardStore { + title: string; + m_Option: BehindBoardOption; + grooveOption: IGrooveOption; + constructor(); + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; + InitConfigs(): { + [key: string]: IConfigOption; + }; +} +export declare class LayerBoardStore extends BoardStore { + title: string; + m_Option: LayerBoardOption; + layerNailOption: LayerNailOption; + uiLayerNailOption: IUiOption; + constructor(); + get NailUiOption(): IUiOption; + InitOption(): void; + InitConfigs(): {}; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; +} +export declare class VerticalBoardStore extends BoardStore { + title: string; + m_Option: VerticalBoardOption; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare class SingleBoardStore extends BoardStore { + title: string; + m_Option: SingleBoardOption; + InitOption(): void; +} +export declare class ClosingStripStore extends BoardStore { + title: string; + m_Option: ClosingStripOption; + constructor(); + ChangeCabinetName(cof?: IConfigOption): void; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare class SpecialShapeStore extends BoardStore { + title: string; + m_Option: BoardConfigOption; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare function FixErrorDataConfig(config: IBaseOption, defaultConfig: IBaseOption): void; +//# sourceMappingURL=BoardStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/BoardStore.d.ts.map b/types/UI/Store/BoardStore.d.ts.map new file mode 100644 index 0000000..34834a2 --- /dev/null +++ b/types/UI/Store/BoardStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/BoardStore.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Store/CommandStore.d.ts b/types/UI/Store/CommandStore.d.ts new file mode 100644 index 0000000..ae35215 --- /dev/null +++ b/types/UI/Store/CommandStore.d.ts @@ -0,0 +1,20 @@ +import { KeyWord } from '../../Common/InputState'; +import { Editor } from '../../Editor/Editor'; +export interface CommandMsg { + key: number; + msg: string; +} +export declare class CommandStore { + private _Editor; + constructor(_Editor: Editor); + isTransparentTerminalShow: boolean; + private m_promptKeyIndex; + promptList: Array; + commandPrompt: string; + keyWordList: KeyWord[]; + historyCmdList: string[]; + Prompt(msg: string): void; + get cmdList(): Set; + HandleInput: (cmd: string) => void; +} +//# sourceMappingURL=CommandStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/CommandStore.d.ts.map b/types/UI/Store/CommandStore.d.ts.map new file mode 100644 index 0000000..ae28053 --- /dev/null +++ b/types/UI/Store/CommandStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CommandStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/CommandStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,WAAW,UAAU;IAEvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAY;IAET,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAGvB,yBAAyB,EAAE,OAAO,CAAQ;IAEtD,OAAO,CAAC,gBAAgB,CAAa;IAEzB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAM;IAEnC,aAAa,EAAE,MAAM,CAAM;IAE3B,WAAW,EAAE,OAAO,EAAE,CAAM;IAE5B,cAAc,EAAE,MAAM,EAAE,CAAM;IAE1C,MAAM,CAAC,GAAG,EAAE,MAAM;IAYlB,IAAI,OAAO,gBAGV;IAED,WAAW,QAAS,MAAM,UAMxB;CACL"} \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts b/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts new file mode 100644 index 0000000..4b689d7 --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts @@ -0,0 +1,69 @@ +import { IConfigOption } from "../../Components/Board/UserConfig"; +import { INeedUpdateParams } from "../../Components/Template/TemplateComponent"; +import { IUiOption } from "../BoardInterface"; +import { BoardStore } from "../BoardStore"; +import { IDoorAndDrawerConfigOption, IDoorInfo, IDrawerInfo, ISelectTempInfo } from "../DoorInterface"; +declare type IDoorDrawer = IDoorInfo | IDrawerInfo; +export declare class DoorDrawerStore extends BoardStore { + m_Option: IDoorAndDrawerConfigOption; + protected m_UiOption: IUiOption; + totalHeight: number; + totalWidth: number; + totalDepth: number; + doorWidth: number; + doorHeight: number; + spaceWidth: number; + spaceHeight: number; + preDivWidth: number; + preDivHeight: number; + /**全部锁定高度后剩下的高度 */ + restHeight: number; + previewEl: HTMLDivElement; + doorDrawersInfo: IDoorDrawer[]; + /**当前模态框右侧模板属性 */ + currentTempProp: INeedUpdateParams[]; + /**当前模态框右侧拉手属性 */ + currentHandleProp: INeedUpdateParams[]; + selectTemplateInfo: ISelectTempInfo; + private calcParam; + get IsLockMidHeight(): boolean; + get IsLockUpSpace(): boolean; + get IsLockDownSpace(): boolean; + get LockedTotalSize(): { + setWidth: number; + setHeight: number; + lockAllHeight: boolean; + lockAllWidth: boolean; + }; + InitInfos(): void; + /**更新计算后的总空间 */ + protected UpdateTotalCalcSpace(): void; + /**更新预览图 */ + protected UpdatePreviewSize(): void; + /**计算门板抽屉信息*/ + CalcInfos(): void; + /**预留间隙和 */ + get TotalSpaceValue(): number; + get HeightDivCount(): { + count: number; + constVal: number; + }; + get WidthDivCount(): { + count: number; + constVal: number; + }; + private UpdateUpDownSpace; + protected DoorSizeConvertDivSize(size: number, isWidth: boolean, refSize?: number): number; + /** + * + * 检查锁定是否有效 + */ + CheckLockSize(isWidth: boolean, hasToaster?: boolean, currentInfo?: IDrawerInfo): boolean; + CalcPaddingTop(size: number): number; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; + protected UpdateDoorDrawerVersionInfo(cof: IConfigOption): void; +} +export {}; +//# sourceMappingURL=DoorDrawerStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts.map b/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts.map new file mode 100644 index 0000000..33b41ea --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DoorDrawerStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorDrawerStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/DoorDrawerStore/DoorDrawerStore.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKvG,aAAK,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3C,qBAAa,eAAgB,SAAQ,UAAU,CAAC,0BAA0B,CAAC;IAEvE,QAAQ,EAAE,0BAA0B,CAAC;IACrC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC5D,WAAW,SAAK;IAChB,UAAU,SAAK;IACf,UAAU,SAAK;IACf,SAAS,SAAK;IACd,UAAU,SAAK;IACf,UAAU,SAAK;IACf,WAAW,SAAK;IAChB,WAAW,SAAK;IAChB,YAAY,SAAK;IACjB,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IACd,eAAe,EAAE,WAAW,EAAE,CAAM;IAChD,iBAAiB;IACL,eAAe,EAAE,iBAAiB,EAAE,CAAM;IACtD,iBAAiB;IACL,iBAAiB,EAAE,iBAAiB,EAAE,CAAM;IAC5C,kBAAkB,EAAE,eAAe,CAAC;IAChD,OAAO,CAAC,SAAS,CAKf;IACF,IAAI,eAAe,YASlB;IACD,IAAI,aAAa,YAGhB;IACD,IAAI,eAAe,YAGlB;IACD,IAAI,eAAe;;;;;MAsDlB;IACD,SAAS;IACT,eAAe;IACf,SAAS,CAAC,oBAAoB;IAyB9B,WAAW;IACX,SAAS,CAAC,iBAAiB;IAkD3B,aAAa;IACb,SAAS;IAwCT,WAAW;IACX,IAAI,eAAe,WAGlB;IACD,IAAI,cAAc;;;MAwBjB;IACD,IAAI,aAAa;;;MAoBhB;IACD,OAAO,CAAC,iBAAiB;IAsDzB,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM;IAkBjF;;;MAGE;IACF,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,UAAO,EAAE,WAAW,CAAC,EAAE,WAAW;IAuC5E,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,UAAU;IAcV,YAAY,CAAC,GAAG,EAAE,aAAa;IA2C/B,cAAc;IAId,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE,aAAa,CAAC,0BAA0B,CAAC;CAavF"} \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DoorStore.d.ts b/types/UI/Store/DoorDrawerStore/DoorStore.d.ts new file mode 100644 index 0000000..c856d9f --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DoorStore.d.ts @@ -0,0 +1,19 @@ +import { IDoorConfigOption, IDoorInfo } from "../DoorInterface"; +import { DoorDrawerStore } from "./DoorDrawerStore"; +import { IConfigOption } from "../../Components/Board/UserConfig"; +export declare const openDirTitle: {}; +export declare class DoorStore extends DoorDrawerStore { + title: string; + m_Option: IDoorConfigOption; + doorDrawersInfo: IDoorInfo[]; + byOpenDir: boolean; + InitInfos(): void; + /** + * 改变开门类型 + */ + ChangeOpenDir(info: IDoorInfo): void; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; + private UpdateConfigVersion; +} +//# sourceMappingURL=DoorStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DoorStore.d.ts.map b/types/UI/Store/DoorDrawerStore/DoorStore.d.ts.map new file mode 100644 index 0000000..5a8bfde --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DoorStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/DoorDrawerStore/DoorStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE,eAAO,MAAM,YAAY,IAAK,CAAC;AAO/B,qBAAa,SAAU,SAAQ,eAAe;IAE1C,KAAK,SAAQ;IACD,QAAQ,EAAE,iBAAiB,CAAwC;IACnE,eAAe,EAAE,SAAS,EAAE,CAAM;IAClC,SAAS,UAAS;IAC9B,SAAS;IAwCT;;MAEE;IACF,aAAa,CAAC,IAAI,EAAE,SAAS;IAwC7B,UAAU;IAMV,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,iBAAiB,CAAC;IAKlD,OAAO,CAAC,mBAAmB;CAkB9B"} \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts b/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts new file mode 100644 index 0000000..e7c2d04 --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts @@ -0,0 +1,15 @@ +import { IDrawerConfigOption } from "../DoorInterface"; +import { DoorDrawerStore } from "./DoorDrawerStore"; +import { IConfigOption } from "../../Components/Board/UserConfig"; +import { IUiOption } from "../BoardInterface"; +export declare class DrawerStore extends DoorDrawerStore { + title: string; + m_Option: IDrawerConfigOption; + get UIOption(): IUiOption; + InitInfos(): void; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; + private UpdateConfigVersion; + SetDrawerDepth(): void; +} +//# sourceMappingURL=DrawerStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts.map b/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts.map new file mode 100644 index 0000000..eff413a --- /dev/null +++ b/types/UI/Store/DoorDrawerStore/DrawerStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrawerStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/DoorDrawerStore/DrawerStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,eAAe;IAE5C,KAAK,SAAQ;IACD,QAAQ,EAAE,mBAAmB,CAA8B;IACvE,IAAI,QAAQ,mCAGX;IACD,SAAS;IA4BT,UAAU;IAMV,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,mBAAmB,CAAC;IAKpD,OAAO,CAAC,mBAAmB;IAuB3B,cAAc;CAWjB"} \ No newline at end of file diff --git a/types/UI/Store/DoorInterface.d.ts b/types/UI/Store/DoorInterface.d.ts new file mode 100644 index 0000000..172db6d --- /dev/null +++ b/types/UI/Store/DoorInterface.d.ts @@ -0,0 +1,123 @@ +import { INeedUpdateParams } from "../Components/Template/TemplateComponent"; +import { IBaseOption } from "./BoardInterface"; +export interface IDoorAndDrawerConfigOption extends IBaseOption { + col: number; + row: number; + isAllSelect: boolean; + topOffset: number; + bottomOffset: number; + doorPosType: DoorPosType; + offset: number; + topExt: number; + bottomExt: number; + leftExt: number; + rightExt: number; + topSpace: number; + bottomSpace: number; + leftSpace: number; + rightSpace: number; + midSpace: number; + thickness: number; + depth: number; + isAuto: boolean; + boardName: string; + handleAngle: number; + handleHorPos: HandleHorPos; + horSpacing: number; + handleVePos: HandleVePos; + veSpacing: number; + upOffsetExpr: string; + downOffsetExpr: string; +} +/** + * 门板数据接口 + */ +export interface IDoorConfigOption extends IDoorAndDrawerConfigOption { + doorThickness: number; + topBrSeal: number; + bottomBrSeal: number; + leftBrSeal: number; + rightBrSeal: number; + topDoorSeal: number; + bottomDoorSeal: number; + leftDoorSeal: number; + rightDoorSeal: number; + hingeCount: number; + hindeTopDist: number; + hindeBottomDist: number; +} +/** + * 抽屉数据接口 + */ +export interface IDrawerConfigOption extends IDoorAndDrawerConfigOption { + drawerTotalDepth: number; + trackDepth: number; + isAutoSelectTrack: boolean; + isLockTopOffset: boolean; + isLockBottomOffset: boolean; +} +export declare enum DoorPosType { + Out = 0, + In = 1 +} +export declare enum HandleHorPos { + Left = 0, + Right = 1, + Mid = 2 +} +export declare enum HandleVePos { + Top = 0, + Bottom = 1, + Mid = 2 +} +export declare enum DoorOpenDir { + Left = "lf", + Right = "rt", + Top = "tp", + Bottom = "bm", + None = "none" +} +export interface IDrawerInfo extends IBaseOption { + row: number; + col: number; + divWidth: number; + divHeight: number; + showWidth: string; + showHeight: string; + width: number; + height: number; + isLockWidth: boolean; + isLockHeight: boolean; + isSelect: boolean; + tempInfo: ISelectTempInfo; + marginRight?: number; +} +export interface IDoorInfo extends IDrawerInfo { + openDir: DoorOpenDir; + isDrawLayer: boolean; + isDrawVer: boolean; +} +export interface IDrawerDoorTempInfo { + name: string; + id: string; + logo?: string; + props?: INeedUpdateParams[]; + title?: string; + isHandle?: boolean; + tagName?: string; + isKuGan?: boolean; +} +/**选择的模板信息,temp-抽屉或门板,handletemp-拉手模板,其他是铰链模板 */ +export interface ISelectTempInfo { + temp: IDrawerDoorTempInfo; + handleTemp: IDrawerDoorTempInfo; + hingeTemp?: IDrawerDoorTempInfo; + [key: string]: IDrawerDoorTempInfo; +} +/**抽屉一定要有的参数 */ +export declare const DrawerTempParName: string[]; +/**禁止改的属性 */ +export declare const DisableChangeParName: string[]; +/**门板需要的参数 */ +export declare const DoorNeedParamNames: string[]; +//# sourceMappingURL=DoorInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DoorInterface.d.ts.map b/types/UI/Store/DoorInterface.d.ts.map new file mode 100644 index 0000000..62d8c7c --- /dev/null +++ b/types/UI/Store/DoorInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DoorInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/DoorInterface.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/types/UI/Store/DownPanelStore.d.ts b/types/UI/Store/DownPanelStore.d.ts new file mode 100644 index 0000000..89e492e --- /dev/null +++ b/types/UI/Store/DownPanelStore.d.ts @@ -0,0 +1,52 @@ +import { Singleton } from '../../Common/Singleton'; +export declare enum ToolBarType { + both = 3, + toolbar = 1, + properties = 2, + none = 0 +} +export interface ISnapData { + mode: string; + name: string; + enable: boolean; +} +/** + * 底部状态栏. + */ +export declare class DownPanelStore extends Singleton { + private _version; + useDynInput: boolean; + showType: ToolBarType; + useDynSnap: boolean; + usePass: boolean; + useOrtho: boolean; + fontName: string; + progressName: string; + progress: number; + isToolBarShow: boolean; + isF3Checked: boolean; + isF11Checked: boolean; + posEl: HTMLSpanElement; + isLayout: boolean; + snapData: ISnapData[]; + private timeId; + private constructor(); + get Config(): { + useDynInput: boolean; + useDynSnap: boolean; + usePass: boolean; + useOrtho: boolean; + isToolBarShow: boolean; + isF3Checked: boolean; + isF11Checked: boolean; + snapData: boolean[]; + fontName: string; + }; + Upload(): Promise; + Update(): Promise; + toggleToolBarShow(): void; + SetSnapMode(): void; + StartProgress(name?: string, progress?: number): void; + EndProgress(): void; +} +//# sourceMappingURL=DownPanelStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DownPanelStore.d.ts.map b/types/UI/Store/DownPanelStore.d.ts.map new file mode 100644 index 0000000..28fd929 --- /dev/null +++ b/types/UI/Store/DownPanelStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DownPanelStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/DownPanelStore.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAkBnD,oBAAY,WAAW;IAEnB,IAAI,IAAa;IACjB,OAAO,IAAI;IACX,UAAU,IAAI;IACd,IAAI,IAAI;CACX;AAED,MAAM,WAAW,SAAS;IAEtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAEzC,OAAO,CAAC,QAAQ,CAAK;IACT,WAAW,EAAE,OAAO,CAAQ;IAC5B,QAAQ,EAAE,WAAW,CAAK;IAC1B,UAAU,EAAE,OAAO,CAAQ;IAC3B,OAAO,EAAE,OAAO,CAAQ;IACxB,QAAQ,EAAE,OAAO,CAAS;IAC1B,QAAQ,EAAE,MAAM,CAAY;IAE5B,YAAY,SAAM;IAClB,QAAQ,SAAK;IACb,aAAa,EAAE,OAAO,CAAQ;IAC9B,WAAW,EAAE,OAAO,CAAQ;IAC5B,YAAY,EAAE,OAAO,CAAS;IAC1C,KAAK,EAAE,eAAe,CAAC;IACX,QAAQ,UAAS;IACjB,QAAQ,EAAE,SAAS,EAAE,CAmD/B;IACF,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO;IAuBP,IAAI,MAAM;;;;;;;;;;MAaT;IACK,MAAM;IAqBN,MAAM;IA2CZ,iBAAiB;IAMjB,WAAW;IAoBH,aAAa,CAAC,IAAI,SAAK,EAAE,QAAQ,SAAM;IAMvC,WAAW;CAKtB"} \ No newline at end of file diff --git a/types/UI/Store/DrillStore.d.ts b/types/UI/Store/DrillStore.d.ts new file mode 100644 index 0000000..f1d85ac --- /dev/null +++ b/types/UI/Store/DrillStore.d.ts @@ -0,0 +1,25 @@ +import { IConfigOption } from "../Components/Board/UserConfig"; +import { BoardStore } from "./BoardStore"; +import { DrillingOption } from "./drillInterface"; +export declare class DrillStore extends BoardStore { + m_CurrentRuleIndex: number; + type: string; + rules: DrillingOption[]; + m_Option: DrillingOption; + drillConfig: Map; + deleteHoleTemps: Set; + constructor(); + private GetDefaultOption; + InitOption(): void; + AddNewDrillType(name: string): void; + SaveRuleOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + ChangeRules(i: number): void; + DeleteRule: () => void; + HasInvailValue(): boolean; + /**修正就版本排钻配置,缓存排钻模板 */ + HandleDrillConfig(ruleMap: Map): void; + CacheDrillTemp(tempId: string): Promise; +} +//# sourceMappingURL=DrillStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/DrillStore.d.ts.map b/types/UI/Store/DrillStore.d.ts.map new file mode 100644 index 0000000..f9e0d44 --- /dev/null +++ b/types/UI/Store/DrillStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/DrillStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAe,MAAM,kBAAkB,CAAC;AAW/D,qBAAa,UAAW,SAAQ,UAAU;IAE1B,kBAAkB,SAAK;IAEvB,IAAI,SAAS;IAEb,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAa;IACnE,eAAe,eAAa;;IAM5B,OAAO,CAAC,gBAAgB;IAmFxB,UAAU;IAsBV,eAAe,CAAC,IAAI,EAAE,MAAM;IAO5B,cAAc;IA0Cd,UAAU;IAYV,YAAY,CAAC,GAAG,EAAE,aAAa;IAe/B,WAAW,CAAC,CAAC,EAAE,MAAM;IASrB,UAAU,aAKR;IACF,cAAc;IAId,sBAAsB;IACtB,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAqClD,cAAc,CAAC,MAAM,EAAE,MAAM;CAoBtC"} \ No newline at end of file diff --git a/types/UI/Store/EntityStore.d.ts b/types/UI/Store/EntityStore.d.ts new file mode 100644 index 0000000..ad315f6 --- /dev/null +++ b/types/UI/Store/EntityStore.d.ts @@ -0,0 +1,14 @@ +import { Singleton } from "../../Common/Singleton"; +import { Entity } from "../../DatabaseServices/Entity/Entity"; +export declare class EntityStore extends Singleton { + isWorking: boolean; + currentEnType: string; + enMap: Map>; + colorIndex: number; + colorSet: Set; + AddEntitysToMap(ens: Entity[]): void; + GetEntitys(): Entity[]; + GetCurrentColor(): void; + Exit(): void; +} +//# sourceMappingURL=EntityStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/EntityStore.d.ts.map b/types/UI/Store/EntityStore.d.ts.map new file mode 100644 index 0000000..ee51052 --- /dev/null +++ b/types/UI/Store/EntityStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EntityStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/EntityStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAQ9D,qBAAa,WAAY,SAAQ,SAAS;IAEtC,SAAS,UAAS;IACN,aAAa,SAAS;IACtB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAa;IAC5C,UAAU,SAAK;IACf,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAG9C,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;IAuC7B,UAAU;IAaV,eAAe;IAsBf,IAAI;CAKP"} \ No newline at end of file diff --git a/types/UI/Store/KuGanStore.d.ts b/types/UI/Store/KuGanStore.d.ts new file mode 100644 index 0000000..c2f6e20 --- /dev/null +++ b/types/UI/Store/KuGanStore.d.ts @@ -0,0 +1,16 @@ +import { IKuGangDrawOption } from "../Components/Template/TemplateInterface"; +import { IUiOption } from "./BoardInterface"; +export declare class KuGanStore { + option: IKuGangDrawOption; + uiOption: IUiOption; + private watch; + private needUpdate; + get UIOption(): IUiOption; + Watch(): void; + StopWatch(): void; + HasInvailValue(): boolean; + Upload(): Promise; + Load(): Promise; +} +export declare const kuGanStore: KuGanStore; +//# sourceMappingURL=KuGanStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/KuGanStore.d.ts.map b/types/UI/Store/KuGanStore.d.ts.map new file mode 100644 index 0000000..7c93777 --- /dev/null +++ b/types/UI/Store/KuGanStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"KuGanStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/KuGanStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQ7C,qBAAa,UAAU;IAEP,MAAM,EAAE,iBAAiB,CAA6B;IACtD,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,IAAI,QAAQ,iCAKX;IACD,KAAK;IAOL,SAAS;IAKT,cAAc;IAiBR,MAAM;IAeN,IAAI;CAmBb;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/LatticeDrawerStore.d.ts b/types/UI/Store/LatticeDrawerStore.d.ts new file mode 100644 index 0000000..9700503 --- /dev/null +++ b/types/UI/Store/LatticeDrawerStore.d.ts @@ -0,0 +1,11 @@ +import { BoardStore } from "./BoardStore"; +import { ILatticeOption } from "./LatticeInterface"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare class LatticeDrawerStore extends BoardStore { + m_Option: ILatticeOption; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; +} +//# sourceMappingURL=LatticeDrawerStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/LatticeDrawerStore.d.ts.map b/types/UI/Store/LatticeDrawerStore.d.ts.map new file mode 100644 index 0000000..7e48cee --- /dev/null +++ b/types/UI/Store/LatticeDrawerStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LatticeDrawerStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/LatticeDrawerStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAK/D,qBAAa,kBAAmB,SAAQ,UAAU;IAElC,QAAQ,EAAE,cAAc,CAA8B;IAClE,UAAU;IAKV,UAAU;IAOV,YAAY,CAAC,GAAG,EAAE,aAAa;IAM/B,cAAc;CAIjB"} \ No newline at end of file diff --git a/types/UI/Store/LatticeInterface.d.ts b/types/UI/Store/LatticeInterface.d.ts new file mode 100644 index 0000000..b5effb1 --- /dev/null +++ b/types/UI/Store/LatticeInterface.d.ts @@ -0,0 +1,28 @@ +import { IBaseOption } from "./BoardInterface"; +export declare enum ELatticeArrayType { + ByWidth = 0, + ByCount = 1 +} +export interface ILatticeOption extends IBaseOption { + arrayType: ELatticeArrayType; + gripWidth: number; + gripDepth: number; + widthCount: number; + depthCount: number; + knifeRad: number; + thickness: number; + arcLen: number; + downDist: number; + space: number; + grooveAddWidth: number; + upSealed: number; + downSealed: number; + leftSealed: number; + rightSealed: number; + isAuto: boolean; + isChange: boolean; + isOpenCut: boolean; + upCut: number; + downCut: number; +} +//# sourceMappingURL=LatticeInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/LatticeInterface.d.ts.map b/types/UI/Store/LatticeInterface.d.ts.map new file mode 100644 index 0000000..5399386 --- /dev/null +++ b/types/UI/Store/LatticeInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LatticeInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/LatticeInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,oBAAY,iBAAiB;IAEzB,OAAO,IAAI;IACX,OAAO,IAAI;CACd;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IAE/C,SAAS,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB"} \ No newline at end of file diff --git a/types/UI/Store/MaterialStore.d.ts b/types/UI/Store/MaterialStore.d.ts new file mode 100644 index 0000000..2bd9dbc --- /dev/null +++ b/types/UI/Store/MaterialStore.d.ts @@ -0,0 +1,42 @@ +import { Singleton } from "../../Common/Singleton"; +import { IGoodProps, PhysicalMaterialRecord } from "../../DatabaseServices/PhysicalMaterialRecord"; +import { TextureTableRecord } from "../../DatabaseServices/Texture"; +import { IDirectoryProps } from "../Components/SourceManage/CommonPanel"; +import { TextureStore } from "./TextureStore"; +export declare class MaterialStore extends Singleton { + name: import("mobx").IObservableValue; + color: import("mobx").IObservableValue; + matalness: import("mobx").IObservableValue; + useTransparent: import("mobx").IObservableValue; + transparent: import("mobx").IObservableValue; + textureMaping: TextureStore; + bumpScale: import("mobx").IObservableValue; + bumpMaping: TextureStore; + roughness: import("mobx").IObservableValue; + roughnessMaping: TextureStore; + protected reactionDestroy: any; + isOpenTexture: boolean; + isOpenImgList: boolean; + goodsInfo: IGoodProps; + currentEditorStore: TextureStore; + currentTextureTable: TextureTableRecord; + currentDir: IDirectoryProps; + isFull: boolean; + constructor(); + get Textures(): [string, TextureTableRecord][]; + get SelfTextures(): [any, any][]; + StartObserve(): void; + Destroy(): void; + Material: PhysicalMaterialRecord; + BindMaterial(material: PhysicalMaterialRecord): void; + BindTextureId(texture: TextureTableRecord): void; + UpdateMaterial: () => Promise; + UpdateStore(): void; + InitTextureStore(): void; + AddTexture(): Promise; + ApplyTexture(texture: TextureTableRecord): void; + ChangeTextureImg(pic: { + path: string; + }): Promise; +} +//# sourceMappingURL=MaterialStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/MaterialStore.d.ts.map b/types/UI/Store/MaterialStore.d.ts.map new file mode 100644 index 0000000..90dffb6 --- /dev/null +++ b/types/UI/Store/MaterialStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MaterialStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/MaterialStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,qBAAa,aAAc,SAAQ,SAAS;IAExC,IAAI,0CAAsB;IAC1B,KAAK,0CAA6B;IAElC,SAAS,0CAAuB;IAEhC,cAAc,2CAAyB;IACvC,WAAW,0CAAqB;IAEhC,aAAa,eAAsB;IACnC,SAAS,0CAAqB;IAC9B,UAAU,eAAsB;IAChC,SAAS,0CAAqB;IAC9B,eAAe,eAAsB;IACrC,SAAS,CAAC,eAAe,MAAC;IACd,aAAa,UAAS;IACtB,aAAa,UAAS;IACtB,SAAS,EAAE,UAAU,CAI/B;IAEF,kBAAkB,EAAE,YAAY,CAAC;IACjC,mBAAmB,EAAE,kBAAkB,CAAC;IACxC,UAAU,EAAE,eAAe,CAAC;IAChB,MAAM,UAAS;;IAS3B,IAAI,QAAQ,mCAGX;IACD,IAAI,YAAY,iBAYf;IACD,YAAY;IAkBZ,OAAO;IAmBP,QAAQ,EAAE,sBAAsB,CAAC;IACjC,YAAY,CAAC,QAAQ,EAAE,sBAAsB;IAO7C,aAAa,CAAC,OAAO,EAAE,kBAAkB;IAuBzC,cAAc,sBAyBZ;IAEF,WAAW;IAgBX,gBAAgB;IAMV,UAAU;IAOhB,YAAY,CAAC,OAAO,EAAE,kBAAkB;IAuBlC,gBAAgB,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;KAAE;CAQhD"} \ No newline at end of file diff --git a/types/UI/Store/Rect2WinerackStore.d.ts b/types/UI/Store/Rect2WinerackStore.d.ts new file mode 100644 index 0000000..e5f2185 --- /dev/null +++ b/types/UI/Store/Rect2WinerackStore.d.ts @@ -0,0 +1,18 @@ +import { IConfigStore } from "./BoardStore"; +import { IR2WROption } from "./WineRackInterface"; +import { IUiOption } from "./BoardInterface"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare class Rect2WinerackStore implements IConfigStore { + configName: string; + configsNames: any[]; + option: IR2WROption; + uiOption: IUiOption; + get UIOption(): IUiOption; + InitOption(): void; + SaveConfig(): { + option: IR2WROption; + }; + UpdateOption(cof: IConfigOption): void; +} +export declare const rect2WinerackStore: Rect2WinerackStore; +//# sourceMappingURL=Rect2WinerackStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/Rect2WinerackStore.d.ts.map b/types/UI/Store/Rect2WinerackStore.d.ts.map new file mode 100644 index 0000000..2215c29 --- /dev/null +++ b/types/UI/Store/Rect2WinerackStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Rect2WinerackStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/Rect2WinerackStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,qBAAa,kBAAmB,YAAW,YAAY;IAEvC,UAAU,SAAQ;IAClB,YAAY,QAAM;IAClB,MAAM,EAAE,WAAW,CAQ7B;IACF,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,QAAQ,2BAKX;IACD,UAAU;IAkBV,UAAU;;;IAMV,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC;CAM/C;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts b/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts new file mode 100644 index 0000000..2ec76b8 --- /dev/null +++ b/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts @@ -0,0 +1,21 @@ +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { Curve } from "../../../DatabaseServices/Entity/Curve"; +import { Entity } from "../../../DatabaseServices/Entity/Entity"; +export declare function ZoomToEntity(en: Entity): void; +export declare const Board_Editor_Key = "Board_Editor_Key"; +export declare class BoardEdgesEditor { + protected _brMap: Map; + protected _boardList: Board[]; + private _editoring; + private _cameraFiler; + IsApplyData: boolean; + protected InitData(): Promise; + protected InitCurve(): void; + protected ShowToaster(): void; + protected ParseData(): void; + protected WriteData(): Promise; + StartEditor(brs: Board[]): Promise; + EndEditor(): Promise; + private Start; +} +//# sourceMappingURL=BoardEdgesEditor.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts.map b/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts.map new file mode 100644 index 0000000..37ea842 --- /dev/null +++ b/types/UI/Store/RightPanelStore/BoardEdgesEditor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BoardEdgesEditor.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/BoardEdgesEditor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAKjE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,QAMtC;AAED,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,qBAAa,gBAAgB;IAEzB,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAa;IAClD,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;IAC9B,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,YAAY,CAAW;IAC/B,WAAW,UAAS;cAGJ,QAAQ;IAKxB,SAAS,CAAC,SAAS;IAInB,SAAS,CAAC,WAAW;IAIrB,SAAS,CAAC,SAAS;cAKH,SAAS;IAInB,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IAcxB,SAAS;IAoBf,OAAO,CAAC,KAAK;CAoBhB"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/DrillingStore.d.ts b/types/UI/Store/RightPanelStore/DrillingStore.d.ts new file mode 100644 index 0000000..05aafdc --- /dev/null +++ b/types/UI/Store/RightPanelStore/DrillingStore.d.ts @@ -0,0 +1,12 @@ +import { BoardEdgesEditor } from "./BoardEdgesEditor"; +export declare class DrillingStore extends BoardEdgesEditor { + drillDataList: string[]; + upDownIsdrill: [boolean, boolean]; + protected InitData(): Promise; + protected InitCurve(): Promise; + protected ShowToaster(): void; + private _highDrillMap; + protected ParseData(): Promise; + protected WriteData(): Promise; +} +//# sourceMappingURL=DrillingStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/DrillingStore.d.ts.map b/types/UI/Store/RightPanelStore/DrillingStore.d.ts.map new file mode 100644 index 0000000..5d5b63f --- /dev/null +++ b/types/UI/Store/RightPanelStore/DrillingStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DrillingStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/DrillingStore.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAMxE,qBAAa,aAAc,SAAQ,gBAAgB;IAEnC,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAgB;cAE7C,QAAQ;cAQR,SAAS;IA0BzB,SAAS,CAAC,WAAW;IAcrB,OAAO,CAAC,aAAa,CAAuC;cAC5C,SAAS;cAsBT,SAAS;CAwB5B"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/HardwareStore.d.ts b/types/UI/Store/RightPanelStore/HardwareStore.d.ts new file mode 100644 index 0000000..a194919 --- /dev/null +++ b/types/UI/Store/RightPanelStore/HardwareStore.d.ts @@ -0,0 +1,34 @@ +import { ICompHardwareOption, IHardwareOption, IToplineOption } from "../../Components/RightPanel/RightPanelInterface"; +import { IConfigStore } from "../BoardStore"; +import { IConfigOption } from "../../Components/Board/UserConfig"; +import { HardwareCompositeEntity } from "../../../DatabaseServices/Hardware/HardwareCompositeEntity"; +import { HardwareTopline } from "../../../DatabaseServices/Hardware/HardwareTopline"; +export declare abstract class BaseHardwareStore implements IConfigStore { + configName: string; + configsNames: string[]; + option: IHardwareOption; + otherOptions: [string, string][]; + Entity: HardwareCompositeEntity | HardwareTopline; + rotation: string; + constructor(); + private Init; + get KvList(): [string, string][]; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; + HasInvailValue(): boolean; +} +export declare class CompositeHardwareStore extends BaseHardwareStore { + option: ICompHardwareOption; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare class ToplineMetalsStore extends BaseHardwareStore { + option: IToplineOption; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export declare const compositeMetalsStore: CompositeHardwareStore; +export declare const compositeMetalsOptionStore: CompositeHardwareStore; +export declare const toplineMetalsStore: ToplineMetalsStore; +//# sourceMappingURL=HardwareStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/HardwareStore.d.ts.map b/types/UI/Store/RightPanelStore/HardwareStore.d.ts.map new file mode 100644 index 0000000..c3894ce --- /dev/null +++ b/types/UI/Store/RightPanelStore/HardwareStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HardwareStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/HardwareStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AAE3J,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4DAA4D,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAErF,8BAAsB,iBAAkB,YAAW,YAAY;IAE/C,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IACxC,MAAM,EAAE,eAAe,CAAC;IACZ,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IACtC,MAAM,EAAE,uBAAuB,GAAG,eAAe,CAAC;IAClD,QAAQ,SAAO;;IAK3B,OAAO,CAAC,IAAI;IAIZ,IAAI,MAAM,uBAWT;IACD,UAAU;IAIV,UAAU;IAUV,YAAY,CAAC,GAAG,EAAE,aAAa;IAY/B,cAAc;CAIjB;AAED,qBAAa,sBAAuB,SAAQ,iBAAiB;IAE7C,MAAM,EAAE,mBAAmB,CAAuC;IAC9E,UAAU;IAKV,YAAY,CAAC,GAAG,EAAE,aAAa;CAYlC;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;IAEzC,MAAM,EAAE,cAAc,CAAqC;IACvE,UAAU;IAKV,YAAY,CAAC,GAAG,EAAE,aAAa;CAalC;AAGD,eAAO,MAAM,oBAAoB,wBAA+B,CAAC;AACjE,eAAO,MAAM,0BAA0B,wBAA+B,CAAC;AACvE,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/LightStore.d.ts b/types/UI/Store/RightPanelStore/LightStore.d.ts new file mode 100644 index 0000000..7dbc356 --- /dev/null +++ b/types/UI/Store/RightPanelStore/LightStore.d.ts @@ -0,0 +1,56 @@ +import { Light } from "../../../DatabaseServices/Lights/Light"; +export interface LightModalState { + x?: string; + y?: string; + z?: string; + Intensity?: string; + Distance?: string; + Decay?: string; + Angle?: string; + Penumbra?: string; + Width?: string; + Height?: string; + Color?: string; + GroundColor?: string; + Elevation?: string; + Rotation?: string; +} +export declare enum ETime { + Default = "\u9ED8\u8BA4", + Morning = "\u4E0A\u5348", + Noon = "\u4E2D\u5348", + Afternoon = "\u4E0B\u5348", + Evening = "\u508D\u665A" +} +export declare class LightStore { + ShowAmbientLight: boolean; + ShowSunLight: boolean; + ShowHemiLight: boolean; + currentSelectEnt: Light; + title: string; + pars: [string, string][]; + lightData: LightModalState; + ambientLightData: { + Color: string; + Intensity: string; + }; + hemisphereLightData: { + GroundColor: string; + Color: string; + Intensity: string; + }; + sunLightData: { + Intensity: string; + time: ETime; + Elevation: string; + Rotation: string; + }; + isShowShadow: boolean; + constructor(); + InitSunLightData(): void; + InitLightData(light: Light): void; + ShowShadowObject(isShow: boolean): void; + private WatchLightEvent; + private UpdateDirLightShadowArea; +} +//# sourceMappingURL=LightStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/LightStore.d.ts.map b/types/UI/Store/RightPanelStore/LightStore.d.ts.map new file mode 100644 index 0000000..729a529 --- /dev/null +++ b/types/UI/Store/RightPanelStore/LightStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"LightStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/LightStore.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAO/D,MAAM,WAAW,eAAe;IAG5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IAEX,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,oBAAY,KAAK;IAEb,OAAO,iBAAO;IACd,OAAO,iBAAO;IACd,IAAI,iBAAO;IACX,SAAS,iBAAO;IAChB,OAAO,iBAAO;CACjB;AACD,qBAAa,UAAU;IAEP,gBAAgB,UAAQ;IACxB,YAAY,UAAS;IACrB,aAAa,UAAS;IACtB,gBAAgB,EAAE,KAAK,CAAa;IACpC,KAAK,SAAM;IACX,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAC9B,SAAS,EAAE,eAAe,CAAM;IAChC,gBAAgB;;;MAG1B;IACU,mBAAmB;;;;MAI7B;IACU,YAAY;;;;;MAKtB;IACU,YAAY,UAAS;;IAKjC,gBAAgB;IAWhB,aAAa,CAAC,KAAK,EAAE,KAAK;IAyE1B,gBAAgB,CAAC,MAAM,EAAE,OAAO;IAahC,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,wBAAwB;CAKnC"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/Modeling2Store.d.ts b/types/UI/Store/RightPanelStore/Modeling2Store.d.ts new file mode 100644 index 0000000..8824b27 --- /dev/null +++ b/types/UI/Store/RightPanelStore/Modeling2Store.d.ts @@ -0,0 +1,47 @@ +import { FaceDirection, IUiOption, IKnifeProps } from "../BoardInterface"; +import { IConfigOption } from "../../Components/Board/UserConfig"; +import { IConfigStore } from "../BoardStore"; +import { I2DModeling, IKnifeInfo } from "../../../DatabaseServices/Entity/Board"; +export interface IKnifeInfo2 { + id: string; + name: string; + props: IKnifeProps; +} +export interface IVModelingInfo { + offset: number; + depth: number; + knife: IKnifeInfo2; +} +declare type IUIVModelingInfo = Pick, "offset" | "depth">[]; +export interface IModeling2Item { + readonly color: number; + dir: FaceDirection; + items: IVModelingInfo[]; +} +export interface IUiVModeing { + readonly color: number; + dir: FaceDirection; + items: IUIVModelingInfo; +} +export declare class Modeling2Store implements IConfigStore { + configName: string; + configsNames: string[]; + modelingItems: IModeling2Item[]; + uiModeingItems: IUiVModeing[]; + isUpdate: boolean; + constructor(); + InitModelingItems(): void; + AddItems(index: number): void; + RemoveItem(index: number, itemIndex: number): void; + ChangeModelingValue(index: number, data: I2DModeling): void; + ChangeModelingValue3D(index: number, item: { + knife: IKnifeInfo; + dir: FaceDirection; + }): void; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateUIOption(): void; + UpdateOption(cof: IConfigOption): void; +} +export {}; +//# sourceMappingURL=Modeling2Store.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/Modeling2Store.d.ts.map b/types/UI/Store/RightPanelStore/Modeling2Store.d.ts.map new file mode 100644 index 0000000..0a0d8bd --- /dev/null +++ b/types/UI/Store/RightPanelStore/Modeling2Store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Modeling2Store.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/Modeling2Store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAIjF,MAAM,WAAW,WAAW;IAExB,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;CAChD;AAED,MAAM,WAAW,cAAc;IAE3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;CACtB;AACD,aAAK,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;AAC9E,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAExB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,aAAa,CAAC;IACnB,KAAK,EAAE,gBAAgB,CAAC;CAC3B;AAED,qBAAa,cAAe,YAAW,YAAY;IAEnC,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,aAAa,EAAE,cAAc,EAAE,CAAM;IACrC,cAAc,EAAE,WAAW,EAAE,CAAM;IAC/C,QAAQ,UAAQ;;IAMhB,iBAAiB;IAgDjB,QAAQ,CAAC,KAAK,EAAE,MAAM;IAatB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAM3C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAmBpD,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,aAAa,CAAC;KAAE;IAoBrF,UAAU;IAIV,UAAU;IAOV,cAAc;IAyBd,YAAY,CAAC,GAAG,EAAE,aAAa;CAKlC"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/ModelingStore.d.ts b/types/UI/Store/RightPanelStore/ModelingStore.d.ts new file mode 100644 index 0000000..cc08388 --- /dev/null +++ b/types/UI/Store/RightPanelStore/ModelingStore.d.ts @@ -0,0 +1,19 @@ +import { IModelingItem } from "../../Components/RightPanel/ModelingComponent"; +import { IModeling } from "../../../DatabaseServices/Entity/Board"; +import { IUiOption } from "../BoardInterface"; +import { IConfigOption } from "../../Components/Board/UserConfig"; +import { IConfigStore } from "../BoardStore"; +export declare class ModelingStore implements IConfigStore { + configName: string; + configsNames: string[]; + modelingItems: IModelingItem[]; + UIModelingItems: IUiOption[]; + isUpdate: boolean; + constructor(); + InitModelingItems(): void; + ChangeModelingValue(index: number, data: IModeling): void; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; +} +//# sourceMappingURL=ModelingStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/ModelingStore.d.ts.map b/types/UI/Store/RightPanelStore/ModelingStore.d.ts.map new file mode 100644 index 0000000..52a5d30 --- /dev/null +++ b/types/UI/Store/RightPanelStore/ModelingStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ModelingStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/ModelingStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAEnE,OAAO,EAAiB,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,qBAAa,aAAc,YAAW,YAAY;IAElC,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,aAAa,EAAE,aAAa,EAAE,CAAM;IACpC,eAAe,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE,CAAM;IAC7D,QAAQ,UAAQ;;IAMhB,iBAAiB;IA2BjB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS;IAmBlD,UAAU;IAIV,UAAU;IAQV,YAAY,CAAC,GAAG,EAAE,aAAa;CAYlC"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/RightPanelStore.d.ts b/types/UI/Store/RightPanelStore/RightPanelStore.d.ts new file mode 100644 index 0000000..e6eb117 --- /dev/null +++ b/types/UI/Store/RightPanelStore/RightPanelStore.d.ts @@ -0,0 +1,28 @@ +import { IOptionProps, TabId } from "@blueprintjs/core"; +import { Singleton } from "../../../Common/Singleton"; +import { Board } from "../../../DatabaseServices/Entity/Board"; +import { DrillingStore } from "./DrillingStore"; +import { LightStore } from "./LightStore"; +import { ModelingStore } from "./ModelingStore"; +import { SealingStore } from "./SealingStore"; +import { Modeling2Store } from "./Modeling2Store"; +import { IKnifeProps } from "../BoardInterface"; +export declare class RightPanelStore extends Singleton { + m_TabId: TabId; + m_IsShow: boolean; + currentBoard: Board; + currentTemplateIndex: number; + templateParamInputRefs: HTMLInputElement[]; + modelingStore: ModelingStore; + lightStore: LightStore; + sealingStore: SealingStore; + drillingStore: DrillingStore; + modeling2Store: Modeling2Store; + modeling3Store: Modeling2Store; + knifeMap: Map; + constructor(); + templateParamInputFocus: (keyword: string) => void; +} +//# sourceMappingURL=RightPanelStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/RightPanelStore.d.ts.map b/types/UI/Store/RightPanelStore/RightPanelStore.d.ts.map new file mode 100644 index 0000000..6e7e078 --- /dev/null +++ b/types/UI/Store/RightPanelStore/RightPanelStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"RightPanelStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/RightPanelStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;IAE9B,OAAO,EAAE,KAAK,CAAoB;IAClC,QAAQ,UAAS;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,gBAAgB,EAAE,CAAM;IAC5D,aAAa,gBAAuB;IACpC,UAAU,aAAoB;IAC9B,YAAY,eAAsB;IAClC,aAAa,gBAAuB;IACpC,cAAc,iBAAwB;IACtC,cAAc,iBAAwB;IACtC,QAAQ;gBAA6C,WAAW;OAAQ;;IAkBxE,uBAAuB,YAAa,MAAM,UAOxC;CACL"} \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/SealingStore.d.ts b/types/UI/Store/RightPanelStore/SealingStore.d.ts new file mode 100644 index 0000000..8e460de --- /dev/null +++ b/types/UI/Store/RightPanelStore/SealingStore.d.ts @@ -0,0 +1,11 @@ +import { BoardEdgesEditor } from "./BoardEdgesEditor"; +export declare class SealingStore extends BoardEdgesEditor { + highSizes: string[]; + InitData(): Promise; + protected InitCurve(): void; + protected ShowToaster(): void; + private _dataMap; + protected ParseData(): void; + protected WriteData(): Promise; +} +//# sourceMappingURL=SealingStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/RightPanelStore/SealingStore.d.ts.map b/types/UI/Store/RightPanelStore/SealingStore.d.ts.map new file mode 100644 index 0000000..3e2d002 --- /dev/null +++ b/types/UI/Store/RightPanelStore/SealingStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SealingStore.d.ts","sourceRoot":"","sources":["../../../../../src/UI/Store/RightPanelStore/SealingStore.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAoB,MAAM,oBAAoB,CAAC;AAGxE,qBAAa,YAAa,SAAQ,gBAAgB;IAElC,SAAS,EAAE,MAAM,EAAE,CAAuB;IAEhD,QAAQ;IAId,SAAS,CAAC,SAAS;IA4BnB,SAAS,CAAC,WAAW;IAarB,OAAO,CAAC,QAAQ,CAA4C;IAC5D,SAAS,CAAC,SAAS;cAuBH,SAAS;CAc5B"} \ No newline at end of file diff --git a/types/UI/Store/TemplateEditorStore.d.ts b/types/UI/Store/TemplateEditorStore.d.ts new file mode 100644 index 0000000..3372a97 --- /dev/null +++ b/types/UI/Store/TemplateEditorStore.d.ts @@ -0,0 +1,23 @@ +import { ITreeNode } from "@blueprintjs/core"; +import { Singleton } from "../../Common/Singleton"; +import { TemplateRecord } from "../../DatabaseServices/Template/TemplateRecord"; +import { IConfigOption } from "../Components/Board/UserConfig"; +import { INeedUpdateParams } from "../Components/Template/TemplateComponent"; +import { IConfigStore } from "./BoardStore"; +export declare const UNRENDERPARS: string[]; +export declare class TempalteEditorStore extends Singleton implements IConfigStore { + configName: string; + configsNames: string[]; + Template: TemplateRecord; + params: INeedUpdateParams[]; + currentParamIndex: number; + usedParamNames: Set; + actionNodes: ITreeNode[]; + actionIndex: number; + InitParams(): void; + InitOption(): void; + UpdateOption(cof: IConfigOption): void; + SaveConfig(): IConfigOption; + WriteParamsToTemplate(): Promise; +} +//# sourceMappingURL=TemplateEditorStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/TemplateEditorStore.d.ts.map b/types/UI/Store/TemplateEditorStore.d.ts.map new file mode 100644 index 0000000..7b694ee --- /dev/null +++ b/types/UI/Store/TemplateEditorStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TemplateEditorStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/TemplateEditorStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,OAAO,EAA4B,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,eAAO,MAAM,YAAY,UAAuC,CAAC;AAEjE,qBAAa,mBAAoB,SAAQ,SAAU,YAAW,YAAY;IAE1D,UAAU,SAAQ;IAClB,YAAY,EAAE,MAAM,EAAE,CAAM;IACxC,QAAQ,EAAE,cAAc,CAAC;IAEb,MAAM,EAAE,iBAAiB,EAAE,CAAM;IACjC,iBAAiB,EAAE,MAAM,CAAC;IACtC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC5B,WAAW,EAAE,SAAS,EAAE,CAAM;IAC1C,WAAW,SAAK;IAChB,UAAU;IAkBV,UAAU;IAIV,YAAY,CAAC,GAAG,EAAE,aAAa;IA4B/B,UAAU;IAQJ,qBAAqB;CAgB9B"} \ No newline at end of file diff --git a/types/UI/Store/TextureStore.d.ts b/types/UI/Store/TextureStore.d.ts new file mode 100644 index 0000000..c829577 --- /dev/null +++ b/types/UI/Store/TextureStore.d.ts @@ -0,0 +1,21 @@ +import { ObjectId } from "../../DatabaseServices/ObjectId"; +import { TextureTableRecord } from "../../DatabaseServices/Texture"; +export declare class TextureStore { + use: import("mobx").IObservableValue; + warpS: import("mobx").IObservableValue; + wrapT: import("mobx").IObservableValue; + repeatX: import("mobx").IObservableValue; + repeatY: import("mobx").IObservableValue; + textureImg: string; + rotation: import("mobx").IObservableValue; + textureId: ObjectId; + autorunFun: Function; + constructor(); + startObserver(): void; + dispose(): void; + InitStore(textureId?: ObjectId | TextureTableRecord, isUse?: boolean): void; + private updateing; + UpdateStore(textureId: ObjectId | TextureTableRecord): void; + UpdateEvent(): void; +} +//# sourceMappingURL=TextureStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/TextureStore.d.ts.map b/types/UI/Store/TextureStore.d.ts.map new file mode 100644 index 0000000..a2cadd2 --- /dev/null +++ b/types/UI/Store/TextureStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TextureStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/TextureStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,qBAAa,YAAY;IAErB,GAAG,2CAAwB;IAC3B,KAAK,4DAA0C;IAC/C,KAAK,4DAA0C;IAC/C,OAAO,0CAAqB;IAC5B,OAAO,0CAAqB;IAChB,UAAU,SAAM;IAC5B,QAAQ,0CAAqB;IAC7B,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;;IAIrB,aAAa;IAab,OAAO;IAIP,SAAS,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,kBAAkB,EAAE,KAAK,GAAE,OAAc;IAoB1E,OAAO,CAAC,SAAS,CAAS;IAC1B,WAAW,CAAC,SAAS,EAAE,QAAQ,GAAG,kBAAkB;IA6BpD,WAAW;CA0Bd"} \ No newline at end of file diff --git a/types/UI/Store/TopPanelStore.d.ts b/types/UI/Store/TopPanelStore.d.ts new file mode 100644 index 0000000..fe40cbd --- /dev/null +++ b/types/UI/Store/TopPanelStore.d.ts @@ -0,0 +1,39 @@ +import { Singleton } from "../../Common/Singleton"; +import { IFileInfo } from "../../DatabaseServices/FileServer"; +export interface ICloudInfo { + zone_size: string; + left_size: string; + used_size: string; + used_percentage: string; +} +export interface IDealerInfo { + show_pic: string; + show_phone: string; + show_text: string; +} +export declare class TopPanelStore extends Singleton { + m_FileManageOpen: boolean; + m_FileList: IFileInfo[]; + isLogin: boolean; + openRegist: boolean; + openMain: boolean; + cloudInfo: { + zone_size: string; + left_size: string; + used_size: string; + used_percentage: string; + }; + userName: string; + editoring: boolean; + dealerInfo: IDealerInfo; + canUseRender: boolean; + canUse2to3: boolean; + canKJLImport: boolean; + canKJLExport: boolean; + constructor(); + UpdateFileList(): Promise; + /**更新云盘信息 */ + UpdateClound(): Promise; + onToggleTheme(): void; +} +//# sourceMappingURL=TopPanelStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/TopPanelStore.d.ts.map b/types/UI/Store/TopPanelStore.d.ts.map new file mode 100644 index 0000000..737fdac --- /dev/null +++ b/types/UI/Store/TopPanelStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"TopPanelStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/TopPanelStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,MAAM,WAAW,UAAU;IAEvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAExB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAc,SAAQ,SAAS;IAE5B,gBAAgB,EAAE,OAAO,CAAS;IAElC,UAAU,EAAE,SAAS,EAAE,CAAM;IAC7B,OAAO,UAAS;IAChB,UAAU,UAAS;IACnB,QAAQ,UAAQ;IAChB,SAAS;;;;;MAKnB;IACU,QAAQ,SAAM;IACd,SAAS,UAAS;IAClB,UAAU,EAAE,WAAW,CAAC;IACpC,YAAY,UAAS;IACrB,UAAU,UAAS;IACnB,YAAY,UAAS;IACrB,YAAY,UAAS;;IAgCf,cAAc;IAWpB,YAAY;IACN,YAAY;IA6BlB,aAAa;CAGhB"} \ No newline at end of file diff --git a/types/UI/Store/UpdateBoardInfoStore.d.ts b/types/UI/Store/UpdateBoardInfoStore.d.ts new file mode 100644 index 0000000..3e40f93 --- /dev/null +++ b/types/UI/Store/UpdateBoardInfoStore.d.ts @@ -0,0 +1,19 @@ +import { BoardStore } from "./BoardStore"; +import { IUpdateBoardInfosOption } from "../Components/Board/UpdateBoardInfointerface"; +import { IConfigOption } from "../Components/Board/UserConfig"; +export declare class UpdateBoardInfosStore extends BoardStore { + m_Option: IUpdateBoardInfosOption; + nameOptionMap: Map; + currentBoardName: string; + isSelectAllDrill: boolean; + isSelectAllSealed: boolean; + constructor(); + GetDefaultOption(): IUpdateBoardInfosOption; + InitOption(): void; + UpdateCurrentOption(): void; + UpdateBoardName(name?: string): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; +} +export declare const updateBoardInfoStore: UpdateBoardInfosStore; +//# sourceMappingURL=UpdateBoardInfoStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/UpdateBoardInfoStore.d.ts.map b/types/UI/Store/UpdateBoardInfoStore.d.ts.map new file mode 100644 index 0000000..af1d078 --- /dev/null +++ b/types/UI/Store/UpdateBoardInfoStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UpdateBoardInfoStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/UpdateBoardInfoStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AAIvF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,qBAAa,qBAAsB,SAAQ,UAAU;IAErC,QAAQ,EAAE,uBAAuB,CAAkC;IACnE,aAAa,uCAA8C;IAC3D,gBAAgB,SAAM;IACtB,gBAAgB,UAAQ;IACxB,iBAAiB,UAAQ;;IAMrC,gBAAgB,IAAI,uBAAuB;IAU3C,UAAU;IAiDV,mBAAmB;IAKnB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM;IAM7B,UAAU;IAQV,YAAY,CAAC,GAAG,EAAE,aAAa;CAkBlC;AAED,eAAO,MAAM,oBAAoB,uBAA8B,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/UserConfigStore.d.ts b/types/UI/Store/UserConfigStore.d.ts new file mode 100644 index 0000000..eecfccb --- /dev/null +++ b/types/UI/Store/UserConfigStore.d.ts @@ -0,0 +1,46 @@ +import { Singleton } from "../../Common/Singleton"; +import { BoardModalType } from "../Components/Board/BoardModal"; +import { IConfigOption } from "../Components/Board/UserConfig"; +import { IConfigStore } from "./BoardStore"; +import { AnyObject } from "./BoardInterface"; +import { IndexedDbStore } from "../../IndexedDb/IndexedDbStore"; +interface ISaveOption { + isInit?: boolean; + isCheckName?: boolean; + toaster?: boolean; +} +export declare enum EZengZhiBaoId { + D2ToD3 = "13", + KJLIMport = "17", + KJLExport = "20" +} +export declare class UserConfigStore extends Singleton { + readConfigs: Set; + InitConfigs(configs: AnyObject, type: string): Promise; + InitDrillConfig(): Promise; + InitUpdateBoardInfoConfigs(): Promise; + InitWinerackConfig(): Promise; + InitUserConfig(): Promise; + InitBBSTabIndex(): Promise; + /**处理用户登陆后的信息 */ + InitUserData(): Promise; + GetConfig(type: BoardModalType): Promise; + private ChangeDrillRuleMap; + GetAllConfigs(key: BoardModalType | string, isChangeRuleMap?: boolean): Promise | undefined>; + SaveConfig(type: BoardModalType, store: IConfigStore, option?: ISaveOption): Promise; + DeleteConfig(type: BoardModalType, store: IConfigStore): Promise; + UpdateBoardOption: (k: string, type: BoardModalType, store: IConfigStore) => Promise; + private UpdateUserConfig; + CacheAllConfigs(): Promise; + CheckCanUseRender(): Promise; + CheckZengZhiBao(arr: { + pricing_class_id: string; + }[]): Promise; + GetUserConfigNames(): Promise; + UploadUserConfigNames(dbStore: IndexedDbStore): Promise; + OpenCacheFile(): Promise; + ClearUserData(): void; +} +export declare const userConfigStore: UserConfigStore; +export {}; +//# sourceMappingURL=UserConfigStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/UserConfigStore.d.ts.map b/types/UI/Store/UserConfigStore.d.ts.map new file mode 100644 index 0000000..ed9343d --- /dev/null +++ b/types/UI/Store/UserConfigStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"UserConfigStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/UserConfigStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,OAAO,EAAE,cAAc,EAAa,MAAM,gCAAgC,CAAC;AAuB3E,UAAU,WAAW;IAEjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AACD,oBAAY,aAAa;IAErB,MAAM,OAAO;IACb,SAAS,OAAO;IAChB,SAAS,OAAO;CACnB;AAED,qBAAa,eAAgB,SAAQ,SAAS;IAE1C,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa;IAC/B,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM;IAiB5C,eAAe;IAYf,0BAA0B;IAY1B,kBAAkB;IAQlB,cAAc;IAoCd,eAAe;IAQrB,gBAAgB;IACV,YAAY;IA2BZ,SAAS,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgBpE,OAAO,CAAC,kBAAkB;IAapB,aAAa,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,eAAe,UAAO,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IA6BlH,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,GAAE,WAAgB;IA+E9E,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY;IA0D5D,iBAAiB,MAAa,MAAM,QAAQ,cAAc,SAAS,YAAY,mBAW7E;IACF,OAAO,CAAC,gBAAgB;IAOlB,eAAe;IA2Cf,iBAAiB;IAKjB,eAAe,CAAC,GAAG,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;KAAE,EAAE;IAwBpD,kBAAkB;IAclB,qBAAqB,CAAC,OAAO,EAAE,cAAc;IAS7C,aAAa;IAwBnB,aAAa;CAahB;AAED,eAAO,MAAM,eAAe,iBAAmD,CAAC"} \ No newline at end of file diff --git a/types/UI/Store/WineRackInterface.d.ts b/types/UI/Store/WineRackInterface.d.ts new file mode 100644 index 0000000..74071bd --- /dev/null +++ b/types/UI/Store/WineRackInterface.d.ts @@ -0,0 +1,60 @@ +import { IBaseOption } from "./BoardInterface"; +import { EBoardKeyList } from "../../Common/BoardKeyList"; +export declare enum EWineRackType { + Oblique = 0, + Upright = 1 +} +export declare enum EWRackArrayType { + ByWidth = 0, + ByCount = 1, + Fixed = 2 +} +/**铺满方式 */ +export declare enum EFullType { + ByHeight = 0, + ByWidth = 1, + Symmetry = 2 +} +/**高度优先时靠左还是靠右 */ +export declare enum EFullDir { + Left = 0, + Right = 1 +} +export interface IWineRackOption extends IBaseOption { + type: EWineRackType; + arrayType: EWRackArrayType; + fullType: EFullType; + isFull: boolean; + fullDir: EFullDir; + isLock: boolean; + heightCount: number; + widthCount: number; + isTotalDepth: boolean; + depth: number; + calcDepth: string; + gripWidth: number; + boardThick: number; + grooveWidthAdd: number; + leftEdge: number; + rightEdge: number; + topEdge: number; + bottomEdge: number; + frontCut: number; + leftCut: number; + rightCut: number; + topCut: number; + grooveLengthAdd: number; + isDrawLy: boolean; + isDrawVer: boolean; + brThick2: number; +} +export interface IR2WROption { + depth: number; + addLen: number; + knifeRadius: number; + [EBoardKeyList.UpSealed]: number; + [EBoardKeyList.DownSealed]: number; + [EBoardKeyList.LeftSealed]: number; + [EBoardKeyList.RightSealed]: number; +} +//# sourceMappingURL=WineRackInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/WineRackInterface.d.ts.map b/types/UI/Store/WineRackInterface.d.ts.map new file mode 100644 index 0000000..f7ba618 --- /dev/null +++ b/types/UI/Store/WineRackInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WineRackInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/WineRackInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,oBAAY,aAAa;IAErB,OAAO,IAAI;IACX,OAAO,IAAI;CACd;AAED,oBAAY,eAAe;IAEvB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,KAAK,IAAI;CACZ;AAED,UAAU;AACV,oBAAY,SAAS;IAEjB,QAAQ,IAAI;IACZ,OAAO,IAAI;IACX,QAAQ,IAAI;CACf;AAED,iBAAiB;AACjB,oBAAY,QAAQ;IAEhB,IAAI,IAAI;IACR,KAAK,IAAI;CACZ;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,QAAQ,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAExB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACnC,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CACvC"} \ No newline at end of file diff --git a/types/UI/Store/WineRackStore.d.ts b/types/UI/Store/WineRackStore.d.ts new file mode 100644 index 0000000..ccdd0b2 --- /dev/null +++ b/types/UI/Store/WineRackStore.d.ts @@ -0,0 +1,13 @@ +import { TemplateWineRackRecord } from "../../DatabaseServices/Template/ProgramTempate/TemplateWineRackRecord"; +import { IConfigOption } from "../Components/Board/UserConfig"; +import { BoardStore } from "./BoardStore"; +import { IWineRackOption } from "./WineRackInterface"; +export declare class WineRackStore extends BoardStore { + EditorTemplate: TemplateWineRackRecord; + m_Option: IWineRackOption; + HasInvailValue(): boolean; + InitOption(): void; + SaveConfig(): IConfigOption; + UpdateOption(cof: IConfigOption): void; +} +//# sourceMappingURL=WineRackStore.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/WineRackStore.d.ts.map b/types/UI/Store/WineRackStore.d.ts.map new file mode 100644 index 0000000..5fccbc3 --- /dev/null +++ b/types/UI/Store/WineRackStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WineRackStore.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/WineRackStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAE/G,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qBAAa,aAAc,SAAQ,UAAU,CAAC,eAAe,CAAC;IAE1D,cAAc,EAAE,sBAAsB,CAAC;IAC3B,QAAQ,EAAE,eAAe,CAA4C;IACjF,cAAc;IAId,UAAU;IAKV,UAAU;IAOV,YAAY,CAAC,GAAG,EAAE,aAAa;CAMlC"} \ No newline at end of file diff --git a/types/UI/Store/drillInterface.d.ts b/types/UI/Store/drillInterface.d.ts new file mode 100644 index 0000000..268675e --- /dev/null +++ b/types/UI/Store/drillInterface.d.ts @@ -0,0 +1,53 @@ +import { IBaseOption } from "./BoardInterface"; +export declare enum SpacingType { + Multiple32 = "32", + EqualDist = "equal" +} +/** + *勿随意更改属性名,若更改,需更改对应UI模态框的属性和检验方法的key + * + */ +export interface DrillingOption extends IBaseOption { + startDist: number; + endDist: number; + name: string; + originDist: number; + retDist: number; + isEqualProportion: boolean; + spacing: SpacingType; + count: number; + isFromBack: boolean; + isForceDiv: boolean; + notGangDist: number; + pxlOffset: number; + collsionDist: number; + haveDist: boolean; + dist2To1Dist: number; + tIsOffset: boolean; + tIsChange: boolean; + tHoleOffset: number; + tYmjRad: number; + isDrawWood: boolean; + wbHoleRad: number; + wbHoleDepth: number; + wsHoleRad: number; + wsHoleLength: number; + wdepth: number; + pxlRad: number; + pxlDepth: number; + pxlDepthExpr: string; + ljgRad: number; + ljgLength: number; + ljgLengthExpr: string; + ymjRad: number; + ymjDepth: number; + ymjDepthExpr: string; + ljgPos: string; + woodPinPos: string; + ymjPos: string; + canSameType: boolean; + useTemp: boolean; + tempId: string; + tempDirId: string; +} +//# sourceMappingURL=drillInterface.d.ts.map \ No newline at end of file diff --git a/types/UI/Store/drillInterface.d.ts.map b/types/UI/Store/drillInterface.d.ts.map new file mode 100644 index 0000000..ebbff69 --- /dev/null +++ b/types/UI/Store/drillInterface.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"drillInterface.d.ts","sourceRoot":"","sources":["../../../../src/UI/Store/drillInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,oBAAY,WAAW;IAEnB,UAAU,OAAO;IACjB,SAAS,UAAU;CACtB;AACD;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IAE/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB"} \ No newline at end of file diff --git a/types/WebCADView/WebCADView.d.ts b/types/WebCADView/WebCADView.d.ts new file mode 100644 index 0000000..afc7423 --- /dev/null +++ b/types/WebCADView/WebCADView.d.ts @@ -0,0 +1,49 @@ +import * as THREE from 'three'; +import { CameraControls } from '../Editor/CameraControls'; +import { Viewer } from '../GraphicsSystem/Viewer'; +interface LoadFileRes { + State: boolean; + Obj?: Object; +} +/** + * 只允许拥有一个view的实例. 暂时不支持多个view在一个页面. + */ +export declare class WebCADView { + m_EdgeEntitytList: Array; + m_SolidEntityList: Array; + m_Viewer: Viewer; + m_CamerCtrl: CameraControls; + /** + * Creates an instance of WebCADView. + * + * 构造函数,提供一个dom节点.. + * + * @param {HTMLElement} domNode + * @memberof WebCADView + */ + constructor(domNode: HTMLElement); + WriteEdge(obj: THREE.Object3D, color?: number): void; + /** + * + * 加载场景 + * + * @param {string} jsonFile + * @memberof WebCADView + */ + Load(jsonFile: string, pathUrl: string): Promise; + /** + * 加载json + * + * @param {string} jsonFile + * @returns {Promise} + * @memberof WebCADView + */ + LoadJson(jsonFile: string): Promise; + ZoomAll(): void; + ViewToFont(): void; + ViewToTop(): void; + SolidShow(): void; + EdgeShow(): void; +} +export {}; +//# sourceMappingURL=WebCADView.d.ts.map \ No newline at end of file diff --git a/types/WebCADView/WebCADView.d.ts.map b/types/WebCADView/WebCADView.d.ts.map new file mode 100644 index 0000000..626173e --- /dev/null +++ b/types/WebCADView/WebCADView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"WebCADView.d.ts","sourceRoot":"","sources":["../../../src/WebCADView/WebCADView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAUlD,UAAU,WAAW;IAEjB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,UAAU;IAEnB,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAM;IAClD,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAM;IAE9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,cAAc,CAAC;IAC5B;;;;;;;OAOG;gBACS,OAAO,EAAE,WAAW;IAShC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM;IAsB7C;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAuB5C;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuChD,OAAO;IAKP,UAAU;IAKV,SAAS;IAOT,SAAS;IAWT,QAAQ;CAWX"} \ No newline at end of file diff --git a/types/api.d.ts b/types/api.d.ts new file mode 100644 index 0000000..5cd4611 --- /dev/null +++ b/types/api.d.ts @@ -0,0 +1,12 @@ +export * from "./DatabaseServices/CADFiler"; +export * from "./DatabaseServices/Entity/Arc"; +export * from "./DatabaseServices/Entity/Circle"; +export * from "./DatabaseServices/Entity/Line"; +export * from "./DatabaseServices/Entity/Polyline"; +export * from "./GraphicsSystem/BoolOperateUtils"; +export { FeedingToolPath } from "./GraphicsSystem/ToolPath/FeedingToolPath"; +export * from "./Add-on/testEntity/SimplifyPolyline"; +export { IsRect } from "./Common/CurveUtils"; +export * from "./GraphicsSystem/ToolPath/VKnifToolPath"; +export * from "./Production/Product"; +//# sourceMappingURL=api.d.ts.map \ No newline at end of file diff --git a/types/api.d.ts.map b/types/api.d.ts.map new file mode 100644 index 0000000..a32465d --- /dev/null +++ b/types/api.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,sBAAsB,CAAC"} \ No newline at end of file diff --git a/types/csg/core/CAG.d.ts b/types/csg/core/CAG.d.ts new file mode 100644 index 0000000..58bb60d --- /dev/null +++ b/types/csg/core/CAG.d.ts @@ -0,0 +1,25 @@ +import { Vector3 } from "three"; +import { CSG } from "./CSG"; +import { Polygon } from "./math/Polygon3"; +import { Side } from "./math/Side"; +import { Vector2D } from "./math/Vector2"; +import { Vector3D } from "./math/Vector3"; +/** + * Class CAG + * Holds a solid area geometry like CSG but 2D. + * Each area consists of a number of sides. + * Each side is a line between 2 points. + */ +export declare class CAG { + sides: Side[]; + isCanonicalized: boolean; + constructor(sides?: Side[]); + fromPoints(pts: Vector3[]): this; + flipped(): CAG; + getBounds(): Vector2D[]; + canonicalized(): CAG; + extrude(offsetVector: Vector3D): CSG; + private toCSGWall; + toPolygons(bottom?: boolean): Polygon[]; +} +//# sourceMappingURL=CAG.d.ts.map \ No newline at end of file diff --git a/types/csg/core/CAG.d.ts.map b/types/csg/core/CAG.d.ts.map new file mode 100644 index 0000000..56c292e --- /dev/null +++ b/types/csg/core/CAG.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CAG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/CAG.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C;;;;;GAKG;AACH,qBAAa,GAAG;IAGO,KAAK,EAAE,IAAI,EAAE;IADhC,eAAe,EAAE,OAAO,CAAS;gBACd,KAAK,GAAE,IAAI,EAAO;IAIrC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBhC,OAAO;IAOP,SAAS;IAkBT,aAAa,IAAI,GAAG;IAOpB,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,GAAG;IAcpC,OAAO,CAAC,SAAS;IAMjB,UAAU,CAAC,MAAM,UAAQ,GAAG,OAAO,EAAE;CA+BxC"} \ No newline at end of file diff --git a/types/csg/core/CAGFactories.d.ts b/types/csg/core/CAGFactories.d.ts new file mode 100644 index 0000000..c4530a3 --- /dev/null +++ b/types/csg/core/CAGFactories.d.ts @@ -0,0 +1,12 @@ +import { CAG } from "./CAG"; +import { CSG } from "./CSG"; +import { Vector2D } from "./math/Vector2"; +export declare function fromFakeCSG(csg: CSG): CAG; +/** Construct a CAG from a list of points (a polygon). + * Like fromPoints() but does not check if the result is a valid polygon. + * The points MUST rotate counter clockwise. + * The points can define a convex or a concave polygon. + * The polygon must not self intersect. + */ +export declare function fromPointsNoCheck(points: Vector2D[]): CAG; +//# sourceMappingURL=CAGFactories.d.ts.map \ No newline at end of file diff --git a/types/csg/core/CAGFactories.d.ts.map b/types/csg/core/CAGFactories.d.ts.map new file mode 100644 index 0000000..5efbf27 --- /dev/null +++ b/types/csg/core/CAGFactories.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CAGFactories.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/CAGFactories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK1C,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,OAMnC;AAGD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAazD"} \ No newline at end of file diff --git a/types/csg/core/CSG.d.ts b/types/csg/core/CSG.d.ts new file mode 100644 index 0000000..d1bd1e1 --- /dev/null +++ b/types/csg/core/CSG.d.ts @@ -0,0 +1,95 @@ +import { Matrix4 } from "three"; +import { Polygon } from "./math/Polygon3"; +import { Vector3D } from "./math/Vector3"; +/** Class CSG + * Holds a binary space partition tree representing a 3D solid. Two solids can + * be combined using the `union()`, `subtract()`, and `intersect()` methods. + * @constructor + */ +export declare class CSG { + polygons: Polygon[]; + /** # 是否已精简重复点 */ + isCanonicalized: boolean; + /** # 是否已合并轮廓 */ + isRetesselated: boolean; + cachedBoundingBox: Vector3D[]; + constructor(polygons?: Polygon[]); + /** + * Return a new CSG solid representing the space in either this solid or + * in the given solids. Neither this solid nor the given solids are modified. + * @param {CSG[]} csg - list of CSG objects + * @returns {CSG} new CSG object + * @example + * let C = A.union(B) + * @example + * +-------+ +-------+ + * | | | | + * | A | | | + * | +--+----+ = | +----+ + * +----+--+ | +----+ | + * | B | | | + * | | | | + * +-------+ +-------+ + */ + union(csg: CSG | CSG[]): CSG; + unionSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG; + unionForNonIntersecting(csg: CSG): CSG; + /** + * Return a new CSG solid representing space in this solid but + * not in the given solids. Neither this solid nor the given solids are modified. + * @returns new CSG object + * @example + * let C = A.subtract(B) + * @example + * +-------+ +-------+ + * | | | | + * | A | | | + * | +--+----+ = | +--+ + * +----+--+ | +----+ + * | B | + * | | + * +-------+ + */ + subtract(csg: CSG | CSG[]): CSG; + subtractSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG; + /** + * Return a new CSG solid representing space in both this solid and + * in the given solids. Neither this solid nor the given solids are modified. + * let C = A.intersect(B) + * @returns new CSG object + * @example + * +-------+ + * | | + * | A | + * | +--+----+ = +--+ + * +----+--+ | +--+ + * | B | + * | | + * +-------+ + */ + intersect(csg: CSG | CSG[]): CSG; + intersectSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG; + /** + * Return a new CSG solid with solid and empty space switched. + * This solid is not modified. + */ + invert(): CSG; + transform1(matrix4x4: Matrix4): CSG; + /** + * Return a new CSG solid that is transformed using the given Matrix. + * Several matrix transformations can be combined before transforming this solid. + * @param {CSG.Matrix4x4} matrix4x4 - matrix to be applied + * @returns {CSG} new CSG object + * @example + * var m = new CSG.Matrix4x4() + * m = m.multiply(CSG.Matrix4x4.rotationX(40)) + * m = m.multiply(CSG.Matrix4x4.translation([-.5, 0, 0])) + * let B = A.transform(m) + */ + transform(matrix4x4: Matrix4): this; + canonicalized(): CSG; + reTesselated(): CSG; + mayOverlap(csg: CSG): boolean; + toTriangles(): Polygon[]; +} +//# sourceMappingURL=CSG.d.ts.map \ No newline at end of file diff --git a/types/csg/core/CSG.d.ts.map b/types/csg/core/CSG.d.ts.map new file mode 100644 index 0000000..084afb8 --- /dev/null +++ b/types/csg/core/CSG.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"CSG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/CSG.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C;;;;GAIG;AACH,qBAAa,GAAG;IAOO,QAAQ,EAAE,OAAO,EAAE;IALtC,iBAAiB;IACjB,eAAe,EAAE,OAAO,CAAS;IACjC,gBAAgB;IAChB,cAAc,EAAE,OAAO,CAAS;IAChC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;gBACX,QAAQ,GAAE,OAAO,EAAO;IAG3C;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAmB5B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAwBlE,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAStC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAgB/B,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAerE;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAgBhC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAiBtE;;;OAGG;IACH,MAAM,IAAI,GAAG;IAOb,UAAU,CAAC,SAAS,EAAE,OAAO;IAY7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAyCnC,aAAa;IAKb,YAAY;IAOZ,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAgB7B,WAAW,IAAI,OAAO,EAAE;CAsB3B"} \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory.d.ts b/types/csg/core/FuzzyFactory.d.ts new file mode 100644 index 0000000..2927530 --- /dev/null +++ b/types/csg/core/FuzzyFactory.d.ts @@ -0,0 +1,7 @@ +export declare class FuzzyFactory { + lookuptable: {}; + multiplier: number; + constructor(numdimensions: number, tolerance: number); + lookupOrCreate(els: number[], object: T): T; +} +//# sourceMappingURL=FuzzyFactory.d.ts.map \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory.d.ts.map b/types/csg/core/FuzzyFactory.d.ts.map new file mode 100644 index 0000000..de6b3d6 --- /dev/null +++ b/types/csg/core/FuzzyFactory.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FuzzyFactory.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/FuzzyFactory.ts"],"names":[],"mappings":"AAaA,qBAAa,YAAY;IAErB,WAAW,EAAE,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;gBACP,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAWpD,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CAkCjD"} \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory2d.d.ts b/types/csg/core/FuzzyFactory2d.d.ts new file mode 100644 index 0000000..e3ec12b --- /dev/null +++ b/types/csg/core/FuzzyFactory2d.d.ts @@ -0,0 +1,10 @@ +import { FuzzyFactory } from "./FuzzyFactory"; +import { Side } from "./math/Side"; +import { Vertex2D } from "./math/Vertex2"; +export declare class FuzzyCAGFactory { + vertexfactory: FuzzyFactory; + constructor(); + getVertex(sourcevertex: Vertex2D): Vertex2D; + getSide(sourceside: Side): Side; +} +//# sourceMappingURL=FuzzyFactory2d.d.ts.map \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory2d.d.ts.map b/types/csg/core/FuzzyFactory2d.d.ts.map new file mode 100644 index 0000000..0cd2b5f --- /dev/null +++ b/types/csg/core/FuzzyFactory2d.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FuzzyFactory2d.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/FuzzyFactory2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,eAAe;IAExB,aAAa,eAA4B;;IAGzC,SAAS,CAAC,YAAY,EAAE,QAAQ;IAOhC,OAAO,CAAC,UAAU,EAAE,IAAI;CAM3B"} \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory3d.d.ts b/types/csg/core/FuzzyFactory3d.d.ts new file mode 100644 index 0000000..3c300e2 --- /dev/null +++ b/types/csg/core/FuzzyFactory3d.d.ts @@ -0,0 +1,13 @@ +import { FuzzyFactory } from "./FuzzyFactory"; +import { Polygon } from "./math/Polygon3"; +import { Plane } from "./math/Plane"; +import { Vertex3D } from "./math/Vertex3"; +export declare class FuzzyCSGFactory { + vertexfactory: FuzzyFactory; + planefactory: FuzzyFactory; + constructor(); + getVertex(sourcevertex: Vertex3D): Vertex3D; + getPlane(sourceplane: Plane): Plane; + getPolygon(sourcePolygon: Polygon, outputPolygon?: Polygon): Polygon; +} +//# sourceMappingURL=FuzzyFactory3d.d.ts.map \ No newline at end of file diff --git a/types/csg/core/FuzzyFactory3d.d.ts.map b/types/csg/core/FuzzyFactory3d.d.ts.map new file mode 100644 index 0000000..1edb59d --- /dev/null +++ b/types/csg/core/FuzzyFactory3d.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FuzzyFactory3d.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/FuzzyFactory3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,eAAe;IAExB,aAAa,eAA4B;IACzC,YAAY,eAA4B;;IAGxC,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,QAAQ;IAO3C,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK;IAOnC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,UAAgB,GAAG,OAAO;CA2B7E"} \ No newline at end of file diff --git a/types/csg/core/Geometry2CSG.d.ts b/types/csg/core/Geometry2CSG.d.ts new file mode 100644 index 0000000..44e6ce2 --- /dev/null +++ b/types/csg/core/Geometry2CSG.d.ts @@ -0,0 +1,7 @@ +import { BufferGeometry, Geometry, Vector3 } from "three"; +import { CSG } from "./CSG"; +import { Vector3D } from "./math/Vector3"; +export declare function Geometry2CSG(geometry: Geometry | BufferGeometry): CSG; +export declare function CSG2Geometry(csg: CSG): Geometry; +export declare function Vector3DToVector3(v: Vector3D): Vector3; +//# sourceMappingURL=Geometry2CSG.d.ts.map \ No newline at end of file diff --git a/types/csg/core/Geometry2CSG.d.ts.map b/types/csg/core/Geometry2CSG.d.ts.map new file mode 100644 index 0000000..b1979c1 --- /dev/null +++ b/types/csg/core/Geometry2CSG.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Geometry2CSG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/Geometry2CSG.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,QAAQ,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,GAAG,CAkCrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAmC/C;AAOD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,CAGtD"} \ No newline at end of file diff --git a/types/csg/core/constants.d.ts b/types/csg/core/constants.d.ts new file mode 100644 index 0000000..f4ce794 --- /dev/null +++ b/types/csg/core/constants.d.ts @@ -0,0 +1,8 @@ +export declare const _CSGDEBUG = false; +/** Epsilon used during determination of near zero distances. + * @default + */ +export declare const EPS = 0.00001; +export declare let staticTag: number; +export declare const getTag: () => number; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/types/csg/core/constants.d.ts.map b/types/csg/core/constants.d.ts.map new file mode 100644 index 0000000..63111b9 --- /dev/null +++ b/types/csg/core/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAQ,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,GAAG,UAAO,CAAC;AAGxB,eAAO,IAAI,SAAS,QAAI,CAAC;AACzB,eAAO,MAAM,MAAM,cAAoB,CAAC"} \ No newline at end of file diff --git a/types/csg/core/math/IsMirrot.d.ts b/types/csg/core/math/IsMirrot.d.ts new file mode 100644 index 0000000..ab37026 --- /dev/null +++ b/types/csg/core/math/IsMirrot.d.ts @@ -0,0 +1,3 @@ +import { Matrix4 } from "three"; +export declare function IsMirror(mtx: Matrix4): boolean; +//# sourceMappingURL=IsMirrot.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/IsMirrot.d.ts.map b/types/csg/core/math/IsMirrot.d.ts.map new file mode 100644 index 0000000..d3d1ec9 --- /dev/null +++ b/types/csg/core/math/IsMirrot.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"IsMirrot.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/IsMirrot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAKzC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQ9C"} \ No newline at end of file diff --git a/types/csg/core/math/Line2.d.ts b/types/csg/core/math/Line2.d.ts new file mode 100644 index 0000000..8233a6c --- /dev/null +++ b/types/csg/core/math/Line2.d.ts @@ -0,0 +1,15 @@ +import { Vector2D } from "./Vector2"; +/** class Line2D + * Represents a directional line in 2D space + * A line is parametrized by its normal vector (perpendicular to the line, rotated 90 degrees counter clockwise) + * and w. The line passes through the point .times(w). + * Equation: p is on line if normal.dot(p)==w + */ +export declare class Line2D { + normal: Vector2D; + w: number; + constructor(normal: Vector2D, w: number); + direction(): Vector2D; + static fromPoints(p1: Vector2D, p2: Vector2D): Line2D; +} +//# sourceMappingURL=Line2.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Line2.d.ts.map b/types/csg/core/math/Line2.d.ts.map new file mode 100644 index 0000000..1add273 --- /dev/null +++ b/types/csg/core/math/Line2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Line2.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Line2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;GAKG;AACH,qBAAa,MAAM;IAEf,MAAM,EAAE,QAAQ,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;gBACE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM;IASvC,SAAS;IAIT,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;CAU/C"} \ No newline at end of file diff --git a/types/csg/core/math/OrthoNormalBasis.d.ts b/types/csg/core/math/OrthoNormalBasis.d.ts new file mode 100644 index 0000000..97352a2 --- /dev/null +++ b/types/csg/core/math/OrthoNormalBasis.d.ts @@ -0,0 +1,17 @@ +import { Plane } from "./Plane"; +import { Vector2D } from "./Vector2"; +import { Vector3D } from "./Vector3"; +/** class OrthoNormalBasis + * Reprojects points on a 3D plane onto a 2D plane + * or from a 2D plane back onto the 3D plane + */ +export declare class OrthoNormalBasis { + plane: Plane; + v: Vector3D; + u: Vector3D; + planeorigin: Vector3D; + constructor(plane: Plane, rightVector?: Vector3D); + to2D(vec3: Vector3D): Vector2D; + to3D(vec2: Vector2D): Vector3D; +} +//# sourceMappingURL=OrthoNormalBasis.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/OrthoNormalBasis.d.ts.map b/types/csg/core/math/OrthoNormalBasis.d.ts.map new file mode 100644 index 0000000..e044357 --- /dev/null +++ b/types/csg/core/math/OrthoNormalBasis.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OrthoNormalBasis.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/OrthoNormalBasis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AAEH,qBAAa,gBAAgB;IAKN,KAAK,EAAE,KAAK;IAH/B,CAAC,EAAE,QAAQ,CAAC;IACZ,CAAC,EAAE,QAAQ,CAAC;IACZ,WAAW,EAAE,QAAQ,CAAC;gBACH,KAAK,EAAE,KAAK,EAAE,WAAW,GAAE,QAAiD;IAO/F,IAAI,CAAC,IAAI,EAAE,QAAQ;IAKnB,IAAI,CAAC,IAAI,EAAE,QAAQ;CAMtB"} \ No newline at end of file diff --git a/types/csg/core/math/Plane.d.ts b/types/csg/core/math/Plane.d.ts new file mode 100644 index 0000000..9057efd --- /dev/null +++ b/types/csg/core/math/Plane.d.ts @@ -0,0 +1,16 @@ +import { Matrix4 } from "three"; +import { Vector3D } from "./Vector3"; +import { Vertex3D } from "./Vertex3"; +export declare class Plane { + normal: Vector3D; + w: number; + tag: number; + constructor(normal: Vector3D, w: number); + flipped(): Plane; + getTag(): number; + coplanarTo(plane: Plane): boolean; + transform(matrix4x4: Matrix4): Plane; + splitLineBetweenPoints(p1: Vertex3D, p2: Vertex3D): Vertex3D; + static fromVector3Ds(a: Vector3D, b: Vector3D, c: Vector3D): Plane; +} +//# sourceMappingURL=Plane.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Plane.d.ts.map b/types/csg/core/math/Plane.d.ts.map new file mode 100644 index 0000000..d7cb95c --- /dev/null +++ b/types/csg/core/math/Plane.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Plane.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIhC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,qBAAa,KAAK;IAEd,MAAM,EAAE,QAAQ,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;gBACA,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM;IAMvC,OAAO;IAKP,MAAM;IAON,UAAU,CAAC,KAAK,EAAE,KAAK;IAKvB,SAAS,CAAC,SAAS,EAAE,OAAO;IAyB5B,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAG,QAAQ;IAY5D,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ;CAQ7D"} \ No newline at end of file diff --git a/types/csg/core/math/Polygon3.d.ts b/types/csg/core/math/Polygon3.d.ts new file mode 100644 index 0000000..76c7d01 --- /dev/null +++ b/types/csg/core/math/Polygon3.d.ts @@ -0,0 +1,51 @@ +import { Plane } from "./Plane"; +import { Vector3D } from "./Vector3"; +import { Vertex3D } from "./Vertex3"; +import { Matrix4 } from "three"; +export declare enum Type { + CoplanarFront = 0, + CoplanarBack = 1, + Front = 2, + Back = 3, + Spanning = 4 +} +interface SplitPolygonData { + type: Type; + front: Polygon; + back: Polygon; +} +/** Class Polygon + * Represents a convex polygon. The vertices used to initialize a polygon must + * be coplanar and form a convex loop. They do not have to be `Vertex` + * instances but they must behave similarly (duck typing can be used for + * customization). + *
+ * Each convex polygon has a `shared` property, which is shared between all + * polygons that are clones of each other or were split from the same polygon. + * This can be used to define per-polygon properties (such as surface color). + *
+ * The plane of the polygon is calculated from the vertex coordinates if not provided. + * The plane can alternatively be passed as the third argument to avoid calculations. + * + *表示凸多边形。 用于初始化多边形的顶点必须共面并形成凸环。 + *多边形是彼此克隆或从同一多边形分割的多边形。 + *这可用于定义每个多边形属性(例如表面颜色)。 + */ +export declare class Polygon { + vertices: Vertex3D[]; + plane?: Plane; + cachedBoundingSphere: [Vector3D, number]; + cachedBoundingBox: [Vector3D, Vector3D]; + constructor(vertices: Vertex3D[], plane?: Plane); + /** Check whether the polygon is convex. (it should be, otherwise we will get unexpected results)*/ + checkIfConvex(): boolean; + boundingSphere(): [Vector3D, number]; + boundingBox(): Vector3D[]; + flipped(): Polygon; + transform(matrix4x4: Matrix4): Polygon; + splitByPlane(plane: Plane): SplitPolygonData; + static verticesConvex(vertices: Vertex3D[], planenormal: Vector3D): boolean; + static isConvexPoint(prevpoint: Vector3D, point: Vector3D, nextpoint: Vector3D, normal: Vector3D): boolean; +} +export {}; +//# sourceMappingURL=Polygon3.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Polygon3.d.ts.map b/types/csg/core/math/Polygon3.d.ts.map new file mode 100644 index 0000000..2e23938 --- /dev/null +++ b/types/csg/core/math/Polygon3.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Polygon3.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Polygon3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,oBAAY,IAAI;IAEZ,aAAa,IAAI;IACjB,YAAY,IAAI;IAChB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,QAAQ,IAAI;CACf;AAGD,UAAU,gBAAgB;IAEtB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,OAAO;IAIG,QAAQ,EAAE,QAAQ,EAAE;IAAS,KAAK,CAAC,EAAE,KAAK;IAF7D,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrB,QAAQ,EAAE,QAAQ,EAAE,EAAS,KAAK,CAAC,EAAE,KAAK;IAS7D,mGAAmG;IACnG,aAAa,IAAI,OAAO;IAOxB,cAAc;IAed,WAAW,IAAI,QAAQ,EAAE;IAwBzB,OAAO;IASP,SAAS,CAAC,SAAS,EAAE,OAAO;IAa5B,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB;IAiG5C,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ;IAoBjE,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;CAMnG"} \ No newline at end of file diff --git a/types/csg/core/math/Side.d.ts b/types/csg/core/math/Side.d.ts new file mode 100644 index 0000000..e7e1a65 --- /dev/null +++ b/types/csg/core/math/Side.d.ts @@ -0,0 +1,12 @@ +import { Polygon } from "./Polygon3"; +import { Vertex2D } from "./Vertex2"; +export declare class Side { + vertex0: Vertex2D; + vertex1: Vertex2D; + constructor(vertex0: Vertex2D, vertex1: Vertex2D); + toPolygon3D(z0: number, z1: number): Polygon; + flipped(): Side; + length(): number; + static _fromFakePolygon(polygon: Polygon): Side; +} +//# sourceMappingURL=Side.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Side.d.ts.map b/types/csg/core/math/Side.d.ts.map new file mode 100644 index 0000000..a4585bb --- /dev/null +++ b/types/csg/core/math/Side.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Side.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Side.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,qBAAa,IAAI;IAEM,OAAO,EAAE,QAAQ;IAAS,OAAO,EAAE,QAAQ;gBAA3C,OAAO,EAAE,QAAQ,EAAS,OAAO,EAAE,QAAQ;IAC9D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA0BlC,OAAO;IAKP,MAAM;IAMN,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAuClD"} \ No newline at end of file diff --git a/types/csg/core/math/Vector2.d.ts b/types/csg/core/math/Vector2.d.ts new file mode 100644 index 0000000..7d6e684 --- /dev/null +++ b/types/csg/core/math/Vector2.d.ts @@ -0,0 +1,9 @@ +import { Vector3D } from "./Vector3"; +import { Vector2 } from "three"; +export declare class Vector2D extends Vector2 { + toVector3D(z: number): Vector3D; + clone(): this; + normal(): Vector2D; + cross(a: Vector2): number; +} +//# sourceMappingURL=Vector2.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Vector2.d.ts.map b/types/csg/core/math/Vector2.d.ts.map new file mode 100644 index 0000000..2956d8c --- /dev/null +++ b/types/csg/core/math/Vector2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vector2.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Vector2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,qBAAa,QAAS,SAAQ,OAAO;IAGjC,UAAU,CAAC,CAAC,EAAE,MAAM;IAIpB,KAAK;IAKL,MAAM;IAKN,KAAK,CAAC,CAAC,EAAE,OAAO;CAInB"} \ No newline at end of file diff --git a/types/csg/core/math/Vector3.d.ts b/types/csg/core/math/Vector3.d.ts new file mode 100644 index 0000000..49c807e --- /dev/null +++ b/types/csg/core/math/Vector3.d.ts @@ -0,0 +1,10 @@ +import { Vector3 } from "three"; +/** Class Vector3D + * Represents a 3D vector with X, Y, Z coordinates. + */ +export declare class Vector3D extends Vector3 { + clone(): this; + randomNonParallelVector(): Vector3D; + toString(): string; +} +//# sourceMappingURL=Vector3.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Vector3.d.ts.map b/types/csg/core/math/Vector3.d.ts.map new file mode 100644 index 0000000..63b0c4e --- /dev/null +++ b/types/csg/core/math/Vector3.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Vector3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC;;GAEG;AACH,qBAAa,QAAS,SAAQ,OAAO;IAEjC,KAAK;IAKL,uBAAuB;IAcvB,QAAQ;CAYX"} \ No newline at end of file diff --git a/types/csg/core/math/Vertex2.d.ts b/types/csg/core/math/Vertex2.d.ts new file mode 100644 index 0000000..7953e22 --- /dev/null +++ b/types/csg/core/math/Vertex2.d.ts @@ -0,0 +1,9 @@ +import { Vector2D } from "./Vector2"; +export declare class Vertex2D { + tag: any; + pos: Vector2D; + constructor(pos: Vector2D); + toString(): string; + getTag(): any; +} +//# sourceMappingURL=Vertex2.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Vertex2.d.ts.map b/types/csg/core/math/Vertex2.d.ts.map new file mode 100644 index 0000000..af7147b --- /dev/null +++ b/types/csg/core/math/Vertex2.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vertex2.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Vertex2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,QAAQ;IAEjB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,QAAQ,CAAC;gBACF,GAAG,EAAE,QAAQ;IAKzB,QAAQ;IAKR,MAAM;CAUT"} \ No newline at end of file diff --git a/types/csg/core/math/Vertex3.d.ts b/types/csg/core/math/Vertex3.d.ts new file mode 100644 index 0000000..7fc7fe1 --- /dev/null +++ b/types/csg/core/math/Vertex3.d.ts @@ -0,0 +1,15 @@ +import { Vector2D } from "./Vector2"; +import { Vector3D } from "./Vector3"; +import { Matrix4 } from "three"; +export declare class Vertex3D { + pos: Vector3D; + uv: Vector2D; + tag: number; + constructor(pos: Vector3D, uv?: Vector2D); + clone(): Vertex3D; + flipped(): this; + getTag(): number; + interpolate(other: Vertex3D, t: number): Vertex3D; + transform(matrix4x4: Matrix4): Vertex3D; +} +//# sourceMappingURL=Vertex3.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/Vertex3.d.ts.map b/types/csg/core/math/Vertex3.d.ts.map new file mode 100644 index 0000000..595077b --- /dev/null +++ b/types/csg/core/math/Vertex3.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Vertex3.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Vertex3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAShC,qBAAa,QAAQ;IAGE,GAAG,EAAE,QAAQ;IAAS,EAAE;IAD3C,GAAG,EAAE,MAAM,CAAC;gBACO,GAAG,EAAE,QAAQ,EAAS,EAAE,WAAiB;IAE5D,KAAK;IAOL,OAAO;IAKP,MAAM;IAcN,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM;IAStC,SAAS,CAAC,SAAS,EAAE,OAAO;CAK/B"} \ No newline at end of file diff --git a/types/csg/core/math/lineUtils.d.ts b/types/csg/core/math/lineUtils.d.ts new file mode 100644 index 0000000..42118bd --- /dev/null +++ b/types/csg/core/math/lineUtils.d.ts @@ -0,0 +1,3 @@ +import { Vector2D } from "./Vector2"; +export declare function linesIntersect(p0start: Vector2D, p0end: Vector2D, p1start: Vector2D, p1end: Vector2D): boolean; +//# sourceMappingURL=lineUtils.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/lineUtils.d.ts.map b/types/csg/core/math/lineUtils.d.ts.map new file mode 100644 index 0000000..39c5fb7 --- /dev/null +++ b/types/csg/core/math/lineUtils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"lineUtils.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/lineUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIrC,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,WA6BpG"} \ No newline at end of file diff --git a/types/csg/core/math/reTesselateCoplanarPolygons.d.ts b/types/csg/core/math/reTesselateCoplanarPolygons.d.ts new file mode 100644 index 0000000..9a27704 --- /dev/null +++ b/types/csg/core/math/reTesselateCoplanarPolygons.d.ts @@ -0,0 +1,3 @@ +import { Polygon } from "./Polygon3"; +export declare function reTesselateCoplanarPolygons(sourcePolygons: Polygon[], destpolygons?: Polygon[]): void; +//# sourceMappingURL=reTesselateCoplanarPolygons.d.ts.map \ No newline at end of file diff --git a/types/csg/core/math/reTesselateCoplanarPolygons.d.ts.map b/types/csg/core/math/reTesselateCoplanarPolygons.d.ts.map new file mode 100644 index 0000000..5833aa0 --- /dev/null +++ b/types/csg/core/math/reTesselateCoplanarPolygons.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"reTesselateCoplanarPolygons.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/reTesselateCoplanarPolygons.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAkCrC,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,YAAY,GAAE,OAAO,EAAO,GAAG,IAAI,CAmazG"} \ No newline at end of file diff --git a/types/csg/core/trees.d.ts b/types/csg/core/trees.d.ts new file mode 100644 index 0000000..44f5357 --- /dev/null +++ b/types/csg/core/trees.d.ts @@ -0,0 +1,51 @@ +import { Plane } from "./math/Plane"; +import { Polygon } from "./math/Polygon3"; +import { Vector3D } from "./math/Vector3"; +declare class PolygonTreeNode { + parent: PolygonTreeNode; + children: PolygonTreeNode[]; + polygon: Polygon; + removed: boolean; + constructor(polygon?: Polygon); + addPolygons(polygons: Polygon[]): void; + remove(): void; + isRemoved(): boolean; + isRootNode(): boolean; + invert(): void; + getPolygon(): Polygon; + getPolygons(outPolygons?: Polygon[]): Polygon[]; + splitByPlane(plane: Plane, coplanarFrontNodes: PolygonTreeNode[], coplanarBackNodes: PolygonTreeNode[], frontNodes: PolygonTreeNode[], backNodes: PolygonTreeNode[]): void; + private splitByPlaneNotChildren; + addChild(polygon: Polygon): PolygonTreeNode; + invertSub(): void; + recursivelyInvalidatePolygon(): void; +} +export declare class Tree { + polygonTree: PolygonTreeNode; + rootNode: Node; + constructor(polygons: Polygon[]); + invert(): void; + /** + * this 减去 tree 删除此BSP树中位于其他BSP树内的所有多边形 + * @param tree 不会被修改 + * @param [alsoRemovecoplanarFront=false] 同时删除共面 + */ + clipTo(tree: Tree, alsoRemovecoplanarFront?: boolean): void; + allPolygons(): Polygon[]; + addPolygons(polygons: Polygon[]): void; +} +declare class Node { + plane: Plane; + front: Node; + back: Node; + polygonTreeNodes: PolygonTreeNode[]; + parent: Node; + constructor(parent: Node); + invert(): void; + clipPolygons(polygonTreeNodes: PolygonTreeNode[], alsoRemoveCoplanarFront: boolean): void; + clipTo(tree: Tree, alsoRemovecoplanarFront: boolean): void; + addPolygonTreeNodes(polygonTreeNodes: PolygonTreeNode[]): void; + getParentPlaneNormals(normals: Vector3D[], maxdepth: number): void; +} +export {}; +//# sourceMappingURL=trees.d.ts.map \ No newline at end of file diff --git a/types/csg/core/trees.d.ts.map b/types/csg/core/trees.d.ts.map new file mode 100644 index 0000000..83ede33 --- /dev/null +++ b/types/csg/core/trees.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"trees.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/trees.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAQ,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA2B1C,cAAM,eAAe;IAEjB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAS;gBACb,OAAO,CAAC,EAAE,OAAO;IAO7B,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;IAc/B,MAAM;IAsBN,SAAS;IAKT,UAAU;IAOV,MAAM;IAMN,UAAU,IAAI,OAAO;IAMrB,WAAW,CAAC,WAAW,GAAE,OAAO,EAAO,GAAG,OAAO,EAAE;IA2BnD,YAAY,CACR,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,eAAe,EAAE,EACrC,iBAAiB,EAAE,eAAe,EAAE,EACpC,UAAU,EAAE,eAAe,EAAE,EAC7B,SAAS,EAAE,eAAe,EAAE;IAgChC,OAAO,CAAC,uBAAuB;IA6D/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe;IAQ3C,SAAS;IAgBT,4BAA4B;CAU/B;AAMD,qBAAa,IAAI;IAEb,WAAW,kBAAyB;IACpC,QAAQ,OAAkB;gBACd,QAAQ,EAAE,OAAO,EAAE;IAK/B,MAAM;IAON;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,uBAAuB,UAAQ;IAKlD,WAAW;IAKX,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;CAOlC;AAUD,cAAM,IAAI;IAEN,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,MAAM,EAAE,IAAI,CAAC;gBACD,MAAM,EAAE,IAAI;IAMxB,MAAM;IAmBN,YAAY,CAAC,gBAAgB,EAAE,eAAe,EAAE,EAAE,uBAAuB,EAAE,OAAO;IAkDlF,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO;IAoBnD,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE;IAsDvD,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM;CAW9D"} \ No newline at end of file diff --git a/types/csg/core/utils.d.ts b/types/csg/core/utils.d.ts new file mode 100644 index 0000000..ef69fca --- /dev/null +++ b/types/csg/core/utils.d.ts @@ -0,0 +1,6 @@ +import { Vector2D } from "./math/Vector2"; +export declare function fnNumberSort(a: any, b: any): number; +export declare const solve2Linear: (a: number, b: number, c: number, d: number, u: number, v: number) => number[]; +export declare function insertSorted(array: T[], element: T, comparefunc: (a: T, b: T) => number): void; +export declare function interpolateBetween2DPointsForY(point1: Vector2D, point2: Vector2D, y: number): number; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/types/csg/core/utils.d.ts.map b/types/csg/core/utils.d.ts.map new file mode 100644 index 0000000..4bd6343 --- /dev/null +++ b/types/csg/core/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wBAAgB,YAAY,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,UAGhC;AAED,eAAO,MAAM,YAAY,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,aASrG,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,QAgB1F;AAKD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,UAqB3F"} \ No newline at end of file diff --git a/types/csg/core/utils/cagValidation.d.ts b/types/csg/core/utils/cagValidation.d.ts new file mode 100644 index 0000000..0ffbc51 --- /dev/null +++ b/types/csg/core/utils/cagValidation.d.ts @@ -0,0 +1,3 @@ +import { CAG } from "../CAG"; +export declare function isSelfIntersecting(cag: CAG, debug?: boolean): boolean; +//# sourceMappingURL=cagValidation.d.ts.map \ No newline at end of file diff --git a/types/csg/core/utils/cagValidation.d.ts.map b/types/csg/core/utils/cagValidation.d.ts.map new file mode 100644 index 0000000..95b2693 --- /dev/null +++ b/types/csg/core/utils/cagValidation.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cagValidation.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/cagValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,UAAQ,WAwBzD"} \ No newline at end of file diff --git a/types/csg/core/utils/canonicalize.d.ts b/types/csg/core/utils/canonicalize.d.ts new file mode 100644 index 0000000..8d773da --- /dev/null +++ b/types/csg/core/utils/canonicalize.d.ts @@ -0,0 +1,13 @@ +import { FuzzyCSGFactory } from "../FuzzyFactory3d"; +import { CSG } from "../CSG"; +import { CAG } from "../CAG"; +/** + * Returns a cannoicalized version of the input csg : ie every very close + * points get deduplicated + * + * 返回删除重复点的csg,重复点将被合并 + */ +export declare function canonicalizeCSG(csg: CSG): CSG; +export declare function canonicalizeCAG(cag: CAG): CAG; +export declare function CSGFromCSGFuzzyFactory(factory: FuzzyCSGFactory, sourcecsg: CSG): CSG; +//# sourceMappingURL=canonicalize.d.ts.map \ No newline at end of file diff --git a/types/csg/core/utils/canonicalize.d.ts.map b/types/csg/core/utils/canonicalize.d.ts.map new file mode 100644 index 0000000..557ed87 --- /dev/null +++ b/types/csg/core/utils/canonicalize.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"canonicalize.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/canonicalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAI7B;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAO7C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,OAMvC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAO9E"} \ No newline at end of file diff --git a/types/csg/core/utils/csgMeasurements.d.ts b/types/csg/core/utils/csgMeasurements.d.ts new file mode 100644 index 0000000..f6e8a2c --- /dev/null +++ b/types/csg/core/utils/csgMeasurements.d.ts @@ -0,0 +1,11 @@ +import { Vector3D } from "../math/Vector3"; +import { CSG } from "../CSG"; +/** + * Returns an array of Vector3D, providing minimum coordinates and maximum coordinates + * of this solid. + * @example + * let bounds = A.getBounds() + * let minX = bounds[0].x + */ +export declare function bounds(csg: CSG): Vector3D[]; +//# sourceMappingURL=csgMeasurements.d.ts.map \ No newline at end of file diff --git a/types/csg/core/utils/csgMeasurements.d.ts.map b/types/csg/core/utils/csgMeasurements.d.ts.map new file mode 100644 index 0000000..a390ee3 --- /dev/null +++ b/types/csg/core/utils/csgMeasurements.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"csgMeasurements.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/csgMeasurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,CA2B3C"} \ No newline at end of file diff --git a/types/csg/core/utils/retesellate.d.ts b/types/csg/core/utils/retesellate.d.ts new file mode 100644 index 0000000..9d836c3 --- /dev/null +++ b/types/csg/core/utils/retesellate.d.ts @@ -0,0 +1,3 @@ +import { CSG } from "../CSG"; +export declare function reTesselate(csg: CSG): CSG; +//# sourceMappingURL=retesellate.d.ts.map \ No newline at end of file diff --git a/types/csg/core/utils/retesellate.d.ts.map b/types/csg/core/utils/retesellate.d.ts.map new file mode 100644 index 0000000..ed471d9 --- /dev/null +++ b/types/csg/core/utils/retesellate.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"retesellate.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/retesellate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAK7B,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CA+BzC"} \ No newline at end of file diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..03eb8b8 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,5 @@ +import './UI/Css/blue.less'; +import './UI/Css/golden.less'; +import './UI/Css/style.less'; +import './UI/Css/switchTheme.less'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/types/index.d.ts.map b/types/index.d.ts.map new file mode 100644 index 0000000..4a05ecb --- /dev/null +++ b/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAQA,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,2BAA2B,CAAC"} \ No newline at end of file diff --git a/types/ueapi.d.ts b/types/ueapi.d.ts new file mode 100644 index 0000000..45a42c4 --- /dev/null +++ b/types/ueapi.d.ts @@ -0,0 +1,5 @@ +export * from "./DatabaseServices/Entity/Circle"; +export * from "./DatabaseServices/Entity/Extrude"; +export * from "./DatabaseServices/Entity/Polyline"; +export * from "./Geometry/ExtrudeEdgeGeometry2"; +//# sourceMappingURL=ueapi.d.ts.map \ No newline at end of file diff --git a/types/ueapi.d.ts.map b/types/ueapi.d.ts.map new file mode 100644 index 0000000..054955a --- /dev/null +++ b/types/ueapi.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ueapi.d.ts","sourceRoot":"","sources":["../../src/ueapi.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC"} \ No newline at end of file diff --git a/types/webview.d.ts b/types/webview.d.ts new file mode 100644 index 0000000..6c7c9ca --- /dev/null +++ b/types/webview.d.ts @@ -0,0 +1,3 @@ +import './UI/Css/style.less'; +import '../../Css/switchTheme.less'; +//# sourceMappingURL=webview.d.ts.map \ No newline at end of file diff --git a/types/webview.d.ts.map b/types/webview.d.ts.map new file mode 100644 index 0000000..ae33488 --- /dev/null +++ b/types/webview.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"webview.d.ts","sourceRoot":"","sources":["../../src/webview.ts"],"names":[],"mappings":"AAEA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,4BAA4B,CAAC"} \ No newline at end of file