First commit

This commit is contained in:
Anatoly 2025-08-29 13:48:16 +03:00
parent 1a5ebfcff8
commit 1785c2875d
8 changed files with 663 additions and 258 deletions

View File

@ -294,6 +294,10 @@ object frm3D: Tfrm3D
FixedDimension = 19
object TabSheet1: TRzTabSheet
Caption = #1052#1086#1076#1077#1083#1100
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object panObjects: TPanel
Left = 0
Top = 0
@ -423,6 +427,10 @@ object frm3D: Tfrm3D
end
object TabScsModel: TRzTabSheet
Caption = #1057#1050#1057' '#1084#1086#1076#1077#1083#1100
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object cxGroupBox2: TcxGroupBox
Left = 0
Top = 0
@ -3405,7 +3413,7 @@ object frm3D: Tfrm3D
Left = 100
Top = 57
Bitmap = {
494C01013A00B000080310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01013A00B0000C0310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

View File

@ -17516,6 +17516,7 @@ begin
FreeAndNil(F3DModel);
FIdsStream.Clear;
FFilesStream.Clear;
Gis3D := false; //Tolik 29/08/2025 --
end;
except
on E: Exception do AddExceptionToLogEx('Tfrm3D.FormCloseQuery', E.Message);
@ -22585,6 +22586,10 @@ end;
procedure Tfrm3D.sbApplyScsModelClick(Sender: TObject);
begin
ApplyScsModel;
//Tolik 29/08/2025 --
GisChangeFrom3D := False; //ñáðîñ ôëàãà
SaveUndoProjBefore3D; // çàïèñü Undo ïðîåêòà çàíîâî
//
end;
procedure Tfrm3D.nDivLineClick(Sender: TObject);

View File

@ -3115,6 +3115,9 @@ var
FirstConn, LastConn: TConnectorObject;
CableTraceErr: Boolean;
SavedMarkedCadTraceList: TList;
//Tolik 28/08/2025--
isNormbaseCable: Boolean;
SavedDropComponent: TSCSComponent;
//
function CheckIsElComponToConnect(aObject: TConnectorObject):Boolean;
@ -3549,6 +3552,17 @@ begin
// (íóæåí, ÷òîáû ñáðîñèòü ïðîâåðêó êîííåêòîðîâ íà ñíàïå)
Result := nil;
//Tolik 28/08/2025 --
isNormbaseCable := false;
if F_NormBase.GSCSBase.SCSComponent <> nil then
begin
isNormbaseCable := IsCableComponent(F_NormBase.GSCSBase.SCSComponent);
end;
SavedDropComponent := GDropComponent;
GDropComponent := nil;
//
SavedMarkedCadTraceList := TList.Create;
SaveDropCadMarkedTraces; // ñîõðàíèòü ñïèñîê è ñáðîñèòü (îòìå÷åííûõ äëÿ òðàññèðîâêè òðàññ íà êàäå)
@ -4243,9 +4257,31 @@ begin
if SavedConnectorsList <> nil then
FreeAndNil(SavedConnectorsList);
FreeAndNil(SavedLinesList);
end;
//FreeAndNil(SavedLinesList);
end;
//Tolik 28/08/2025 -- Åñëè íå òðàññèðîâêà ýëåêòðèêè(ãëàâíîå, ÷òîá íå ïîëîìàëàñü...), åñëè ëèíåéíûé êîìïîíåíò,
//òî ïîëîæèòü ïî òðàññàì, åñëè âêëþ÷åí ôëàæîê ðó÷íîé ïðîêëàäêè
if ((GDropComponent = nil) and (CallAutoTraceElectricMaster = false)) then
begin
if GAutoAddCableAfterDragDrop then
begin
if F_NormBase.GSCSBase.SCSComponent <> nil then
begin
if F_NormBase.GSCSBase.SCSComponent.IsLine = biTrue then
begin
for i := 0 to SavedLinesList.Count - 1 do
begin
CopyComponentToSCSObject(TOrthoLine(SavedLinesList[i]).ID, F_NormBase.GSCSBase.SCSComponent.ID, True);
if isNormbaseCable then //(åñëè êàáåëü òî ïîñîåäèíÿòü)
AutoConnectOnAppendCable(GCadForm.FCADListID, TOrthoLine(SavedLinesList[i]).ID);
end;
end;
end;
end;
end;
FreeAndNil(SavedLinesList);
//
GCadForm.PCad.DeselectAll(2);
// ïðîâåðêà íà ïðèâÿçêó îáúåêòà
@ -4369,6 +4405,9 @@ begin
GisOrthoLineHadow := False;
end;
end;
//Tolik 28/08/2025 --
GDropComponent := SavedDropComponent;
//
GisOrthoLineHadow := False; // Tolik 27/08/2021 --
RestoreCadMarkedTraces; // Tolik 08/06/2021 -- âîññòàíîâèòü ñïèñîê ïðîìàðêèðîâàííûõ òðàññ íà êàäå
//GCallAutoTraceElectricMaster := False; // Tolik 11/03/2021 --

View File

@ -98,7 +98,6 @@ object FSCS_Main: TFSCS_Main
OnDockDrop = PDock1DockDrop
OnDockOver = PDock1DockOver
OnUnDock = PDock1UnDock
ExplicitLeft = 1337
end
object pCADList: TPanel
Left = 0
@ -109,7 +108,6 @@ object FSCS_Main: TFSCS_Main
BevelOuter = bvNone
BorderStyle = bsSingle
TabOrder = 2
ExplicitWidth = 1342
object pageCADList: TPageControl
Left = 0
Top = 0
@ -125,7 +123,6 @@ object FSCS_Main: TFSCS_Main
Style = tsFlatButtons
TabOrder = 0
OnChange = pageCADListChange
ExplicitWidth = 1340
end
end
object cbMainPanel: TControlBar
@ -156,7 +153,6 @@ object FSCS_Main: TFSCS_Main
OnBandPaint = cbMainPanelBandPaint
OnDockOver = cbMainPanelDockOver
OnMouseDown = cbMainPanelMouseDown
ExplicitWidth = 1336
object tbFile: TToolBar
Left = 11
Top = 2
@ -1228,7 +1224,6 @@ object FSCS_Main: TFSCS_Main
TabOrder = 4
VisualStyle = vsClassic
OnHotSpotClick = pnHintBarHotSpotClick
ExplicitWidth = 1342
end
object ActionManager: TActionManager
ActionBars.SessionCount = 1080
@ -5889,7 +5884,7 @@ object FSCS_Main: TFSCS_Main
Left = 496
Top = 232
Bitmap = {
494C0101D2008C01C00310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101D2008C01C40310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000005003000001002000000000000050
0300000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -12899,7 +12894,7 @@ object FSCS_Main: TFSCS_Main
Left = 248
Top = 280
Bitmap = {
494C010123008C01D80320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010123008C01DC0320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000800000009000000001002000000000000020
0100000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -15471,7 +15466,7 @@ object FSCS_Main: TFSCS_Main
Left = 240
Top = 408
Bitmap = {
494C010112008C01CC030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010112008C01D0030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000038000000460000000100200000000000403D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -19974,7 +19969,7 @@ object FSCS_Main: TFSCS_Main
Left = 240
Top = 344
Bitmap = {
494C0101DE008C01B40618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101DE008C01B80618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
00000000000036000000280000006000000040050000010020000000000000E0
070000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9188003D2413003D241300FFFF

View File

@ -20058,6 +20058,7 @@ var
// 2011-05-10
xModelNode: TTreeNode;
OldMapScale: Integer;
prLists: TList;
begin
{$ifdef 3D}
if ActiveMDIChild <> nil then
@ -20080,8 +20081,15 @@ begin
// 22.07.2011
G3DModelForProject := False;
GisChangeFrom3D := False;
Gis3D := True;
//Tolik 29/08/2025 -- çàïèñàòü Óíî ïðîåêòà ïåðåä 3Ä
//Tolik 11/07/2023 --
SaveCurrProjectToUndoFiles(true);
//SaveCurrProjectToUndoFiles(true);
//
prLists := GetAllProjNormLists;
SaveForProjectUndo(prLists, true, false, true);
prLists.Free;
//
BeginProgress;
if not Assigned(frm3D) then
@ -20118,6 +20126,12 @@ begin
UndoListInPM(-1, GetPathToSCSUndoUniqDir(true), true, 0, 0);
}
//
if GisChangeFrom3D then
begin
end;
GisChangeFrom3D := False;
Gis3D := False;
// Tolik 23/07/2018 --
GCadForm.PCad.Refresh;
//
@ -21779,6 +21793,11 @@ begin
if not isMapScaleDifferent then
begin
G3DModelForProject := True;
//Tolik 29/08/2025 --
GIs3D := True;
GisChangeFrom3D := False;
SaveUndoProjBefore3D;
//
BeginProgress;
if not Assigned(frm3D) then
Application.CreateForm(Tfrm3D, frm3d);

View File

@ -29,7 +29,6 @@ object F_CAD: TF_CAD
OldCreateOrder = False
Position = poDefault
Visible = True
WindowState = wsMinimized
OnActivate = FormActivate
OnCanResize = FormCanResize
OnClose = FormClose
@ -134,7 +133,6 @@ object F_CAD: TF_CAD
OnPopMenuClicked = PCadPopMenuClicked
OnGUIEvent = PCadGUIEvent
OnToolChanged = PCadToolChanged
ExplicitTop = -1
object HorScroll: TScrollBar
Left = 0
Top = 449
@ -458,7 +456,7 @@ object F_CAD: TF_CAD
object cbManualCableTracingMode: TToolButton
Left = 720
Top = 0
Hint = #1056#1077#1078#1080#1084' '#1088#1091#1095#1085#1086#1081' '#1087#1088#1086#1082#1083#1072#1076#1082#1080' '#1082#1072#1073#1077#1083#1103'('#1076#1083#1103' '#1101#1083#1077#1082#1090#1088#1080#1082#1080')'
Hint = #1056#1077#1078#1080#1084' '#1088#1091#1095#1085#1086#1081' '#1087#1088#1086#1082#1083#1072#1076#1082#1080' '#1083#1080#1085#1077#1081#1085#1099#1093' '#1082#1086#1084#1087#1086#1085#1077#1085#1090
ImageIndex = 99
ParentShowHint = False
ShowHint = True
@ -593,64 +591,80 @@ object F_CAD: TF_CAD
69006700680074003A0001000100010001000100010001000D000A0074006200
530068006F0077005400720061006E00730070006100720065006E0063007900
0100530068006F0077005400720061006E00730050004100720065006E006300
790001000100010001000100010001000D000A0073007400480069006E007400
73005F0055006E00690063006F00640065000D000A004D004900740065006D00
5F004300610062006C0065004E006F00430061006E0061006C0001001A043004
310435043B043804200032043D04350420003A0430043D0430043B043E043204
01001A043004310435043B045604200037043E0432043D04560420003A043004
3D0430043B045604320401004300610062006C006500730020006F0075007400
730069006400650020006300680061006E006E0065006C007300010001000100
010001000D000A00630062004D0061006E00750061006C004300610062006C00
6500540072006100630069006E0067004D006F00640065000100200435043604
38043C0420004004430447043D043E04390420003F0440043E043A043B043004
34043A04380420003A043004310435043B044F04280034043B044F0420004D04
3B0435043A044204400438043A0438042900010020043504360438043C042000
4004430447043D043E04570420003F0440043E043A043B04300434043A043804
20003A043004310435043B044F042000280034043B044F04200035043B043504
3A044204400438043A043804290001004D0061006E00750061006C0020006300
610062006C006500200072006F007500740069006E00670020006D006F006400
65002000280065006C00650063007400720069006300610020006F006E006C00
79002900010001000100010001000D000A007300740044006900730070006C00
610079004C006100620065006C0073005F0055006E00690063006F0064006500
0D000A007300740046006F006E00740073005F0055006E00690063006F006400
65000D000A00540046005F0043004100440001004D0053002000530061006E00
730020005300650072006900660001004D0053002000530061006E0073002000
5300650072006900660001004D0053002000530061006E007300200053006500
7200690066000100010001004D0053002000530061006E007300200053006500
720069006600010001000D000A005000430061006400010047004F0053005400
010047004F0053005400010047004F005300540001000100010047004F005300
5400010001000D000A0073006200560069006500770001005300650067006F00
650020005500490001005400610068006F006D00610001005400610068006F00
6D0061000100010001005400610068006F006D006100010001000D000A007300
74004D0075006C00740069004C0069006E00650073005F0055006E0069006300
6F00640065000D000A007300740053007400720069006E00670073005F005500
6E00690063006F00640065000D000A00730074004F0074006800650072005300
7400720069006E00670073005F0055006E00690063006F00640065000D000A00
7300740043006F006C006C0065006300740069006F006E0073005F0055006E00
690063006F00640065000D000A00730074004300680061007200530065007400
73005F0055006E00690063006F00640065000D000A00540046005F0043004100
44000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
5400010041004E00530049005F00430048004100520053004500540001004400
45004600410055004C0054005F00430048004100520053004500540001000D00
0A0050004300610064000100440045004600410055004C0054005F0043004800
410052005300450054000100440045004600410055004C0054005F0043004800
410052005300450054000100440045004600410055004C0054005F0043004800
410052005300450054000100440045004600410055004C0054005F0043004800
410052005300450054000100440045004600410055004C0054005F0043004800
41005200530045005400010041004E00530049005F0043004800410052005300
450054000100440045004600410055004C0054005F0043004800410052005300
4500540001000D000A0073006200560069006500770001004400450046004100
790001000100010001000100010001000D000A00630062004D00610067006E00
6500740054006F00570061006C006C0073000100630062004D00610067006E00
6500740054006F00570061006C006C0073000100010001000100010001000100
0D000A0073007400480069006E00740073005F0055006E00690063006F006400
65000D000A004D004900740065006D005F004300610062006C0065004E006F00
430061006E0061006C0001001A043004310435043B043804200032043D043504
20003A0430043D0430043B043E04320401001A043004310435043B0456042000
37043E0432043D04560420003A0430043D0430043B0456043204010043006100
62006C006500730020006F007500740073006900640065002000630068006100
6E006E0065006C007300010001000100010001000D000A00630062004D006100
6E00750061006C004300610062006C006500540072006100630069006E006700
4D006F0064006500010020043504360438043C0420004004430447043D043E04
390420003F0440043E043A043B04300434043A04380420003B0438043D043504
39043D044B04450420003A043E043C043F043E043D0435043D04420401002004
3504360438043C0420004004430447043D043E04570420003F0440043E043A04
3B04300434043A04380420003B0456043D04560439043D043804450420003A04
3E043C043F043E043D0435043D04420401004D0061006E00750061006C002000
72006F007500740069006E00670020006D006F0064006500200066006F007200
20006C0069006E00650061007200200063006F006D0070006F006E0065006E00
74007300010001000100010001000D000A00630062004D00610067006E006500
740054006F00570061006C006C00730001001F04400438043C04300433043D04
380447043804320430043D043804350420003A0420004104420435043D043004
3C0419001704300436043C043804420435042000530048004900460054002000
34043B044F0420003204400435043C0435043D043D043E0433043E0420003E04
42043A043B044E04470435043D0438044F0401001F04400438043C0430043304
3D04560447044304320430043D043D044F04200034043E042000410442045604
3D0419001A00170430044204380441043D04560442044C042000530048004900
46005400200034043B044F042000420438043C044704300441043E0432043E04
33043E0420003204560434043A043B044E04470435043D043D044F0401004D00
610067006E006500740069007A006100740069006F006E00200074006F002000
770061006C006C00730019001A0048006F006C00640020005300480049004600
5400200074006F002000740065006D0070006F0072006100720069006C007900
2000640069007300610062006C006500010001000100010001000D000A007300
740044006900730070006C00610079004C006100620065006C0073005F005500
6E00690063006F00640065000D000A007300740046006F006E00740073005F00
55006E00690063006F00640065000D000A00540046005F004300410044000100
4D0053002000530061006E00730020005300650072006900660001004D005300
2000530061006E00730020005300650072006900660001004D00530020005300
61006E0073002000530065007200690066000100010001004D00530020005300
61006E007300200053006500720069006600010001000D000A00500043006100
6400010047004F0053005400010047004F0053005400010047004F0053005400
01000100010047004F0053005400010001000D000A0073006200560069006500
770001005300650067006F00650020005500490001005400610068006F006D00
610001005400610068006F006D0061000100010001005400610068006F006D00
6100010001000D000A00730074004D0075006C00740069004C0069006E006500
73005F0055006E00690063006F00640065000D000A0073007400530074007200
69006E00670073005F0055006E00690063006F00640065000D000A0073007400
4F00740068006500720053007400720069006E00670073005F0055006E006900
63006F00640065000D000A007300740043006F006C006C006500630074006900
6F006E0073005F0055006E00690063006F00640065000D000A00730074004300
68006100720053006500740073005F0055006E00690063006F00640065000D00
0A00540046005F004300410044000100440045004600410055004C0054005F00
43004800410052005300450054000100440045004600410055004C0054005F00
43004800410052005300450054000100440045004600410055004C0054005F00
43004800410052005300450054000100440045004600410055004C0054005F00
43004800410052005300450054000100440045004600410055004C0054005F00
4300480041005200530045005400010041004E00530049005F00430048004100
52005300450054000100440045004600410055004C0054005F00430048004100
520053004500540001000D000A00500043006100640001004400450046004100
55004C0054005F00430048004100520053004500540001004400450046004100
55004C0054005F00430048004100520053004500540001004400450046004100
55004C0054005F00430048004100520053004500540001004400450046004100
55004C0054005F00430048004100520053004500540001004400450046004100
55004C0054005F004300480041005200530045005400010041004E0053004900
5F0043004800410052005300450054000100440045004600410055004C005400
5F00430048004100520053004500540001000D000A00}
5F00430048004100520053004500540001000D000A0073006200560069006500
77000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
54000100440045004600410055004C0054005F00430048004100520053004500
5400010041004E00530049005F00430048004100520053004500540001004400
45004600410055004C0054005F00430048004100520053004500540001000D00
0A00}
end
object TimerFindSnap: TTimer
Enabled = False

View File

@ -11258,6 +11258,10 @@ var
begin
if GisAutoRotingCable then // Tolik 30/05/2022 --
exit;
//Tolik 29/08/2025 --
if GIs3D then
exit;
Result := nil;
//Tolik 16/08/2021 --
GetPathToSCSCADDir;
@ -11362,6 +11366,10 @@ begin
end;
if CanProcess then
begin
//Tolik 29/08/2025 -- äëÿ 3Ä áóäåì äåëàòü îáÿçàòåëüíî
if not a3D then
begin
//
// ïðîâåðèòü íóæíî ëè ñåé÷àñ äåëàòü ñëåïîê
if not CheckMakeSaveForUndo then
begin
@ -11373,7 +11381,11 @@ begin
end;
// Ïðèáàâèòü àêòèâíîå äåéñòâèå
FActiveActions := FActiveActions + 1;
end;
//Tolik 29/08/2025 -- äëÿ 3Ä óäàëÿòü ñ êàðóñåëè Óíäî íå áóäåì
if not a3D then
begin
//
// êîë-âî îòêàòîâ ïåðåïîëíåíî, ñìåñòèòü.
if FSCSUndoList.Count = 10 then
begin
@ -11407,6 +11419,7 @@ begin
ListUndoAction.FCadFileName := FName;
end;
end;
end;
ListUndoAction := TListUndoAction.Create(aType, aSavePM);
// çàïèñàòü ïîñëåäíåå èçìåíåíèå â ôàéë, íàçâàíèå â FUndoList
@ -11705,8 +11718,7 @@ begin
end;
end;
//Tolik 18/07/2025 --
procedure TF_CAD.SCSUndoNormalList(a3d: Boolean = False);
procedure TF_CAD.SCSUndoNormalList(a3D: Boolean = false);
var
FName: string;
Figure: TFigure;
@ -11724,9 +11736,11 @@ var
//Tolik
CadFigList: TList;
SaveGCadRefreshFlag: boolean;
//f: TextFile;
begin
try
if a3D then
begin
SaveGCadRefreshFlag := GCanRefreshCad;
GCanRefreshCad := false;
SavedGCadForm := GCadForm;
@ -11741,20 +11755,12 @@ begin
FullEndUpdateCad(true); // Tolik 24/03/2021 --
BeginProgress;
if (FSCSUndoList.Count > 0) or (G3dUndoActList.Count > 0) then
if FSCSUndoList.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
@ -11778,7 +11784,6 @@ begin
CountInPrj := 1;
SaveForRedo(ListUndoAction.ActionType, ListUndoAction.FSavePM, ListUndoAction.FIsProject, CountInPrj);
end;
end;
//
if FListType <> lt_Normal then
PCad.RecordUndo := False;
@ -11852,6 +11857,55 @@ begin
end;
FreeAndNil(CadFigList);
{
for i := 0 to PCad.FigureCount - 1 do
begin
Figure := TFigure(PCad.Figures.Items[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;
TConnectorObject(Figure).FJoinedListIDForBox := -1;
end
else if CheckFigureByClassName(Figure, cTOrthoLine) then
TOrthoLine(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTSCSFigureGrp) then
TSCSFigureGrp(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTCabinet) then
TCabinet(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTCabinetExt) then
TCabinetExt(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTHouse) then
THouse(Figure).RaiseProperties;
end;
if GNeedReRaiseProperties then
begin
i := 0;
while i < PCad.FigureCount do
begin
Figure := TFigure(PCad.Figures.Items[i]);
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
TConnectorObject(Figure).ReRaiseProperties;
end;
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
TOrthoLine(Figure).ReRaiseProperties;
end;
i := i + 1;
end;
end;
}
finally
FUndoStatus := False;
end;
@ -11863,23 +11917,25 @@ begin
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;
// Tolik 11/12/2020 -- Çäåñü ïðàâèëüíî, òîëüêî åñëè áóäåò îäèí ëèñò, èíà÷å ïåðåïóòàþòÿ íàñòðîéêè Êàäà
// áåðåò, íàïðèìåð íàñòðîéêè ëèñòà ¹ 3 è ïðèìåíÿåò ê êàáèíåòàì ëèñòà ¹ 1...ïîëó÷àåòñÿ õåðíÿ.
// List Params
{CurListParams := GetListParams(FCADListID);
FCanSaveForUndo := False;
LoadSettingsForListByParams(CurListParams, True);
SetVisibleCabinetsNumbers(FShowCabinetsNumbers);
SetVisibleCabinetsBounds(FShowCabinetsBounds);
FCanSaveForUndo := True;}
if CountInPrj = 1 then
begin
// List Params
@ -11922,6 +11978,247 @@ begin
F_SCSObjectsProp.ClearAllProperties;
//
end;
end
else
begin
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 then
begin
ListUndoAction := TListUndoAction(FSCSUndoList[FSCSUndoList.Count - 1]);
FName := ListUndoAction.FCadFileName;
// åñòü ôàéë
if FileExists(FName) 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;
//
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);
{
for i := 0 to PCad.FigureCount - 1 do
begin
Figure := TFigure(PCad.Figures.Items[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;
TConnectorObject(Figure).FJoinedListIDForBox := -1;
end
else if CheckFigureByClassName(Figure, cTOrthoLine) then
TOrthoLine(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTSCSFigureGrp) then
TSCSFigureGrp(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTCabinet) then
TCabinet(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTCabinetExt) then
TCabinetExt(Figure).RaiseProperties
else if CheckFigureByClassName(Figure, cTHouse) then
THouse(Figure).RaiseProperties;
end;
if GNeedReRaiseProperties then
begin
i := 0;
while i < PCad.FigureCount do
begin
Figure := TFigure(PCad.Figures.Items[i]);
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
TConnectorObject(Figure).ReRaiseProperties;
end;
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
TOrthoLine(Figure).ReRaiseProperties;
end;
i := i + 1;
end;
end;
}
finally
FUndoStatus := False;
end;
FindObjectsForConvertClasses;
PCad.DrawFigures(True);
// óäàëèòü ôàéë
if FileExists(FName) then
DeleteFile(FName);
// óäàëèòü ïîñëåäíèé êîòîðûé ïîäíèìàåòñÿ èç ñïèêà
FSCSUndoList.Delete(FSCSUndoList.Count - 1);
// *UNDO ProjectManager*
UndoListInPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject, 0, CountInPrj);
// åñòü ñâÿçè ñ äðóãèìè ýòàæàìè - ïîäíÿòü ñî âñåõ ñâÿçàííûõ ëèñòîâ
if ListUndoAction.ActionType = uat_Floor then
begin
LoadProjectUndoActions(Self, ListUndoAction);
end;
// Tolik 11/12/2020 -- Çäåñü ïðàâèëüíî, òîëüêî åñëè áóäåò îäèí ëèñò, èíà÷å ïåðåïóòàþòÿ íàñòðîéêè Êàäà
// áåðåò, íàïðèìåð íàñòðîéêè ëèñòà ¹ 3 è ïðèìåíÿåò ê êàáèíåòàì ëèñòà ¹ 1...ïîëó÷àåòñÿ õåðíÿ.
// List Params
{CurListParams := GetListParams(FCADListID);
FCanSaveForUndo := False;
LoadSettingsForListByParams(CurListParams, True);
SetVisibleCabinetsNumbers(FShowCabinetsNumbers);
SetVisibleCabinetsBounds(FShowCabinetsBounds);
FCanSaveForUndo := True;}
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;
end;
except
on E: Exception do addExceptionToLogEx('TF_CAD.SCSUndoNormalList', E.Message);
end;
@ -11930,7 +12227,6 @@ begin
if FListType <> lt_Normal then
PCad.RecordUndo := True;
//
// Tolik 26/09/2017 --
if FListSettings.ShowTracesCrossPoints > 0 then
ShowTracesIntersections(2, FListSettings.ShowTracesCrossPoints);
@ -11939,13 +12235,10 @@ begin
GCanRefreshCad := SaveGCadRefreshFlag;
EndProgress;
{append(f);
writeln(f, 'END');
writeln(f, '---------------------------------------------------------------------------');
CloseFile(f);}
PCad.refresh;
end;
(*
procedure TF_CAD.SCSUndoNormalList;
var

View File

@ -1355,6 +1355,8 @@ type
Procedure ShowInvoice;
//Tolik 24/08/2025 --
Procedure CreateBFMagistralTr(aFull: Boolean = true; aDown: Boolean = False; aUp: Boolean = False; aCompon: TSCSComponent = nil);
function GetAllProjNormLists: TList; // Tolik 29/08/2025 --
procedure SaveUndoProjBefore3D; // Tolik 29/08/2025 --
//
const
{$IF Defined(SCS_PANDUIT) or Defined(SCS_PE)}
@ -1645,6 +1647,10 @@ var
GDefineCounter: integer = 0;
// 2011-05-10
G3DModelForProject: Boolean = False;
//Tolik 29/08/2025 --
GIs3D: Boolean = False;
{$IF Defined(ES_GRAPH_SC)}
GUseArhOnlyMode: Boolean = True;
{$ELSE}
@ -1768,6 +1774,32 @@ uses USCS_Main, Menus, U_main, U_MasterNewList, U_MasterNewListLite, U_AutoTrace
U_InputRadio, U_BaseConstants,
cxSpinEdit, Printers, PCPanel, U_InputMark, U_PEAutotraceDialog{Tolik}, U_SCSClasses, U_MakeEditCrossConnection, U_DimLineDialog, U_ResourceReport;
//Tolik 29/08/2025 --
function GetAllProjNormLists: TList; // Tolik 29/08/2025 --
var i: integer;
Cad: TF_CAD;
begin
Result := TList.Create;
for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 do
begin
if F_ProjMan.GSCSBase.CurrProject.ProjectLists[i].Setting.ListType = lt_Normal then
begin
Cad := GetListByID(F_ProjMan.GSCSBase.CurrProject.ProjectLists[i].SCSID);
if Cad <> nil then
Result.Add(Cad);
end;
end;
end;
procedure SaveUndoProjBefore3D;
var prLists: TList;
begin
prLists := GetAllProjNormLists;
SaveForProjectUndo(prLists, true, false, true);
prLists.Free;
end;
//
//Tolik 24/08/2025 --
Procedure CreateBFMagistralTR(aFull: Boolean = true; aDown: Boolean = False; aUp: Boolean = False; aCompon: TSCSComponent = nil);
var i, ListIndex: integer;