mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
9559 lines
387 KiB
ObjectPascal
9559 lines
387 KiB
ObjectPascal
unit U_ChoiceConnectSide;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, cxControls,
|
||
cxContainer, cxEdit, cxRadioGroup, ExtCtrls, ActnList, ActnMan, RzPanel,
|
||
ComCtrls, Contnrs, DrawObjects, U_CAD,
|
||
|
||
U_BaseCommon, U_BaseConstants, U_Constants, U_Common, U_SCSComponent, U_SCSLists, U_SCSClasses, U_TrunkSCS, siComp,
|
||
siLngLnk, cxGraphics, cxLookAndFeels, Menus, PlatformDefaultStyleActnCtrls;
|
||
|
||
type TFChoiceConnSideMode = (fmChoiceConnSide, fmChoiceLineObject);
|
||
|
||
{
|
||
type
|
||
TConnectInterfRes = record
|
||
CanConnect: Boolean;
|
||
ConnectInterfCount: Integer;
|
||
end; }
|
||
|
||
type
|
||
TF_ChoiceConnectSide = class(TForm)
|
||
ActionManager1: TActionManager;
|
||
Act_AddToConnList: TAction;
|
||
Act_DelFromConnList: TAction;
|
||
GroupBox_ConnectingList: TGroupBox;
|
||
ListView_ToConnect: TListView;
|
||
Panel_Container: TPanel;
|
||
GroupBox_ChoiceConnSide: TGroupBox;
|
||
Splitter1: TSplitter;
|
||
GroupBox_Comp1: TGroupBox;
|
||
Splitter2: TSplitter;
|
||
Panel_InterfComp1: TPanel;
|
||
ListView_InterfComp1: TListView;
|
||
Panel1: TPanel;
|
||
Label1: TLabel;
|
||
Panel_ConnComp1: TPanel;
|
||
ListView_ConnComp1: TListView;
|
||
Panel3: TPanel;
|
||
Label2: TLabel;
|
||
GroupBox_Comp2: TGroupBox;
|
||
Splitter3: TSplitter;
|
||
Panel_ConnComp2: TPanel;
|
||
ListView_ConnComp2: TListView;
|
||
Panel4: TPanel;
|
||
Label4: TLabel;
|
||
Panel_InterfComp2: TPanel;
|
||
ListView_InterfComp2: TListView;
|
||
Panel2: TPanel;
|
||
Label3: TLabel;
|
||
GroupBox_ChoiceLineObject: TGroupBox;
|
||
Splitter4: TSplitter;
|
||
Splitter5: TSplitter;
|
||
ListView_Compons1: TListView;
|
||
ListView_Compons2: TListView;
|
||
Panel_OKCancel: TRzPanel;
|
||
Button_OK: TcxButton;
|
||
Button_Cancel: TcxButton;
|
||
Timer_UpdateOnJoin: TTimer;
|
||
Timer_UpdateOnDisJoin: TTimer;
|
||
Timer_RefreshAllLists: TTimer;
|
||
Timer_DefineObjetsParamsInCAD: TTimer;
|
||
RzPanel1: TRzPanel;
|
||
Button_AddConnList: TcxButton;
|
||
Button_DelFromConnList: TcxButton;
|
||
lng_Forms: TsiLangLinked;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure ListView_InterfComp1Change(Sender: TObject; Item: TListItem;
|
||
Change: TItemChange);
|
||
procedure ListView_InterfComp2Change(Sender: TObject; Item: TListItem;
|
||
Change: TItemChange);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure Act_AddToConnListExecute(Sender: TObject);
|
||
procedure Act_DelFromConnListExecute(Sender: TObject);
|
||
procedure FormHide(Sender: TObject);
|
||
procedure Panel_OKCancelResize(Sender: TObject);
|
||
procedure Timer_UpdateOnJoinTimer(Sender: TObject);
|
||
procedure Timer_UpdateOnDisJoinTimer(Sender: TObject);
|
||
procedure Timer_RefreshAllListsTimer(Sender: TObject);
|
||
procedure Timer_DefineObjetsParamsInCADTimer(Sender: TObject);
|
||
private
|
||
FSideCompon1: Integer;
|
||
FSideCompon2: Integer;
|
||
public
|
||
GForm: TForm;
|
||
|
||
GFormMode: TFChoiceConnSideMode;
|
||
|
||
GIDComp1: Integer;
|
||
GIDComp2: Integer;
|
||
GConnectKind: TConnectkind;
|
||
|
||
|
||
//***** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//function ConnectInterfaces(ASCSCompon1, ASCSCompon2: TSCSComponent;
|
||
// ASideComp1, ASideComp2: Integer; AConnectKind: TConnectkind; ACanCabling: Boolean;
|
||
// AShowMessageType: TShowMessageType; ASimulation: Boolean = false): TConnectInterfRes;
|
||
|
||
function CanConnectInterfaces(AInterfDat1, AInterfDat2: TSCSInterface;
|
||
AInterf1Form, AInterf2Form: TForm; AConnectKind: TConnectKind): TCheckInterfForUnionResult;
|
||
function MoveItemsToConnectList(ALItem1, ALItem2: TListItem;
|
||
AListView: TlistView): Boolean;
|
||
function MoveItemsFromConnectList(AMoveLItem: TListItem;
|
||
ATargetListView1, ATargetListView2: TListView): Boolean;
|
||
procedure FreeToConectListView(AListView: TlistView);
|
||
procedure RefreshCurrListComponents;
|
||
procedure RefreshComponWholeLength(AComponent: TSCSComponent; AWholeObj: Pointer=nil);
|
||
|
||
|
||
procedure OnAfterCopyDelComponFromObject(ASCSObject: TSCSCatalog);
|
||
procedure OnAfterCopyDelCompon(ASCSCompon: TSCSComponent);
|
||
procedure OnAfterCopyCompon(ASCSCompon: TSCSComponent; ASourceForm, ATargetForm: TForm);
|
||
procedure OnAfterDeleteCompon(ASCSCompon: TSCSComponent);
|
||
procedure OnAfterMoveComponInCatalog(ASCSCompon: TSCSComponent);
|
||
procedure OnAfterMoveComponBetweenCatalogs(ASCSCompon: TSCSComponent;
|
||
AOldCatalog, ANewCatalog: TSCSCatalog);
|
||
|
||
|
||
procedure OnAfterConnectCompons(ASCSCompon, ASCSChild: TSCSComponent);
|
||
procedure OnAfterDisConnectCompons(ASCSCompon, ASCSChild: TSCSComponent; AIDCompRel: Integer);
|
||
procedure OnAfterJoinCompons(ASCSCompon1, ASCSCompon2: TSCSComponent; ASide1, ASide2: Integer);
|
||
procedure OnAfterDisJoinCompons(ACompon1, ACompon2: TSCSComponent);
|
||
procedure OnBeforeDeleteComponent(AComponent: TSCSComponent);
|
||
procedure DeleteConnectedComponByWholeID(AWholeID: Integer);
|
||
procedure InsertToConnectedComponents(AComponent, AConnectCompon: TSCSComponent;
|
||
AIDSideCompon, ATypeConect: Integer);
|
||
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
//procedure DefineDisconnectedComponsObjects(AComponent1, AComponent2: TSCSComponent);
|
||
|
||
procedure DefineObjectParams(ASCSObject: TSCSCatalog);
|
||
procedure DefineObjectParamsInFuture(ASCSObject: TSCSCatalog);
|
||
procedure DefineObjectParamsByServFldsInFuture(ASCSObject: TSCSCatalog; AObjectParams: TDefineObjectParams);
|
||
procedure DefineObjectCoordZ(AObject: TSCSCatalog);
|
||
procedure DefineObjectStatus(ASCSObject: TSCSCatalog);
|
||
procedure DefineObjectHaveCableChannel(AObject: TSCSCatalog);
|
||
procedure DefineObjectSignature(ASCSObject: TSCSCatalog);
|
||
procedure DefineObjectNote(ASCSObject: TSCSCatalog);
|
||
procedure DefineTraceStyleInCAD(ATraceObject: TSCSCatalog);
|
||
procedure DefineObjectNetworkTypes(AObject: TSCSCatalog);
|
||
// Tolik -- 09/06/2017 --
|
||
procedure ModifyDrawFigureByProps(AObject: TSCSCatalog);
|
||
//
|
||
procedure DefineObjectIcon(AObject: TSCSCatalog);
|
||
procedure DefineObjectJoinedTrunk(AObject: TSCSCatalog);
|
||
procedure DefineObjectParamsAfterChangeComponMark(AObject: TSCSCatalog);
|
||
procedure DefineObjectsParamsAfterChangeComponMark(AObjects: TSCSCatalogs);
|
||
procedure DefineObjectTrunkAfterChange(AObject: TSCSCatalog);
|
||
|
||
procedure DefineChildComponsMarksByTop(ATopComponent: TSCSComponent; ANoDefineCompons: TSCSComponents);
|
||
procedure DefineComponTrunkInFuture(AComponent: TSCSComponent);
|
||
procedure DefineComponTrunkAfterChangeInFuture(AComponent: TSCSComponent; ARestartTimer: Boolean);
|
||
procedure DefineJoinedTrunkAfterChangeInFuture(AComponent: TSCSComponent);
|
||
procedure RefreshApproachInCAD(AAproachCompon: TSCSComponent);
|
||
|
||
//***** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fmChoiceConnSide
|
||
function ChoiceSides(ACompData1, ACompData2: TSCSComponent; AConnectKind: TConnectkind): Boolean;
|
||
|
||
function GetIDInterfRel(AListView: TListView): Integer;
|
||
procedure SetGroupBoxCaption(AComboBox: TGroupBox; ACaption: String);
|
||
|
||
procedure LoadInterfaces(AInterfaces: TSCSInterfaces; ASide: Integer; AListView: TListView);
|
||
procedure LoadInterfDataToListView(AListItem: TListItem);
|
||
procedure LoadComponsByInterf(ACurrCompon: Integer; AInterfListItem: TListItem; AListView_Compons: TListView);
|
||
|
||
procedure FreeListView(AListView: TListView);
|
||
procedure EnableAddDelInterfToConn;
|
||
|
||
|
||
|
||
//***** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fmChoiceLineObject
|
||
function GetNumSideByObject(AObject: TSCSCatalog; AConnectObjectParams: TList): Integer;
|
||
function CanConnectLineComponWithConObjects(AIDNBLineCompon, AIDPointFigure, AIDFinalFigure: Integer; aConsiderBoxAndRack: Boolean=false): Boolean;
|
||
function CanJoinComponsByCAD(ACompon1, ACompon2: TSCSComponent): Boolean;
|
||
function ConnectCrossWithModules(ACrossComponent, AComponFrom, AComponTo:
|
||
TSCSComponent; ANoCopyCrossAsFirst: Boolean): TCrossConnectRes;
|
||
function ConnectObjectCompons(AObject1, AObject2: TSCSCatalog;
|
||
ASideObject1, ASideObject2: Integer; AOnlyNewLineCompon: Boolean): Boolean;
|
||
function ConnectObjects(AConnectObjectParams1, AConnectObjectParams2: Tlist): Boolean;
|
||
function ConnectObjectsByWay(AWay: TIntList; AFigures, ASCSObjs: TList; APosList: TIntList = nil; aConsiderBoxAndRack: Boolean=false): Boolean;
|
||
function JoinWithDefineSides(AComponent1, AComponent2: TSCSComponent; ACheck: Boolean;
|
||
ACompon1Interfaces: TSCSInterfaces = nil; ACompon2Interfaces: TSCSInterfaces = nil;
|
||
ACanWithNoInterfaces: Boolean = false): TConnectInterfRes;
|
||
procedure JoinConnectorWithLines(AConnector: TSCSCatalog;
|
||
AComponentFromConnector: TSCSComponent; ALineComponsFromTraces: TSCSComponents);
|
||
procedure JoinLineWithJoinedObjects(ALineObject: TSCSCatalog);
|
||
procedure SetObjectComponAsCanToJoin(ASCSObject: TSCSCatalog; ACanToJoin: Boolean);
|
||
// Tolik 26/09/2018 --
|
||
{
|
||
function AutoConnectOverRaiseLine(APointObjectID: Integer; ARaiseLineID: Integer;
|
||
AJoinedBeforeRaise, AJoinedAfterRaise: TList; ALineType: TLineType): Boolean;
|
||
}
|
||
function AutoConnectOverRaiseLine(APointObjectID: Integer; ARaiseLineID: Integer;
|
||
AJoinedBeforeRaise, AJoinedAfterRaise: TList; ALineType: TLineType; aNoCopyList: TList = nil): Boolean;
|
||
//
|
||
function AutoDisconnectOverRaiseLine(ARaiseLineID: Integer; AJoinedBeforeRaise, AJoinedAfterRaise: TList): Boolean;
|
||
function MakeCabling(AIDObjectList: Tlist; ASaveForUndo: Boolean=false): Boolean;
|
||
function DisconnectObjects(AIDObjectList1, AIDObjectList2: Tlist): Boolean;
|
||
|
||
function GetCatalogList(AConnectObjectParams: Tlist; var AComponCount: Integer): TSCSCatalogs;
|
||
//function GetComponList(AInterfList: TList): TSCSComponents;
|
||
procedure FreeComponList(AComponList: TList);
|
||
procedure FreeCatalogList(ACatalogList: TList);
|
||
procedure JoinCrossConnections(ASCSComponent: TSCSComponent);
|
||
procedure LoadTrassaName(AListItem: TListItem);
|
||
|
||
|
||
constructor Create(AOwner: TComponent; AForm: TForm);
|
||
destructor Destroy; override;
|
||
end;
|
||
|
||
{var
|
||
F_ChoiceConnectSide: TF_ChoiceConnectSide;}
|
||
|
||
implementation
|
||
Uses Unit_DM_SCS, U_Main, FIBQuery, U_ESCadClasess, U_HouseClasses, USCS_main, U_AutoTraceConnectOrder, U_PEAutotraceDialog, PCDrawing, {Tolik}Math;
|
||
{$R *.dfm}
|
||
|
||
{ TF_ChoiceConnectSide }
|
||
|
||
// ########################## <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ########################
|
||
// #############################################################################
|
||
//
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
(*
|
||
function TF_ChoiceConnectSide.ConnectInterfaces(ASCSCompon1, ASCSCompon2: TSCSComponent;
|
||
ASideComp1, ASideComp2: Integer; AConnectKind: TConnectkind; ACanCabling: Boolean;
|
||
AShowMessageType: TShowMessageType; ASimulation: Boolean = false): TConnectInterfRes;
|
||
var i, j: Integer;
|
||
InterfList1: TSCSInterfaces;
|
||
InterfList2: TSCSInterfaces;
|
||
|
||
InterfDat1: TSCSInterface;
|
||
InterfDat2: TSCSInterface;
|
||
ID_Compon1: Integer;
|
||
ID_Compon2: Integer;
|
||
|
||
CanConnBusyMultiple: Boolean;
|
||
CanWhile: Boolean;
|
||
CanConn: Boolean;
|
||
ConnectInterfCount: Integer;
|
||
|
||
|
||
begin
|
||
try
|
||
Result.CanConnect := false;
|
||
Result.ConnectInterfCount := 0;
|
||
|
||
ID_Compon1 := -1;
|
||
ID_Compon2 := -1;
|
||
|
||
CanWhile := true;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, (<28><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>...)
|
||
if Not TF_Main(GForm).CanConnCompon(ASCSCompon1, ASCSCompon2, cntUnion, AShowMessageType) then
|
||
Exit; //// EXIT ////
|
||
|
||
CanConn := false;
|
||
ConnectInterfCount := 0;
|
||
CanConnBusyMultiple := ACanCabling;
|
||
if CanConnBusyMultiple = false then
|
||
if (ASCSCompon1.IsLine = biFalse) or (ASCSCompon2.IsLine = biFalse) then
|
||
CanConnBusyMultiple := true;
|
||
|
||
InterfList1 := TSCSInterfaces.Create(false);
|
||
InterfList2 := TSCSInterfaces.Create(false);
|
||
try
|
||
InterfList1.Assign(ASCSCompon1.Interfaces, laCopy);
|
||
InterfList2.Assign(ASCSCompon2.Interfaces, laCopy);
|
||
|
||
while CanWhile do
|
||
begin
|
||
CanWhile := false;
|
||
for i := 0 to InterfList1.Count - 1 do
|
||
begin
|
||
InterfDat1 := InterfList1.Items[i];
|
||
for j := 0 to InterfList2.Count - 1 do
|
||
begin
|
||
InterfDat2 := InterfList2.Items[j];
|
||
if (InterfDat1.TypeI = itFunctional) and (InterfDat2.TypeI = itFunctional) then
|
||
if ( ((ASideComp1 > -1) and ((InterfDat1.Side = ASideComp1) or (InterfDat1.Side = 0)) ) or (ASideComp1 = -1) ) and
|
||
( ((ASideComp2 > -1) and ((InterfDat2.Side = ASideComp2) or (InterfDat2.Side = 0)) ) or (ASideComp2 = -1) ) then
|
||
if ((InterfDat1.IsBusy = biFalse) or ( (InterfDat1.Multiple = biTrue) and CanConnBusyMultiple)) and
|
||
((InterfDat2.IsBusy = biFalse) or ( (InterfDat2.Multiple = biTrue) and CanConnBusyMultiple)) then
|
||
if CanConnectInterfaces(InterfDat1, InterfDat2, ASCSCompon1.ActiveForm, ASCSCompon2.ActiveForm, AConnectKind) = chrSuccess then
|
||
begin
|
||
if ASimulation = false then
|
||
begin
|
||
TF_Main(GForm).ConnectInterfaces(InterfDat1, InterfDat2, -1, cntUnion);
|
||
//TF_Main(GForm).UnionInterfaces(InterfDat1.ID, InterfDat2.ID, AConnectKind);
|
||
|
||
//IdentifyConnectedForPort(InterfDat1);
|
||
//IdentifyConnectedForPort(InterfDat2);
|
||
|
||
ID_Compon1 := InterfDat1.ID_Component;
|
||
ID_Compon2 := InterfDat2.ID_Component;
|
||
|
||
//if InterfDat1.Multiple = biFalse then
|
||
//begin
|
||
//FreeMem(InterfDat1);
|
||
//InterfDat1.IsBusy := biTrue;
|
||
//ASCSCompon1.Interfaces.Delete(i);
|
||
//end;
|
||
|
||
//if InterfDat1.Multiple = biFalse then
|
||
//begin
|
||
//FreeMem(InterfDat2);
|
||
//InterfDat2.IsBusy := biTrue;
|
||
//ASCSCompon2.Interfaces.Delete(j);
|
||
//end;
|
||
|
||
//CanWhile := true;
|
||
end;
|
||
//if InterfDat1.Multiple = biFalse then
|
||
InterfList1.Delete(i);
|
||
|
||
//if InterfDat1.Multiple = biFalse then
|
||
InterfList2.Delete(j);
|
||
CanWhile := true;
|
||
|
||
CanConn := true;
|
||
ConnectInterfCount := ConnectInterfCount + 1;
|
||
Break;
|
||
end;
|
||
end;
|
||
if CanWhile then
|
||
Break;
|
||
end;
|
||
end;
|
||
|
||
{
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, (<28><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>...)
|
||
if CanConn then
|
||
if Not TF_Main(GForm).CanConnCompon(ASCSCompon1, ASCSCompon2, cntUnion, AShowMessageType) then
|
||
CanConn := false; }
|
||
|
||
if (CanConn) and (ASimulation = false) then
|
||
with TF_Main(GForm) do
|
||
begin
|
||
AppendToComponRel(ID_Compon1, ID_Compon2, 1, cntUnion);
|
||
OnAfterJoinCompons(ASCSCompon1, ASCSCompon2, ASideComp1, ASideComp2);
|
||
{//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ASCSCompon1.IsLine = biTrue) and (ASCSCompon2.IsLine = biTrue) then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon1)
|
||
else
|
||
begin
|
||
if ASCSCompon1.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon1);
|
||
|
||
if ASCSCompon2.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon2);
|
||
end; }
|
||
end;
|
||
|
||
Result.CanConnect := CanConn;
|
||
Result.ConnectInterfCount := ConnectInterfCount;
|
||
finally
|
||
InterfList1.Free;
|
||
InterfList2.Free;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.ConnectInterfaces: '+E.Message);
|
||
end;
|
||
end;
|
||
*)
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
function TF_ChoiceConnectSide.CanConnectInterfaces(AInterfDat1, AInterfDat2: TSCSInterface;
|
||
AInterf1Form, AInterf2Form: TForm; AConnectKind: TConnectKind): TCheckInterfForUnionResult;
|
||
var HowCheck: TCheckInterfForUnionResult;
|
||
begin
|
||
Result := chrFail;
|
||
HowCheck := {TF_Main(GForm).}CheckInterfForUnion(AInterfDat1, AInterfDat2, AInterf1Form, AInterf2Form, {AConnectKind, }cntUnion, nil, nil);
|
||
Result := HowCheck;
|
||
{if HowCheck = chrSuccess then
|
||
Result := true;}
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ListItems <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
function TF_ChoiceConnectSide.MoveItemsToConnectList(ALItem1,
|
||
ALItem2: TListItem; AListView: TlistView): Boolean;
|
||
var ConnData: PConnectListData;
|
||
ConnLItem: TlistItem;
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
//Interfaces: TList;
|
||
begin
|
||
Result := false;
|
||
try
|
||
New(ConnData);
|
||
ConnData.Data1 := ALItem1.Data;
|
||
ConnData.Data2 := ALItem2.Data;
|
||
|
||
ConnLItem := AListView.Items.Add;
|
||
ConnLItem.Caption := ALItem1.Caption;
|
||
ConnLItem.ImageIndex := ALItem1.ImageIndex;
|
||
ConnLItem.Data := ConnData;
|
||
|
||
ConnLItem.SubItems.Add(ALItem2.Caption);
|
||
ConnLItem.SubItemImages[0] := ALItem2.ImageIndex;
|
||
ConnLItem.Selected := true;
|
||
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
begin
|
||
ALItem1.Delete;
|
||
ALItem2.Delete;
|
||
end;
|
||
fmChoiceLineObject:
|
||
begin
|
||
{SCSComponent1 := ConnData.Data1;
|
||
SCSComponent2 := ConnData.Data2;
|
||
SCSComponent1.EmConnectTo(SCSComponent2);
|
||
if (SCSComponent1.IsLine = ctConn) and
|
||
(SCSComponent1.GetNotBusyInterfCount = 0) then
|
||
ALItem1.Delete
|
||
else
|
||
if SCSComponent1.IsLine = ctLine then
|
||
ALItem1.Delete;
|
||
|
||
if (SCSComponent2.IsLine = ctConn) and
|
||
(SCSComponent2.GetNotBusyInterfCount = 0) then
|
||
ALItem2.Delete
|
||
else
|
||
if SCSComponent2.IsLine = ctLine then
|
||
ALItem2.Delete;
|
||
}
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('U_ChoiceConnectSide: MoveItemsToConnectList ', E.Message);
|
||
end;
|
||
Result := true;
|
||
end;
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ListItems <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
function TF_ChoiceConnectSide.MoveItemsFromConnectList(
|
||
AMoveLItem: TListItem; ATargetListView1,
|
||
ATargetListView2: TListView): Boolean;
|
||
var ListItem1: TListItem;
|
||
ListItem2: TListItem;
|
||
ConnData: PConnectListData;
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
|
||
function AddListItem(AListView: TListView; ACaption: String;
|
||
AImageIndex: Integer; AData: Pointer): TListItem;
|
||
var ResListItem: TListItem;
|
||
begin
|
||
Result := nil;
|
||
ResListItem := AListView.Items.Add;
|
||
ResListItem.Caption := ACaption;
|
||
ResListItem.ImageIndex := AImageIndex;
|
||
ResListItem.Data := AData;
|
||
ResListItem.Selected := true;
|
||
Result := ResListItem;
|
||
end;
|
||
|
||
function FindSCSComponInListView(AListView: TListView; ASCSComponent: TSCSComponent): Boolean;
|
||
var i: Integer;
|
||
begin
|
||
Result := false;
|
||
for i := 0 to AListView.Items.Count - 1 do
|
||
if TSCSComponent(AListView.Items[i].Data).ID = ASCSComponent.ID then
|
||
begin
|
||
Result := True;
|
||
Break;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
try
|
||
Result := false;
|
||
ConnData := AMoveLItem.Data;
|
||
{ListItem1 := ATargetListView1.Items.Add; //ATargetListView1.Items.Add;
|
||
ListItem1.Caption := AMoveLItem.Caption;
|
||
ListItem1.ImageIndex := AMoveLItem.ImageIndex;
|
||
ListItem1.Data := ConnData.Data1;
|
||
ListItem1.Selected := true;}
|
||
|
||
{ListItem2 := ATargetListView2.Items.Add;
|
||
ListItem2.Caption := AMoveLItem.SubItems.Strings[0];
|
||
ListItem2.ImageIndex := AMoveLItem.SubItemImages[0];
|
||
ListItem2.Data := ConnData.Data2;
|
||
ListItem2.Selected := true;}
|
||
|
||
if GFormMode = fmChoiceConnSide then
|
||
begin
|
||
ListItem1 := AddListItem(ATargetListView1, AMoveLItem.Caption,
|
||
AMoveLItem.ImageIndex, ConnData.Data1);
|
||
ListItem2 := AddListItem(ATargetListView2, AMoveLItem.SubItems.Strings[0],
|
||
AMoveLItem.SubItemImages[0], ConnData.Data2);
|
||
LoadInterfDataToListView(ListItem1);
|
||
LoadInterfDataToListView(ListItem2);
|
||
//ATargetListView1.OnChange(ATargetListView1, ATargetListView1.Selected, ctText);
|
||
//ATargetListView2.OnChange(ATargetListView2, ATargetListView2.Selected, ctText);
|
||
end;
|
||
|
||
if GFormMode = fmChoiceLineObject then
|
||
begin
|
||
{SCSComponent1 := ConnData.Data1;
|
||
SCSComponent2 := ConnData.Data2;
|
||
if Not FindSCSComponInListView(ATargetListView1, SCSComponent1) then
|
||
begin
|
||
ListItem1 := AddListItem(ATargetListView1, AMoveLItem.Caption,
|
||
AMoveLItem.ImageIndex, ConnData.Data1);
|
||
LoadTrassaName(ListItem1);
|
||
end;
|
||
if Not FindSCSComponInListView(ATargetListView2, SCSComponent2) then
|
||
begin
|
||
ListItem2 := AddListItem(ATargetListView2, AMoveLItem.SubItems.Strings[0],
|
||
AMoveLItem.SubItemImages[0], ConnData.Data2);
|
||
LoadTrassaName(ListItem2);
|
||
end;
|
||
SCSComponent1.EmDisconnect(SCSComponent2);}
|
||
end;
|
||
|
||
AMoveLItem.Delete;
|
||
except
|
||
on E: Exception do AddExceptionToLogEx('U_ChoiceConnectSide: MoveItemsFromConnectList ', E.Message);
|
||
end;
|
||
|
||
Result := true;
|
||
end;
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.FreeToConectListView(AListView: TlistView);
|
||
var i: integer;
|
||
ConnData: PConnectListData;
|
||
begin
|
||
for i := 0 to AListView.Items.Count - 1 do
|
||
begin
|
||
ConnData := AListView.Items[i].Data;
|
||
if GFormMode = fmChoiceConnSide then
|
||
begin
|
||
FreeMem(ConnData.Data1);
|
||
FreeMem(ConnData.Data2);
|
||
end;
|
||
FreeMem(ConnData);
|
||
end;
|
||
AListView.Items.Clear;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.RefreshCurrListComponents;
|
||
var
|
||
CurrListNode: TTreeNode;
|
||
begin
|
||
Exit; ///// EXIT ///// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
try
|
||
if TF_Main(GForm).GDBMode <> bkProjectManager then
|
||
Exit; ///// EXIT /////
|
||
|
||
GDragPrevTickCount := GetTickCount;
|
||
with TF_Main(GForm) do
|
||
begin
|
||
CurrListNode := nil;
|
||
if Assigned(GSCSBase.CurrProject) then
|
||
if GSCSBase.CurrProject.Active then
|
||
if Assigned(GSCSBase.CurrProject.CurrList) then
|
||
if Assigned(GSCSBase.CurrProject.CurrList.TreeViewNode) then
|
||
CurrListNode := GSCSBase.CurrProject.CurrList.TreeViewNode; //FindComponOrDirInTree(CurrIDCatalogList, false);
|
||
if CurrListNode <> nil then
|
||
RefreshNodesText(CurrListNode, [itComponLine]);
|
||
end;
|
||
GDragCurrTickCount := GetTickCount - GDragPrevTickCount;
|
||
GDragCurrTickCount := GetTickCount - GDragPrevTickCount;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.RefreshCurrListComponents: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.RefreshComponWholeLength(AComponent: TSCSComponent; AWholeObj: Pointer=nil);
|
||
var
|
||
WholeComponObj: TSCSComponents;
|
||
begin
|
||
if AWholeObj <> nil then
|
||
TObject(AWholeObj^) := nil;
|
||
|
||
if AComponent.IsLine = biTrue then
|
||
begin
|
||
AComponent.LoadWholeComponent(true, @WholeComponObj);
|
||
AComponent.RefreshWholeLengthInFuture(WholeComponObj);
|
||
AComponent.DefineFirstLast;
|
||
if WholeComponObj <> nil then
|
||
begin
|
||
//WholeComponObj.Free;
|
||
if AWholeObj <> nil then
|
||
TObject(AWholeObj^) := WholeComponObj
|
||
else
|
||
WholeComponObj.Free;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterCopyDelComponFromObject(ASCSObject: TSCSCatalog);
|
||
begin
|
||
if Assigned(ASCSObject) then
|
||
begin
|
||
if ASCSObject <> nil then
|
||
OpenNoExistsListInCAD(ASCSObject.GetListOwner);
|
||
DefineObjectParamsInFuture(ASCSObject);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterCopyDelCompon(ASCSCompon: TSCSComponent);
|
||
var
|
||
ObjectOwner: TSCSCatalog;
|
||
begin
|
||
if ASCSCompon = nil then
|
||
Exit; //// EXIT ////
|
||
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
ObjectOwner := ASCSCompon.GetFirstParentCatalog;
|
||
|
||
if ObjectOwner <> nil then
|
||
begin
|
||
OpenNoExistsListInCAD(ObjectOwner.GetListOwner);
|
||
DefineObjectParamsInFuture(ObjectOwner);
|
||
ObjectOwner.ServToDefineObjParams := ObjectOwner.ServToDefineObjParams + [dopLengthNearPointObject];
|
||
|
||
ObjectOwner.NotifyChange;
|
||
end;
|
||
|
||
//DefineObjectFullness(ASCSCompon.GetFirstParentCatalog);
|
||
{
|
||
if ASCSCompon.OwnerCatalog = nil then
|
||
ASCSCompon.LoadOwnerCatalog(false);
|
||
//TSCSCAtalog(ASCSCompon.OwnerCatalog).LoadAllComponentsByObjectID(ASCSCompon.ObjectID, [fiAll]);
|
||
DefineObjectParems(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
DefineObjectFullness(ASCSCompon);
|
||
}
|
||
{
|
||
DefineObjectFullness(ASCSCompon);
|
||
DefineObjectNetworkTypes(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
DefineObjectIcon(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
//TF_Main(GForm).DM.DefineComponObjectFullness(ASCSCompon);
|
||
|
||
if ASCSCompon.IsLine = biTrue then
|
||
begin
|
||
DefineObjectNoteInCAD(ASCSCompon);
|
||
DefineTraceStyleInCAD(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
RefreshAllLists;
|
||
end; }
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterCopyCompon(ASCSCompon: TSCSComponent;
|
||
ASourceForm, ATargetForm: TForm);
|
||
var
|
||
i: Integer;
|
||
ComponOwner: TSCSCatalog;
|
||
begin
|
||
OnAfterCopyDelCompon(ASCSCompon);
|
||
|
||
if Assigned(ASourceForm) and Assigned(ATargetForm) then
|
||
if (TF_Main(ASourceForm).GDBMode = bkNormBase) and (TF_Main(ATargetForm).GDBMode = bkProjectManager) then
|
||
begin
|
||
AddNewSprGUIDsToProjectFromComponent(ASCSCompon, ASCSCompon.ProjectOwner.Spravochnik);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ASCSCompon.Properties.Count - 1 do
|
||
DefineComponNormResByProperty(ASCSCompon, PProperty(ASCSCompon.Properties.List^[i]));
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon.CrossConnections.Count > 0 then
|
||
begin
|
||
TF_Main(GForm).GSCSBase.CurrProject.DefineSpravDataFromOtherSpravByNewGUIDs(F_NormBase.GSCSBase.NBSpravochnik);
|
||
|
||
JoinCrossConnections(ASCSCompon);
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
ASCSCompon.CrossConnections.Clear; //ClearList(ASCSCompon.CrossConnections);
|
||
end;
|
||
|
||
{
|
||
//18.06.2013
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
if ASCSCompon.ComponentType.SysName = ctsnCupBoard then
|
||
begin
|
||
ComponOwner := ASCSCompon.GetFirstParentCatalog;
|
||
if ComponOwner <> nil then
|
||
begin
|
||
if GIsProgress then
|
||
PauseProgress(true);
|
||
try
|
||
if MessageQuastYN(cMain_Mes138) = IDYES then
|
||
FSCS_Main.SetFigureAsEndObject(GCadForm, GetFigureByID(GCadForm, ComponOwner.SCSID) );
|
||
finally
|
||
if GIsProgress then
|
||
PauseProgress(false);
|
||
end;
|
||
end;
|
||
end;
|
||
}
|
||
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterDeleteCompon(ASCSCompon: TSCSComponent);
|
||
begin
|
||
OnAfterCopyDelCompon(ASCSCompon);
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterMoveComponInCatalog(ASCSCompon: TSCSComponent);
|
||
var
|
||
SCSObject: TSCSCatalog;
|
||
begin
|
||
try
|
||
if ASCSCompon = nil then
|
||
Exit; ///// EXIT /////
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
SCSObject := ASCSCompon.GetFirstParentCatalog;
|
||
DefineObjectIcon(SCSObject);
|
||
DefineObjectCoordZ(SCSObject);
|
||
|
||
SCSObject.NotifyChange;
|
||
{if ASCSCompon.OwnerCatalog = nil then
|
||
ASCSCompon.LoadOwnerCatalog(false);
|
||
DefineObjectIcon(TSCSCatalog(ASCSCompon.OwnerCatalog)); }
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.OnAfterMoveComponInCatalog: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterMoveComponBetweenCatalogs(ASCSCompon: TSCSComponent;
|
||
AOldCatalog, ANewCatalog: TSCSCatalog);
|
||
begin
|
||
try
|
||
if ASCSCompon = nil then
|
||
Exit; ///// EXIT /////
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
DefineObjectParamsInFuture(AOldCatalog);
|
||
DefineObjectParamsInFuture(ANewCatalog);
|
||
|
||
AOldCatalog.NotifyChange;
|
||
ANewCatalog.NotifyChange;
|
||
|
||
//DefineObjectFullness(ASCSCompon);
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.OnAfterMoveComponBetweenCatalogs: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterConnectCompons(ASCSCompon, ASCSChild: TSCSComponent);
|
||
var
|
||
DesignList: TSCSList;
|
||
|
||
NodeList: TList;
|
||
Node: TTreeNode;
|
||
Dat: POBjectData;
|
||
Expanded: Boolean;
|
||
ChildNodes: TObjectlist;
|
||
ChildNode: TTreeNode;
|
||
i: Integer;
|
||
|
||
OldTick, CurrTick: Cardinal;
|
||
begin
|
||
DesignList := nil;
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
//20.08.2012 TF_Main(GForm).DM.DefineComponNppPorts(ASCSCompon, ASCSChild);
|
||
ASCSChild.DefineNppPorts(ASCSCompon);
|
||
|
||
ASCSChild.DefineNppInterfaces; //TF_Main(GForm).DM.DefineNppInterfaces(ASCSChild);
|
||
|
||
OnAfterCopyDelCompon(ASCSCompon);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon.ComponentType.SysName = ctsnCupBoard then
|
||
begin
|
||
DesignList := TF_Main(GForm).GSCSBase.CurrProject.GetDesignListByComponent(ASCSCompon);
|
||
if Assigned(DesignList) then
|
||
UpdateDesignListOnBoxChange(DesignList.CurrID, DesignList.Setting.IDFigureForDesignList);
|
||
end;
|
||
DefineComponTrunkAfterChangeInFuture(ASCSCompon, false);
|
||
|
||
TF_Main(GForm).CalcPriceForParents(ASCSChild.ID);
|
||
|
||
RemarkComponChild(ASCSCompon, ASCSChild);
|
||
|
||
{if ASCSCompon.OwnerCatalog = nil then
|
||
ASCSCompon.LoadOwnerCatalog(false);
|
||
TSCSCAtalog(ASCSCompon.OwnerCatalog).LoadAllComponentsByObjectID(ASCSCompon.ObjectID, [fiAll]);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
DefineObjectFullness(ASCSCompon);
|
||
DefineObjectNetworkTypes(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
|
||
if ASCSCompon.IsLine = biTrue then
|
||
begin
|
||
DefineObjectNoteInCAD(ASCSCompon);
|
||
DefineTraceStyleInCAD(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
RefreshAllLists;
|
||
end; }
|
||
end
|
||
else
|
||
if TF_Main(GForm).GDBMode = bkNormBase then
|
||
begin
|
||
if ASCSCompon.IDTopComponent <> 0 then
|
||
TF_Main(GForm).CalcPrice(ASCSCompon.IDTopComponent)
|
||
else
|
||
TF_Main(GForm).CalcPriceForParents(ASCSChild.ID);
|
||
|
||
{NodeList := TList.Create;
|
||
ChildNodes := TObjectlist.Create(false);
|
||
|
||
for i := 0 to TF_Main(GForm).Tree_Catalog.Items.Count - 1 do
|
||
begin
|
||
Node := TF_Main(GForm).Tree_Catalog.Items[i];
|
||
Dat := Node.Data;
|
||
if Node <> ASCSCompon.TreeViewNode then
|
||
if Dat.ObjectID = ASCSCompon.ID then
|
||
NodeList.Add(Node);
|
||
end;
|
||
for i := 0 to NodeList.Count - 1 do
|
||
begin
|
||
Node := NodeList.Items[i];
|
||
Expanded := Node.Expanded;
|
||
DeleteChildNodes(Node);
|
||
if i = 0 then
|
||
begin
|
||
TF_Main(GForm).FillCompl(PObjectData(Node.Data).ObjectID, Node);
|
||
ChildNode := Node.getFirstChild;
|
||
while ChildNode <> nil do
|
||
begin
|
||
ChildNodes.Add(ChildNode);
|
||
ChildNode := ChildNode.getNextSibling;
|
||
end;
|
||
Node.Text := TF_Main(GForm).GetNameNode(Node, nil, true, true);
|
||
end
|
||
else
|
||
begin
|
||
CopyChildNodesFromList(TF_Main(GForm).Tree_Catalog, Node, ChildNodes);
|
||
Node.Text := TTreeNode(NodeList[0]).Text;
|
||
end;
|
||
Node.Expanded := Expanded;
|
||
////Node.Text := ATargetNode.Text;
|
||
//Node.Text := TF_Main(GForm).GetNameNode(Node, nil, true, true);
|
||
end;
|
||
|
||
FreeAndNil(ChildNodes);
|
||
FreeAndNil(NodeList);}
|
||
end;
|
||
|
||
ASCSCompon.NotifyChange;
|
||
ASCSChild.NotifyChange;
|
||
|
||
ShowMessageByType(0, smtNone, ChoiceConnectSide_Msg1_1+' '+ASCSCompon.GetNameForVisible+' '+ChoiceConnectSide_Msg1_2+' '+ASCSChild.GetNameForVisible+'', '', 0);
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterDisConnectCompons(ASCSCompon, ASCSChild: TSCSComponent; AIDCompRel: Integer);
|
||
var UpperSrcCompon: TSCSComponent;
|
||
DesignList: TSCSList;
|
||
|
||
i: Integer;
|
||
DelNodes: TObjectList;
|
||
NodesToRefresh: TObjectList;
|
||
Node: TTreeNode;
|
||
DeletingNode: TTreeNode;
|
||
ParentNode: TTreeNode;
|
||
SCSComponent: TSCSComponent;
|
||
begin
|
||
DesignList := nil;
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
UpperSrcCompon := ASCSCompon.GetTopComponent;
|
||
//20.08.2012 TF_Main(GForm).DM.DefineComponNppPorts(UpperSrcCompon);
|
||
//20.08.2012 TF_Main(GForm).DM.DefineComponNppPorts(ASCSChild);
|
||
|
||
OnAfterCopyDelCompon(ASCSCompon);
|
||
OnAfterCopyDelCompon(ASCSChild);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon.ComponentType.SysName = ctsnCupBoard then
|
||
begin
|
||
DesignList := TF_Main(GForm).GSCSBase.CurrProject.GetDesignListByComponent(ASCSCompon);
|
||
if Assigned(DesignList) then
|
||
UpdateDesignListOnBoxChange(DesignList.CurrID, DesignList.Setting.IDFigureForDesignList);
|
||
end;
|
||
DefineComponTrunkAfterChangeInFuture(ASCSCompon, false);
|
||
|
||
TF_Main(GForm).CalcPriceForParents(ASCSCompon.ID);
|
||
|
||
RemarkComponChild(ASCSCompon, ASCSChild);
|
||
|
||
|
||
{
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
DefineObjectFullness(ASCSCompon);
|
||
DefineObjectFullness(ASCSChild);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon.IsLine = biTrue then
|
||
begin
|
||
if ASCSCompon.OwnerCatalog = nil then
|
||
ASCSCompon.LoadOwnerCatalog(false);
|
||
TSCSCAtalog(ASCSCompon.OwnerCatalog).LoadAllComponentsByObjectID(ASCSCompon.ObjectID, [fiAll]);
|
||
|
||
DefineObjectNoteInCAD(ASCSCompon);
|
||
DefineTraceStyleInCAD(TSCSCatalog(ASCSCompon.OwnerCatalog));
|
||
RefreshAllLists;
|
||
end;}
|
||
end
|
||
else
|
||
if TF_Main(GForm).GDBMode = bkNormBase then
|
||
begin
|
||
if ASCSCompon.IDTopComponent <> 0 then
|
||
TF_Main(GForm).CalcPrice(ASCSCompon.IDTopComponent)
|
||
else
|
||
TF_Main(GForm).CalcPriceForParents(ASCSChild.ID);
|
||
|
||
NodesToRefresh := TObjectList.Create(false);
|
||
DelNodes := TObjectList.Create(false);
|
||
for i := 0 to TF_Main(GForm).Tree_Catalog.Items.Count - 1 do
|
||
begin
|
||
Node := TF_Main(GForm).Tree_Catalog.Items[i];
|
||
|
||
if Node.HasChildren and (Node.Count = 0) then
|
||
if (PObjectData(Node.Data).ObjectID = ASCSCompon.ID) and
|
||
(PObjectData(Node.Data).ItemType = ASCSCompon.GetItemType) then
|
||
NodesToRefresh.Add(Node);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if PObjectData(Node.Data).ID_CompRel = AIDCompRel then
|
||
DelNodes.Add(Node);
|
||
end;
|
||
for i := 0 to DelNodes.Count - 1 do
|
||
begin
|
||
//if i = 0 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<2D> <20><><EFBFBD>
|
||
// TF_Main(GForm).OnAddDeleteNode(TTreeNode(DelNodes.Items[i]), nil, false);
|
||
ParentNode := TTreeNode(DelNodes.Items[i]).Parent;
|
||
if NodesToRefresh.IndexOf(ParentNode) = -1 then
|
||
NodesToRefresh.Add(ParentNode);
|
||
|
||
if (ASCSChild.ServNoDelNodeInDiscomplect = false) or (DelNodes[i] <> ASCSChild.TreeViewNode) then
|
||
DeleteNode(TTreeNode(DelNodes.Items[i])); //TTreeNode(DelNodes.Items[i]).Delete;
|
||
|
||
|
||
{if Assigned(ParentNode) then
|
||
begin
|
||
if SCSComponent.ID <> PObjectData(ParentNode.Data).ObjectID then
|
||
begin
|
||
SCSComponent.ID := PObjectData(ParentNode.Data).ObjectID;
|
||
//SCSComponent.KolComplect := DM.GetComponFieldValueAsInteger(SCSComponent.ID, fnKolComplect);
|
||
SCSComponent.LoadComponentByID(SCSComponent.ID, False);
|
||
end;
|
||
ParentNode.Text := TF_Main(GForm).GetNameNode(ParentNode, SCSComponent, true, true);
|
||
PObjectData(ParentNode.Data).ChildNodesCount := SCSComponent.KolComplect;
|
||
if SCSComponent.KolComplect = 0 then
|
||
ParentNode.HasChildren := false;
|
||
end;}
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
{//#20070703#
|
||
SCSComponent := TSCSComponent.Create(GForm);
|
||
for i := 0 to NodesToRefresh.Count - 1 do
|
||
begin
|
||
Node := TTreeNode(NodesToRefresh[i]);
|
||
if SCSComponent.ID <> PObjectData(Node.Data).ObjectID then
|
||
begin
|
||
if PObjectData(Node.Data).ObjectID = ASCSCompon.ID then
|
||
begin
|
||
SCSComponent.Assign(ASCSCompon, false, false);
|
||
SCSComponent.KolComplect := TF_Main(GForm).DM.GetComponFieldValueAsInteger(ASCSCompon.ID, fnKolComplect);
|
||
end
|
||
else
|
||
begin
|
||
SCSComponent.ID := PObjectData(Node.Data).ObjectID;
|
||
SCSComponent.LoadComponentByID(SCSComponent.ID, False);
|
||
end;
|
||
end;
|
||
Node.Text := TF_Main(GForm).GetNameNode(Node, SCSComponent, true, true);
|
||
PObjectData(Node.Data).ChildNodesCount := SCSComponent.KolComplect;
|
||
if SCSComponent.KolComplect = 0 then
|
||
Node.HasChildren := false;
|
||
end;
|
||
FreeAndNil(SCSComponent);}
|
||
|
||
FreeAndNil(DelNodes);
|
||
FreeAndNil(NodesToRefresh);
|
||
end;
|
||
|
||
ASCSCompon.NotifyChange;
|
||
ASCSChild.NotifyChange;
|
||
|
||
ShowMessageByType(0, smtNone, ChoiceConnectSide_Msg2_1+' '+ASCSChild.GetNameForVisible+' '+ChoiceConnectSide_Msg2_2+' '+ASCSCompon.GetNameForVisible+' ', '', 0);
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterJoinCompons(ASCSCompon1, ASCSCompon2: TSCSComponent;
|
||
ASide1, ASide2: Integer);
|
||
var
|
||
i: integer;
|
||
//id_component: Integer;
|
||
//IDObjectFrom: Integer;
|
||
//IDObjectTo: Integer;
|
||
|
||
LineCompon: TSCSComponent;
|
||
LineComponChanged: TSCSComponent;
|
||
LineComponentsChanged: TSCSComponents;
|
||
WholeComponent: TSCSComponents;
|
||
OldWholeID: Integer;
|
||
|
||
|
||
PartComponObject: TSCSCatalog;
|
||
PartCompon: TSCSComponent;
|
||
SCSCompon: TSCSComponent;
|
||
JoinedLineCompon: TSCSComponent;
|
||
SCSComponConn: TSCSComponent;
|
||
MarkID: Integer;
|
||
MarkIDRemoved: Integer;
|
||
NameMark: String;
|
||
//Node: TTreeNode;
|
||
SCSObj1: TSCSCatalog;
|
||
SCSObj2: TSCSCatalog;
|
||
SprComponTypeFromRemovedMarkID: TNBComponentTYpe;
|
||
|
||
ComponID: Integer;
|
||
ComponsDefectAct: TObjectsBlob;
|
||
ComponsDefectActChanged: TObjectsBlob;
|
||
|
||
k: integer;
|
||
Side1ToOther: integer;
|
||
Side2ToOther: integer;
|
||
Compon1FuncIntCount: integer;
|
||
Compon2FuncIntCount: integer;
|
||
From1To2Count: integer;
|
||
|
||
// Tolik
|
||
MaxMarkId : Integer;
|
||
SprComponentType: TNBComponentType;
|
||
CanChangeCounter: boolean;
|
||
l: integer;
|
||
SCSComponent: TSCSComponent;
|
||
//
|
||
|
||
{
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var
|
||
FirstCompon: TSCSComponent;
|
||
LastCompon: TSCSComponent;
|
||
|
||
FirstConnCompon: TSCSComponent;
|
||
LastConnCompon: TSCSComponent;
|
||
|
||
FirstPort: TSCSInterface;
|
||
LastPort: TSCSInterface;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon <> 0) and (ACompon.LastIDConnectedConnCompon <> 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
FirstCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.FirstIDCompon);
|
||
LastCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.LastIDCompon);
|
||
|
||
FirstConnCompon := nil;
|
||
LastConnCompon := nil;
|
||
|
||
FirstPort := nil;
|
||
LastPort := nil;
|
||
|
||
FirstConnCompon := ACompon.FirstConnectedConnCompon;
|
||
LastConnCompon := ACompon.LastConnectedConnCompon;
|
||
|
||
if Assigned(FirstConnCompon) and Assigned(FirstCompon) then
|
||
FirstPort := FirstConnCompon.GetPortJoinedToLine(FirstCompon);
|
||
if Assigned(LastConnCompon) and Assigned(LastCompon) then
|
||
LastPort := LastConnCompon.GetPortJoinedToLine(LastCompon);
|
||
if (FirstPort <> nil) and (LastPort <> nil) then
|
||
begin
|
||
FirstPort.IDConnected := LastPort.ID;
|
||
LastPort.IDConnected := FirstPort.ID;
|
||
|
||
//UpdateInterfFieldAsInteger(FirstPort.ID, LastPort.ID, fnIDConnected);
|
||
//UpdateInterfFieldAsInteger(LastPort.ID, FirstPort.ID, fnIDConnected);
|
||
end;
|
||
end;
|
||
end;}
|
||
|
||
{
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var ConnInterfFirst: TList;
|
||
ConnInterfLast: TList;
|
||
i: Integer;
|
||
PortCount: Integer;
|
||
|
||
FirstConnCompon: TSCSComponent;
|
||
LastConnCompon: TSCSComponent;
|
||
ptrFirstInterf: TSCSInterface;
|
||
ptrLastInterf: TSCSInterface;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon > 0) and (ACompon.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
FirstConnCompon := ACompon.FirstConnectedConnCompon;
|
||
LastConnCompon := ACompon.LastConnectedConnCompon;
|
||
|
||
ConnInterfFirst := GetInterfacesThatConnectCompons(ACompon.FirstIDConnectedConnCompon, ACompon.FirstIDCompon);
|
||
ConnInterfLast := GetInterfacesThatConnectCompons(ACompon.LastIDConnectedConnCompon, ACompon.LastIDCompon);
|
||
if (ConnInterfFirst = nil) or (ConnInterfLast = nil) then
|
||
Exit; //// EXIT ////
|
||
|
||
|
||
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if ConnInterfFirst <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfFirst.Count - 1 do
|
||
if GetInterfCountByFilter('(id = '''+IntToStr(Integer(ConnInterfFirst[i]^))+''') and (id_component = '''+IntTostr(ACompon.FirstIDConnectedConnCompon)+''') and (isPort = '''+IntTostr(biTrue)+''')', true) = 0 then
|
||
begin
|
||
FreeMem(ConnInterfFirst[i]);
|
||
ConnInterfFirst[i] := nil;
|
||
end;
|
||
ConnInterfFirst.Pack;
|
||
end;
|
||
|
||
|
||
if ConnInterfLast <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfLast.Count - 1 do
|
||
if GetInterfCountByFilter('(id = '''+IntToStr(Integer(ConnInterfLast[i]^))+''') and (id_component = '''+IntTostr(ACompon.LastIDConnectedConnCompon)+''') and (isPort = '''+IntTostr(biTrue)+''')', true) = 0 then
|
||
begin
|
||
FreeMem(ConnInterfLast[i]);
|
||
ConnInterfLast[i] := nil;
|
||
end;
|
||
ConnInterfLast.Pack;
|
||
end;
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
PortCount := 0;
|
||
if (ConnInterfFirst.Count > 0) and (ConnInterfLast.Count > 0) then
|
||
if ConnInterfFirst.Count > ConnInterfLast.Count then
|
||
PortCount := ConnInterfLast.Count
|
||
else
|
||
PortCount := ConnInterfFirst.Count;
|
||
|
||
for i := 0 to PortCount - 1 do
|
||
begin
|
||
UpdateInterfFieldAsInteger(Integer(ConnInterfFirst[i]^), Integer(ConnInterfLast[i]^), fnIDConnected);
|
||
UpdateInterfFieldAsInteger(Integer(ConnInterfLast[i]^), Integer(ConnInterfFirst[i]^), fnIDConnected);
|
||
|
||
ptrFirstInterf := FirstConnCompon.GetInterfaceByID(Integer(ConnInterfFirst[i]^));
|
||
ptrLastInterf := LastConnCompon.GetInterfaceByID(Integer(ConnInterfLast[i]^));
|
||
if ptrFirstInterf <> nil then
|
||
ptrFirstInterf.IDConnected := Integer(ConnInterfLast[i]^);
|
||
if ptrLastInterf <> nil then
|
||
ptrLastInterf.IDConnected := Integer(ConnInterfFirst[i]^);
|
||
end;
|
||
|
||
FreeList(ConnInterfFirst);
|
||
FreeList(ConnInterfLast);
|
||
end;
|
||
end; }
|
||
|
||
{
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var ConnInterfFirst: TList;
|
||
ConnInterfLast: TList;
|
||
i: Integer;
|
||
PortCount: Integer;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon > 0) and (ACompon.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
ConnInterfFirst := GetInterfacesThatConnectCompons(ACompon.FirstIDConnectedConnCompon, ACompon.FirstIDCompon);
|
||
ConnInterfLast := GetInterfacesThatConnectCompons(ACompon.LastIDConnectedConnCompon, ACompon.LastIDCompon);
|
||
if (ConnInterfFirst = nil) or (ConnInterfLast = nil) then
|
||
Exit; //// EXIT ////
|
||
|
||
|
||
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
ChangeSQLQuery(scsQSelect, ' select count(id) As Cnt from interface_relation '+
|
||
' where (id = :id) and (id_component = :id_component) and (isport = '''+IntTostr(biTrue)+''') ');
|
||
if ConnInterfFirst <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfFirst.Count - 1 do
|
||
begin
|
||
scsQSelect.Close;
|
||
scsQSelect.SetParamAsInteger('id', Integer(ConnInterfFirst[i]^) );
|
||
scsQSelect.SetParamAsInteger('id_component', ACompon.FirstIDConnectedConnCompon);
|
||
scsQSelect.ExecQuery;
|
||
if scsQSelect.GetFNAsInteger('Cnt') = 0 then
|
||
begin
|
||
FreeMem(ConnInterfFirst[i]);
|
||
ConnInterfFirst[i] := nil;
|
||
end;
|
||
end;
|
||
ConnInterfFirst.Pack;
|
||
end;
|
||
|
||
|
||
if ConnInterfLast <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfLast.Count - 1 do
|
||
begin
|
||
scsQSelect.Close;
|
||
scsQSelect.SetParamAsInteger('id', Integer(ConnInterfLast[i]^) );
|
||
scsQSelect.SetParamAsInteger('id_component', ACompon.LastIDConnectedConnCompon);
|
||
scsQSelect.ExecQuery;
|
||
if scsQSelect.GetFNAsInteger('cnt') = 0 then
|
||
begin
|
||
FreeMem(ConnInterfLast[i]);
|
||
ConnInterfLast[i] := nil;
|
||
end;
|
||
end;
|
||
ConnInterfLast.Pack;
|
||
end;
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
PortCount := 0;
|
||
if (ConnInterfFirst.Count > 0) and (ConnInterfLast.Count > 0) then
|
||
if ConnInterfFirst.Count > ConnInterfLast.Count then
|
||
PortCount := ConnInterfLast.Count
|
||
else
|
||
PortCount := ConnInterfFirst.Count;
|
||
|
||
ChangeSQLQuery(scsQOperat, ' update interface_relation set id_connected = :id_connected where id = :id ');
|
||
for i := 0 to PortCount - 1 do
|
||
begin
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Integer(ConnInterfFirst[i]^));
|
||
scsQOperat.SetParamAsInteger('id_connected', Integer(ConnInterfLast[i]^));
|
||
scsQOperat.ExecQuery;
|
||
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Integer(ConnInterfLast[i]^));
|
||
scsQOperat.SetParamAsInteger('id_connected', Integer(ConnInterfFirst[i]^));
|
||
scsQOperat.ExecQuery;
|
||
end;
|
||
|
||
FreeList(ConnInterfFirst);
|
||
FreeList(ConnInterfLast);
|
||
end;
|
||
end; }
|
||
{
|
||
procedure InsertToConnectedComponents(AWholeID, AIDConnectCompon,
|
||
AIDSideCompon, ATypeConect: Integer);
|
||
var IDObject: Integer;
|
||
begin
|
||
if AIDConnectCompon > 0 then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
IDObject := GetIDCatalogByIDNoUppCompon(AIDConnectCompon);
|
||
InsertToConnCompons(AWholeID, IDObject, AIDConnectCompon, AIDSideCompon, ATypeConect);
|
||
end;
|
||
end; }
|
||
|
||
|
||
begin
|
||
WholeComponent := nil;
|
||
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
|
||
{IGOR} //D0000006310
|
||
Side1ToOther := -1;
|
||
Side2ToOther := -1;
|
||
Compon1FuncIntCount := -1;
|
||
Compon2FuncIntCount := -2;
|
||
From1To2Count := -3;
|
||
try
|
||
for k := 0 to ASCSCompon1.Interfaces.Count - 1 do
|
||
begin
|
||
if ASCSCompon1.Interfaces[k].TypeI = itFunctional then
|
||
// if ASCSCompon1.Interfaces[k].ConnectedInterfaces.Count > 0 then
|
||
begin
|
||
for i := 0 to ASCSCompon1.Interfaces[k].ConnectedInterfaces.Count - 1 do //From Dimon ;)
|
||
if ASCSCompon1.Interfaces[k].ConnectedInterfaces[i].ID_Component = ASCSCompon2.ID then
|
||
begin
|
||
Side1ToOther := ASCSCompon1.Interfaces[k].Side;
|
||
break;
|
||
end;
|
||
end;
|
||
if Side1ToOther <> -1 then
|
||
break;
|
||
end;
|
||
for k := 0 to ASCSCompon2.Interfaces.Count - 1 do
|
||
begin
|
||
if ASCSCompon2.Interfaces[k].TypeI = itFunctional then
|
||
// if ASCSCompon2.Interfaces[k].ConnectedInterfaces.Count > 0 then
|
||
begin
|
||
for i := 0 to ASCSCompon2.Interfaces[k].ConnectedInterfaces.Count - 1 do //From Dimon ;)
|
||
if ASCSCompon2.Interfaces[k].ConnectedInterfaces[i].ID_Component = ASCSCompon1.ID then
|
||
begin
|
||
Side2ToOther := ASCSCompon2.Interfaces[k].Side;
|
||
break;
|
||
end;
|
||
end;
|
||
if Side2ToOther <> -1 then
|
||
break;
|
||
end;
|
||
except
|
||
Side1ToOther := -1;
|
||
Side2ToOther := -1;
|
||
end;
|
||
|
||
try
|
||
if (Side1ToOther <> -1) and (Side2ToOther <> -1) then
|
||
begin
|
||
Compon1FuncIntCount := 0;
|
||
Compon2FuncIntCount := 0;
|
||
From1To2Count := 0;
|
||
for k := 0 to ASCSCompon1.Interfaces.Count - 1 do
|
||
begin
|
||
if ASCSCompon1.Interfaces[k].TypeI = itFunctional then
|
||
if ASCSCompon1.Interfaces[k].Side = Side1ToOther then
|
||
begin
|
||
Compon1FuncIntCount := Compon1FuncIntCount + 1;
|
||
// if ASCSCompon1.Interfaces[k].ConnectedInterfaces.Count > 0 then
|
||
for i := 0 to ASCSCompon1.Interfaces[k].ConnectedInterfaces.Count - 1 do //From Dimon ;)
|
||
if ASCSCompon1.Interfaces[k].ConnectedInterfaces[i].ID_Component = ASCSCompon2.ID then
|
||
From1To2Count := From1To2Count + 1;
|
||
end;
|
||
end;
|
||
for k := 0 to ASCSCompon2.Interfaces.Count - 1 do
|
||
begin
|
||
if ASCSCompon2.Interfaces[k].TypeI = itFunctional then
|
||
if ASCSCompon2.Interfaces[k].Side = Side2ToOther then
|
||
begin
|
||
Compon2FuncIntCount := Compon2FuncIntCount + 1;
|
||
end;
|
||
end;
|
||
end;
|
||
except
|
||
Compon1FuncIntCount := -1;
|
||
Compon2FuncIntCount := -2;
|
||
From1To2Count := -3;
|
||
end;
|
||
{END} //D0000006310
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ASCSCompon1.GuidNB = ASCSCompon2.GuidNB) and
|
||
(ASCSCompon1.IsLine = biTrue) and (ASCSCompon2.IsLine = biTrue) and
|
||
//OLD OLD {ASCSCompon1.CheckJoinedByAllPosibleInterfaces(ASCSCompon2, ASide1, ASide2)}
|
||
( ((ASCSCompon1.JoinedComponents.Count <= 2) and (ASCSCompon2.JoinedComponents.Count <= 2)) or
|
||
((Compon1FuncIntCount = Compon2FuncIntCount) and (Compon2FuncIntCount = From1To2Count)) ) and
|
||
(ASCSCompon1.ComponentType.SysName <> ctsnCableChannel) and (ASCSCompon2.ComponentType.SysName <> ctsnCableChannel) then
|
||
begin
|
||
//DefineComponConnObjectsAfterConnect(ASCSCompon1);
|
||
|
||
LineCompon := nil;
|
||
LineComponChanged := nil;
|
||
LineComponentsChanged := TSCSComponents.Create(false);
|
||
if ASCSCompon2.Whole_ID >= ASCSCompon1.Whole_ID then
|
||
begin
|
||
LineCompon := ASCSCompon1;
|
||
LineComponChanged := ASCSCompon2;
|
||
end
|
||
else
|
||
begin
|
||
LineCompon := ASCSCompon2;
|
||
LineComponChanged := ASCSCompon1;
|
||
end;
|
||
OldWholeID := LineComponChanged.Whole_ID;
|
||
|
||
LineCompon.LoadWholeComponent(true, @WholeComponent);
|
||
LineCompon.RefreshWholeLengthInFuture(WholeComponent);
|
||
LineCompon.DefineFirstLast;
|
||
DefinePortConnected(LineCompon);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
//UpdateComponFieldAsIntegerByField(ASCSCompon2.Whole_ID, ASCSCompon1.Whole_ID, fnWholeID, fnWholeID);
|
||
//TF_Main(GForm).GSCSBase.CurrProject.SetComponentsNewWholeID(ASCSCompon2.Whole_ID, ASCSCompon1.Whole_ID);
|
||
TF_Main(GForm).GSCSBase.CurrProject.SetComponentsNewWholeID(LineComponChanged.Whole_ID, LineCompon.Whole_ID, LineComponentsChanged);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
DeleteConnectedComponByWholeID(LineCompon.Whole_ID);
|
||
DeleteConnectedComponByWholeID(OldWholeID);
|
||
|
||
{ChangeSQLQuery(scsQOperat, ' insert into connected_components (compon_whole_id, id_connect_object, id_connect_compon, id_side_compon, type_connect) '+
|
||
' values(:compon_whole_id, :id_connect_object, :id_connect_compon, :id_side_compon, :type_connect) ');
|
||
InsertToConnectedComponents(ASCSCompon1.Whole_ID,
|
||
ASCSCompon1.FirstIDConnectedConnCompon,
|
||
ASCSCompon1.FirstIDCompon, tcoFrom);
|
||
|
||
InsertToConnectedComponents(ASCSCompon1.Whole_ID,
|
||
ASCSCompon1.LastIDConnectedConnCompon,
|
||
ASCSCompon1.LastIDCompon, tcoTo); }
|
||
|
||
InsertToConnectedComponents(LineCompon{.Whole_ID},
|
||
LineCompon.FirstConnectedConnCompon,
|
||
LineCompon.FirstIDCompon, tcoFrom);
|
||
|
||
InsertToConnectedComponents(LineCompon{.Whole_ID},
|
||
LineCompon.LastConnectedConnCompon,
|
||
LineCompon.LastIDCompon, tcoTo);
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//PartCompon := TSCSComponent.Create(GForm);
|
||
try
|
||
MarkID := 0;
|
||
MarkIDRemoved := 0;
|
||
SprComponTypeFromRemovedMarkID := nil;
|
||
//Tolik
|
||
{B0000001}
|
||
// if LineCompon.MarkID < LineComponChanged.MarkID then
|
||
if ((LineCompon.MarkID < LineComponChanged.MarkID) or (LineComponChanged.MarkID = 0)) then
|
||
//
|
||
begin
|
||
MarkID := LineCompon.MarkID;
|
||
MarkIDRemoved := LineComponChanged.MarkID;
|
||
SprComponTypeFromRemovedMarkID := LineComponChanged.ProjectOwner.Spravochnik.GetComponentTypeByGUID(LineComponChanged.GUIDComponentType);
|
||
end
|
||
else
|
||
begin
|
||
MarkID := LineComponChanged.MarkID;
|
||
MarkIDRemoved := LineCompon.MarkID;
|
||
SprComponTypeFromRemovedMarkID := LineCompon.ProjectOwner.Spravochnik.GetComponentTypeByGUID(LineCompon.GUIDComponentType);
|
||
end;
|
||
//Tolik
|
||
if LineComponChanged.MarkID <> 0 then
|
||
begin
|
||
SprComponentType := TF_Main(GForm).GSCSBase.CurrProject.Spravochnik.GetComponentTypeByGUID(LineComponChanged.GUIDComponentType);
|
||
if SprComponentType.ComponentType.ComponentIndex > 1 then
|
||
begin
|
||
dec(SprComponentType.ComponentType.ComponentIndex);
|
||
end;
|
||
end;
|
||
|
||
for i := 0 to WholeComponent.Count - 1 do
|
||
//12.03.2009 for i := 0 to LineCompon.WholeComponent.Count - 1 do
|
||
begin
|
||
//12.03.2009 PartCompon := nil;
|
||
//12.03.2009 PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(LineCompon.WholeComponent[i]);
|
||
PartCompon := WholeComponent[i];
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
if PartCompon.MarkID <> MarkID then
|
||
begin
|
||
//PartComponObject := PartCompon.GetFirstParentCatalog;
|
||
//if Assigned(PartComponObject) then
|
||
//begin
|
||
PartCompon.MarkID := MarkID;
|
||
//Tolik
|
||
PartCompon.ServToMark := false;
|
||
//
|
||
//Tolik
|
||
//PartCompon.ServChangedMarkID := true;
|
||
//
|
||
//NameMark := TF_Main(GForm).MakeNameMarkComponent(PartCompon, PartComponObject, false);
|
||
//PartCompon.NameMark := NameMark;
|
||
//end;
|
||
end;
|
||
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
|
||
{B0000002}
|
||
//Tolik
|
||
ApplyChangeComponMarkID(PartCompon, true, true, nil);
|
||
//
|
||
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> LineComponentsChanged
|
||
for i := 0 to LineComponentsChanged.Count - 1 do
|
||
begin
|
||
PartCompon := nil;
|
||
PartCompon := LineComponentsChanged[i]; //TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ASCSCompon2.WholeComponent[i]);
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
end;
|
||
|
||
LineCompon.MarkID := MarkID;
|
||
LineComponChanged.MarkID := MarkID;
|
||
|
||
// <20><><EFBFBD><EFBFBD> TIAEIA606A
|
||
if (LineCompon.ProjectOwner <> nil) and (LineCompon.ProjectOwner.Setting.MarkMode = mmTIAEIA606A) then
|
||
if (LineCompon.FirstIDConnectedConnCompon <> 0) and (LineCompon.LastIDConnectedConnCompon <> 0) then
|
||
RemarkComponsRelatedToLineCompon(LineCompon, LineCompon.ProjectOwner);
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if SprComponTypeFromRemovedMarkID <> nil then
|
||
if SprComponTypeFromRemovedMarkID.ComponentType.ComponentIndex = MarkIDRemoved then
|
||
; //15.01.2011 LineCompon.ProjectOwner.SetComponMarkIDGeneratorToMin(SprComponTypeFromRemovedMarkID);
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponsDefectAct := LineCompon.ProjectOwner.GetObjectsBlobByParams(tiComponent, obdkDefectAct, LineCompon.ID);
|
||
ComponsDefectActChanged := LineCompon.ProjectOwner.GetObjectsBlobByParams(tiComponent, obdkDefectAct, LineComponChanged.ID);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if ComponsDefectAct <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to LineComponentsChanged.Count - 1 do
|
||
begin
|
||
PartCompon := LineComponentsChanged[i];
|
||
if ComponsDefectAct.ObjIDs.IndexOf(PartCompon.ID) = -1 then
|
||
ComponsDefectAct.ObjIDs.Add(PartCompon.ID);
|
||
if ComponsDefectActChanged <> nil then
|
||
ComponsDefectActChanged.ObjIDs.Remove(PartCompon.ID);
|
||
end;
|
||
if ComponsDefectActChanged.ObjIDs.Count = 0 then
|
||
ComponsDefectActChanged.Owner.DeleteObjectsBlob(ComponsDefectActChanged);
|
||
end
|
||
else
|
||
if ComponsDefectActChanged <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to LineCompon.WholeComponent.Count - 1 do
|
||
begin
|
||
ComponID := LineCompon.WholeComponent[i];
|
||
if LineComponentsChanged.GetComponenByID(ComponID) = nil then
|
||
if ComponsDefectActChanged.ObjIDs.IndexOf(ComponID) = -1 then
|
||
ComponsDefectActChanged.ObjIDs.Add(ComponID);
|
||
end;
|
||
end;
|
||
|
||
RestartTimer(Timer_UpdateOnJoin);
|
||
finally
|
||
//PartCompon.Free;
|
||
end;
|
||
end;
|
||
//ASCSCompon2.Whole_ID := ASCSCompon1.Whole_ID;
|
||
LineComponChanged.Whole_ID := LineCompon.Whole_ID;
|
||
|
||
FreeAndNil(LineComponentsChanged);
|
||
end
|
||
else
|
||
if (ASCSCompon1.IsLine = biFalse) or (ASCSCompon2.IsLine = biFalse) then
|
||
begin
|
||
{if ASCSCompon1.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon1);
|
||
if ASCSCompon2.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon2);}
|
||
|
||
SCSCompon := nil;
|
||
SCSComponConn := nil;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon1.IsLine = biTrue then
|
||
begin
|
||
SCSCompon := ASCSCompon1;
|
||
SCSComponConn := ASCSCompon2;
|
||
end;
|
||
if ASCSCompon2.IsLine = biTrue then
|
||
begin
|
||
SCSCompon := ASCSCompon2;
|
||
SCSComponConn := ASCSCompon1;
|
||
end;
|
||
|
||
|
||
if SCSCompon <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to SCSCompon.JoinedComponents.Count - 1 do
|
||
begin
|
||
JoinedLineCompon := SCSCompon.JoinedComponents[i];
|
||
if JoinedLineCompon.IsLine = biTrue then
|
||
if JoinedLineCompon.Whole_ID = SCSCompon.Whole_ID then
|
||
// <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>
|
||
if JoinedLineCompon.JoinedComponents.IndexOf(SCSComponConn) <> -1 then
|
||
OnAfterDisJoinCompons(SCSCompon, JoinedLineCompon);
|
||
end;
|
||
|
||
|
||
SCSCompon.LoadWholeComponent(true, @WholeComponent);
|
||
SCSCompon.RefreshWholeLengthInFuture(WholeComponent);
|
||
SCSCompon.DefineFirstLast;
|
||
DefinePortConnected(SCSCompon);
|
||
|
||
DeleteConnectedComponByWholeID(SCSCompon.Whole_ID);
|
||
InsertToConnectedComponents(SCSCompon{.Whole_ID},
|
||
SCSCompon.FirstConnectedConnCompon,
|
||
SCSCompon.FirstIDCompon, tcoFrom);
|
||
InsertToConnectedComponents(SCSCompon{.Whole_ID},
|
||
SCSCompon.LastConnectedConnCompon,
|
||
SCSCompon.LastIDCompon, tcoTo);
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to WholeComponent.Count - 1 do
|
||
//12.03.2009 for i := 0 to SCSCompon.WholeComponent.Count - 1 do
|
||
begin
|
||
//12.03.2009 PartCompon := nil;
|
||
//12.03.2009 PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(SCSCompon.WholeComponent[i]);
|
||
PartCompon := WholeComponent[i];
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
end;
|
||
RestartTimer(Timer_UpdateOnJoin);
|
||
|
||
if SCSComponConn <> nil then
|
||
begin
|
||
DefineComponTrunkInFuture(SCSComponConn);
|
||
if (SCSCompon.ProjectOwner <> nil) and (SCSCompon.ProjectOwner.Setting.MarkMode = mmTIAEIA606A) then
|
||
if (SCSCompon.FirstIDConnectedConnCompon <> 0) and (SCSCompon.LastIDConnectedConnCompon <> 0) then
|
||
RemarkComponsRelatedToPointCompon(SCSComponConn, SCSComponConn.ProjectOwner);
|
||
end;
|
||
end;
|
||
ShowMessageByType(0, smtNone, ChoiceConnectSide_Msg3_1+' '+ASCSCompon1.GetNameForVisible+' '+ChoiceConnectSide_Msg3_2+' '+ASCSCompon2.GetNameForVisible+' ', '', 0);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
SCSObj1 := ASCSCompon1.GetFirstParentCatalog;
|
||
SCSObj2 := ASCSCompon2.GetFirstParentCatalog;
|
||
|
||
if Assigned(SCSObj1) and (SCSObj1.ServToDefineParamsInCAD = false) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj1, [dopStatus]); //DefineObjectFullness(SCSObj1);
|
||
if Assigned(SCSObj2) and (SCSObj2.ServToDefineParamsInCAD = false) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj2, [dopStatus]); //DefineObjectFullness(SCSObj2);
|
||
|
||
if (SCSObj1 = SCSObj2) and (SCSObj1.ItemType = itSCSConnector) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj1, [dopIcon]); //DefineObjectIcon(SCSObj1);
|
||
end;
|
||
if WholeComponent <> nil then
|
||
FreeAndNil(WholeComponent);
|
||
|
||
ASCSCompon1.NotifyChange;
|
||
ASCSCompon2.NotifyChange;
|
||
end;
|
||
|
||
(*
|
||
procedure TF_ChoiceConnectSide.OnAfterJoinCompons(ASCSCompon1, ASCSCompon2: TSCSComponent;
|
||
ASide1, ASide2: Integer);
|
||
var i: integer;
|
||
//id_component: Integer;
|
||
//IDObjectFrom: Integer;
|
||
//IDObjectTo: Integer;
|
||
|
||
PartComponObject: TSCSCatalog;
|
||
PartCompon: TSCSComponent;
|
||
SCSCompon: TSCSComponent;
|
||
SCSComponConn: TSCSComponent;
|
||
MarkID: Integer;
|
||
NameMark: String;
|
||
//Node: TTreeNode;
|
||
SCSObj1: TSCSCatalog;
|
||
SCSObj2: TSCSCatalog;
|
||
|
||
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var
|
||
FirstCompon: TSCSComponent;
|
||
LastCompon: TSCSComponent;
|
||
|
||
FirstConnCompon: TSCSComponent;
|
||
LastConnCompon: TSCSComponent;
|
||
|
||
FirstPort: TSCSInterface;
|
||
LastPort: TSCSInterface;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon <> 0) and (ACompon.LastIDConnectedConnCompon <> 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
FirstCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.FirstIDCompon);
|
||
LastCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.LastIDCompon);
|
||
|
||
FirstConnCompon := nil;
|
||
LastConnCompon := nil;
|
||
|
||
FirstPort := nil;
|
||
LastPort := nil;
|
||
|
||
FirstConnCompon := ACompon.FirstConnectedConnCompon;
|
||
LastConnCompon := ACompon.LastConnectedConnCompon;
|
||
|
||
if Assigned(FirstConnCompon) and Assigned(FirstCompon) then
|
||
FirstPort := FirstConnCompon.GetPortJoinedToLine(FirstCompon);
|
||
if Assigned(LastConnCompon) and Assigned(LastCompon) then
|
||
LastPort := LastConnCompon.GetPortJoinedToLine(LastCompon);
|
||
if (FirstPort <> nil) and (LastPort <> nil) then
|
||
begin
|
||
FirstPort.IDConnected := LastPort.ID;
|
||
LastPort.IDConnected := FirstPort.ID;
|
||
|
||
//UpdateInterfFieldAsInteger(FirstPort.ID, LastPort.ID, fnIDConnected);
|
||
//UpdateInterfFieldAsInteger(LastPort.ID, FirstPort.ID, fnIDConnected);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
{
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var ConnInterfFirst: TList;
|
||
ConnInterfLast: TList;
|
||
i: Integer;
|
||
PortCount: Integer;
|
||
|
||
FirstConnCompon: TSCSComponent;
|
||
LastConnCompon: TSCSComponent;
|
||
ptrFirstInterf: TSCSInterface;
|
||
ptrLastInterf: TSCSInterface;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon > 0) and (ACompon.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
FirstConnCompon := ACompon.FirstConnectedConnCompon;
|
||
LastConnCompon := ACompon.LastConnectedConnCompon;
|
||
|
||
ConnInterfFirst := GetInterfacesThatConnectCompons(ACompon.FirstIDConnectedConnCompon, ACompon.FirstIDCompon);
|
||
ConnInterfLast := GetInterfacesThatConnectCompons(ACompon.LastIDConnectedConnCompon, ACompon.LastIDCompon);
|
||
if (ConnInterfFirst = nil) or (ConnInterfLast = nil) then
|
||
Exit; //// EXIT ////
|
||
|
||
|
||
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if ConnInterfFirst <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfFirst.Count - 1 do
|
||
if GetInterfCountByFilter('(id = '''+IntToStr(Integer(ConnInterfFirst[i]^))+''') and (id_component = '''+IntTostr(ACompon.FirstIDConnectedConnCompon)+''') and (isPort = '''+IntTostr(biTrue)+''')', true) = 0 then
|
||
begin
|
||
FreeMem(ConnInterfFirst[i]);
|
||
ConnInterfFirst[i] := nil;
|
||
end;
|
||
ConnInterfFirst.Pack;
|
||
end;
|
||
|
||
|
||
if ConnInterfLast <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfLast.Count - 1 do
|
||
if GetInterfCountByFilter('(id = '''+IntToStr(Integer(ConnInterfLast[i]^))+''') and (id_component = '''+IntTostr(ACompon.LastIDConnectedConnCompon)+''') and (isPort = '''+IntTostr(biTrue)+''')', true) = 0 then
|
||
begin
|
||
FreeMem(ConnInterfLast[i]);
|
||
ConnInterfLast[i] := nil;
|
||
end;
|
||
ConnInterfLast.Pack;
|
||
end;
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
PortCount := 0;
|
||
if (ConnInterfFirst.Count > 0) and (ConnInterfLast.Count > 0) then
|
||
if ConnInterfFirst.Count > ConnInterfLast.Count then
|
||
PortCount := ConnInterfLast.Count
|
||
else
|
||
PortCount := ConnInterfFirst.Count;
|
||
|
||
for i := 0 to PortCount - 1 do
|
||
begin
|
||
UpdateInterfFieldAsInteger(Integer(ConnInterfFirst[i]^), Integer(ConnInterfLast[i]^), fnIDConnected);
|
||
UpdateInterfFieldAsInteger(Integer(ConnInterfLast[i]^), Integer(ConnInterfFirst[i]^), fnIDConnected);
|
||
|
||
ptrFirstInterf := FirstConnCompon.GetInterfaceByID(Integer(ConnInterfFirst[i]^));
|
||
ptrLastInterf := LastConnCompon.GetInterfaceByID(Integer(ConnInterfLast[i]^));
|
||
if ptrFirstInterf <> nil then
|
||
ptrFirstInterf.IDConnected := Integer(ConnInterfLast[i]^);
|
||
if ptrLastInterf <> nil then
|
||
ptrLastInterf.IDConnected := Integer(ConnInterfFirst[i]^);
|
||
end;
|
||
|
||
FreeList(ConnInterfFirst);
|
||
FreeList(ConnInterfLast);
|
||
end;
|
||
end; }
|
||
|
||
{
|
||
procedure DefinePortConnected(ACompon: TSCSComponent);
|
||
var ConnInterfFirst: TList;
|
||
ConnInterfLast: TList;
|
||
i: Integer;
|
||
PortCount: Integer;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon > 0) and (ACompon.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
ConnInterfFirst := GetInterfacesThatConnectCompons(ACompon.FirstIDConnectedConnCompon, ACompon.FirstIDCompon);
|
||
ConnInterfLast := GetInterfacesThatConnectCompons(ACompon.LastIDConnectedConnCompon, ACompon.LastIDCompon);
|
||
if (ConnInterfFirst = nil) or (ConnInterfLast = nil) then
|
||
Exit; //// EXIT ////
|
||
|
||
|
||
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
ChangeSQLQuery(scsQSelect, ' select count(id) As Cnt from interface_relation '+
|
||
' where (id = :id) and (id_component = :id_component) and (isport = '''+IntTostr(biTrue)+''') ');
|
||
if ConnInterfFirst <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfFirst.Count - 1 do
|
||
begin
|
||
scsQSelect.Close;
|
||
scsQSelect.SetParamAsInteger('id', Integer(ConnInterfFirst[i]^) );
|
||
scsQSelect.SetParamAsInteger('id_component', ACompon.FirstIDConnectedConnCompon);
|
||
scsQSelect.ExecQuery;
|
||
if scsQSelect.GetFNAsInteger('Cnt') = 0 then
|
||
begin
|
||
FreeMem(ConnInterfFirst[i]);
|
||
ConnInterfFirst[i] := nil;
|
||
end;
|
||
end;
|
||
ConnInterfFirst.Pack;
|
||
end;
|
||
|
||
|
||
if ConnInterfLast <> nil then
|
||
begin
|
||
for i := 0 to ConnInterfLast.Count - 1 do
|
||
begin
|
||
scsQSelect.Close;
|
||
scsQSelect.SetParamAsInteger('id', Integer(ConnInterfLast[i]^) );
|
||
scsQSelect.SetParamAsInteger('id_component', ACompon.LastIDConnectedConnCompon);
|
||
scsQSelect.ExecQuery;
|
||
if scsQSelect.GetFNAsInteger('cnt') = 0 then
|
||
begin
|
||
FreeMem(ConnInterfLast[i]);
|
||
ConnInterfLast[i] := nil;
|
||
end;
|
||
end;
|
||
ConnInterfLast.Pack;
|
||
end;
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
PortCount := 0;
|
||
if (ConnInterfFirst.Count > 0) and (ConnInterfLast.Count > 0) then
|
||
if ConnInterfFirst.Count > ConnInterfLast.Count then
|
||
PortCount := ConnInterfLast.Count
|
||
else
|
||
PortCount := ConnInterfFirst.Count;
|
||
|
||
ChangeSQLQuery(scsQOperat, ' update interface_relation set id_connected = :id_connected where id = :id ');
|
||
for i := 0 to PortCount - 1 do
|
||
begin
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Integer(ConnInterfFirst[i]^));
|
||
scsQOperat.SetParamAsInteger('id_connected', Integer(ConnInterfLast[i]^));
|
||
scsQOperat.ExecQuery;
|
||
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Integer(ConnInterfLast[i]^));
|
||
scsQOperat.SetParamAsInteger('id_connected', Integer(ConnInterfFirst[i]^));
|
||
scsQOperat.ExecQuery;
|
||
end;
|
||
|
||
FreeList(ConnInterfFirst);
|
||
FreeList(ConnInterfLast);
|
||
end;
|
||
end; }
|
||
{
|
||
procedure InsertToConnectedComponents(AWholeID, AIDConnectCompon,
|
||
AIDSideCompon, ATypeConect: Integer);
|
||
var IDObject: Integer;
|
||
begin
|
||
if AIDConnectCompon > 0 then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
IDObject := GetIDCatalogByIDNoUppCompon(AIDConnectCompon);
|
||
InsertToConnCompons(AWholeID, IDObject, AIDConnectCompon, AIDSideCompon, ATypeConect);
|
||
end;
|
||
end; }
|
||
|
||
|
||
begin
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ASCSCompon1.GuidNB = ASCSCompon2.GuidNB) and
|
||
(ASCSCompon1.IsLine = biTrue) and (ASCSCompon2.IsLine = biTrue) and
|
||
{ASCSCompon1.CheckJoinedByAllPosibleInterfaces(ASCSCompon2, ASide1, ASide2)}
|
||
((ASCSCompon1.JoinedComponents.Count <= 2) and (ASCSCompon2.JoinedComponents.Count <= 2)) then
|
||
begin
|
||
//DefineComponConnObjectsAfterConnect(ASCSCompon1);
|
||
ASCSCompon1.LoadWholeComponent(true);
|
||
ASCSCompon1.RefreshWholeLengthInFuture;
|
||
ASCSCompon1.DefineFirstLast;
|
||
DefinePortConnected(ASCSCompon1);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
//UpdateComponFieldAsIntegerByField(ASCSCompon2.Whole_ID, ASCSCompon1.Whole_ID, fnWholeID, fnWholeID);
|
||
TF_Main(GForm).GSCSBase.CurrProject.SetComponentsNewWholeID(ASCSCompon2.Whole_ID, ASCSCompon1.Whole_ID);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
DeleteConnectedComponByWholeID(ASCSCompon1.Whole_ID);
|
||
DeleteConnectedComponByWholeID(ASCSCompon2.Whole_ID);
|
||
|
||
{ChangeSQLQuery(scsQOperat, ' insert into connected_components (compon_whole_id, id_connect_object, id_connect_compon, id_side_compon, type_connect) '+
|
||
' values(:compon_whole_id, :id_connect_object, :id_connect_compon, :id_side_compon, :type_connect) ');
|
||
InsertToConnectedComponents(ASCSCompon1.Whole_ID,
|
||
ASCSCompon1.FirstIDConnectedConnCompon,
|
||
ASCSCompon1.FirstIDCompon, tcoFrom);
|
||
|
||
InsertToConnectedComponents(ASCSCompon1.Whole_ID,
|
||
ASCSCompon1.LastIDConnectedConnCompon,
|
||
ASCSCompon1.LastIDCompon, tcoTo); }
|
||
|
||
InsertToConnectedComponents(ASCSCompon1{.Whole_ID},
|
||
ASCSCompon1.FirstIDConnectedConnCompon,
|
||
ASCSCompon1.FirstIDCompon, tcoFrom);
|
||
|
||
InsertToConnectedComponents(ASCSCompon1{.Whole_ID},
|
||
ASCSCompon1.LastIDConnectedConnCompon,
|
||
ASCSCompon1.LastIDCompon, tcoTo);
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//PartCompon := TSCSComponent.Create(GForm);
|
||
try
|
||
if ASCSCompon1.MarkID < ASCSCompon2.MarkID then
|
||
MarkID := ASCSCompon1.MarkID
|
||
else
|
||
MarkID := ASCSCompon2.MarkID;
|
||
|
||
for i := 0 to ASCSCompon1.WholeComponent.Count - 1 do
|
||
begin
|
||
PartCompon := nil;
|
||
PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ASCSCompon1.WholeComponent[i]);
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
if PartCompon.MarkID <> MarkID then
|
||
begin
|
||
//PartComponObject := PartCompon.GetFirstParentCatalog;
|
||
//if Assigned(PartComponObject) then
|
||
//begin
|
||
PartCompon.MarkID := MarkID;
|
||
PartCompon.ServChangedMarkID := true;
|
||
|
||
//NameMark := TF_Main(GForm).MakeNameMarkComponent(PartCompon, PartComponObject, false);
|
||
|
||
//PartCompon.NameMark := NameMark;
|
||
//end;
|
||
end;
|
||
end;
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ASCSCompon2
|
||
for i := 0 to ASCSCompon2.WholeComponent.Count - 1 do
|
||
begin
|
||
PartCompon := nil;
|
||
PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ASCSCompon2.WholeComponent[i]);
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
end;
|
||
|
||
ASCSCompon1.MarkID := MarkID;
|
||
ASCSCompon2.MarkID := MarkID;
|
||
|
||
if (ASCSCompon1.ProjectOwner <> nil) and (ASCSCompon1.ProjectOwner.Setting.MarkMode = mmTIAEIA606A) then
|
||
if (ASCSCompon1.FirstIDConnectedConnCompon <> 0) and (ASCSCompon1.LastIDConnectedConnCompon <> 0) then
|
||
RemarkComponsRelatedToLineCompon(ASCSCompon1, ASCSCompon1.ProjectOwner);
|
||
|
||
RestartTimer(Timer_UpdateOnJoin);
|
||
finally
|
||
//PartCompon.Free;
|
||
end;
|
||
end;
|
||
ASCSCompon2.Whole_ID := ASCSCompon1.Whole_ID;
|
||
end
|
||
else
|
||
begin
|
||
{if ASCSCompon1.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon1);
|
||
if ASCSCompon2.IsLine = biTrue then
|
||
DefineComponConnObjectsAfterConnect(ASCSCompon2);}
|
||
|
||
SCSCompon := nil;
|
||
SCSComponConn := nil;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ASCSCompon1.IsLine = biTrue then
|
||
begin
|
||
SCSCompon := ASCSCompon1;
|
||
SCSComponConn := ASCSCompon2;
|
||
end;
|
||
if ASCSCompon2.IsLine = biTrue then
|
||
begin
|
||
SCSCompon := ASCSCompon2;
|
||
SCSComponConn := ASCSCompon1;
|
||
end;
|
||
|
||
|
||
if SCSCompon <> nil then
|
||
begin
|
||
SCSCompon.LoadWholeComponent(true);
|
||
SCSCompon.RefreshWholeLengthInFuture;
|
||
SCSCompon.DefineFirstLast;
|
||
DefinePortConnected(SCSCompon);
|
||
|
||
DeleteConnectedComponByWholeID(SCSCompon.Whole_ID);
|
||
InsertToConnectedComponents(SCSCompon{.Whole_ID},
|
||
SCSCompon.FirstIDConnectedConnCompon,
|
||
SCSCompon.FirstIDCompon, tcoFrom);
|
||
InsertToConnectedComponents(SCSCompon{.Whole_ID},
|
||
SCSCompon.LastIDConnectedConnCompon,
|
||
SCSCompon.LastIDCompon, tcoTo);
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to SCSCompon.WholeComponent.Count - 1 do
|
||
begin
|
||
PartCompon := nil;
|
||
PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(SCSCompon.WholeComponent[i]);
|
||
if Assigned(PartCompon) then
|
||
begin
|
||
PartCompon.ServChangedNameFromTo := true;
|
||
//if Assigned(PartCompon.TreeViewNode) then
|
||
// PartCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartCompon.TreeViewNode, PartCompon, true, true);
|
||
end;
|
||
end;
|
||
RestartTimer(Timer_UpdateOnJoin);
|
||
|
||
if SCSComponConn <> nil then
|
||
begin
|
||
DefineComponTrunkInFuture(SCSComponConn);
|
||
if (SCSCompon.ProjectOwner <> nil) and (SCSCompon.ProjectOwner.Setting.MarkMode = mmTIAEIA606A) then
|
||
if (SCSCompon.FirstIDConnectedConnCompon <> 0) and (SCSCompon.LastIDConnectedConnCompon <> 0) then
|
||
RemarkComponsRelatedToPointCompon(SCSComponConn, SCSComponConn.ProjectOwner);
|
||
end;
|
||
end;
|
||
ShowMessageByType(0, smtNone, ChoiceConnectSide_Msg3_1+' '+ASCSCompon1.GetNameForVisible+' '+ChoiceConnectSide_Msg3_2+' '+ASCSCompon2.GetNameForVisible+' ', '', 0);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
SCSObj1 := ASCSCompon1.GetFirstParentCatalog;
|
||
SCSObj2 := ASCSCompon2.GetFirstParentCatalog;
|
||
|
||
if Assigned(SCSObj1) and (SCSObj1.ServToDefineParamsInCAD = false) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj1, [dopFullness]); //DefineObjectFullness(SCSObj1);
|
||
if Assigned(SCSObj2) and (SCSObj2.ServToDefineParamsInCAD = false) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj2, [dopFullness]); //DefineObjectFullness(SCSObj2);
|
||
|
||
if (SCSObj1 = SCSObj2) and (SCSObj1.ItemType = itSCSConnector) then
|
||
DefineObjectParamsByServFldsInFuture(SCSObj1, [dopIcon]); //DefineObjectIcon(SCSObj1);
|
||
end;
|
||
ASCSCompon1.NotifyChange;
|
||
ASCSCompon2.NotifyChange;
|
||
end;
|
||
*)
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.OnAfterDisJoinCompons(ACompon1, ACompon2: TSCSComponent);
|
||
var
|
||
NewWholeID: Integer;
|
||
i: integer;
|
||
ObjectOwner1: TSCSCatalog;
|
||
ObjectOwner2: TSCSCatalog;
|
||
WholeComponObj1: TSCSComponents;
|
||
WholeComponObj2: TSCSComponents;
|
||
WholeComponObj: TSCSComponents;
|
||
|
||
//PartComponObject: TSCSCatalog;
|
||
PartComponent: TSCSComponent;
|
||
NewMarkID: Integer;
|
||
//ComponForMark: TSCSComponent;
|
||
SCSComponLine: TSCSComponent;
|
||
SCSComponCon: TSCSComponent;
|
||
DisjoinInDelEndPart: Boolean;
|
||
|
||
WholeLineCompon: TWholeLineCompon;
|
||
IsWasJoinedPointComponsInBothSides: Boolean;
|
||
|
||
ComponsDefectAct: TObjectsBlob;
|
||
//Tolik
|
||
SCSComponent : TSCSComponent;
|
||
CanGenNewMarkId : boolean;
|
||
//
|
||
NeedrestartTimer: boolean;
|
||
|
||
procedure DefinePortDisConnectedLineComponents;
|
||
var
|
||
InterfList: TList;
|
||
Interfac: TSCSInterface;
|
||
ptrInterfaceConnected: TSCSInterface;
|
||
i: Integer;
|
||
LastConnectedConnCompon: TSCSComponent;
|
||
LineCompon, OtherCcompon: TSCSComponent;
|
||
begin
|
||
if (ACompon1.IsLine = biTrue) or (ACompon2.IsLine = biTrue) then
|
||
if (ACompon1.LastIDConnectedConnCompon <> 0) or (ACompon2.LastIDConnectedConnCompon <> 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
LineCompon := nil;
|
||
OtherCcompon := nil;
|
||
if ACompon1.IsLine = biTrue then
|
||
begin
|
||
LineCompon := ACompon1;
|
||
OtherCcompon := ACompon2;
|
||
end;
|
||
if ACompon2.IsLine = biTrue then
|
||
begin
|
||
LineCompon := ACompon2;
|
||
OtherCcompon := ACompon1;
|
||
end;
|
||
|
||
LastConnectedConnCompon := nil;
|
||
if Assigned(LineCompon) then
|
||
if LineCompon.LastIDConnectedConnCompon <> 0 then
|
||
begin
|
||
//23.01.2013
|
||
if LineCompon.LastConnectedConnCompon <> nil then
|
||
if LineCompon.LastConnectedConnCompon.ID = LineCompon.LastIDConnectedConnCompon then
|
||
LastConnectedConnCompon := LineCompon.LastConnectedConnCompon;
|
||
if LastConnectedConnCompon = nil then
|
||
LastConnectedConnCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(LineCompon.LastIDConnectedConnCompon);
|
||
end;
|
||
{//23.01.2013
|
||
if Assigned(LastConnectedConnCompon) then
|
||
begin
|
||
InterfList := TList.Create;
|
||
for i := 0 to LastConnectedConnCompon.Interfaces.Count - 1 do
|
||
if TSCSInterface(LastConnectedConnCompon.Interfaces[i]).IDConnected > 0 then
|
||
InterfList.Add(LastConnectedConnCompon.Interfaces[i]);
|
||
for i := 0 to InterfList.Count - 1 do
|
||
begin
|
||
Interfac := InterfList[i];
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ptrInterfaceConnected := TF_Main(GForm).GSCSBase.CurrProject.GetInterfaceByID(Interfac.IDConnected);
|
||
if ptrInterfaceConnected <> nil then
|
||
begin
|
||
//<#MemTableClear#>
|
||
//UpdateInterfFieldAsInteger(Interfac.ID, 0, fnIDConnected);
|
||
//UpdateInterfFieldAsInteger(Interfac.IDConnected, 0, fnIDConnected);
|
||
Interfac.IDConnected := 0;
|
||
ptrInterfaceConnected.IDConnected := 0;
|
||
end;
|
||
end;
|
||
InterfList.Free; //FreeList(InterfList);
|
||
end;}
|
||
|
||
//23.01.2013
|
||
if Assigned(LastConnectedConnCompon) then
|
||
begin
|
||
for i := 0 to LastConnectedConnCompon.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := LastConnectedConnCompon.Interfaces[i];
|
||
if Interfac.IDConnected > 0 then
|
||
begin
|
||
ptrInterfaceConnected := nil;
|
||
if OtherCcompon.IsLine = biFalse then
|
||
ptrInterfaceConnected := OtherCcompon.GetInterfaceByID(Interfac.IDConnected)
|
||
else if OtherCcompon.IsLine = biTrue then
|
||
begin
|
||
if OtherCcompon.LastConnectedConnCompon <> nil then
|
||
ptrInterfaceConnected := OtherCcompon.LastConnectedConnCompon.GetInterfaceByID(Interfac.IDConnected);
|
||
end;
|
||
if ptrInterfaceConnected = nil then
|
||
ptrInterfaceConnected := TF_Main(GForm).GSCSBase.CurrProject.GetInterfaceByID(Interfac.IDConnected);
|
||
if ptrInterfaceConnected <> nil then
|
||
begin
|
||
Interfac.IDConnected := 0;
|
||
ptrInterfaceConnected.IDConnected := 0;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
|
||
{
|
||
procedure DefinePortDisConnectedLineComponents;
|
||
var InterfList: TList;
|
||
Interfac: TSCSInterface;
|
||
i: Integer;
|
||
begin
|
||
if (ACompon1.IsLine = biTrue) and (ACompon2.IsLine = biTrue) then
|
||
if (ACompon1.LastIDConnectedConnCompon > 0) and (ACompon2.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
InterfList := TList.Create;
|
||
SetFilterToSQLMemTable(tSQL_InterfaceRelation, '(id_component = '''+IntTostr(ACompon1.LastIDConnectedConnCompon)+''') and '+
|
||
'(id_connected <> ''0'')');
|
||
tSQL_InterfaceRelation.First;
|
||
while Not tSQL_InterfaceRelation.Eof do
|
||
begin
|
||
New(Interfac);
|
||
Interfac.ID := tSQL_InterfaceRelation.FieldByName(fnID).AsInteger;
|
||
Interfac.IDConnected := tSQL_InterfaceRelation.FieldByName(fnIDConnected).AsInteger;
|
||
InterfList.Add(Interfac);
|
||
|
||
tSQL_InterfaceRelation.Next;
|
||
end;
|
||
|
||
ChangeSQLQuery(scsQSelect, ' select id from interface_relation '+
|
||
' where (id = :id) and (id_component = '''+IntTostr(ACompon2.LastIDConnectedConnCompon)+''') ');
|
||
|
||
ChangeSQLQuery(scsQOperat, ' update interface_relation set id_connected = ''0'' where id = :id ');
|
||
for i := 0 to InterfList.Count - 1 do
|
||
begin
|
||
Interfac := InterfList[i];
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetFilterToSQLMemTable(tSQL_InterfaceRelation, 'id = '''+IntTostr(Interfac.IDConnected)+'''');
|
||
if Not tSQL_InterfaceRelation.Eof then
|
||
if tSQL_InterfaceRelation.FieldByName(fnIDComponent).AsInteger = ACompon2.LastIDConnectedConnCompon then
|
||
begin
|
||
UpdateInterfFieldAsInteger(Interfac.ID, 0, fnIDConnected);
|
||
UpdateInterfFieldAsInteger(Interfac.IDConnected, 0, fnIDConnected);
|
||
end;
|
||
end;
|
||
FreeList(InterfList);
|
||
end;
|
||
end;
|
||
}
|
||
|
||
{
|
||
procedure DefinePortDisConnectedLineComponents;
|
||
var InterfList: TList;
|
||
Interfac: TSCSInterface;
|
||
i: Integer;
|
||
begin
|
||
if (ACompon1.IsLine = biTrue) and (ACompon2.IsLine = biTrue) then
|
||
if (ACompon1.LastIDConnectedConnCompon > 0) and (ACompon2.LastIDConnectedConnCompon > 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
SetSQLToQuery(scsQSelect, ' select id, id_connected from interface_relation '+
|
||
' where (id_component = '''+IntTostr(ACompon1.LastIDConnectedConnCompon)+''') and '+
|
||
' Not(id_connected = ''0'') ');
|
||
InterfList := TList.Create;
|
||
while Not scsQSelect.Eof do
|
||
begin
|
||
New(Interfac);
|
||
Interfac.ID := scsQSelect.GetFNAsInteger('ID');
|
||
Interfac.IDConnected := scsQSelect.GetFNAsInteger('ID_Connected');
|
||
|
||
InterfList.Add(Interfac);
|
||
scsQSelect.Next;
|
||
end;
|
||
|
||
|
||
ChangeSQLQuery(scsQSelect, ' select id from interface_relation '+
|
||
' where (id = :id) and (id_component = '''+IntTostr(ACompon2.LastIDConnectedConnCompon)+''') ');
|
||
|
||
ChangeSQLQuery(scsQOperat, ' update interface_relation set id_connected = ''0'' where id = :id ');
|
||
for i := 0 to InterfList.Count - 1 do
|
||
begin
|
||
Interfac := InterfList[i];
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
scsQSelect.Close;
|
||
scsQSelect.SetParamAsInteger('id', Interfac.IDConnected);
|
||
scsQSelect.ExecQuery;
|
||
|
||
if scsQSelect.GetFNAsInteger('ID') = Interfac.IDConnected then
|
||
begin
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Interfac.ID);
|
||
scsQOperat.ExecQuery;
|
||
|
||
scsQOperat.Close;
|
||
scsQOperat.SetParamAsInteger('id', Interfac.IDConnected);
|
||
scsQOperat.ExecQuery;
|
||
end;
|
||
end;
|
||
FreeList(InterfList);
|
||
end;
|
||
end;
|
||
}
|
||
|
||
{procedure RefreshComponWholeLength(AComponent: TSCSComponent);
|
||
var
|
||
WholeComponObj: TSCSComponents;
|
||
begin
|
||
if AComponent.IsLine = biTrue then
|
||
begin
|
||
AComponent.LoadWholeComponent(true, @WholeComponObj);
|
||
AComponent.RefreshWholeLengthInFuture(WholeComponObj);
|
||
AComponent.DefineFirstLast;
|
||
if WholeComponObj <> nil then
|
||
WholeComponObj.Free;
|
||
end;
|
||
end;}
|
||
|
||
{
|
||
procedure InsertToConnectedComponents(AComponent: TSCSComponent; ATypeConect: Integer);
|
||
var
|
||
//IDObject: Integer;
|
||
OwnerCatalog: TSCSCatalog;
|
||
begin
|
||
if AIDConnectCompon > 0 then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
OwnerCatalog := AComponent.GetFirstParentCatalog;
|
||
if Assigned(OwnerCatalog) then
|
||
InsertToConnCompons(AComponent.Whole_ID,
|
||
OwnerCatalog.ID,
|
||
AComponent.LastIDConnectedConnCompon,
|
||
ACompon1.LastIDCompon, ATypeConect);
|
||
//IDObject := GetIDCatalogByIDNoUppCompon(AIDConnectCompon);
|
||
//InsertToConnCompons(AWholeID, IDObject, AIDConnectCompon, AIDSideCompon, ATypeConect);
|
||
end;
|
||
end;}
|
||
|
||
//disjoin
|
||
begin
|
||
//Tolik 16/05/2019 --
|
||
if GProjectClose then
|
||
exit;
|
||
|
||
//Tolik 04/12/2020 -
|
||
if ACompon2.ProjectOwner = nil then
|
||
exit; // -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//
|
||
|
||
//Tolik
|
||
WholeComponObj1 := nil;
|
||
WholeComponObj2 := nil;
|
||
WholeComponObj := nil;
|
||
//
|
||
DisjoinInDelEndPart := false;
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
ObjectOwner1 := ACompon1.GetFirstParentCatalog;
|
||
ObjectOwner2 := ACompon2.GetFirstParentCatalog;
|
||
|
||
//DefineComponDisConnObjectsAfterDisConnect(ACompon1, ACompon1);
|
||
//DefineComponDisConnObjectsAfterDisConnect(ACompon2, ACompon1);
|
||
|
||
IsWasJoinedPointComponsInBothSides := false;
|
||
|
||
if (ACompon1.IsLine = bitrue) and (ACompon2.IsLine = bitrue) then
|
||
begin
|
||
if ACompon1.Whole_ID = ACompon2.Whole_ID then
|
||
begin
|
||
RefreshComponWholeLength(ACompon1, @WholeComponObj1);
|
||
RefreshComponWholeLength(ACompon2, @WholeComponObj2);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
DefinePortDisConnectedLineComponents;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ACompon1.ServToDelete or ACompon2.ServToDelete then
|
||
begin
|
||
if ACompon1.ServToDelete then
|
||
if (ACompon1.ID = ACompon1.LastIDCompon) or (ACompon1.ID = ACompon1.FirstIDCompon) then
|
||
DisjoinInDelEndPart := true;
|
||
if ACompon2.ServToDelete then
|
||
if (ACompon2.ID = ACompon2.LastIDCompon) or (ACompon2.ID = ACompon2.FirstIDCompon) then
|
||
DisjoinInDelEndPart := true;
|
||
end;
|
||
|
||
with TF_Main(GForm).DM do
|
||
//if Not DisjoinInDelEndPart then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
WholeLineCompon := GetLineComponsInTraceFromBase(ACompon1, false);
|
||
if (WholeLineCompon.LastIDConnectedConnCompon <> 0) and (WholeLineCompon.FirstIDConnectedConnCompon <> 0) then
|
||
IsWasJoinedPointComponsInBothSides := true;
|
||
|
||
|
||
NewWholeID := GenNewComponentWholeID;
|
||
// Tolik
|
||
// NewMarkID := TF_Main(GForm).GenComponentMarkID(Acompon2);
|
||
|
||
Acompon2.Whole_ID := NewWholeID;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
DeleteConnectedComponByWholeID(ACompon1.Whole_ID);
|
||
InsertToConnectedComponents(ACompon1{.Whole_ID},
|
||
ACompon1.FirstConnectedConnCompon,
|
||
ACompon1.FirstIDCompon, tcoFrom);
|
||
InsertToConnectedComponents(ACompon1{.Whole_ID},
|
||
ACompon1.LastConnectedConnCompon,
|
||
ACompon1.LastIDCompon, tcoTo);
|
||
|
||
InsertToConnectedComponents(ACompon2{.Whole_ID},
|
||
ACompon2.FirstConnectedConnCompon,
|
||
ACompon2.FirstIDCompon, tcoFrom);
|
||
InsertToConnectedComponents(Acompon2{.Whole_ID},
|
||
ACompon2.LastConnectedConnCompon,
|
||
ACompon2.LastIDCompon, tcoTo);
|
||
|
||
|
||
ComponsDefectAct := nil;
|
||
if ACompon1.ProjectOwner <> nil then
|
||
ComponsDefectAct := ACompon1.ProjectOwner.GetObjectsBlobByParams(tiComponent, obdkDefectAct, ACompon1.ID);
|
||
|
||
CanGenNewMarkId := true;
|
||
for i := 0 to WholeComponObj2.Count - 1 do //29.01.2013
|
||
begin
|
||
PartComponent := WholeComponObj2[i];
|
||
if PartComponent.ServToDelete then
|
||
begin
|
||
CanGenNewMarkId := false;
|
||
break;
|
||
end;
|
||
end;
|
||
if CanGenNewMarkId then
|
||
NewMarkID := TF_Main(GForm).GenComponentMarkID(Acompon2)
|
||
else
|
||
NewMarkID := Acompon2.MarkID;
|
||
//29.01.2013
|
||
//for i := 0 to Acompon2.WholeComponent.Count - 1 do
|
||
//begin
|
||
// //UpdateComponFieldAsInteger(Integer(Acompon2.WholeComponent[i]^), NewWholeID, fnWholeID);
|
||
// //UpdateComponFieldAsInteger(Integer(Acompon2.WholeComponent[i]^), NewMarkID, fnMarkID);
|
||
// PartComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(Acompon2.WholeComponent[i]);
|
||
// if Assigned(PartComponent) then
|
||
//Tolik
|
||
if CanGenNewMarkId then
|
||
begin
|
||
//
|
||
for i := 0 to WholeComponObj2.Count - 1 do //29.01.2013
|
||
begin
|
||
begin
|
||
PartComponent := WholeComponObj2[i];
|
||
if PartComponent <> nil then
|
||
begin
|
||
PartComponent.Whole_ID := NewWholeID;
|
||
PartComponent.ServChangedWholeID := true;
|
||
|
||
//PartComponObject := PartComponent.GetFirstParentCatalog;
|
||
//if Assigned(PartComponObject) then
|
||
//begin
|
||
PartComponent.MarkID := NewMarkID;
|
||
PartComponent.ServChangedMarkID := true;
|
||
PartComponent.ServToMark := false;
|
||
//Tolik
|
||
ApplyChangeComponMarkID(PartComponent, true, true, nil);
|
||
//
|
||
// PartComponent.NameMark := TF_Main(GForm).MakeNameMarkComponent(PartComponent, PartComponObject, false);
|
||
|
||
// if PartComponent.TreeViewNode <> nil then
|
||
// PartComponent.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartComponent.TreeViewNode, PartComponent, true, true);
|
||
//end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
if ComponsDefectAct <> nil then
|
||
ComponsDefectAct.ObjIDs.Remove(PartComponent.ID);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> Acompon1
|
||
for i := 0 to WholeComponObj1.Count - 1 do //29.01.2013
|
||
begin
|
||
PartComponent := WholeComponObj1[i];
|
||
//29.01.2013
|
||
//for i := 0 to Acompon1.WholeComponent.Count - 1 do
|
||
//begin
|
||
// PartComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(Acompon1.WholeComponent[i]);
|
||
// if Assigned(PartComponent) then
|
||
|
||
begin
|
||
PartComponent.ServChangedNameFromTo := true;
|
||
//if PartComponent.TreeViewNode <> nil then
|
||
// PartComponent.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartComponent.TreeViewNode, PartComponent, true, true);
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (Acompon1.ProjectOwner <> nil) and (Acompon1.ProjectOwner.Setting.MarkMode = mmTIAEIA606A) then
|
||
begin
|
||
if WholeLineCompon.LastIDConnectedConnCompon <> 0 then
|
||
RemarkComponentByID(WholeLineCompon.LastIDConnectedConnCompon);
|
||
if WholeLineCompon.FirstIDConnectedConnCompon <> 0 then
|
||
RemarkComponentByID(WholeLineCompon.FirstIDConnectedConnCompon);
|
||
end;
|
||
|
||
RestartTimer(Timer_UpdateOnDisJoin);
|
||
end;
|
||
end;
|
||
|
||
if WholeComponObj1 <> nil then //29.01.2013
|
||
FreeAndNil(WholeComponObj1);
|
||
if WholeComponObj2 <> nil then //29.01.2013
|
||
FreeAndNil(WholeComponObj2);
|
||
end
|
||
else
|
||
begin
|
||
SCSComponLine := nil;
|
||
SCSComponCon := nil;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ACompon1.IsLine = biTrue then
|
||
begin
|
||
SCSComponLine := ACompon1;
|
||
SCSComponCon := ACompon2;
|
||
end;
|
||
if ACompon2.IsLine = biTrue then
|
||
begin
|
||
SCSComponLine := ACompon2;
|
||
SCSComponCon := ACompon1;
|
||
end;
|
||
|
||
if (SCSComponLine <> nil) and (SCSComponCon <> nil) then
|
||
begin
|
||
//29.01.2013
|
||
//SCSComponLine.LoadWholeComponent(true);
|
||
//SCSComponLine.RefreshWholeLengthInFuture;
|
||
//SCSComponLine.DefineFirstLast;
|
||
RefreshComponWholeLength(SCSComponLine, @WholeComponObj); //29.01.2013
|
||
DefinePortDisConnectedLineComponents;
|
||
|
||
//if (SCSComponLine.FirstIDConnectedConnCompon = SCSComponCon.ID) or
|
||
// (SCSComponLine.LastIDConnectedConnCompon = SCSComponCon.ID) then
|
||
DeleteConnectedComponByWholeID(SCSComponLine.Whole_ID);
|
||
InsertToConnectedComponents(SCSComponLine{.Whole_ID},
|
||
SCSComponLine.FirstConnectedConnCompon,
|
||
SCSComponLine.FirstIDCompon, tcoFrom);
|
||
|
||
InsertToConnectedComponents(SCSComponLine{.Whole_ID},
|
||
SCSComponLine.LastConnectedConnCompon,
|
||
SCSComponLine.LastIDCompon, tcoTo);
|
||
|
||
for i := 0 to WholeComponObj.Count - 1 do
|
||
begin
|
||
PartComponent := WholeComponObj[i];
|
||
//29.01.2013
|
||
//for i := 0 to SCSComponLine.WholeComponent.Count - 1 do
|
||
//begin
|
||
// PartComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(SCSComponLine.WholeComponent[i]);
|
||
// if PartComponent <> nil then
|
||
begin
|
||
PartComponent.ServChangedNameFromTo := true;
|
||
//if PartComponent.TreeViewNode <> nil then
|
||
// PartComponent.TreeViewNode.Text := TF_Main(GForm).GetNameNode(PartComponent.TreeViewNode, PartComponent, true, true);
|
||
end;
|
||
end;
|
||
RestartTimer(Timer_UpdateOnDisJoin);
|
||
|
||
if SCSComponCon <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD> TIAEIA606A
|
||
if SCSComponLine.ProjectOwner <> nil then
|
||
if SCSComponLine.ProjectOwner.Setting.MarkMode = mmTIAEIA606A then
|
||
begin
|
||
RemarkComponsRelatedToLineCompon(SCSComponLine, SCSComponLine.ProjectOwner);
|
||
RemarkComponent(SCSComponCon);
|
||
end;
|
||
|
||
DefineComponTrunkInFuture(SCSComponCon);
|
||
end;
|
||
|
||
if WholeComponObj <> nil then //29.01.2013
|
||
FreeAndNil(WholeComponObj);
|
||
end;
|
||
end;
|
||
|
||
|
||
ShowMessageByType(0, smtNone, ChoiceConnectSide_Msg4_1+' '+ACompon1.GetNameForVisible+' '+ChoiceConnectSide_Msg4_2+' '+ACompon2.GetNameForVisible+' ', '', 0);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
//23.01.2013 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//if ObjectOwner1.ServToDefineParamsInCAD = false then
|
||
// DefineObjectStatus(ObjectOwner1);
|
||
//if ObjectOwner2.ServToDefineParamsInCAD = false then
|
||
// DefineObjectStatus(ObjectOwner2);
|
||
|
||
NeedrestartTimer := false;
|
||
if Assigned(ObjectOwner1) then
|
||
if (ObjectOwner1.ServToDefineParamsInCAD = false) then
|
||
begin
|
||
if ObjectOwner1.ServToDefineParamsInCAD = false then
|
||
ObjectOwner1.ServToDefineObjParams := ObjectOwner1.ServToDefineObjParams + [dopStatus];
|
||
NeedrestartTimer := True;
|
||
end;
|
||
if Assigned(ObjectOwner2) then
|
||
if (ObjectOwner2.ServToDefineParamsInCAD = false) then
|
||
begin
|
||
if ObjectOwner2.ServToDefineParamsInCAD = false then
|
||
ObjectOwner2.ServToDefineObjParams := ObjectOwner2.ServToDefineObjParams + [dopStatus];
|
||
NeedrestartTimer := True;
|
||
end;
|
||
if NeedrestartTimer then
|
||
RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
|
||
if Assigned(ObjectOwner1) then
|
||
if (ObjectOwner1 = ObjectOwner2) and (ObjectOwner1.ItemType = itSCSConnector) then
|
||
DefineObjectIcon(ObjectOwner1);
|
||
end;
|
||
ACompon1.NotifyChange;
|
||
ACompon2.NotifyChange;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.OnBeforeDeleteComponent(AComponent: TSCSComponent);
|
||
begin
|
||
if (TF_Main(AComponent.ActiveForm).GDBMode = bkProjectManager) then
|
||
if AComponent.ProjectOwner <> nil then
|
||
begin
|
||
AComponent.ProjectOwner.DeleteObjectsBlobByParams(tiComponent, obdkDefectAct, AComponent.ID, nil);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DeleteConnectedComponByWholeID(AWholeID: Integer);
|
||
begin
|
||
TF_Main(GForm).GSCSBase.CurrProject.ConnectedComponsList.RemoveByWholeID(AWholeID);
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.InsertToConnectedComponents(AComponent, AConnectCompon: TSCSComponent;
|
||
AIDSideCompon, ATypeConect: Integer);
|
||
var
|
||
OwnerCatalog: TSCSCatalog;
|
||
ConnectedConnCompon: TSCSComponent;
|
||
IDConnectedCompon: Integer;
|
||
IDConnectedObject: Integer;
|
||
begin
|
||
IDConnectedObject := -1;
|
||
IDConnectedCompon := 0;
|
||
//12.03.2009 ConnectedConnCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(AIDConnectCompon);
|
||
ConnectedConnCompon := AConnectCompon;
|
||
|
||
OwnerCatalog := nil;
|
||
if Assigned(ConnectedConnCompon) then
|
||
begin
|
||
IDConnectedCompon := ConnectedConnCompon.ID;
|
||
OwnerCatalog := ConnectedConnCompon.GetFirstParentCatalog;
|
||
end;
|
||
if Assigned(OwnerCatalog) then
|
||
IDConnectedObject := OwnerCatalog.ID;
|
||
|
||
TF_Main(GForm).GSCSBase.CurrProject.ConnectedComponsList.InsertRecord(AComponent.Whole_ID,
|
||
IDConnectedObject,
|
||
IDConnectedCompon, AIDSideCompon, ATypeConect);
|
||
|
||
|
||
{
|
||
if AIDConnectCompon > 0 then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
ConnectedConnCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(AIDConnectCompon);
|
||
OwnerCatalog := nil;
|
||
if Assigned(ConnectedConnCompon) then
|
||
OwnerCatalog := ConnectedConnCompon.GetFirstParentCatalog;
|
||
if Assigned(OwnerCatalog) then
|
||
begin
|
||
TF_Main(GForm).GSCSBase.CurrProject.ConnectedComponsList.InsertRecord(AComponent.Whole_ID,
|
||
OwnerCatalog.ID,
|
||
AIDConnectCompon, AIDSideCompon, ATypeConect);
|
||
|
||
end;
|
||
end;
|
||
}
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefinePortConnected(ACompon: TSCSComponent);
|
||
var
|
||
FirstCompon: TSCSComponent;
|
||
LastCompon: TSCSComponent;
|
||
|
||
FirstConnCompon: TSCSComponent;
|
||
LastConnCompon: TSCSComponent;
|
||
|
||
FirstPort: TSCSInterface;
|
||
LastPort: TSCSInterface;
|
||
begin
|
||
if (ACompon.FirstIDConnectedConnCompon <> 0) and (ACompon.LastIDConnectedConnCompon <> 0) then
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
FirstCompon := nil;
|
||
LastCompon := nil;
|
||
if (ACompon.FirstCompon = nil) or (ACompon.FirstCompon.ID <> ACompon.FirstIDCompon) then
|
||
FirstCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.FirstIDCompon)
|
||
else
|
||
FirstCompon := ACompon.FirstCompon;
|
||
|
||
if (ACompon.LastCompon = nil) or (ACompon.LastCompon.ID <> ACompon.LastIDCompon) then
|
||
LastCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompon.LastIDCompon)
|
||
else
|
||
LastCompon := ACompon.LastCompon;
|
||
|
||
FirstConnCompon := nil;
|
||
LastConnCompon := nil;
|
||
|
||
FirstPort := nil;
|
||
LastPort := nil;
|
||
|
||
FirstConnCompon := ACompon.FirstConnectedConnCompon;
|
||
LastConnCompon := ACompon.LastConnectedConnCompon;
|
||
|
||
if Assigned(FirstConnCompon) and Assigned(FirstCompon) then
|
||
FirstPort := FirstConnCompon.GetPortJoinedToLine(FirstCompon);
|
||
if Assigned(LastConnCompon) and Assigned(LastCompon) then
|
||
LastPort := LastConnCompon.GetPortJoinedToLine(LastCompon);
|
||
if (FirstPort <> nil) and (LastPort <> nil) then
|
||
begin
|
||
FirstPort.IDConnected := LastPort.ID;
|
||
LastPort.IDConnected := FirstPort.ID;
|
||
|
||
//UpdateInterfFieldAsInteger(FirstPort.ID, LastPort.ID, fnIDConnected);
|
||
//UpdateInterfFieldAsInteger(LastPort.ID, FirstPort.ID, fnIDConnected);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
{
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.DefineDisconnectedComponsObjects(AComponent1, AComponent2: TSCSComponent);
|
||
begin
|
||
try
|
||
DefineComponDisConnObjectsAfterDisConnect(AComponent1, AComponent2);
|
||
DefineComponDisConnObjectsAfterDisConnect(AComponent2, AComponent1);
|
||
RefreshCurrListComponents;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineDisconnectedComponsObjects: '+E.Message);
|
||
end;
|
||
end;
|
||
}
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectParams(ASCSObject: TSCSCatalog);
|
||
begin
|
||
try
|
||
if (ASCSObject = nil) or (GLockDefineObjectParamsCount > 0) then
|
||
Exit; //// EXIT ////
|
||
if TF_Main(GForm).GDBMode = bkProjectManager then
|
||
begin
|
||
//if ASCSObject.SCSComponents.Count = 0 then
|
||
// ASCSObject.LoadAllComponentsByObjectID(ASCSObject.ID, [fiAll]);
|
||
|
||
DefineObjectStatus(ASCSObject);
|
||
DefineObjectNetworkTypes(ASCSObject);
|
||
DefineObjectIcon(ASCSObject);
|
||
//TF_Main(GForm).DM.DefineComponObjectFullness(ASCSCompon);
|
||
|
||
DefineObjectNote(ASCSObject);
|
||
DefineObjectCoordZ(ASCSObject);
|
||
//28.08.2013 if ASCSObject.ItemType = itSCSConnector then
|
||
//28.08.2013 DefineObjectSignature(ASCSObject);
|
||
DefineObjectSignature(ASCSObject);
|
||
if ASCSObject.ItemType = itSCSLine then
|
||
begin
|
||
DefineObjectHaveCableChannel(ASCSObject);
|
||
DefineTraceStyleInCAD(ASCSObject);
|
||
RestartTimer(Timer_RefreshAllLists); //RefreshAllLists;
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineObjectParems: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectParamsInFuture(ASCSObject: TSCSCatalog);
|
||
begin
|
||
if Assigned(ASCSObject) then
|
||
if Not ASCSObject.ServDeleteInCAD then
|
||
begin
|
||
ASCSObject.ServToDefineParamsInCAD := true;
|
||
RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectParamsByServFldsInFuture(ASCSObject: TSCSCatalog; AObjectParams: TDefineObjectParams);
|
||
begin
|
||
if Assigned(ASCSObject) then
|
||
if Not ASCSObject.ServDeleteInCAD then
|
||
begin
|
||
ASCSObject.ServToDefineObjParams := ASCSObject.ServToDefineObjParams + AObjectParams;
|
||
RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectCoordZ(AObject: TSCSCatalog);
|
||
var
|
||
FirstComponent: TSCSComponent;
|
||
ListOwner: TSCSList;
|
||
SprComponentType: TNBComponentType;
|
||
HeightOfPlacingValStr: String;
|
||
CoordZ: Double;
|
||
vList: TF_CAD;
|
||
Figure: TFigure;
|
||
ConnObj,JConnObj: TConnectorObject;
|
||
i,j: integer;
|
||
DoNotUseCoordZ: Boolean;
|
||
begin
|
||
if (AObject <> nil) and (AObject.ComponentReferences <> nil) then
|
||
if AObject.ComponentReferences.Count > 0 then
|
||
begin
|
||
FirstComponent := AObject.GetFirstComponent;
|
||
ListOwner := AObject.GetListOwner;
|
||
if FirstComponent <> nil then
|
||
begin
|
||
if FirstComponent.ComponentType.SysName <> ctsnCableChannelElement then
|
||
begin
|
||
DoNotUseCoordZ := false;
|
||
//SprComponentType := nil;
|
||
//if ListOwner <> nil then
|
||
// SprComponentType := ListOwner.Spravochnik.GetComponentTypeByGUID(FirstComponent.GUIDComponentType);
|
||
//if SprComponentType <> nil then
|
||
// if ListOwner.Setting.UseComponTypeHeights then //if SprComponentType.ComponentType.CoordZ <> -1 then
|
||
// SetFigureCoordZ(ListOwner.CurrID, AObject.SCSID, SprComponentType.ComponentType.CoordZ);
|
||
vList := GetListByID(FirstComponent.ListID);
|
||
Figure := GetFigureByID(vList,AObject.SCSID);
|
||
if (Figure <> nil)and(Figure.ClassName = 'TConnectorObject') then
|
||
begin
|
||
{ ConnObj := TConnectorObject(Figure);
|
||
for i := 0 to ConnObj.JoinedConnectorsList.Count - 1 do
|
||
begin
|
||
JConnObj := TConnectorObject(ConnObj.JoinedConnectorsList[i]);
|
||
for j := 0 to JConnObj.JoinedOrtholinesList.Count - 1 do
|
||
if TOrtholine(JConnObj.JoinedOrtholinesList[j]).FIsRaiseUpDown then
|
||
DoNotUseCoordZ := true;
|
||
end; }
|
||
end;
|
||
|
||
{CoordZ := -1;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||
HeightOfPlacingValStr := FirstComponent.GetPropertyValueBySysName(pnHeightOfPlacing);
|
||
if (HeightOfPlacingValStr <> '')and(not DoNotUseCoordZ) then
|
||
try
|
||
CoordZ := StrToFloatU(CorrectStrToFloat(HeightOfPlacingValStr));
|
||
except
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if CoordZ = -1 then
|
||
begin
|
||
SprComponentType := nil;
|
||
if ListOwner <> nil then
|
||
SprComponentType := ListOwner.Spravochnik.GetComponentTypeByGUID(FirstComponent.GUIDComponentType);
|
||
if SprComponentType <> nil then
|
||
if ListOwner.Setting.UseComponTypeHeights then //if SprComponentType.ComponentType.CoordZ <> -1 then
|
||
CoordZ := SprComponentType.ComponentType.CoordZ;
|
||
end;
|
||
|
||
if CoordZ <> -1 then
|
||
begin
|
||
if CoordZ = 999 then
|
||
CoordZ := ListOwner.Setting.HeightCorob
|
||
else
|
||
begin
|
||
if ListOwner.Setting.UseComponTypeHeights then
|
||
CoordZ := ListOwner.Setting.HeightSocket;
|
||
end;
|
||
SetFigureCoordZ(ListOwner.CurrID, AObject.SCSID, CoordZ);
|
||
end;}
|
||
end;
|
||
end;
|
||
end;
|
||
//else
|
||
// SetFigureCoordZ(ListOwner.CurrID, AObject.SCSID, -1);
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectStatus(ASCSObject: TSCSCatalog);
|
||
var ListOwner: TSCSList;
|
||
SCSCatalog: TSCSCatalog;
|
||
//FigureID: Integer;
|
||
//ItemType: Integer;
|
||
FillingLineObj: TFillConnectLineObj;
|
||
FillingObject: TFillConnectConObj;
|
||
Fullness: TComponInterfacesFullness;
|
||
|
||
// Tolik -- 18/05/2017 --
|
||
//ConnFigureParams: TConnFigureParams;
|
||
ConnFigureParams: pConnFigureParams;
|
||
//
|
||
LineFigureParams: TLineFigureParams;
|
||
|
||
function ConvertTypeToTComponInterfacesFullness(AFillingObj: TFillConnectConObj): TComponInterfacesFullness;
|
||
begin
|
||
Result := cif_None;
|
||
case AFillingObj of
|
||
foNone : Result := cif_None;
|
||
foEmpty: Result := cif_Empty;
|
||
foBusy : Result := cif_Full;
|
||
foPartEmpty: Result := cif_HalfEmpty;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
if ASCSObject = nil then
|
||
Exit; ///// EXIT /////
|
||
SCSCatalog := ASCSObject;
|
||
|
||
try
|
||
//SCSCatalog := AActComponent.GetFirstParentCatalog;
|
||
if Not Assigned(SCSCatalog) then
|
||
Exit; ////// EXIT //////
|
||
|
||
ListOwner := SCSCatalog.GetListOwner;
|
||
OpenNoExistsListInCAD(ListOwner);
|
||
|
||
FillingObject := foPartEmpty;
|
||
|
||
//FigureID := TF_Main(GForm).DM.GetScsIDByIDCatalog(AActComponent.ObjectID);
|
||
//ItemType := TF_Main(GForm).DM.GetCatalogIDItemType(AActComponent.ObjectID, qmMemory);
|
||
|
||
//FigureID := ASCSObject.SCSID;
|
||
//ItemType := ASCSObject.ItemType;
|
||
|
||
//FigureID := ASCSObject.ID;
|
||
|
||
case SCSCatalog.ItemType of
|
||
itSCSConnector:
|
||
begin
|
||
//FillingObject := HowFillConnectConObj(SCSCatalog, true);
|
||
//Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
//SetFullnessTypeForConnector(SCSCatalog.ListID, SCSCatalog.SCSID, Fullness);
|
||
|
||
// Tolik -- 18/05/2017 --
|
||
New(ConnFigureParams);
|
||
ConnFigureParams.DefectObjDegree := dodNone;
|
||
ConnFigureParams.FigureID := -1;
|
||
ConnFigureParams.Fullness := cif_Empty;
|
||
ConnFigureParams.ListID := 1;
|
||
//
|
||
|
||
FillingObject := HowFillConnectConObj(SCSCatalog, true);
|
||
ConnFigureParams.ListID := SCSCatalog.ListID;
|
||
ConnFigureParams.FigureID := SCSCatalog.SCSID;
|
||
ConnFigureParams.Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
ConnFigureParams.DefectObjDegree := GetObjDefectDegree(SCSCatalog);
|
||
// Tolik 18/05/2017 --
|
||
//SetConnStatusInfo(@ConnFigureParams);
|
||
SetConnStatusInfo(ConnFigureParams);
|
||
Dispose(ConnFigureParams);
|
||
//
|
||
end;
|
||
itSCSLine:
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{FillingLineObj := HowFillConnectLineObj(SCSCatalog, true);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
SetFullnessTypeForCable(SCSCatalog.ListID, SCSCatalog.SCSID, 1, Fullness);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
SetFullnessTypeForCable(SCSCatalog.ListID, SCSCatalog.SCSID, 2, Fullness);
|
||
|
||
//if AActComponent.ID_ComponentType = ctCableCanal then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingLineObj := HowFillCablaCanalCorkInTrace(SCSCatalog);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
SetClosedTypeForCableChannel(SCSCatalog.ListID, SCSCatalog.SCSID, 1, Fullness);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
SetClosedTypeForCableChannel(SCSCatalog.ListID, SCSCatalog.SCSID, 2, Fullness);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingObject := HowFillCableCanal(SCSCatalog);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
SetFullnessTypeForCableChannel(SCSCatalog.ListID, SCSCatalog.SCSID, Fullness);
|
||
end;}
|
||
|
||
LineFigureParams.ListID := SCSCatalog.ListID;
|
||
LineFigureParams.FigureID := SCSCatalog.SCSID;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingLineObj := HowFillConnectLineObj(SCSCatalog, true);
|
||
LineFigureParams.FullnesCableSide1 := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
LineFigureParams.FullnesCableSide2 := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingLineObj := HowFillCablaCanalCorkInTrace(SCSCatalog);
|
||
LineFigureParams.ClosedTypeForChannelSide1 := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
LineFigureParams.ClosedTypeForChannelSide2 := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingObject := HowFillCableCanal(SCSCatalog);
|
||
LineFigureParams.ChannelFullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
LineFigureParams.DefectObjDegree := GetObjDefectDegree(SCSCatalog);
|
||
SetLineStatusInfo(@LineFigureParams);
|
||
end;
|
||
end;
|
||
|
||
{
|
||
FillingObject := foPartEmpty;
|
||
|
||
FigureID := TF_Main(GForm).DM.GetScsIDByIDCatalog(AActComponent.ObjectID);
|
||
ItemType := TF_Main(GForm).DM.GetCatalogIDItemType(AActComponent.ObjectID, qmMemory);
|
||
|
||
//FigureID := ASCSObject.SCSID;
|
||
//ItemType := ASCSObject.ItemType;
|
||
|
||
//FigureID := ASCSObject.ID;
|
||
|
||
case ItemType of
|
||
itSCSConnector:
|
||
begin
|
||
FillingObject := HowFillConnectConObj(FigureID);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
SetFullnessTypeForConnector(FigureID, Fullness);
|
||
end;
|
||
itSCSLine:
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingLineObj := HowFillConnectLineObj(FigureID);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
SetFullnessTypeForCable(FigureID, 1, Fullness);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
SetFullnessTypeForCable(FigureID, 2, Fullness);
|
||
|
||
|
||
if AActComponent.ID_ComponentType = ctCableCanal then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingLineObj := HowFillCablaCanalCorkInTrace(FigureID);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
SetClosedTypeForCableChannel(FigureID, 1, Fullness);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
SetClosedTypeForCableChannel(FigureID, 2, Fullness);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FillingObject := HowFillCableCanal(FigureID);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
SetFullnessTypeForCableChannel(FigureID, Fullness);
|
||
end;
|
||
end;
|
||
end; }
|
||
|
||
{SCSCatalog := TSCSCatalog.Create(GForm);
|
||
SCSCatalog.LoadCatalogByID(AIDObject, false);
|
||
case SCSCatalog.ItemType of
|
||
itSCSConnector:
|
||
begin
|
||
FillingObject := HowFillConnectConObj(SCSCatalog.SCSID);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
SetFullnessTypeForConnector(SCSCatalog.SCSID, Fullness);
|
||
end;
|
||
itSCSLine:
|
||
begin
|
||
FillingLineObj := HowFillConnectLineObj(SCSCatalog.SCSID);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide1);
|
||
SetFullnessTypeForCable(SCSCatalog.SCSID, 1, Fullness);
|
||
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingLineObj.FillingSide2);
|
||
SetFullnessTypeForCable(SCSCatalog.SCSID, 2, Fullness);
|
||
|
||
FillingObject := HowFillCableCanal(SCSCatalog.SCSID);
|
||
Fullness := ConvertTypeToTComponInterfacesFullness(FillingObject);
|
||
SetFullnessTypeForCableChannel(SCSCatalog.SCSID, Fullness);
|
||
end;
|
||
end; }
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineFigureFullness: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectHaveCableChannel(AObject: TSCSCatalog);
|
||
begin
|
||
if AObject.ItemType = itSCSLine then
|
||
SetIsCableChannel(AObject.ListID, AObject.SCSID, IsHaveObjectCableChannel(AObject));
|
||
end;
|
||
|
||
|
||
// #### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ####
|
||
procedure TF_ChoiceConnectSide.DefineObjectSignature(ASCSObject: TSCSCatalog);
|
||
var //IDFigure: Integer;
|
||
SignatureList: TStringList;
|
||
|
||
function GetLineSignature: TStringList; //28.08.2013 -
|
||
var
|
||
i, j: Integer;
|
||
Compon: TSCSComponent;
|
||
AFigure: TFigure;
|
||
SavedCadForm: TF_CAD;
|
||
vList: TF_CAD;
|
||
addLineCount: integer;
|
||
begin
|
||
Result := nil;
|
||
addLineCount := 2;
|
||
try
|
||
vList := GetListByID(ASCSObject.ListID);
|
||
if vList <> nil then
|
||
begin
|
||
SavedCadForm := GCadForm;
|
||
GCadForm := vList;
|
||
AFigure := GetFigureByID(vList, ASCSObject.SCSID);
|
||
if AFigure <> nil then
|
||
begin
|
||
if CheckFigureByClassName(AFigure, cTOrthoLine) then
|
||
begin
|
||
//Tolik 16/12/2015 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if TOrthoLine(AFigure).FCaptionsViewType = cv_Center then
|
||
begin
|
||
//
|
||
if TOrthoLine(AFigure).GrpSizeY = 0 then
|
||
addLineCount := 1
|
||
else
|
||
begin
|
||
//Tolik - 23/12/2015
|
||
//addLineCount := RoundUp((TOrthoLine(AFigure).GrpSizeY + 0.1) / 2);
|
||
addLineCount := GetEmptyLinesCount(TOrthoLine(AFigure));
|
||
end;
|
||
if Not TOrthoLine(AFigure).ShowLength then
|
||
begin
|
||
{$IF Defined(SCS_PE) or Defined(SCS_PANDUIT)}
|
||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//addLineCount := 0;
|
||
// <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
|
||
// new mark
|
||
addLineCount := addLineCount + 1;
|
||
{$ELSE}
|
||
addLineCount := addLineCount + 1;
|
||
{$IFEND}
|
||
end;
|
||
end
|
||
else
|
||
addLineCount := 0;
|
||
end;
|
||
end;
|
||
GCadForm := SavedCadForm;
|
||
end;
|
||
for i := 0 to ASCSObject.SCSComponents.Count - 1 do
|
||
begin
|
||
Compon := ASCSObject.SCSComponents[i];
|
||
if Compon.IsMarkInCaptions = biTrue then
|
||
if Compon.NameMark <> '' then
|
||
begin
|
||
if Result = nil then
|
||
begin
|
||
Result := TStringList.Create;
|
||
if addLineCount > 0 then
|
||
for j := 1 to addLineCount do
|
||
Result.Add('');
|
||
end;
|
||
Result.Add(Compon.NameMark);
|
||
end;
|
||
end;
|
||
if Result = nil then
|
||
Result := TStringList.Create;
|
||
except
|
||
on E: Exception do addExceptionToLogEx('F_ChoiceConnectSide.DefineObjectSignature GetLineSignature', E.Message);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
if Not Assigned(ASCSObject) then
|
||
Exit; //// EXIT ////
|
||
try
|
||
//IDFigure := TF_Main(GForm).DM.GetScsIDByIDCatalog(AActComponent.ObjectID);
|
||
//IDFigure := ASCSObject.SCSID;
|
||
SignatureList := nil;
|
||
//if ASCSObject.ItemType = itSCSConnector then
|
||
// SignatureList := GetObjectPortMultyPortNameMarks(ASCSObject) //GetFigureNote(IDFigure);
|
||
//else if ASCSObject.ItemType = itSCSLine then
|
||
// SignatureList := GetLineSignature;
|
||
if ASCSObject.ItemType = itSCSLine then
|
||
SignatureList := GetLineSignature
|
||
else
|
||
SignatureList := GetObjectPortMultyPortNameMarks(ASCSObject); //GetFigureNote(IDFigure);
|
||
|
||
if SignatureList <> nil then
|
||
begin
|
||
SetConnCaptionsInCAD(ASCSObject.ListID, ASCSObject.SCSID, SignatureList);
|
||
FreeAndNil(SignatureList);
|
||
end;
|
||
|
||
//SetFigureNoteInCAD(ASCSObject.ListID, ASCSObject.SCSID, NoteList);
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineObjectNoteInCAD: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
(*
|
||
// #### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ####
|
||
procedure TF_ChoiceConnectSide.DefineObjectSignature(ASCSObject: TSCSCatalog);
|
||
var //IDFigure: Integer;
|
||
SignatureList: TStringList;
|
||
|
||
function GetLineSignature: TStringList; //28.08.2013 -
|
||
var
|
||
i, j: Integer;
|
||
Compon: TSCSComponent;
|
||
AFigure: TFigure;
|
||
SavedCadForm: TF_CAD;
|
||
vList: TF_CAD;
|
||
addLineCount: integer;
|
||
begin
|
||
Result := nil;
|
||
addLineCount := 2;
|
||
try
|
||
vList := GetListByID(ASCSObject.ListID);
|
||
if vList <> nil then
|
||
begin
|
||
SavedCadForm := GCadForm;
|
||
GCadForm := vList;
|
||
AFigure := GetFigureByID(vList, ASCSObject.SCSID);
|
||
if AFigure <> nil then
|
||
begin
|
||
if CheckFigureByClassName(AFigure, cTOrthoLine) then
|
||
begin
|
||
// Tolik -- 07/12/2015
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if ((TOrthoLine(AFigure).FCaptionsViewType = cv_UnderLine) or (TOrthoLine(AFigure).FCaptionsViewType = cv_OverLine) or
|
||
((TOrthoLine(AFigure).FCaptionsViewType = cv_Auto) and (TOrthoLine(AFigure).CaptionsGroupH <> 0))) then
|
||
addLineCount := 0
|
||
else
|
||
begin
|
||
//
|
||
if TOrthoLine(AFigure).GrpSizeY = 0 then
|
||
addLineCount := 1
|
||
else
|
||
begin
|
||
addLineCount := RoundUp((TOrthoLine(AFigure).GrpSizeY + 0.1) / 2);
|
||
end;
|
||
if Not TOrthoLine(AFigure).ShowLength then
|
||
begin
|
||
{$IF Defined(SCS_PE) or Defined(SCS_PANDUIT)}
|
||
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//addLineCount := 0;
|
||
// <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
|
||
// new mark
|
||
addLineCount := addLineCount + 1;
|
||
{$ELSE}
|
||
addLineCount := addLineCount + 1;
|
||
{$IFEND}
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
GCadForm := SavedCadForm;
|
||
end;
|
||
for i := 0 to ASCSObject.SCSComponents.Count - 1 do
|
||
begin
|
||
Compon := ASCSObject.SCSComponents[i];
|
||
if Compon.IsMarkInCaptions = biTrue then
|
||
if Compon.NameMark <> '' then
|
||
begin
|
||
if Result = nil then
|
||
begin
|
||
Result := TStringList.Create;
|
||
if addLineCount > 0 then
|
||
for j := 1 to addLineCount do
|
||
Result.Add('');
|
||
end;
|
||
Result.Add(Compon.NameMark);
|
||
end;
|
||
end;
|
||
if Result = nil then
|
||
Result := TStringList.Create;
|
||
except
|
||
on E: Exception do addExceptionToLogEx('F_ChoiceConnectSide.DefineObjectSignature GetLineSignature', E.Message);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
if Not Assigned(ASCSObject) then
|
||
Exit; //// EXIT ////
|
||
try
|
||
//IDFigure := TF_Main(GForm).DM.GetScsIDByIDCatalog(AActComponent.ObjectID);
|
||
//IDFigure := ASCSObject.SCSID;
|
||
SignatureList := nil;
|
||
//if ASCSObject.ItemType = itSCSConnector then
|
||
// SignatureList := GetObjectPortMultyPortNameMarks(ASCSObject) //GetFigureNote(IDFigure);
|
||
//else if ASCSObject.ItemType = itSCSLine then
|
||
// SignatureList := GetLineSignature;
|
||
if ASCSObject.ItemType = itSCSLine then
|
||
SignatureList := GetLineSignature
|
||
else
|
||
SignatureList := GetObjectPortMultyPortNameMarks(ASCSObject); //GetFigureNote(IDFigure);
|
||
|
||
if SignatureList <> nil then
|
||
begin
|
||
SetConnCaptionsInCAD(ASCSObject.ListID, ASCSObject.SCSID, SignatureList);
|
||
FreeAndNil(SignatureList);
|
||
end;
|
||
|
||
//SetFigureNoteInCAD(ASCSObject.ListID, ASCSObject.SCSID, NoteList);
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineObjectNoteInCAD: '+E.Message);
|
||
end;
|
||
end; *)
|
||
|
||
// #### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ####
|
||
procedure TF_ChoiceConnectSide.DefineObjectNote(ASCSObject: TSCSCatalog);
|
||
var
|
||
//List: TSCSList;
|
||
Notes: TStringList;
|
||
begin
|
||
if Assigned(ASCSObject) then
|
||
begin
|
||
//List := ASCSObject.GetListOwner;
|
||
//if Assigned(List) then
|
||
begin
|
||
Notes := nil;
|
||
//Notes := TStringList.Create;
|
||
//Notes.Add('Test '+#10+#13+'Test '+#10+#13+'Test '+#10+#13);
|
||
Notes := GetObjectNotes(ASCSObject);
|
||
case ASCSObject.ItemType of
|
||
itSCSLine:
|
||
begin
|
||
SetLineNotesInCAD(ASCSObject.ListID, ASCSObject.SCSID, Notes);
|
||
SetLineCaptionsInCAD(ASCSObject.ListID, ASCSObject.SCSID);
|
||
end;
|
||
itSCSConnector:
|
||
SetConnNotesInCAD(ASCSObject.ListID, ASCSObject.SCSID, Notes);
|
||
end;
|
||
if Notes <> nil then
|
||
FreeAndNil(Notes);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.DefineTraceStyleInCAD(ATraceObject: TSCSCatalog);
|
||
const CmpDelta = 0.001;
|
||
var Height1, Height2: Double;
|
||
List: TSCSList;
|
||
Room: TSCSCatalog;
|
||
|
||
i, j: Integer;
|
||
SCSCompon: TSCSComponent;
|
||
SCSChild: TSCSComponent;
|
||
Cnt: Integer;
|
||
CanOver10: Boolean;
|
||
|
||
HeightCeiling: Double;
|
||
begin
|
||
try
|
||
CanOver10 := false;
|
||
List := nil;
|
||
if ATraceObject = nil then
|
||
Exit; //// EXIT ////
|
||
if ATraceObject.ItemType <> itSCSLine then
|
||
Exit; //// EXIT ////
|
||
|
||
// ts_UnderFalseFloor
|
||
List := TF_Main(GForm).GSCSBase.CurrProject.GetListBySCSID(ATraceObject.ListID);
|
||
if List <> nil then
|
||
begin
|
||
HeightCeiling := List.Setting.HeightCeiling;
|
||
Room := ATraceObject.GetParentCatalogByItemType(itRoom);
|
||
if (Room <> nil) and (Room.RoomSetting <> nil) then
|
||
if Room.RoomSetting.HeightCeiling > 0 then
|
||
HeightCeiling := Room.RoomSetting.HeightCeiling;
|
||
|
||
GetLineFigureHeghts(ATraceObject.ListID, ATraceObject.SCSID, Height1, Height2);
|
||
if Abs(Height1 - Height2) < CmpDelta then
|
||
if RoundCP(Height1 - (List.Setting.HeightRoom - HeightCeiling)) >= 0 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_UnderFalseFloor);
|
||
Exit; //// EXIT /////
|
||
end;
|
||
end;
|
||
|
||
// ts_ClearTrace
|
||
if ATraceObject.SCSComponents.Count = 0 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_ClearTrace);
|
||
Exit; //// EXIT /////
|
||
end;
|
||
|
||
|
||
//if ATraceObject.UpperComponents.Count = 0 then
|
||
// ATraceObject.LoadComponents(ATraceObject.ID, false);
|
||
|
||
|
||
// ts_Until10InCorob
|
||
for i := 0 to ATraceObject.SCSComponents.Count - 1 do
|
||
if Assigned(ATraceObject.SCSComponents[i]) then
|
||
begin
|
||
SCSCompon := ATraceObject.SCSComponents[i];
|
||
if SCSCompon.ComponentType.SysName = ctsnCableChannel then
|
||
begin
|
||
Cnt := 0;
|
||
//SCSCompon.LoadChildComplects(false, false);
|
||
for j := 0 to SCSCompon.ChildComplects.Count - 1 do
|
||
if Assigned(SCSCompon.ChildComplects[j]) then
|
||
begin
|
||
SCSChild := SCSCompon.ChildComplects[j];
|
||
if CheckSysNameIsCable(SCSChild.ComponentType.SysName) then
|
||
Cnt := Cnt + 1;
|
||
end;
|
||
if Cnt <= 10 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_Until10InCorob);
|
||
Exit; //// EXIT /////
|
||
end
|
||
else
|
||
CanOver10 := true;
|
||
end;
|
||
end;
|
||
|
||
|
||
// ts_Over10
|
||
if CanOver10 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_Over10);
|
||
Exit; //// EXIT /////
|
||
end;
|
||
|
||
|
||
// ts_Until10
|
||
Cnt := 0;
|
||
for i := 0 to ATraceObject.SCSComponents.Count - 1 do
|
||
if Assigned(ATraceObject.SCSComponents[i]) then
|
||
begin
|
||
SCSCompon := ATraceObject.SCSComponents[i];
|
||
if CheckSysNameIsCable(SCSCompon.ComponentType.SysName) then
|
||
Cnt := Cnt + 1;
|
||
end;
|
||
if Cnt <= 10 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_Until10);
|
||
Exit; //// EXIT /////
|
||
end
|
||
else
|
||
CanOver10 := true;
|
||
|
||
|
||
// ts_Over10
|
||
if CanOver10 then
|
||
begin
|
||
SetTraceStyle(ATraceObject.ListID, ATraceObject.SCSID, ts_Over10);
|
||
Exit; //// EXIT /////
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineTraceStyleInCAD: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectNetworkTypes(AObject: TSCSCatalog);
|
||
var ObjectNetworkTypes: TObjectNetworkTypes;
|
||
{SCSComponent: TSCSComponent;
|
||
i: Integer; }
|
||
begin
|
||
try
|
||
if AObject = nil then
|
||
Exit; ///// EXIT /////
|
||
|
||
|
||
//if AObject.SCSComponents.Count = 0 then
|
||
// AObject.LoadAllComponentsByObjectID(AObject.ID, [fiAll]);
|
||
{for i := 0 to AObject.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent := AObject.SCSComponents[i];
|
||
case SCSComponent.IDNetType of
|
||
ntComputer:
|
||
if Not(nt_Computer in ObjectNetworkTypes) then
|
||
ObjectNetworkTypes := ObjectNetworkTypes + [nt_Computer];
|
||
ntTelephone:
|
||
if Not(nt_Telephon in ObjectNetworkTypes) then
|
||
ObjectNetworkTypes := ObjectNetworkTypes + [nt_Telephon];
|
||
ntElectric:
|
||
if Not(nt_Electric in ObjectNetworkTypes) then
|
||
ObjectNetworkTypes := ObjectNetworkTypes + [nt_Electric];
|
||
ntTelevision:
|
||
if Not(nt_Television in ObjectNetworkTypes) then
|
||
ObjectNetworkTypes := ObjectNetworkTypes + [nt_Television];
|
||
ntGas:
|
||
if Not(nt_Gas in ObjectNetworkTypes) then
|
||
ObjectNetworkTypes := ObjectNetworkTypes + [nt_Gas];
|
||
end;
|
||
end; }
|
||
|
||
ObjectNetworkTypes := GetNetworkTypesForSCSObject(AObject);
|
||
SetNetworkTypesForObject(AObject.ListID, AObject.SCSID, ObjectNetworkTypes);
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineObjectNetworkTypes: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
// Tolik -- 09/06/2017 --
|
||
procedure TF_ChoiceConnectSide.ModifyDrawFigureByProps(AObject: TSCSCatalog);
|
||
var FFigure: TFigure;
|
||
i, j: Integer;
|
||
Component: TSCSComponent;
|
||
VList, SavedGCadForm: TF_CAD;
|
||
ComponentPropList: TList;
|
||
ComponProp: PProperty;
|
||
|
||
apx, apy: Double;
|
||
MaxX, MaxY, MinX, MinY: Double;
|
||
FAngle, SAngle: Integer; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Transparency: integer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Radius, cutRadius, RZone, IDZone, FOffset, IDHeight, Height_Of_Detection: Double;
|
||
ZoneCount, RAngle, TAngle, VAngle: Integer;
|
||
ZoneSYSName: String; //
|
||
ObjectDrawFigure: TFigureGrpMod;
|
||
cpx, cpy: Double;
|
||
DrawLastZone: boolean; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ZoneCounter: Integer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
ZoneColor: TColor; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
CanSortList: Boolean;
|
||
CanDelete: Boolean;
|
||
currZoneRadius: Double; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
ZoneCutStyle: integer; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
LastRadius: Double; //
|
||
PropName: String; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ObjectH: Double; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
MaxLength: Double; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Detect_Height: Double; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CutDelta: Double; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
HalfDrawFigureX, Angle: Double;
|
||
DrawFigureAngle: Double;
|
||
AutoFigureClassName: string; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>.<2E>.)
|
||
ParamList: TStringList; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
DrawEllipticZone: Boolean; // // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
Rx1, rx2, ry1, ry2, cpx1, cpy1, cpx2, cpy2: Double;
|
||
|
||
Function GetVerticalRange: double; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 90 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
var tmpRadius: Double;
|
||
begin
|
||
Result := Radius;
|
||
|
||
If Tangle = 0 then exit;
|
||
|
||
if ObjectH > 0 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>...
|
||
begin
|
||
if ABS(TAngle) = 90 then
|
||
Result := ObjectH // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else
|
||
begin
|
||
if ABS(TAngle) < 90 then
|
||
begin
|
||
if TAngle <> 0 then
|
||
begin
|
||
//Result := FOffset + TConnectorObject(FFigure).ActualZOrder[1] / cos(((90 - TAngle)/180) * PI);
|
||
Result := ObjectH * Tan(((90 - TAngle)/180) * PI);
|
||
end;
|
||
end;
|
||
end;
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
Result := cutDelta * 10
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Result := (Result*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
//Result := Result + HalfDrawFigureX;
|
||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if CompareValue(Result, Radius) = 1 then
|
||
Result := Radius;
|
||
end;
|
||
end;
|
||
|
||
Function GetCutDelta: Double;
|
||
begin
|
||
Result := CutRadius;
|
||
if ABS(TAngle) > 0 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
begin
|
||
Angle := ABS(TAngle);
|
||
if Angle < 90 then
|
||
if CompareValue(ObjectH,Height_Of_Detection) = 1 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
Result := ABS(ObjectH - Height_Of_Detection) *
|
||
Tan(((90 - Angle)/180) * PI);
|
||
|
||
if (Result <> 0) then
|
||
begin
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
Result := cutDelta * 10
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Result := (Result*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
//Result := Result + FOffset;
|
||
end;
|
||
if CompareValue(Result, CutRadius) = -1 then
|
||
Result := CutRadius;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function CanDrawEllipticZone: Boolean;
|
||
var Angle: double;
|
||
begin
|
||
Result := False;
|
||
if TAngle <> 0 then
|
||
begin
|
||
if ObjectH <> 0 then
|
||
begin
|
||
if ABS(TAngle) < 90 then
|
||
begin
|
||
if (TAngle + VAngle/2) > 90 then
|
||
Result := True;
|
||
end
|
||
else
|
||
Result := True;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Procedure SetElparamsToParamList;
|
||
var c: Double;
|
||
Len1, Len2: double;
|
||
cX, cY, cX1, cY1, Rad1, Rad2, CutRad1, CutRad2: Double;
|
||
abrc:integer;
|
||
LHandle: LongInt;
|
||
|
||
begin
|
||
ParamList := TStringList.Create;
|
||
if TAngle = 90 then
|
||
begin
|
||
//Len1 := Radius * sin((VAngle/360)*PI);
|
||
//Len2 := Radius * sin((VAngle/360)*PI);
|
||
//Len1 := ObjectH cos((VAngle/360)*PI);
|
||
//Len2 := ObjectH cos((VAngle/360)*PI);
|
||
|
||
Len1 := ObjectH * Tan((VAngle/360)*PI);
|
||
Len2 := ObjectH * Tan((VAngle/360)*PI);
|
||
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
Len1 := Len1*10;
|
||
Len2 := Len2*10;
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Len1 := (Len1*1000)/GCadForm.PCad.MapScale;
|
||
Len2 := (Len2*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
|
||
Cx := apx;
|
||
cy := Apy;
|
||
ParamList.Add(Floattostr(cx));
|
||
ParamList.Add(Floattostr(cy));
|
||
ParamList.Add('0');
|
||
ParamList.Add('0');
|
||
ParamList.Add(Floattostr(Len1));
|
||
ParamList.Add(Floattostr(Len1));
|
||
ParamList.Add('0');
|
||
ParamList.Add('0');
|
||
|
||
ParamList.Add(inttostr(clRed));
|
||
ParamList.Add(inttostr(Transparency));
|
||
ParamList.Add(IntToStr(ObjectDrawFigure.LayerHandle));
|
||
end
|
||
else // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> (TAngle + VAngle/2) > 90 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
if VAngle < 90 then
|
||
begin
|
||
if (TAngle + VAngle/2) > 90 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
begin
|
||
|
||
end
|
||
else
|
||
if (TAngle + VAngle/2) < 90 then // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
begin
|
||
|
||
end;
|
||
if (TAngle + VAngle) = 90 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
begin
|
||
Len1 := (ObjectH * Tan (((90 - VAngle)/180)*PI))/2;
|
||
Len2 := Len1;
|
||
Cx := apx;
|
||
cy := Apy;
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
Len1 := Len1*10;
|
||
Len2 := Len2*10;
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Len1 := (Len1*1000)/GCadForm.PCad.MapScale;
|
||
Len2 := (Len2*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
|
||
ParamList.Add(Floattostr(cx));
|
||
ParamList.Add(Floattostr(cy));
|
||
ParamList.Add('0');
|
||
ParamList.Add('0');
|
||
ParamList.Add(Floattostr(Len1));
|
||
ParamList.Add(Floattostr(Len1));
|
||
ParamList.Add('0');
|
||
ParamList.Add('0');
|
||
|
||
ParamList.Add(inttostr(clRed));
|
||
ParamList.Add(inttostr(Transparency));
|
||
ParamList.Add(IntToStr(ObjectDrawFigure.LayerHandle));
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
SavedGCadForm := GCadForm;
|
||
ComponentPropList := nil;
|
||
ParamList := Nil;
|
||
DrawEllipticZone := False;
|
||
vList := GetListByID(AObject.ListID);
|
||
if vList <> nil then
|
||
begin
|
||
GCadForm := vList;
|
||
HalfDrawFigureX := 0;
|
||
try
|
||
FFigure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if FFigure = nil then
|
||
FFigure := GetFigureByIDInSCSFigureGroups(GCadForm, AObject.SCSID);
|
||
if FFigure <> nil then
|
||
begin
|
||
if not FFigure.Deleted then
|
||
if checkFigureByClassName(FFigure, cTConnectorObject) then
|
||
if TConnectorObject(FFigure).ConnectorType = ct_NB then
|
||
begin
|
||
if Assigned(TConnectorObject(FFigure).DrawFigure) then
|
||
begin
|
||
ObjectDrawFigure := TFigureGrpMod(TConnectorObject(FFigure).DrawFigure);
|
||
if not ObjectDrawFigure.deleted then
|
||
begin
|
||
DrawFigureAngle := TConnectorObject(FFigure).FDrawFigureAngle;
|
||
if DrawFigureAngle <> 0 then
|
||
begin
|
||
ObjectDrawFigure.Rotate(-1*DrawFigureAngle, ObjectDrawFigure.CenterPoint);
|
||
TConnectorObject(FFigure).FDrawFigureAngle := 0;
|
||
end;
|
||
|
||
ObjectDrawFigure.RemoveAutoCreatedFigures;
|
||
|
||
ComponentPropList := TList.Create;
|
||
//TFigureGrpMod(ObjectDrawFigure).getbounds(MaxX, MaxY, MinX, MinY);
|
||
TFigureGrpMod(ObjectDrawFigure).GetBoundsWithoutAutoCreatedFigures(MaxX, MaxY, MinX, MinY);
|
||
// Drawfigure BoundRect Center Point
|
||
if (MaxX = 0) or (MaxY = 0) then
|
||
begin
|
||
apx := FFigure.ActualPoints[1].x;
|
||
apy := FFigure.ActualPoints[1].y;
|
||
end
|
||
else
|
||
begin
|
||
apx := (MaxX + MinX)/2;
|
||
apy := (Maxy + MinY)/2;
|
||
end;
|
||
HalfDrawFigureX := (MaxX - MinX)/2;
|
||
|
||
//
|
||
ObjectH := TConnectorObject(FFigure).ActualZOrder[1]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//
|
||
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//for i := 0 to aObject.SCSComponents.Count - 1 do
|
||
for i := 0 to aObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
Component := aObject.ComponentReferences[i]; // SCSComponents[i];
|
||
if not Component.ServToDelete then
|
||
begin
|
||
Sangle := -1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FAngle := -1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TransParency := 50; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Radius := -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
cutRadius := -1;
|
||
ZoneCount := 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
VAngle := -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
RAngle := -1; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TAngle := 0; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//Height_Of_Detection := TconnectorObject(FFigure).actualZOrder[1]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Height_Of_Detection := -1;
|
||
FOffset := -1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrZoneRadius := 0;
|
||
ZoneCutStyle := 0;
|
||
Detect_Height := -1; // -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
MaxLength := -1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('ACT_RANGE');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtFloat then
|
||
Radius := StrToFloat_My(ComponProp.Value);
|
||
//Radius := MetreToUom(StrToFloat_My(ComponProp.Value));
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('V_ANGLE');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtInteger then
|
||
VAngle := StrtoInt(ComponProp.Value);
|
||
|
||
if ((Radius <> -1) and (VAngle <> -1)) then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 160 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if CompareValue(Vangle, 160) > 0 then
|
||
ZoneCutStyle := 1;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('T_ANGLE');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtInteger then
|
||
TAngle := StrtoInt(ComponProp.Value);
|
||
|
||
if TAngle < 0 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 90 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
if ABS(TAngle) > 90 then
|
||
TAngle := -90;
|
||
end
|
||
else
|
||
if TAngle > 90 then
|
||
TAngle := 90;
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Tangle <> 0 then
|
||
if Tangle <= 90 then
|
||
begin
|
||
HalfDrawFigureX := HalfDrawFigureX*cos((TAngle/180)*PI);
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if compareValue(ObjectH, Radius) = 1 then
|
||
ObjectH := Radius;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('F_TRANSPARENCY');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtInteger then
|
||
Transparency := strtoint(ComponProp.Value);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('ID_HEIGHT');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtFloat then
|
||
Height_Of_Detection := StrToFloat_My(ComponProp.Value);
|
||
//Height_Of_Detection := MetreToUom(StrToFloat_My(ComponProp.Value));
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('F_OFFSET');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtFloat then
|
||
FOffset := StrToFloat_My(ComponProp.Value);
|
||
//FOffset := MetreToUom(StrToFloat_My(ComponProp.Value));
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ComponProp := Component.GetPropertyBySysName('R_ANGLE');
|
||
if ComponProp <> nil then
|
||
if ComponProp.IDDataType = dtInteger then
|
||
RAngle := strtoint(ComponProp.Value);
|
||
// <20><><EFBFBD><EFBFBD>
|
||
for j := 0 to Component.Properties.Count - 1 do
|
||
begin
|
||
ComponProp := PProperty(Component.Properties[j]);
|
||
if ComponProp <> nil then
|
||
begin
|
||
if Pos('ZONE', Componprop.SysName) = Length(Componprop.SysName) - 3 then
|
||
if ComponProp.IDDataType = dtFloat then
|
||
ComponentPropList.Add(ComponProp);
|
||
end;
|
||
end;
|
||
|
||
DrawEllipticZone := CanDrawEllipticZone;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
|
||
if DrawEllipticZone then
|
||
begin
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
Radius := Radius*10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Radius := (Radius*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
Radius := Radius + HalfDrawFigureX; // + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SetElparamsToParamList;
|
||
TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure('TOverLappedEllipse', ParamList);
|
||
ParamList.free;
|
||
end
|
||
else
|
||
begin
|
||
// <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20> <20>
|
||
cpy := (MinY + MaxY)/2;
|
||
if FOffset = -1 then // -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
begin
|
||
FOffset := 0;
|
||
if VAngle <> 360 then
|
||
cpx := apx + HalfDrawFigureX
|
||
else
|
||
cpx := apx;
|
||
HalfDrawFigureX := 0;
|
||
end
|
||
else
|
||
begin
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
FOffset := FOffset*10;
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
FOffset := (FOffset*1000)/GCadForm.PCad.MapScale; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end;
|
||
if VAngle <> 360 then
|
||
cpx := apx - FOffset // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> x
|
||
else
|
||
cpx := apx;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
cutRadius := 0;
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
Radius := Radius*10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
Radius := (Radius*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
|
||
if VAngle <> 360 then
|
||
Radius := Radius + HalfDrawFigureX; // + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Radius := GetVerticalRange;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if FOffset > 0 then
|
||
begin
|
||
if VAngle <> 360 then
|
||
begin
|
||
Radius := Radius + FOffset;
|
||
cutRadius := FOffset + HalfDrawFigureX; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
else
|
||
cutRadius := FOffset;
|
||
end
|
||
else
|
||
begin
|
||
if VAngle = 360 then
|
||
CutRadius := 0
|
||
else
|
||
CutRadius := HalfDrawFigureX; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Height_Of_Detection <> -1 then
|
||
begin
|
||
CutDelta := 0;
|
||
CutRadius := GetCutDelta;
|
||
end;
|
||
|
||
if (MaxX = 0) or (MaxY = 0) then
|
||
begin
|
||
cpx := FFigure.ActualPoints[1].x;
|
||
cpy := FFigure.ActualPoints[1].y;
|
||
end;
|
||
|
||
//
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ComponentPropList.Count = 0 then
|
||
begin
|
||
if CompareValue(Radius, CutRadius) > 0 then
|
||
begin
|
||
ZoneColor := clSkyBlue;
|
||
|
||
ParamList := TStringList.Create;
|
||
|
||
ParamList.Add(FloatToStr(VAngle));
|
||
ParamList.Add(IntTostr(TransParency));
|
||
ParamList.Add(FloatTostr(cpx));
|
||
ParamList.Add(FloatTostr(cpy));
|
||
ParamList.Add(FloatTostr(Radius));
|
||
ParamList.Add(FloatTostr(CutRadius));
|
||
ParamList.Add(inttostr(ZoneColor));
|
||
ParamList.Add(inttostr(ZoneCutStyle));
|
||
ParamList.Add(FloatTostr(RAngle));
|
||
//TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure(VAngle, TransParency, cpx, cpy, Radius, cutRadius, clSkyBlue, TPieCutStyle(ZoneCutStyle), RAngle);
|
||
TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure('TPie', ParamList);
|
||
ParamList.free;
|
||
CutDelta := 0;
|
||
end;
|
||
end
|
||
else
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
ZoneCounter := 0;
|
||
ZoneColor := clSkyBlue;
|
||
LastRadius := Radius;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if ComponentPropList.Count > 1 then
|
||
begin
|
||
CanSortList := True;
|
||
While CanSortList do
|
||
begin
|
||
CanSortList := False;
|
||
for j := 0 to ComponentPropList.Count - 2 do
|
||
begin
|
||
//CanSortList := False;
|
||
if CompareValue(StrToFloat_My(PProperty(ComponentPropList[j]).Value), StrToFloat_My(PProperty(ComponentPropList[j+1]).Value)) = 1 then
|
||
begin
|
||
ComponProp := PProperty(ComponentPropList[j]);
|
||
ComponentPropList[j] := ComponentPropList[j + 1];
|
||
ComponentPropList[j + 1] := ComponProp;
|
||
CanSortList := True;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
DrawLastZone := True; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
for j := 0 to ComponentPropList.Count - 1 do
|
||
begin
|
||
if DrawLastZone then
|
||
begin
|
||
if j > 0 then
|
||
ZoneCutStyle := 1
|
||
else
|
||
ZoneCutStyle := 0;
|
||
|
||
ComponProp := PProperty(ComponentPropList[j]);
|
||
if ComponProp.IDDataType = dtFloat then
|
||
begin
|
||
CurrZoneRadius := StrToFloat_My(ComponProp.Value);
|
||
//CurrZoneRadius := MetreToUom(StrToFloat_My(ComponProp.Value));
|
||
if GCadForm.PCad.RulerMode = rmPage then
|
||
begin
|
||
//Radius := Radius*10; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrZoneRadius := CurrZoneRadius*10 + FOffset + HalfDrawFigureX;
|
||
end
|
||
else
|
||
if GCadForm.PCad.RulerMode = rmWorld then
|
||
begin
|
||
CurrZoneRadius := (CurrZoneRadius*1000)/GCadForm.PCad.MapScale + FOffset + HalfDrawFigureX;//(((MaxX- MinX)/2)*1000)/GCadForm.PCad.MapScale;
|
||
end;
|
||
if (TAngle <> 0) then
|
||
if (TAngle <> 90) then
|
||
currZoneRadius := currZoneRadius*(cos((Tangle/180)*PI));
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if CompareValue(CurrZoneRadius, LastRadius) = 1 then
|
||
CurrZoneRadius := LastRadius;
|
||
// <20><><EFBFBD><EFBFBD>
|
||
ZoneColor := -1;
|
||
PropName := ComponProp.SysName + '#COLOR';
|
||
ComponProp := Component.GetPropertyBySysName(PropName);
|
||
if ComponProp <> nil then
|
||
begin
|
||
if ComponProp.IDDataType = dtColor then
|
||
ZoneColor := strtoint(ComponProp.Value);
|
||
end;
|
||
if ZoneCounter < 4 then
|
||
Inc(ZoneCounter);
|
||
|
||
if ((ZoneCounter <> 0) and (ZoneColor = -1)) then
|
||
begin
|
||
case ZoneCounter of // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
1: ZoneColor := clRed; // (<28> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
2: ZoneColor := clYellow; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
3: ZoneColor := clGreen;
|
||
4: ZoneColor := clSkyBlue;
|
||
end;
|
||
end;
|
||
if ZoneColor = -1 then
|
||
ZoneColor := clSkyBlue; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
if DrawLastZone then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if CompareValue(CurrZoneRadius, LastRadius) <> -1 then
|
||
begin
|
||
CurrZoneRadius := LastRadius;
|
||
DrawLastZone := False;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if CompareValue(CurrZoneRadius, CutRadius) = 1 then
|
||
begin
|
||
//TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure(VAngle, TransParency, cpx, cpy, CurrZoneRadius, cutRadius, ZoneColor, TPieCutStyle(ZoneCutStyle), RAngle);
|
||
ParamList := TStringList.Create;
|
||
|
||
ParamList.Add(FloatToStr(VAngle));
|
||
ParamList.Add(IntTostr(TransParency));
|
||
ParamList.Add(FloatTostr(cpx));
|
||
ParamList.Add(FloatTostr(cpy));
|
||
ParamList.Add(FloatTostr(CurrZoneRadius));
|
||
ParamList.Add(FloatTostr(CutRadius));
|
||
ParamList.Add(inttostr(ZoneColor));
|
||
ParamList.Add(inttostr(ZoneCutStyle));
|
||
ParamList.Add(FloatTostr(RAngle));
|
||
//TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure(VAngle, TransParency, cpx, cpy, Radius, cutRadius, clSkyBlue, TPieCutStyle(ZoneCutStyle), RAngle);
|
||
TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure('TPie', ParamList);
|
||
ParamList.free;
|
||
|
||
CutRadius := CurrZoneRadius;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if CompareValue(CutRadius, LastRadius) <> -1 then
|
||
begin
|
||
DrawLastZone := False;
|
||
break;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||
if DrawLastZone then
|
||
begin
|
||
if CompareValue(LastRadius, CutRadius) = 1 then
|
||
begin
|
||
ZoneCutStyle := 1;
|
||
ZoneColor := clSkyBlue;
|
||
ParamList := TStringList.Create;
|
||
|
||
ParamList.Add(FloatToStr(VAngle));
|
||
ParamList.Add(IntTostr(TransParency));
|
||
ParamList.Add(FloatTostr(cpx));
|
||
ParamList.Add(FloatTostr(cpy));
|
||
ParamList.Add(FloatTostr(Radius));
|
||
ParamList.Add(FloatTostr(CutRadius));
|
||
ParamList.Add(inttostr(ZoneColor));
|
||
ParamList.Add(inttostr(ZoneCutStyle));
|
||
ParamList.Add(FloatTostr(RAngle));
|
||
//TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure(VAngle, TransParency, cpx, cpy, Radius, cutRadius, clSkyBlue, TPieCutStyle(ZoneCutStyle), RAngle);
|
||
TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure('TPie', ParamList);
|
||
ParamList.free;
|
||
//TConnectorObject(FFigure).AddAutoCreatedObjsToDrawFigure(VAngle, TransParency, cpx, cpy, LastRadius, cutRadius ,clSkyBlue, TPieCutStyle(ZoneCutStyle), RAngle);
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if DrawFigureAngle <> 0 then
|
||
begin
|
||
ObjectDrawFigure.BoundCalc := False; // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
ObjectDrawFigure.Rotate(DrawFigureAngle, ObjectDrawFigure.CenterPoint);
|
||
TConnectorObject(FFigure).FDrawFigureAngle := DrawFigureAngle;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
except
|
||
|
||
end;
|
||
end;
|
||
GCadForm := SavedGCadForm;
|
||
if ComponentPropList <> nil then
|
||
ComponentPropList.Free;
|
||
end;
|
||
//
|
||
procedure TF_ChoiceConnectSide.DefineObjectIcon(AObject: TSCSCatalog);
|
||
var
|
||
//IDFirstCompon: Integer;
|
||
FirstCompon: TSCSComponent;
|
||
FirstTopComponent: TSCSComponent;
|
||
ActualComponent: TSCSComponent;
|
||
//IDObjectIcon: Integer;
|
||
IconType: Integer;
|
||
IconBLK: TMemoryStream;
|
||
FNameBLK: String;
|
||
|
||
HaveObjectOtherIconType: Boolean;
|
||
GUIDObjectOtherIconType: String;
|
||
ObjectIconOtherType: TMemoryStream;
|
||
|
||
//OldTick: Cardinal;
|
||
//CurrTick: Cardinal;
|
||
//CurrObjIcon: string;
|
||
//CurrItemType: Integer;
|
||
CurrFigureIconParams: TFigureIconParams;
|
||
|
||
IconBlkList: TObjectList;
|
||
IconBlkListOtherSignType: TObjectList;
|
||
GUIDObjectIcon: String;
|
||
SCSList: TSCSList;
|
||
StepBlock: integer;
|
||
SProp: PProperty;
|
||
|
||
FFigure: TFigure;
|
||
vList: TF_CAD;
|
||
SavedCadForm: TF_CAD;
|
||
|
||
aisDeleted: boolean;
|
||
|
||
//Tolik --
|
||
NeedRecreateDrawFigure: Boolean;
|
||
//
|
||
function CheckDrawFigureHasAutoCreatedFigures: Boolean;
|
||
var Figure: TFigure;
|
||
ObjDrawFigure: TFigureGrpMod;
|
||
i: Integer;
|
||
begin
|
||
Result := False;
|
||
Figure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if Figure <> nil then
|
||
if checkFigureByClassName(Figure, cTConnectorObject) then
|
||
if TConnectorObject(Figure).ConnectorType <> ct_Clear then
|
||
begin
|
||
if Assigned(TConnectorObject(Figure).DrawFigure) then
|
||
begin
|
||
Result := TConnectorObject(Figure).DrawFigure.HasAutocreatedFigures;
|
||
{
|
||
for i := 0 to TFigureGrpMod(TConnectorObject(Figure).DrawFigure).InFigures.Count - 1 do
|
||
begin
|
||
if (TFigure(TFigureGrpMod(TConnectorObject(Figure).DrawFigure).InFigures[i]).isAutoCreatedFigure = biTrue) then
|
||
begin
|
||
Result := True;
|
||
exit;
|
||
end;
|
||
end;
|
||
}
|
||
end;
|
||
end;
|
||
end;
|
||
//
|
||
begin
|
||
if Not Assigned(AObject) then
|
||
Exit; ////// EXIT //////
|
||
|
||
aisDeleted := false;
|
||
|
||
SavedCadForm := GCadForm;
|
||
|
||
vList := GetListByID(AObject.ListID);
|
||
try
|
||
if vList <> nil then
|
||
begin
|
||
GCadForm := vList;
|
||
FFigure := nil;
|
||
FFigure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if FFigure = nil then
|
||
FFigure := GetFigureByIDInSCSFigureGroups(GCadForm, AObject.SCSID);
|
||
if FFigure <> nil then
|
||
aisDeleted := FFigure.Deleted;
|
||
end;
|
||
except
|
||
end;
|
||
GCadForm := SavedCadForm;
|
||
|
||
if aisDeleted then
|
||
Exit;
|
||
|
||
//Tolik 09/03/2021 --
|
||
if FFigure <> nil then
|
||
if FFigure is TConnectorobject then
|
||
TConnectorObject(FFigure).ByDrawF := CheckConnectorUseUGOBounds(TConnectorObject(FFigure));
|
||
//
|
||
try
|
||
FNameBLK := '';
|
||
IconType := oitNone; //oitProjectible;
|
||
IconBLK := nil;
|
||
IconBlkList := nil;
|
||
GUIDObjectOtherIconType := '';
|
||
// Tolik 12/06/2017 --
|
||
NeedRecreateDrawFigure := False;
|
||
//
|
||
|
||
with TF_Main(GForm) do
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{SetSQLToQuery(DM.scsQSelect, ' select component.id, id_object_icon from component, katalog, catalog_relation '+
|
||
' where (katalog.id = '''+IntTostr(AObject.ID)+''') and '+
|
||
' (id_catalog = katalog.id) and (id_component = component.id) '+
|
||
' order by component.sort_id ');}
|
||
{IDFirstCompon := DM.GetIDFirstComponInCatalog(AObject.ID);
|
||
// if IDFirstCompon > 0 then
|
||
begin
|
||
//IDObjectIcon := DM.scsQSelect.GetFNAsInteger('id_object_icon');
|
||
IDObjectIcon := DM.GetComponFieldValueAsInteger(IDFirstCompon, fnIDObjectIcon);
|
||
IconType := GetPropertyValueAsInteger(tkComponent, IDFirstCompon, pnSignType, qmUndef, -1);
|
||
with FNormBase.DM do
|
||
begin
|
||
IconBLK := GetComponIconByIconType(IDObjectIcon, IconType, ieBLK);
|
||
//if Assigned(IconBLK) then
|
||
SetBlockParamsForObject(AObject.SCSID, IDObjectIcon, IconType, IconBLK);
|
||
end;
|
||
end;}
|
||
|
||
FirstCompon := AObject.GetFirstComponentWithObjectIcon; //AObject.GetFirstComponent;
|
||
FirstTopComponent := AObject.GetFirstComponent;
|
||
if FirstTopComponent <> nil then
|
||
begin
|
||
//CurrObjIcon := GetIconIDByObjectID(AObject.SCSID);
|
||
//CurrItemType := GetObjectTypeIDByObjectID(AObject.SCSID);
|
||
CurrFigureIconParams := GetFigureIconParams(AObject.ListID, AObject.SCSID);
|
||
|
||
IconType := oitNone;
|
||
IconBlkList := nil;
|
||
IconBlkListOtherSignType := nil;
|
||
GUIDObjectIcon := '';
|
||
ActualComponent := FirstTopComponent;
|
||
if FirstCompon <> nil then
|
||
ActualComponent := FirstCompon;
|
||
|
||
IconType := ActualComponent.GetPropertyValueAsInteger(pnSignType);
|
||
|
||
StepBlock := $FFFF;
|
||
SProp := ActualComponent.GetPropertyBySysName('GRAPH_SYMBOL_SPACING');
|
||
if SProp <> nil then
|
||
StepBlock := StrToIntDef(SProp^.Value, 0);
|
||
|
||
GUIDObjectIcon := ActualComponent.GUIDObjectIcon;
|
||
// Tolik 12/06/2017 --
|
||
{
|
||
NeedRecreateDrawFigure := ((ActualComponent.GetPropertyBySysName('ACT_RANGE') <> nil) and
|
||
(ActualComponent.GetPropertyBySysName('V_ANGLE') <> nil));
|
||
}
|
||
//
|
||
if IconType = oitNone then
|
||
IconType := oitProjectible;
|
||
// if (FirstCompon.IDObjectIcon = 0) or
|
||
// (CurrObjIcon <> FirstCompon.IDObjectIcon) or (CurrItemType <> IconType) then
|
||
if (CurrFigureIconParams.GUIDObjectIcon = '') or
|
||
(CurrFigureIconParams.IconCount > 1) or {(FirstTopComponent.ChildReferences.Count > 0) or}
|
||
(AObject.ItemType = itSCSLine) or
|
||
((CurrFigureIconParams.IconType <> IconType) or (CurrFigureIconParams.GUIDObjectIcon <> GUIDObjectIcon)) or
|
||
CheckComponHaveInternalConnection(FirstTopComponent) {Tolik -- 12/06/2017 -- } or CheckDrawFigureHasAutoCreatedFigures
|
||
or NeedRecreateDrawFigure then
|
||
begin
|
||
//OldTick := GetTickCount;
|
||
//IconBLK := GetComponIconByIconType(FirstCompon.IDObjectIcon, IconType, ieBLK);
|
||
//if Assigned(IconBLK) then
|
||
|
||
|
||
//IconBLK := FirstCompon.GetObjectIconBlk;
|
||
//IconBlkList := TObjectList.Create(true);
|
||
//IconBlkList.Add(IconBLK);
|
||
IconBlkList := GetSCSObjectIcons(ActualComponent); //GetSCSObjectIcons(AObject);
|
||
|
||
if AObject.ItemType = itSCSLine then
|
||
begin
|
||
|
||
SCSList := AObject.GetListOwner;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
if (SCSList <> nil) and (SCSList.Setting.SCSType = st_External) then
|
||
begin
|
||
HaveObjectOtherIconType := CheckHaveObjectIconOtherType(AObject, IconType, ObjectIconOtherType, GUIDObjectOtherIconType);
|
||
if ObjectIconOtherType <> nil then
|
||
begin
|
||
IconBlkListOtherSignType := TObjectList.Create(true);
|
||
IconBlkListOtherSignType.Add(ObjectIconOtherType);
|
||
//IconBlkList.Add(ObjectIconOtherType);
|
||
end;
|
||
SetExistOtherObjectType(AObject.ListID, AObject.SCSID, HaveObjectOtherIconType);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LoadChildComponObjectIconToList(FirstTopComponent, IconBlkList, GUIDObjectOtherIconType);
|
||
end;
|
||
if StepBlock <> $FFFF then
|
||
begin
|
||
try
|
||
vList := GetListByID(AObject.ListID);
|
||
if vList <> nil then
|
||
begin
|
||
SavedCadForm := GCadForm;
|
||
GCadForm := vList;
|
||
try
|
||
FFigure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if FFigure = nil then
|
||
FFigure := GetFigureByIDInSCSFigureGroups(GCadForm, AObject.SCSID);
|
||
if CheckNoFigureinList(FFigure, GCadForm.FRemFigures) then
|
||
begin
|
||
if FFigure <> nil then
|
||
begin
|
||
if CheckFigureByClassName(FFigure, cTOrthoLine) then
|
||
begin
|
||
if not TOrthoLine(FFigure).FIsBlockChanged then
|
||
begin
|
||
if TOrthoLine(FFigure).BlockStep = GCadForm.FDefaultBlockStep then
|
||
TOrthoLine(FFigure).BlockStep := StepBlock;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
except
|
||
end;
|
||
GCadForm := SavedCadForm;
|
||
end;
|
||
except
|
||
end;
|
||
end;
|
||
|
||
SetBlockParamsForObject(AObject.ListID, AObject.SCSID, GUIDObjectIcon, IconType,
|
||
IconBlkList, IconBlkListOtherSignType, FirstTopComponent.ComponentType.SysName);
|
||
// Tolik -- 09/06/2017 --
|
||
FFigure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if FFigure <> nil then
|
||
begin
|
||
if checkFigureByClassName(FFigure, cTConnectorObject) then
|
||
begin
|
||
if TConnectorObject(FFigure).ConnectorType <> ct_Clear then
|
||
ModifyDrawFigureByProps(AObject);
|
||
//TConnectorObject(FFigure).AddPieObjToDrawFigure(90, 100, 10);
|
||
end;
|
||
end;
|
||
//
|
||
if IconBlkListOtherSignType <> nil then
|
||
FreeAndNil(IconBlkListOtherSignType);
|
||
if IconBlkList <> nil then
|
||
FreeAndNil(IconBlkList);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
vList := GetListByID(AObject.ListID);
|
||
if vList <> nil then
|
||
begin
|
||
SavedCadForm := GCadForm;
|
||
GCadForm := vList;
|
||
try
|
||
FFigure := GetFigureByID(GCadForm, AObject.SCSID);
|
||
if FFigure = nil then
|
||
FFigure := GetFigureByIDInSCSFigureGroups(GCadForm, AObject.SCSID);
|
||
if CheckNoFigureinList(FFigure, GCadForm.FRemFigures) then
|
||
begin
|
||
if FFigure <> nil then
|
||
begin
|
||
if CheckFigureByClassName(FFigure, cTOrthoLine) then
|
||
begin
|
||
if not TOrthoLine(FFigure).FIsBlockChanged then
|
||
begin
|
||
TOrthoLine(FFigure).BlockStep := GCadForm.FDefaultBlockStep;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
except
|
||
end;
|
||
GCadForm := SavedCadForm;
|
||
end;
|
||
SetBlockParamsForObject(AObject.ListID, AObject.SCSID, '', IconType, IconBlkList, nil, '');
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DefineObjectIcon: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectJoinedTrunk(AObject: TSCSCatalog);
|
||
var
|
||
FirstComponent: TSCSComponent;
|
||
ListOwner: TSCSList;
|
||
CurrCadCrossObject: TCadCrossObject;
|
||
begin
|
||
FirstComponent := AObject.GetFirstComponent;
|
||
if FirstComponent <> nil then
|
||
begin
|
||
ListOwner := AObject.GetListOwner;
|
||
if ListOwner <> nil then
|
||
begin
|
||
CurrCadCrossObject := GetComponentTrunk(FirstComponent);
|
||
ChangeCADCrossObject(ListOwner, AObject.ID, CurrCadCrossObject);
|
||
|
||
if FirstComponent.ComponentType.SysName = ctsnCrossATS then
|
||
ChangeCrossATSInterf(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
if FirstComponent.ComponentType.SysName = ctsnDistributionCabinet then
|
||
ChangeDistribCabInterf(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
|
||
// if FirstComponent.ComponentType.SysName = ctsnCrossATS then
|
||
// ReCreateCadCrossATS(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
// if FirstComponent.ComponentType.SysName = ctsnDistributionCabinet then
|
||
// ReCreateCadDistribCab(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
|
||
//ObjectOwner.ServToDefineParamsInCAD := true;
|
||
//RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectParamsAfterChangeComponMark(AObject: TSCSCatalog);
|
||
begin
|
||
if AObject.ItemType in [itSCSConnector, itSCSLine] then
|
||
begin
|
||
OpenNoExistsListInCAD(AObject.GetListOwner);
|
||
TF_Main(GForm).DefineConnectorObjectNodeName(AObject);
|
||
DefineObjectSignature(AObject);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectsParamsAfterChangeComponMark(AObjects: TSCSCatalogs);
|
||
var
|
||
i: integer;
|
||
SCSCatalog: TSCSCatalog;
|
||
begin
|
||
for i := 0 to AObjects.Count - 1 do
|
||
begin
|
||
DefineObjectParamsAfterChangeComponMark(AObjects[i]);
|
||
//SCSCatalog := AObjects[i];
|
||
//if SCSCatalog.ItemType in [itSCSConnector, itSCSLine] then
|
||
//begin
|
||
// OpenNoExistsListInCAD(SCSCatalog.GetListOwner);
|
||
// TF_Main(GForm).DefineConnectorObjectNodeName(SCSCatalog);
|
||
// DefineObjectSignature(SCSCatalog);
|
||
//end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineObjectTrunkAfterChange(AObject: TSCSCatalog);
|
||
var
|
||
FirstComponent: TSCSComponent;
|
||
ListOwner: TSCSList;
|
||
CurrCadCrossObject: TCadCrossObject;
|
||
begin
|
||
FirstComponent := AObject.GetFirstComponent;
|
||
if FirstComponent <> nil then
|
||
begin
|
||
ListOwner := AObject.GetListOwner;
|
||
if ListOwner <> nil then
|
||
begin
|
||
CurrCadCrossObject := GetComponentTrunk(FirstComponent);
|
||
ChangeCADCrossObject(ListOwner, AObject.ID, CurrCadCrossObject);
|
||
|
||
if FirstComponent.ComponentType.SysName = ctsnCrossATS then
|
||
ChangeCrossATSInterf(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
if FirstComponent.ComponentType.SysName = ctsnDistributionCabinet then
|
||
ChangeDistribCabInterf(AObject.ListID, AObject.SCSID, CurrCadCrossObject);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineChildComponsMarksByTop(ATopComponent: TSCSComponent; ANoDefineCompons: TSCSComponents);
|
||
var
|
||
ListOwner: TSCSList;
|
||
ObjectOwner: TSCSCatalog;
|
||
SprCompTypeFromList: TNBComponentType;
|
||
ChildCompon: TSCSComponent;
|
||
i: Integer;
|
||
begin
|
||
if ATopComponent.IsTop then
|
||
begin
|
||
ListOwner := ATopComponent.GetListOwner;
|
||
ObjectOwner := ATopComponent.GetFirstParentCatalog;
|
||
if (ListOwner <> nil) and (ObjectOwner <> nil) then
|
||
for i := 0 to ATopComponent.ChildReferences.Count - 1 do
|
||
begin
|
||
ChildCompon := ATopComponent.ChildReferences[i];
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ANoDefineCompons <> nil) and (ANoDefineCompons.IndexOf(ChildCompon) <> -1) then
|
||
Continue; //// CONTINUE ////
|
||
|
||
SprCompTypeFromList := ListOwner.Spravochnik.GetComponentTypeByGUID(ChildCompon.GUIDComponentType);
|
||
if SprCompTypeFromList <> nil then
|
||
if Pos(mteTopCompon, SprCompTypeFromList.ComponentType.MarkMask) <> 0 then
|
||
begin
|
||
ChildCompon.NameMark := TF_Main(GForm).MakeNameMarkComponent(ChildCompon, ObjectOwner, true, SprCompTypeFromList.ComponentType.MarkMask);
|
||
if Assigned(ChildCompon.TreeViewNode) then
|
||
ChildCompon.TreeViewNode.Text := TF_Main(GForm).GetNameNode(ChildCompon.TreeViewNode, ChildCompon, true, true);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineComponTrunkInFuture(AComponent: TSCSComponent);
|
||
var
|
||
ObjectOwner: TSCSCatalog;
|
||
begin
|
||
if IsTrunkComponent(AComponent) then
|
||
begin
|
||
ObjectOwner := AComponent.GetFirstParentCatalog;
|
||
if ObjectOwner <> nil then
|
||
//if ObjectOwner.ComponentReferences.IndexOf(AComponent) = 0 then
|
||
begin
|
||
ObjectOwner.ServToDefineObjParams := ObjectOwner.ServToDefineObjParams + [dopJoinedTrunk];
|
||
//if ARestartTimer then
|
||
RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineComponTrunkAfterChangeInFuture(AComponent: TSCSComponent; ARestartTimer: Boolean);
|
||
var
|
||
ObjectOwner: TSCSCatalog;
|
||
begin
|
||
if IsTrunkComponent(AComponent) then
|
||
begin
|
||
ObjectOwner := AComponent.GetFirstParentCatalog;
|
||
if ObjectOwner <> nil then
|
||
//if ObjectOwner.ComponentReferences.IndexOf(AComponent) = 0 then
|
||
begin
|
||
ObjectOwner.ServToDefineObjParams := ObjectOwner.ServToDefineObjParams + [dopTrunkChanged];
|
||
if ARestartTimer then
|
||
RestartTimer(Timer_DefineObjetsParamsInCAD);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.DefineJoinedTrunkAfterChangeInFuture(AComponent: TSCSComponent);
|
||
var
|
||
JoinedTrunk: TSCSComponent;
|
||
begin
|
||
JoinedTrunk := GetJoinedTrunkComponent(AComponent);
|
||
if JoinedTrunk <> nil then
|
||
DefineComponTrunkAfterChangeInFuture(JoinedTrunk, false);
|
||
end;
|
||
|
||
// Tolik 03/04/2020 --
|
||
procedure TF_ChoiceConnectSide.RefreshApproachInCAD(AAproachCompon: TSCSComponent);
|
||
var
|
||
ParentComponent: TSCSComponent;
|
||
SprComponentType: TNBComponentType;
|
||
SCSCatalog: TSCSCatalog;
|
||
s : String;
|
||
|
||
begin
|
||
s := '';
|
||
if Assigned(AAproachCompon) then
|
||
begin
|
||
if Assigned(AAproachCompon.ProjectOwner) then
|
||
begin
|
||
if Assigned(AAproachCompon.ProjectOwner.Spravochnik) then
|
||
begin
|
||
SprComponentType := AAproachCompon.ProjectOwner.Spravochnik.GetComponentTypeByGUID(AAproachCompon.GUIDComponentType);
|
||
if SprComponentType <> nil then
|
||
if SprComponentType.ComponentType.SysName = ctsnApproach then
|
||
begin
|
||
ParentComponent := GetParentComponByCompTypeSysName(AAproachCompon, ctsnHouse);
|
||
if ParentComponent <> nil then
|
||
begin
|
||
SCSCatalog := AAproachCompon.GetFirstParentCatalog;
|
||
SetApproachIndexInCAD(SCSCatalog.ListID, SCSCatalog.SCSID, AAproachCompon.ID, AAproachCompon.MarkID);
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{$IF Not Defined(FINAL_SCS)}
|
||
s := 'TF_ChoiceConnectSide.RefreshApproachInCAD Error: AAproachCompon.ProjectOwner.Spravochnik = nil ' + #13#10 +
|
||
'AAproachCompon.ID = ' + inttostr(AAproachCompon.ID) + 'AAproachCompon.name = ' + AAproachCompon.Name;
|
||
{$IFEND}
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{$IF Not Defined(FINAL_SCS)}
|
||
s := 'TF_ChoiceConnectSide.RefreshApproachInCAD Error: AAproachCompon.ProjectOwner = nil ' + #13#10 +
|
||
'AAproachCompon.ID = ' + inttostr(AAproachCompon.ID) + 'AAproachCompon.name = ' + AAproachCompon.Name;
|
||
{$IFEND}
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{$IF Not Defined(FINAL_SCS)}
|
||
s := 'TF_ChoiceConnectSide.RefreshApproachInCAD Error: AAproachCompon = nil';
|
||
{$IFEND}
|
||
end;
|
||
{$IF Not Defined(FINAL_SCS)}
|
||
try
|
||
if s <> '' then
|
||
begin
|
||
AddExceptionToLog(s);
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.ConnectInterfaces: '+E.Message);
|
||
end;
|
||
{$IFEND}
|
||
end;
|
||
|
||
{
|
||
procedure TF_ChoiceConnectSide.RefreshApproachInCAD(AAproachCompon: TSCSComponent);
|
||
var
|
||
ParentComponent: TSCSComponent;
|
||
SprComponentType: TNBComponentType;
|
||
SCSCatalog: TSCSCatalog;
|
||
begin
|
||
SprComponentType := AAproachCompon.ProjectOwner.Spravochnik.GetComponentTypeByGUID(AAproachCompon.GUIDComponentType);
|
||
if SprComponentType <> nil then
|
||
if SprComponentType.ComponentType.SysName = ctsnApproach then
|
||
begin
|
||
ParentComponent := GetParentComponByCompTypeSysName(AAproachCompon, ctsnHouse);
|
||
if ParentComponent <> nil then
|
||
begin
|
||
SCSCatalog := AAproachCompon.GetFirstParentCatalog;
|
||
SetApproachIndexInCAD(SCSCatalog.ListID, SCSCatalog.SCSID, AAproachCompon.ID, AAproachCompon.MarkID);
|
||
end;
|
||
end;
|
||
end;
|
||
}
|
||
//
|
||
|
||
// #############################################################################
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.FormCreate(Sender: TObject);
|
||
begin
|
||
Panel_OKCancelResize(Panel_OKCancel);
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
ListView_InterfComp1.SmallImages := ImageList_InterfType;
|
||
ListView_InterfComp2.SmallImages := ImageList_InterfType;
|
||
|
||
ListView_ConnComp1.SmallImages := ImageList_Dir;
|
||
ListView_ConnComp2.SmallImages := ImageList_Dir;
|
||
|
||
ListView_Compons1.SmallImages := ImageList_Dir;
|
||
ListView_Compons2.SmallImages := ImageList_Dir;
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.FormClose(Sender: TObject;
|
||
var Action: TCloseAction);
|
||
//var ModRes: TModalResult;
|
||
begin
|
||
//try
|
||
if ModalResult = mrOk then
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
if ListView_ToConnect.Items.Count = 0 then
|
||
begin
|
||
MessageModal(ChoiceConnectSide_Msg5_1_1,
|
||
ChoiceConnectSide_Msg5_1_2, MB_ICONINFORMATION or MB_OK);
|
||
ModalResult := mrNone;
|
||
end;
|
||
fmChoiceLineObject:
|
||
if ListView_ToConnect.Items.Count = 0 then
|
||
begin
|
||
MessageModal(ChoiceConnectSide_Msg5_2_1,
|
||
ChoiceConnectSide_Msg5_2_2, MB_ICONINFORMATION or MB_OK);
|
||
ModalResult := mrNone;
|
||
end;
|
||
end;
|
||
{except
|
||
ShowMessage(' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> U_ChoiceConnectSide: FormClose ');
|
||
end; }
|
||
end;
|
||
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.FormShow(Sender: TObject);
|
||
begin
|
||
GroupBox_ChoiceConnSide.Visible := false;
|
||
GroupBox_ChoiceLineObject.Visible := false;
|
||
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
begin
|
||
Caption := ChoiceConnectSide_Msg6_1;
|
||
GroupBox_ChoiceConnSide.Visible := true;
|
||
GroupBox_ConnectingList.Caption := ChoiceConnectSide_Msg6_2;
|
||
ListView_ToConnect.SmallImages := ListView_InterfComp1.SmallImages;
|
||
end;
|
||
fmChoiceLineObject:
|
||
begin
|
||
Caption := ChoiceConnectSide_Msg7_1;
|
||
GroupBox_ChoiceLineObject.Visible := true;
|
||
GroupBox_ConnectingList.Caption := ChoiceConnectSide_Msg7_2;
|
||
ListView_ToConnect.SmallImages := ListView_Compons1.SmallImages;
|
||
end;
|
||
end;
|
||
EnableAddDelInterfToConn;
|
||
end;
|
||
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.FormHide(Sender: TObject);
|
||
begin
|
||
//FreeToConectListView(ListView_ToConnect);
|
||
end;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// ############### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) #############
|
||
// #############################################################################
|
||
//
|
||
// ##### #####
|
||
function TF_ChoiceConnectSide.ChoiceSides(ACompData1, ACompData2: TSCSComponent;
|
||
AConnectKind: TConnectkind): Boolean;
|
||
var ModRes: TModalResult;
|
||
i: Integer;
|
||
ConnListData: PConnectListData;
|
||
InterfData1: TSCSInterface;
|
||
InterfData2: TSCSInterface;
|
||
//IDCompRel: Integer;
|
||
|
||
//IDFigure1: Integer;
|
||
//IDFigure2: Integer;
|
||
|
||
Compon1: TSCSComponent;
|
||
Compon2: TSCSComponent;
|
||
SCSObject1: TSCSCatalog;
|
||
SCSObject2: TSCSCatalog;
|
||
begin
|
||
Result := false;
|
||
GIDComp1 := ACompData1.ID;
|
||
GIDComp2 := ACompData2.ID;
|
||
GConnectKind := AConnectKind;
|
||
|
||
Compon1 := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompData1.ID);
|
||
Compon2 := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ACompData2.ID);
|
||
|
||
SCSObject1 := nil;
|
||
SCSObject2 := nil;
|
||
if Assigned(Compon1) then
|
||
SCSObject1 := Compon1.GetFirstParentCatalog;
|
||
if Assigned(Compon2) then
|
||
SCSObject2 := Compon2.GetFirstParentCatalog;
|
||
|
||
//IDFigure1 := TF_Main(GForm).DM.GetScsIDByIDCatalog(ACompData1.ObjectID);
|
||
//IDFigure2 := TF_Main(GForm).DM.GetScsIDByIDCatalog(ACompData2.ObjectID);
|
||
|
||
if Assigned(SCSObject1) and Assigned(SCSObject2) then
|
||
if (SCSObject1 = SCSObject2) or
|
||
CheckCanConnectInCAD(SCSObject1.ListID, SCSObject2.ListID, SCSObject1.SCSID, SCSObject2.SCSID) then
|
||
begin
|
||
GetSidesByConnectedFigures(SCSObject1.ListID, SCSObject2.ListID, SCSObject1.SCSID, SCSObject2.SCSID, FSideCompon1, FSideCompon2);
|
||
|
||
SetGroupBoxCaption(GroupBox_Comp1, ACompData1.Name);
|
||
SetGroupBoxCaption(GroupBox_Comp2, ACompData2.Name);
|
||
|
||
ListView_ToConnect.Column[0].Caption := ChoiceConnectSide_Msg8+' '+ACompData1.Name;
|
||
ListView_ToConnect.Column[1].Caption := ChoiceConnectSide_Msg8+' '+ACompData2.Name;
|
||
|
||
if ACompData1.Interfaces.Count = 0 then
|
||
ACompData1.LoadInterfaces;
|
||
if ACompData2.Interfaces.Count = 0 then
|
||
ACompData2.LoadInterfaces;
|
||
|
||
LoadInterfaces(Compon1.Interfaces, FSideCompon1, ListView_InterfComp1);
|
||
LoadInterfaces(Compon2.Interfaces, FSideCompon2, ListView_InterfComp2);
|
||
|
||
GFormMode := fmChoiceConnSide;
|
||
ModRes := ShowModal;
|
||
if ModRes = mrOK then
|
||
begin
|
||
//IDCompRel := TF_Main(GForm).AppendToComponRel(ACompData1.ID,ACompData2.ID, 1, cntUnion );
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ListView_ToConnect.Items.Count - 1 do
|
||
begin
|
||
ConnListData := ListView_ToConnect.Items[i].Data;
|
||
InterfData1 := ConnListData.Data1;
|
||
InterfData2 := ConnListData.Data2;
|
||
TF_Main(GForm).UnionInterfaces(InterfData1, InterfData2, AConnectKind);
|
||
end;
|
||
|
||
//if Not(ACompData1.HaveMultipleInterface) and Not(ACompData2.HaveMultipleInterface) then
|
||
OnAfterJoinCompons(Compon1, Compon2, FSideCompon1, FSideCompon2);
|
||
Result := true;
|
||
|
||
TF_Main(GForm).RefreshNode;
|
||
end;
|
||
|
||
ListView_InterfComp1.Items.Clear;
|
||
ListView_InterfComp2.Items.Clear;
|
||
ListView_ConnComp1.Items.Clear;
|
||
ListView_ConnComp2.Items.Clear;
|
||
ListView_ToConnect.Items.Clear;
|
||
//FreeListView(ListView_InterfComp1);
|
||
//FreeListView(ListView_InterfComp2);
|
||
//FreeListView(ListView_ConnComp1);
|
||
//FreeListView(ListView_ConnComp2);
|
||
//FreeToConectListView(ListView_ToConnect);
|
||
end
|
||
else
|
||
ShowMessageByType(Self.Handle, smtDisplay, ChoiceConnectSide_Msg9_1+' "'+ACompData1.Name+'", "'+ACompData2.Name+'" '+ChoiceConnectSide_Msg9_2, Application.Title, MB_OK or MB_ICONINFORMATION);
|
||
end;
|
||
|
||
|
||
|
||
function TF_ChoiceConnectSide.GetIDInterfRel(AListView: TListView): Integer;
|
||
begin
|
||
Result := -1;
|
||
if AListView.Items.Count > 0 then
|
||
Result := TSCSInterface(AListView.ItemFocused.Data).ID;;
|
||
end;
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> GroupBox #####
|
||
procedure TF_ChoiceConnectSide.SetGroupBoxCaption(AComboBox: TGroupBox; ACaption: String);
|
||
begin
|
||
AComboBox.Caption := ChoiceConnectSide_Msg10+' "'+ ACaption +'" ';
|
||
end;
|
||
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.LoadInterfaces(AInterfaces: TSCSInterfaces; ASide: Integer; AListView: TListView);
|
||
var
|
||
ListItem: TlistItem;
|
||
InterfRel: TSCSInterface;
|
||
i: Integer;
|
||
Spravochnik: TSpravochnik;
|
||
SprInterface: TNBInterface;
|
||
begin
|
||
{with TF_Main(GForm).DM do
|
||
begin
|
||
SetSQLToQuery(scsQSelect, ' select id, id_interface, gender, isbusy, Multiple, side from interface_relation '+
|
||
' where (id_component = '''+ IntToStr(AID_Component) +''') and '+
|
||
' ((isbusy = ''0'') or (multiple = ''1'') )'+
|
||
' order by id ');
|
||
while not scsQSelect.Eof do
|
||
begin
|
||
New(InterfRel);
|
||
InterfRel.ID := scsQSelect.GetFNAsInteger('id');
|
||
InterfRel.ID_INTERFACE := scsQSelect.GetFNAsInteger('id_interface');
|
||
InterfRel.Gender := scsQSelect.GetFNAsInteger('Gender');
|
||
InterfRel.Multiple := scsQSelect.GetFNAsInteger('Multiple');
|
||
InterfRel.IsBusy := scsQSelect.GetFNAsInteger('IsBusy');
|
||
InterfRel.Side := scsQSelect.GetFNAsInteger('Side');
|
||
ListItem := AListView.Items.Add;
|
||
ListItem.ImageIndex := 0;
|
||
ListItem.Data := InterfRel;
|
||
scsQSelect.Next;
|
||
end;
|
||
end; }
|
||
|
||
if Not Assigned(AInterfaces) then
|
||
Exit; //// EXIT ////
|
||
|
||
for i := 0 to AInterfaces.Count - 1 do
|
||
if AInterfaces[i].TypeI = itFunctional then
|
||
if (AInterfaces[i].Side = Aside) or (AInterfaces[i].Side = 0) then
|
||
if (AInterfaces[i].IsBusy = biFalse) or (AInterfaces[i].Multiple = biTrue) then
|
||
begin
|
||
ListItem := AListView.Items.Add;
|
||
ListItem.ImageIndex := 0;
|
||
ListItem.Data := AInterfaces[i];
|
||
end;
|
||
{with F_NormBase.DM do
|
||
for i := 0 to AListView.Items.Count - 1 do
|
||
begin
|
||
ListItem := AListView.Items[i];
|
||
InterfRel := ListItem.Data;
|
||
SetSQLToQuery(scsQSelect, ' select name from interface where id = '''+ IntToStr(InterfRel.ID_INTERFACE) +''' ');
|
||
ListItem.Caption := scsQSelect.GetFNAsString('Name');
|
||
LoadInterfDataToListView(ListItem);
|
||
end;
|
||
}
|
||
|
||
Spravochnik := TF_Main(GForm).GetSpravochnik;
|
||
if Spravochnik <> nil then
|
||
begin
|
||
for i := 0 to AListView.Items.Count - 1 do
|
||
begin
|
||
ListItem := AListView.Items[i];
|
||
InterfRel := ListItem.Data;
|
||
SprInterface := nil;
|
||
if InterfRel.GUIDInterface <> '' then
|
||
SprInterface := Spravochnik.GetInterfaceByGUID(InterfRel.GUIDInterface)
|
||
else
|
||
if InterfRel.ID_Interface > 0 then
|
||
SprInterface := Spravochnik.GetInterfaceByID(InterfRel.ID_Interface);
|
||
if SprInterface <> nil then
|
||
ListItem.Caption := SprInterface.Name;
|
||
LoadInterfDataToListView(ListItem);
|
||
end;
|
||
end;
|
||
|
||
if AListView.Items.Count > 0 then
|
||
AListView.Selected := AListView.TopItem;
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ListView #####
|
||
procedure TF_ChoiceConnectSide.LoadInterfDataToListView(
|
||
AListItem: TListItem);
|
||
var Interf: TSCSInterface;
|
||
strProp: String;
|
||
|
||
function GetYesNo(AIntBool: Integer): String;
|
||
begin
|
||
Result := '';
|
||
if AIntBool = 1 then
|
||
Result := ChoiceConnectSide_Msg11_1
|
||
else
|
||
Result := ChoiceConnectSide_Msg11_2;
|
||
end;
|
||
|
||
begin
|
||
Interf := AListItem.Data;
|
||
if Interf <> nil then
|
||
begin
|
||
//*** Npp
|
||
AListItem.SubItems.Add(IntTostr(Interf.Npp));
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
StrProp := GetYesNo(Interf.Multiple);
|
||
AListItem.SubItems.Add(strProp);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
StrProp := GetYesNo(Interf.IsBusy);
|
||
AListItem.SubItems.Add(strProp);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
StrProp := '';
|
||
if Interf.Side = 0 then
|
||
StrProp := ChoiceConnectSide_Msg11_2
|
||
else
|
||
StrProp := IntToStr(Interf.Side);
|
||
AListItem.SubItems.Add(strProp);
|
||
|
||
//*** <20><><EFBFBD>
|
||
StrProp := '';
|
||
if Interf.Gender = gtFemale then
|
||
StrProp := ChoiceConnectSide_Msg12_1;
|
||
if Interf.Gender = gtMale then
|
||
StrProp := ChoiceConnectSide_Msg12_2;
|
||
AListItem.SubItems.Add(strProp);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.LoadComponsByInterf(ACurrCompon: Integer; AInterfListItem: TListItem; AListView_Compons: TListView);
|
||
var ListItem: TListItem;
|
||
IDInterfRel: Integer;
|
||
//ConnectedInterfacesID: TList;
|
||
ConnectedInterf: TSCSInterface;
|
||
ConnectedCompon: TSCSComponent;
|
||
i: Integer;
|
||
//IDInterfStr: String;
|
||
begin
|
||
IDInterfRel := TSCSInterface(AInterfListItem.Data).ID;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FreeListView(AListView_Compons);
|
||
|
||
with TF_Main(GForm) do
|
||
begin
|
||
//ConnectedInterfacesID := DM.GetConnectedIDInterfRels(IDInterfRel);
|
||
//if Assigned(ConnectedInterfacesID) then
|
||
begin
|
||
for i := 0 to TSCSInterface(AInterfListItem.Data).ConnectedInterfaces.Count - 1 do
|
||
begin
|
||
ConnectedInterf := TSCSInterface(AInterfListItem.Data).ConnectedInterfaces[i];
|
||
if ConnectedInterf <> nil then
|
||
begin
|
||
ConnectedCompon := nil;
|
||
ConnectedCompon := GSCSBase.CurrProject.GetComponentFromReferences(ConnectedInterf.ID_Component);
|
||
if Assigned(ConnectedCompon) then
|
||
begin
|
||
ListItem := AListView_Compons.Items.Add;
|
||
ListItem.Caption := GetComponNameForVisible(ConnectedCompon.Name, ConnectedCompon.NameMark);
|
||
ListItem.ImageIndex := TF_Main(GForm).GetSCSComponType(ConnectedCompon.IsLine);
|
||
end;
|
||
end;
|
||
end;
|
||
//FreeList(ConnectedInterfacesID);
|
||
end;
|
||
|
||
{
|
||
IDInterfStr := IntToStr(IDInterfRel);
|
||
SetSQLToQuery(scsQSelect, ' select name, isLine from component '+
|
||
' where (id in (select id_component from interface_relation '+
|
||
' where (id in (select id_interf_rel from interfofinterf_relation '+
|
||
' where id_interf_to = '''+IDInterfStr+''' )) or '+
|
||
' (id in (select id_interf_to from interfofinterf_relation '+
|
||
' where id_interf_rel = '''+IDInterfStr+''' )) ) ) and '+
|
||
' Not(id = '''+ IntToStr(ACurrCompon) +''') ');
|
||
while Not scsQSelect.Eof do
|
||
begin
|
||
ListItem := AListView_Compons.Items.Add;
|
||
ListItem.Caption := scsQSelect.GetFNAsString('Name');
|
||
ListItem.ImageIndex := TF_Main(GForm).GetSCSComponType(scsQSelect.GetFNAsInteger('isline'));
|
||
scsQSelect.Next;
|
||
end; }
|
||
end;
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ListView #####
|
||
procedure TF_ChoiceConnectSide.FreeListView(AListView: TListView);
|
||
var i: Integer;
|
||
begin
|
||
for i := 0 to AListView.Items.Count - 1 do
|
||
if AListView.Items[i] <> nil then
|
||
FreeMem(AListView.Items[i].Data);
|
||
AListView.Items.Clear;
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.EnableAddDelInterfToConn;
|
||
var ListView1: TlistView;
|
||
ListView2: TlistView;
|
||
begin
|
||
ListView1 := nil;
|
||
ListView2 := nil;
|
||
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
begin
|
||
ListView1 := ListView_InterfComp1;
|
||
ListView2 := ListView_InterfComp2;
|
||
end;
|
||
fmChoiceLineObject:
|
||
begin
|
||
ListView1 := ListView_Compons1;
|
||
ListView2 := ListView_Compons2;
|
||
end;
|
||
end;
|
||
|
||
if (ListView1 <> nil) and (ListView1 <> nil) then
|
||
if (ListView1.Items.Count > 0 ) and
|
||
(ListView2.Items.Count > 0 ) then
|
||
Act_AddToConnList.Enabled := true
|
||
else
|
||
Act_AddToConnList.Enabled := false;
|
||
|
||
if ListView_ToConnect.Items.Count > 0 then
|
||
Act_DelFromConnList.Enabled := true
|
||
else
|
||
Act_DelFromConnList.Enabled := false;
|
||
end;
|
||
|
||
|
||
|
||
// #############################################################################
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 #####
|
||
procedure TF_ChoiceConnectSide.ListView_InterfComp1Change(Sender: TObject;
|
||
Item: TListItem; Change: TItemChange);
|
||
begin
|
||
LoadComponsByInterf(GIDComp1, Item, ListView_ConnComp1);
|
||
end;
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 #####
|
||
procedure TF_ChoiceConnectSide.ListView_InterfComp2Change(Sender: TObject;
|
||
Item: TListItem; Change: TItemChange);
|
||
begin
|
||
LoadComponsByInterf(GIDComp2, Item, ListView_ConnComp2);
|
||
end;
|
||
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.Act_AddToConnListExecute(Sender: TObject);
|
||
var LItem1: TlistItem;
|
||
LItem2: TlistItem;
|
||
//CanConnect: Boolean;
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
CheckRes: TCheckInterfForUnionResult;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
begin
|
||
CheckRes := chrFail;
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
begin
|
||
LItem1 := ListView_InterfComp1.Selected;
|
||
LItem2 := ListView_InterfComp2.Selected;
|
||
if (LItem1 = nil) or (LItem2 = nil) then
|
||
MessageModal(ChoiceConnectSide_Msg13_1,
|
||
ChoiceConnectSide_Msg13_2, MB_ICONINFORMATION or MB_OK)
|
||
else
|
||
CheckRes := CanConnectInterfaces(TSCSInterface(LItem1.Data), TSCSInterface(LItem2.Data), GForm, GForm, GConnectKind);
|
||
if CheckRes = chrSuccess then
|
||
begin
|
||
MoveItemsToConnectList(LItem1, LItem2, ListView_ToConnect);
|
||
EnableAddDelInterfToConn;
|
||
end
|
||
else
|
||
TF_Main(GForm).ShowCheckInterfForUnionResult(CheckRes);
|
||
end;
|
||
|
||
fmChoiceLineObject:
|
||
begin
|
||
LItem1 := ListView_Compons1.Selected;
|
||
LItem2 := ListView_Compons2.Selected;
|
||
if (LItem1 = nil) or (LItem2 = nil) then
|
||
MessageModal(ChoiceConnectSide_Msg14_1,
|
||
ChoiceConnectSide_Msg14_2, MB_ICONINFORMATION or MB_OK)
|
||
else
|
||
begin
|
||
SCSComponent1 := LItem1.Data;
|
||
SCSComponent2 := LItem2.Data;
|
||
//CanConnect := TF_Main(GForm).CanConnCompon(ptrSCSComponent1^, ptrSCSComponent2^, cntUnion);
|
||
//if CanConnect then
|
||
// begin
|
||
// ConnectInterfRes := ConnectInterfaces(SCSComponent1, SCSComponent2,
|
||
// -1, -1,
|
||
// GConnectKind, true, smtDisplay, true);
|
||
// if Not CanConnect then
|
||
// MessageModal(Self.Handle, '<27><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_ICONINFORMATION or MB_OK);
|
||
// end;
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
MoveItemsToConnectList(LItem1, LItem2, ListView_ToConnect);
|
||
EnableAddDelInterfToConn;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.Act_DelFromConnListExecute(
|
||
Sender: TObject);
|
||
var MoveLItem: TListItem;
|
||
begin
|
||
MoveLItem := ListView_ToConnect.Selected;
|
||
|
||
case GFormMode of
|
||
fmChoiceConnSide:
|
||
begin
|
||
if MoveLItem = nil then
|
||
MessageModal(ChoiceConnectSide_Msg15_1,
|
||
ChoiceConnectSide_Msg15_2, MB_ICONINFORMATION or MB_OK)
|
||
else
|
||
begin
|
||
ListView_InterfComp1.OnChange := nil;
|
||
ListView_InterfComp2.OnChange := nil;
|
||
MoveItemsFromConnectList(MoveLItem, ListView_InterfComp1, ListView_InterfComp2);
|
||
ListView_InterfComp1.OnChange := ListView_InterfComp1Change;
|
||
ListView_InterfComp2.OnChange := ListView_InterfComp2Change;
|
||
EnableAddDelInterfToConn;
|
||
end;
|
||
end;
|
||
fmChoiceLineObject:
|
||
begin
|
||
if MoveLItem = nil then
|
||
MessageModal(ChoiceConnectSide_Msg16_1,
|
||
ChoiceConnectSide_Msg16_2, MB_ICONINFORMATION or MB_OK)
|
||
else
|
||
begin
|
||
MoveItemsFromConnectList(MoveLItem, ListView_Compons1, ListView_Compons2);
|
||
EnableAddDelInterfToConn;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
// ###################### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" ##################
|
||
// #############################################################################
|
||
//
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
function TF_ChoiceConnectSide.GetCatalogList(AConnectObjectParams: Tlist; var AComponCount: Integer): TSCSCatalogs;
|
||
var ResList: TSCSCatalogs;
|
||
i: Integer;
|
||
ptrConnectObjectParam: PConnectObjectParam;
|
||
SCSCatalog: TSCSCatalog;
|
||
|
||
{
|
||
function LoadCatalogInterfaces(var ACatalog: TSCSCatalog; ASide: Integer): Boolean;
|
||
var SCSComponent: TSCSComponent;
|
||
Interfac: TSCSInterface;
|
||
i, j: Integer;
|
||
CanTakeInterf: Boolean;
|
||
|
||
CurrInterCanConn: Integer;
|
||
TotalInterCanConn: Integer;
|
||
begin
|
||
//ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiMarkID, fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiWholeID, fiObjectID]);
|
||
//ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiAll]);
|
||
//ACatalog.LoadComponents(ACatalog.ID, false);
|
||
|
||
//ChangeSQLQuery(scsQSelect, ' selecet * from ');
|
||
Result := false;
|
||
TotalInterCanConn := 0;
|
||
for i := 0 to ACatalog.ComponentReferences.Count - 1 do
|
||
begin
|
||
CurrInterCanConn := 0;
|
||
SCSComponent := ACatalog.ComponentReferences.Items[i];
|
||
for j := 0 to SCSComponent.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := SCSComponent.Interfaces.Items[j];
|
||
CanTakeInterf := false;
|
||
case SCSComponent.IsLine of
|
||
biTrue:
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
if ((Interfac.Side > 0) and (Interfac.Side = ASide)) or
|
||
(Interfac.Side = 0) then
|
||
CanTakeInterf := true;
|
||
biFalse:
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
CanTakeInterf := true;
|
||
end;
|
||
|
||
if CanTakeInterf then
|
||
begin
|
||
Interfac.ServCanConnect := true;
|
||
Inc(CurrInterCanConn);
|
||
end
|
||
else
|
||
Interfac.ServCanConnect := false;
|
||
end;
|
||
|
||
if CurrInterCanConn > 0 then
|
||
begin
|
||
SCSComponent.ServCanConnect := true;
|
||
Inc(AComponCount);
|
||
SCSComponent.ServInterfCntToConnect := CurrInterCanConn;
|
||
end
|
||
else
|
||
SCSComponent.ServCanConnect := false;
|
||
|
||
TotalInterCanConn := TotalInterCanConn + CurrInterCanConn;
|
||
end;
|
||
if TotalInterCanConn > 0 then
|
||
begin
|
||
ACatalog.ServCanConnect := true;
|
||
Result := true;
|
||
end
|
||
else
|
||
ACatalog.ServCanConnect := false;
|
||
end; }
|
||
|
||
function LoadCatalogInterfaces(var ACatalog: TSCSCatalog; ASide: Integer): Boolean;
|
||
var SCSComponent: TSCSComponent;
|
||
//Interfac: TSCSInterface;
|
||
i, j: Integer;
|
||
//CanTakeInterf: Boolean;
|
||
|
||
CurrInterCanConn: Integer;
|
||
TotalInterCanConn: Integer;
|
||
begin
|
||
//ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiMarkID, fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiWholeID, fiObjectID]);
|
||
//ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiAll]);
|
||
//ACatalog.LoadComponents(ACatalog.ID, false);
|
||
|
||
//ChangeSQLQuery(scsQSelect, ' selecet * from ');
|
||
Result := false;
|
||
TotalInterCanConn := 0;
|
||
for i := 0 to ACatalog.ComponentReferences.Count - 1 do
|
||
begin
|
||
CurrInterCanConn := 0;
|
||
SCSComponent := ACatalog.ComponentReferences.Items[i];
|
||
if Assigned(SCSComponent) then
|
||
begin
|
||
CurrInterCanConn := SCSComponent.GetInterfaceCountToConnect(ASide);
|
||
|
||
if CurrInterCanConn > 0 then
|
||
begin
|
||
SCSComponent.ServCanConnect := true;
|
||
Inc(AComponCount);
|
||
SCSComponent.ServInterfCntToConnect := CurrInterCanConn;
|
||
end
|
||
else
|
||
SCSComponent.ServCanConnect := false;
|
||
|
||
TotalInterCanConn := TotalInterCanConn + CurrInterCanConn;
|
||
end;
|
||
end;
|
||
if TotalInterCanConn > 0 then
|
||
begin
|
||
ACatalog.ServCanConnect := true;
|
||
Result := true;
|
||
end
|
||
else
|
||
ACatalog.ServCanConnect := false;
|
||
end;
|
||
|
||
begin
|
||
Result := nil;
|
||
ResList := TSCSCatalogs.Create(False);
|
||
|
||
AComponCount := 0;
|
||
for i := 0 to AConnectObjectParams.Count - 1 do
|
||
begin
|
||
ptrConnectObjectParam := AConnectObjectParams.Items[i];
|
||
if ptrConnectObjectParam.Side = -1 then
|
||
ptrConnectObjectParam.Side := 0;
|
||
|
||
//SCSCatalog := TSCSCatalog.Create(TForm(F_ProjMan));
|
||
//SCSCatalog.ID := TF_Main(GForm).DM.GetIDCatalogByIDFigure(ptrConnectObjectParam.IDObject);
|
||
//SCSCatalog.LoadCatalogByID(SCSCatalog.ID, false);
|
||
//LoadCatalogInterfaces(SCSCatalog, ptrConnectObjectParam.Side);
|
||
|
||
SCSCatalog := nil;
|
||
SCSCatalog := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ptrConnectObjectParam.IDObject);
|
||
if Assigned(SCSCatalog) then
|
||
begin
|
||
if LoadCatalogInterfaces(SCSCatalog, ptrConnectObjectParam.Side) then
|
||
ResList.Add(SCSCatalog);
|
||
end;
|
||
end;
|
||
|
||
if ResList.Count = 0 then
|
||
ResList.Free
|
||
else
|
||
Result := ResList;
|
||
end;
|
||
|
||
{
|
||
function TF_ChoiceConnectSide.GetCatalogList(AConnectObjectParams: Tlist; var AComponCount: Integer): TList;
|
||
var ResList: Tlist;
|
||
i: Integer;
|
||
ptrConnectObjectParam: PConnectObjectParam;
|
||
SCSCatalog: TSCSCatalog;
|
||
|
||
procedure LoadCatalogInterfaces(var ACatalog: TSCSCatalog; ASide: Integer);
|
||
var SCSComponent: TSCSComponent;
|
||
Interfac: TSCSInterface;
|
||
i, j: Integer;
|
||
CanTakeInterf: Boolean;
|
||
begin
|
||
//ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiMarkID, fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiWholeID, fiObjectID]);
|
||
ACatalog.LoadAllComponentsByObjectID(ACatalog.ID, [fiAll]);
|
||
//ACatalog.LoadComponents(ACatalog.ID, false);
|
||
|
||
//ChangeSQLQuery(scsQSelect, ' selecet * from ');
|
||
for i := 0 to ACatalog.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent := ACatalog.SCSComponents.Items[i];
|
||
//ptrSCSComponent.LoadInterfaces(-1, false);
|
||
SCSComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
for j := 0 to SCSComponent.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := SCSComponent.Interfaces.Items[j];
|
||
CanTakeInterf := false;
|
||
case SCSComponent.IsLine of
|
||
biTrue:
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
if (Interfac.Side > 0) and (Interfac.Side = ASide) then
|
||
CanTakeInterf := true;
|
||
biFalse:
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
CanTakeInterf := true;
|
||
end;
|
||
|
||
if Not CanTakeInterf then
|
||
begin
|
||
FreeMem(Interfac);
|
||
SCSComponent.Interfaces.Items[j] := nil;
|
||
end;
|
||
end;
|
||
SCSComponent.Interfaces.Pack;
|
||
if SCSComponent.Interfaces.Count = 0 then
|
||
begin
|
||
SCSComponent.Free;
|
||
ACatalog.SCSComponents.Items[i] := nil;
|
||
end;
|
||
end;
|
||
ACatalog.SCSComponents.Pack;
|
||
end;
|
||
|
||
|
||
begin
|
||
Result := nil;
|
||
ResList := Tlist.Create;
|
||
|
||
AComponCount := 0;
|
||
for i := 0 to AConnectObjectParams.Count - 1 do
|
||
begin
|
||
ptrConnectObjectParam := AConnectObjectParams.Items[i];
|
||
SCSCatalog := TSCSCatalog.Create(TForm(F_ProjMan));
|
||
SCSCatalog.ID := TF_Main(GForm).DM.GetIDCatalogByIDFigure(ptrConnectObjectParam.IDObject);
|
||
SCSCatalog.LoadCatalogByID(SCSCatalog.ID, false);
|
||
|
||
LoadCatalogInterfaces(SCSCatalog, ptrConnectObjectParam.Side);
|
||
|
||
if SCSCatalog.SCSComponents.Count = 0 then
|
||
begin
|
||
SCSCatalog.Free;
|
||
SCSCatalog := nil;
|
||
end
|
||
else
|
||
begin
|
||
ResList.Add(SCSCatalog);
|
||
AComponCount := AComponCount + SCSCatalog.SCSComponents.Count;
|
||
end;
|
||
end;
|
||
|
||
if ResList.Count = 0 then
|
||
ResList.Free
|
||
else
|
||
Result := ResList;
|
||
end;
|
||
}
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
{function TF_ChoiceConnectSide.GetComponList(AInterfList: TList): TSCSComponents;
|
||
type TPosIDinList = record
|
||
ID: Integer;
|
||
Index: Integer;
|
||
end;
|
||
PPosIDinList = ^TPosIDinList;
|
||
|
||
var ResList: TSCSComponents;
|
||
PosIDCompList: TList;
|
||
PosID: PPosIDinList;
|
||
SCSComponent: TSCSComponent;
|
||
|
||
i: Integer;
|
||
IDInterf: Integer;
|
||
|
||
|
||
procedure AddIDInterfToComponsInterfList(AID_Interface: Integer);
|
||
var //IDComponent: Integer;
|
||
InterfaceData: TSCSInterface;
|
||
i: integer;
|
||
FindedIndex: Integer;
|
||
begin
|
||
with TF_Main(GForm).DM do
|
||
begin
|
||
SetSQLToQuery(scsQSelect, ' select * from interface_relation where id = '''+IntToStr(AID_Interface)+''' ');
|
||
if (scsQSelect.GetFNAsInteger('isBusy') = 0) or (scsQSelect.GetFNAsInteger('Multiple') = 1) then
|
||
begin
|
||
//New(InterfaceData);
|
||
InterfaceData := TSCSInterface.Create(GForm);
|
||
InterfaceData.ID := AID_Interface;
|
||
InterfaceData.ID_Component := scsQSelect.GetFNAsInteger('ID_Component');
|
||
InterfaceData.ID_Interface := scsQSelect.GetFNAsInteger('ID_Interface');
|
||
InterfaceData.TypeI := scsQSelect.GetFNAsInteger('TypeI');
|
||
InterfaceData.Gender := scsQSelect.GetFNAsInteger('Gender');
|
||
InterfaceData.IsBusy := scsQSelect.GetFNAsInteger('isBusy');
|
||
InterfaceData.Multiple := scsQSelect.GetFNAsInteger('Multiple');
|
||
//InterfaceData.IOfIRelOut := nil;
|
||
|
||
FindedIndex := -1;
|
||
for i := 0 to PosIDCompList.Count - 1 do
|
||
if PPosIDinList(PosIDCompList.Items[i]).ID = InterfaceData.ID_Component then
|
||
begin
|
||
FindedIndex := PPosIDinList(PosIDCompList.Items[i]).Index;
|
||
Break;
|
||
end;
|
||
if FindedIndex = -1 then
|
||
begin
|
||
SCSComponent := TSCSComponent.Create(GForm);
|
||
SCSComponent.LoadComponentByID(InterfaceData.ID_Component, false);
|
||
SCSComponent.Interfaces.Add(InterfaceData);
|
||
ResList.Add(SCSComponent);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
New(PosID);
|
||
PosID.ID := InterfaceData.ID_Component;
|
||
PosIDCompList.Add(PosID);
|
||
if PosIDCompList.Count = 0 then
|
||
PosID.Index := 0
|
||
else
|
||
PosID.Index := PosIDCompList.Count - 1;
|
||
end
|
||
else
|
||
begin
|
||
SCSComponent := ResList.Items[FindedIndex];
|
||
SCSComponent.Interfaces.Add(InterfaceData);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
Result := nil;
|
||
|
||
ResList := TSCSComponents.Create(true);
|
||
PosIDCompList := TList.Create;
|
||
for i := 0 to AInterfList.Count - 1 do
|
||
begin
|
||
IDInterf := Integer(AInterfList.Items[i]^);
|
||
AddIDInterfToComponsInterfList(IDInterf);
|
||
end;
|
||
FreeList(PosIDCompList);
|
||
|
||
if ResList.Count > 0 then
|
||
Result := ResList
|
||
else
|
||
ResList.Free;
|
||
end; }
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.FreeComponList(AComponList: TList);
|
||
var i: Integer;
|
||
SCSComponent: TSCSComponent;
|
||
begin
|
||
if AComponList = nil then
|
||
Exit; ///// EXIT /////
|
||
for i := 0 to AComponList.Count - 1 do
|
||
begin
|
||
SCSComponent := AComponList.Items[i];
|
||
SCSComponent.Free;
|
||
end;
|
||
AComponList.Free;
|
||
//FreeList(AComponList);
|
||
end;
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.FreeCatalogList(ACatalogList: TList);
|
||
var i: Integer;
|
||
SCSCatalog: TSCSCatalog;
|
||
begin
|
||
if ACatalogList = nil then
|
||
Exit; ///// EXIT //////
|
||
|
||
for i := 0 to ACatalogList.Count - 1 do
|
||
begin
|
||
SCSCatalog := ACatalogList.Items[i];
|
||
SCSCatalog.Free;
|
||
end;
|
||
ACatalogList.Free;
|
||
//FreeList(ACatalogList);
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.JoinCrossConnections(ASCSComponent: TSCSComponent);
|
||
var
|
||
ComponentFrom: TSCSComponent;
|
||
ComponentTo: TSCSComponent;
|
||
ComponentWith: TSCSComponent;
|
||
|
||
i: Integer;
|
||
ptrCrossConnection: TSCSCrossConnection;
|
||
begin
|
||
if Assigned(ASCSComponent) then
|
||
with TF_Main(GForm) do
|
||
begin
|
||
BeginProgress;
|
||
try
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ASCSComponent.CrossConnections.Count - 1 do
|
||
begin
|
||
ptrCrossConnection := TSCSCrossConnection(ASCSComponent.CrossConnections[i]);
|
||
|
||
ComponentFrom := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponFrom);
|
||
ComponentTo := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponTo);
|
||
ComponentWith := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponWith);
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Assigned(ComponentFrom) and Assigned(ComponentTo) and Not Assigned(ComponentWith) then
|
||
//ComponentFrom.JoinTo(ComponentTo, -1, -1);
|
||
ComponentFrom.JoinTo(ComponentTo, -1, -1, false, nil, nil, -1, true, false, true);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ASCSComponent.CrossConnections.Count - 1 do
|
||
begin
|
||
ptrCrossConnection := TSCSCrossConnection(ASCSComponent.CrossConnections[i]);
|
||
|
||
ComponentFrom := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponFrom);
|
||
ComponentTo := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponTo);
|
||
ComponentWith := GSCSBase.CurrProject.GetComponentFromReferences(ptrCrossConnection.IDComponWith);
|
||
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Assigned(ComponentFrom) and Assigned(ComponentTo) and Assigned(ComponentWith) then
|
||
ConnectCrossWithModules(ComponentWith, ComponentFrom, ComponentTo, true);
|
||
end;
|
||
finally
|
||
EndProgress;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.GetNumSideByObject(AObject: TSCSCatalog; AConnectObjectParams: TList): Integer;
|
||
var i: Integer;
|
||
ptrConnectObjectParam: PConnectObjectParam;
|
||
begin
|
||
Result := 0;
|
||
if Assigned(AConnectObjectParams) then
|
||
for i := 0 to AConnectObjectParams.Count - 1 do
|
||
begin
|
||
ptrConnectObjectParam := AConnectObjectParams[i];
|
||
if ptrConnectObjectParam.IDObject = AObject.SCSID then
|
||
begin
|
||
Result := ptrConnectObjectParam.Side;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> #####
|
||
function TF_ChoiceConnectSide.CanConnectLineComponWithConObjects(AIDNBLineCompon, AIDPointFigure, AIDFinalFigure: Integer; aConsiderBoxAndRack: Boolean=false): Boolean;
|
||
var SCSPointObject: TSCSCatalog;
|
||
SCSFinalObject: TSCSCatalog;
|
||
SCSLineComponent: TSCSComponent;
|
||
Interfac: TSCSInterface;
|
||
CanConWithPointObj: Boolean;
|
||
CanConWithFinalObj: Boolean;
|
||
|
||
ConnectInterfPointObj: TConnectInterfRes;
|
||
ConnectInterfFinalObj: TConnectInterfRes;
|
||
SCSComponPointObj: TSCSComponent;
|
||
SCSComponFinalObj: TSCSComponent;
|
||
|
||
i, j: Integer;
|
||
|
||
{function CanConnectWithObject(ASCSObject: TSCSCatalog): Boolean;
|
||
var
|
||
i: Integer;
|
||
SCSComponent: TSCSComponent;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
CurrComponIsTrunk: Boolean;
|
||
begin
|
||
Result := false;
|
||
//ASCSObject.LoadAllComponentsByObjectID(ASCSObject.ID, [fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
for i := 0 to ASCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent := ASCSObject.ComponentReferences[i];
|
||
//ptrSCSComponent.LoadInterfaces(-1, false);
|
||
//SCSComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
// fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
SCSComponent.DefineInterfCountToConnect;
|
||
CurrComponIsTrunk := IsTrunkComponent(SCSComponent);
|
||
//if SCSComponent.HaveInterfaceByType(itFunctional) then
|
||
if (SCSComponent.ServInterfCntToConnect > 0) or CurrComponIsTrunk then
|
||
begin
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1); //ConnectInterfaces(SCSComponent, SCSLineComponent, -1, -1, cnkVarious, true, smtNone, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Result := true;
|
||
Break; ///// EXIT ////
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//if CurrComponIsTrunk then
|
||
// Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;}
|
||
|
||
{//02.07.2013 - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
function CanConnectWithObject(ASCSObject: TSCSCatalog): Boolean;
|
||
var
|
||
i: Integer;
|
||
SCSComponent: TSCSComponent;
|
||
SCSComponentInterfaces: TSCSInterfaces;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
CurrComponIsTrunk: Boolean;
|
||
begin
|
||
Result := false;
|
||
//ASCSObject.LoadAllComponentsByObjectID(ASCSObject.ID, [fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
for i := 0 to ASCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent := ASCSObject.ComponentReferences[i];
|
||
//ptrSCSComponent.LoadInterfaces(-1, false);
|
||
//SCSComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
// fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
SCSComponent.DefineInterfCountToConnect;
|
||
CurrComponIsTrunk := IsTrunkComponent(SCSComponent);
|
||
//if SCSComponent.HaveInterfaceByType(itFunctional) then
|
||
if (SCSComponent.ServInterfCntToConnect > 0) or CurrComponIsTrunk then
|
||
begin
|
||
ZeroMemory(@ConnectInterfRes, SizeOf(TConnectInterfRes));
|
||
//if GAutoTraceOnePortToOne and TF_Main(GForm).GSCSBase.CurrProject.IsAutoTracing then
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
begin
|
||
SCSComponentInterfaces := GetComponInterfacesThatPortNoHaveBusyInterfaces(SCSComponent);
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1, false, SCSComponentInterfaces, nil); //ConnectInterfaces(SCSComponent, SCSLineComponent, -1, -1, cnkVarious, true, smtNone, true);
|
||
FreeAndNil(SCSComponentInterfaces);
|
||
end
|
||
else
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1);
|
||
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Result := true;
|
||
Break; ///// EXIT ////
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//if CurrComponIsTrunk then
|
||
// Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;}
|
||
|
||
function CanConnWithPointComponent(APointComponent: TSCSComponent; aOtherCompon: TSCSComponent=nil): TConnectInterfRes;
|
||
var
|
||
SCSComponentInterfaces: TSCSInterfaces;
|
||
CurrComponIsTrunk: Boolean;
|
||
PointTopCompon, OtherTopCompon: TSCSComponent;
|
||
begin
|
||
ZeroMemory(@Result, SizeOf(TConnectInterfRes));
|
||
|
||
APointComponent.DefineInterfCountToConnect;
|
||
//30.01.2009 CurrComponIsTrunk := IsTrunkComponent(APointComponent);
|
||
//if SCSComponent.HaveInterfaceByType(itFunctional) then
|
||
|
||
//30.01.2009 if (APointComponent.ServInterfCntToConnect > 0) or CurrComponIsTrunk then
|
||
if (APointComponent.ServInterfCntToConnect > 0) or
|
||
(GetParentComponByOneCompTypeSysName(APointComponent, GCompTypeSysNameComplexCompons) <> nil) then
|
||
begin
|
||
//02.07.2013
|
||
// //if GAutoTraceOnePortToOne and TF_Main(GForm).GSCSBase.CurrProject.IsAutoTracing then
|
||
// if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
// begin
|
||
// SCSComponentInterfaces := GetComponInterfacesThatPortNoHaveBusyInterfaces(APointComponent);
|
||
// Result := APointComponent.CheckJoinTo(SCSLineComponent, -1, -1, false, SCSComponentInterfaces, nil); //ConnectInterfaces(SCSComponent, SCSLineComponent, -1, -1, cnkVarious, true, smtNone, true);
|
||
// FreeAndNil(SCSComponentInterfaces);
|
||
// end
|
||
// else
|
||
// Result := APointComponent.CheckJoinTo(SCSLineComponent, -1, -1);
|
||
|
||
//02.07.2013
|
||
SCSComponentInterfaces := nil;
|
||
//02.07.2013 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||
if aConsiderBoxAndRack and Assigned(aOtherCompon) then
|
||
begin
|
||
PointTopCompon := APointComponent.GetTopComponent;
|
||
OtherTopCompon := aOtherCompon.GetTopComponent;
|
||
if (PointTopCompon <> nil) and (OtherTopCompon <> nil) then
|
||
begin
|
||
if (PointTopCompon.ComponentType.SysName = ctsnCupboard) and (OtherTopCompon.ComponentType.SysName = ctsnBox) then
|
||
SCSComponentInterfaces := APointComponent.GetInterfacesByIsPort(biFalse, false) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else if (PointTopCompon.ComponentType.SysName = ctsnBox) then
|
||
begin
|
||
if (OtherTopCompon.ComponentType.SysName = ctsnCupboard) then
|
||
SCSComponentInterfaces := APointComponent.GetInterfacesByIsPort(biFalse, false) // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else
|
||
SCSComponentInterfaces := APointComponent.GetInterfacesByIsPort(biTrue, false); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD>)
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
SCSComponentInterfaces := GetComponInterfacesThatPortNoHaveBusyInterfaces(APointComponent);
|
||
end;
|
||
|
||
if SCSComponentInterfaces <> nil then
|
||
begin
|
||
Result := APointComponent.CheckJoinTo(SCSLineComponent, -1, -1, false, SCSComponentInterfaces, nil);
|
||
FreeAndNil(SCSComponentInterfaces);
|
||
end
|
||
else
|
||
Result := APointComponent.CheckJoinTo(SCSLineComponent, -1, -1);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//if CurrComponIsTrunk then
|
||
// Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
try
|
||
SCSPointObject := nil;
|
||
SCSFinalObject := nil;
|
||
SCSLineComponent := TSCSComponent.Create(TForm(F_NormBase));
|
||
|
||
try
|
||
CanConWithPointObj := false;
|
||
CanConWithFinalObj := false;
|
||
|
||
with TF_Main(GForm) do
|
||
begin
|
||
SCSPointObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(AIDPointFigure);
|
||
SCSFinalObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(AIDFinalFigure);
|
||
end;
|
||
//11.11.2010 if (Not Assigned(SCSPointObject)) or (Not Assigned(SCSFinalObject)) then
|
||
//11.11.2010 Exit; //// EXIT ////
|
||
if (Not Assigned(SCSPointObject)) and (Not Assigned(SCSFinalObject)) then //11.11.2010
|
||
Exit; //// EXIT //// //11.11.2010
|
||
|
||
if SCSPointObject.ItemType <> itSCSConnector then
|
||
Exit; //// EXIT ////
|
||
if (SCSFinalObject <> nil) and (SCSFinalObject.ItemType <> itSCSConnector) then
|
||
Exit; //// EXIT ////
|
||
|
||
//SCSLineComponent.LoadComponentByID(AIDNBLineCompon, false);
|
||
if F_NormBase.GSCSBase.SCSComponent.ID = AIDNBLineCompon then
|
||
begin
|
||
if Not F_NormBase.GSCSBase.SCSComponent.ServAllLoaded then
|
||
begin
|
||
F_NormBase.GSCSBase.SCSComponent.LoadComponentByID(AIDNBLineCompon, true);
|
||
F_NormBase.GSCSBase.SCSComponent.ServAllLoaded := true;
|
||
end;
|
||
SCSLineComponent.Assign(F_NormBase.GSCSBase.SCSComponent, true, true);
|
||
end
|
||
else
|
||
begin
|
||
SCSLineComponent.ID := AIDNBLineCompon;
|
||
SCSLineComponent.LoadComponentByFi([fiIsLine, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
end;
|
||
if SCSLineComponent.IsLine = biFalse then
|
||
Exit; //// EXIT /////
|
||
|
||
SetComponAsLite(SCSLineComponent);
|
||
//SCSLineComponent.LoadInterfaces(-1, false);
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>
|
||
if SCSLineComponent.Interfaces.Count = 0 then
|
||
//SCSLineComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
// fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
SCSLineComponent.LoadInterfaces(-1, false);
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to SCSLineComponent.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := SCSLineComponent.Interfaces[i];
|
||
if Interfac.TypeI = itFunctional then
|
||
if Not((Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue)) then
|
||
SCSLineComponent.Interfaces[i] := nil;
|
||
end;
|
||
SCSLineComponent.Interfaces.Pack;
|
||
if SCSLineComponent.Interfaces.Count > 0 then
|
||
begin
|
||
if aConsiderBoxAndRack then
|
||
begin
|
||
for i := 0 to SCSPointObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponPointObj := SCSPointObject.ComponentReferences[i];
|
||
ConnectInterfPointObj := CanConnWithPointComponent(SCSComponPointObj);
|
||
if SCSFinalObject = nil then
|
||
begin
|
||
Result := ConnectInterfPointObj.CanConnect;
|
||
end
|
||
else if ConnectInterfPointObj.CanConnect then
|
||
begin
|
||
for j := 0 to SCSFinalObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponFinalObj := SCSFinalObject.ComponentReferences[j];
|
||
ConnectInterfPointObj := CanConnWithPointComponent(SCSComponPointObj, SCSComponFinalObj);
|
||
if ConnectInterfPointObj.CanConnect then
|
||
begin
|
||
ConnectInterfFinalObj := CanConnWithPointComponent(SCSComponFinalObj, SCSComponPointObj);
|
||
if ConnectInterfFinalObj.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if TF_Main(GForm).CheckCanJoinEndComponsByProps(TSCSComponent(ConnectInterfPointObj.ComponObj1),
|
||
TSCSComponent(ConnectInterfFinalObj.ComponObj1), nil) then
|
||
begin
|
||
Result := true;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if Result then
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
for i := 0 to SCSPointObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponPointObj := SCSPointObject.ComponentReferences[i];
|
||
|
||
ConnectInterfPointObj := CanConnWithPointComponent(SCSComponPointObj);
|
||
if ConnectInterfPointObj.CanConnect and (SCSFinalObject = nil) then
|
||
Result := true
|
||
else
|
||
if ConnectInterfPointObj.CanConnect and (SCSFinalObject <> nil) then
|
||
begin
|
||
if SCSFinalObject.SCSComponents.Count = 0 then
|
||
Result := true
|
||
else
|
||
for j := 0 to SCSFinalObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponFinalObj := SCSFinalObject.ComponentReferences[j];
|
||
ConnectInterfFinalObj := CanConnWithPointComponent(SCSComponFinalObj);
|
||
|
||
if ConnectInterfFinalObj.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if TF_Main(GForm).CheckCanJoinEndComponsByProps(TSCSComponent(ConnectInterfPointObj.ComponObj1),
|
||
TSCSComponent(ConnectInterfFinalObj.ComponObj1), nil) then
|
||
begin
|
||
Result := true;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if Result then
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
{CanConWithPointObj := CanConnectWithObject(SCSPointObject);
|
||
if (CanConWithPointObj = true) and (SCSFinalObject <> nil) then
|
||
begin
|
||
CanConWithFinalObj := CanConnectWithObject(SCSFinalObject);
|
||
if CanConWithFinalObj = true then
|
||
Result := true
|
||
else
|
||
if SCSFinalObject.SCSComponents.Count = 0 then
|
||
Result := true;
|
||
end
|
||
else
|
||
if CanConWithPointObj then
|
||
Result := true;}
|
||
end;
|
||
finally
|
||
SCSLineComponent.Free;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.CanConnectLineComponWithObjects: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
(*
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> #####
|
||
function TF_ChoiceConnectSide.CanConnectLineComponWithConObjects(AIDNBLineCompon, AIDPointFigure, AIDFinalFigure: Integer): Boolean;
|
||
var SCSPointObject: TSCSCatalog;
|
||
SCSFinalObject: TSCSCatalog;
|
||
SCSLineComponent: TSCSComponent;
|
||
Interfac: TSCSInterface;
|
||
CanConWithPointObj: Boolean;
|
||
CanConWithFinalObj: Boolean;
|
||
i: Integer;
|
||
|
||
{function CanConnectWithObject(ASCSObject: TSCSCatalog): Boolean;
|
||
var
|
||
i: Integer;
|
||
SCSComponent: TSCSComponent;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
CurrComponIsTrunk: Boolean;
|
||
begin
|
||
Result := false;
|
||
//ASCSObject.LoadAllComponentsByObjectID(ASCSObject.ID, [fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
for i := 0 to ASCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent := ASCSObject.ComponentReferences[i];
|
||
//ptrSCSComponent.LoadInterfaces(-1, false);
|
||
//SCSComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
// fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
SCSComponent.DefineInterfCountToConnect;
|
||
CurrComponIsTrunk := IsTrunkComponent(SCSComponent);
|
||
//if SCSComponent.HaveInterfaceByType(itFunctional) then
|
||
if (SCSComponent.ServInterfCntToConnect > 0) or CurrComponIsTrunk then
|
||
begin
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1); //ConnectInterfaces(SCSComponent, SCSLineComponent, -1, -1, cnkVarious, true, smtNone, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Result := true;
|
||
Break; ///// EXIT ////
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//if CurrComponIsTrunk then
|
||
// Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;}
|
||
|
||
function CanConnectWithObject(ASCSObject: TSCSCatalog): Boolean;
|
||
var
|
||
i: Integer;
|
||
SCSComponent: TSCSComponent;
|
||
SCSComponentInterfaces: TSCSInterfaces;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
CurrComponIsTrunk: Boolean;
|
||
begin
|
||
Result := false;
|
||
//ASCSObject.LoadAllComponentsByObjectID(ASCSObject.ID, [fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
for i := 0 to ASCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent := ASCSObject.ComponentReferences[i];
|
||
//ptrSCSComponent.LoadInterfaces(-1, false);
|
||
//SCSComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
// fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
SCSComponent.DefineInterfCountToConnect;
|
||
CurrComponIsTrunk := IsTrunkComponent(SCSComponent);
|
||
//if SCSComponent.HaveInterfaceByType(itFunctional) then
|
||
if (SCSComponent.ServInterfCntToConnect > 0) or CurrComponIsTrunk then
|
||
begin
|
||
ZeroMemory(@ConnectInterfRes, SizeOf(TConnectInterfRes));
|
||
//if GAutoTraceOnePortToOne and TF_Main(GForm).GSCSBase.CurrProject.IsAutoTracing then
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
begin
|
||
SCSComponentInterfaces := GetComponInterfacesThatPortNoHaveBusyInterfaces(SCSComponent);
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1, false, SCSComponentInterfaces, nil); //ConnectInterfaces(SCSComponent, SCSLineComponent, -1, -1, cnkVarious, true, smtNone, true);
|
||
FreeAndNil(SCSComponentInterfaces);
|
||
end
|
||
else
|
||
ConnectInterfRes := SCSComponent.CheckJoinTo(SCSLineComponent, -1, -1);
|
||
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Result := true;
|
||
Break; ///// EXIT ////
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
//if CurrComponIsTrunk then
|
||
// Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
try
|
||
SCSPointObject := nil;
|
||
SCSFinalObject := nil;
|
||
SCSLineComponent := TSCSComponent.Create(TForm(F_NormBase));
|
||
|
||
try
|
||
CanConWithPointObj := false;
|
||
CanConWithFinalObj := false;
|
||
|
||
with TF_Main(GForm) do
|
||
begin
|
||
SCSPointObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(AIDPointFigure);
|
||
SCSFinalObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(AIDFinalFigure);
|
||
end;
|
||
if (Not Assigned(SCSPointObject)) and (Not Assigned(SCSFinalObject)) then
|
||
Exit; //// EXIT ////
|
||
if SCSPointObject.ItemType <> itSCSConnector then
|
||
Exit; //// EXIT ////
|
||
if (SCSFinalObject <> nil) and (SCSFinalObject.ItemType <> itSCSConnector) then
|
||
Exit; //// EXIT ////
|
||
|
||
//SCSLineComponent.LoadComponentByID(AIDNBLineCompon, false);
|
||
if F_NormBase.GSCSBase.SCSComponent.ID = AIDNBLineCompon then
|
||
begin
|
||
if Not F_NormBase.GSCSBase.SCSComponent.ServAllLoaded then
|
||
begin
|
||
F_NormBase.GSCSBase.SCSComponent.LoadComponentByID(AIDNBLineCompon, true);
|
||
F_NormBase.GSCSBase.SCSComponent.ServAllLoaded := true;
|
||
end;
|
||
SCSLineComponent.Assign(F_NormBase.GSCSBase.SCSComponent, true, true);
|
||
end
|
||
else
|
||
begin
|
||
SCSLineComponent.ID := AIDNBLineCompon;
|
||
SCSLineComponent.LoadComponentByFi([fiIsLine, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
end;
|
||
if SCSLineComponent.IsLine = biFalse then
|
||
Exit; //// EXIT /////
|
||
|
||
//SCSLineComponent.LoadInterfaces(-1, false);
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>
|
||
if SCSLineComponent.Interfaces.Count = 0 then
|
||
SCSLineComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to SCSLineComponent.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := SCSLineComponent.Interfaces[i];
|
||
if Interfac.TypeI = itFunctional then
|
||
if Not((Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue)) then
|
||
SCSLineComponent.Interfaces[i] := nil;
|
||
end;
|
||
SCSLineComponent.Interfaces.Pack;
|
||
if SCSLineComponent.Interfaces.Count > 0 then
|
||
begin
|
||
//if Not SCSLineComponent.HaveInterfaceByType(itFunctional) then
|
||
// Exit; ///// EXIT /////
|
||
|
||
CanConWithPointObj := CanConnectWithObject(SCSPointObject);
|
||
if (CanConWithPointObj = true) and (SCSFinalObject <> nil) then
|
||
begin
|
||
CanConWithFinalObj := CanConnectWithObject(SCSFinalObject);
|
||
if CanConWithFinalObj = true then
|
||
Result := true
|
||
else
|
||
if SCSFinalObject.SCSComponents.Count = 0 then
|
||
Result := true;
|
||
end
|
||
else
|
||
if CanConWithPointObj then
|
||
Result := true;
|
||
end;
|
||
finally
|
||
SCSLineComponent.Free;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.CanConnectLineComponWithObjects: '+E.Message);
|
||
end;
|
||
|
||
{
|
||
try
|
||
SCSObject1 := TSCSCatalog.Create(GForm);
|
||
SCSObject2 := TSCSCatalog.Create(GForm);
|
||
SCSLineComponent := TSCSComponent.Create(TForm(F_NormBase));
|
||
|
||
try
|
||
CanConWithObj1 := false;
|
||
CanConWithObj2 := false;
|
||
|
||
|
||
SCSObject1.ID := TF_Main(GForm).DM.GetIDCatalogByIDFigure(AIDFigure1);
|
||
//SCSObject1.LoadCatalogByIDFigure(AIDFigure1, false, false);
|
||
//if SCSObject1.ItemType <> itSCSConnector then
|
||
// Exit; //// EXIT ////
|
||
SCSObject2.ID := TF_Main(GForm).DM.GetIDCatalogByIDFigure(AIDFigure2);
|
||
//SCSObject2.LoadCatalogByIDFigure(AIDFigure2, false, false);
|
||
//if SCSObject2.ItemType <> itSCSConnector then
|
||
// Exit; //// EXIT ////
|
||
|
||
//SCSLineComponent.LoadComponentByID(AIDNBLineCompon, false);
|
||
SCSLineComponent.ID := AIDNBLineCompon;
|
||
SCSLineComponent.LoadComponentByFi([fiIsLine, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID]);
|
||
if SCSLineComponent.IsLine = biFalse then
|
||
Exit; //// EXIT /////
|
||
|
||
//SCSLineComponent.LoadInterfaces(-1, false);
|
||
SCSLineComponent.LoadInterfacesByFi([fiID, fiIDInterface, fiTypeI,
|
||
fiGender, fiIsBusy, fiMultiple, fiSide]);
|
||
if Not SCSLineComponent.HaveInterfaceByType(itFunctional) then
|
||
Exit; ///// EXIT /////
|
||
|
||
CanConWithObj1 := CanConnectWithObject(SCSObject1);
|
||
if CanConWithObj1 = true then
|
||
begin
|
||
CanConWithObj2 := CanConnectWithObject(SCSObject2);
|
||
if CanConWithObj2 = true then
|
||
Result := true;
|
||
end;
|
||
finally
|
||
SCSObject1.Free;
|
||
SCSObject2.Free;
|
||
SCSLineComponent.Free;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.CanConnectLineComponWithObjects: '+E.Message);
|
||
end; }
|
||
end;
|
||
*)
|
||
|
||
|
||
function TF_ChoiceConnectSide.CanJoinComponsByCAD(ACompon1, ACompon2: TSCSComponent): Boolean;
|
||
var
|
||
SCSObject1: TSCSCatalog;
|
||
SCSObject2: TSCSCatalog;
|
||
begin
|
||
Result := false;
|
||
SCSObject1 := ACompon1.GetFirstParentCatalog;
|
||
SCSObject2 := ACompon2.GetFirstParentCatalog;
|
||
if (SCSObject1 <> nil) and (SCSObject1 <> nil) then
|
||
Result := CheckCanConnectInCAD(SCSObject1.ListID, SCSObject2.ListID, SCSObject1.SCSID, SCSObject2.SCSID);
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.ConnectCrossWithModules(ACrossComponent,
|
||
AComponFrom, AComponTo: TSCSComponent; ANoCopyCrossAsFirst: Boolean): TCrossConnectRes;
|
||
var
|
||
ComponListFrom: TSCSComponents;
|
||
ComponListTo: TSCSComponents;
|
||
ParentCompon: TSCSComponent;
|
||
ObjectOwner: TSCSCatalog;
|
||
ObjectOwnerNode: TTreeNode;
|
||
CrossComponentTemplate: TSCSComponent;
|
||
CrossComponentForConnect: TSCSComponent;
|
||
SCSComponFrom: TSCSComponent;
|
||
SCSComponTo: TSCSComponent;
|
||
i, j, k: Integer;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
ptrComplect: PComplect;
|
||
Interfac: TSCSInterface;
|
||
|
||
ImportFromNBCount: Integer;
|
||
NewIDCompon: Integer;
|
||
WasCoping: Boolean;
|
||
CanTryJoinWithBothCompons: Boolean;
|
||
CanJoinToSeveralCompons: Boolean;
|
||
begin
|
||
Result.Successful := false;
|
||
Result.ConnectCount := 0;
|
||
CanTryJoinWithBothCompons := true;
|
||
if Not (Assigned(ACrossComponent) and Assigned(AComponFrom) and Assigned(AComponTo)) then
|
||
Exit; ///// EXIT /////
|
||
|
||
ImportFromNBCount := 0;
|
||
CrossComponentForConnect := nil;
|
||
|
||
CrossComponentTemplate := TSCSComponent.Create(ACrossComponent.ActiveForm);
|
||
CrossComponentTemplate.Assign(ACrossComponent, true, true);
|
||
|
||
ComponListFrom := TSCSComponents.Create(false);
|
||
ComponListTo := TSCSComponents.Create(false);
|
||
|
||
//ParentCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(PObjectData(ParentNode.Data).ObjectID);
|
||
ParentCompon := TSCSComponent(AComponFrom.Parent);
|
||
ObjectOwnerNode := nil;
|
||
ObjectOwner := AComponFrom.GetFirstParentCatalog;
|
||
if ObjectOwner <> nil then
|
||
ObjectOwnerNode := ObjectOwner.TreeViewNode;
|
||
if Assigned(ParentCompon) and Assigned(ObjectOwner) then
|
||
try
|
||
//ParentComponNode := ParentCompon.TreeViewNode;
|
||
ComponListFrom.Add(AComponFrom);
|
||
ComponListFrom.Assign(AComponFrom.ChildReferences, laOr);
|
||
ComponListTo.Add(AComponTo);
|
||
ComponListTo.Assign(AComponTo.ChildReferences, laOr);
|
||
|
||
ComponListFrom.Pack;
|
||
ComponListTo.Pack;
|
||
for i := 0 to ComponListFrom.Count - 1 do
|
||
ComponListFrom[i].ServCanConnect := true;
|
||
for i := 0 to ComponListTo.Count - 1 do
|
||
ComponListTo[i].ServCanConnect := true;
|
||
|
||
if CrossComponentTemplate.Interfaces.Count = 0 then
|
||
CrossComponentTemplate.LoadInterfaces(-1, false);
|
||
|
||
if ObjectOwnerNode <> nil then
|
||
while CanTryJoinWithBothCompons do
|
||
begin
|
||
CanTryJoinWithBothCompons := false;
|
||
AComponFrom.ServCanConnect := true;
|
||
AComponTo.ServCanConnect := true;
|
||
|
||
for i := 0 to ComponListFrom.Count - 1 do
|
||
begin
|
||
SCSComponFrom := ComponListFrom[i];
|
||
if CrossComponentTemplate.CheckJoinToSeveralCompons(SCSComponFrom, nil, false, true).CanConnect then
|
||
//if CrossComponentTemplate.EmConnectTo(SCSComponFrom) then
|
||
begin
|
||
for j := 0 to ComponListTo.Count - 1 do
|
||
begin
|
||
SCSComponTo := ComponListTo[j];
|
||
//(SCSComponTo.ServCanConnect) and
|
||
//Tolik 30/08/2021 --
|
||
// CrossComponentTemplate.CheckJoinToSeveralCompons(SCSComponFrom, SCSComponTo, false, true).CanConnect then
|
||
CanJoinToSeveralCompons := CrossComponentTemplate.CheckJoinToSeveralCompons(SCSComponFrom, SCSComponTo, false, true).CanConnect;
|
||
if CanJoinToSeveralCompons then
|
||
//if (SCSComponTo.ServCanConnect) and (CrossComponentTemplate.EmConnectTo(SCSComponTo)) then
|
||
begin
|
||
CrossComponentForConnect := nil;
|
||
WasCoping := false;
|
||
if (Result.ConnectCount > 0) or (Not ANoCopyCrossAsFirst) then
|
||
begin
|
||
NewIDCompon := TF_MAIN(GForm).CopyComponentFromNbToPm(CrossComponentTemplate.ActiveForm, GForm, nil, ObjectOwnerNode, CrossComponentTemplate.ID, ckCompon, false);
|
||
CrossComponentForConnect := TF_MAIN(GForm).GSCSBase.CurrProject.GetComponentFromReferences(NewIDCompon);
|
||
WasCoping := true;
|
||
Inc(ImportFromNBCount);
|
||
end
|
||
else
|
||
if (CrossComponentTemplate.ActiveForm = AComponFrom.ActiveForm) and
|
||
(CrossComponentTemplate.ActiveForm = AComponTo.ActiveForm) then
|
||
CrossComponentForConnect := ACrossComponent;
|
||
|
||
if Assigned(CrossComponentForConnect) then
|
||
begin
|
||
if WasCoping then
|
||
begin
|
||
//NewComponNode := TF_Main(GForm).FindComponOrDirInTree(NewIDCompon, true);
|
||
//if Assigned(NewComponNode) then
|
||
// PObjectData(NewComponNode).ID_CompRel := ptrComplect.ID;
|
||
|
||
//ptrComplect := ParentCompon.ComplectWithOnlyObject(CrossComponentForConnect);
|
||
//ptrComplect.ID := TF_Main(GForm).AppendToComponRel(ParentCompon.ID, CrossComponentForConnect.ID, 1, cntComplect);
|
||
//if Assigned(CrossComponentForConnect.TreeViewNode) then
|
||
// PObjectData(CrossComponentForConnect.TreeViewNode.Data).ID_CompRel := ptrComplect.ID;
|
||
|
||
|
||
CrossComponentForConnect.DisConnectFromParent;
|
||
ptrComplect := ParentCompon.ComplectWith(CrossComponentForConnect);
|
||
//31.01.2013 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.PointComplIndexingMode <> pcimInProject then
|
||
begin
|
||
CrossComponentForConnect.MarkID := 0; //31.01.2013
|
||
CrossComponentForConnect.MarkID := TF_Main(GForm).GenComponentMarkID(CrossComponentForConnect);
|
||
CrossComponentForConnect.NameMark := TF_Main(GForm).MakeNameMarkComponent(CrossComponentForConnect, ObjectOwner, false);
|
||
end;
|
||
end;
|
||
|
||
//CrossComponentTemplate.EmDisconnect(SCSComponFrom);
|
||
//CrossComponentTemplate.EmDisconnect(SCSComponTo);
|
||
|
||
ConnectInterfRes := CrossComponentForConnect.JoinTo(SCSComponFrom, -1, -1, false, nil, nil, -1, true, false, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
ConnectInterfRes := CrossComponentForConnect.JoinTo(SCSComponTo, -1, -1, false, nil, nil, -1, true, false, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Inc(Result.ConnectCount);
|
||
CanTryJoinWithBothCompons := true;
|
||
end;
|
||
|
||
CrossComponentTemplate.Interfaces.Clear; //ClearList(CrossComponentTemplate.Interfaces);
|
||
//CrossComponentTemplate.LoadInterfaces(-1, false);
|
||
CrossComponentTemplate.AssignInterfaces(ACrossComponent.Interfaces, true, true);
|
||
if CrossComponentTemplate.Interfaces.Count = 0 then
|
||
CrossComponentTemplate.LoadInterfaces(-1, false);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for k := 0 to CrossComponentTemplate.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := CrossComponentTemplate.Interfaces[k];
|
||
if Interfac.TypeI = itFunctional then
|
||
if Interfac.KolvoBusy > 0 then
|
||
begin
|
||
Interfac.IsBusy := biFalse;
|
||
Interfac.KolvoBusy := 0;
|
||
Interfac.IOfIRelOut.Clear;
|
||
end;
|
||
end;
|
||
|
||
//SCSComponFrom.ServCanConnect := false;
|
||
//SCSComponTo.ServCanConnect := false;
|
||
Break; //// BREAK ////
|
||
end;
|
||
//else
|
||
//TF_Main(GForm).DelCompon(NewCompon, true, true, true);
|
||
end;
|
||
//CrossComponentTemplate.EmDisconnect(SCSComponTo);
|
||
end;
|
||
end;
|
||
//CrossComponentTemplate.EmDisconnect(SCSComponFrom);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
if ImportFromNBCount > 0 then
|
||
TF_Main(GForm).F_ChoiceConnectSide.OnAfterConnectCompons(ParentCompon, CrossComponentForConnect);
|
||
|
||
if Result.ConnectCount > 0 then
|
||
Result.Successful := true;
|
||
finally
|
||
ComponListFrom.Free;
|
||
ComponListTo.Free;
|
||
CrossComponentTemplate.Free;
|
||
end;
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.ConnectObjectCompons(AObject1, AObject2: TSCSCatalog;
|
||
ASideObject1, ASideObject2: Integer; AOnlyNewLineCompon: Boolean): Boolean;
|
||
var
|
||
i, j: Integer;
|
||
ConnectInterfRes: TConnectInterfRes;
|
||
InterfCount1, InterfCount2: Integer;
|
||
InterfCountToConnect: Integer;
|
||
MaxConnectInterfaces: Integer;
|
||
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
ConnCompon1: TSCSComponent;
|
||
ConnCompon2: TSCSComponent;
|
||
WasBreak: Boolean;
|
||
Catalog1, Catalog2: TSCSCatalog;
|
||
|
||
// Tolik
|
||
{ function GetInterfCountBySide(ACompon: TSCSComponent; ASide: Integer): Integer;
|
||
var i: Integer;
|
||
Interfac: TSCSInterface;
|
||
ResCount: Integer;
|
||
begin
|
||
Result := 0;
|
||
ResCount := 0;
|
||
for i := 0 to ACompon.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := ACompon.Interfaces[i];
|
||
if ((Interfac.Side = ASide) and (Interfac.TypeI = itFunctional)) then
|
||
begin
|
||
if Interfac.Kolvo = 1 then
|
||
begin
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
ResCount := ResCount + 1;
|
||
end
|
||
else
|
||
if Interfac.Kolvo > 1 then begin
|
||
if Interfac.Multiple = biTrue then
|
||
ResCount := ResCount + Interfac.Kolvo
|
||
else
|
||
ResCount := ResCount + (Interfac.Kolvo - Interfac.KolvoBusy);
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
Result := ResCount;
|
||
end;}
|
||
//
|
||
|
||
function GetInterfCountBySide(ACompon: TSCSComponent; ASide: Integer): Integer;
|
||
var i: Integer;
|
||
Interfac: TSCSInterface;
|
||
ResCount: Integer;
|
||
begin
|
||
Result := 0;
|
||
ResCount := 0;
|
||
for i := 0 to ACompon.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := ACompon.Interfaces[i];
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
if Interfac.Side = ASide then
|
||
ResCount := ResCount + 1;
|
||
end;
|
||
Result := ResCount;
|
||
end;
|
||
|
||
function ConnectComponents(ACompon1, ACompon2: TSCSComponent; AObjSide1, AObjSide2: Integer): Boolean;
|
||
var ConnectInterfRes: TConnectInterfRes;
|
||
CanJoin: Boolean;
|
||
begin
|
||
Result := false;
|
||
CanJoin := True;
|
||
if (ACompon1 <> nil) and (ACompon2 <> nil) then
|
||
begin
|
||
//Tolik
|
||
if F_PEAutoTraceDialog.FromAutoTraceDialog then
|
||
begin
|
||
if (F_PEAutoTraceDialog.IgnoreExistingCable.Checked and F_PEAutoTraceDialog.IgnoreExistingCable.Visible) then
|
||
begin
|
||
if ACompon1.IsLine = biTrue then
|
||
begin
|
||
if F_PEAutoTraceDialog.LastAddedCableIDList.IndexOf(ACompon1.ID) = -1 then
|
||
CanJoin := False;
|
||
end;
|
||
|
||
if ACompon2.IsLine = biTrue then
|
||
begin
|
||
if F_PEAutoTraceDialog.LastAddedCableIDList.IndexOf(ACompon2.ID) = -1 then
|
||
CanJoin := False;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
if ACompon1.IsLine = biTrue then
|
||
begin
|
||
if ACompon1.Cypher <> F_PEAutoTraceDialog.Cypher then
|
||
CanJoin := False;
|
||
end;
|
||
|
||
if ACompon2.IsLine = biTrue then
|
||
begin
|
||
if ACompon2.Cypher <> F_PEAutoTraceDialog.Cypher then
|
||
CanJoin := False;
|
||
end;
|
||
end;
|
||
end;
|
||
if CanJoin then
|
||
begin
|
||
if ACompon1.isLine = biTrue then
|
||
ConnectInterfRes := ACompon1.JoinTo(ACompon2, AObjSide1, AObjSide2);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
Result := true;
|
||
(*
|
||
ACompon1.ServInterfCntToConnect := ACompon1.ServInterfCntToConnect - ConnectInterfRes.ConnectInterfCount;
|
||
ACompon2.ServInterfCntToConnect := ACompon2.ServInterfCntToConnect - ConnectInterfRes.ConnectInterfCount;
|
||
|
||
if (ACompon1.ServInterfCntToConnect <= 0) {and Not(ACompon1.HaveMultipleInterface)} then
|
||
ACompon1.ServCanConnect := false;
|
||
if (ACompon2.ServInterfCntToConnect <= 0) {and Not(ACompon2.HaveMultipleInterface)} then
|
||
ACompon2.ServCanConnect := false; *)
|
||
end;
|
||
{if ACompon1.Interfaces.Count = 0 then
|
||
ACompon1.Clear;
|
||
if ACompon2.Interfaces.Count = 0 then
|
||
ACompon2.Clear; }
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function CheckJoinToJoinedObjectIfMultiple(AComponToJoin: TSCSComponent; AObjectToJoin: TSCSCatalog): Boolean;
|
||
var
|
||
i: Integer;
|
||
JoinedCompon: TSCSComponent;
|
||
begin
|
||
Result := false;
|
||
if AComponToJoin.HaveMultipleInterface then
|
||
for i := 0 to AComponToJoin.JoinedComponents.Count - 1 do
|
||
begin
|
||
JoinedCompon := AComponToJoin.JoinedComponents[i];
|
||
if JoinedCompon.GetFirstParentCatalog = AObjectToJoin then
|
||
begin
|
||
Result := true;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function CheckComponForCanConnect(AComponent: TSCSComponent; AComponObject: TSCSCatalog): Boolean;
|
||
begin
|
||
Result := false;
|
||
if AComponent.ServCanConnect then
|
||
case AComponent.IsLine of
|
||
biTrue:
|
||
if (Not AOnlyNewLineCompon) or (AComponObject.LastAddedComponent = AComponent) then
|
||
Result := true;
|
||
biFalse:
|
||
Result := true;
|
||
end
|
||
else
|
||
//30.01.2009 if IsTrunkComponent(AComponent) then
|
||
//30.01.2009 Result := true;
|
||
if GetParentComponByOneCompTypeSysName(AComponent, GCompTypeSysNameComplexCompons) <> nil then
|
||
Result := true;
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
Catalog1 := AObject1; //TSCSCatalog.Create(GForm);
|
||
Catalog2 := AObject2; //TSCSCatalog.Create(GForm);
|
||
|
||
if (Catalog1.ItemType = itSCSConnector) and (Catalog2.ItemType = itSCSLine) then
|
||
begin
|
||
ExchangeObjects(Catalog1, Catalog2);
|
||
ExchangeIntegers(ASideObject1, ASideObject2);
|
||
end;
|
||
// Tolik
|
||
if F_PEAutoTraceDialog.FromAutoTraceDialog then
|
||
begin
|
||
if F_PEAutoTraceDialog.NewRaspredBox then
|
||
begin
|
||
// !!!! <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//Catalog1.Assign(AObj1);
|
||
//Catalog2.Assign(AObj2);
|
||
//FiltreInterfaces(Catalog1, AObjSide1);
|
||
//FiltreInterfaces(Catalog2, AObjSide2);
|
||
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
{ for i := 0 to Catalog1.ComponentReferences.Count - 1 do
|
||
if Assigned(Catalog1.ComponentReferences[i]) then
|
||
begin}
|
||
SCSComponent1 := Catalog1.LastAddedComponent;
|
||
if (SCSComponent1 <> nil) and (F_PEAutoTraceDialog.LastAddedCableIDList.IndexOf(SCSComponent1.ID) <> -1) then
|
||
begin
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
WasBreak := false;
|
||
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent1, Catalog1) or
|
||
(AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 220<32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
if CheckJoinToJoinedObjectIfMultiple(SCSComponent1, Catalog2) then
|
||
SCSComponent1.ServCanConnect := false
|
||
else
|
||
for j := 0 to Catalog2.ComponentReferences.Count - 1 do
|
||
if Assigned(Catalog2.ComponentReferences[j]) then
|
||
begin
|
||
SCSComponent2 := Catalog2.ComponentReferences.Items[j];
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent2, Catalog2)
|
||
or (AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//if CheckJoinToJoinedObjectIfMultiple(SCSComponent2, Catalog1) then
|
||
// SCSComponent2.ServCanConnect := false
|
||
//else
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
InterfCount1 := GetInterfCountBySide(SCSComponent1, ASideObject1);
|
||
InterfCount2 := GetInterfCountBySide(SCSComponent2, ASideObject2);
|
||
if InterfCount1 > InterfCount2 then
|
||
InterfCountToConnect := InterfCount1
|
||
else
|
||
InterfCountToConnect := InterfCount2;
|
||
|
||
ConnectInterfRes := SCSComponent1.CheckJoinTo(SCSComponent2, ASideObject1, ASideObject2);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ConnectInterfRes.ConnectInterfCount = InterfCountToConnect) then
|
||
begin
|
||
//ConnCompon1 := SCSComponent1;
|
||
//ConnCompon2 := SCSComponent2;
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
|
||
{IGOR} //D0000006311
|
||
if Result and (SCSComponent1.ServInterfCntToConnect > 0)
|
||
and Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne
|
||
and ((SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable))
|
||
and (SCSComponent1.IsLine <> SCSComponent2.IsLine) then
|
||
begin
|
||
Result := true;
|
||
end
|
||
else
|
||
begin
|
||
WasBreak := true;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{IGOR} //D0000006311
|
||
//if F_AutoTraceConnectOrder.rbOnePortOrMoreToOne.Checked then
|
||
if Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne then
|
||
if (SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable) then
|
||
if SCSComponent1.IsLine <> SCSComponent2.IsLine then
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
|
||
end;
|
||
|
||
if ConnectInterfRes.ConnectInterfCount > MaxConnectInterfaces then
|
||
begin
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ConnCompon1 := SCSComponent1;
|
||
ConnCompon2 := SCSComponent2;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if WasBreak then
|
||
Break; ///// BREAK /////
|
||
end;
|
||
//if WasBreak then
|
||
// Break; ///// BREAK /////
|
||
end;
|
||
//if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) then
|
||
{IGOR} //D0000006311
|
||
if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) and Not Result then
|
||
begin
|
||
if ConnectComponents(ConnCompon1, ConnCompon2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
Catalog1 := AObject1;
|
||
if Catalog1.IsLine = biTrue then
|
||
Catalog2 := AObject2
|
||
else
|
||
begin
|
||
Catalog1 := AObject2;
|
||
if Catalog1.IsLine = biTrue then
|
||
Catalog2 := AObject1
|
||
else
|
||
Exit;
|
||
end;
|
||
|
||
if (Catalog1.ItemType = itSCSConnector) and (Catalog2.ItemType = itSCSLine) then
|
||
begin
|
||
ExchangeObjects(Catalog1, Catalog2);
|
||
ExchangeIntegers(ASideObject1, ASideObject2);
|
||
end;
|
||
|
||
//Catalog1.Assign(AObj1);
|
||
//Catalog2.Assign(AObj2);
|
||
//FiltreInterfaces(Catalog1, AObjSide1);
|
||
//FiltreInterfaces(Catalog2, AObjSide2);
|
||
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
for i := 0 to Catalog1.ComponentReferences.Count - 1 do
|
||
begin
|
||
if Assigned(Catalog1.ComponentReferences[i]) then
|
||
begin
|
||
SCSComponent1 := Catalog1.ComponentReferences.Items[i];
|
||
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
WasBreak := false;
|
||
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent1, Catalog1) or
|
||
(AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 220<32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
if CheckJoinToJoinedObjectIfMultiple(SCSComponent1, Catalog2) then
|
||
SCSComponent1.ServCanConnect := false
|
||
else
|
||
begin
|
||
if Assigned(Catalog2.ComponentReferences[Catalog2.ComponentReferences.Count - 1]) then
|
||
begin
|
||
SCSComponent2 := Catalog2.ComponentReferences.Items[Catalog2.ComponentReferences.Count - 1];
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent2, Catalog2)
|
||
or (AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//if CheckJoinToJoinedObjectIfMultiple(SCSComponent2, Catalog1) then
|
||
// SCSComponent2.ServCanConnect := false
|
||
//else
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
InterfCount1 := GetInterfCountBySide(SCSComponent1, ASideObject1);
|
||
InterfCount2 := GetInterfCountBySide(SCSComponent2, ASideObject2);
|
||
if InterfCount1 > InterfCount2 then
|
||
InterfCountToConnect := InterfCount1
|
||
else
|
||
InterfCountToConnect := InterfCount2;
|
||
|
||
ConnectInterfRes := SCSComponent1.CheckJoinTo(SCSComponent2, ASideObject1, ASideObject2);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ConnectInterfRes.ConnectInterfCount = InterfCountToConnect) then
|
||
begin
|
||
//ConnCompon1 := SCSComponent1;
|
||
//ConnCompon2 := SCSComponent2;
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
|
||
{IGOR} //D0000006311
|
||
if Result and (SCSComponent1.ServInterfCntToConnect > 0)
|
||
and Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne
|
||
and ((SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable))
|
||
and (SCSComponent1.IsLine <> SCSComponent2.IsLine) then
|
||
begin
|
||
Result := true;
|
||
end
|
||
else
|
||
begin
|
||
WasBreak := true;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{IGOR} //D0000006311
|
||
//if F_AutoTraceConnectOrder.rbOnePortOrMoreToOne.Checked then
|
||
if Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne then
|
||
if (SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable) then
|
||
if SCSComponent1.IsLine <> SCSComponent2.IsLine then
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
|
||
end;
|
||
|
||
if ConnectInterfRes.ConnectInterfCount > MaxConnectInterfaces then
|
||
begin
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ConnCompon1 := SCSComponent1;
|
||
ConnCompon2 := SCSComponent2;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if WasBreak then
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end;
|
||
//if WasBreak then
|
||
// Break; ///// BREAK /////
|
||
end;
|
||
//if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) then
|
||
{IGOR} //D0000006311
|
||
if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) and Not Result then
|
||
begin
|
||
if ConnectComponents(ConnCompon1, ConnCompon2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
end;
|
||
end;
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD>-<2D><> <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
|
||
// <20> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> 40x40 <20>40 8" <20> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 40x40".
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Catalog1.ComponentReferences <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if F_PEAutoTraceDialog.FromAutoTraceDialog then <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if result and GConnecntOnlyOneLineCompon then
|
||
break;
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
//Catalog1.Assign(AObj1);
|
||
//Catalog2.Assign(AObj2);
|
||
//FiltreInterfaces(Catalog1, AObjSide1);
|
||
//FiltreInterfaces(Catalog2, AObjSide2);
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
for i := 0 to Catalog1.ComponentReferences.Count - 1 do
|
||
if Assigned(Catalog1.ComponentReferences[i]) then
|
||
begin
|
||
SCSComponent1 := Catalog1.ComponentReferences.Items[i];
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
WasBreak := false;
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent1, Catalog1) or
|
||
(AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 220<32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
if CheckJoinToJoinedObjectIfMultiple(SCSComponent1, Catalog2) then
|
||
SCSComponent1.ServCanConnect := false
|
||
else
|
||
for j := 0 to Catalog2.ComponentReferences.Count - 1 do
|
||
if Assigned(Catalog2.ComponentReferences[j]) then
|
||
begin
|
||
SCSComponent2 := Catalog2.ComponentReferences.Items[j];
|
||
{IGOR} //D0000006292
|
||
if CheckComponForCanConnect(SCSComponent2, Catalog2)
|
||
or (AObject1.IsLine <> AObject2.isLine) then
|
||
begin
|
||
//if CheckJoinToJoinedObjectIfMultiple(SCSComponent2, Catalog1) then
|
||
// SCSComponent2.ServCanConnect := false
|
||
//else
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
InterfCount1 := GetInterfCountBySide(SCSComponent1, ASideObject1);
|
||
InterfCount2 := GetInterfCountBySide(SCSComponent2, ASideObject2);
|
||
if InterfCount1 > InterfCount2 then
|
||
InterfCountToConnect := InterfCount1
|
||
else
|
||
InterfCountToConnect := InterfCount2;
|
||
|
||
ConnectInterfRes := SCSComponent1.CheckJoinTo(SCSComponent2, ASideObject1, ASideObject2);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ConnectInterfRes.ConnectInterfCount = InterfCountToConnect) then
|
||
begin
|
||
//ConnCompon1 := SCSComponent1;
|
||
//ConnCompon2 := SCSComponent2;
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
|
||
{IGOR} //D0000006311
|
||
if Result and (SCSComponent1.ServInterfCntToConnect > 0)
|
||
and Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne
|
||
and ((SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable))
|
||
and (SCSComponent1.IsLine <> SCSComponent2.IsLine) then
|
||
begin
|
||
Result := true;
|
||
end
|
||
else
|
||
begin
|
||
WasBreak := true;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
{IGOR} //D0000006311
|
||
//if F_AutoTraceConnectOrder.rbOnePortOrMoreToOne.Checked then
|
||
if Not SCSComponent1.ProjectOwner.Setting.TraceOnePortToOne then
|
||
if (SCSComponent1.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent1.ComponentType.SysName = ctsnCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnOFCable)
|
||
or (SCSComponent2.ComponentType.SysName = ctsnCable) then
|
||
if SCSComponent1.IsLine <> SCSComponent2.IsLine then
|
||
if ConnectComponents(SCSComponent1, SCSComponent2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
end;
|
||
if ConnectInterfRes.ConnectInterfCount > MaxConnectInterfaces then
|
||
begin
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ConnCompon1 := SCSComponent1;
|
||
ConnCompon2 := SCSComponent2;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if WasBreak then
|
||
Break; ///// BREAK /////
|
||
end;
|
||
//if WasBreak then
|
||
// Break; ///// BREAK /////
|
||
end;
|
||
//if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) then
|
||
{IGOR} //D0000006311
|
||
if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) and Not Result then
|
||
begin
|
||
if ConnectComponents(ConnCompon1, ConnCompon2, ASideObject1, ASideObject2) then
|
||
if Result = false then
|
||
Result := true;
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
end;
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD>-<2D><> <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -
|
||
// <20> <20><><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> 40x40 <20>40 8" <20> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 40x40".
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> Catalog1.ComponentReferences <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if F_PEAutoTraceDialog.FromAutoTraceDialog then <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if result and GConnecntOnlyOneLineCompon then
|
||
break;
|
||
end;
|
||
end;
|
||
//if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) then
|
||
//begin
|
||
// Result := ConnectComponents(ConnCompon1, ConnCompon2, ASideObject1, ASideObject2);
|
||
//end;
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.ConnectObjects(AConnectObjectParams1, AConnectObjectParams2: Tlist): Boolean;
|
||
var CatalogList1: TSCSCatalogs;
|
||
CatalogList2: TSCSCatalogs;
|
||
//ptrConnectObjectParam1: PConnectObjectParam;
|
||
//ptrConnectObjectParam2: PConnectObjectParam;
|
||
|
||
//OnlyTraces1: Boolean;
|
||
//OnlyTraces2: Boolean;
|
||
//CanMakeCabling: Boolean;
|
||
//ObjectIDList: TList;
|
||
|
||
//SCSComponent1: TSCSComponent;
|
||
//SCSComponent2: TSCSComponent;
|
||
|
||
ComponCount1: Integer;
|
||
ComponCount2: Integer;
|
||
|
||
//ConnectListData: PConnectListData;
|
||
//ModRes: TModalResult;
|
||
//ConnectKind: TConnectKind;
|
||
//i, j, k, l: Integer;
|
||
|
||
//ConnectInterfRes: TConnectInterfRes;
|
||
{
|
||
procedure LoadCatalogInterfaces(var ACatalog: TSCSCatalog; ASide: Integer);
|
||
var ptrSCSComponent: PSCSComponent;
|
||
Interfac: TSCSInterface;
|
||
i, j: Integer;
|
||
CanTakeInterf: Boolean;
|
||
begin
|
||
ACatalog.LoadAllComponents(ACatalog.ID, false);
|
||
//ACatalog.LoadComponents(ACatalog.ID, false);
|
||
|
||
//ChangeSQLQuery(scsQSelect, ' selecet * from ');
|
||
for i := 0 to ACatalog.SCSComponents.Count - 1 do
|
||
begin
|
||
ptrSCSComponent := ACatalog.SCSComponents.Items[i];
|
||
ptrSCSComponent.LoadInterfaces(-1, false);
|
||
for j := 0 to ptrSCSComponent.Interfaces.Count - 1 do
|
||
begin
|
||
Interfac := ptrSCSComponent.Interfaces.Items[j];
|
||
CanTakeInterf := false;
|
||
case ptrSCSComponent.IsLine of
|
||
biTrue:
|
||
if Interfac.TypeI = itFunctional then
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
if (Interfac.Side > 0) and (Interfac.Side = ASide) then
|
||
CanTakeInterf := true;
|
||
biFalse:
|
||
if (Interfac.IsBusy = biFalse) or (Interfac.Multiple = biTrue) then
|
||
CanTakeInterf := true;
|
||
end;
|
||
|
||
if Not CanTakeInterf then
|
||
begin
|
||
FreeMem(Interfac);
|
||
ptrSCSComponent.Interfaces.Items[j] := nil;
|
||
end;
|
||
end;
|
||
ptrSCSComponent.Interfaces.Pack;
|
||
if ptrSCSComponent.Interfaces.Count = 0 then
|
||
begin
|
||
ptrSCSComponent.Free;
|
||
ACatalog.SCSComponents.Items[i] := nil;
|
||
end;
|
||
end;
|
||
ACatalog.SCSComponents.Pack;
|
||
end; }
|
||
|
||
|
||
|
||
(*
|
||
function ConnectComponents: Boolean;
|
||
var i, j, k, l: Integer;
|
||
MaxConnectInterfaces: Integer;
|
||
ptrConnCompon1: PSCSComponent;
|
||
ptrConnCompon2: PSCSComponent;
|
||
begin
|
||
Result := false;
|
||
for i := 0 to CatalogList1.Count - 1 do
|
||
begin
|
||
ptrCatalog1 := CatalogList1.Items[i];
|
||
for j := 0 to ptrCatalog1.SCSComponents.Count - 1 do
|
||
begin
|
||
ptrSCSComponent1 := ptrCatalog1.SCSComponents.Items[j];
|
||
|
||
ptrConnCompon1 := nil;
|
||
ptrConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
|
||
for k := 0 to CatalogList2.Count - 1 do
|
||
begin
|
||
ptrCatalog2 := CatalogList2.Items[k];
|
||
for l := 0 to ptrCatalog2.SCSComponents.Count - 1 do
|
||
begin
|
||
ptrSCSComponent2 := ptrCatalog2.SCSComponents.Items[l];
|
||
|
||
ConnectInterfRes := ConnectInterfaces(ptrSCSComponent1^, ptrSCSComponent2^, ConnectKind, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
if ConnectInterfRes.ConnectInterfCount > MaxConnectInterfaces then
|
||
if TF_Main(GForm).CanConnCompon(ptrSCSComponent1^, ptrSCSComponent2^, cntUnion) then
|
||
begin
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ptrConnCompon1 := ptrSCSComponent1;
|
||
ptrConnCompon2 := ptrSCSComponent2;
|
||
end;
|
||
|
||
{if ConnectInterfRes.ConnectInterfCount = MaxConnectInterfaces then
|
||
begin
|
||
if (ptrConnCompon1 <> nil) and (ptrConnCompon2 <> nil) then
|
||
begin
|
||
ConnectInterfRes := ConnectInterfaces(ptrConnCompon1.Interfaces, ptrConnCompon2.Interfaces, ConnectKind);
|
||
if ConnectInterfRes.CanConnect then
|
||
Result := true;
|
||
end;
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ptrConnCompon1 := ptrSCSComponent1;
|
||
ptrConnCompon2 := ptrSCSComponent2;
|
||
end; }
|
||
//end;
|
||
end;
|
||
end;
|
||
|
||
if (ptrConnCompon1 <> nil) and (ptrConnCompon2 <> nil) then
|
||
begin
|
||
ConnectInterfRes := ConnectInterfaces(ptrConnCompon1^, ptrConnCompon2^, ConnectKind);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
DefineObjectFullness(ptrCatalog1^.ID);
|
||
DefineObjectFullness(ptrCatalog2^.ID);
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end; *)
|
||
{
|
||
function GetNumSideByObject(AObject: TSCSCatalog; AConnectObjectParams: TList): Integer;
|
||
var i: Integer;
|
||
ptrConnectObjectParam: PConnectObjectParam;
|
||
begin
|
||
Result := -1;
|
||
for i := 0 to AConnectObjectParams.Count - 1 do
|
||
begin
|
||
ptrConnectObjectParam := AConnectObjectParams[i];
|
||
if ptrConnectObjectParam.IDObject = AObject.SCSID then
|
||
begin
|
||
Result := ptrConnectObjectParam.Side;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end; }
|
||
|
||
(*
|
||
function ConnectComponents(ACatalogList1, ACatalogList2: TSCSCatalogs; AObjParams1, AObjParams2: TList): Boolean;
|
||
var i, j, k, l: Integer;
|
||
InterfCountToConnect: Integer;
|
||
MaxConnectInterfaces: Integer;
|
||
ConnCompon1: TSCSComponent;
|
||
ConnCompon2: TSCSComponent;
|
||
WasBreak: Boolean;
|
||
Side1: Integer;
|
||
Side2: Integer;
|
||
begin
|
||
Side1 := -1;
|
||
Side2 := -1;
|
||
Result := false;
|
||
for i := 0 to ACatalogList1.Count - 1 do
|
||
begin
|
||
SCSCatalog1 := ACatalogList1.Items[i];
|
||
Side1 := GetNumSideByObject(SCSCatalog1, AObjParams1);
|
||
for j := 0 to SCSCatalog1.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent1 := SCSCatalog1.ComponentReferences.Items[j];
|
||
|
||
ConnCompon1 := nil;
|
||
ConnCompon2 := nil;
|
||
MaxConnectInterfaces := 0;
|
||
WasBreak := false;
|
||
|
||
if SCSComponent1.ServCanConnect then
|
||
for k := 0 to ACatalogList2.Count - 1 do
|
||
begin
|
||
SCSCatalog2 := ACatalogList2.Items[k];
|
||
Side2 := GetNumSideByObject(SCSCatalog2, AObjParams2);
|
||
for l := 0 to SCSCatalog2.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent2 := SCSCatalog2.ComponentReferences.Items[l];
|
||
if SCSComponent2.ServCanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
{if SCSComponent1.Interfaces.Count < SCSComponent2.Interfaces.Count then
|
||
InterfCountToConnect := SCSComponent1.Interfaces.Count
|
||
else
|
||
InterfCountToConnect := SCSComponent2.Interfaces.Count; }
|
||
if SCSComponent1.ServInterfCntToConnect > SCSComponent2.ServInterfCntToConnect then
|
||
InterfCountToConnect := SCSComponent1.ServInterfCntToConnect
|
||
else
|
||
InterfCountToConnect := SCSComponent2.ServInterfCntToConnect;
|
||
|
||
|
||
//ConnectInterfRes := ConnectInterfaces(SCSComponent1, SCSComponent2, Side1, Side2, ConnectKind, false, smtNone, true);
|
||
ConnectInterfRes := SCSComponent1.CheckJoinTo(SCSComponent2, Side1, Side2);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ConnectInterfRes.ConnectInterfCount = InterfCountToConnect then
|
||
begin
|
||
ConnCompon1 := SCSComponent1;
|
||
ConnCompon2 := SCSComponent2;
|
||
WasBreak := true;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
|
||
if ConnectInterfRes.ConnectInterfCount > MaxConnectInterfaces then
|
||
begin
|
||
MaxConnectInterfaces := ConnectInterfRes.ConnectInterfCount;
|
||
ConnCompon1 := SCSComponent1;
|
||
ConnCompon2 := SCSComponent2;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if WasBreak then
|
||
Break; ///// BREAK /////
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (ConnCompon1 <> nil) and (ConnCompon2 <> nil) then
|
||
begin
|
||
//ConnectInterfRes := ConnectInterfaces(ConnCompon1, ConnCompon2, Side1, Side2, ConnectKind, false, smtProtocol);
|
||
ConnectInterfRes := ConnCompon1.JoinTo(ConnCompon2, Side1, Side2);
|
||
if ConnectInterfRes.CanConnect then
|
||
Result := true;
|
||
|
||
ConnCompon1.ServInterfCntToConnect := ConnCompon1.ServInterfCntToConnect - ConnectInterfRes.ConnectInterfCount;
|
||
ConnCompon2.ServInterfCntToConnect := ConnCompon2.ServInterfCntToConnect - ConnectInterfRes.ConnectInterfCount;
|
||
|
||
if ConnCompon1.ServInterfCntToConnect = 0 then
|
||
ConnCompon1.ServCanConnect := false;
|
||
if ConnCompon2.ServInterfCntToConnect = 0 then
|
||
ConnCompon2.ServCanConnect := false;
|
||
|
||
{
|
||
if ConnCompon1.Interfaces.Count = 0 then
|
||
ConnCompon1.Clear;
|
||
if ConnCompon2.Interfaces.Count = 0 then
|
||
ConnCompon2.Clear; }
|
||
end;
|
||
end;
|
||
end;
|
||
end; *)
|
||
|
||
|
||
|
||
|
||
{function GetIsOnlyTraces(var ACatalogList: TList): Boolean;
|
||
var i: Integer;
|
||
SCSCatalog: TSCSCatalog;
|
||
ItemType: Integer;
|
||
begin
|
||
Result := true;
|
||
for i := 0 to ACatalogList.Count - 1 do
|
||
begin
|
||
SCSCatalog := ACatalogList.Items[i];
|
||
//if ptrCatalog.ItemType = 0 then
|
||
// ptrCatalog.LoadCatalogByID(ptrCatalog.ID, false);
|
||
|
||
ItemType := TF_Main(GForm).DM.GetCatalogIDItemType(SCSCatalog.ID, qmMemory);
|
||
if ItemType <> itSCSLine then
|
||
Result := false;
|
||
end;
|
||
end; }
|
||
|
||
{
|
||
function ConnectComponents(ACatalogList1, ACatalogList2: TSCSCatalogs; AObjParams1, AObjParams2: TList): Boolean;
|
||
var
|
||
i, j: Integer;
|
||
Side1: Integer;
|
||
Side2: Integer;
|
||
|
||
SCSCatalog1: TSCSCatalog;
|
||
SCSCatalog2: TSCSCatalog;
|
||
begin
|
||
Side1 := -1;
|
||
Side2 := -1;
|
||
Result := false;
|
||
for i := 0 to ACatalogList1.Count - 1 do
|
||
begin
|
||
SCSCatalog1 := ACatalogList1.Items[i];
|
||
Side1 := GetNumSideByObject(SCSCatalog1, AObjParams1);
|
||
for j := 0 to ACatalogList2.Count - 1 do
|
||
begin
|
||
SCSCatalog2 := ACatalogList2.Items[j];
|
||
Side2 := GetNumSideByObject(SCSCatalog2, AObjParams2);
|
||
|
||
if ConnectObjectCompons(SCSCatalog1, SCSCatalog2, Side1, Side2, false) then
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;}
|
||
|
||
function ConnectComponents(ACatalogList1, ACatalogList2: TSCSCatalogs; AObjParams1, AObjParams2: TList): Boolean;
|
||
var
|
||
i, j, k, l, m, n, q: Integer;
|
||
Side1: Integer;
|
||
Side2: Integer;
|
||
|
||
SCSCatalog1: TSCSCatalog;
|
||
SCSCatalog2: TSCSCatalog;
|
||
|
||
ObjectList: TSCSCatalogs;
|
||
ObjectSides: TIntList;
|
||
SCSObject: TSCSCatalog;
|
||
ObjectSide: Integer;
|
||
WasDel: Boolean;
|
||
CorrectPointObj: Boolean;
|
||
begin
|
||
Side1 := -1;
|
||
Side2 := -1;
|
||
Result := false;
|
||
|
||
CorrectPointObj := false;
|
||
ObjectList := TSCSCatalogs.Create(false);
|
||
ObjectSides := TIntList.Create;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ACatalogList1.Count - 1 do
|
||
begin
|
||
SCSObject := ACatalogList1.Items[i];
|
||
ObjectSide := GetNumSideByObject(SCSObject, AObjParams1);
|
||
ObjectList.Add(SCSObject);
|
||
ObjectSides.Add(ObjectSide);
|
||
end;
|
||
for i := 0 to ACatalogList2.Count - 1 do
|
||
begin
|
||
SCSObject := ACatalogList2.Items[i];
|
||
ObjectSide := GetNumSideByObject(SCSObject, AObjParams2);
|
||
ObjectList.Add(SCSObject);
|
||
ObjectSides.Add(ObjectSide);
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ACatalogList1.Count - 1 do
|
||
begin
|
||
SCSCatalog1 := ACatalogList1.Items[i];
|
||
Side1 := GetNumSideByObject(SCSCatalog1, AObjParams1);
|
||
for j := 0 to ACatalogList2.Count - 1 do
|
||
begin
|
||
SCSCatalog2 := ACatalogList2.Items[j];
|
||
Side2 := GetNumSideByObject(SCSCatalog2, AObjParams2);
|
||
|
||
if ConnectObjectCompons(SCSCatalog1, SCSCatalog2, Side1, Side2, false) then
|
||
Result := true;
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to ObjectList.Count - 1 do
|
||
begin
|
||
SCSCatalog1 := ObjectList[i];
|
||
if SCSCatalog1.ItemType = itSCSConnector then
|
||
begin
|
||
Side1 := ObjectSides[i];
|
||
for j := 0 to ObjectList.Count - 1 do
|
||
begin
|
||
SCSCatalog2 := ObjectList[j];
|
||
if SCSCatalog1 <> SCSCatalog2 then
|
||
if SCSCatalog2.ItemType = itSCSLine then
|
||
begin
|
||
|
||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.5, <20> <20><><EFBFBD><EFBFBD><EFBFBD> 2.5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for m := 0 to SCSCatalog1.SCSComponents.Count - 1 do
|
||
begin
|
||
//TODO <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> TERMINAL_BOX <20> <20><> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//if SCSCatalog1.SCSComponents[m].ComponentType.SysName = ctsnTerminalBox then
|
||
for n := 0 to SCSCatalog1.SCSComponents[m].Interfaces.Count - 1 do
|
||
begin
|
||
if SCSCatalog1.SCSComponents[m].Interfaces[n].TypeI = itFunctional then
|
||
if SCSCatalog1.SCSComponents[m].Interfaces[n].Gender = gtFeMale then
|
||
begin
|
||
CorrectPointObj := true;
|
||
break;
|
||
end;
|
||
end;
|
||
if CorrectPointObj then
|
||
begin
|
||
begin
|
||
for n := 0 to SCSCatalog2.SCSComponents.Count - 1 do
|
||
begin
|
||
WasDel := True;
|
||
WHile WasDel do
|
||
begin
|
||
WasDel := false;
|
||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for k := 0 to SCSCatalog2.SCSComponents[n].JoinedComponents.Count - 1 do
|
||
begin
|
||
if SCSCatalog2.SCSComponents[n].JoinedComponents[k] <> SCSCatalog1.SCSComponents[m] then
|
||
begin
|
||
for l := 0 to ObjectList.Count - 1 do
|
||
begin
|
||
for q := 0 to ObjectList[l].SCSComponents.Count - 1 do
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if SCSCatalog2.SCSComponents[n].JoinedComponents[k] = ObjectList[l].SCSComponents[q] then
|
||
begin
|
||
//<2F> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (CheckComponentsForSideSection(SCSCatalog2.SCSComponents[n].JoinedComponents[k]))and
|
||
(CheckComponentsForSideSection(ObjectList[l].SCSComponents[q])) then
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ((SCSCatalog2.SCSComponents[n].IDNetType in [3,{4,}5,7])and
|
||
(ObjectList[l].SCSComponents[q].IDNetType in [3,{4,}5,7])) then
|
||
begin
|
||
//Tolik
|
||
if not F_PEAutoTraceDialog.FromAutoTraceDialog then
|
||
begin
|
||
SCSCatalog2.SCSComponents[n].DisJoinFrom(ObjectList[l].SCSComponents[q]);
|
||
WasDel := true;
|
||
Break;
|
||
end
|
||
else
|
||
begin
|
||
// Tolik
|
||
if ( (TSCSComponent(SCSCatalog2.SCSComponents[n]).Cypher = F_PEAutoTraceDialog.Cypher) and
|
||
(TSCSComponent(ObjectList[l].SCSComponents[q]).Cypher = F_PEAutoTraceDialog.Cypher) ) then
|
||
begin
|
||
if ((F_PEAutoTraceDialog.IgnoreExistingCable.Visible) and
|
||
(not F_PEAutoTraceDialog.IgnoreExistingCable.Checked)) or
|
||
((F_PEAutoTraceDialog.IgnoreExistingCable.Visible) and
|
||
(F_PEAutoTraceDialog.IgnoreExistingCable.Checked) and
|
||
(SCSCatalog2.SCSComponents[n].id = SCSCatalog2.LastAddedComponent.ID) and
|
||
(ObjectList[l].SCSComponents[q].ID = TSCSCatalog(ObjectList[l]).ID)) then
|
||
begin
|
||
//
|
||
SCSCatalog2.SCSComponents[n].DisJoinFrom(ObjectList[l].SCSComponents[q]);
|
||
WasDel := true;
|
||
Break;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if WasDel then
|
||
Break;
|
||
end;
|
||
end;
|
||
if WasDel then
|
||
Break;
|
||
end;
|
||
end;
|
||
|
||
(* k := 0;
|
||
WHile k <= SCSCatalog2.SCSComponents[n].JoinedComponents.Count - 1 do
|
||
begin
|
||
WasDel := false;
|
||
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if SCSCatalog2.SCSComponents[n].JoinedComponents[k] <> SCSCatalog1.SCSComponents[m] then
|
||
begin
|
||
for l := 0 to ObjectList.Count - 1 do
|
||
for q := 0 to ObjectList[l].SCSComponents.Count - 1 do
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||
if SCSCatalog2.SCSComponents[n].JoinedComponents[k] = ObjectList[l].SCSComponents[q] then
|
||
begin
|
||
//<2F> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (CheckComponentsForSideSection(SCSCatalog2.SCSComponents[n].JoinedComponents[k]))and
|
||
(CheckComponentsForSideSection(ObjectList[l].SCSComponents[q])) then
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ((SCSCatalog2.SCSComponents[n].IDNetType in [3,4,5,7])and
|
||
(ObjectList[l].SCSComponents[q].IDNetType in [3,4,5,7])) then
|
||
begin
|
||
SCSCatalog2.SCSComponents[n].DisJoinFrom(ObjectList[l].SCSComponents[q]);
|
||
WasDel := true;
|
||
k := k - 1;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if not WasDel then
|
||
k := k+1;
|
||
end;
|
||
*)
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||
if ((ACatalogList1.IndexOf(SCSCatalog1) <> -1) and (ACatalogList1.IndexOf(SCSCatalog2) <> -1)) or
|
||
((ACatalogList2.IndexOf(SCSCatalog1) <> -1) and (ACatalogList2.IndexOf(SCSCatalog2) <> -1)) then
|
||
begin
|
||
Side2 := ObjectSides[j];
|
||
if ConnectObjectCompons(SCSCatalog1, SCSCatalog2, Side1, Side2, false) then
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
FreeAndNil(ObjectList);
|
||
FreeAndNil(ObjectSides);
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
try
|
||
//OnlyTraces1 := false;
|
||
//OnlyTraces2 := false;
|
||
//CanMakeCabling := false;
|
||
//ObjectIDList := nil;
|
||
|
||
CatalogList1 := GetCatalogList(AConnectObjectParams1, ComponCount1);
|
||
CatalogList2 := GetCatalogList(AConnectObjectParams2, ComponCount2);
|
||
try
|
||
//Tolik 20/06/2018 --
|
||
if ((CatalogList1 = nil) or (CatalogList2 = nil)) then
|
||
Exit
|
||
else
|
||
if (CatalogList1.Count = 0) or (CatalogList2.Count = 0) then
|
||
Exit; ///// EXIT /////
|
||
|
||
//ConnectKind := cnkVarious or cnkMaleMale;
|
||
//GConnectKind := ConnectKind;
|
||
|
||
//*** <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ComponCount1 <= ComponCount2 then
|
||
Result := ConnectComponents(CatalogList1, CatalogList2, AConnectObjectParams1, AConnectObjectParams2)
|
||
else
|
||
Result := ConnectComponents(CatalogList2, CatalogList1, AConnectObjectParams2, AConnectObjectParams1);
|
||
{
|
||
while Result do
|
||
begin
|
||
if ComponCount1 <= ComponCount2 then
|
||
Result := ConnectComponents(CatalogList1, CatalogList2, AConnectObjectParams1, AConnectObjectParams2)
|
||
else
|
||
Result := ConnectComponents(CatalogList2, CatalogList1, AConnectObjectParams2, AConnectObjectParams1);
|
||
end;
|
||
}
|
||
|
||
{
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (CatalogList1.Count > 1) or (CatalogList2.Count > 1) then
|
||
begin
|
||
OnlyTraces1 := GetIsOnlyTraces(CatalogList1);
|
||
if OnlyTraces1 then
|
||
OnlyTraces2 := GetIsOnlyTraces(CatalogList2);
|
||
if OnlyTraces1 and OnlyTraces2 then
|
||
CanMakeCabling := true;
|
||
end;
|
||
|
||
|
||
case CanMakeCabling of
|
||
true:
|
||
begin
|
||
ObjectIDList := TList.Create;
|
||
ObjectIDList.Assign(AConnectObjectParams1, laOr);
|
||
ObjectIDList.Assign(AConnectObjectParams2, laOr);
|
||
Result := MakeCabling(ObjectIDList);
|
||
end;
|
||
false:
|
||
//*** <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ComponCount1 <= ComponCount2 then
|
||
Result := ConnectComponents(CatalogList1, CatalogList2)
|
||
else
|
||
Result := ConnectComponents(CatalogList2, CatalogList1);
|
||
end; }
|
||
finally
|
||
//FreeCatalogList(CatalogList1);
|
||
//FreeCatalogList(CatalogList2);
|
||
if CatalogList1 <> nil then
|
||
CatalogList1.Free;
|
||
if CatalogList2 <> nil then
|
||
CatalogList2.Free;
|
||
//FreeList(ObjectIDList);
|
||
|
||
//FreeList(AConnectObjectParams1);
|
||
//FreeList(AConnectObjectParams2);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ListView_Compons1, ListView_Compons2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
//ListView_Compons1.Items.Clear;
|
||
//ListView_Compons2.Items.Clear;
|
||
//FreeToConectListView(ListView_ToConnect);
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.ConnectObjects: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
function TF_ChoiceConnectSide.ConnectObjectsByWay(AWay: TIntList; AFigures, ASCSObjs: TList; APosList: TIntList = nil; aConsiderBoxAndRack: Boolean=false): Boolean;
|
||
var WayObjects: TSCSCatalogs;
|
||
SCSObject: TSCSCatalog;
|
||
CADObject: TObject;
|
||
CurrObj: TSCSCatalog;
|
||
PrevObj: TSCSCatalog;
|
||
PrevPrevObj: TSCSCatalog;
|
||
SCSCompon: TSCSComponent;
|
||
//SCSCompon1: TSCSComponent;
|
||
//SCSCompon2: TSCSComponent;
|
||
ConnectKind: TConnectKind;
|
||
WasConnect: Boolean;
|
||
i, j: Integer;
|
||
|
||
ptrConnObjSides: PConnectedObjectsSides;
|
||
ptrPrevConnObjSides: PConnectedObjectsSides;
|
||
ObjectSidesList: TList;
|
||
|
||
SCSList: TSCSList;
|
||
|
||
FirstPointObject: TSCSCatalog;
|
||
LastPointObject: TSCSCatalog;
|
||
FirstPointPort: TSCSInterface;
|
||
LastPointPort: TSCSInterface;
|
||
FirstPointPortInterfCount: Integer;
|
||
LastPointPortInterfCount: Integer;
|
||
MaxInterfCountToConnect: Integer;
|
||
|
||
SCSLineComponents: TSCSComponents;
|
||
FirstLineComponent: TSCSComponent;
|
||
LastLineComponent: TSCSComponent;
|
||
FirstLineComponentPos: Integer;
|
||
LastLineComponentPos: Integer;
|
||
FirstLineComponentSide: Integer;
|
||
LastLineComponentSide: Integer;
|
||
WasJoinedToEndPoints: Boolean;
|
||
FirstLineComponentInterfaces: TSCSInterfaces;
|
||
LastLineComponentInterfaces: TSCSInterfaces;
|
||
|
||
FirstPointInterface: TSCSInterface;
|
||
LastPointInterface: TSCSInterface;
|
||
|
||
//02.07.2013 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FirstPointCompon, LastPointCompon, FirstPointTopCompon, LastPointTopCompon: TSCSComponent;
|
||
FirstPointInterfaces, LastPointInterfaces: TSCSInterfaces;
|
||
|
||
function FindConnObjSides(AIDObj1, AIDObj2: Integer): PConnectedObjectsSides;
|
||
var i: Integer;
|
||
ptrResConnObjSides: PConnectedObjectsSides;
|
||
begin
|
||
Result := nil;
|
||
for i := 0 to ObjectSidesList.Count - 1 do
|
||
begin
|
||
ptrResConnObjSides := ObjectSidesList[i];
|
||
if ((ptrResConnObjSides.IDObj1 = AIDObj1) and
|
||
(ptrResConnObjSides.IDObj2 = AIDObj2)) or
|
||
((ptrResConnObjSides.IDObj1 = AIDObj2) and
|
||
(ptrResConnObjSides.IDObj2 = AIDObj1)) then
|
||
begin
|
||
Result := ptrResConnObjSides;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function GetLineComponInterfacesForJoinToPoint(ALineComponent: TSCSComponent;
|
||
APointObject: TSCSCatalog; var AlineComponSide: Integer): TSCSInterfaces;
|
||
var
|
||
LineComponObject: TSCSCatalog;
|
||
ptrConnectedObjSides: PConnectedObjectsSides;
|
||
LineComponSide: Integer;
|
||
begin
|
||
Result := nil;
|
||
ptrConnectedObjSides := nil;
|
||
LineComponSide := -1;
|
||
LineComponObject := ALineComponent.GetFirstParentCatalog;
|
||
if LineComponObject <> nil then
|
||
ptrConnectedObjSides := FindConnObjSides(APointObject.ID, LineComponObject.ID);
|
||
if ptrConnectedObjSides <> nil then
|
||
begin
|
||
if ptrConnectedObjSides.IDObj1 = LineComponObject.ID then
|
||
LineComponSide := ptrConnectedObjSides.Side1
|
||
else
|
||
if ptrConnectedObjSides.IDObj2 = LineComponObject.ID then
|
||
LineComponSide := ptrConnectedObjSides.Side2;
|
||
if LineComponSide <> -1 then
|
||
begin
|
||
Result := GetComponInterfacesBySide(ALineComponent, LineComponSide, biFalse);
|
||
AlineComponSide := LineComponSide;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
Result := true;
|
||
try
|
||
WayObjects := TSCSCatalogs.Create(false);
|
||
ObjectSidesList := Tlist.Create;
|
||
SCSLineComponents := TSCSComponents.Create(false);
|
||
|
||
try
|
||
SCSList := nil;
|
||
SCSObject := nil;
|
||
PrevObj := nil;
|
||
|
||
FirstPointObject := nil;
|
||
LastPointObject := nil;
|
||
FirstLineComponent := nil;
|
||
LastLineComponent := nil;
|
||
|
||
FirstLineComponentPos := -1;
|
||
LastLineComponentPos := -1;
|
||
FirstPointInterface := nil;
|
||
LastPointInterface := nil;
|
||
|
||
for i := 0 to AWay.Count - 1 do
|
||
begin
|
||
PrevObj := SCSObject;
|
||
|
||
SCSObject := nil;
|
||
if ASCSObjs <> nil then
|
||
SCSObject := TSCSCatalog(ASCSObjs[i]) //08.11.2011
|
||
else
|
||
SCSObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(AWay[i]);
|
||
|
||
if SCSObject = nil then
|
||
begin
|
||
CADObject := nil;
|
||
if AFigures <> nil then
|
||
CADObject := TObject(AFigures[i]) //08.11.2011
|
||
else
|
||
CADObject := GetFigureByIDProj(AWay[i]);
|
||
|
||
if CADObject <> nil then
|
||
begin
|
||
if (CADObject is TConnectorObject) and (TConnectorObject(CADObject).FHouse <> nil) and
|
||
(TConnectorObject(CADObject).FHouse is THouse) then
|
||
SCSObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TConnectorObject(CADObject).FHouse.ID);
|
||
end;
|
||
end;
|
||
|
||
if Assigned(SCSObject) then
|
||
begin
|
||
if SCSList = nil then
|
||
SCSList := SCSObject.GetListOwner;
|
||
if SCSObject.ItemType = itSCSConnector then
|
||
begin
|
||
if i = 0 then
|
||
FirstPointObject := SCSObject;
|
||
if i = AWay.Count - 1 then
|
||
LastPointObject := SCSObject;
|
||
|
||
SCSObject.ReloadComponentReferences;
|
||
end
|
||
else
|
||
if SCSObject.ItemType = itSCSLine then
|
||
if SCSObject.LastAddedComponent <> nil then
|
||
begin
|
||
SCSLineComponents.Add(SCSObject.LastAddedComponent);
|
||
if APosList <> nil then
|
||
begin
|
||
if i = 1 then
|
||
FirstLineComponentPos := APosList[i];
|
||
if i = AWay.Count - 2 then
|
||
LastLineComponentPos := APosList[i];
|
||
end;
|
||
end;
|
||
|
||
WayObjects.Add(SCSObject);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Prevobj <> nil then
|
||
begin
|
||
//New(ptrConnObjSides);
|
||
GetMem(ptrConnObjSides, SizeOf(TConnectedObjectsSides));
|
||
ptrConnObjSides.IDObj1 := PrevObj.ID;
|
||
ptrConnObjSides.IDObj2 := SCSObject.ID;
|
||
|
||
GetSidesByConnectedFigures(PrevObj.ListID, SCSObject.ListID, PrevObj.SCSID, SCSObject.SCSID,
|
||
ptrConnObjSides^.Side1, ptrConnObjSides^.Side2);
|
||
ObjectSidesList.Add(ptrConnObjSides);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for j := 0 to SCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSCompon := SCSObject.ComponentReferences[j];
|
||
SCSCompon.DefineInterfCountToConnect;
|
||
end;
|
||
end;
|
||
end; // End for
|
||
//if FirstPointObject <> nil then
|
||
// FirstPointInterface := GetInterfaceFromConnObjectByTrunkPos(FirstPointObject.GetListOwner, FirstPointObject, FirstLineComponentPos);
|
||
// if LastPointObject <> nil then
|
||
// LastPointInterface := GetInterfaceFromConnObjectByTrunkPos(LastPointObject.GetListOwner, LastPointObject, LastLineComponentPos);
|
||
if SCSLineComponents.Count > 0 then
|
||
begin
|
||
FirstLineComponent := SCSLineComponents[0];
|
||
LastLineComponent := SCSLineComponents[SCSLineComponents.Count - 1];
|
||
end;
|
||
|
||
ConnectKind := cnkVarious or cnkMaleMale;
|
||
GConnectKind := ConnectKind;
|
||
|
||
if (GEndPoint <> nil) and (FirstPointObject <> nil) then
|
||
try
|
||
if GEndPoint.ID = FirstPointObject.SCSID then
|
||
begin
|
||
ExchangeObjects(FirstPointObject, LastPointObject);
|
||
ExchangeObjects(FirstLineComponent, LastLineComponent);
|
||
ExchangeIntegers(FirstLineComponentPos, LastLineComponentPos);
|
||
end;
|
||
except
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
WasJoinedToEndPoints := false;
|
||
//if (SCSList <> nil) and (Not SCSList.Setting.ControlJoinByNetType) then
|
||
if (FirstPointObject <> nil) and (LastPointObject <> nil) and
|
||
(FirstLineComponent <> nil) and (LastLineComponent <> nil) and
|
||
(FirstLineComponent.GuidNB = LastLineComponent.GuidNB) {and
|
||
(FirstPointInterface = nil) and (LastPointInterface = nil)} then // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
FirstLineComponentSide := -1;
|
||
LastLineComponentSide := -1;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>
|
||
FirstLineComponentInterfaces := GetLineComponInterfacesForJoinToPoint(FirstLineComponent, FirstPointObject, FirstLineComponentSide);
|
||
LastLineComponentInterfaces := GetLineComponInterfacesForJoinToPoint(LastLineComponent, LastPointObject, LastLineComponentSide);
|
||
|
||
if (FirstLineComponentInterfaces <> nil) and (LastLineComponentInterfaces <> nil) then
|
||
if CheckEqualInterfaces(FirstLineComponentInterfaces, LastLineComponentInterfaces, nil, nil, true, true) then
|
||
begin
|
||
//02.07.2013 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||
if aConsiderBoxAndRack then
|
||
begin
|
||
FirstPointCompon := nil;
|
||
LastPointCompon := nil;
|
||
FirstPointInterfaces := TSCSInterfaces.Create(false);
|
||
LastPointInterfaces := TSCSInterfaces.Create(false);
|
||
for i := 0 to FirstPointObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
FirstPointCompon := FirstPointObject.ComponentReferences[i];
|
||
FirstPointTopCompon := FirstPointCompon.GetTopComponent;
|
||
for j := 0 to LastPointObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
LastPointCompon := LastPointObject.ComponentReferences[j];
|
||
LastPointTopCompon := LastPointCompon.GetTopComponent;
|
||
|
||
FirstPointInterfaces.Clear;
|
||
LastPointInterfaces.Clear;
|
||
if (FirstPointTopCompon.ComponentType.SysName = ctsnCupboard) and (LastPointTopCompon.ComponentType.SysName = ctsnBox) then
|
||
begin
|
||
FirstPointCompon.GetInterfacesByIsPort(biFalse, false, -1, FirstPointInterfaces); //FirstPointInterfaces.Assign(FirstPointCompon.Interfaces);
|
||
LastPointCompon.GetInterfacesByIsPort(biFalse, false, -1, LastPointInterfaces); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
else if (FirstPointTopCompon.ComponentType.SysName = ctsnBox) and (LastPointTopCompon.ComponentType.SysName = ctsnCupboard) then
|
||
begin
|
||
FirstPointCompon.GetInterfacesByIsPort(biFalse, false, -1, FirstPointInterfaces); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LastPointCompon.GetInterfacesByIsPort(biFalse, false, -1, LastPointInterfaces); //LastPointInterfaces.Assign(LastPointCompon.Interfaces);
|
||
end
|
||
else if FirstPointTopCompon.ComponentType.SysName = ctsnBox then
|
||
begin
|
||
FirstPointCompon.GetInterfacesByIsPort(biTrue, false, -1, FirstPointInterfaces); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
LastPointInterfaces.Assign(LastPointCompon.Interfaces);
|
||
end
|
||
else if LastPointTopCompon.ComponentType.SysName = ctsnBox then
|
||
begin
|
||
LastPointCompon.GetInterfacesByIsPort(biTrue, false, -1, LastPointInterfaces); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
FirstPointInterfaces.Assign(FirstPointCompon.Interfaces);
|
||
end
|
||
else //05.08.2013 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
FirstPointInterfaces.Assign(FirstPointCompon.Interfaces);
|
||
LastPointInterfaces.Assign(LastPointCompon.Interfaces);
|
||
end;
|
||
|
||
if FirstPointInterfaces.Count > 0 then
|
||
if LastPointInterfaces.Count > 0 then
|
||
if FirstPointCompon.CheckJoinTo(FirstLineComponent, 0, FirstLineComponentSide, false, FirstPointInterfaces, FirstLineComponentInterfaces).CanConnect then
|
||
if LastPointCompon.CheckJoinTo(LastLineComponent, 0, LastLineComponentSide, false, LastPointInterfaces, LastLineComponentInterfaces).CanConnect then
|
||
begin
|
||
MaxInterfCountToConnect := -1;
|
||
FirstPointCompon.JoinTo(FirstLineComponent, 0, FirstLineComponentSide, false, FirstPointInterfaces, FirstLineComponentInterfaces, MaxInterfCountToConnect);
|
||
LastPointCompon.JoinTo(LastLineComponent, 0, LastLineComponentSide, false, LastPointInterfaces, LastLineComponentInterfaces, MaxInterfCountToConnect);
|
||
WasJoinedToEndPoints := true;
|
||
Break; //// BREAK ////
|
||
end;
|
||
end;
|
||
if WasJoinedToEndPoints then
|
||
Break; //// BREAK ////
|
||
end;
|
||
FreeAndNil(FirstPointInterfaces);
|
||
FreeAndNil(LastPointInterfaces);
|
||
WasJoinedToEndPoints := true; //02.07.2013 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
end
|
||
else
|
||
begin
|
||
FirstPointPort := nil;
|
||
LastPointPort := nil;
|
||
|
||
FirstPointPort := GetCatalogPortByAnalogInterfaces(FirstPointObject, nil, FirstLineComponentInterfaces,
|
||
TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceConnectOrder,
|
||
TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne);
|
||
if FirstPointPort <> nil then
|
||
LastPointPort := GetCatalogPortByAnalogInterfaces(LastPointObject, FirstPointPort, LastLineComponentInterfaces,
|
||
TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceConnectOrder,
|
||
TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (FirstPointPort = nil) or (LastPointPort = nil) then
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
GetCatalogsEqualPortsByAnalogInterfaces(FirstPointObject, LastPointObject, FirstLineComponentInterfaces,
|
||
FirstPointPort, LastPointPort);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (FirstPointPort <> nil) and (LastPointPort <> nil) then
|
||
begin
|
||
FirstPointPortInterfCount := GetEmptyInterfCountFromPort(FirstPointPort);
|
||
LastPointPortInterfCount := GetEmptyInterfCountFromPort(LastPointPort);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
MaxInterfCountToConnect := -1;
|
||
if TF_Main(GForm).GSCSBase.CurrProject.Setting.TraceOnePortToOne then
|
||
begin
|
||
if FirstPointPortInterfCount <> LastPointPortInterfCount then
|
||
begin
|
||
if CheckPortNoHaveBusyInterfaces(FirstPointPort) and CheckPortNoHaveBusyInterfaces(LastPointPort) then
|
||
begin
|
||
if FirstPointPortInterfCount < LastPointPortInterfCount then
|
||
MaxInterfCountToConnect := FirstPointPortInterfCount
|
||
else
|
||
if FirstPointPortInterfCount > LastPointPortInterfCount then
|
||
MaxInterfCountToConnect := LastPointPortInterfCount;
|
||
end;
|
||
end
|
||
else
|
||
MaxInterfCountToConnect := FirstPointPortInterfCount;
|
||
end;
|
||
|
||
if FirstPointPort.ComponentOwner.CheckJoinTo(FirstLineComponent, 0,
|
||
FirstLineComponentSide, false, FirstPointPort.PortInterfaces, FirstLineComponentInterfaces).CanConnect and
|
||
LastPointPort.ComponentOwner.CheckJoinTo(LastLineComponent, 0,
|
||
LastLineComponentSide, false, LastPointPort.PortInterfaces, LastLineComponentInterfaces).CanConnect then
|
||
begin
|
||
FirstPointPort.ComponentOwner.JoinTo(FirstLineComponent, 0, FirstLineComponentSide,
|
||
false, FirstPointPort.PortInterfaces, FirstLineComponentInterfaces, MaxInterfCountToConnect);
|
||
LastPointPort.ComponentOwner.JoinTo(LastLineComponent, 0, LastLineComponentSide,
|
||
false, LastPointPort.PortInterfaces, LastLineComponentInterfaces, MaxInterfCountToConnect);
|
||
WasJoinedToEndPoints := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if FirstLineComponentInterfaces <> nil then
|
||
FreeAndNil(FirstLineComponentInterfaces);
|
||
if LastLineComponentInterfaces <> nil then
|
||
FreeAndNil(LastLineComponentInterfaces);
|
||
end;
|
||
|
||
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrObj := nil;
|
||
PrevObj := nil;
|
||
PrevPrevObj := nil;
|
||
for i := 0 to WayObjects.Count - 1 do
|
||
begin
|
||
PrevPrevObj := PrevObj;
|
||
PrevObj := nil;
|
||
PrevObj := CurrObj;
|
||
CurrObj := nil;
|
||
CurrObj := WayObjects[i];
|
||
if PrevObj <> nil then
|
||
begin
|
||
if ((PrevObj.ItemType = itSCSLine) and (CurrObj.ItemType = itSCSLine)) or // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
((Not WasJoinedToEndPoints) and (PrevObj.ItemType = itSCSConnector) and (CurrObj.ItemType = itSCSLine) and (i=1)) or // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
((Not WasJoinedToEndPoints) and (PrevObj.ItemType = itSCSLine) and (CurrObj.ItemType = itSCSConnector) and (i=WayObjects.Count-1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
then
|
||
begin
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
//WasConnect := ConnectWayObjects(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2);
|
||
WasConnect := ConnectObjectCompons(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2, true);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
|
||
if PrevPrevObj <> nil then
|
||
if (PrevPrevObj.ItemType = itSCSLine) and (PrevObj.ItemType = itSCSConnector) and (CurrObj.ItemType = itSCSLine) then
|
||
begin
|
||
ptrPrevConnObjSides := FindConnObjSides(PrevPrevObj.ID, PrevObj.ID);
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
WasConnect := ConnectObjectCompons(PrevPrevObj, CurrObj, ptrPrevConnObjSides.Side1, ptrConnObjSides.Side2, true);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrObj := nil;
|
||
PrevObj := nil;
|
||
for i := 0 to WayObjects.Count - 1 do
|
||
begin
|
||
PrevObj := CurrObj;
|
||
CurrObj := WayObjects[i];
|
||
if PrevObj <> nil then
|
||
begin
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
if WasJoinedToEndPoints and ((i = 1) or (i=WayObjects.Count-1)) then
|
||
Continue; //// CONTINUE ////
|
||
|
||
WasConnect := ConnectObjectCompons(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2, true);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
WayObjects.Free;
|
||
Freelist(ObjectSidesList);
|
||
//ClearList(AWay);
|
||
SCSLineComponents.Free;
|
||
end;
|
||
TF_Main(GForm).GSCSBase.CurrProject.FinishMarkingCompons;
|
||
|
||
{
|
||
try
|
||
SCSObject := nil;
|
||
PrevObj := nil;
|
||
for i := 0 to AWay.Count - 1 do
|
||
begin
|
||
PrevObj := SCSObject;
|
||
|
||
SCSObject := nil;
|
||
SCSObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(Integer(AWay[i]^));
|
||
if Assigned(SCSObject) then
|
||
begin
|
||
WayObjects.Add(SCSObject);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Prevobj <> nil then
|
||
begin
|
||
//New(ptrConnObjSides);
|
||
GetMem(ptrConnObjSides, SizeOf(TConnectedObjectsSides));
|
||
ptrConnObjSides.IDObj1 := PrevObj.ID;
|
||
ptrConnObjSides.IDObj2 := SCSObject.ID;
|
||
|
||
GetSidesByConnectedFigures(PrevObj.ListID, SCSObject.ListID, PrevObj.SCSID, SCSObject.SCSID,
|
||
ptrConnObjSides^.Side1, ptrConnObjSides^.Side2);
|
||
ObjectSidesList.Add(ptrConnObjSides);
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for j := 0 to SCSObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSCompon := SCSObject.ComponentReferences[j];
|
||
SCSCompon.DefineInterfCountToConnect;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
ConnectKind := cnkVarious or cnkMaleMale;
|
||
GConnectKind := ConnectKind;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrObj := nil;
|
||
PrevObj := nil;
|
||
PrevPrevObj := nil;
|
||
for i := 0 to WayObjects.Count - 1 do
|
||
begin
|
||
PrevPrevObj := PrevObj;
|
||
PrevObj := nil;
|
||
PrevObj := CurrObj;
|
||
CurrObj := nil;
|
||
CurrObj := WayObjects[i];
|
||
if PrevObj <> nil then
|
||
begin
|
||
if ((PrevObj.ItemType = itSCSLine) and (CurrObj.ItemType = itSCSLine)) or // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
((PrevObj.ItemType = itSCSConnector) and (CurrObj.ItemType = itSCSLine) and (i=1)) or // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
((PrevObj.ItemType = itSCSLine) and (CurrObj.ItemType = itSCSConnector) and (i=WayObjects.Count-1)) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
then
|
||
begin
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
//WasConnect := ConnectWayObjects(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2);
|
||
WasConnect := ConnectObjectCompons(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
|
||
if PrevPrevObj <> nil then
|
||
if (PrevPrevObj.ItemType = itSCSLine) and (PrevObj.ItemType = itSCSConnector) and (CurrObj.ItemType = itSCSLine) then
|
||
begin
|
||
ptrPrevConnObjSides := FindConnObjSides(PrevPrevObj.ID, PrevObj.ID);
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
WasConnect := ConnectObjectCompons(PrevPrevObj, CurrObj, ptrPrevConnObjSides.Side1, ptrConnObjSides.Side2);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
CurrObj := nil;
|
||
PrevObj := nil;
|
||
for i := 0 to WayObjects.Count - 1 do
|
||
begin
|
||
PrevObj := CurrObj;
|
||
CurrObj := WayObjects[i];
|
||
if PrevObj <> nil then
|
||
begin
|
||
ptrConnObjSides := FindConnObjSides(PrevObj.ID, CurrObj.ID);
|
||
if ptrConnObjSides <> nil then
|
||
begin
|
||
WasConnect := ConnectObjectCompons(PrevObj, CurrObj, ptrConnObjSides.Side1, ptrConnObjSides.Side2);
|
||
if (Result = true) and Not(WasConnect) then
|
||
Result := false;
|
||
end;
|
||
end;
|
||
end;
|
||
finally
|
||
WayObjects.Free;
|
||
Freelist(ObjectSidesList);
|
||
ClearList(AWay);
|
||
end;
|
||
}
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.ConnectObjectsByWay: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
function TF_ChoiceConnectSide.JoinWithDefineSides(AComponent1, AComponent2: TSCSComponent; ACheck: Boolean;
|
||
ACompon1Interfaces: TSCSInterfaces = nil; ACompon2Interfaces: TSCSInterfaces = nil;
|
||
ACanWithNoInterfaces: Boolean = false): TConnectInterfRes;
|
||
var
|
||
Side1: Integer;
|
||
Side2: Integer;
|
||
SCSObject1: TSCSCatalog;
|
||
SCSObject2: TSCSCatalog;
|
||
begin
|
||
ZeroMemory(@Result, SizeOf(TConnectInterfRes));
|
||
Side1 := -1;
|
||
Side2 := -1;
|
||
|
||
SCSObject1 := AComponent1.GetFirstParentCatalog;
|
||
SCSObject2 := AComponent2.GetFirstParentCatalog;
|
||
if (SCSObject1 <> nil) and (SCSObject2 <> nil) then
|
||
GetSidesByConnectedFigures(SCSObject1.ListID, SCSObject2.ListID, SCSObject1.SCSID, SCSObject2.SCSID, Side1, Side2);
|
||
if (Side1 <> -1) and (Side2 <> -1) then
|
||
begin
|
||
if Not ACanWithNoInterfaces then
|
||
begin
|
||
if ACheck then
|
||
Result := AComponent1.CheckJoinTo(AComponent2, Side1, Side2, true, ACompon1Interfaces, ACompon2Interfaces)
|
||
else
|
||
Result := AComponent1.JoinTo(AComponent2, Side1, Side2, true, ACompon1Interfaces, ACompon2Interfaces);
|
||
end
|
||
else
|
||
begin
|
||
if ACheck then
|
||
Result := AComponent1.CheckJoinTo(AComponent2, Side1, Side2, true, ACompon1Interfaces, ACompon2Interfaces, ACanWithNoInterfaces)
|
||
else
|
||
Result := AComponent1.JoinTo(AComponent2, Side1, Side2, true, ACompon1Interfaces, ACompon2Interfaces, -1, true, ACanWithNoInterfaces);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.JoinConnectorWithLines(AConnector: TSCSCatalog;
|
||
AComponentFromConnector: TSCSComponent; ALineComponsFromTraces: TSCSComponents);
|
||
var
|
||
SCSComponent: TSCSComponent;
|
||
|
||
LineFigureIDs: TIntList;
|
||
LineObject: TSCSCatalog;
|
||
i, j, k, l: Integer;
|
||
Side1: Integer;
|
||
Side2: Integer;
|
||
// Tolik
|
||
LineCatalogList: TList;
|
||
currCatalog, nextCatalog: TSCSCatalog;
|
||
currCompon, JoinedCompon: TSCSComponent;
|
||
DisJoined: Boolean;
|
||
Connected: Boolean; // tolik 29/10/2019 --
|
||
begin
|
||
if AComponentFromConnector <> nil then
|
||
begin
|
||
AComponentFromConnector.ServCanConnect := true;
|
||
for i := 0 to AComponentFromConnector.ChildReferences.Count - 1 do
|
||
begin
|
||
SCSComponent := AComponentFromConnector.ChildReferences[i];
|
||
SCSComponent.ServCanConnect := true;
|
||
end;
|
||
end
|
||
else
|
||
SetObjectComponAsCanToJoin(AConnector, true);
|
||
|
||
if ALineComponsFromTraces <> nil then
|
||
for i := 0 to ALineComponsFromTraces.Count - 1 do
|
||
begin
|
||
SCSComponent := ALineComponsFromTraces[i];
|
||
if SCSComponent.IsLine = biTrue then
|
||
SCSComponent.ServCanConnect := true;
|
||
end;
|
||
|
||
LineFigureIDs := GetConnectedTracesToConnetorByID(AConnector.ListID, AConnector.SCSID);
|
||
//Tolik
|
||
if F_PEAutoTraceDialog.FromAutoTraceDialog and F_PEAutoTraceDialog.IgnoreExistingCable.Visible and
|
||
F_PEAutoTraceDialog.IgnoreExistingCable.Checked then
|
||
begin
|
||
if LineFigureIDs.Count > 0 then
|
||
begin
|
||
LineCatalogList := TList.Create;
|
||
for i := 0 to LineFigureIds.Count - 1 do
|
||
begin
|
||
currCatalog := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(LineFigureIDs[i]);
|
||
if currCatalog <> nil then
|
||
LineCatalogList.Add(currCatalog);
|
||
end;
|
||
|
||
if LineCatalogList.Count > 1 then
|
||
begin
|
||
for i := 0 to LineCatalogList.Count - 2 do
|
||
begin
|
||
currCatalog := TSCSCatalog(LineCatalogList[i]);
|
||
for l := i to LineCatalogList.Count - 2 do
|
||
begin
|
||
nextCatalog := TSCSCatalog(LineCatalogList[l+1]);
|
||
DisJoined := False;
|
||
for j := 0 to currCatalog.ComponentReferences.Count - 1 do
|
||
begin
|
||
currCompon := currCatalog.ComponentReferences[j];
|
||
if F_PEAutoTraceDialog.LastAddedCableIDList.IndexOf(currCompon.id) <> -1 then
|
||
begin
|
||
DisJoined := True;
|
||
While DisJoined do
|
||
begin
|
||
DisJoined := False;
|
||
for k := 0 to currCompon.JoinedComponents.Count - 1 do
|
||
begin
|
||
JoinedCompon := TSCSComponent(currCompon.JoinedComponents[k]);
|
||
if F_PEAutoTraceDialog.LastAddedCableIDList.IndexOf(JoinedCompon.ID) <> - 1 then
|
||
begin
|
||
if nextCatalog.ComponentReferences.IndexOf(JoinedCompon) <> - 1 then
|
||
begin
|
||
DisJoined := currCompon.DisJoinFrom(JoinedCompon);
|
||
end;
|
||
if DisJoined then
|
||
break;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
for i := 0 to LineFigureIDs.Count - 1 do
|
||
begin
|
||
LineObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(LineFigureIDs[i]);
|
||
if LineObject <> nil then
|
||
begin
|
||
GetSidesByConnectedFigures(AConnector.ListID, LineObject.ListID, AConnector.SCSID, LineObject.SCSID, Side1, Side2);
|
||
|
||
if ALineComponsFromTraces = nil then
|
||
SetObjectComponAsCanToJoin(LineObject, true);
|
||
// Tolik 29/10/2019 --
|
||
//ConnectObjectCompons(AConnector, LineObject, Side1, Side2, false);
|
||
Connected := ConnectObjectCompons(AConnector, LineObject, Side1, Side2, false);
|
||
//
|
||
end;
|
||
end;
|
||
LineFigureIDs.free; // Tolik 15/05/2018--
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.JoinLineWithJoinedObjects(ALineObject: TSCSCatalog);
|
||
var
|
||
IDConnSide1: Integer;
|
||
IDConnSide2: Integer;
|
||
SCSConnObject: TSCSCatalog;
|
||
begin
|
||
IDConnSide1 := 0;
|
||
IDConnSide2 := 0;
|
||
GetConnObjectsByLine(ALineObject.ListID, ALineObject.SCSID, IDConnSide1, IDConnSide2);
|
||
SetObjectComponAsCanToJoin(ALineObject, true);
|
||
if IDConnSide1 > 0 then
|
||
begin
|
||
SCSConnObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(IDConnSide1);
|
||
if SCSConnObject <> nil then
|
||
begin
|
||
SetObjectComponAsCanToJoin(SCSConnObject, true);
|
||
ConnectObjectCompons(ALineObject, SCSConnObject, 1, 0, false);
|
||
end;
|
||
end;
|
||
if IDConnSide2 > 0 then
|
||
begin
|
||
SCSConnObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(IDConnSide2);
|
||
if SCSConnObject <> nil then
|
||
begin
|
||
SetObjectComponAsCanToJoin(SCSConnObject, true);
|
||
ConnectObjectCompons(ALineObject, SCSConnObject, 2, 0, false);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.SetObjectComponAsCanToJoin(ASCSObject: TSCSCatalog; ACanToJoin: Boolean);
|
||
var
|
||
i: Integer;
|
||
begin
|
||
for i := 0 to ASCSObject.ComponentReferences.Count - 1 do
|
||
ASCSObject.ComponentReferences[i].ServCanConnect := ACanToJoin;
|
||
end;
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ####
|
||
//Tolik
|
||
// <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//
|
||
//Tolik 26/09/2018 --
|
||
{
|
||
function TF_ChoiceConnectSide.AutoConnectOverRaiseLine(APointObjectID: Integer; ARaiseLineID: Integer;
|
||
AJoinedBeforeRaise, AJoinedAfterRaise: TList; ALineType: TLineType): Boolean;
|
||
}
|
||
function TF_ChoiceConnectSide.AutoConnectOverRaiseLine(APointObjectID: Integer; ARaiseLineID: Integer;
|
||
AJoinedBeforeRaise, AJoinedAfterRaise: TList; ALineType: TLineType; aNoCopyList: TList = nil): Boolean;
|
||
//
|
||
var {ConnectCatalogList: TSCSCatalogs;
|
||
ConnectConponCount: Integer;
|
||
ConnectCatalog: TSCSCatalog;
|
||
|
||
RaizeLineObject: TSCSCatalog;
|
||
|
||
ConnectCompon: TSCSComponent;
|
||
//PointCompon: TSCSComponent;
|
||
|
||
//IDPointObj: Integer;
|
||
PointObject: TSCSCatalog;
|
||
i, j: Integer;
|
||
|
||
//ConnectInterfRes: TConnectInterfRes;
|
||
LineObjNumSide: Integer;}
|
||
|
||
JoinedBeforeRaise: TSCSCatalogs;
|
||
JoinedAfterRaise: TSCSCatalogs;
|
||
|
||
BeforeObject: TSCSCatalog;
|
||
PointObject: TSCSCatalog;
|
||
AfterObject: TSCSCatalog;
|
||
RaiseObject: TSCSCatalog;
|
||
|
||
BeforeObjectSide: Integer;
|
||
AfterObjectSide: Integer;
|
||
RaiseObjectFromBeforeSide: Integer;
|
||
RaiseObjectFromAfterSide: Integer;
|
||
|
||
BeforeComponent: TSCSComponent;
|
||
AfterComponent: TSCSComponent;
|
||
SrcComponentForCopyToRaise: TSCSComponent;
|
||
IDRaiseComponent: Integer;
|
||
RaiseComponent: TSCSComponent;
|
||
HereCreatedRaiseComponent: Boolean;
|
||
|
||
SrcComponents: TSCSComponents;
|
||
SrcComponent: TSCSComponent;
|
||
SrcParentComponent: TSCSComponent;
|
||
NewComponents: TSCSComponents;
|
||
NewComponent: TSCSComponent;
|
||
NewParentComponent: TSCSComponent;
|
||
NewComponObjectOwner: TSCSCatalog;
|
||
ComponIndex: Integer;
|
||
|
||
ParentCompon: TSCSComponent;
|
||
|
||
ObjectsToConnect1: TList;
|
||
ObjectsToConnect2: TList;
|
||
ptrConnectObjectParam: PConnectObjectParam;
|
||
PointObjectSide: Integer;
|
||
RaiseObjectSide: Integer;
|
||
|
||
i, j, k, l, m: Integer;
|
||
ComponToDelete: Boolean;
|
||
// Tolik
|
||
BeforeComponentParent: TSCSCatalog;
|
||
TmpComponent: TSCSComponent;
|
||
CanNotCopyCompon: Boolean;
|
||
//
|
||
|
||
function GetObjectListByParams(AObjectListParams: TList): TSCSCatalogs;
|
||
var
|
||
i: Integer;
|
||
SCSCatalog: TSCSCatalog;
|
||
ptrObjectParam: PConnectObjectParam;
|
||
begin
|
||
Result := TSCSCatalogs.Create(false);
|
||
for i := 0 to AObjectListParams.Count - 1 do
|
||
begin
|
||
ptrObjectParam := AObjectListParams[i];
|
||
SCSCatalog := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ptrObjectParam.IDObject);
|
||
if SCSCatalog <> nil then
|
||
Result.Add(SCSCatalog);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
try
|
||
RaiseObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ARaiseLineID);
|
||
if (RaiseObject = nil) or (RaiseObject.ItemType = itSCSConnector) then
|
||
Exit; ///// EXIT /////
|
||
|
||
SrcComponents := TSCSComponents.Create(false);
|
||
NewComponents := TSCSComponents.Create(false);
|
||
|
||
JoinedBeforeRaise := GetObjectListByParams(AJoinedBeforeRaise);
|
||
JoinedAfterRaise := GetObjectListByParams(AJoinedAfterRaise);
|
||
try
|
||
//13.11.2008 // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//13.11.2008 if ALineType = ltTrace then
|
||
//13.11.2008 if (JoinedAfterRaise.Count = 0) or Not CheckIsLineObjectInList(JoinedAfterRaise, true) then
|
||
//13.11.2008 ExchangeObjects(JoinedAfterRaise, JoinedBeforeRaise);
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
PointObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(APointObjectID);
|
||
BeforeObject := PointObject;
|
||
if BeforeObject <> nil then
|
||
JoinedBeforeRaise.Add(BeforeObject);
|
||
|
||
for i := 0 to JoinedAfterRaise.Count - 1 do
|
||
begin
|
||
AfterObject := JoinedAfterRaise[i];
|
||
|
||
AfterObjectSide := -1;
|
||
RaiseObjectFromBeforeSide := -1;
|
||
RaiseObjectFromAfterSide := -1;
|
||
|
||
AfterObject.ReloadComponentReferences;
|
||
for j := 0 to AfterObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
AfterComponent := AfterObject.ComponentReferences[j];
|
||
RaiseComponent := nil;
|
||
// Tolik 26/09/2018 -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||
CanNotCopyCompon := False;
|
||
if aNoCopyList <> nil then
|
||
CanNotCopyCompon := (aNoCopyList.IndexOf(AfterComponent) <> -1);
|
||
if CanNotCopyCompon then
|
||
Continue;
|
||
//
|
||
|
||
ComponToDelete := AfterComponent.ServToDelete;
|
||
if not ComponToDelete then
|
||
begin
|
||
if (AfterComponent.ComponentType.SysName = ctsnCableChannelAccessory) or
|
||
(AfterComponent.ComponentType.SysName = ctsnAccessory) then
|
||
begin
|
||
parentCompon := AfterComponent.GetParentComponent;
|
||
while parentCompon <> nil do
|
||
begin
|
||
if ParentCompon.ServToDelete then
|
||
begin
|
||
ComponToDelete := True;
|
||
break;
|
||
end;
|
||
parentCompon := ParentCompon.GetParentComponent;
|
||
end;
|
||
end;
|
||
end;
|
||
if not ComponToDelete then
|
||
begin
|
||
if AfterComponent.JoinedComponents.Count > 0 then
|
||
begin
|
||
for k := 0 to JoinedBeforeRaise.Count - 1 do
|
||
begin
|
||
BeforeObject := JoinedBeforeRaise[k];
|
||
BeforeObjectSide := -1;
|
||
for l := 0 to BeforeObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
BeforeComponent := BeforeObject.ComponentReferences[l];
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if AfterComponent.JoinedComponents.IndexOf(BeforeComponent) <> -1 then
|
||
begin
|
||
HereCreatedRaiseComponent := false;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if RaiseComponent = nil then
|
||
begin
|
||
SrcComponentForCopyToRaise := nil;
|
||
if AfterComponent.Isline = biTrue then
|
||
SrcComponentForCopyToRaise := AfterComponent
|
||
else
|
||
if BeforeComponent.IsLine = biTrue then
|
||
SrcComponentForCopyToRaise := BeforeComponent;
|
||
|
||
if (SrcComponentForCopyToRaise <> nil) {and
|
||
(SrcComponentForCopyToRaise.ComponentType.SysName <> ctsnCableChannel)} then
|
||
begin
|
||
//RaiseComponent := CopyComponentToPMSCSObject(SrcComponentForCopyToRaise, RaiseObject, true);
|
||
RaiseComponent := CopyComponentToPMSCSObject(SrcComponentForCopyToRaise, RaiseObject, false);
|
||
|
||
if RaiseComponent <> nil then
|
||
begin
|
||
SrcComponents.Add(SrcComponentForCopyToRaise);
|
||
NewComponents.Add(RaiseComponent);
|
||
end;
|
||
|
||
{ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if RaiseObject.TreeViewNode = nil then
|
||
TF_Main(GForm).FindComponOrDirInTree(RaiseObject.ID, false);
|
||
if RaiseObject.TreeViewNode <> nil then
|
||
begin
|
||
IDRaiseComponent := TF_Main(GForm).CopyComponentFromNbToPm(F_NormBase, GForm, RaiseObject.TreeViewNode, SrcComponentForCopyToRaise.IDNormBase, ckCompon);
|
||
if IDRaiseComponent > 0 then
|
||
RaiseComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(IDRaiseComponent);
|
||
end;}
|
||
|
||
{if RaiseObject.TreeViewNode = nil then
|
||
TF_Main(GForm).FindComponOrDirInTree(RaiseObject.ID, false);
|
||
if RaiseObject.TreeViewNode <> nil then
|
||
begin
|
||
IDRaiseComponent := TF_Main(GForm).CopyComponentFromNbToPm(GForm, GForm, RaiseObject.TreeViewNode, SrcComponentForCopyToRaise.id, ckCompon);
|
||
if IDRaiseComponent > 0 then
|
||
RaiseComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(IDRaiseComponent);
|
||
end;}
|
||
end;
|
||
HereCreatedRaiseComponent := true;
|
||
|
||
{//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if RaiseComponent <> nil then
|
||
begin
|
||
if then
|
||
|
||
if then
|
||
|
||
end; }
|
||
end;
|
||
if RaiseComponent <> nil then
|
||
begin
|
||
if (BeforeObjectSide = -1) or
|
||
(RaiseObjectFromBeforeSide = -1) or
|
||
(RaiseObjectFromAfterSide = -1) or
|
||
(AfterObjectSide = -1) then
|
||
begin
|
||
GetSidesByConnectedFigures(BeforeObject.ListID, RaiseObject.ListID,
|
||
BeforeObject.SCSID, RaiseObject.SCSID,
|
||
BeforeObjectSide, RaiseObjectFromBeforeSide);
|
||
|
||
GetSidesByConnectedFigures(RaiseObject.ListID, AfterObject.ListID,
|
||
RaiseObject.SCSID, AfterObject.SCSID,
|
||
RaiseObjectFromAfterSide, AfterObjectSide);
|
||
end;
|
||
if (BeforeObjectSide <> -1) and
|
||
(RaiseObjectFromBeforeSide <> -1) and
|
||
(RaiseObjectFromAfterSide <> -1) and
|
||
(AfterObjectSide <> -1) then
|
||
begin
|
||
// Tolik 21/03/2016 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD> ... <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
BeforeComponentParent := BeforeComponent.GetFirstParentCatalog;
|
||
for m := 0 to BeforeComponentParent.ComponentReferences.Count - 1 do
|
||
begin
|
||
TmpComponent := BeforeComponentParent.ComponentReferences[m];
|
||
if TmpComponent <> BeforeComponent then
|
||
begin
|
||
if TmpComponent.JoinedComponents.IndexOf(AfterComponent) <> -1 then
|
||
TmpComponent.DisJoinFrom(AfterComponent);
|
||
end;
|
||
end;
|
||
//
|
||
if BeforeComponent.DisJoinFrom(AfterComponent) then
|
||
begin
|
||
RaiseComponent.JoinTo(BeforeComponent, RaiseObjectFromBeforeSide, BeforeObjectSide, true);
|
||
if HereCreatedRaiseComponent then
|
||
AfterComponent.JoinTo(RaiseComponent, AfterObjectSide, RaiseObjectFromAfterSide, true);
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ALineType = ltTrace then
|
||
begin
|
||
if ((AfterComponent.IsLine = biTrue) or (AfterComponent.ComponentType.SysName = ctsnCableChannelAccessory)
|
||
or (AfterComponent.ComponentType.SysName = ctsnAccessory) ) and (RaiseComponent = nil) then
|
||
begin
|
||
RaiseComponent := CopyComponentToPMSCSObject(AfterComponent, RaiseObject, false);
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if RaiseComponent <> nil then
|
||
begin
|
||
SrcComponents.Add(AfterComponent);
|
||
NewComponents.Add(RaiseComponent);
|
||
|
||
GetSidesByConnectedFigures(RaiseObject.ListID, AfterObject.ListID,
|
||
RaiseObject.SCSID, AfterObject.SCSID,
|
||
RaiseObjectFromAfterSide, AfterObjectSide);
|
||
if (RaiseObjectFromAfterSide <> -1) and (AfterObjectSide <> -1) then
|
||
begin
|
||
AfterComponent.JoinTo(RaiseComponent, AfterObjectSide, RaiseObjectFromAfterSide, true);
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
GCheckAccessory := True;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ALineType = ltTrace then
|
||
if AfterObject.IsLine = biTrue then
|
||
begin
|
||
for j := 0 to AfterObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
SrcComponent := AfterObject.ComponentReferences[j];
|
||
NewComponent := nil;
|
||
ComponIndex := SrcComponents.IndexOf(SrcComponent);
|
||
if ComponIndex <> -1 then
|
||
NewComponent := NewComponents[ComponIndex];
|
||
if NewComponent <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (SrcComponent.Parent is TSCSCatalog) and
|
||
(NewComponent.Parent is TSCSComponent) then
|
||
begin
|
||
NewComponObjectOwner := NewComponent.GetFirstParentCatalog;
|
||
if NewComponObjectOwner <> nil then
|
||
begin
|
||
NewComponent.DisConnectFromParent;
|
||
NewComponObjectOwner.AddComponentToCatRel(NewComponent);
|
||
end;
|
||
end
|
||
else
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (SrcComponent.Parent is TSCSComponent){ and
|
||
(NewComponent.Parent is TSCSComponent)} then
|
||
begin
|
||
SrcParentComponent := SrcComponent.GetParentComponent;
|
||
NewParentComponent := nil;
|
||
ComponIndex := SrcComponents.IndexOf(SrcParentComponent);
|
||
if ComponIndex <> -1 then
|
||
NewParentComponent := NewComponents[ComponIndex];
|
||
if (NewParentComponent <> nil) and (NewComponent <> NewParentComponent) then
|
||
begin
|
||
NewComponent.DisConnectFromParent;
|
||
if NewParentComponent.ComplectWith(NewComponent, -1, true) = nil then
|
||
begin
|
||
NewComponObjectOwner := NewParentComponent.GetFirstParentCatalog;
|
||
if NewComponObjectOwner <> nil then
|
||
NewComponObjectOwner.AddComponentToCatRel(NewComponent);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ALineType = ltTrace then
|
||
if (AJoinedBeforeRaise.Count > 0) {or (AJoinedAfterRaise.Count > 0)} then
|
||
begin
|
||
ObjectsToConnect1 := GetCopyConnectObjectParams(AJoinedBeforeRaise);
|
||
//ObjectsToConnect2 := GetCopyConnectObjectParams(AJoinedAfterRaise);
|
||
//ObjectsToConnect1.Assign(ObjectsToConnect2, laOr);
|
||
//ObjectsToConnect2.Clear;
|
||
ObjectsToConnect2 := TList.Create;
|
||
|
||
GetSidesByConnectedFigures(PointObject.ListID, RaiseObject.ListID, PointObject.SCSID, RaiseObject.SCSID, PointObjectSide, RaiseObjectSide);
|
||
GetZeroMem(ptrConnectObjectParam, SizeOf(TConnectObjectParam));
|
||
ptrConnectObjectParam.IDObject := PointObject.SCSID;
|
||
ptrConnectObjectParam.Side := PointObjectSide;
|
||
ObjectsToConnect2.Add(ptrConnectObjectParam);
|
||
|
||
GetZeroMem(ptrConnectObjectParam, SizeOf(TConnectObjectParam));
|
||
ptrConnectObjectParam.IDObject := RaiseObject.SCSID;
|
||
ptrConnectObjectParam.Side := RaiseObjectSide;
|
||
ObjectsToConnect2.Add(ptrConnectObjectParam);
|
||
|
||
ConnectObjects(ObjectsToConnect1, ObjectsToConnect2);
|
||
|
||
FreeList(ObjectsToConnect1);
|
||
FreeList(ObjectsToConnect2);
|
||
end;
|
||
|
||
//-------------------------------
|
||
{
|
||
for i := 0 to JoinedBeforeRaise.Count - 1 do
|
||
begin
|
||
BeforeObject := JoinedBeforeRaise[i];
|
||
|
||
//if BeforeObject.ItemType = itSCSLine then
|
||
// BeforeObjectSide := /GetNumSideByObject(BeforeCatalog, AJoinedBeforeRaise)
|
||
//else
|
||
// BeforeObjectSide := 0;
|
||
BeforeObjectSide := -1;
|
||
|
||
for j := 0 to BeforeObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
BeforeComponent := BeforeObject.ComponentReferences[j];
|
||
|
||
if BeforeComponent.JoinedComponents.Count > 0 then
|
||
for k := 0 to JoinedAfterRaise.Count - 1 do
|
||
begin
|
||
AfterObject := JoinedAfterRaise[k];
|
||
AfterObjectSide := -1; //GetNumSideByObject(AfterObject, AJoinedAfterRaise);
|
||
|
||
RaiseObjectFromBeforeSide := -1;
|
||
RaiseObjectFromAfterSide := -1;
|
||
for l := 0 to AfterObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
AfterComponent := AfterObject.ComponentReferences[l];
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if BeforeComponent.JoinedComponents.IndexOf(AfterComponent) <> -1 then
|
||
begin
|
||
RaiseComponent := nil;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SrcComponentForCopyToRaise := nil;
|
||
if AfterComponent.Isline = biTrue then
|
||
SrcComponentForCopyToRaise := AfterComponent
|
||
else
|
||
if BeforeComponent.IsLine = biTrue then
|
||
SrcComponentForCopyToRaise := BeforeComponent;
|
||
|
||
if SrcComponentForCopyToRaise <> nil then
|
||
begin
|
||
if RaiseObject.TreeViewNode = nil then
|
||
TF_Main(GForm).FindComponOrDirInTree(RaiseObject.ID, false);
|
||
if RaiseObject.TreeViewNode <> nil then
|
||
begin
|
||
IDRaiseComponent := TF_Main(GForm).CopyComponentFromNbToPm(GForm, GForm, RaiseObject.TreeViewNode, SrcComponentForCopyToRaise.id, ckCompon);
|
||
if IDRaiseComponent > 0 then
|
||
RaiseComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(IDRaiseComponent);
|
||
end;
|
||
end;
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BeforeComponent <20> AfterComponent, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> RaiseComponent
|
||
if RaiseComponent <> nil then
|
||
begin
|
||
if (BeforeObjectSide = -1) or
|
||
(RaiseObjectFromBeforeSide = -1) or
|
||
(RaiseObjectFromAfterSide = -1) or
|
||
(AfterObjectSide = -1) then
|
||
begin
|
||
GetSidesByConnectedFigures(RaiseObject.ListID, AfterObject.ListID,
|
||
RaiseObject.SCSID, AfterObject.SCSID,
|
||
RaiseObjectFromAfterSide, AfterObjectSide);
|
||
|
||
GetSidesByConnectedFigures(BeforeObject.ListID, RaiseObject.ListID,
|
||
BeforeObject.SCSID, RaiseObject.SCSID,
|
||
BeforeObjectSide, RaiseObjectFromBeforeSide);
|
||
end;
|
||
if (BeforeObjectSide <> -1) and
|
||
(RaiseObjectFromBeforeSide <> -1) and
|
||
(RaiseObjectFromAfterSide <> -1) and
|
||
(AfterObjectSide <> -1) then
|
||
begin
|
||
if BeforeComponent.DisJoinFrom(AfterComponent) then
|
||
begin
|
||
AfterComponent.JoinTo(RaiseComponent, AfterObjectSide, RaiseObjectFromAfterSide);
|
||
RaiseComponent.JoinTo(BeforeComponent, RaiseObjectFromBeforeSide, BeforeObjectSide);
|
||
Result := true;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;}
|
||
finally
|
||
GCheckAccessory := False;
|
||
FreeAndNil(JoinedBeforeRaise);
|
||
FreeAndNil(JoinedAfterRaise);
|
||
|
||
FreeAndNil(SrcComponents);
|
||
FreeAndNil(NewComponents);
|
||
end;
|
||
|
||
|
||
|
||
(*
|
||
PointObject := nil;
|
||
RaizeLineObject := nil;
|
||
|
||
ConnectCatalogList := nil;
|
||
PointObject := nil;
|
||
ConnectCatalogList := GetCatalogList(AConnectedLines, ConnectConponCount);
|
||
if ConnectCatalogList = nil then
|
||
Exit; ///// EXIT //////
|
||
|
||
PointObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(APointObjectID);
|
||
RaizeLineObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ARaiseLineID);
|
||
if Assigned(PointObject) then
|
||
for i := 0 to ConnectCatalogList.Count - 1 do
|
||
begin
|
||
ConnectCatalog := ConnectCatalogList[i];
|
||
LineObjNumSide := GetNumSideByObject(ConnectCatalog, AConnectedLines);
|
||
for j := 0 to ConnectCatalog.SCSComponents.Count - 1 do
|
||
if Assigned(ConnectCatalog.SCSComponents[j]) then
|
||
begin
|
||
ConnectCompon := ConnectCatalog.SCSComponents[j];
|
||
|
||
if Assigned(RaizeLineObject) then
|
||
if Assigned(RaizeLineObject.TreeViewNode) then
|
||
TF_Main(GForm).CopyComponentFromNbToPm(GForm, GForm, RaizeLineObject.TreeViewNode, ConnectCompon.ID, ckCompon, false);
|
||
|
||
//CopyComponentToSCSObject(ARaiseLineID, ConnectCompon.IDNormBase);
|
||
|
||
{
|
||
for k := 0 to PointObject.ComponentReferences.Count - 1 do
|
||
if Assigned(PointObject.ComponentReferences[k]) then
|
||
begin
|
||
PointCompon := PointObject.ComponentReferences[k];
|
||
if (PointCompon.ID > 0) and (PointCompon.HaveInterfaceByType(itFunctional)) then
|
||
begin
|
||
ConnectInterfRes := ConnectInterfaces(ConnectCompon, PointCompon, LineObjNumSide, -1, cnkVarious or cnkMaleMale, false, smtNone, true);
|
||
if ConnectInterfRes.CanConnect then
|
||
begin
|
||
CopyComponentToSCSObject(ARaiseLineID, ConnectCompon.IDNormBase);
|
||
//ConnectCompon.Clear;
|
||
//PointCompon.Clear;
|
||
Break; ///// BREAK /////
|
||
end;
|
||
end;
|
||
end; // End for k/> }
|
||
end; // End for j/>
|
||
end; // End for i/> *)
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.AutoConnectOverRaiseLine: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.AutoDisconnectOverRaiseLine(ARaiseLineID: Integer; AJoinedBeforeRaise, AJoinedAfterRaise: TList): Boolean;
|
||
var
|
||
BeforeRaiseObjects: TSCSCatalogs;
|
||
AfterRaiseObjects: TSCSCatalogs;
|
||
|
||
BeforeObject: TSCSCatalog;
|
||
AfterObject: TSCSCatalog;
|
||
RaiseObject: TSCSCatalog;
|
||
|
||
BeforeObjectSide: Integer;
|
||
AfterObjectSide: Integer;
|
||
RaiseObjectFromBeforeSide: Integer;
|
||
RaiseObjectFromAfterSide: Integer;
|
||
|
||
BeforeComponent: TSCSComponent;
|
||
AfterComponent: TSCSComponent;
|
||
SrcComponentForCopyToRaise: TSCSComponent;
|
||
IDRaiseComponent: Integer;
|
||
RaiseComponent: TSCSComponent;
|
||
JoinedToBeforeComponent: TSCSComponent;
|
||
JoinedToAfterComponent: TSCSComponent;
|
||
JoinedRaiseComponent: TSCSComponent;
|
||
|
||
JoinedToRaiseBeforeComponents: TSCSComponents;
|
||
JoinedToRaiseAfterComponents: TSCSComponents;
|
||
|
||
IsDeletedRaiseComponent: Boolean;
|
||
|
||
i, j, k, l: Integer;
|
||
|
||
function GetObjectListByParams(AObjectListParams: TList): TSCSCatalogs;
|
||
var
|
||
i: Integer;
|
||
SCSCatalog: TSCSCatalog;
|
||
ptrObjectParam: PConnectObjectParam;
|
||
begin
|
||
Result := TSCSCatalogs.Create(false);
|
||
for i := 0 to AObjectListParams.Count - 1 do
|
||
begin
|
||
ptrObjectParam := AObjectListParams[i];
|
||
SCSCatalog := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ptrObjectParam.IDObject);
|
||
if SCSCatalog <> nil then
|
||
Result.Add(SCSCatalog);
|
||
end;
|
||
end;
|
||
|
||
procedure DefineJoinedComponentsByJoinedObjects(ATargetJoinedComponents: TSCSComponents;
|
||
ASourceComponent: TSCSComponent; AJoinedObjects: TSCSCatalogs);
|
||
var
|
||
i: Integer;
|
||
JoinedComponent: TSCSComponent;
|
||
JoinedOwner: TSCSCatalog;
|
||
begin
|
||
ATargetJoinedComponents.Clear;
|
||
for i := 0 to ASourceComponent.JoinedComponents.Count - 1 do
|
||
begin
|
||
JoinedComponent := ASourceComponent.JoinedComponents[i];
|
||
JoinedOwner := JoinedComponent.GetFirstParentCatalog;
|
||
if (JoinedOwner <> nil) and (AJoinedObjects.IndexOf(JoinedOwner) <> -1) then
|
||
ATargetJoinedComponents.Add(JoinedComponent);
|
||
end;
|
||
end;
|
||
|
||
|
||
begin
|
||
Result := false;
|
||
|
||
RaiseObject := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ARaiseLineID);
|
||
if (RaiseObject = nil) or (RaiseObject.ItemType = itSCSConnector) then
|
||
Exit; ///// EXIT /////
|
||
|
||
BeforeRaiseObjects := GetObjectListByParams(AJoinedBeforeRaise);
|
||
AfterRaiseObjects := GetObjectListByParams(AJoinedAfterRaise);
|
||
JoinedToRaiseBeforeComponents := TSCSComponents.Create(false);
|
||
JoinedToRaiseAfterComponents := TSCSComponents.Create(false);
|
||
try
|
||
i := 0;
|
||
while i <= RaiseObject.ComponentReferences.Count - 1 do
|
||
begin
|
||
RaiseComponent := RaiseObject.ComponentReferences[i];
|
||
|
||
DefineJoinedComponentsByJoinedObjects(JoinedToRaiseBeforeComponents, RaiseComponent, BeforeRaiseObjects);
|
||
DefineJoinedComponentsByJoinedObjects(JoinedToRaiseAfterComponents, RaiseComponent, AfterRaiseObjects);
|
||
|
||
RaiseComponent.DisJoinFromAll(false).Free;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20> RaiseComponent <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
IsDeletedRaiseComponent := false;
|
||
if (JoinedToRaiseBeforeComponents.Count > 0) or (JoinedToRaiseAfterComponents.Count > 0) then
|
||
begin
|
||
if RaiseComponent.IsLine = biTrue then
|
||
TF_Main(GForm).MoveComponComplectsToUp(RaiseComponent, RaiseComponent.TreeViewNode);
|
||
|
||
TF_Main(GForm).DelCompon(RaiseComponent, nil, false, true, true, false);
|
||
IsDeletedRaiseComponent := true;
|
||
end;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BeforeComponents <20> AfterComponents
|
||
for j := 0 to JoinedToRaiseBeforeComponents.Count - 1 do
|
||
begin
|
||
BeforeComponent := JoinedToRaiseBeforeComponents[j];
|
||
BeforeObject := BeforeComponent.GetFirstParentCatalog;
|
||
BeforeObjectSide := -1;
|
||
for k := 0 to JoinedToRaiseAfterComponents.Count - 1 do
|
||
begin
|
||
AfterComponent := JoinedToRaiseAfterComponents[k];
|
||
AfterObject := AfterComponent.GetFirstParentCatalog;
|
||
AfterObjectSide := GetNumSideByObject(AfterObject, AJoinedAfterRaise);
|
||
|
||
if BeforeObjectSide = -1 then
|
||
BeforeObjectSide := GetNumSideByObject(BeforeObject, AJoinedBeforeRaise);
|
||
if (BeforeObjectSide <> -1) and (AfterObjectSide <> -1) then
|
||
if BeforeComponent.JoinTo(AfterComponent, BeforeObjectSide, AfterObjectSide, true).CanConnect then
|
||
Result := true;
|
||
end;
|
||
end;
|
||
if Not IsDeletedRaiseComponent then
|
||
Inc(i);
|
||
end;
|
||
finally
|
||
FreeAndNil(JoinedToRaiseBeforeComponents);
|
||
FreeAndNil(JoinedToRaiseAfterComponents);
|
||
FreeAndNil(BeforeRaiseObjects);
|
||
FreeAndNil(AfterRaiseObjects);
|
||
end;
|
||
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.MakeCabling(AIDObjectList: Tlist; ASaveForUndo: Boolean): Boolean;
|
||
var CatalogList: TSCSCatalogs;
|
||
ComponCount: Integer;
|
||
Catalog1: TSCSCatalog;
|
||
Catalog2: TSCSCatalog;
|
||
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
i, j, k, l: Integer;
|
||
Side1, Side2: Integer;
|
||
WasUnion: Boolean;
|
||
SavedForUndo: Boolean;
|
||
ListOwner: TSCSList;
|
||
|
||
{function UnionInterfaces(AInterfaces1, AInterfaces2: TList): Boolean;
|
||
var i: Integer;
|
||
ptrInterface1: TSCSInterface;
|
||
ptrInterface2: TSCSInterface;
|
||
InterfCount: Integer;
|
||
WasUnionInterf: Boolean;
|
||
begin
|
||
Result := false;
|
||
WasUnionInterf := false;
|
||
if AInterfaces1.Count < AInterfaces2.Count then
|
||
InterfCount := AInterfaces1.Count
|
||
else
|
||
InterfCount := AInterfaces2.Count;
|
||
|
||
for i := 0 to InterfCount - 1 do
|
||
begin
|
||
ptrInterface1 := AInterfaces1.Items[i];
|
||
ptrInterface2 := AInterfaces2.Items[i];
|
||
WasUnionInterf := TF_Main(GForm).UnionInterfaces(ptrInterface1.ID, ptrInterface2.ID, cnkVarious or cnkMaleMale);
|
||
end;
|
||
Result := WasUnionInterf;
|
||
end; }
|
||
function UnionInterfaces(AInterfaces1, AInterfaces2: TSCSInterfaces): Boolean;
|
||
var i, j: Integer;
|
||
ptrInterface1: TSCSInterface;
|
||
ptrInterface2: TSCSInterface;
|
||
InterfCount: Integer;
|
||
WasUnionInterf: Boolean;
|
||
begin
|
||
Result := false;
|
||
WasUnionInterf := false;
|
||
if AInterfaces1.Count < AInterfaces2.Count then
|
||
InterfCount := AInterfaces1.Count
|
||
else
|
||
InterfCount := AInterfaces2.Count;
|
||
|
||
{for i := 0 to AInterfaces1.Count - 1 do
|
||
begin
|
||
ptrInterface1 := AInterfaces1.Items[i];
|
||
for j := 0 to AInterfaces2.Count - 1 do
|
||
begin
|
||
ptrInterface2 := AInterfaces2.Items[j];
|
||
//if CanConnectInterfaces(ptrInterface1, ptrInterface2, cnkVarious or cnkMaleMale) = chrSuccess then
|
||
if ptrInterface1.ID <> ptrInterface2.ID then
|
||
WasUnionInterf := TF_Main(GForm).UnionInterfaces(ptrInterface1.ID, ptrInterface2.ID, cnkVarious or cnkMaleMale);
|
||
end;
|
||
end; }
|
||
|
||
//for i := 0 to InterfCount - 1 do
|
||
//begin
|
||
// ptrInterface1 := AInterfaces1.Items[i];
|
||
// ptrInterface2 := AInterfaces2.Items[i];
|
||
// //if CanConnectInterfaces(ptrInterface1, ptrInterface2, cnkVarious or cnkMaleMale) = chrSuccess then
|
||
// if ptrInterface1.ID <> ptrInterface2.ID then
|
||
// if (ptrInterface1.Side = Side1) and (ptrInterface2.Side = Side2) then
|
||
// WasUnionInterf := TF_Main(GForm).UnionInterfaces(ptrInterface1, ptrInterface2, cnkVarious or cnkMaleMale);
|
||
//end;
|
||
|
||
for i := 0 to AInterfaces1.Count - 1 do
|
||
begin
|
||
ptrInterface1 := AInterfaces1[i];
|
||
for j := 0 to AInterfaces2.Count - 1 do
|
||
begin
|
||
ptrInterface2 := AInterfaces2[j];
|
||
//if CanConnectInterfaces(ptrInterface1, ptrInterface2, cnkVarious or cnkMaleMale) = chrSuccess then
|
||
if (ptrInterface1.ID <> ptrInterface2.ID) and
|
||
(ptrInterface1.ID_Component <> ptrInterface2.ID_Component) and
|
||
(ptrInterface1.TypeI = itFunctional) and (ptrInterface2.TypeI = itFunctional) and
|
||
(ptrInterface1.Side = Side1) and (ptrInterface2.Side = Side2) then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if Not(ptrInterface1.CheckJoinToComponent(ptrInterface2.ComponentOwner)) and
|
||
Not(ptrInterface2.CheckJoinToComponent(ptrInterface1.ComponentOwner)) then
|
||
WasUnionInterf := TF_Main(GForm).UnionInterfaces(ptrInterface1, ptrInterface2, cnkVarious or cnkMaleMale);
|
||
end;
|
||
end;
|
||
end;
|
||
Result := WasUnionInterf;
|
||
end;
|
||
|
||
begin
|
||
Result := false;
|
||
try
|
||
SavedForUndo := false;
|
||
WasUnion := false;
|
||
|
||
GDragPrevTickCount := GetTickCount;
|
||
CatalogList := GetCatalogList(AIDObjectList, ComponCount);
|
||
if CatalogList = nil then
|
||
Exit; ///// EXIT /////
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
try
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCSComponent1 <20> SCSComponent2 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to CatalogList.Count - 1 do
|
||
begin
|
||
Catalog1 := CatalogList.Items[i];
|
||
for j := 0 to Catalog1.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent1 := Catalog1.SCSComponents.Items[j];
|
||
for k := 0 to CatalogList.Count - 1 do
|
||
begin
|
||
Catalog2 := CatalogList.Items[k];
|
||
if Catalog2.ID <> Catalog1.ID then
|
||
begin
|
||
for l := 0 to Catalog2.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent2 := Catalog2.SCSComponents.Items[l];
|
||
if SCSComponent1.ID <> SCSComponent2.ID then
|
||
begin
|
||
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCSComponent1 <20> SCSComponent2 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//Tolik
|
||
// <20><>...<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||
// <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20>.<2E>.
|
||
if ((SCSComponent1.Cypher = SCSComponent2.Cypher) and (SCSComponent1.Cypher = F_NormBase.GSCSBase.SCSComponent.Cypher) and
|
||
(SCSComponent2.Cypher = F_NormBase.GSCSBase.SCSComponent.Cypher)) then
|
||
begin
|
||
//
|
||
if SCSComponent1.Whole_ID = SCSComponent2.Whole_ID then
|
||
begin
|
||
if SCSComponent1.JoinedComponents.IndexOf(SCSComponent2) <> -1 then
|
||
begin
|
||
//Tolik
|
||
{ if (not F_PEAutoTraceDialog.FromAutoTraceDialog) or (F_PEAutoTraceDialog.FromAutoTraceDialog and
|
||
(F_PEAutoTraceDialog.IgnoreExistingCable.Visible and (not F_PEAutoTraceDialog.IgnoreExistingCable.Checked))) then
|
||
begin}
|
||
// UNDO
|
||
if ASaveForUndo and Not SavedForUndo then
|
||
begin
|
||
ListOwner := SCSComponent1.GetListOwner;
|
||
if ListOwner <> nil then
|
||
begin
|
||
SaveListToUndoStack(ListOwner.CurrID);
|
||
SavedForUndo := true;
|
||
end;
|
||
end;
|
||
|
||
if ((SCSComponent1.IDNetType in [3,{4,}5,7])and(SCSComponent2.IDNetType in [3,{4,}5,7])) then
|
||
begin
|
||
if (CheckComponentsForSideSection(SCSComponent1))and(CheckComponentsForSideSection(SCSComponent2)) then
|
||
SCSComponent1.DisJoinFrom(SCSComponent2);
|
||
end
|
||
else
|
||
SCSComponent1.DisJoinFrom(SCSComponent2);
|
||
{ end
|
||
else
|
||
begin
|
||
if F_PEAutoTraceDialog.FromAutoTraceDialog and F_PEAutoTraceDialog.IgnoreExistingCable.Visible and
|
||
F_PEAutoTraceDialog.IgnoreExistingCable.Checked then
|
||
begin
|
||
// UNDO
|
||
if ASaveForUndo and Not SavedForUndo then
|
||
begin
|
||
ListOwner := SCSComponent1.GetListOwner;
|
||
if ListOwner <> nil then
|
||
begin
|
||
SaveListToUndoStack(ListOwner.CurrID);
|
||
SavedForUndo := true;
|
||
end;
|
||
end;
|
||
|
||
if (Catalog1.LastAddedComponent <> nil) and (Catalog2.LastAddedComponent <> nil) and (SCSComponent1 = Catalog1.LastAddedComponent) and
|
||
(SCSComponent2 = Catalog2.LastAddedComponent) then
|
||
begin
|
||
if ((SCSComponent1.IDNetType in [3,4,5,7])and(SCSComponent2.IDNetType in [3,4,5,7])) then
|
||
begin
|
||
if (CheckComponentsForSideSection(SCSComponent1))and(CheckComponentsForSideSection(SCSComponent2)) then
|
||
SCSComponent1.DisJoinFrom(SCSComponent2);
|
||
end
|
||
else
|
||
SCSComponent1.DisJoinFrom(SCSComponent2);
|
||
end;
|
||
end;
|
||
end; }
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
for i := 0 to CatalogList.Count - 1 do
|
||
begin
|
||
Catalog1 := CatalogList.Items[i];
|
||
for j := 0 to Catalog1.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent1 := Catalog1.SCSComponents.Items[j];
|
||
for k := 0 to CatalogList.Count - 1 do
|
||
begin
|
||
Catalog2 := CatalogList.Items[k];
|
||
if Catalog2.ID <> Catalog1.ID then
|
||
begin
|
||
for l := 0 to Catalog2.SCSComponents.Count - 1 do
|
||
begin
|
||
SCSComponent2 := Catalog2.SCSComponents.Items[l];
|
||
if SCSComponent1.ID <> SCSComponent2.ID then
|
||
// Tolik
|
||
// <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// if ((SCSComponent1.Cypher <> SCSComponent2.Cypher) or (SCSComponent1.isLine = biFalse) or (SCSComponent2.isLine = biFalse)) then
|
||
if ((SCSComponent1.Cypher = SCSComponent2.Cypher) and (SCSComponent1.Cypher = F_NormBase.GSCSBase.SCSComponent.Cypher) and
|
||
(SCSComponent2.Cypher = F_NormBase.GSCSBase.SCSComponent.Cypher)) then
|
||
//
|
||
begin
|
||
if TF_Main(GForm).CanConnCompon(SCSComponent1, SCSComponent2, cntUnion, smtNone) then
|
||
begin
|
||
GetSidesByConnectedFigures(SCSComponent1.ListID, SCSComponent2.ListID, Catalog1.SCSID, Catalog2.SCSID, Side1, Side2);
|
||
if (Side1 <> -1) and (Side2 <> -1) then
|
||
begin
|
||
if ((SCSComponent1.IDNetType in [3,{4,}5,7])and(SCSComponent2.IDNetType in [3,{4,}5,7])) then
|
||
begin
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> SideSection <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (CheckComponentsForSideSection(SCSComponent1))and(CheckComponentsForSideSection(SCSComponent2)) then
|
||
begin
|
||
WasUnion := UnionInterfaces(SCSComponent1.Interfaces, SCSComponent2.Interfaces);
|
||
if WasUnion then
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OnAfterJoinCompons <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
OnAfterJoinCompons(SCSComponent1, SCSComponent2, Side1, Side2);
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
WasUnion := UnionInterfaces(SCSComponent1.Interfaces, SCSComponent2.Interfaces);
|
||
if WasUnion then
|
||
OnAfterJoinCompons(SCSComponent1, SCSComponent2, Side1, Side2);
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
Result := WasUnion;
|
||
|
||
if WasUnion then
|
||
TF_Main(GForm).RefreshNode;
|
||
|
||
GDragCurrTickCount := GetTickCount - GDragPrevTickCount;
|
||
GDragCurrTickCount := GetTickCount - GDragPrevTickCount;
|
||
finally
|
||
Screen.Cursor := crDefault;
|
||
CatalogList.Free;
|
||
//FreeCatalogList(CatalogList);
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.MakeCabling: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
function TF_ChoiceConnectSide.DisconnectObjects(AIDObjectList1, AIDObjectList2: Tlist): Boolean;
|
||
var CatalogList1: TSCSCatalogs;
|
||
CatalogList2: TSCSCatalogs;
|
||
|
||
Catalog1: TSCSCatalog;
|
||
Catalog2: TSCSCatalog;
|
||
i, j, k ,l: Integer;
|
||
SCSComponent1: TSCSComponent;
|
||
SCSComponent2: TSCSComponent;
|
||
WasDisconnect: Boolean;
|
||
WasBreak: Boolean;
|
||
|
||
function GetCatalogList(AIDObjectList: Tlist): TSCSCatalogs;
|
||
var Reslist: TSCSCatalogs;
|
||
i: Integer;
|
||
Catalog: TSCSCatalog;
|
||
begin
|
||
Result := nil;
|
||
ResList := TSCSCatalogs.Create(false);
|
||
|
||
for i := 0 to AIDObjectList.Count - 1 do
|
||
begin
|
||
Catalog := nil;
|
||
Catalog := TF_Main(GForm).GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(Integer(AIDObjectList.Items[i]^));
|
||
if Catalog <> nil then
|
||
Reslist.Add(Catalog);
|
||
|
||
//Catalog := TSCSCatalog.Create(TForm(F_ProjMan));
|
||
//Catalog.ID := F_ProjMan.DM.GetIDCatalogByIDFigure(Integer(AIDObjectList.Items[i]^));
|
||
//Catalog.LoadAllComponentsByObjectID(Catalog.ID, [fiMarkID, fiIsLine, fiIDComponentType, fiIDProducer, fiIDNetType, fiIDNormBase, fiObjectID, fiWholeID]);
|
||
//Reslist.Add(Catalog);
|
||
end;
|
||
Result := Reslist;
|
||
//if Reslist.Count = 0 then
|
||
// Reslist.Free
|
||
//else
|
||
// Result := Reslist;
|
||
end;
|
||
|
||
(*
|
||
function DisconnectCompons(ACompon1, ACompon2: TSCSComponent): Boolean;
|
||
var ConnectCompRelList: TList;
|
||
IDCompRel: Integer;
|
||
strIDCompon1, StrIDCompon2: String;
|
||
i: Integer;
|
||
begin
|
||
try
|
||
Result := false;
|
||
//ConnectCompRelList := TList.Create;
|
||
with F_ProjMan do
|
||
begin
|
||
{
|
||
ChangeSQLQuery(DM.scsQ1, ' select id from component_relation '+
|
||
' where ((id_Component = :id_component) and (id_child = :id_child)) or '+
|
||
' ((id_Component = :id_child) and (id_child = :id_component)) and '+
|
||
' (connect_type = '''+IntToStr(cntUnion)+''') ');
|
||
DM.scsQ1.SetParamAsInteger('id_component', ACompon1.ID);
|
||
DM.scsQ1.SetParamAsInteger('id_child', ACompon2.ID);
|
||
DM.scsQ1.ExecQuery;
|
||
DM.IntFieldToList(ConnectCompRelList, DM.scsQ1, 'id');
|
||
}
|
||
|
||
strIDCompon1 := IntToStr(ACompon1.ID);
|
||
StrIDCompon2 := IntToStr(ACompon2.ID);
|
||
ConnectCompRelList := DM.GetCompRelFieldValueListByFilter(fnID, '((id_Component = '''+strIDCompon1+''') and (id_child = '''+strIDCompon2+''')) or '+
|
||
'((id_Component = '''+strIDCompon2+''') and (id_child = '''+strIDCompon1+''')) and '+
|
||
'(connect_type = '''+IntToStr(cntUnion)+''')');
|
||
for i := 0 to ConnectCompRelList.Count - 1 do
|
||
begin
|
||
IDCompRel := Integer(ConnectCompRelList.Items[i]^);
|
||
FreeCompRel(IDCompRel);
|
||
Result := true;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
OnAfterDisJoinCompons(ACompon1, ACompon2);
|
||
end;
|
||
end;
|
||
finally
|
||
FreeList(ConnectCompRelList);
|
||
end;
|
||
end; *)
|
||
// Tolik 18/05/2018 --
|
||
Procedure ClearLists;
|
||
begin
|
||
if CatalogList1 <> nil then
|
||
CatalogList1.free;
|
||
if CatalogList2 <> nil then
|
||
CatalogList2.free;
|
||
end;
|
||
//
|
||
begin
|
||
Result := false;
|
||
CatalogList1 := nil; // Tolik 18/05/2018 --
|
||
CatalogList2 := nil; // Tolik 18/05/2018 --
|
||
try
|
||
WasDisconnect := false;
|
||
//TF_Main(GForm).Tree_Catalog.Items.BeginUpdate;
|
||
|
||
CatalogList1 := GetCatalogList(AIDObjectList1);
|
||
CatalogList2 := GetCatalogList(AIDObjectList2);
|
||
if (CatalogList1 = nil) or (CatalogList2 = nil) then
|
||
begin
|
||
ClearLists; // Tolik 18/05/2018 --
|
||
Exit; ///// EXIT /////
|
||
end;
|
||
|
||
try
|
||
for i := 0 to CatalogList1.Count - 1 do
|
||
begin
|
||
Catalog1 := CatalogList1.Items[i];
|
||
for j := 0 to Catalog1.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent1 := Catalog1.ComponentReferences.Items[j];
|
||
WasBreak := false;
|
||
|
||
for k := 0 to CatalogList2.Count - 1 do
|
||
begin
|
||
Catalog2 := CatalogList2.Items[k];
|
||
for l := 0 to Catalog2.ComponentReferences.Count - 1 do
|
||
begin
|
||
SCSComponent2 := Catalog2.ComponentReferences.Items[l];
|
||
if SCSComponent1.DisJoinFrom(SCSComponent2) then
|
||
//if DisconnectCompons(SCSComponent1, SCSComponent2, cntUnion) then
|
||
begin
|
||
WasDisconnect := true;
|
||
WasBreak := true;
|
||
Break;
|
||
end;
|
||
end;
|
||
if WasBreak then
|
||
Break;
|
||
end;
|
||
end;
|
||
end;
|
||
Result := WasDisconnect;
|
||
finally
|
||
CatalogList1.Free;
|
||
CatalogList2.Free;
|
||
//FreeCatalogList(CatalogList1);
|
||
//FreeCatalogList(CatalogList2);
|
||
end;
|
||
except
|
||
On E: Exception do AddExceptionToLog('TF_ChoiceConnectSide.DisconnectObjects: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
|
||
{
|
||
function TF_ChoiceConnectSide.DisconnectObjects(AIDObject1, AIDObject2: Integer): Boolean;
|
||
var Catalog1: TSCSCatalog;
|
||
Catalog2: TSCSCatalog;
|
||
i, j: Integer;
|
||
ptrSCSComponent1: PSCSComponent;
|
||
ptrSCSComponent2: PSCSComponent;
|
||
WasDisconnect: Boolean;
|
||
|
||
function DisconnectCompons(ACompon1, ACompon2: PSCSComponent): Boolean;
|
||
var ConnectCompRelList: TList;
|
||
IDCompRel: Integer;
|
||
i: Integer;
|
||
begin
|
||
try
|
||
Result := false;
|
||
ConnectCompRelList := TList.Create;
|
||
with F_ProjMan do
|
||
begin
|
||
DM.scsQSelect.Close;
|
||
DM.scsQSelect.ParamByName('id_component').AsInteger := ACompon1.ID;
|
||
DM.scsQSelect.ParamByName('id_child').AsInteger := ACompon2.ID;
|
||
DM.scsQSelect.ExecQuery;
|
||
DM.IntFieldToList(ConnectCompRelList, DM.scsQSelect, 'id');
|
||
for i := 0 to ConnectCompRelList.Count - 1 do
|
||
begin
|
||
IDCompRel := Integer(ConnectCompRelList.Items[i]^);
|
||
FreeCompRel(IDCompRel);
|
||
Result := true;
|
||
end;
|
||
end;
|
||
finally
|
||
FreeList(ConnectCompRelList);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
try
|
||
try
|
||
Result := false;
|
||
WasDisconnect := false;
|
||
|
||
with F_ProjMan.DM do
|
||
begin
|
||
Catalog1 := TSCSCatalog.Create(TForm(F_ProjMan));
|
||
Catalog2 := TSCSCatalog.Create(TForm(F_ProjMan));
|
||
|
||
Catalog1.ID := GetIDCatalogByIDFigure(AIDObject1);
|
||
Catalog2.ID := GetIDCatalogByIDFigure(AIDObject2);
|
||
|
||
Catalog1.LoadComponents(Catalog1.ID, false);
|
||
Catalog2.LoadComponents(Catalog2.ID, false);
|
||
|
||
ChangeSQLQuery(scsQSelect, ' select id from component_relation '+
|
||
' where ((id_Component = :id_component) and (id_child = :id_child)) or '+
|
||
' ((id_Component = :id_child) and (id_child = :id_component)) and '+
|
||
' (connect_type = '''+IntToStr(cntUnion)+''') ');
|
||
for i := 0 to Catalog1.SCSComponents.Count - 1 do
|
||
begin
|
||
ptrSCSComponent1 := Catalog1.SCSComponents.Items[i];
|
||
for j := 0 to Catalog2.SCSComponents.Count - 1 do
|
||
begin
|
||
ptrSCSComponent2 := Catalog2.SCSComponents.Items[j];
|
||
if DisconnectCompons(ptrSCSComponent1, ptrSCSComponent2) then
|
||
WasDisconnect := true;
|
||
end;
|
||
end;
|
||
Result := WasDisconnect;
|
||
end;
|
||
except
|
||
On E: Exception do AddExceptionToLog('DisconnectObjectsInPM: '+E.Message);
|
||
end;
|
||
finally
|
||
Catalog1.Free;
|
||
Catalog2.Free;
|
||
end;
|
||
end;
|
||
}
|
||
|
||
|
||
|
||
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
procedure TF_ChoiceConnectSide.LoadTrassaName(AListItem: TListItem);
|
||
var SCSComponentLV: TSCSComponent;
|
||
SCSComponent: TSCSComponent;
|
||
OwnerCatalog: TSCSCatalog;
|
||
begin
|
||
SCSComponentLV := AListItem.Data;
|
||
if SCSComponentLV <> nil then
|
||
with TF_Main(GForm) do
|
||
begin
|
||
OwnerCatalog := nil;
|
||
SCSComponent := GSCSBase.CurrProject.GetComponentFromReferences(SCSComponentLV.ID);
|
||
if SCSComponent <> nil then
|
||
OwnerCatalog := SCSComponent.GetFirstParentCatalog;
|
||
if OwnerCatalog <> nil then
|
||
begin
|
||
AListItem.SubItems.Add(OwnerCatalog.Name);
|
||
AListItem.SubItemImages[0] := OwnerCatalog.ItemType;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
constructor TF_ChoiceConnectSide.Create(AOwner: TComponent; AForm: TForm);
|
||
begin
|
||
GForm := AForm;
|
||
inherited Create(AOwner);
|
||
end;
|
||
|
||
destructor TF_ChoiceConnectSide.Destroy;
|
||
begin
|
||
inherited Destroy;
|
||
end;
|
||
|
||
|
||
// #############################################################################
|
||
// #############################################################################
|
||
//
|
||
|
||
|
||
procedure TF_ChoiceConnectSide.Panel_OKCancelResize(Sender: TObject);
|
||
begin
|
||
SetMiddleControlChilds(TControl(Sender), TControl(Self));
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.Timer_UpdateOnJoinTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
TF_Main(GForm).GSCSBase.CurrProject.UpdateComponsChangedFields;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.Timer_UpdateOnDisJoinTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
TF_Main(GForm).GSCSBase.CurrProject.UpdateComponsChangedFields;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.Timer_RefreshAllListsTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
RefreshAllLists;
|
||
end;
|
||
|
||
procedure TF_ChoiceConnectSide.Timer_DefineObjetsParamsInCADTimer(
|
||
Sender: TObject);
|
||
var
|
||
i: Integer;
|
||
// Tolik 28/08/2019 --
|
||
//OldTick, CurrTick: Cardinal;
|
||
OldTick, CurrTick: DWord;
|
||
//
|
||
begin
|
||
// Tolik 27/10/2017 - -
|
||
if GCanExecuteTimer_DefineObjectsParamsInCAD then
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
|
||
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
TF_Main(GForm).GSCSBase.CurrProject.DefineSpravDataFromOtherSpravByNewGUIDs(F_NormBase.GSCSBase.NBSpravochnik);
|
||
|
||
OldTick := GetTickCount;
|
||
TF_Main(GForm).GSCSBase.CurrProject.DefineObjectsParamsInCADByServFld;
|
||
CurrTick := GetTickCount - OldTick;
|
||
CurrTick := GetTickCount - OldTick;
|
||
end;
|
||
end;
|
||
|
||
end.
|