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,10 +22243,15 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
//Tolik 13/06/2025 --
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
end;
end;
end;
end;
@ -22279,10 +22284,15 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
//Tolik 13/06/2025 --
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
end;
end;
end;
end;
@ -22304,10 +22314,15 @@ var
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject <> nil then
begin
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
//13/06/2025 -- Tolik Çäåñü òîæå ïðîâåðÿåì íà ñîâïàäåíèå ëèñòà
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FListID = TF_CAD(TPowerCad(RelatedSCSLine.Owner).Owner).FCADListID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
//
if T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = RelatedSCSLine.ID then
begin
RelatedLine := T3DLine(TTreeNode(SCSModelTree.Items[i]).Data);
break;
end;
end;
end;
end;
@ -22372,12 +22387,17 @@ var
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSObject <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSObject.ID = SCSConn.ID then
//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).FisPipeElement then
//
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSObject.ID = SCSConn.ID then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data) <> xConn then
RelatedPipeConns.Add(T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data));
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FisPipeElement then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data) <> xConn then
RelatedPipeConns.Add(T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data));
end;
end;
end;
end;
@ -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,13 +23341,20 @@ begin
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FSCSObject <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
//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).FGLObject <> nil then
//
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FGLObject is TGLPipe then
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FGLObject <> nil then
begin
RelatedPipeConns.Add(T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data));
if T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data).FGLObject is TGLPipe then
begin
RelatedPipeConns.Add(T3DConnector(TTreeNode(SCSModelTree.Items[k]).Data));
end;
end;
end;
end;
@ -23300,13 +23367,20 @@ begin
begin
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FSCSObject <> nil then
begin
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
//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).FGLObject <> nil then
//
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FSCSObject.ID = xConn.FSCSObject.ID then
begin
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FGLObject is TGLPipe then
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FGLObject <> nil then
begin
RelatedPipeConns.Add(T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data));
if T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data).FGLObject is TGLPipe then
begin
RelatedPipeConns.Add(T3DConnector(TTreeNode(DuplicateNodeTree.Items[k]).Data));
end;
end;
end;
end;
@ -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,21 +4471,29 @@ var
var i, j, TubeCount: Integer;
LineCatalog: TSCSCatalog;
LineSCSComponent: TSCSComponent;
//Tolik 13/06/2025 -- åñëè áóäåò ìîäåëü ïðîåêòà, íóæíî ïîëó÷àòü ëèñò êàæäîãî îáúåêòà îòäåëüíî
SCSList: TSCSList;
begin
Result := False;
TubeCount := 0;
for i := 0 to AConn.JoinedOrtholinesList.Count - 1 do
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(TF_CAD(TPowerCad(aConn.Owner).Owner).FCADListID);
if SCSList <> nil then
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLinesList[i]).ID);
if LineCatalog <> nil then
for i := 0 to AConn.JoinedOrtholinesList.Count - 1 do
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
//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
LineSCSComponent := LineCatalog.ComponentReferences[j];
if LineSCSComponent.ComponentType.SysName = ctsnTube then
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
inc(TubeCount);
break;
LineSCSComponent := LineCatalog.ComponentReferences[j];
if LineSCSComponent.ComponentType.SysName = ctsnTube then
begin
inc(TubeCount);
break;
end;
end;
end;
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,27 +4564,35 @@ var
begin
for i := 0 to aConn.JoinedOrthoLineslist.Count - 1 do
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TOrthoLine(aConn.JoinedOrthoLineslist[i]).ID);
if LineCatalog <> nil then
if PassedLineList.IndexOf(LineCatalog) = -1 then
//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
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
if PassedLineList.IndexOf(LineCatalog) = -1 then
begin
LineComponent := LineCatalog.ComponentReferences[j];
if LineComponent.ComponentType.SysName = ctsnTube then
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
LineList.Add(TOrthoLine(aConn.JoinedOrthoLineslist[i]));
TubeList.Add(LineComponent);
// if isCableComponent(LineComponent) then
LineComponent := LineCatalog.ComponentReferences[j];
if LineComponent.ComponentType.SysName = ctsnTube then
begin
LineList.Add(TOrthoLine(aConn.JoinedOrthoLineslist[i]));
TubeList.Add(LineComponent);
// if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent);
break;
end;
if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent);
break;
end;
if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent);
end;
end;
end;
end;
end;
end
@ -4586,28 +4603,37 @@ 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);
if LineCatalog <> nil then
if PassedLineList.IndexOf(LineCatalog) = -1 then
begin
for k := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
LineComponent := LineCatalog.ComponentReferences[k];
//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);
if LineComponent.ComponentType.SysName = ctsnTube then
//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
begin
LineList.Add(TOrthoLine(JoinedConn.JoinedOrthoLineslist[i]));
TubeList.Add(LineComponent);
break;
end
else
begin
if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent);
LineComponent := LineCatalog.ComponentReferences[k];
if LineComponent.ComponentType.SysName = ctsnTube then
begin
LineList.Add(TOrthoLine(JoinedConn.JoinedOrthoLineslist[i]));
TubeList.Add(LineComponent);
break;
end
else
begin
if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent);
end;
end;
end;
end;
end;
end;
end;
end;