mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 09:35:40 +02:00
First commit
This commit is contained in:
parent
1785c2875d
commit
2e9a994856
@ -1,10 +1,10 @@
|
||||
object frm3D: Tfrm3D
|
||||
Left = 1
|
||||
Top = 1
|
||||
Left = -7
|
||||
Top = 7
|
||||
BorderIcons = [biSystemMenu]
|
||||
Caption = #1055#1088#1086#1089#1084#1086#1090#1088' '#1074' 3D'
|
||||
ClientHeight = 687
|
||||
ClientWidth = 1342
|
||||
ClientHeight = 705
|
||||
ClientWidth = 1360
|
||||
Color = clBtnFace
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
@ -16,7 +16,6 @@ object frm3D: Tfrm3D
|
||||
OldCreateOrder = False
|
||||
Position = poMainFormCenter
|
||||
Scaled = False
|
||||
WindowState = wsMaximized
|
||||
OnCloseQuery = FormCloseQuery
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
@ -35,15 +34,15 @@ object frm3D: Tfrm3D
|
||||
object panMain: TPanel
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 1342
|
||||
Height = 687
|
||||
Width = 1360
|
||||
Height = 705
|
||||
Align = alClient
|
||||
Caption = 'Panel2'
|
||||
TabOrder = 0
|
||||
object Splitter1: TSplitter
|
||||
Left = 1338
|
||||
Left = 1356
|
||||
Top = 42
|
||||
Height = 644
|
||||
Height = 662
|
||||
Align = alRight
|
||||
AutoSnap = False
|
||||
ResizeStyle = rsUpdate
|
||||
@ -53,14 +52,14 @@ object frm3D: Tfrm3D
|
||||
object panUpper: TPanel
|
||||
Left = 1
|
||||
Top = 1
|
||||
Width = 1340
|
||||
Width = 1358
|
||||
Height = 41
|
||||
Align = alTop
|
||||
BevelOuter = bvNone
|
||||
Color = 15329769
|
||||
TabOrder = 0
|
||||
DesignSize = (
|
||||
1340
|
||||
1358
|
||||
41)
|
||||
object SpeedButton1: TSpeedButton
|
||||
Left = 8
|
||||
@ -108,7 +107,7 @@ object frm3D: Tfrm3D
|
||||
OnClick = SpeedButton3Click
|
||||
end
|
||||
object lbViewType: TLabel
|
||||
Left = 1168
|
||||
Left = 1186
|
||||
Top = 25
|
||||
Width = 163
|
||||
Height = 16
|
||||
@ -155,7 +154,7 @@ object frm3D: Tfrm3D
|
||||
OnClick = sbSaveModelClick
|
||||
end
|
||||
object sbApplyScsModel: TSpeedButton
|
||||
Left = 1073
|
||||
Left = 1091
|
||||
Top = 13
|
||||
Width = 161
|
||||
Height = 22
|
||||
@ -169,10 +168,9 @@ object frm3D: Tfrm3D
|
||||
Font.Style = []
|
||||
ParentFont = False
|
||||
OnClick = sbApplyScsModelClick
|
||||
ExplicitLeft = 1091
|
||||
end
|
||||
object SpeedButton4: TSpeedButton
|
||||
Left = 1240
|
||||
Left = 1258
|
||||
Top = 8
|
||||
Width = 94
|
||||
Height = 22
|
||||
@ -211,16 +209,16 @@ object frm3D: Tfrm3D
|
||||
object panScene: TPanel
|
||||
Left = 1
|
||||
Top = 42
|
||||
Width = 1017
|
||||
Height = 644
|
||||
Width = 1035
|
||||
Height = 662
|
||||
Align = alClient
|
||||
BevelInner = bvLowered
|
||||
TabOrder = 1
|
||||
object Panel3: TPanel
|
||||
Left = 2
|
||||
Top = 2
|
||||
Width = 1013
|
||||
Height = 640
|
||||
Width = 1031
|
||||
Height = 658
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
Ctl3D = False
|
||||
@ -229,12 +227,12 @@ object frm3D: Tfrm3D
|
||||
object GLSceneViewer: TGLSceneViewer
|
||||
Left = 0
|
||||
Top = 0
|
||||
Width = 1013
|
||||
Height = 595
|
||||
Width = 1031
|
||||
Height = 613
|
||||
Camera = GLCamera
|
||||
Buffer.BackgroundColor = 15987957
|
||||
Buffer.AntiAliasing = aa2x
|
||||
FieldOfView = 123.455924987793000000
|
||||
FieldOfView = 124.868827819824200000
|
||||
Align = alClient
|
||||
OnClick = GLSceneViewerClick
|
||||
OnDblClick = GLSceneViewerDblClick
|
||||
@ -245,8 +243,8 @@ object frm3D: Tfrm3D
|
||||
end
|
||||
object StatusBar1: TStatusBar
|
||||
Left = 0
|
||||
Top = 615
|
||||
Width = 1013
|
||||
Top = 633
|
||||
Width = 1031
|
||||
Height = 25
|
||||
Panels = <
|
||||
item
|
||||
@ -257,8 +255,8 @@ object frm3D: Tfrm3D
|
||||
end
|
||||
object sbView: TPanel
|
||||
Left = 0
|
||||
Top = 595
|
||||
Width = 1013
|
||||
Top = 613
|
||||
Width = 1031
|
||||
Height = 20
|
||||
Align = alBottom
|
||||
Alignment = taLeftJustify
|
||||
@ -269,40 +267,36 @@ object frm3D: Tfrm3D
|
||||
end
|
||||
end
|
||||
object RzSizePanel1: TRzSizePanel
|
||||
Left = 1018
|
||||
Left = 1036
|
||||
Top = 42
|
||||
Width = 320
|
||||
Height = 644
|
||||
Height = 662
|
||||
Align = alRight
|
||||
BorderWidth = 1
|
||||
HotSpotVisible = True
|
||||
SizeBarWidth = 7
|
||||
TabOrder = 2
|
||||
VisualStyle = vsClassic
|
||||
object RzPageControl1: TRzPageControl
|
||||
object PNtTree: TRzPageControl
|
||||
AlignWithMargins = True
|
||||
Left = 16
|
||||
Top = 4
|
||||
Width = 300
|
||||
Height = 636
|
||||
ActivePage = TabSheet1
|
||||
Height = 654
|
||||
ActivePage = TabSheet3
|
||||
ActivePageDefault = TabSheet1
|
||||
Align = alRight
|
||||
TabIndex = 0
|
||||
TabIndex = 2
|
||||
TabOrder = 0
|
||||
TabStyle = tsSquareCorners
|
||||
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
|
||||
Width = 296
|
||||
Height = 610
|
||||
Height = 628
|
||||
Align = alClient
|
||||
BevelInner = bvLowered
|
||||
Font.Charset = RUSSIAN_CHARSET
|
||||
@ -314,7 +308,7 @@ object frm3D: Tfrm3D
|
||||
TabOrder = 0
|
||||
object Splitter2: TSplitter
|
||||
Left = 2
|
||||
Top = 155
|
||||
Top = 173
|
||||
Width = 292
|
||||
Height = 3
|
||||
Cursor = crVSplit
|
||||
@ -328,20 +322,16 @@ object frm3D: Tfrm3D
|
||||
Left = 2
|
||||
Top = 2
|
||||
Width = 292
|
||||
Height = 153
|
||||
ActivePage = TabScsModel
|
||||
Height = 171
|
||||
ActivePage = TabArchModel
|
||||
Align = alClient
|
||||
TabIndex = 1
|
||||
TabIndex = 0
|
||||
TabOrder = 0
|
||||
TabStyle = tsRoundCorners
|
||||
OnTabClick = pcTreeTabClick
|
||||
FixedDimension = 19
|
||||
object TabArchModel: TRzTabSheet
|
||||
Caption = #1040#1088#1093'. '#1084#1086#1076#1077#1083#1100
|
||||
ExplicitLeft = 0
|
||||
ExplicitTop = 0
|
||||
ExplicitWidth = 0
|
||||
ExplicitHeight = 145
|
||||
object cxGroupBox1: TcxGroupBox
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -396,7 +386,7 @@ object frm3D: Tfrm3D
|
||||
Left = 0
|
||||
Top = 47
|
||||
Width = 288
|
||||
Height = 80
|
||||
Height = 98
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
BorderStyle = bsNone
|
||||
@ -427,10 +417,6 @@ 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
|
||||
@ -485,7 +471,7 @@ object frm3D: Tfrm3D
|
||||
Left = 0
|
||||
Top = 47
|
||||
Width = 288
|
||||
Height = 80
|
||||
Height = 98
|
||||
Align = alClient
|
||||
BevelOuter = bvNone
|
||||
BorderStyle = bsNone
|
||||
@ -525,7 +511,7 @@ object frm3D: Tfrm3D
|
||||
end
|
||||
object pcProps: TRzPageControl
|
||||
Left = 2
|
||||
Top = 158
|
||||
Top = 176
|
||||
Width = 292
|
||||
Height = 450
|
||||
ActivePage = TabScsProps
|
||||
@ -536,10 +522,6 @@ object frm3D: Tfrm3D
|
||||
FixedDimension = 19
|
||||
object TabArchProps: TRzTabSheet
|
||||
Caption = #1040#1088#1093'. '#1089#1074#1086#1081#1089#1090#1074#1072
|
||||
ExplicitLeft = 0
|
||||
ExplicitTop = 0
|
||||
ExplicitWidth = 0
|
||||
ExplicitHeight = 0
|
||||
object Panel1: TPanel
|
||||
Left = 0
|
||||
Top = 0
|
||||
@ -2150,10 +2132,6 @@ object frm3D: Tfrm3D
|
||||
end
|
||||
object TabSheet2: TRzTabSheet
|
||||
Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080
|
||||
ExplicitLeft = 0
|
||||
ExplicitTop = 0
|
||||
ExplicitWidth = 0
|
||||
ExplicitHeight = 628
|
||||
object Label10: TLabel
|
||||
Left = 5
|
||||
Top = 71
|
||||
@ -2269,6 +2247,59 @@ object frm3D: Tfrm3D
|
||||
Text = '0'
|
||||
end
|
||||
end
|
||||
object TabSheet3: TRzTabSheet
|
||||
Caption = #1054#1073#1098#1077#1082#1090#1099
|
||||
object Label62: TLabel
|
||||
Left = 3
|
||||
Top = 5
|
||||
Width = 74
|
||||
Height = 16
|
||||
Caption = #1058#1080#1087#1099' '#1089#1077#1090#1077#1081
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -13
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
end
|
||||
object Label63: TLabel
|
||||
Left = 3
|
||||
Top = 338
|
||||
Width = 160
|
||||
Height = 16
|
||||
Caption = #1069#1083#1077#1084#1077#1085#1090#1099' '#1072#1088#1093#1080#1090#1077#1082#1090#1091#1088#1099
|
||||
Font.Charset = DEFAULT_CHARSET
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -13
|
||||
Font.Name = 'Tahoma'
|
||||
Font.Style = [fsBold]
|
||||
ParentFont = False
|
||||
end
|
||||
object NTypTree: TRzCheckTree
|
||||
Left = 3
|
||||
Top = 24
|
||||
Width = 290
|
||||
Height = 297
|
||||
OnStateChange = NTypTreeStateChange
|
||||
Indent = 19
|
||||
SelectionPen.Color = clBtnShadow
|
||||
StateImages = NTypTree.CheckImages
|
||||
TabOrder = 0
|
||||
OnChange = NTypTreeChange
|
||||
end
|
||||
object ArchVTree: TRzCheckTree
|
||||
Left = 3
|
||||
Top = 360
|
||||
Width = 290
|
||||
Height = 229
|
||||
OnStateChange = ArchVTreeStateChange
|
||||
Indent = 19
|
||||
SelectionPen.Color = clBtnShadow
|
||||
StateImages = NTypTree.CheckImages
|
||||
TabOrder = 1
|
||||
OnChange = NTypTreeChange
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -3413,7 +3444,7 @@ object frm3D: Tfrm3D
|
||||
Left = 100
|
||||
Top = 57
|
||||
Bitmap = {
|
||||
494C01013A00B0000C0310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C01013A00B000280310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
000000000000360000002800000040000000F0000000010020000000000000F0
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
||||
@ -338,7 +338,7 @@ type
|
||||
N1: TMenuItem;
|
||||
N2: TMenuItem;
|
||||
sbView: TPanel;
|
||||
RzPageControl1: TRzPageControl;
|
||||
PNtTree: TRzPageControl;
|
||||
TabSheet1: TRzTabSheet;
|
||||
TabSheet2: TRzTabSheet;
|
||||
cbViewCeiling: TCheckBox;
|
||||
@ -353,7 +353,12 @@ type
|
||||
edWallsTransparency: TEdit;
|
||||
Label53: TLabel;
|
||||
RzSizePanel1: TRzSizePanel;
|
||||
DuplicateNodeTree: TTreeView; //Tolik Äåðåâî äóáëåé
|
||||
DuplicateNodeTree: TTreeView;
|
||||
TabSheet3: TRzTabSheet;
|
||||
NTypTree: TRzCheckTree;
|
||||
Label62: TLabel;
|
||||
ArchVTree: TRzCheckTree;
|
||||
Label63: TLabel; //Tolik Äåðåâî äóáëåé
|
||||
|
||||
procedure GLSceneViewerMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
@ -463,6 +468,12 @@ type
|
||||
const Rect: TRect);
|
||||
procedure trWallTransparencyChange(Sender: TObject);
|
||||
procedure tbSetWallsTransparencyClick(Sender: TObject);
|
||||
procedure NTypTreeChange(Sender: TObject; Node: TTreeNode);
|
||||
procedure Button1Click(Sender: TObject);
|
||||
procedure NTypTreeStateChange(Sender: TObject; Node: TTreeNode;
|
||||
NewState: TRzCheckState);
|
||||
procedure ArchVTreeStateChange(Sender: TObject; Node: TTreeNode;
|
||||
NewState: TRzCheckState);
|
||||
private
|
||||
//Tolik 27/05/25 --
|
||||
{ Private declarations }
|
||||
@ -479,6 +490,9 @@ type
|
||||
procedure RotateConnModel(aObject: TGLFreeForm; aX, aY, aZ: Double);
|
||||
procedure DeselectGLObjectsT;
|
||||
public
|
||||
//Tolik 01/09/2025 --
|
||||
NetTypeArray: array of Integer;
|
||||
//
|
||||
{ Public declarations }
|
||||
//DuplicateNodeTree: TTreeView; //Tolik 07/05/2025 -- Ñïèñîê äóáëåé óçëîâ äëÿ ñîñòàâíûõ îáúåêòîâ, êîòîðûå ïîêàçûâàòü â äåðåâå
|
||||
// êîòîðûå ïîêàçûâàòü íå íàäî
|
||||
@ -680,7 +694,7 @@ type
|
||||
function GetPosWithGridStep(aPos: Double): Double;
|
||||
|
||||
procedure ApplyCutting;
|
||||
procedure ApplyScsModel;
|
||||
procedure ApplyScsModel(aOnClose: Boolean = False);
|
||||
procedure ValidateActiveControl;
|
||||
|
||||
procedure CreateModel;
|
||||
@ -2034,7 +2048,8 @@ Procedure Tfrm3D.UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean =
|
||||
//const
|
||||
// clrBlack : TVector = (0, 0, 0, 1);
|
||||
var
|
||||
i, pCnt, pCntNormal, j, k, FigureID, glPointIndex: Integer;
|
||||
CanAddNetType: Boolean;
|
||||
i, pCnt, pCntNormal, j, k, l, FigureID, glPointIndex: Integer;
|
||||
Face:TFaceRecord;
|
||||
glPoly:TGLPolyGon;
|
||||
glLine: TGLLines;
|
||||
@ -3398,7 +3413,7 @@ var
|
||||
end;
|
||||
|
||||
Procedure AddLineCompon(aParentNode: TTreeNode; aCompon: TSCSComponent; aLine: TOrthoLine; a3DLine: T3dLine);
|
||||
var i: Integer;
|
||||
var i, l: Integer;
|
||||
currNode: TTreeNode;
|
||||
dir_v: TVector3F;
|
||||
LinearAngle, LinearAngle1: Double;
|
||||
@ -3877,6 +3892,23 @@ var
|
||||
|
||||
if CanAddCompon then
|
||||
begin
|
||||
//Tolik 02/09/2025 --
|
||||
CanAddNetType := true;
|
||||
for l := 0 to Length(NetTypeArray) - 1 do
|
||||
begin
|
||||
if NetTypeArray[l] = aCompon.IDNetType then
|
||||
begin
|
||||
CanAddNetType := False;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
if CanAddNetType then
|
||||
begin
|
||||
SetLength(NetTypeArray, Length(NetTypeArray) + 1);
|
||||
NetTypeArray[Length(NetTypeArray) - 1] := aCompon.IDNetType;
|
||||
end;
|
||||
//
|
||||
F3DLineCompon := T3DLineComponent.Create(nil, nil,Self.F3DModel);
|
||||
Self.F3DModel.FScsObjects.Add(F3DLineCompon);
|
||||
childNode := ScsModelTree.Items.AddChild(aParentNode, aCompon.GetNameForVisible);
|
||||
@ -6760,7 +6792,7 @@ try
|
||||
}
|
||||
//
|
||||
{$IFEND}
|
||||
glPipe.Parts := [ppOutSide,ppInSide,ppStartDisk,ppStopDisk];
|
||||
//glPipe.Parts := [ppOutSide,ppInSide,ppStartDisk,ppStopDisk];
|
||||
end
|
||||
else
|
||||
if Face.RecType = ftBar then
|
||||
@ -6921,12 +6953,12 @@ try
|
||||
end;
|
||||
end;
|
||||
//Tolik 19/03/2025 - èãðóøêà, ïîñìîòðåòü ëîòîê
|
||||
glObject := TWireTray.Create(frm3D.DummyCube);
|
||||
//glObject := TWireTray.Create(frm3D.DummyCube);
|
||||
//TWireTray(glObject).BeginUpdate;
|
||||
TWireTray(glObject).SetScene(GLScene);
|
||||
TWireTray(glObject).Length := 100;
|
||||
TWireTray(glObject).Width := 20;
|
||||
TWireTray(glObject).Height := 20;
|
||||
//TWireTray(glObject).SetScene(GLScene);
|
||||
//TWireTray(glObject).Length := 100;
|
||||
//TWireTray(glObject).Width := 20;
|
||||
//TWireTray(glObject).Height := 20;
|
||||
//TWireTray(glObject).EndUpdate;
|
||||
//
|
||||
//// *********** FACES.COUNT *************************************************
|
||||
@ -7313,8 +7345,12 @@ end;
|
||||
*)
|
||||
|
||||
procedure Tfrm3D.FormShow(Sender: TObject);
|
||||
var i, j: Integer;
|
||||
RootNode, Node: TTreeNode;
|
||||
Tree_proc : TRzCheckTreeChangeEvent; //Tolik 12/09/2025 --
|
||||
|
||||
Procedure SortChildsInBackOrder;
|
||||
var i: Integer;
|
||||
var i, j: Integer;
|
||||
FirstChild, CurrChild: TGLPlane;
|
||||
begin
|
||||
for i := 0 to GLDummyCube1.Count - 1 do
|
||||
@ -7422,6 +7458,47 @@ begin
|
||||
}
|
||||
//
|
||||
//sbFirstFaceClick(nil);
|
||||
//Tolik 04/09/2025 --
|
||||
Tree_proc := NTypTree.OnStateChange; // 12/09/2025 - -
|
||||
NTypTree.OnStateChange := nil;
|
||||
|
||||
NTypTree.Items.Clear;
|
||||
if Length(NetTypeArray) > 0 then
|
||||
begin
|
||||
RootNode := NTypTree.Items.Add( nil, cexdAll);
|
||||
for i := 0 to Length(NetTypeArray) - 1 do
|
||||
begin
|
||||
for j := 0 to F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes.Count - 1 do
|
||||
begin
|
||||
if TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).ID = NetTypeArray[i] then
|
||||
begin
|
||||
Node := NTypTree.Items.AddChild(RootNode, TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).Name);
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
NTypTree.DropTarget := RootNode;
|
||||
NTypTree.DropTarget.Expand(false);
|
||||
// ÷åêàåì âñå òèïû ñåòåé ïî óìîë÷àíèþ
|
||||
if NTypTree.Items.Count > 1 then
|
||||
begin
|
||||
for i := 0 to NTypTree.Items.Count - 1 do
|
||||
begin
|
||||
Node := NTypTree.Items[i];
|
||||
if Node.AbsoluteIndex <> 0 then
|
||||
NTypTree.Itemstate[Node.AbsoluteIndex] := csChecked;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if NTypTree.Items.Count = 1 then
|
||||
NTypTree.Itemstate[0] := csChecked;
|
||||
end;
|
||||
end;
|
||||
|
||||
// 12/09/2025 - -
|
||||
NTypTree.OnStateChange := Tree_proc;
|
||||
//
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.GLHeightField1GetHeight(const x, y: Single; var z: Single;
|
||||
@ -8007,6 +8084,8 @@ var
|
||||
CornerNode: TTreeNode;
|
||||
xCorner: T3DCorner;
|
||||
CornerName: string;
|
||||
RootNode, Node, ModelNode: TTreeNode;
|
||||
Tree_proc : TRzCheckTreeChangeEvent;//Tolik 12/09/2025 --
|
||||
begin
|
||||
try
|
||||
xSecondWall := nil;
|
||||
@ -8286,6 +8365,48 @@ begin
|
||||
{$IFEND}
|
||||
//*****************\ROOF**********************
|
||||
end;
|
||||
//Tolik 11/09/2025 -- äåðåâî âêë/âûêë âûäèìîñòè àðõèòåêòóðû
|
||||
Tree_proc := ArchVTree.OnStateChange;
|
||||
ArchVTree.OnStateChange := nil; // 12/09/2025 Tolik
|
||||
|
||||
ArchVTree.Items.Clear;
|
||||
|
||||
RootNode := ArchVTree.Items.Add( nil, cexdAll);
|
||||
for i := 0 to ModelTree.Items.Count - 1 do
|
||||
begin
|
||||
if TObject(ModelTree.Items[i].data) <> nil then
|
||||
begin
|
||||
if TObject(ModelTree.Items[i].data) is TF_CAD then
|
||||
begin
|
||||
if ModelTree.Items[i].Count > 0 then
|
||||
begin
|
||||
Str := TF_CAD(ModelTree.Items[i].data).FCADListName + ' ' + IntToStr(TF_CAD(ModelTree.Items[i].data).FCADListIndex);
|
||||
Node := ArchVTree.Items.AddChild(RootNode, Str);
|
||||
Node.data := TF_CAD(ModelTree.Items[i].data);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
ArchVTree.DropTarget := RootNode;
|
||||
ArchVTree.DropTarget.Expand(false);
|
||||
// ÷åêàåì âñå òèïû ñåòåé ïî óìîë÷àíèþ
|
||||
if ArchVTree.Items.Count > 1 then
|
||||
begin
|
||||
for i := 0 to ArchVTree.Items.Count - 1 do
|
||||
begin
|
||||
Node := ArchVTree.Items[i];
|
||||
if Node.AbsoluteIndex <> 0 then
|
||||
ArchVTree.Itemstate[Node.AbsoluteIndex] := csChecked;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
if ArchVTree.Items.Count = 1 then
|
||||
ArchVTree.Itemstate[0] := csChecked;
|
||||
end;
|
||||
|
||||
ArchVTree.OnStateChange := Tree_proc; // 12/09/2025 Tolik
|
||||
//
|
||||
except
|
||||
on E: Exception do AddExceptionToLogEx('Tfrm3D.UpdateModelTree', E.Message);
|
||||
end;
|
||||
@ -9515,6 +9636,14 @@ var
|
||||
//
|
||||
|
||||
begin
|
||||
//Tolik 11/09/2025 -- àðõèòåêòóðà --
|
||||
ArchVTree.Items.Clear;
|
||||
RootNode := ArchVTree.Items.Add( nil, cexdAll);
|
||||
ArchVTree.DropTarget := RootNode;
|
||||
ArchVTree.DropTarget.Expand(false);
|
||||
//
|
||||
SetLength(NetTypeArray, 0); // Tolik 01/09/2025 -- ñïèñîê òèïîâ ñåòåé
|
||||
|
||||
FCadList := TList.Create; // Tolik 23/07/2025 -- ñïèñîê ëèñòîâ ïðîåêòà
|
||||
SetLength(FFloorsHeightArray, 0); // ìàññèâ âûñîò ýòàæåé
|
||||
//
|
||||
@ -17513,9 +17642,27 @@ begin
|
||||
CanClose := True;
|
||||
if CanClose then
|
||||
begin
|
||||
//Tolik 30/08/2025 --
|
||||
if GisChangeFrom3D then
|
||||
begin
|
||||
if MessageModal(F3dMmes3, ApplicationName, MB_YESNO or MB_ICONQUESTION) = IDYES then
|
||||
begin
|
||||
ApplyScsModel(true);
|
||||
end
|
||||
else
|
||||
begin
|
||||
//LoadProjectUndoActions3D;
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
DeleteProjectUndoActions3D;
|
||||
end;
|
||||
//
|
||||
FreeAndNil(F3DModel);
|
||||
FIdsStream.Clear;
|
||||
FFilesStream.Clear;
|
||||
|
||||
Gis3D := false; //Tolik 29/08/2025 --
|
||||
end;
|
||||
except
|
||||
@ -18640,6 +18787,54 @@ begin
|
||||
ChangeDesc;
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.Button1Click(Sender: TObject);
|
||||
var i, j: integer;
|
||||
fNode: TTreeNode;
|
||||
NetId: integer;
|
||||
begin
|
||||
for i := 0 to NTypTree.Items.Count - 1 do
|
||||
begin
|
||||
fNode := NTypTree.Items[i];
|
||||
|
||||
if fNode.AbsoluteIndex <> 0 then
|
||||
begin
|
||||
NetId := -1;
|
||||
|
||||
for j := 0 to F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes.Count - 1 do
|
||||
begin
|
||||
if TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).Name = FNode.text then
|
||||
begin
|
||||
Netid := TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).ID;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
if Netid <> -1 then
|
||||
begin
|
||||
for j := 0 to DummyCube.Count - 1 do
|
||||
begin
|
||||
if DummyCube.Children[j].TagObject <> nil then
|
||||
begin
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dLineComponent then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
begin
|
||||
if NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked then
|
||||
DummyCube.Children[j].Visible := true
|
||||
else
|
||||
DummyCube.Children[j].Visible := false;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.NDel3DObjectClick(Sender: TObject);
|
||||
var
|
||||
i, j: Integer;
|
||||
@ -21782,7 +21977,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
// Tolik 04/12/2018 -- ñòàðàÿ çàêîììåí÷åíà -- ñì íèæå
|
||||
procedure Tfrm3D.ApplyScsModel;
|
||||
procedure Tfrm3D.ApplyScsModel(aOnClose: Boolean = False);
|
||||
var
|
||||
i, j, k: integer;
|
||||
dp: T3DPoint;
|
||||
@ -22366,7 +22561,84 @@ begin
|
||||
FreeAndNil(UndoFormsList);
|
||||
EndProgress;
|
||||
// EndProgress;
|
||||
SaveCurrProjectToUndoFiles(True);
|
||||
//SaveCurrProjectToUndoFiles(True);
|
||||
//Tolik 30/08/2025
|
||||
GisChangeFrom3D := False; //ñáðîñèòü ôëàæîê èçìåíåíèé
|
||||
if not aOnClose then // åñëè íå çàêðûòèå ôîðìû 3ä, òî ñäåëàòü ñëåïîê ïðîåêòà çàíîâî
|
||||
begin
|
||||
Gis3D := False;
|
||||
DeleteProjectUndoActions3D;
|
||||
SaveUndoProjBefore3D;
|
||||
Gis3D := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.ArchVTreeStateChange(Sender: TObject; Node: TTreeNode;
|
||||
NewState: TRzCheckState);
|
||||
var i, j: integer;
|
||||
CurrNode, ParentNode: TTreeNode;
|
||||
SavedEvent: TglProgressEvent;
|
||||
|
||||
Procedure SetRoomVis(aNode: TTreeNode);
|
||||
var i: integer;
|
||||
begin
|
||||
for i := 0 to aNode.Count - 1 do
|
||||
begin
|
||||
if aNode.Item[i].Count > 0 then
|
||||
begin
|
||||
SetRoomVis(aNode.Item[i]);
|
||||
end
|
||||
else
|
||||
if TObject(aNode.Item[i].Data) is T3DSide then
|
||||
begin
|
||||
if T3DSide(aNode.Item[i].Data).FGLObject <> nil then
|
||||
if T3DSide(aNode.Item[i].Data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DSide(aNode.Item[i].Data).FGLObject).Visible := (ArchVTree.Itemstate[Node.AbsoluteIndex] = csChecked);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
if Node.Data <> nil then
|
||||
begin
|
||||
{SavedEvent := GlCadencer.OnProgress;
|
||||
GlCadencer.OnProgress := nil;}
|
||||
GlCadencer.Enabled := False;
|
||||
GLScene.BeginUpdate;
|
||||
DummyCube.BeginUpdate;
|
||||
if TObject(node.data) is TF_CAD then
|
||||
begin
|
||||
for i := 0 to ModelTree.Items.Count - 1 do
|
||||
begin
|
||||
if ModelTree.Items[i].Data <> nil then
|
||||
begin
|
||||
if TObject(ModelTree.Items[i].Data) is TF_CAD then
|
||||
begin
|
||||
if TF_CAD(ModelTree.Items[i].Data) = TF_CAD(node.data) then
|
||||
begin
|
||||
ParentNode := ModelTree.Items[i];
|
||||
for j := 0 to ParentNode.Count - 1 do
|
||||
begin
|
||||
if ParentNode.Item[j].Count > 0 then
|
||||
begin
|
||||
SetRoomVis(ParentNode.Item[j]);
|
||||
end
|
||||
else
|
||||
if TObject(ParentNode.Item[j].Data) is T3DSide then
|
||||
begin
|
||||
if T3DSide(ParentNode.Item[j].Data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DSide(ParentNode.Item[j].Data).FGLObject).Visible := (ArchVTree.Itemstate[Node.AbsoluteIndex] = csChecked);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
DummyCube.EndUpdate;
|
||||
GLScene.EndUpdate;
|
||||
GlCadencer.Enabled := True;
|
||||
//GlCadencer.OnProgress := SavedEvent;
|
||||
end;
|
||||
end;
|
||||
|
||||
(*
|
||||
@ -22738,6 +23010,432 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.NTypTreeChange(Sender: TObject; Node: TTreeNode);
|
||||
var i, j: integer;
|
||||
fNode: TTreeNode;
|
||||
NetId: integer;
|
||||
begin
|
||||
{ for i := 0 to NTypTree.Items.Count - 1 do
|
||||
begin
|
||||
fNode := NTypTree.Items[i];
|
||||
|
||||
if fNode.AbsoluteIndex <> 0 then
|
||||
begin
|
||||
NetId := -1;
|
||||
|
||||
for j := 0 to F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes.Count - 1 do
|
||||
begin
|
||||
if TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).Name = FNode.text then
|
||||
begin
|
||||
Netid := TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).ID;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
if Netid <> -1 then
|
||||
begin
|
||||
for j := 0 to DummyCube.Count - 1 do
|
||||
begin
|
||||
if DummyCube.Children[j].TagObject <> nil then
|
||||
begin
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dLineComponent then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
begin
|
||||
if NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked then
|
||||
DummyCube.Children[j].Visible := true
|
||||
else
|
||||
DummyCube.Children[j].Visible := false;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
|
||||
procedure Tfrm3D.NTypTreeStateChange(Sender: TObject; Node: TTreeNode;
|
||||
NewState: TRzCheckState);
|
||||
var i, j: integer;
|
||||
fNode, CurrNode, ParentNode: TTreeNode;
|
||||
NetId: integer;
|
||||
LineNodesList, LineConnList: TList;
|
||||
LineComponent: T3DLineComponent;
|
||||
ObjVisible: Boolean;
|
||||
Conn: T3DConnector;
|
||||
SCSConnID: integer;
|
||||
SavedProc: TGLProgressEvent;
|
||||
|
||||
begin
|
||||
//SavedProc := GlCadencer.OnProgress;
|
||||
//GLCadencer.OnProgress := nil;
|
||||
GlCadencer.Enabled := False;
|
||||
GLScene.BeginUpdate;
|
||||
DummyCube.BeginUpdate;
|
||||
|
||||
LineNodesList := TList.Create;
|
||||
LineConnList := TList.Create;
|
||||
|
||||
NetId := -1;
|
||||
|
||||
for j := 0 to F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes.Count - 1 do
|
||||
begin
|
||||
if TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).Name = Node.text then
|
||||
begin
|
||||
Netid := TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).ID;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
if NetId <> -1 then
|
||||
begin
|
||||
for j := 0 to DummyCube.Count - 1 do
|
||||
begin
|
||||
if DummyCube.Children[j].TagObject <> nil then
|
||||
begin
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dLineComponent then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
begin
|
||||
DummyCube.Children[j].Visible := (NTypTree.Itemstate[Node.AbsoluteIndex] = csChecked);
|
||||
LineNodesList.Add(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
{
|
||||
else
|
||||
begin
|
||||
//11/09/2025 Tolik äëÿ ïîèíòîâ
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dConnector then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FConnType = ct_Full then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FGLObject <> nil then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
TglBaseSceneObject(T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FGLObject).Visible := (NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}
|
||||
|
||||
for I := 0 to LineNodesList.Count - 1 do
|
||||
begin
|
||||
currNode := TTreeNode(LineNodesList[i]); //
|
||||
ParentNode := currNode.Parent;
|
||||
while ParentNode.Level > 2 do
|
||||
ParentNode := ParentNode.Parent; // Òðàññà
|
||||
|
||||
if ParentNode.Data <> nil then //åñëè ñ òðàññû âñå ñïðÿòàíî - òðàññó ñïðÿòàòü (è íàîáîðîò)
|
||||
begin
|
||||
ObjVisible := False;
|
||||
for j := 0 to ParentNode.Count - 1 do
|
||||
begin
|
||||
if ParentNode.Item[j].Data <> nil then
|
||||
begin
|
||||
if TObject(ParentNode.Item[j].Data) is T3DLineComponent then
|
||||
begin
|
||||
if T3DLineComponent(ParentNode.Item[j].Data).FGLObject <> nil then
|
||||
begin
|
||||
if TGLBaseSceneObject(T3DLineComponent(ParentNode.Item[j].Data).FGLObject).Visible then
|
||||
begin
|
||||
ObjVisible := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
TGLBaseSceneObject(T3DLine(ParentNode.Data).FGLObject).Visible := ObjVisible;
|
||||
|
||||
if T3DLine(ParentNode.Data).FJoinConnector1 <> nil then
|
||||
begin
|
||||
if LineConnList.IndexOf(T3DLine(ParentNode.Data).FJoinConnector1) = -1 then
|
||||
LineConnList.Add(T3DLine(ParentNode.Data).FJoinConnector1);
|
||||
end;
|
||||
if T3DLine(ParentNode.Data).FJoinConnector2 <> nil then
|
||||
begin
|
||||
if LineConnList.IndexOf(T3DLine(ParentNode.Data).FJoinConnector2) = -1 then
|
||||
LineConnList.Add(T3DLine(ParentNode.Data).FJoinConnector2);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//ñòûêè òðóá
|
||||
for i := 0 to LineConnList.Count - 1 do
|
||||
begin
|
||||
Conn := T3dConnector(LineConnList[i]);
|
||||
if Conn.FisPipeElement then
|
||||
begin
|
||||
ObjVisible := False;
|
||||
for j := 0 to Conn.FJoinedLinesList.Count - 1 do
|
||||
begin
|
||||
if T3DLine(Conn.FJoinedLinesList[j]).FGLObject <> nil then
|
||||
begin
|
||||
if TglBaseSceneObject(T3DLine(Conn.FJoinedLinesList[j]).FGLObject).Visible then
|
||||
begin
|
||||
ObjVisible := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//â îñíîâíîì äåðåâå
|
||||
if Conn.FGLObject <> nil then
|
||||
begin
|
||||
TglBaseSceneObject(Conn.FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
|
||||
if Conn.FSCSComponID <> -1 then
|
||||
begin
|
||||
//
|
||||
for j := 0 to SCSModelTree.Items.Count - 1 do
|
||||
begin
|
||||
if SCSModelTree.Items[j].data <> nil then
|
||||
begin
|
||||
if TObject(SCSModelTree.Items[j].data) is T3DConnector then
|
||||
begin
|
||||
if T3DConnector(SCSModelTree.Items[j].data).FSCSComponID = Conn.FSCSComponID then
|
||||
begin
|
||||
if T3DConnector(SCSModelTree.Items[j].data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DConnector(SCSModelTree.Items[j].data).FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//â ñêðûòîì(ãäå äóáëèðóþòñÿ ïî àé-äè êîìïîíåíòà)
|
||||
for j := 0 to DuplicateNodeTree.Items.Count - 1 do
|
||||
begin
|
||||
if DuplicateNodeTree.Items[j].data <> nil then
|
||||
begin
|
||||
if TObject(DuplicateNodeTree.Items[j].data) is T3DConnector then
|
||||
begin
|
||||
if T3DConnector(DuplicateNodeTree.Items[j].data).FSCSComponID = Conn.FSCSComponID then
|
||||
begin
|
||||
if T3DConnector(DuplicateNodeTree.Items[j].data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DConnector(DuplicateNodeTree.Items[j].data).FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Dummycube.EndUpdate;
|
||||
GLScene.EndUpdate;
|
||||
GlCadencer.Enabled := True;
|
||||
//GLCadencer.OnProgress := SavedProc;
|
||||
end;
|
||||
end;
|
||||
|
||||
(*
|
||||
procedure Tfrm3D.NTypTreeStateChange(Sender: TObject; Node: TTreeNode;
|
||||
NewState: TRzCheckState);
|
||||
var i, j: integer;
|
||||
fNode, CurrNode, ParentNode: TTreeNode;
|
||||
NetId: integer;
|
||||
LineNodesList, LineConnList: TList;
|
||||
LineComponent: T3DLineComponent;
|
||||
ObjVisible: Boolean;
|
||||
Conn: T3DConnector;
|
||||
SCSConnID: integer;
|
||||
SavedProc: TGLProgressEvent;
|
||||
|
||||
begin
|
||||
SavedProc := GlCadencer.OnProgress;
|
||||
GLCadencer.OnProgress := nil;
|
||||
|
||||
GLScene.BeginUpdate;
|
||||
DummyCube.BeginUpdate;
|
||||
LineNodesList := TList.Create;
|
||||
LineConnList := TList.Create;
|
||||
|
||||
for i := 0 to NTypTree.Items.Count - 1 do
|
||||
begin
|
||||
fNode := NTypTree.Items[i];
|
||||
|
||||
if fNode.AbsoluteIndex <> 0 then
|
||||
begin
|
||||
NetId := -1;
|
||||
|
||||
for j := 0 to F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes.Count - 1 do
|
||||
begin
|
||||
if TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).Name = FNode.text then
|
||||
begin
|
||||
Netid := TNBNetType(F_ProjMan.GSCSBase.CurrProject.Spravochnik.NetTypes[j]).ID;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
|
||||
if Netid <> -1 then
|
||||
begin
|
||||
DummyCube.BeginUpdate; //11/09/2025 --Tolik
|
||||
for j := 0 to DummyCube.Count - 1 do
|
||||
begin
|
||||
if DummyCube.Children[j].TagObject <> nil then
|
||||
begin
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dLineComponent then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dLineComponent(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
begin
|
||||
DummyCube.Children[j].Visible := (NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked);
|
||||
{
|
||||
if NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked then
|
||||
DummyCube.Children[j].Visible := true
|
||||
else
|
||||
DummyCube.Children[j].Visible := false;
|
||||
}
|
||||
LineNodesList.Add(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
{
|
||||
else
|
||||
begin
|
||||
//11/09/2025 Tolik äëÿ ïîèíòîâ
|
||||
if TObject(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data) is T3dConnector then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FConnType = ct_Full then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FGLObject <> nil then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon <> nil then
|
||||
begin
|
||||
if T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FSCSCompon.IDNetType = NetID then
|
||||
TglBaseSceneObject(T3dConnector(TTreeNode(TGLBaseSceneObject(DummyCube.Children[j]).TagObject).Data).FGLObject).Visible := (NTypTree.Itemstate[FNode.AbsoluteIndex] = csChecked);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
}
|
||||
end;
|
||||
end;
|
||||
DummyCube.EndUpdate; // 11/*09/2025 --
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
for I := 0 to LineNodesList.Count - 1 do
|
||||
begin
|
||||
currNode := TTreeNode(LineNodesList[i]); //
|
||||
ParentNode := currNode.Parent;
|
||||
while ParentNode.Level > 2 do
|
||||
ParentNode := ParentNode.Parent; // Òðàññà
|
||||
|
||||
if ParentNode.Data <> nil then //åñëè ñ òðàññû âñå ñïðÿòàíî - òðàññó ñïðÿòàòü (è íàîáîðîò)
|
||||
begin
|
||||
ObjVisible := False;
|
||||
for j := 0 to ParentNode.Count - 1 do
|
||||
begin
|
||||
if ParentNode.Item[j].Data <> nil then
|
||||
begin
|
||||
if TObject(ParentNode.Item[j].Data) is T3DLineComponent then
|
||||
begin
|
||||
if T3DLineComponent(ParentNode.Item[j].Data).FGLObject <> nil then
|
||||
begin
|
||||
if TGLBaseSceneObject(T3DLineComponent(ParentNode.Item[j].Data).FGLObject).Visible then
|
||||
begin
|
||||
ObjVisible := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
TGLBaseSceneObject(T3DLine(ParentNode.Data).FGLObject).Visible := ObjVisible;
|
||||
|
||||
if T3DLine(ParentNode.Data).FJoinConnector1 <> nil then
|
||||
begin
|
||||
if LineConnList.IndexOf(T3DLine(ParentNode.Data).FJoinConnector1) = -1 then
|
||||
LineConnList.Add(T3DLine(ParentNode.Data).FJoinConnector1);
|
||||
end;
|
||||
if T3DLine(ParentNode.Data).FJoinConnector2 <> nil then
|
||||
begin
|
||||
if LineConnList.IndexOf(T3DLine(ParentNode.Data).FJoinConnector2) = -1 then
|
||||
LineConnList.Add(T3DLine(ParentNode.Data).FJoinConnector2);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//ñòûêè òðóá
|
||||
for i := 0 to LineConnList.Count - 1 do
|
||||
begin
|
||||
Conn := T3dConnector(LineConnList[i]);
|
||||
if Conn.FisPipeElement then
|
||||
begin
|
||||
ObjVisible := False;
|
||||
for j := 0 to Conn.FJoinedLinesList.Count - 1 do
|
||||
begin
|
||||
if T3DLine(Conn.FJoinedLinesList[j]).FGLObject <> nil then
|
||||
begin
|
||||
if TglBaseSceneObject(T3DLine(Conn.FJoinedLinesList[j]).FGLObject).Visible then
|
||||
begin
|
||||
ObjVisible := True;
|
||||
break;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//â îñíîâíîì äåðåâå
|
||||
if Conn.FGLObject <> nil then
|
||||
begin
|
||||
TglBaseSceneObject(Conn.FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
|
||||
if Conn.FSCSComponID <> -1 then
|
||||
begin
|
||||
//
|
||||
for j := 0 to SCSModelTree.Items.Count - 1 do
|
||||
begin
|
||||
if SCSModelTree.Items[j].data <> nil then
|
||||
begin
|
||||
if TObject(SCSModelTree.Items[j].data) is T3DConnector then
|
||||
begin
|
||||
if T3DConnector(SCSModelTree.Items[j].data).FSCSComponID = Conn.FSCSComponID then
|
||||
begin
|
||||
if T3DConnector(SCSModelTree.Items[j].data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DConnector(SCSModelTree.Items[j].data).FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
//â ñêðûòîì(ãäå äóáëèðóþòñÿ ïî àé-äè êîìïîíåíòà)
|
||||
for j := 0 to DuplicateNodeTree.Items.Count - 1 do
|
||||
begin
|
||||
if DuplicateNodeTree.Items[j].data <> nil then
|
||||
begin
|
||||
if TObject(DuplicateNodeTree.Items[j].data) is T3DConnector then
|
||||
begin
|
||||
if T3DConnector(DuplicateNodeTree.Items[j].data).FSCSComponID = Conn.FSCSComponID then
|
||||
begin
|
||||
if T3DConnector(DuplicateNodeTree.Items[j].data).FGLObject <> nil then
|
||||
TglBaseSceneObject(T3DConnector(DuplicateNodeTree.Items[j].data).FGLObject).Visible := ObjVisible;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Dummycube.EndUpdate;
|
||||
GLScene.EndUpdate;
|
||||
|
||||
GLCadencer.OnProgress := SavedProc;
|
||||
end;
|
||||
*)
|
||||
|
||||
function Tfrm3D.GetPointToDivTrace(X, Y: Integer; aLine: TGLLines): T3DPoint;
|
||||
var
|
||||
glCursor: TGLCustomSceneObject;
|
||||
|
||||
@ -204,7 +204,8 @@ uses
|
||||
U_PortsReIndex in 'SCSNormBase\U_PortsReIndex.pas' {F_PortsReIndex},
|
||||
U_ELCommon in 'Main\U_ELCommon.pas' {/U_SetWallTransparency in 'Main\U_SetWallTransparency.pas' {F_SetWallTransparency},
|
||||
U_ShieldConfig in 'Main\U_ShieldConfig.pas' {/ Tolik 16/03/2023 ôîðìàò ùèòêà äëÿ ìîíòàæíîé ñõåìû;},
|
||||
U_Reserv in 'Main\U_Reserv.pas' {F_Reserv};
|
||||
U_Reserv in 'Main\U_Reserv.pas' {F_Reserv},
|
||||
form3d in '..\POWERCAD30\UNITS\form3d.pas' {frm3D};
|
||||
|
||||
// Tolik 16/03/2023 ôîðìàò ùèòêà äëÿ ìîíòàæíîé ñõåìû;
|
||||
//U_SetWallTransparency in 'Main\U_SetWallTransparency.pas' {F_SetWallTransparency};
|
||||
|
||||
@ -708,6 +708,9 @@
|
||||
<DCCReference Include="Main\U_Reserv.pas">
|
||||
<Form>F_Reserv</Form>
|
||||
</DCCReference>
|
||||
<DCCReference Include="..\POWERCAD30\UNITS\form3d.pas">
|
||||
<Form>frm3D</Form>
|
||||
</DCCReference>
|
||||
<BuildConfiguration Include="Release Telecom UKR Trial">
|
||||
<Key>Cfg_10</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
|
||||
@ -4181,6 +4181,11 @@ object FSCS_Main: TFSCS_Main
|
||||
Caption = #1057#1086#1079#1076#1072#1090#1100' '#1084#1077#1078#1101#1090#1072#1078#1085#1091#1102' '#1074#1077#1088#1090#1080#1082#1072#1083#1100' '#1076#1086#1074#1077#1088#1093#1091
|
||||
OnExecute = aCreateBFMagistralUpExecute
|
||||
end
|
||||
object ACreateFloorV: TAction
|
||||
Category = #1052#1077#1085#1102' '#1057#1050#1057' '#1086#1073#1100#1077#1082#1090#1086#1074
|
||||
Caption = #1057#1086#1079#1076#1072#1090#1100' '#1074#1077#1088#1090#1080#1082#1072#1083#1100' '#1085#1072' '#1074#1099#1089#1086#1090#1091' '#1101#1090#1072#1078#1072
|
||||
OnExecute = ACreateFloorVExecute
|
||||
end
|
||||
end
|
||||
object PrintDialog: TPrintDialog
|
||||
Left = 352
|
||||
@ -5614,6 +5619,9 @@ object FSCS_Main: TFSCS_Main
|
||||
object pmCreateBFMagistralUp: TMenuItem
|
||||
Action = aCreateBFMagistralUp
|
||||
end
|
||||
object pmCreateFloorV: TMenuItem
|
||||
Action = ACreateFloorV
|
||||
end
|
||||
object pmiListRefreshDesignList: TMenuItem
|
||||
Action = aRefreshDesignList
|
||||
end
|
||||
@ -5884,7 +5892,7 @@ object FSCS_Main: TFSCS_Main
|
||||
Left = 496
|
||||
Top = 232
|
||||
Bitmap = {
|
||||
494C0101D2008C01C40310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C0101D2008C01D00310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
0000000000003600000028000000400000005003000001002000000000000050
|
||||
0300000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
@ -12894,7 +12902,7 @@ object FSCS_Main: TFSCS_Main
|
||||
Left = 248
|
||||
Top = 280
|
||||
Bitmap = {
|
||||
494C010123008C01DC0320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C010123008C01E80320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
0000000000003600000028000000800000009000000001002000000000000020
|
||||
0100000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
@ -15466,7 +15474,7 @@ object FSCS_Main: TFSCS_Main
|
||||
Left = 240
|
||||
Top = 408
|
||||
Bitmap = {
|
||||
494C010112008C01D0030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C010112008C01DC030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
000000000000360000002800000038000000460000000100200000000000403D
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
@ -19969,7 +19977,7 @@ object FSCS_Main: TFSCS_Main
|
||||
Left = 240
|
||||
Top = 344
|
||||
Bitmap = {
|
||||
494C0101DE008C01B80618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C0101DE008C01C40618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
00000000000036000000280000006000000040050000010020000000000000E0
|
||||
070000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9188003D2413003D241300FFFF
|
||||
|
||||
@ -1190,6 +1190,8 @@ type
|
||||
pmCreateBFMagistralUp: TMenuItem;
|
||||
aCreateBFMagistralDown: TAction;
|
||||
aCreateBFMagistralUp: TAction;
|
||||
ACreateFloorV: TAction;
|
||||
pmCreateFloorV: TMenuItem;
|
||||
|
||||
// ACTIONs
|
||||
// ñîçäàòü íîâûé ïðîåêò
|
||||
@ -2007,6 +2009,7 @@ type
|
||||
procedure aCreateBFMagistralExecute(Sender: TObject);
|
||||
procedure aCreateBFMagistralDownExecute(Sender: TObject);
|
||||
procedure aCreateBFMagistralUpExecute(Sender: TObject);
|
||||
procedure ACreateFloorVExecute(Sender: TObject);
|
||||
|
||||
{ procedure SelectAllLineObjsHint(var HintStr: String;
|
||||
var CanShow: Boolean);
|
||||
@ -19632,6 +19635,63 @@ begin
|
||||
//
|
||||
end;
|
||||
|
||||
procedure TFSCS_Main.ACreateFloorVExecute(Sender: TObject);
|
||||
var i, ListIndex: integer;
|
||||
x,y: Double;
|
||||
FCad, SavedGcadForm: TF_Cad;
|
||||
CadList: TList;
|
||||
CreatedLine: TOrthoLine;
|
||||
p1, p2: TDoublePoint;
|
||||
SavedMoveWithRaise, SSGrid, SSN, SSG: Boolean;
|
||||
SCSList: TSCSList;
|
||||
begin
|
||||
SavedMoveWithRaise := GMoveWithRaise;
|
||||
GMoveWithRaise := False;
|
||||
|
||||
p1.x := GMouseDownPos.x;
|
||||
p1.y := GMouseDOwnPos.y;
|
||||
p1.z := 0;
|
||||
|
||||
p2.x := GMouseDownPos.x + 1;
|
||||
p2.y := GMouseDOwnPos.y + 1;
|
||||
p2.z := 0;
|
||||
|
||||
SSGrid := GCadForm.PCad.SnapToGrids;
|
||||
SSN := GCadForm.PCad.SnapToNearPoint;
|
||||
SSG := GCadForm.PCad.SnapToGuides;
|
||||
|
||||
GCadForm.PCad.SnapToGrids := False;
|
||||
GCadForm.PCad.SnapToNearPoint := False;
|
||||
GCadForm.PCad.SnapToGuides := False;
|
||||
|
||||
CreatedLine := CreateTraceByPoints(GCadForm.PCad, p1, p2);
|
||||
CreatedLine.ActualZOrder[1] := 0;
|
||||
TConnectorObject(CreatedLine.JoinConnector1).actualzOrder[1] := 0;
|
||||
|
||||
TConnectorObject(CreatedLine.JoinConnector2).MoveP(p1.x - p2.x, p1.y - p2.y, False, False);
|
||||
CreatedLine.ActualZOrder[2] := GCadForm.FRoomHeight;
|
||||
TConnectorObject(CreatedLine.JoinConnector2).actualzOrder[1] := GCadForm.FRoomHeight;
|
||||
|
||||
CreatedLine.LengthCalc;
|
||||
CreatedLine.LineLength := CreatedLine.LengthCalc;
|
||||
|
||||
GCadForm.PCad.SnapToGrids := SSGrid;
|
||||
GCadForm.PCad.SnapToNearPoint := SSN;
|
||||
GCadForm.PCad.SnapToGuides := SSG;
|
||||
|
||||
GMoveWithRaise := SavedMoveWithRaise;
|
||||
if GCadForm.cbManualCableTracingMode.Down then
|
||||
begin
|
||||
if F_NormBase.GSCSBase.SCSComponent <> nil then
|
||||
begin
|
||||
if F_NormBase.GSCSBase.SCSComponent.IsLine = biTrue then
|
||||
begin
|
||||
CopyComponentToSCSObject(CreatedLine.ID, F_NormBase.GSCSBase.SCSComponent.ID);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFSCS_Main.aCreateFloorRaiseDownExecute(Sender: TObject);
|
||||
var
|
||||
RaiseOnFigure: TConnectorObject;
|
||||
@ -20087,9 +20147,8 @@ begin
|
||||
//Tolik 11/07/2023 --
|
||||
//SaveCurrProjectToUndoFiles(true);
|
||||
//
|
||||
prLists := GetAllProjNormLists;
|
||||
SaveForProjectUndo(prLists, true, false, true);
|
||||
prLists.Free;
|
||||
SaveUndoProjBefore3D;
|
||||
GIs3D := True;
|
||||
//
|
||||
BeginProgress;
|
||||
if not Assigned(frm3D) then
|
||||
@ -21794,9 +21853,10 @@ begin
|
||||
begin
|
||||
G3DModelForProject := True;
|
||||
//Tolik 29/08/2025 --
|
||||
SaveUndoProjBefore3D;
|
||||
GIs3D := True;
|
||||
GisChangeFrom3D := False;
|
||||
SaveUndoProjBefore3D;
|
||||
|
||||
//
|
||||
BeginProgress;
|
||||
if not Assigned(frm3D) then
|
||||
@ -22107,6 +22167,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
SubstrateFileList.Free;
|
||||
(*
|
||||
if G3dUndoActList.Count > 0 then
|
||||
begin
|
||||
j := G3dUndoActList.Count;
|
||||
@ -22117,7 +22178,6 @@ begin
|
||||
GCadForm.SCSUndoNormalList(true);
|
||||
dec(j);
|
||||
end;
|
||||
|
||||
{
|
||||
for j := G3dUndoActList.Count - 1 downto 0 do
|
||||
begin
|
||||
@ -22126,6 +22186,8 @@ begin
|
||||
end;
|
||||
}
|
||||
end;
|
||||
*)
|
||||
|
||||
FreeAndNil(G3dUndoList); // Tolik 18/07/2025 --
|
||||
FreeAndNil(G3dUndoActList); // Tolik 18/07/2025 --
|
||||
//
|
||||
|
||||
@ -7112,12 +7112,14 @@ begin
|
||||
FSCS_Main.pmCreateBFMagistral.Visible := True;
|
||||
FSCS_Main.pmCreateBFMagistralUp.Visible := True;
|
||||
FSCS_Main.pmCreateBFMagistralDown.Visible := True;
|
||||
FSCS_Main.pmCreateFloorV.Visible := True;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FSCS_Main.pmCreateBFMagistral.Visible := False;
|
||||
FSCS_Main.pmCreateBFMagistralUp.Visible := False;
|
||||
FSCS_Main.pmCreateBFMagistralDown.Visible := False;
|
||||
FSCS_Main.pmCreateFloorV.Visible := False;
|
||||
end;
|
||||
//
|
||||
|
||||
@ -11346,6 +11348,8 @@ var
|
||||
SaveGCadRefreshFlag: boolean;
|
||||
begin
|
||||
Result := nil;
|
||||
if Gis3D then //Tolik 30/08/2025 -- çàëî÷èòü, ïîêà þçàåòñÿ 3Ä âèä
|
||||
exit;
|
||||
//Tolik 16/08/2021 --
|
||||
GetPathToSCSCADDir;
|
||||
GetPathToSCSUndoDir;
|
||||
@ -11422,6 +11426,16 @@ begin
|
||||
end;
|
||||
|
||||
ListUndoAction := TListUndoAction.Create(aType, aSavePM);
|
||||
if a3D then
|
||||
begin
|
||||
Count := G3dUndoList.Count;
|
||||
SetUndoName := FUndoDir + '3D\'+ FCADListFileName + '_' + IntToStr(Count);
|
||||
|
||||
if not DirectoryExists(FUndoDir + '3D\') then
|
||||
CreateDir(FUndoDir + '3D\');
|
||||
end
|
||||
else
|
||||
begin
|
||||
// çàïèñàòü ïîñëåäíåå èçìåíåíèå â ôàéë, íàçâàíèå â FUndoList
|
||||
Count := FSCSUndoList.Count;
|
||||
// SetUndoName := FUndoDir + FCADListName + IntTostr(FCADListIndex) + '_' + IntToStr(Count);
|
||||
@ -11430,10 +11444,15 @@ begin
|
||||
SetUndoName := FUndoDir + '3D\'+ FCADListFileName + '_' + IntToStr(Count)
|
||||
else}
|
||||
SetUndoName := FUndoDir + FCADListFileName + '_' + IntToStr(Count);
|
||||
end;
|
||||
// ñîõðàíèòü â ñïèñîê ôàéëîâ
|
||||
ListUndoAction.FCadFileName := SetUndoName;
|
||||
ListUndoAction.FIndex := Count;
|
||||
ListUndoAction.FIsProject := aIsProject;
|
||||
|
||||
if a3D then
|
||||
G3dUndoList.Add(ListUndoAction)
|
||||
else
|
||||
FSCSUndoList.Add(ListUndoAction);
|
||||
|
||||
// ñîõðàíèòü â òåìïîâûé ôàéë
|
||||
|
||||
@ -1357,6 +1357,7 @@ type
|
||||
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 --
|
||||
Procedure DeleteProjectUndoActions3D; // Tolik 30/08/2025 --
|
||||
//
|
||||
const
|
||||
{$IF Defined(SCS_PANDUIT) or Defined(SCS_PE)}
|
||||
@ -1774,6 +1775,34 @@ 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 30/08/2025 -- ñáðîñèòü ñëåïîê ïðîåêòà äëÿ 3Ä
|
||||
Procedure DeleteProjectUndoActions3D;
|
||||
var ProjectUndoAction: TProjectUndoAction;
|
||||
ListUndoAction: TListUndoAction;
|
||||
Undo3DdirNam: String;
|
||||
begin
|
||||
Undo3DdirNam := GCadForm.FUndodir + '\3D\';
|
||||
if DirectoryExists(Undo3DdirNam) then
|
||||
FullRemoveDir(Undo3DdirNam, true, true);
|
||||
if G3dUndoActList <> nil then
|
||||
begin
|
||||
While G3dUndoActList.Count > 0 do
|
||||
begin
|
||||
TProjectUndoAction(G3dUndoActList[0]).free;
|
||||
G3dUndoActList.delete(0);
|
||||
end;
|
||||
end;
|
||||
|
||||
if G3dUndoList <> nil then
|
||||
begin
|
||||
while G3dUndoList.Count > 0 do
|
||||
begin
|
||||
TListUndoAction(G3dUndoList[0]).free;
|
||||
G3dUndoList.delete(0);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
//Tolik 29/08/2025 --
|
||||
function GetAllProjNormLists: TList; // Tolik 29/08/2025 --
|
||||
var i: integer;
|
||||
@ -1794,7 +1823,6 @@ uses USCS_Main, Menus, U_main, U_MasterNewList, U_MasterNewListLite, U_AutoTrace
|
||||
procedure SaveUndoProjBefore3D;
|
||||
var prLists: TList;
|
||||
begin
|
||||
|
||||
prLists := GetAllProjNormLists;
|
||||
SaveForProjectUndo(prLists, true, false, true);
|
||||
prLists.Free;
|
||||
@ -1810,6 +1838,8 @@ uses USCS_Main, Menus, U_main, U_MasterNewList, U_MasterNewListLite, U_AutoTrace
|
||||
p1, p2: TDoublePoint;
|
||||
SavedMoveWithRaise, SSGrid, SSN, SSG: Boolean;
|
||||
SCSList: TSCSList;
|
||||
//11/09/2025
|
||||
ObjParams: TObjectParams;
|
||||
begin
|
||||
CadList := TList.Create;
|
||||
//Full
|
||||
@ -1897,6 +1927,24 @@ uses USCS_Main, Menus, U_main, U_MasterNewList, U_MasterNewListLite, U_AutoTrace
|
||||
CreatedLine.ActualZOrder[2] := GCadForm.FRoomHeight;
|
||||
TConnectorObject(CreatedLine.JoinConnector2).actualzOrder[1] := GCadForm.FRoomHeight;
|
||||
|
||||
CreatedLine.Name := cCadClasses_Mes32;
|
||||
SetNewObjectNameInPM(CreatedLine.ID, CreatedLine.Name);
|
||||
ObjParams := GetFigureParams(CreatedLine.ID);
|
||||
//11/09/2025--
|
||||
CreatedLine.Name := ObjParams.Name;
|
||||
CreatedLine.FIndex := ObjParams.MarkID;
|
||||
CreatedLine.FIsVertical := True;
|
||||
|
||||
CreatedLine.CalculLength := CreatedLine.LengthCalc;
|
||||
CreatedLine.LineLength := CreatedLine.CalculLength;
|
||||
SetLineFigureLengthInPM(CreatedLine.ID, CreatedLine.LineLength);
|
||||
CreatedLine.ReCreateCaptionsGroup(True, false);
|
||||
CreatedLine.UpdateLengthTextBox(True, false);
|
||||
CreatedLine.ReCreateNotesGroup(True);
|
||||
CreatedLine.ShowCaptions := False;
|
||||
CreatedLine.ShowNotes := False;
|
||||
CreatedLine.IsShowBlock := False;
|
||||
|
||||
CreatedLine.LengthCalc;
|
||||
CreatedLine.LineLength := CreatedLine.LengthCalc;
|
||||
|
||||
@ -48754,7 +48802,40 @@ begin
|
||||
try
|
||||
SaveGCadRefreshFlag := GCanRefreshCad;
|
||||
GCanRefreshCad := false;
|
||||
if a3D then
|
||||
begin
|
||||
if G3dUndoActList = nil then
|
||||
G3dUndoActList := TList.Create;
|
||||
if G3dUndoList = nil then
|
||||
G3dUndoList := TList.Create;
|
||||
|
||||
ProjectUndoAction := TProjectUndoAction.create;
|
||||
|
||||
SavedGCadForm := GCadForm;
|
||||
for i := 0 to aLists.Count - 1 do
|
||||
begin
|
||||
vList := TF_CAD(aLists[i]);
|
||||
GCadForm := vList;
|
||||
|
||||
ListUndoAction := nil; //#From Oleg# //14.09.2010
|
||||
//
|
||||
if vList.FListType = lt_Normal then
|
||||
ListUndoAction := vList.SaveForUndoNormalList(uat_Floor, aSavePM, aIsProject, i, a3D);
|
||||
|
||||
if ListUndoAction <> nil then
|
||||
begin
|
||||
ListUndoAction.FProjectUndoAction := ProjectUndoAction;
|
||||
LinkUndoObject := TLinkUndoObject.create;
|
||||
LinkUndoObject.FCad := vList;
|
||||
LinkUndoObject.FListUndoAction := ListUndoAction;
|
||||
ProjectUndoAction.FLinkUndoObject.Add(LinkUndoObject);
|
||||
end;
|
||||
end;
|
||||
GCadForm := SavedGCadForm;
|
||||
G3dUndoActList.Add(ProjectUndoAction);
|
||||
end
|
||||
else
|
||||
begin
|
||||
if GUndoList = nil then
|
||||
GUndoList := TList.Create;
|
||||
ProjectUndoAction := TProjectUndoAction.create;
|
||||
@ -48793,6 +48874,7 @@ begin
|
||||
end;
|
||||
GCadForm := SavedGCadForm;
|
||||
GUndoList.Add(ProjectUndoAction);
|
||||
end;
|
||||
except
|
||||
on E: Exception do addExceptionToLogEx('U_Common.SaveForProjectUndo', E.Message);
|
||||
end;
|
||||
|
||||
@ -3185,6 +3185,7 @@ const
|
||||
cRenewRackDesign = 'Обновить дизайн шкафа?'; // Tolik 23/06/2021 --
|
||||
F3dMmes1 = 'Левая клавиша мыши - вращение листа. Правая - перемещение.Скролл - увел./уменьш. (зум)';
|
||||
F3dMmes2 = 'Недоступно в режиме просмотра "От первого лица"!'; // Tolik 08/12/2023
|
||||
F3dMmes3 = 'Применить изменения?'; //Tolik 30/08/2025 --
|
||||
Trace_Mess = 'Задайте высоту трассы, которая будет использоваться по умолчанию, ';
|
||||
Trace_Mess_1 = '(вы сможете её изменить в Настройках проекта CTRL-F2)';
|
||||
Trace_Mess1 = 'Задайте высоту трассы';
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user