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

View File

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

View File

@ -3115,6 +3115,9 @@ var
FirstConn, LastConn: TConnectorObject; FirstConn, LastConn: TConnectorObject;
CableTraceErr: Boolean; CableTraceErr: Boolean;
SavedMarkedCadTraceList: TList; SavedMarkedCadTraceList: TList;
//Tolik 28/08/2025--
isNormbaseCable: Boolean;
SavedDropComponent: TSCSComponent;
// //
function CheckIsElComponToConnect(aObject: TConnectorObject):Boolean; function CheckIsElComponToConnect(aObject: TConnectorObject):Boolean;
@ -3549,6 +3552,17 @@ begin
// (íóæåí, ÷òîáû ñáðîñèòü ïðîâåðêó êîííåêòîðîâ íà ñíàïå) // (íóæåí, ÷òîáû ñáðîñèòü ïðîâåðêó êîííåêòîðîâ íà ñíàïå)
Result := nil; 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; SavedMarkedCadTraceList := TList.Create;
SaveDropCadMarkedTraces; // ñîõðàíèòü ñïèñîê è ñáðîñèòü (îòìå÷åííûõ äëÿ òðàññèðîâêè òðàññ íà êàäå) SaveDropCadMarkedTraces; // ñîõðàíèòü ñïèñîê è ñáðîñèòü (îòìå÷åííûõ äëÿ òðàññèðîâêè òðàññ íà êàäå)
@ -4243,9 +4257,31 @@ begin
if SavedConnectorsList <> nil then if SavedConnectorsList <> nil then
FreeAndNil(SavedConnectorsList); 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); GCadForm.PCad.DeselectAll(2);
// ïðîâåðêà íà ïðèâÿçêó îáúåêòà // ïðîâåðêà íà ïðèâÿçêó îáúåêòà
@ -4369,6 +4405,9 @@ begin
GisOrthoLineHadow := False; GisOrthoLineHadow := False;
end; end;
end; end;
//Tolik 28/08/2025 --
GDropComponent := SavedDropComponent;
//
GisOrthoLineHadow := False; // Tolik 27/08/2021 -- GisOrthoLineHadow := False; // Tolik 27/08/2021 --
RestoreCadMarkedTraces; // Tolik 08/06/2021 -- âîññòàíîâèòü ñïèñîê ïðîìàðêèðîâàííûõ òðàññ íà êàäå RestoreCadMarkedTraces; // Tolik 08/06/2021 -- âîññòàíîâèòü ñïèñîê ïðîìàðêèðîâàííûõ òðàññ íà êàäå
//GCallAutoTraceElectricMaster := False; // Tolik 11/03/2021 -- //GCallAutoTraceElectricMaster := False; // Tolik 11/03/2021 --

View File

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

View File

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

View File

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

View File

