First commit

This commit is contained in:
Anatoly 2025-07-18 19:23:53 +03:00
parent 6d2b2f87ce
commit 713ddf52b4
8 changed files with 506 additions and 54 deletions

View File

@ -156,7 +156,7 @@ object frm3D: Tfrm3D
end end
object sbApplyScsModel: TSpeedButton object sbApplyScsModel: TSpeedButton
Left = 1091 Left = 1091
Top = 8 Top = 13
Width = 161 Width = 161
Height = 22 Height = 22
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
@ -169,7 +169,6 @@ object frm3D: Tfrm3D
Font.Style = [] Font.Style = []
ParentFont = False ParentFont = False
OnClick = sbApplyScsModelClick OnClick = sbApplyScsModelClick
ExplicitLeft = 1003
end end
object SpeedButton4: TSpeedButton object SpeedButton4: TSpeedButton
Left = 1258 Left = 1258
@ -3405,7 +3404,7 @@ object frm3D: Tfrm3D
Left = 100 Left = 100
Top = 57 Top = 57
Bitmap = { Bitmap = {
494C01013A00B000DC0210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C01013A00B000E40210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0 000000000000360000002800000040000000F0000000010020000000000000F0
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000

View File

@ -12531,6 +12531,7 @@ var
SelList: TList; SelList: TList;
selCatalog: TSCSCatalog; selCatalog: TSCSCatalog;
CameraPos: T3DPoint; CameraPos: T3DPoint;
UndoAct: TListUndoAction;
procedure SynchronizeCoordsToCad(aPoint: TDoublePoint; aSide: integer); procedure SynchronizeCoordsToCad(aPoint: TDoublePoint; aSide: integer);
var SCSConn: TConnectorObject; var SCSConn: TConnectorObject;
@ -12601,7 +12602,15 @@ var
if aLine.FSCSObject <> nil then if aLine.FSCSObject <> nil then
SCSLine := aLine.FSCSObject; // ñàìà òðàññà íà êàäå SCSLine := aLine.FSCSObject; // ñàìà òðàññà íà êàäå
//Tolik 18/07/2025 -- Undo êàäà(åñëè íå áûëî)
if G3dUndoList.IndexOf(TF_CAD(TPowerCad(SCSLine.Owner).Owner)) = -1 then
begin
UndoAct := TF_CAD(TPowerCad(SCSLine.Owner).Owner).SaveForUndo(uat_None, true, false, 0, false, true);
G3dUndoList.Add(TF_CAD(TPowerCad(SCSLine.Owner).Owner));
if UndoAct <> nil then
G3dUndoActList.Add(UndoAct);
end;
//
FaceList := TList.Create; FaceList := TList.Create;
ObjList := TList.Create; ObjList := TList.Create;
Obj3dList := TList.Create; Obj3dList := TList.Create;
@ -13111,7 +13120,7 @@ var
GLSceneViewer.Camera.Position.z := CameraPos.z; GLSceneViewer.Camera.Position.z := CameraPos.z;
GCadForm := SavedGCadForm; GCadForm := SavedGCadForm;
GisChangeFrom3D := True; // 11/07/2025 -- âûñòàâèòü ôëàã, ÷òîá áûëè èçìåíåíèÿ â ïðîåêòå èç 3Ä ...
end; end;
// //
begin begin
@ -22243,6 +22252,7 @@ begin
FreeAndNil(UndoFormsList); FreeAndNil(UndoFormsList);
EndProgress; EndProgress;
// EndProgress; // EndProgress;
SaveCurrProjectToUndoFiles(True);
end; end;
(* (*

View File

@ -1,7 +1,7 @@
object FSCS_Main: TFSCS_Main object FSCS_Main: TFSCS_Main
Left = -8 Left = -8
Top = -8 Top = -8
Width = 1376 Width = 1380
Height = 744 Height = 744
HorzScrollBar.Color = clBtnFace HorzScrollBar.Color = clBtnFace
HorzScrollBar.ParentColor = False HorzScrollBar.ParentColor = False
@ -46,7 +46,7 @@ object FSCS_Main: TFSCS_Main
ExplicitHeight = 641 ExplicitHeight = 641
end end
object sDiv2: TSplitter object sDiv2: TSplitter
Left = 1352 Left = 1356
Top = 188 Top = 188
Height = 474 Height = 474
Align = alRight Align = alRight
@ -82,7 +82,7 @@ object FSCS_Main: TFSCS_Main
OnUnDock = PDock1UnDock OnUnDock = PDock1UnDock
end end
object pDock2: TPanel object pDock2: TPanel
Left = 1355 Left = 1359
Top = 188 Top = 188
Width = 5 Width = 5
Height = 474 Height = 474
@ -102,7 +102,7 @@ object FSCS_Main: TFSCS_Main
object pCADList: TPanel object pCADList: TPanel
Left = 0 Left = 0
Top = 662 Top = 662
Width = 1360 Width = 1364
Height = 23 Height = 23
Align = alBottom Align = alBottom
BevelOuter = bvNone BevelOuter = bvNone
@ -111,7 +111,7 @@ object FSCS_Main: TFSCS_Main
object pageCADList: TPageControl object pageCADList: TPageControl
Left = 0 Left = 0
Top = 0 Top = 0
Width = 1358 Width = 1362
Height = 21 Height = 21
Align = alClient Align = alClient
Font.Charset = RUSSIAN_CHARSET Font.Charset = RUSSIAN_CHARSET
@ -129,7 +129,7 @@ object FSCS_Main: TFSCS_Main
AlignWithMargins = True AlignWithMargins = True
Left = 3 Left = 3
Top = 0 Top = 0
Width = 1354 Width = 1358
Height = 136 Height = 136
HelpContext = 76000 HelpContext = 76000
Margins.Top = 0 Margins.Top = 0
@ -1214,7 +1214,7 @@ object FSCS_Main: TFSCS_Main
object pnHintBar: TRzSizePanel object pnHintBar: TRzSizePanel
Left = 0 Left = 0
Top = 136 Top = 136
Width = 1360 Width = 1364
Height = 52 Height = 52
Align = alTop Align = alTop
BorderHighlight = clBtnFace BorderHighlight = clBtnFace
@ -5860,7 +5860,7 @@ object FSCS_Main: TFSCS_Main
Left = 496 Left = 496
Top = 232 Top = 232
Bitmap = { Bitmap = {
494C0101D2008C01980310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C0101D2008C01A80310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000005003000001002000000000000050 0000000000003600000028000000400000005003000001002000000000000050
0300000000000000000000000000000000000000000000000000000000000000 0300000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@ -12870,7 +12870,7 @@ object FSCS_Main: TFSCS_Main
Left = 248 Left = 248
Top = 280 Top = 280
Bitmap = { Bitmap = {
494C010123008C01B00320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010123008C01C00320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000800000009000000001002000000000000020 0000000000003600000028000000800000009000000001002000000000000020
0100000000000000000000000000000000000000000000000000000000000000 0100000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@ -15442,7 +15442,7 @@ object FSCS_Main: TFSCS_Main
Left = 240 Left = 240
Top = 408 Top = 408
Bitmap = { Bitmap = {
494C010112008C01A4030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010112008C01B4030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000038000000460000000100200000000000403D 000000000000360000002800000038000000460000000100200000000000403D
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@ -19945,7 +19945,7 @@ object FSCS_Main: TFSCS_Main
Left = 240 Left = 240
Top = 344 Top = 344
Bitmap = { Bitmap = {
494C0101DE008C018C0618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C0101DE008C019C0618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
00000000000036000000280000006000000040050000010020000000000000E0 00000000000036000000280000006000000040050000010020000000000000E0
070000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF 070000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9188003D2413003D241300FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9188003D2413003D241300FFFF

View File

@ -20056,6 +20056,9 @@ begin
// 22.07.2011 // 22.07.2011
G3DModelForProject := False; G3DModelForProject := False;
//Tolik 11/07/2023 --
SaveCurrProjectToUndoFiles(true);
//
BeginProgress; BeginProgress;
if not Assigned(frm3D) then if not Assigned(frm3D) then
Application.CreateForm(Tfrm3D, frm3d); Application.CreateForm(Tfrm3D, frm3d);
@ -20086,6 +20089,10 @@ begin
Application.ProcessMessages; Application.ProcessMessages;
frm3d.ShowModal; frm3d.ShowModal;
FreeAndNil(frm3D); FreeAndNil(frm3D);
//Tolik 11/07/2025 -- âîññòàíîâèòü ïðîåêò, åñëè áûëè èçìåíåíèÿ ÷åðåç 3Ä...
if GisChangeFrom3D then
UndoListInPM(-1, GetPathToSCSUndoUniqDir(true), true, 0, 0);
//
// Tolik 23/07/2018 -- // Tolik 23/07/2018 --
GCadForm.PCad.Refresh; GCadForm.PCad.Refresh;
// //
@ -21459,7 +21466,11 @@ var
SubstrateFileName: String; SubstrateFileName: String;
currGLPlane: TGLPlane; currGLPlane: TGLPlane;
SubstrateFileList: TStringList; SubstrateFileList: TStringList;
// Tolik 17/07/2025 --
VList: TList;
//tmpCad: TF_Cad;
Dir3dUndoName: string;
UndoAct: TListUndoAction;
{ {
procedure InsertIntoHList(Cad: TF_CAD); procedure InsertIntoHList(Cad: TF_CAD);
var var
@ -21688,6 +21699,49 @@ begin
LLists := Nil; LLists := Nil;
SubstrateFileList := TStringList.Create; // ñïèñîê ïîäëîæåê (÷òîáû ïîòîì óäàëèòü ñîçäàííûå jpeg, äàáû íå çàñîðÿòü äèñê) SubstrateFileList := TStringList.Create; // ñïèñîê ïîäëîæåê (÷òîáû ïîòîì óäàëèòü ñîçäàííûå jpeg, äàáû íå çàñîðÿòü äèñê)
// //
//Tolik 11/07/2025 -- UNDO for 3D
{for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 do
begin
TmpCad := GetListbyID(F_ProjMan.GSCSBase.CurrProject.ProjectLists[i].SCSID);
if TmpCad <> nil then
begin
if TmpCad <> nil then
begin
if TmpCad.FListType = lt_Normal then
begin
end;
end;
end;
end;
}
//SaveCurrProjectToUndoFiles(true);
//Tolik 17/07/2025 -- Save Project Undo
G3dUndoList := TList.create;
G3dUndoActList := TList.Create;
{VList := TList.create;
for i := 0 to F_ProjMan.GSCSBase.CurrProject.ChildCatalogs.Count - 1 do
begin
if F_ProjMan.GSCSBase.CurrProject.ChildCatalogs[i] is TSCSList then
begin
TmpCad := GetListByID(F_ProjMan.GSCSBase.CurrProject.ChildCatalogs[i].SCSID);
if TmpCad <> nil then
VList.Add(TmpCad);
end;
end;
Dir3dUndoName := GetPathToSCSUndoDir +'\3D';
if DirectoryExists(Dir3dUndoName) then
FullRemoveDir(Dir3dUndoName, true, true);
if Not DirectoryExists(Dir3dUndoName) then
begin
CreateDir(Dir3dUndoName);
if DirectoryExists(Dir3dUndoName) then
SaveForProjectUndo(vList, true, false, true);
end;
//
}
{$ifdef 3D} {$ifdef 3D}
ctrlDown:=(IsKeyDown(VK_LCONTROL) or IsKeyDown(VK_RCONTROL)); ctrlDown:=(IsKeyDown(VK_LCONTROL) or IsKeyDown(VK_RCONTROL));
if ActiveMDIChild <> nil then if ActiveMDIChild <> nil then
@ -21904,6 +21958,13 @@ begin
frm3d.FCAD := GCadForm; frm3d.FCAD := GCadForm;
frm3d.ShowModal; frm3d.ShowModal;
FreeAndNil(frm3D); FreeAndNil(frm3D);
//Tolik 11/07/2025 -- âîññòàíîâèòü ïðîåêò, åñëè áûëè èçìåíåíèÿ ÷åðåç 3Ä...
//if GisChangeFrom3D then
//begin
// UndoListInPM(-1, GetPathToSCSUndoUniqDir(true), true, 0, 0);
// GCadForm.PCad.Refresh;
///end;
//
end end
else else
begin begin
@ -21958,6 +22019,27 @@ begin
end; end;
end; end;
SubstrateFileList.Free; SubstrateFileList.Free;
if G3dUndoActList.Count > 0 then
begin
j := G3dUndoActList.Count;
while G3dUndoList.Count > 0 do
begin
if j = 0 then
break;
GCadForm.SCSUndoNormalList(true);
dec(j);
end;
{
for j := G3dUndoActList.Count - 1 downto 0 do
begin
cad := TF_CAD(G3dUndoList[j]);
cad.SCSUndoNormalList(true);
end;
}
end;
FreeAndNil(G3dUndoList); // Tolik 18/07/2025 --
FreeAndNil(G3dUndoActList); // Tolik 18/07/2025 --
// //
end; end;
// Ïðè ïðîâåðêå íà ñîîòâåòñòâèå ìàñøòàáîâ èíîãäà âîçíèêàþò êàçóñû â ïëàíå ñîîòâåòñòâèÿ "íà ãëàç" è // Ïðè ïðîâåðêå íà ñîîòâåòñòâèå ìàñøòàáîâ èíîãäà âîçíèêàþò êàçóñû â ïëàíå ñîîòâåòñòâèÿ "íà ãëàç" è

View File

@ -536,7 +536,9 @@ type
// Toilk 03/06/2021 - - çäåñü äîáàâëÿåì ôëàæîê, ÷òîáû âèäåòü, êîãäà óíäî ïðèõîäèò ñ ïðèìåíåíèÿ ñâîéñòâ ëèñòà, // Toilk 03/06/2021 - - çäåñü äîáàâëÿåì ôëàæîê, ÷òîáû âèäåòü, êîãäà óíäî ïðèõîäèò ñ ïðèìåíåíèÿ ñâîéñòâ ëèñòà,
// ÷òîáû ñäåëàòü îäèíàêîâûé îòêàò äëÿ âñåõ òèïîâ ëèñòîâ, èíà÷å íå ñìîæåì îòêàòèòü íà âñåõ ñõåìàõ ïðèìåíåíèå ñâîéñòâ ëèñòà // ÷òîáû ñäåëàòü îäèíàêîâûé îòêàò äëÿ âñåõ òèïîâ ëèñòîâ, èíà÷å íå ñìîæåì îòêàòèòü íà âñåõ ñõåìàõ ïðèìåíåíèå ñâîéñòâ ëèñòà
//Tolik 15/07/2025 -*- òóò ÷óòü ïîïðàâèì, ÷òîáû ñäåëàòü è ïåðåä 3Ä (è íå ïîòåðÿòü, ÷òîáû ïîòîì âåðíóòü )
//function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
{
function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false): TListUndoAction; function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false): TListUndoAction;
// //
function SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; function SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
@ -545,8 +547,22 @@ type
function SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; function SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
// //
function SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; function SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
}
//function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false; a3D: boolean = false): TListUndoAction;
//
function SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
function SaveForUndoProjectPlan(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
// Tolik 12/02/2021
function SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
//
function SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
// ïîäíÿòü ïðåäûäóùåå ñîñòîÿíèå èç òåìïîâîãî ôàéëà // ïîäíÿòü ïðåäûäóùåå ñîñòîÿíèå èç òåìïîâîãî ôàéëà
procedure SCSUndoNormalList; //Tolik 18/07/2025 --
//procedure SCSUndoNormalList;
procedure SCSUndoNormalList(a3d: Boolean = False);
//
procedure SCSUndoProjectPlan; procedure SCSUndoProjectPlan;
procedure SCSUndoDesignList; procedure SCSUndoDesignList;
procedure SCSUndoElScheme; // Tolik 12/02/2021 -- procedure SCSUndoElScheme; // Tolik 12/02/2021 --
@ -11219,7 +11235,8 @@ end;
//Tolik 03/06/2021 -- //Tolik 03/06/2021 --
//function TF_CAD.SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //function TF_CAD.SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function TF_CAD.SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false): TListUndoAction; //function TF_CAD.SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false): TListUndoAction;
function TF_CAD.SaveForUndo(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; aFromMasterNewList: Boolean = false; a3D: boolean = false): TListUndoAction;
// //
var var
SavedGCadForm: TF_CAD; SavedGCadForm: TF_CAD;
@ -11246,28 +11263,44 @@ begin
// Tolik 03/06/2021 -- // Tolik 03/06/2021 --
if aFromMasterNewList then if aFromMasterNewList then
begin begin
Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex); //Tolik 18/07/2025 --
//Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex);
Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex, a3D);
//
GCadForm := SavedGCadForm; GCadForm := SavedGCadForm;
exit; exit;
end; end;
if FListType = lt_Normal then if FListType = lt_Normal then
Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex) //
//Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex)
Result := SaveForUndoNormalList(aType, aSavePM, aIsProject, aProjectIndex, a3D)
//
else else
if FListType = lt_ProjectPlan then if FListType = lt_ProjectPlan then
Result := SaveForUndoProjectPlan(aType, aSavePM, aIsProject, aProjectIndex) //
//Result := SaveForUndoProjectPlan(aType, aSavePM, aIsProject, aProjectIndex)
Result := SaveForUndoProjectPlan(aType, aSavePM, aIsProject, aProjectIndex, a3D)
//
else else
if FListType = lt_DesignBox then if FListType = lt_DesignBox then
Result := SaveForUndoDesignList(aType, aSavePM, aIsProject, aProjectIndex) //
//Result := SaveForUndoDesignList(aType, aSavePM, aIsProject, aProjectIndex)
Result := SaveForUndoDesignList(aType, aSavePM, aIsProject, aProjectIndex, a3D)
// Tolik 12/02/2021 -- åñëè òèï ëèñòà -- ýëåêòðè÷åñêàÿ ñõåìà îäíîëèíåéíàÿ // Tolik 12/02/2021 -- åñëè òèï ëèñòà -- ýëåêòðè÷åñêàÿ ñõåìà îäíîëèíåéíàÿ
else else
if FListType = lt_ElScheme then if FListType = lt_ElScheme then
//SaveListToUndoStack(GCadForm.FCADListID); //SaveListToUndoStack(GCadForm.FCADListID);
Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex) //
//Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex)
Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex, a3D)
//
else else
if FListType = lt_AScheme then if FListType = lt_AScheme then
//SaveListToUndoStack(GCadForm.FCADListID); //SaveListToUndoStack(GCadForm.FCADListID);
Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex); //, a3D
//Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex);
Result := SaveForUndoELScheme(aType, aSavePM, aIsProject, aProjectIndex, a3D);
// //
GCadForm := SavedGCadForm; GCadForm := SavedGCadForm;
except except
@ -11275,7 +11308,10 @@ begin
end; end;
end; end;
function TF_CAD.SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //Tolik 16/07/2025 --
//function TF_CAD.SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function TF_CAD.SaveForUndoNormalList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
//
var var
i, j: integer; i, j: integer;
Count: Integer; Count: Integer;
@ -11305,7 +11341,8 @@ begin
BasePath := ''; BasePath := '';
if (aSavePM) and ((not aIsProject) or (aProjectIndex = 0)) then if (aSavePM) and ((not aIsProject) or (aProjectIndex = 0)) then
begin begin
BasePath := SavePMForUndo(FCADListID, aIsProject); //BasePath := SavePMForUndo(FCADListID, aIsProject);
BasePath := SavePMForUndo(FCADListID, aIsProject, a3D);
CanProcess := BasePath <> ''; CanProcess := BasePath <> '';
end; end;
if CanProcess then if CanProcess then
@ -11360,6 +11397,10 @@ begin
// çàïèñàòü ïîñëåäíåå èçìåíåíèå â ôàéë, íàçâàíèå â FUndoList // çàïèñàòü ïîñëåäíåå èçìåíåíèå â ôàéë, íàçâàíèå â FUndoList
Count := FSCSUndoList.Count; Count := FSCSUndoList.Count;
// SetUndoName := FUndoDir + FCADListName + IntTostr(FCADListIndex) + '_' + IntToStr(Count); // SetUndoName := FUndoDir + FCADListName + IntTostr(FCADListIndex) + '_' + IntToStr(Count);
//Tolik 18/07/2025 --
{ if a3d then
SetUndoName := FUndoDir + '3D\'+ FCADListFileName + '_' + IntToStr(Count)
else}
SetUndoName := FUndoDir + FCADListFileName + '_' + IntToStr(Count); SetUndoName := FUndoDir + FCADListFileName + '_' + IntToStr(Count);
// ñîõðàíèòü â ñïèñîê ôàéëîâ // ñîõðàíèòü â ñïèñîê ôàéëîâ
ListUndoAction.FCadFileName := SetUndoName; ListUndoAction.FCadFileName := SetUndoName;
@ -11403,7 +11444,10 @@ begin
GCanRefreshCad := SaveGCadRefreshFlag; GCanRefreshCad := SaveGCadRefreshFlag;
end; end;
function TF_CAD.SaveForUndoProjectPlan(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //Tolik 16/07/2025 --
//function TF_CAD.SaveForUndoProjectPlan(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function TF_CAD.SaveForUndoProjectPlan(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
//
var var
i, j: integer; i, j: integer;
Count: Integer; Count: Integer;
@ -11478,8 +11522,10 @@ begin
on E: Exception do addExceptionToLogEx('TF_CAD.SaveForUndoProjectPlan', E.Message); on E: Exception do addExceptionToLogEx('TF_CAD.SaveForUndoProjectPlan', E.Message);
end; end;
end; end;
// Tolik 12/02/2021 -- // Tolik 12/02/2021 --
function TF_CAD.SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //function TF_CAD.SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function TF_CAD.SaveForUndoELScheme(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction; //Tolik 16/7/2025
var var
i, j: integer; i, j: integer;
Count: Integer; Count: Integer;
@ -11555,8 +11601,10 @@ begin
end; end;
end; end;
// //
//Tolik 16/074/2025 --
function TF_CAD.SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction; //function TF_CAD.SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0): TListUndoAction;
function TF_CAD.SaveForUndoDesignList(aType: TListUndoActionType; aSavePM: Boolean; aIsProject: Boolean; aProjectIndex: Integer = 0; a3D: boolean = false): TListUndoAction;
//
var var
i, j: integer; i, j: integer;
Count: Integer; Count: Integer;
@ -11641,7 +11689,249 @@ begin
on E: Exception do addExceptionToLogEx('', E.Message); on E: Exception do addExceptionToLogEx('', E.Message);
end; end;
end; end;
//Tolik 18/07/2025 --
procedure TF_CAD.SCSUndoNormalList(a3d: Boolean = False);
var
FName: string;
Figure: TFigure;
i, j: integer;
ListUndoAction: TListUndoAction;
LinkUndoObject: TLinkUndoObject;
Stream: TMemoryStream;
size: integer;
CountInPrj: Integer;
OldTick1, OldTick2, OldTick3, CurTick1, CurTick2, CurTick3: Cardinal;
CurListParams: TListParams;
ListOfLists: TList;
SavedGCadForm, CurrCad: TF_CAD;
NetObj: TNet;
//Tolik
CadFigList: TList;
SaveGCadRefreshFlag: boolean;
begin
try
SaveGCadRefreshFlag := GCanRefreshCad;
GCanRefreshCad := false;
SavedGCadForm := GCadForm;
ListOfLists := nil; // Tolik 11/12/2020 --
// IGOR 2017-04-25 åñëè ýòî íå ñäåëàòü, äåáàãèòü ïîñëå àíäó/ðåäó ïîòîì íåðåàëüíî ïðè âêëþ÷åííîì ñòîï-îí ÀÂ
self.UnSnapFigure;
GPrevFigureTraceTo := nil;
GPrevFigureSnap := nil;
GFigureSnap := nil;
FullEndUpdateCad(true); // Tolik 24/03/2021 --
BeginProgress;
if (FSCSUndoList.Count > 0) or (G3dUndoActList.Count > 0) then
begin
if a3d then
ListUndoAction := TListUndoAction(G3dUndoActList[0])
else
ListUndoAction := TListUndoAction(FSCSUndoList[FSCSUndoList.Count - 1]);
FName := ListUndoAction.FCadFileName;
// åñòü ôàéë
if FileExists(FName) then
begin
// åñëè íà 3Ä
CountInPrj := 0;
if not a3d then
begin
// Ïåðåä UNDO, ñîçäàåòñÿ ñëåïîê òåêóùåãî ñîñòîÿíèÿ äëÿ REDO
if ListUndoAction.ActionType = uat_Floor then
begin
CountInPrj := 0;
ListOfLists := TList.Create;
for i := 0 to ListUndoAction.FProjectUndoAction.FLinkUndoObject.Count - 1 do
begin
LinkUndoObject := TLinkUndoObject(ListUndoAction.FProjectUndoAction.FLinkUndoObject[i]);
if LinkUndoObject.FCad.FListType = lt_Normal then
begin
CountInPrj := CountInPrj + 1;
ListOfLists.Add(LinkUndoObject.FCad);
end;
end;
SaveForProjectRedo(ListOfLists, ListUndoAction.FSavePM, ListUndoAction.FIsProject);
//FreeAndNil(ListOfLists);
end
else
begin
CountInPrj := 1;
SaveForRedo(ListUndoAction.ActionType, ListUndoAction.FSavePM, ListUndoAction.FIsProject, CountInPrj);
end;
end;
//
if FListType <> lt_Normal then
PCad.RecordUndo := False;
// ïåðåä î÷èñòêîé ñáðîñèì ÷òîáû ñðàáîòàëà ïðîâåðêà â TConnectorObject.Destroy;
PCad.OnObjectInserted := nil;
//ClearSCSFigures;
Try
F_ProjMan.Tree_Catalog.Items.BeginUpdate;
//ClearFiguresOnListUndoRedo;
GProjectClose := True;
GClearFigures := True;
GCadForm.FCadClose := True;
GProjectClose := True;
//ClearFiguresOnListDelete(GCadForm);
ClearSCSFigures;
Finally
F_ProjMan.Tree_Catalog.Items.EndUpdate;
GProjectClose := false;
GClearFigures := false;
GCadForm.FCadClose := false;
GProjectClose := false;
End;
//PCad.OnObjectInserted := nil;
FUndoFiguresList.Clear;
PCad.LoadSCSFiguresFromFile(FName);
PCad.OnObjectInserted := PCadObjectInserted;
FUndoStatus := True;
try
if GListWithEndPoint = Self then
begin
GEndPoint := nil;
GListWithEndPoint := nil;
end;
GNeedReRaiseProperties := False;
//Tolik
CadFigList := TList.Create;
for i := 0 to PCad.FigureCount - 1 do
CadFigList.Add(TFigure(PCad.Figures.Items[i]));
for i := 0 to CadFigList.Count - 1 do
begin
Figure := TFigure(CadFigList[i]);
if CheckFigureByClassName(Figure, 'TNet') then
begin
NetObj := TNet(PCad.Figures.Items[i]);
if NetObj.FComponID = 0 then
begin
FActiveNet := NetObj;
ActiveNet := FActiveNet;
end;
end
else if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
TConnectorObject(Figure).RaiseProperties(CadFigList);
TConnectorObject(Figure).FJoinedListIDForBox := -1;
end
else if CheckFigureByClassName(Figure, cTOrthoLine) then
TOrthoLine(Figure).RaiseProperties(CadFigList)
else if CheckFigureByClassName(Figure, cTSCSFigureGrp) then
TSCSFigureGrp(Figure).RaiseProperties(CadFigList)
else if CheckFigureByClassName(Figure, cTCabinet) then
TCabinet(Figure).RaiseProperties(CadFigList)
else if CheckFigureByClassName(Figure, cTCabinetExt) then
TCabinetExt(Figure).RaiseProperties(CadFigList)
else if CheckFigureByClassName(Figure, cTHouse) then
THouse(Figure).RaiseProperties(CadFigList);
end;
FreeAndNil(CadFigList);
finally
FUndoStatus := False;
end;
FindObjectsForConvertClasses;
PCad.DrawFigures(True);
// óäàëèòü ôàéë
if FileExists(FName) then
DeleteFile(FName);
// óäàëèòü ïîñëåäíèé êîòîðûé ïîäíèìàåòñÿ èç ñïèêà
if a3d then
G3dUndoActList.delete(0)
else
FSCSUndoList.Delete(FSCSUndoList.Count - 1);
// *UNDO ProjectManager*
UndoListInPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject, 0, CountInPrj);
// åñòü ñâÿçè ñ äðóãèìè ýòàæàìè - ïîäíÿòü ñî âñåõ ñâÿçàííûõ ëèñòîâ
if not a3d then
begin
if ListUndoAction.ActionType = uat_Floor then
begin
LoadProjectUndoActions(Self, ListUndoAction);
end;
end;
if CountInPrj = 1 then
begin
// List Params
CurListParams := GetListParams(FCADListID);
FCanSaveForUndo := False;
LoadSettingsForListByParams(CurListParams, True);
SetVisibleCabinetsNumbers(FShowCabinetsNumbers);
SetVisibleCabinetsBounds(FShowCabinetsBounds);
FCanSaveForUndo := True;
OnAfterUndo;
end
else
if CountInPrj > 1 then
begin
if ListOfLists <> nil then
begin
for i := 0 to ListOfLists.Count - 1 do
begin
GCadForm := TF_CAD(ListOfLists[i]);
CurListParams := GetListParams(GCadForm.FCADListID);
GCadForm.FCanSaveForUndo := False;
LoadSettingsForListByParams(CurListParams, True);
SetVisibleCabinetsNumbers(GCadForm.FShowCabinetsNumbers);
SetVisibleCabinetsBounds(GCadForm.FShowCabinetsBounds);
GCadForm.FCanSaveForUndo := True;
GCadForm.OnAfterUndo;
end;
FreeAndNil(ListOfLists);
end;
end;
//
end
else
FSCSUndoList.Remove(ListUndoAction);
// óäàëèòü îáúåêò UndoAction
FreeAndNil(ListUndoAction);
// Tolik --28/06/2016 --
if Assigned(F_SCSObjectsProp) then
if F_SCSObjectsProp.Showing then
F_SCSObjectsProp.ClearAllProperties;
//
end;
except
on E: Exception do addExceptionToLogEx('TF_CAD.SCSUndoNormalList', E.Message);
end;
//Tolik 04/06/2021 --
if FListType <> lt_Normal then
PCad.RecordUndo := True;
//
// Tolik 26/09/2017 --
if FListSettings.ShowTracesCrossPoints > 0 then
ShowTracesIntersections(2, FListSettings.ShowTracesCrossPoints);
//
GCadForm := SavedGCadForm;
GCanRefreshCad := SaveGCadRefreshFlag;
EndProgress;
{append(f);
writeln(f, 'END');
writeln(f, '---------------------------------------------------------------------------');
CloseFile(f);}
PCad.refresh;
end;
(*
procedure TF_CAD.SCSUndoNormalList; procedure TF_CAD.SCSUndoNormalList;
var var
FName: string; FName: string;
@ -11927,6 +12217,7 @@ begin
CloseFile(f);} CloseFile(f);}
PCad.refresh; PCad.refresh;
end; end;
*)
procedure TF_CAD.SCSUndoProjectPlan; procedure TF_CAD.SCSUndoProjectPlan;
var var

View File

@ -1074,7 +1074,10 @@ type
procedure SetIsCableChannel(aListID, aLineID: Integer; aFlag: Boolean); procedure SetIsCableChannel(aListID, aLineID: Integer; aFlag: Boolean);
// UNDO äëÿ ïðîåêòà ... // UNDO äëÿ ïðîåêòà ...
procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean); //Tolik 17/07/2025 -
//procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean);
procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean; a3d: boolean = false);
//
// óäàëèòü âñþ öåïî÷êó Undo â ñâÿçêå ñ äðóãèìè ýòàæàìè // óäàëèòü âñþ öåïî÷êó Undo â ñâÿçêå ñ äðóãèìè ýòàæàìè
procedure DeleteProjectUndoActions(aCad: TF_CAD; aListUndoAction: TListUndoAction); procedure DeleteProjectUndoActions(aCad: TF_CAD; aListUndoAction: TListUndoAction);
// ïîäíÿòü âñþ öåïî÷êó UNdo â ñâÿçêå ñ äðóãèìè ýòàæàìè // ïîäíÿòü âñþ öåïî÷êó UNdo â ñâÿçêå ñ äðóãèìè ýòàæàìè
@ -1653,6 +1656,10 @@ var
GFtpFromDisk: Boolean = True; // Tolik 23/12/2024 GFtpFromDisk: Boolean = True; // Tolik 23/12/2024
GFtpToDisk: Boolean = True; // Tolik 23/12/2024 GFtpToDisk: Boolean = True; // Tolik 23/12/2024
GisChangeFrom3D: Boolean = false; // Tolik 11/07/2025 -- (åñëè áûëè èçìåíåíèÿ íà êàäå ÷åðåç 3Ä)
G3dUndoList: TList = nil;
G3dUndoActList: TList = nil;
//************* Hot Keys ********************* //************* Hot Keys *********************
hkCtrlN, hkCtrlN,
hkCtrlL, hkCtrlL,
@ -48568,8 +48575,9 @@ begin
on E: Exception do addExceptionToLogEx('U_Common.SetIsCableChannel', E.Message); on E: Exception do addExceptionToLogEx('U_Common.SetIsCableChannel', E.Message);
end; end;
end; end;
//Tolik 17/07/2025 --
procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean); procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean; a3d: boolean = false);
//procedure SaveForProjectUndo(aLists: TList; aSavePM: Boolean; aIsProject: Boolean);
var var
i, j: integer; i, j: integer;
vList: TF_CAD; vList: TF_CAD;
@ -48596,17 +48604,17 @@ begin
ListUndoAction := nil; //#From Oleg# //14.09.2010 ListUndoAction := nil; //#From Oleg# //14.09.2010
// //
if vList.FListType = lt_Normal then if vList.FListType = lt_Normal then
ListUndoAction := vList.SaveForUndoNormalList(uat_Floor, aSavePM, aIsProject, i) ListUndoAction := vList.SaveForUndoNormalList(uat_Floor, aSavePM, aIsProject, i, a3D)
else else
if vList.FListType = lt_ProjectPlan then if vList.FListType = lt_ProjectPlan then
ListUndoAction := vList.SaveForUndoProjectPlan(uat_Floor, aSavePM, aIsProject, i) ListUndoAction := vList.SaveForUndoProjectPlan(uat_Floor, aSavePM, aIsProject, i, a3D)
else else
if vList.FListType = lt_DesignBox then if vList.FListType = lt_DesignBox then
ListUndoAction := vList.SaveForUndoDesignList(uat_Floor, aSavePM, aIsProject, i) ListUndoAction := vList.SaveForUndoDesignList(uat_Floor, aSavePM, aIsProject, i, a3d)
// Tolik 12/02/2021 -- // Tolik 12/02/2021 --
else else
if vList.FListType = lt_ElScheme then if vList.FListType = lt_ElScheme then
ListUndoAction := vList.SaveForUndoELScheme(uat_Floor, aSavePM, aIsProject, i); ListUndoAction := vList.SaveForUndoELScheme(uat_Floor, aSavePM, aIsProject, i, a3d);
// ListUndoAction := vList.SaveForUndo(uat_Floor, aSavePM, aIsProject, i); // ListUndoAction := vList.SaveForUndo(uat_Floor, aSavePM, aIsProject, i);
// //

View File

@ -5547,7 +5547,10 @@ function GetPathToRepDesignLang: String;
function GetPathToSCSCADDir(AWithCreate: Boolean=false): string; // Ïóòü ê ïàïêå, ãäå õðàíÿòñÿ îòêðûòûå ÊÀÄ ëèñòû function GetPathToSCSCADDir(AWithCreate: Boolean=false): string; // Ïóòü ê ïàïêå, ãäå õðàíÿòñÿ îòêðûòûå ÊÀÄ ëèñòû
function GetPathToSCSTmpDir: String; function GetPathToSCSTmpDir: String;
function GetPathToSCSUndoDir(ADefine: Boolean=true): String; function GetPathToSCSUndoDir(ADefine: Boolean=true): String;
function GetPathToSCSUndoUniqDir: String; //Tolik 11/07/2025 --
//function GetPathToSCSUndoUniqDir: String;
function GetPathToSCSUndoUniqDir(aFor3D: Boolean = false): String;
//
function GetPathToUndoDir(ADefine: Boolean=true): String; function GetPathToUndoDir(ADefine: Boolean=true): String;
function GetPathToUnPackedTmp(AFileNoExists: Boolean): String; function GetPathToUnPackedTmp(AFileNoExists: Boolean): String;
function GetPathToUserReportFile(ARepFileName: String): String; function GetPathToUserReportFile(ARepFileName: String): String;
@ -5743,13 +5746,20 @@ procedure UndoListInPM(aListID: Integer; aBasePath: string; AIsProject: Boolean;
// Óäàëèòü ñëåïîê ëèñòà ïðîåêòà äëÿ îòêàòà - Âûçîâ èç CAD // Óäàëèòü ñëåïîê ëèñòà ïðîåêòà äëÿ îòêàòà - Âûçîâ èç CAD
procedure DeleteUndoFromPM(aListID: Integer; aBasePath: string; AIsProject: Boolean); procedure DeleteUndoFromPM(aListID: Integer; aBasePath: string; AIsProject: Boolean);
// Ñîçäàòü ñëåïîê ëèñòà äëÿ îòêàòà - Âûçîâ èç CAD // Ñîçäàòü ñëåïîê ëèñòà äëÿ îòêàòà - Âûçîâ èç CAD
function SavePMForUndo(aID: Integer; AIsProject: Boolean): String; //Tolik 18/07/2025 --
//function SavePMForUndo(aID: Integer; AIsProject: Boolean): String;
function SavePMForUndo(aID: Integer; AIsProject: Boolean; a3D: Boolean = false): String;
//
// Ñîçäàò undo ñëåïîê äëÿ ïðîåêòà // Ñîçäàò undo ñëåïîê äëÿ ïðîåêòà
function SaveCurrProjectToUndoFiles: String; //Tolik 11/07/2025 --
//function SaveCurrProjectToUndoFiles: String;
function SaveCurrProjectToUndoFiles(aFor3D: Boolean = false): String;
//
// Ñîçäàò undo ñëåïîê äëÿ ëèñòà // Ñîçäàò undo ñëåïîê äëÿ ëèñòà
function SaveListToUndoFiles(AListID: Integer): String; //Tolik 18/07/2025 --
//function SaveListToUndoFiles(AListID: Integer): String;
function SaveListToUndoFiles(AListID: Integer; a3D: Boolean = false): String;
//
// Ñîõðàíèò òåêóùèé ïðîåêò â UNDO ñòåê // Ñîõðàíèò òåêóùèé ïðîåêò â UNDO ñòåê
function SaveCurrProjectToUndoStack: String; function SaveCurrProjectToUndoStack: String;
// ñîõðàíèò ëèñò â UNDO ñòåê // ñîõðàíèò ëèñò â UNDO ñòåê
@ -32145,6 +32155,29 @@ begin
Result := GetAnsiTempPath; Result := GetAnsiTempPath;
end; end;
//Tolik 11/07/2025 --
function GetPathToSCSUndoUniqDir(aFor3D: Boolean = false): String;
var
i: Integer;
begin
Result := '';
if aFor3D then
begin
Result := GetPathToSCSUndoDir +'\' + '3D';
end
else
begin
i := 0;
while True do
begin
Result := GetPathToSCSUndoDir +'\'+ GetUniqueFileName('', '');
Inc(i);
if (i=15) or DirectoryExists(Result) then
Break; //// BREAK ////
end;
end;
end;
{
function GetPathToSCSUndoUniqDir: String; function GetPathToSCSUndoUniqDir: String;
var var
i: Integer; i: Integer;
@ -32159,6 +32192,7 @@ begin
Break; //// BREAK //// Break; //// BREAK ////
end; end;
end; end;
}
function GetPathToUndoDir(ADefine: Boolean=true): String; function GetPathToUndoDir(ADefine: Boolean=true): String;
begin begin
@ -42250,23 +42284,35 @@ begin
FullRemoveDir(aBasePath, true, true); FullRemoveDir(aBasePath, true, true);
end; end;
function SavePMForUndo(aID: Integer; AIsProject: Boolean): String; function SavePMForUndo(aID: Integer; AIsProject: Boolean; a3D: Boolean = false): String;
begin begin
Result := ''; Result := '';
if AIsProject then if AIsProject then
Result := SaveCurrProjectToUndoFiles Result := SaveCurrProjectToUndoFiles
else else
Result := SaveListToUndoFiles(AID); //Tolik 18/07/2025 --
//Result := SaveListToUndoFiles(AID);
Result := SaveListToUndoFiles(AID, a3d);
//
end; end;
//Tolik 11/07/2025 --
function SaveCurrProjectToUndoFiles(aFor3D: Boolean = false): String;
begin
Result := GetPathToSCSUndoUniqDir(aFor3D);
if Not F_ProjMan.GSCSBase.CurrProject.ComplexSaveToDir(Result) then
Result := '';
end;
{
function SaveCurrProjectToUndoFiles: String; function SaveCurrProjectToUndoFiles: String;
begin begin
Result := GetPathToSCSUndoUniqDir; Result := GetPathToSCSUndoUniqDir;
if Not F_ProjMan.GSCSBase.CurrProject.ComplexSaveToDir(Result) then if Not F_ProjMan.GSCSBase.CurrProject.ComplexSaveToDir(Result) then
Result := ''; Result := '';
end; end;
}
function SaveListToUndoFiles(AListID: Integer): String; function SaveListToUndoFiles(AListID: Integer; a3d: Boolean = false): String;
var var
SCSList: TSCSList; SCSList: TSCSList;
begin begin
@ -42274,7 +42320,21 @@ begin
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(AListID); SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(AListID);
if SCSList <> nil then if SCSList <> nil then
begin begin
Result := GetPathToSCSUndoUniqDir; Result := GetPathToSCSUndoUniqDir(a3D);
//Tolik18/7/2025 --
if a3d then //òóò ïðàêòè÷åñêè áóäåò 2 íîâûõ êàòàëîãà, ïîòîìó íå ñîçäàñò...íóæíî ñîçäàòü îäèí, à âòîðîé (3Ä)
//óæå ñîçäàñòñÿ äàëåå
begin
if Not DirectoryExists(Result) then
CreateDir(Result);
if DirectoryExists(Result) then
Result := Result + '\' + GetUniqueFileName('', '')
else
Result := '';
end;
//
if Result = '' then
exit;
if Not SCSList.ComplexSaveToDir(Result) then if Not SCSList.ComplexSaveToDir(Result) then
Result := ''; Result := '';
end; end;

View File

@ -1 +1,3 @@
тут до изменения UNDO перед 3Д, чтобы потом норм восстановить, так как придется внести слишком много изменений Undo for 3d Project пока черновик, переписать/дописать в плане запрета УНДО для када, если 3Д
Сброс и перезапуск по кнопке применения с 3Д модели, а назакрытии 3Д как раз откат,
если что останется и тогда будет ОК