First commit

This commit is contained in:
Anatoly 2025-06-13 12:42:07 +03:00
parent 091898f947
commit 9fc3c97d9f
2 changed files with 169 additions and 63 deletions

View File

@ -22243,6 +22243,10 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
//Tolik 13/06/2025 --
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
@ -22251,6 +22255,7 @@ var
end;
end;
end;
end;
if RelatedLine <> nil then
begin
if A3DConn.FSCSObject.ID = RelatedLine.FJoinConnector1.FSCSObject.ID then
@ -22279,6 +22284,10 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
//Tolik 13/06/2025 --
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
@ -22287,6 +22296,7 @@ var
end;
end;
end;
end;
if RelatedLine <> nil then
begin
@ -22304,6 +22314,10 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
//13/06/2025 -- Tolik Çäåñü òîæå ïðîâåðÿåì íà ñîâïàäåíèå ëèñòà
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
@ -22312,6 +22326,7 @@ var
end;
end;
end;
end;
if RelatedLine <> nil then
begin
@ -22372,6 +22387,10 @@ var
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSObject <> nil then
begin
//Tolik 13/06/2025 -- ïðîâåðÿåì íà ñîâïàäåíèå ëèñòîâ
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FListID = TF_CAD(TPowerCad(SCSConn.Owner).Owner).FCADListID then
begin
//
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSObject.ID = SCSConn.ID then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FisPipeElement then
@ -22385,6 +22404,7 @@ var
end;
end;
end;
end;
AlignPipeObjects;
NextSideConnsList.Free;
SCSLineList.Free;
@ -22987,12 +23007,14 @@ var
currCad: TF_CAD;
FloorHeight, MinFloorHeight, MaxFloorHeight : Double;
ListParams: TListParams;
ParentConnector: T3DConnector;
ParentConnector, RelatedConn: T3DConnector;
i: integer;
CorrectConn: T3DConnector;
ConnNode, ParentNode: TTreeNode;
CanGetParent: Boolean;
NextConnList: TList;
dist: Double;
PointMoveTo: TDoublePoint;
begin
//Result := True;
Result := False;
@ -23059,10 +23081,48 @@ var
end;
Result := True;
//Ïðåäïîëàãàåìàÿ òî÷êà, êóäà ïîïàäåì â ðåçóëüòàòå ñäâèãà
PointMoveTo.x := CorrectConn.FGLPoint.x + dp.x;
PointMoveTo.y := CorrectConn.FGLPoint.y + dp.y;
PointMoveTo.z := CorrectConn.FGLPoint.z + dp.z;
//Âûëåò çà ïðåäåëû Êàäà èëè ýòàæà ïî âûñîòå
if ((CompareValue(PointMoveTo.y, MinFloorHeight) = -1) or
(CompareValue(PointMoveTo.y, MaxFloorHeight) = 1)) then
begin
Result := False;
exit;
end;
//
//Åñëè ýëåìåíò òðóáû ïðîâåðÿåì âûñîòû è "íàåçäû"
if CorrectConn.FisPipeElement then
begin
NextConnList := TList.create;
//åñëè åñòü ïðèñîåäèíåííûå òðàññû - ïðîâåðÿåì íàåçäû íà "ñîñåäíèå êîííåêòîðû"
for i := 0 to CorrectConn.FJoinedLinesList.Count - 1 do
begin
if T3dLine(CorrectConn.FJoinedLinesList[i]).FJoinConnector1.FSCSComponID = CorrectConn.FSCSComponID then
NextConnList.Add(T3dLine(CorrectConn.FJoinedLinesList[i]).FJoinConnector2)
else
NextConnList.Add(T3dLine(CorrectConn.FJoinedLinesList[i]).FJoinConnector1);
end;
//ïðîâåðÿåì ñäâèã îòíîñèòåëüíî âñåõ ïðîòèâîïîëîæíûõ êîííåêòîðîâ ïðèñîåäèíåííûõ òðàññ
for i := 0 to NextConnList.Count - 1 do
begin
RelatedConn := T3DConnector(NextConnList[i]);
//Åñëè äëèíà òðàññû â ðåçóëüòàòå ñäâèãà áóäåò ñëèøêîì ìàëà - ÄÂÈÃÀÒÜ ÍÈÇÇß...
dist := sqrt(sqr(RelatedConn.FGLPoint.x -PointMoveTo.x) + sqr(RelatedConn.FGLPoint.y -PointMoveTo.y) + sqr(RelatedConn.FGLPoint.z -PointMoveTo.z));
if comparevalue(dist, 0.2) <> 1 then
begin
Result := False;
break;
end;
end;
NextConnList.Free;
if not Result then
exit;
end;
{
@ -23281,6 +23341,12 @@ begin
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FSCSObject <> nil then
begin
//Tolik 13/06/2025 -- íóæíî ïðîâåðÿòü è ëèñò, íà êîòîðîì íàõîäèòñÿ îáúåêò, ò.ê. ID-êè ôîðìèðóþòñÿ íà êàæäîì ëèñòå(äëÿ ôèãóð)
// äëÿ êàæäîãî ëèñòà, íà÷èíàÿ ñ 1000000...ìîæåò ïîëó÷èòüñÿ ïðè ìîäåëè ïðîåêòà, ÷òî áóäåò íàñêîëüêî êîííåêòîðîâ èëè òðàññ
// ñ îäèíàêîâûìè àéäèøíèêàìè è ïîëó÷èòñÿ õåðíÿ òèïà ìóëüòèñåëåêòà òîãäà, êîãäà îí íå íóæåí
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FListID = xConn.FListID then
begin
//
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FGLObject <> nil then
@ -23294,12 +23360,19 @@ begin
end;
end;
end;
end;
for k := 0 to DuplicateNodeTree.Items.Count - 1 do
begin
if TObject(TTreeNode(DuplicateNodeTree.Items[k]).Data) is T3DConnector then
begin
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FSCSObject <> nil then
begin
//Tolik 13/06/2025 -- íóæíî ïðîâåðÿòü è ëèñò, íà êîòîðîì íàõîäèòñÿ îáúåêò, ò.ê. ID-êè ôîðìèðóþòñÿ íà êàæäîì ëèñòå(äëÿ ôèãóð)
// äëÿ êàæäîãî ëèñòà, íà÷èíàÿ ñ 1000000...ìîæåò ïîëó÷èòüñÿ ïðè ìîäåëè ïðîåêòà, ÷òî áóäåò íàñêîëüêî êîííåêòîðîâ èëè òðàññ
// ñ îäèíàêîâûìè àéäèøíèêàìè è ïîëó÷èòñÿ õåðíÿ òèïà ìóëüòèñåëåêòà òîãäà, êîãäà îí íå íóæåí
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FListID = xConn.FListID then
begin
//
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
begin
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FGLObject <> nil then
@ -23313,6 +23386,7 @@ begin
end;
end;
end;
end;
{
for l := 0 to RelatedPipeConns.Count - 1 do
begin
@ -23407,7 +23481,10 @@ begin
if TglPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes.Count = 2 then
begin
T3DConnector(RelatedPipeConns[i]).FGLPoint.x := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[0].X;
T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[0].Y - xConn.FZOrder;
//Tolik 13/06/2025 --
//T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[0].Y - xConn.FZOrder;
T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[0].Y;
//
T3DConnector(RelatedPipeConns[i]).FGLPoint.z := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[0].Z;
end
else
@ -23415,7 +23492,10 @@ begin
if TglPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes.Count = 3 then
begin
T3DConnector(RelatedPipeConns[i]).FGLPoint.x := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[1].X;
T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[1].Y - xConn.FZOrder;
//Tolik 13/06/2025 --
//T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[1].Y - xConn.FZOrder;
T3DConnector(RelatedPipeConns[i]).FGLPoint.y := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[1].Y;
//
T3DConnector(RelatedPipeConns[i]).FGLPoint.z := TGLPipe(T3DConnector(RelatedPipeConns[i]).FGLObject).Nodes[1].Z;
end;
end;

View File

@ -4471,12 +4471,19 @@ var
var i, j, TubeCount: Integer;
LineCatalog: TSCSCatalog;
LineSCSComponent: TSCSComponent;
//Tolik 13/06/2025 -- åñëè áóäåò ìîäåëü ïðîåêòà, íóæíî ïîëó÷àòü ëèñò êàæäîãî îáúåêòà îòäåëüíî
SCSList: TSCSList;
begin
Result := False;
TubeCount := 0;
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(TF_CAD(TPowerCad(aConn.Owner).Owner).FCADListID);
if SCSList <> nil then
begin
for i := 0 to AConn.JoinedOrtholinesList.Count - 1 do
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLinesList[i]).ID);
//LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLinesList[i]).ID);
LineCatalog := SCSList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLinesList[i]).ID);
if LineCatalog <> nil then
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
@ -4490,6 +4497,7 @@ var
end;
end;
end;
end;
Result := (TubeCount > 0);
end;
@ -4508,6 +4516,7 @@ var
CableOffset: Double;
ConnSide: integer;
exVals: Boolean;
SCSList: TSCSList; //13/06/2025 -- Tolik - òåêóùèé ëèñò(åñëè áóäåò ìîäåëü ïðîåêòà, ÷òîá íå áûëî "ïîòåðÿøåê"
//Tolik 12/11/2021 -- ïðîâåðêà íà íàëè÷èå â òî÷å÷íîì îáúåêòå ýëåìåíòà òðóáíîãî ñîåäèíåíèÿ
function CheckisPipeElement(aConnector: TConnectorObject): Boolean;
@ -4555,8 +4564,14 @@ var
begin
for i := 0 to aConn.JoinedOrthoLineslist.Count - 1 do
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLineslist[i]).ID);
//Tolik 13/06/2025 --
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(TF_CAD(TPowerCad(aConn.Owner).Owner).FCADListID);
if SCSList <> nil then
begin
LineCatalog := SCSList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLineslist[i]).ID);
//LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLineslist[i]).ID);
if LineCatalog <> nil then
begin
if PassedLineList.IndexOf(LineCatalog) = -1 then
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
@ -4578,6 +4593,8 @@ var
end;
end;
end;
end;
end;
end
else
begin
@ -4586,8 +4603,15 @@ var
Joinedconn := TconnectorObject(aConn.JoinedconnectorsList[j]);
for i := 0 to Joinedconn.JoinedOrthoLinesList.Count - 1 do
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(Joinedconn.JoinedOrthoLineslist[i]).ID);
//Tolik 13/06/2025 --
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(TF_CAD(TPowerCad(aConn.Owner).Owner).FCADListID);
if SCSList <> nil then
begin
LineCatalog := SCSList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLineslist[i]).ID);
//LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(Joinedconn.JoinedOrthoLineslist[i]).ID);
if LineCatalog <> nil then
begin
if PassedLineList.IndexOf(LineCatalog) = -1 then
begin
for k := 0 to LineCatalog.ComponentReferences.Count - 1 do
@ -4611,6 +4635,8 @@ var
end;
end;
end;
end;
end;
(*
for i := 0 to CableList.Count - 1 do