@ -11258,6 +11258,10 @@ var
begin begin
if GisAutoRotingCable then // Tolik 30/05/2022 -- if GisAutoRotingCable then // Tolik 30/05/2022 --
exit; exit;
//Tolik 29/08/2025 --
if GIs3D then
exit;
Result := nil; Result := nil;
//Tolik 16/08/2021 -- //Tolik 16/08/2021 --
GetPathToSCSCADDir; GetPathToSCSCADDir;
@ -11362,49 +11366,58 @@ begin
end; end;
if CanProcess then if CanProcess then
begin begin
// ïðîâåðèòü íóæíî ëè ñåé÷àñ äåëàòü ñëåïîê //Tolik 29/08/2025 -- äëÿ 3Ä áóäåì äåëàòü îáÿçàòåëüíî
if not CheckMakeSaveForUndo then if not a3D then
begin begin
//
// ïðîâåðèòü íóæíî ëè ñåé÷àñ äåëàòü ñëåïîê
if not CheckMakeSaveForUndo then
begin
// Ïðèáàâèòü àêòèâíîå äåéñòâèå
FActiveActions := FActiveActions + 1;
// âûéòè
GCanRefreshCad := SaveGCadRefreshFlag;
exit;
end;
// Ïðèáàâèòü àêòèâíîå äåéñòâèå // Ïðèáàâèòü àêòèâíîå äåéñòâèå
FActiveActions := FActiveActions + 1; FActiveActions := FActiveActions + 1;
// âûéòè
GCanRefreshCad := SaveGCadRefreshFlag;
exit;
end; end;
// Ïðèáàâèòü àêòèâíîå äåéñòâèå //Tolik 29/08/2025 -- äëÿ 3Ä óäàëÿòü ñ êàðóñåëè Óíäî íå áóäåì
FActiveActions := FActiveActions + 1; if not a3D then
// êîë-âî îòêàòîâ ïåðåïîëíåíî, ñìåñòèòü.
if FSCSUndoList.Count = 10 then
begin begin
// óäàëèòü ïåðâûé ôàéë â ñïèñêå //
ListUndoAction := TListUndoAction(FSCSUndoList[0]); // êîë-âî îòêàòîâ ïåðåïîëíåíî, ñìåñòèòü.
FName := ListUndoAction.FCadFileName; if FSCSUndoList.Count = 10 then
// óäàëèòü ôàéë
if FileExists(FName) then
DeleteFile(FName);
// óäàëèòü ýëåìåíò èç ñïèñêà ôàéëîâ
FSCSUndoList.Delete(0);
// *UNDO ProjectManager*
DeleteUndoFromPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject);
// óäàëèòü îáúåêò UndoAction
if ListUndoAction.ActionType = uat_Floor then
begin begin
// çàâÿçêè íà äðóãèå ýòàæè - óäàëèòü âñþ öåïî÷êó // óäàëèòü ïåðâûé ôàéë â ñïèñêå
DeleteProjectUndoActions(Self, ListUndoAction); ListUndoAction := TListUndoAction(FSCSUndoList[0]);
end; FName := ListUndoAction.FCadFileName;
FreeAndNil(ListUndoAction); // óäàëèòü ôàéë
// ïåðåïðèñâîèòü èìåíà ôàéëîâ ñ ó÷åòîì ñìåùåíèÿ if FileExists(FName) then
for i := 0 to FSCSUndoList.Count - 1 do DeleteFile(FName);
begin // óäàëèòü ýëåìåíò èç ñïèñêà ôàéëîâ
ListUndoAction := TListUndoAction(FSCSUndoList[i]); FSCSUndoList.Delete(0);
// FName := FUndoDir + FCADListName + IntTostr(FCADListIndex) + '_' + IntToStr(i);
FName := FUndoDir + FCADListFileName + '_' + IntToStr(i); // *UNDO ProjectManager*
OldFName := ListUndoAction.FCadFileName; DeleteUndoFromPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject);
RenameFile(OldFName, FName);
ListUndoAction.FCadFileName := FName; // óäàëèòü îáúåêò UndoAction
if ListUndoAction.ActionType = uat_Floor then
begin
// çàâÿçêè íà äðóãèå ýòàæè - óäàëèòü âñþ öåïî÷êó
DeleteProjectUndoActions(Self, ListUndoAction);
end;
FreeAndNil(ListUndoAction);
// ïåðåïðèñâîèòü èìåíà ôàéëîâ ñ ó÷åòîì ñìåùåíèÿ
for i := 0 to FSCSUndoList.Count - 1 do
begin
ListUndoAction := TListUndoAction(FSCSUndoList[i]);
// FName := FUndoDir + FCADListName + IntTostr(FCADListIndex) + '_' + IntToStr(i);
FName := FUndoDir + FCADListFileName + '_' + IntToStr(i);
OldFName := ListUndoAction.FCadFileName;
RenameFile(OldFName, FName);
ListUndoAction.FCadFileName := FName;
end;
end; end;
end; end;
@ -11705,8 +11718,7 @@ begin
end; end;
end; end;
//Tolik 18/07/2025 -- //Tolik 18/07/2025 --
procedure TF_CAD.SCSUndoNormalList(a3D: Boolean = false);
procedure TF_CAD.SCSUndoNormalList(a3d: Boolean = False);
var var
FName: string; FName: string;
Figure: TFigure; Figure: TFigure;
@ -11724,37 +11736,31 @@ var
//Tolik //Tolik
CadFigList: TList; CadFigList: TList;
SaveGCadRefreshFlag: boolean; SaveGCadRefreshFlag: boolean;
//f: TextFile;
begin begin
try try
SaveGCadRefreshFlag := GCanRefreshCad; if a3D then
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 begin
if a3d then SaveGCadRefreshFlag := GCanRefreshCad;
ListUndoAction := TListUndoAction(G3dUndoActList[0]) GCanRefreshCad := false;
else SavedGCadForm := GCadForm;
ListUndoAction := TListUndoAction(FSCSUndoList[FSCSUndoList.Count - 1]); ListOfLists := nil; // Tolik 11/12/2020 --
FName := ListUndoAction.FCadFileName; // IGOR 2017-04-25 åñëè ýòî íå ñäåëàòü, äåáàãèòü ïîñëå àíäó/ðåäó ïîòîì íåðåàëüíî ïðè âêëþ÷åííîì ñòîï-îí ÀÂ
// åñòü ôàéë self.UnSnapFigure;
if FileExists(FName) then GPrevFigureTraceTo := nil;
GPrevFigureSnap := nil;
GFigureSnap := nil;
FullEndUpdateCad(true); // Tolik 24/03/2021 --
BeginProgress;
if FSCSUndoList.Count > 0 then
begin begin
// åñëè íà 3Ä ListUndoAction := TListUndoAction(FSCSUndoList[FSCSUndoList.Count - 1]);
CountInPrj := 0; FName := ListUndoAction.FCadFileName;
if not a3d then // åñòü ôàéë
if FileExists(FName) then
begin begin
// Ïåðåä UNDO, ñîçäàåòñÿ ñëåïîê òåêóùåãî ñîñòîÿíèÿ äëÿ REDO // Ïåðåä UNDO, ñîçäàåòñÿ ñëåïîê òåêóùåãî ñîñòîÿíèÿ äëÿ REDO
if ListUndoAction.ActionType = uat_Floor then if ListUndoAction.ActionType = uat_Floor then
@ -11778,149 +11784,440 @@ begin
CountInPrj := 1; CountInPrj := 1;
SaveForRedo(ListUndoAction.ActionType, ListUndoAction.FSavePM, ListUndoAction.FIsProject, CountInPrj); SaveForRedo(ListUndoAction.ActionType, ListUndoAction.FSavePM, ListUndoAction.FIsProject, CountInPrj);
end; end;
end; //
// if FListType <> lt_Normal then
if FListType <> lt_Normal then PCad.RecordUndo := False;
PCad.RecordUndo := False; // ïåðåä î÷èñòêîé ñáðîñèì ÷òîáû ñðàáîòàëà ïðîâåðêà â TConnectorObject.Destroy;
// ïåðåä î÷èñòêîé ñáðîñèì ÷òîáû ñðàáîòàëà ïðîâåðêà â TConnectorObject.Destroy; PCad.OnObjectInserted := nil;
PCad.OnObjectInserted := nil;
//ClearSCSFigures; //ClearSCSFigures;
Try Try
F_ProjMan.Tree_Catalog.Items.BeginUpdate; F_ProjMan.Tree_Catalog.Items.BeginUpdate;
//ClearFiguresOnListUndoRedo; //ClearFiguresOnListUndoRedo;
GProjectClose := True; GProjectClose := True;
GClearFigures := True; GClearFigures := True;
GCadForm.FCadClose := True; GCadForm.FCadClose := True;
GProjectClose := True; GProjectClose := True;
//ClearFiguresOnListDelete(GCadForm); //ClearFiguresOnListDelete(GCadForm);
ClearSCSFigures; ClearSCSFigures;
Finally Finally
F_ProjMan.Tree_Catalog.Items.EndUpdate; F_ProjMan.Tree_Catalog.Items.EndUpdate;
GProjectClose := false; GProjectClose := false;
GClearFigures := false; GClearFigures := false;
GCadForm.FCadClose := false; GCadForm.FCadClose := false;
GProjectClose := false; GProjectClose := false;
End; End;
//PCad.OnObjectInserted := nil; //PCad.OnObjectInserted := nil;
FUndoFiguresList.Clear; FUndoFiguresList.Clear;
PCad.LoadSCSFiguresFromFile(FName); PCad.LoadSCSFiguresFromFile(FName);
PCad.OnObjectInserted := PCadObjectInserted; PCad.OnObjectInserted := PCadObjectInserted;
FUndoStatus := True; FUndoStatus := True;
try try
if GListWithEndPoint = Self then 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 begin
NetObj := TNet(PCad.Figures.Items[i]); GEndPoint := nil;
if NetObj.FComponID = 0 then 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 begin
FActiveNet := NetObj; NetObj := TNet(PCad.Figures.Items[i]);
ActiveNet := FActiveNet; if NetObj.FComponID = 0 then
end; begin
end FActiveNet := NetObj;
else if CheckFigureByClassName(Figure, cTConnectorObject) then 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 begin
TConnectorObject(Figure).RaiseProperties(CadFigList); Figure := TFigure(PCad.Figures.Items[i]);
TConnectorObject(Figure).FJoinedListIDForBox := -1; if CheckFigureByClassName(Figure, 'TNet') then
end begin
else if CheckFigureByClassName(Figure, cTOrthoLine) then NetObj := TNet(PCad.Figures.Items[i]);
TOrthoLine(Figure).RaiseProperties(CadFigList) if NetObj.FComponID = 0 then
else if CheckFigureByClassName(Figure, cTSCSFigureGrp) then begin
TSCSFigureGrp(Figure).RaiseProperties(CadFigList) FActiveNet := NetObj;
else if CheckFigureByClassName(Figure, cTCabinet) then ActiveNet := FActiveNet;
TCabinet(Figure).RaiseProperties(CadFigList) end;
else if CheckFigureByClassName(Figure, cTCabinetExt) then end
TCabinetExt(Figure).RaiseProperties(CadFigList) else if CheckFigureByClassName(Figure, cTConnectorObject) then
else if CheckFigureByClassName(Figure, cTHouse) then begin
THouse(Figure).RaiseProperties(CadFigList); 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; end;
FreeAndNil(CadFigList);
finally FindObjectsForConvertClasses;
FUndoStatus := False; PCad.DrawFigures(True);
end;
FindObjectsForConvertClasses; // óäàëèòü ôàéë
PCad.DrawFigures(True); if FileExists(FName) then
DeleteFile(FName);
// óäàëèòü ôàéë // óäàëèòü ïîñëåäíèé êîòîðûé ïîäíèìàåòñÿ èç ñïèêà
if FileExists(FName) then
DeleteFile(FName);
// óäàëèòü ïîñëåäíèé êîòîðûé ïîäíèìàåòñÿ èç ñïèêà
if a3d then
G3dUndoActList.delete(0)
else
FSCSUndoList.Delete(FSCSUndoList.Count - 1); FSCSUndoList.Delete(FSCSUndoList.Count - 1);
// *UNDO ProjectManager* // *UNDO ProjectManager*
UndoListInPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject, 0, CountInPrj); UndoListInPM(FCADListID, ListUndoAction.FBasePath, ListUndoAction.FIsProject, 0, CountInPrj);
// åñòü ñâÿçè ñ äðóãèìè ýòàæàìè - ïîäíÿòü ñî âñåõ ñâÿçàííûõ ëèñòîâ // åñòü ñâÿçè ñ äðóãèìè ýòàæàìè - ïîäíÿòü ñî âñåõ ñâÿçàííûõ ëèñòîâ
if not a3d then
begin
if ListUndoAction.ActionType = uat_Floor then if ListUndoAction.ActionType = uat_Floor then
begin begin
LoadProjectUndoActions(Self, ListUndoAction); LoadProjectUndoActions(Self, ListUndoAction);
end; end;
end; // Tolik 11/12/2020 -- Çäåñü ïðàâèëüíî, òîëüêî åñëè áóäåò îäèí ëèñò, èíà÷å ïåðåïóòàþòÿ íàñòðîéêè Êàäà
// áåðåò, íàïðèìåð íàñòðîéêè ëèñòà ¹ 3 è ïðèìåíÿåò ê êàáèíåòàì ëèñòà ¹ 1...ïîëó÷àåòñÿ õåðíÿ.
if CountInPrj = 1 then
begin
// List Params // List Params
CurListParams := GetListParams(FCADListID); {CurListParams := GetListParams(FCADListID);
FCanSaveForUndo := False; FCanSaveForUndo := False;
LoadSettingsForListByParams(CurListParams, True); LoadSettingsForListByParams(CurListParams, True);
SetVisibleCabinetsNumbers(FShowCabinetsNumbers); SetVisibleCabinetsNumbers(FShowCabinetsNumbers);
SetVisibleCabinetsBounds(FShowCabinetsBounds); SetVisibleCabinetsBounds(FShowCabinetsBounds);
FCanSaveForUndo := True; FCanSaveForUndo := True;}
OnAfterUndo; 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 end
else else
if CountInPrj > 1 then FSCSUndoList.Remove(ListUndoAction);
begin // óäàëèòü îáúåêò UndoAction
if ListOfLists <> nil then FreeAndNil(ListUndoAction);
begin // Tolik --28/06/2016 --
for i := 0 to ListOfLists.Count - 1 do if Assigned(F_SCSObjectsProp) then
begin if F_SCSObjectsProp.Showing then
GCadForm := TF_CAD(ListOfLists[i]); F_SCSObjectsProp.ClearAllProperties;
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 end;
else end
FSCSUndoList.Remove(ListUndoAction); else
// óäàëèòü îáúåêò UndoAction begin
FreeAndNil(ListUndoAction); SaveGCadRefreshFlag := GCanRefreshCad;
// Tolik --28/06/2016 -- GCanRefreshCad := false;
if Assigned(F_SCSObjectsProp) then SavedGCadForm := GCadForm;
if F_SCSObjectsProp.Showing then ListOfLists := nil; // Tolik 11/12/2020 --
F_SCSObjectsProp.ClearAllProperties;
// // 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; end;
except except
on E: Exception do addExceptionToLogEx('TF_CAD.SCSUndoNormalList', E.Message); on E: Exception do addExceptionToLogEx('TF_CAD.SCSUndoNormalList', E.Message);
@ -11930,7 +12227,6 @@ begin
if FListType <> lt_Normal then if FListType <> lt_Normal then
PCad.RecordUndo := True; PCad.RecordUndo := True;
// //
// Tolik 26/09/2017 -- // Tolik 26/09/2017 --
if FListSettings.ShowTracesCrossPoints > 0 then if FListSettings.ShowTracesCrossPoints > 0 then
ShowTracesIntersections(2, FListSettings.ShowTracesCrossPoints); ShowTracesIntersections(2, FListSettings.ShowTracesCrossPoints);
@ -11939,13 +12235,10 @@ begin
GCanRefreshCad := SaveGCadRefreshFlag; GCanRefreshCad := SaveGCadRefreshFlag;
EndProgress; EndProgress;
{append(f);
writeln(f, 'END');
writeln(f, '---------------------------------------------------------------------------');
CloseFile(f);}
PCad.refresh; PCad.refresh;
end; end;
(* (*
procedure TF_CAD.SCSUndoNormalList; procedure TF_CAD.SCSUndoNormalList;
var var

View File

@ -1355,6 +1355,8 @@ type
Procedure ShowInvoice; Procedure ShowInvoice;
//Tolik 24/08/2025 -- //Tolik 24/08/2025 --
Procedure CreateBFMagistralTr(aFull: Boolean = true; aDown: Boolean = False; aUp: Boolean = False; aCompon: TSCSComponent = nil); 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 const
{$IF Defined(SCS_PANDUIT) or Defined(SCS_PE)} {$IF Defined(SCS_PANDUIT) or Defined(SCS_PE)}
@ -1645,6 +1647,10 @@ var
GDefineCounter: integer = 0; GDefineCounter: integer = 0;
// 2011-05-10 // 2011-05-10
G3DModelForProject: Boolean = False; G3DModelForProject: Boolean = False;
//Tolik 29/08/2025 --
GIs3D: Boolean = False;
{$IF Defined(ES_GRAPH_SC)} {$IF Defined(ES_GRAPH_SC)}
GUseArhOnlyMode: Boolean = True; GUseArhOnlyMode: Boolean = True;
{$ELSE} {$ELSE}
@ -1768,6 +1774,32 @@ uses USCS_Main, Menus, U_main, U_MasterNewList, U_MasterNewListLite, U_AutoTrace
U_InputRadio, U_BaseConstants, U_InputRadio, U_BaseConstants,
cxSpinEdit, Printers, PCPanel, U_InputMark, U_PEAutotraceDialog{Tolik}, U_SCSClasses, U_MakeEditCrossConnection, U_DimLineDialog, U_ResourceReport; 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 -- //Tolik 24/08/2025 --
Procedure CreateBFMagistralTR(aFull: Boolean = true; aDown: Boolean = False; aUp: Boolean = False; aCompon: TSCSComponent = nil); Procedure CreateBFMagistralTR(aFull: Boolean = true; aDown: Boolean = False; aUp: Boolean = False; aCompon: TSCSComponent = nil);
var i, ListIndex: integer; var i, ListIndex: integer;