expertcad/SRC/Main/USCS_Main.pas
2025-05-12 10:21:16 +03:00

27368 lines
938 KiB
ObjectPascal

//{$A+,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
//{$MINSTACKSIZE $00004000}
//{$MAXSTACKSIZE $00100000}
//{$IMAGEBASE $00400000}
//{$APPTYPE GUI}
unit USCS_Main;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ActnMan, ActnCtrls, ActnMenus, ActnList, Menus,
ComCtrls, ExtCtrls, StdCtrls, StdActns, ExtActns, cxControls, cxContainer, cxEdit, cxTextEdit,
cxMaskEdit, cxButtonEdit, ImgList, Buttons, PDF, Math,
/// PowerCad
PCPanel, PCDrawBox, PCDrawing, PowerCad, pcMsbar, {XP_Panel,} PCTypesUtils,
DrawObjects, DlgBase, ExtDlgs, PCLayerDlg, OleCtnrs, PCgui, GuiStrings,
DrawEngine, U_ESCadClasess, ColorGrd, Mask, RzCmboBx, RzLstBox, RzEdit,
RzButton, RzSpnEdt, RzBorder, RzCommon, AppEvnts, cxLookAndFeelPainters,
cxButtons, RzShellDialogs, Clipbrd, cxDropDownEdit, RzPanel, RzPopups, Shellapi, Contnrs,
siComp, siLngLnk, RzLabel, RzDBLbl, DCPcrypt2, DCPblockciphers,
DCPcast256, DCPripemd128, DCPmd4, IsPlugEdit, exgrid, ISCalendar, cxLabel,
RzRadChk, RzListVw, Printers, FPlan, LibJpeg, U_ArchCommon, KeyBoard,
RzSplit, FR_Class, FR_DSet, FR_DBSet, FR_View,
U_Common_Classes, FR_Desgn, FR_PrDlg, FR_Prntr, FastStrings,
//Tolik
U_ReindexMaster, GLObjects, cxGraphics, cxLookAndFeels,
PlatformDefaultStyleActnCtrls, {DBTables, SQLMemMain}{Tolik}GLKeyBoard, U_SelLists, DockTabSet,
XPMenu;
//TODO XPMenu, ÷òîáû þçàëñÿ òîò, ÷òî âîçëå ôàéëà USCS_Main â îðèãèíàëüíîé ïàïêå êîìïîíåíòà ïåðåèìåíîâàòü ïàñî÷êó è äêó-øêó
type
TSurfaceWin = class(TWinControl);
TMyLoglist = class(TMyObject)
private
StrList: TStringList;
FFileName: string;
public
constructor Create(aFName: string);
destructor Destroy; override;
procedure Add(aStr: string);
end;
{TSplitter = class(ExtCtrls.TSplitter)
private
FOnMouseDown: TMouseEvent;
FOnMouseUp: TMouseEvent;
FOldMouseMoveTick: Cardinal;
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
published
property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
end;}
TFSCS_Main = class(TForm)
ActionManager: TActionManager;
aSaveAsSubstrate: TAction;
aExport: TAction;
aImport: TAction;
aPrevView: TAction;
aPrint: TAction;
aExit: TAction;
aClose: TAction;
aUndo: TAction;
aRedo: TAction;
aCopy: TAction;
aCut: TAction;
aPaste: TAction;
aSelectAll: TAction;
aAllScreen: TAction;
a50: TAction;
a75: TAction;
a100: TAction;
a150: TAction;
a200: TAction;
aInc: TAction;
aInc1pt: TAction;
aDec1pt: TAction;
aShowRuler: TAction;
aShowGrid: TAction;
aViewBtnPanel: TAction;
aViewNormBase: TAction;
aViewLayers: TAction;
aViewCADObjectsProp: TAction;
aViewNavigator: TAction;
aRotate: TAction;
aBackwards: TAction;
aForward: TAction;
aGrouping: TAction;
aUngrouping: TAction;
aLock: TAction;
aUnlock: TAction;
aObjProperties: TAction;
aScale: TAction;
aNewWindow: TAction;
aCloseAllWindows: TAction;
aHelp: TAction;
aPresentation: TAction;
aInteractive: TAction;
aWizards: TAction;
aTechDoc: TAction;
aToAuthors: TAction;
aBuy: TAction;
aAbout: TAction;
aNew: TAction;
aLoadSubstrate: TAction;
PrintDialog: TPrintDialog;
pmObject: TPopupMenu;
MainMenu: TMainMenu;
mainFile: TMenuItem;
mainEdit: TMenuItem;
mainView: TMenuItem;
mainObject: TMenuItem;
mainFormat: TMenuItem;
mainSCS: TMenuItem;
mainWindow: TMenuItem;
mainHelp: TMenuItem;
N135: TMenuItem;
N136: TMenuItem;
N137: TMenuItem;
N140: TMenuItem;
N141: TMenuItem;
N142: TMenuItem;
N143: TMenuItem;
N145: TMenuItem;
N146: TMenuItem;
N147: TMenuItem;
N148: TMenuItem;
N151: TMenuItem;
N152: TMenuItem;
N153: TMenuItem;
N154: TMenuItem;
N155: TMenuItem;
N156: TMenuItem;
N157: TMenuItem;
N158: TMenuItem;
N159: TMenuItem;
N160: TMenuItem;
N161: TMenuItem;
N162: TMenuItem;
N163: TMenuItem;
N501: TMenuItem;
N751: TMenuItem;
N1001: TMenuItem;
N1501: TMenuItem;
N2001: TMenuItem;
N164: TMenuItem;
N165: TMenuItem;
N166: TMenuItem;
N168: TMenuItem;
N173: TMenuItem;
N174: TMenuItem;
N175: TMenuItem;
N178: TMenuItem;
N179: TMenuItem;
N181: TMenuItem;
N182: TMenuItem;
N183: TMenuItem;
N184: TMenuItem;
N185: TMenuItem;
N186: TMenuItem;
N190: TMenuItem;
N191: TMenuItem;
N192: TMenuItem;
N204: TMenuItem;
N206: TMenuItem;
N216: TMenuItem;
N217: TMenuItem;
N219: TMenuItem;
N220: TMenuItem;
N221: TMenuItem;
Wizards2: TMenuItem;
N222: TMenuItem;
N223: TMenuItem;
N224: TMenuItem;
Online2: TMenuItem;
N225: TMenuItem;
N226: TMenuItem;
pmList: TPopupMenu;
pmText: TPopupMenu;
pmiObjectProps: TMenuItem;
N227: TMenuItem;
N229: TMenuItem;
N230: TMenuItem;
N231: TMenuItem;
N232: TMenuItem;
N233: TMenuItem;
pmiListAllScreen: TMenuItem;
pmiList50: TMenuItem;
pmiList75: TMenuItem;
pmiList100: TMenuItem;
pmiList150: TMenuItem;
pmiList200: TMenuItem;
pmiListInc: TMenuItem;
pmiListInc1pt: TMenuItem;
pmiListDec1pt: TMenuItem;
pmiListBackgroundColor: TMenuItem;
N239: TMenuItem;
N240: TMenuItem;
N241: TMenuItem;
N242: TMenuItem;
N243: TMenuItem;
aViewProjectManager: TAction;
N1: TMenuItem;
aNewList: TAction;
PDock1: TPanel;
sDiv1: TSplitter;
sDiv2: TSplitter;
pDock2: TPanel;
pCADList: TPanel;
pageCADList: TPageControl;
aDelete: TAction;
aDeleteAll: TAction;
aDeSelectAll: TAction;
N2: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
aInsertText: TAction;
aInsertBitmap: TAction;
aPenStyle: TAction;
aPenColor: TAction;
aPenWidth: TAction;
aRowStyle: TAction;
aBrushStyle: TAction;
aTextCharset: TAction;
aFontStyle: TAction;
mPenStyle: TMenuItem;
mPenColor: TMenuItem;
mPenw: TMenuItem;
mRowstyle: TMenuItem;
N26: TMenuItem;
mBrushStyle: TMenuItem;
mBrushColor: TMenuItem;
N29: TMenuItem;
mTextColor: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
aFormatOrder: TAction;
aFormatAlign: TAction;
N1191: TMenuItem;
N1192: TMenuItem;
N37: TMenuItem;
N1193: TMenuItem;
N1194: TMenuItem;
N1195: TMenuItem;
mainOptions: TMenuItem;
aGridType: TAction;
aShowCenterGuides: TAction;
aShowGuideLines: TAction;
aSnaptoGrid: TAction;
aSnaptoGuides: TAction;
aSnaptoNearObject: TAction;
aGridColor: TAction;
aGuideColor: TAction;
aBackgroundColor: TAction;
aPageColor: TAction;
aAngularGuides: TAction;
aRulerSystem: TAction;
aRulerMode: TAction;
aPageLayout: TAction;
aPageOrientation: TAction;
aGridStep: TAction;
ShowRulers1: TMenuItem;
ShowGrids1: TMenuItem;
GridType1: TMenuItem;
ShowCenterGuides1: TMenuItem;
ShowGuideLines1: TMenuItem;
SnaptoGrid1: TMenuItem;
SnaptoGuides1: TMenuItem;
SnaptoNearObject1: TMenuItem;
GridColor1: TMenuItem;
GuideColor1: TMenuItem;
BackgroundColor1: TMenuItem;
PageColor1: TMenuItem;
AngularGuides1: TMenuItem;
RulerSystem1: TMenuItem;
RulerMode1: TMenuItem;
PageLayout1: TMenuItem;
PageOrientation1: TMenuItem;
GridStep1: TMenuItem;
N39: TMenuItem;
PageWidth1: TMenuItem;
PageHeight1: TMenuItem;
N40: TMenuItem;
N41: TMenuItem;
aSendtoBack: TAction;
aBringtoFront: TAction;
aSendBackwards: TAction;
aBringForwards: TAction;
aalTop: TAction;
aalBottom: TAction;
aalXcenter: TAction;
aalLeft: TAction;
aalRight: TAction;
aalYCenter: TAction;
apsClear: TAction;
apsDash: TAction;
apsDashDot: TAction;
apsDashDotDot: TAction;
apsDot: TAction;
apsSolid: TAction;
mpsSolid: TMenuItem;
mpsDash: TMenuItem;
mpsDot: TMenuItem;
mpsDashDot: TMenuItem;
mpsDashDotDot: TMenuItem;
mpsClear: TMenuItem;
aPenw1: TAction;
aPenw2: TAction;
aPenw3: TAction;
aPenw4: TAction;
aPenw5: TAction;
aPenw6: TAction;
aPenw7: TAction;
mPenw1: TMenuItem;
mPenw2: TMenuItem;
mPenw3: TMenuItem;
mPenw4: TMenuItem;
mPenw5: TMenuItem;
mPenw6: TMenuItem;
mPenw7: TMenuItem;
arsBothLight: TAction;
arsBothSolid: TAction;
arsLeftLight: TAction;
arsLeftSolid: TAction;
arsNone: TAction;
arsRightLight: TAction;
arsRightSolid: TAction;
mrsBothLight: TMenuItem;
mrsBothSolid: TMenuItem;
mrsLeftLight: TMenuItem;
mrsLeftSolid: TMenuItem;
mrsNone: TMenuItem;
mrsRightLight: TMenuItem;
mrsRightSolid: TMenuItem;
absBDiagonal: TAction;
absClear: TAction;
absCross: TAction;
absDiagCross: TAction;
absFDiagonal: TAction;
absHorizontal: TAction;
absSolid: TAction;
absVertical: TAction;
mbsSolid: TMenuItem;
mbsClear: TMenuItem;
mbsHorizontal: TMenuItem;
mbsVertical: TMenuItem;
mbsFDiagonal: TMenuItem;
mbsBDiagonal: TMenuItem;
mbsCross: TMenuItem;
mbsDiagCross: TMenuItem;
aTextBold: TAction;
aTextItalic: TAction;
aTextUnderLine: TAction;
aTextStrikeThrough: TAction;
extBold1: TMenuItem;
extItalic1: TMenuItem;
extUnderLine1: TMenuItem;
extStrikeThrough1: TMenuItem;
aANSI_CHARSET: TAction;
aDEFAULT_CHARSET: TAction;
aRUSSIAN_CHARSET: TAction;
ANSICHARSET1: TMenuItem;
DEFAULTCHARSET1: TMenuItem;
RUSSIANCHARSET1: TMenuItem;
aLineGrid: TAction;
aPointGrid: TAction;
aCrossGrid: TAction;
N43: TMenuItem;
N44: TMenuItem;
N45: TMenuItem;
aAngularNone: TAction;
aAngular90: TAction;
aAngular30: TAction;
aAngular60: TAction;
aAngular45: TAction;
None1: TMenuItem;
N90Degrees1: TMenuItem;
N30Degrees1: TMenuItem;
N45Degrees1: TMenuItem;
N60Degrees1: TMenuItem;
aMetric: TAction;
aWitworth: TAction;
aPageMode: TAction;
aWorldMode: TAction;
aLandscape: TAction;
aPortrait: TAction;
N46: TMenuItem;
N47: TMenuItem;
N48: TMenuItem;
N49: TMenuItem;
N50: TMenuItem;
N52: TMenuItem;
aA0: TAction;
aA1: TAction;
aA2: TAction;
aA3: TAction;
aA4: TAction;
aA5: TAction;
aA6: TAction;
aB4: TAction;
aB5: TAction;
aTabloid: TAction;
aLetter: TAction;
aCustom: TAction;
A01: TMenuItem;
A11: TMenuItem;
A21: TMenuItem;
A31: TMenuItem;
A41: TMenuItem;
A51: TMenuItem;
A61: TMenuItem;
B41: TMenuItem;
B51: TMenuItem;
N53: TMenuItem;
N54: TMenuItem;
N55: TMenuItem;
cbMainPanel: TControlBar;
tbFile: TToolBar;
tbNew: TToolButton;
tbNewList: TToolButton;
tbPrevView: TToolButton;
tbPrint: TToolButton;
tbObject: TToolBar;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton12: TToolButton;
ToolButton15: TToolButton;
pmOrderSelection: TPopupMenu;
N56: TMenuItem;
N57: TMenuItem;
N58: TMenuItem;
N59: TMenuItem;
aMoveSelection: TAction;
aRotateSelection: TAction;
aDuplicateSelection: TAction;
aMirrorSelection: TAction;
aToolSelect: TAction;
aToolLine: TAction;
aToolRectangle: TAction;
aToolEllipse: TAction;
aToolCircle: TAction;
aToolArc: TAction;
aToolElipticArc: TAction;
aToolPolyLine: TAction;
aToolPoint: TAction;
aToolRichText: TAction;
aToolKnife: TAction;
aToolHDimLine: TAction;
aToolVDimLine: TAction;
pmPenStyle: TPopupMenu;
pmPenWidth: TPopupMenu;
pmRowStyle: TPopupMenu;
pmBrushStyle: TPopupMenu;
ppsClear: TMenuItem;
ppsDash: TMenuItem;
ppsDashDot: TMenuItem;
ppsDashDotDot: TMenuItem;
ppsDot: TMenuItem;
ppsSolid: TMenuItem;
pPenw1: TMenuItem;
pPenw2: TMenuItem;
pPenw3: TMenuItem;
pPenw4: TMenuItem;
pPenw5: TMenuItem;
pPenw6: TMenuItem;
pPenw7: TMenuItem;
prsBothLight: TMenuItem;
prsBothSolid: TMenuItem;
prsLeftLight: TMenuItem;
prsLeftSolid: TMenuItem;
prsNone: TMenuItem;
prsRightLight: TMenuItem;
prsRightSolid: TMenuItem;
pbsBDiagonal: TMenuItem;
pbsClear: TMenuItem;
pbsCross: TMenuItem;
pbsDiagCross: TMenuItem;
pbsFDiagonal: TMenuItem;
pbsHorizontal: TMenuItem;
pbsSolid: TMenuItem;
pbsVertical: TMenuItem;
imagePanel: TImageList;
aTextFont: TAction;
aTextSize: TAction;
ImageStyles: TImageList;
aNewLayer: TAction;
aDeleteLayer: TAction;
aMergeVisible: TAction;
aMergeAll: TAction;
aFlueInactives: TAction;
aHideInactives: TAction;
aShowAllLayers: TAction;
N11: TMenuItem;
aToolMultiLine: TAction;
aDisconnect: TAction;
aDivideLine: TAction;
aToolOrthoLine: TAction;
tbLayers: TToolBar;
ToolButton47: TToolButton;
ToolButton53: TToolButton;
ToolButton55: TToolButton;
aSetSubstrateLayer: TAction;
aSetSCSLayer: TAction;
pmiListPageColor: TMenuItem;
pmiObjectSplit0: TMenuItem;
pmiObjectSplit1: TMenuItem;
aSetDefaultColors: TAction;
pmSCSObject: TPopupMenu;
pmiSCSObjProperties: TMenuItem;
aFreeRotate: TAction;
pmiListGridStep: TMenuItem;
aRegHotKeys: TAction;
aUnregHotKeys: TAction;
N30: TMenuItem;
N42: TMenuItem;
aAutoSelectTrace: TAction;
aServerAsDefault: TAction;
tbLoadSubstrate: TToolButton;
aOpenProject: TAction;
aRealignLine: TAction;
pmiSCSObjRealignLine: TMenuItem;
ApplicationEvents1: TApplicationEvents;
pmiSCSObjServerAsDefault: TMenuItem;
aNotAsServerDefault: TAction;
pmiSCSObjNotAsServerDefault: TMenuItem;
pmiSCSObjDivideLine: TMenuItem;
pmiSCSObjDisconnect: TMenuItem;
aSelectTracetoServer: TAction;
pmiSCSObjSelectTracetoServer: TMenuItem;
aToolText: TAction;
aMakeCabling: TAction;
pmiSCSObjMakeCabling: TMenuItem;
N65: TMenuItem;
aViewSCSObjectsProp: TAction;
aViewSCS: TMenuItem;
aCreateRaise: TAction;
pmiSCSObjCreateRaise: TMenuItem;
aDestroyRaise: TAction;
pmiSCSObjDestroyRaise: TMenuItem;
aMasterAutoTrace: TAction;
N68: TMenuItem;
pmFiguresByLevel: TPopupMenu;
aListProperties: TAction;
N71: TMenuItem;
pmiListProperties: TMenuItem;
aRaiseLine: TAction;
pmiSCSObjRaiseLine: TMenuItem;
aCreateObjectOnClick: TAction;
aDeleteSCSObject: TAction;
pmiSCSObjDeleteSCSObject: TMenuItem;
aShowConnFullness: TAction;
aShowCableFullness: TAction;
aShowCableChannelFullness: TAction;
aCreateObjectOnClickTool: TAction;
aCreateFloorRaiseUp: TAction;
aCreateFloorRaiseDown: TAction;
aTileWindows: TAction;
pmiSCSObjCreateFloorRaiseUp: TMenuItem;
pmiSCSObjCreateFloorRaiseDown: TMenuItem;
aOrderWindow1: TMenuItem;
N75: TMenuItem;
aCascadeWindows: TAction;
aCreateBlockToNB: TAction;
aInsertBlock: TAction;
aBlocksEditor: TAction;
aRotatePointObject90: TAction;
aRotatePointObject270: TAction;
aRotatePointObject180: TAction;
aShiftUpObject: TAction;
aShiftDownObject: TAction;
aShiftLeftObject: TAction;
aShiftRightObject: TAction;
aProjectProperties: TAction;
aOpenProjectAtCurrNode: TAction;
aCloseCurrProject: TAction;
aLoadNewProjectFromFile: TAction;
aSaveAsSCSProject: TAction;
aComponProperties: TAction;
aToolPan: TAction;
a400: TAction;
aDisconnectPointObject: TAction;
aRepWizard: TAction;
aSaveAsBMP: TAction;
aDesignBox: TAction;
aShowTracesLengthLimit: TAction;
aSaveProject: TAction;
aCurrProjectProperties: TAction;
aManual_Currency: TAction;
aManual_Nettypes: TAction;
aManual_Producers: TAction;
aManual_Interfaces: TAction;
aManual_ObjProp: TAction;
aManual_Legends: TAction;
aManual_ComponTypes: TAction;
aManual_Norms: TAction;
aManual_Resources: TAction;
aManual_NDS: TAction;
pmiObjectSplit2: TMenuItem;
N83: TMenuItem;
N84: TMenuItem;
pmiSCSObjRotatePointObject90: TMenuItem;
pmiSCSObjRotatePointObject270: TMenuItem;
pmiSCSObjRotatePointObject180: TMenuItem;
ImageArrows: TImageList;
N86: TMenuItem;
N87: TMenuItem;
N88: TMenuItem;
N89: TMenuItem;
N91: TMenuItem;
pmiSCSObjComponProperties: TMenuItem;
N4001: TMenuItem;
pmiSCSObjDisconnectPointObject: TMenuItem;
cbLayers: TcxComboBox;
N94: TMenuItem;
nSave: TMenuItem;
pmiSCSObjDesignBox: TMenuItem;
N51: TMenuItem;
N60: TMenuItem;
N61: TMenuItem;
nManuals: TMenuItem;
N63: TMenuItem;
N64: TMenuItem;
N66: TMenuItem;
N67: TMenuItem;
N69: TMenuItem;
N72: TMenuItem;
N73: TMenuItem;
N74: TMenuItem;
N92: TMenuItem;
N93: TMenuItem;
aChoiceNBPath: TAction;
aChoicePMPath: TAction;
aChoiceBaseOptions: TAction;
nSettings: TMenuItem;
N97: TMenuItem;
N98: TMenuItem;
N99: TMenuItem;
N19: TMenuItem;
N76: TMenuItem;
aRegistration: TAction;
mRegister: TMenuItem;
aUpdateNormBase: TAction;
N77: TMenuItem;
tbSCSToolsExpert: TToolBar;
tbBlkUpExpert: TToolButton;
tbBlkDownExpert: TToolButton;
tbBlkLeftExpert: TToolButton;
tbBlkRightExpert: TToolButton;
aHistory: TAction;
N78: TMenuItem;
pmiList400: TMenuItem;
aConnectionsConfigurator: TAction;
N12: TMenuItem;
aNoMoveConnectedObjects: TAction;
TimerProcessMessages: TTimer;
aRealignObject: TAction;
pmiSCSObjRealignLine2: TMenuItem;
pmiSCSObjRealignObject: TMenuItem;
TimerOpenStart: TTimer;
TimerRefresh: TTimer;
aClearGuides: TAction;
pmiListClearGuides: TMenuItem;
aSaveToIBD: TAction;
N80: TMenuItem;
aToolSCSHDimLine: TAction;
aToolSCSVDimLine: TAction;
aToolWallRect: TAction;
aToolWallPath: TAction;
aDeleteWallPath: TAction;
aDeleteWallRect: TAction;
aDivSelPath: TAction;
aSetWallPathWidth: TAction;
aSetAllWallPathWidth: TAction;
aAddWindow: TAction;
aAddDoor: TAction;
aDeleteWindowDoor: TAction;
aSetSizeWindowDoor: TAction;
pmArchDesign: TPopupMenu;
N81: TMenuItem;
N85: TMenuItem;
N100: TMenuItem;
N101: TMenuItem;
N102: TMenuItem;
N103: TMenuItem;
N104: TMenuItem;
N105: TMenuItem;
N106: TMenuItem;
aLoadStamp: TAction;
aSaveStamp: TAction;
N107: TMenuItem;
N108: TMenuItem;
aWallPathShowLength: TAction;
N109: TMenuItem;
aLoadFPlan: TAction;
aSaveFPlan: TAction;
N110: TMenuItem;
N111: TMenuItem;
nOpen: TMenuItem;
ToolButton35: TToolButton;
tbSaveProject: TToolButton;
N113: TMenuItem;
aAddColumn: TAction;
N114: TMenuItem;
aDeleteColumn: TAction;
aSetColumnAngle: TAction;
aSetColumnHeight: TAction;
aSetColumnWidth: TAction;
N115: TMenuItem;
N116: TMenuItem;
N117: TMenuItem;
N118: TMenuItem;
aDesignBoxCaptionHeight: TAction;
aDesignBoxCaptionWidth: TAction;
pmiObjectSplit3: TMenuItem;
N120: TMenuItem;
N121: TMenuItem;
aSetPathLineWidth: TAction;
aSetPathLineStyle: TAction;
N122: TMenuItem;
N123: TMenuItem;
aSetAllPathLineWidth: TAction;
aSetAllPathLineStyle: TAction;
N124: TMenuItem;
N125: TMenuItem;
aManual_SuppliesKinds: TAction;
N126: TMenuItem;
aMasterCableChannel: TAction;
N127: TMenuItem;
aMasterCableTracing: TAction;
N128: TMenuItem;
aCreateBlockToFile: TAction;
N129: TMenuItem;
aChangeRaiseHeight: TAction;
pmiSCSObjChangeRaiseHeight: TMenuItem;
aCreateProjectPlan: TAction;
N131: TMenuItem;
aDisconnectFromRM: TAction;
aDisconnectAllConnectors: TAction;
pmiSCSObjDisconnectAllConnectors: TMenuItem;
pmiSCSObjDisconnectFromRM: TMenuItem;
aRemoveObjectOnHeight: TAction;
pmiSCSObjRemoveObjectOnHeight: TMenuItem;
FloatPanel1: TMenuItem;
aToolCabinet: TAction;
aSaveAsWMF: TAction;
aShowConfigurator: TAction;
pmiSCSObjShowConfigurator: TMenuItem;
aShowRepResources: TAction;
N138: TMenuItem;
aCreateNormsOnCad: TAction;
CAD1: TMenuItem;
pmCadNorms: TPopupMenu;
aNormsEdit: TAction;
aNormsProp: TAction;
pmiCNNormsEdit: TMenuItem;
pmiCNNormsProp: TMenuItem;
aMirrorView: TAction;
pmiSCSObjMirrorView: TMenuItem;
aCreateDuplicates: TAction;
pmiSCSObjCreateDuplicates: TMenuItem;
lng_Forms: TsiLangLinked;
aCHM: TAction;
CHM1: TMenuItem;
aDisconnectTraces: TAction;
pmiSCSObjDisconnectTraces: TMenuItem;
aRotateTraceDrawFigure180: TAction;
pmiSCSObjRotateTraceDrawFigure180: TMenuItem;
aDesignBoxParams: TAction;
pmiListDesignBoxParams: TMenuItem;
aPackNormBase: TAction;
aPackProjMan: TAction;
nServices: TMenuItem;
N172: TMenuItem;
N176: TMenuItem;
aMirrorBlock: TAction;
pmiSCSObjMirrorBlock: TMenuItem;
aMarkForTracing: TAction;
pmiSCSObjMarkForTracing: TMenuItem;
pmiObjectSplit4: TMenuItem;
aBlockParams: TAction;
pmiBlockParams: TMenuItem;
aCabinetFalseFloor: TAction;
N130: TMenuItem;
aLicenceType: TAction;
N132: TMenuItem;
aShowDisconnectedObjects: TAction;
aMasterUpdateComponPriceFromXF: TAction;
Excel1: TMenuItem;
aRefreshDesignList: TAction;
pmiListRefreshDesignList: TMenuItem;
aToolOrtholineExt: TAction;
aBackUpBase: TAction;
aRestoreBase: TAction;
N134: TMenuItem;
N144: TMenuItem;
N167: TMenuItem;
N169: TMenuItem;
tbCADToolsNoob: TToolBar;
tbCADToolsNoob2: TToolBar;
tbSelectNoob: TToolButton;
tbCabinetNoob: TToolButton;
tbWallRectNoob: TToolButton;
tbWallPathNoob: TToolButton;
cbScaleNoob: TcxComboBox;
Label2: TLabel;
tbSCSToolsNoob: TToolBar;
tbBlkUpNoob: TToolButton;
tbBlkDownNoob: TToolButton;
tbBlkLeftNoob: TToolButton;
tbBlkRightNoob: TToolButton;
tbSCSHDimLineNoob: TToolButton;
tbSCSVDimLineNoob: TToolButton;
aExpertMode: TAction;
N177: TMenuItem;
cxLabel1: TcxLabel;
mainTools: TMenuItem;
N180: TMenuItem;
N187: TMenuItem;
N188: TMenuItem;
N193: TMenuItem;
N194: TMenuItem;
N195: TMenuItem;
N196: TMenuItem;
N197: TMenuItem;
N198: TMenuItem;
RTF1: TMenuItem;
N199: TMenuItem;
N200: TMenuItem;
N201: TMenuItem;
aShowPMUsers: TAction;
aLoginUserToProMan: TAction;
aShowCurrUserInfo: TAction;
nUsers: TMenuItem;
Userloggin1: TMenuItem;
Currentuserinfo1: TMenuItem;
Addedituser1: TMenuItem;
tbCADToolsExpert: TToolBar;
tbSelectExpert: TToolButton;
tbPanExpert: TToolButton;
tbSCSHDimLineExpert: TToolButton;
tbSCSVDimLineExpert: TToolButton;
tbsToolsExpert: TToolButton;
tbLineExpert: TToolButton;
tbRectangleExpert: TToolButton;
tbEllipseExpert: TToolButton;
tbCircleExpert: TToolButton;
tbArcExpert: TToolButton;
tbElipticArcExpert: TToolButton;
tbPolyLineExpert: TToolButton;
tbPointExpert: TToolButton;
tbTextExpert: TToolButton;
tbRichTextExpert: TToolButton;
tbKnifeExpert: TToolButton;
tbHDimLineExpert: TToolButton;
tbVDimLineExpert: TToolButton;
ToolButton26: TToolButton;
tbCabinetExpert: TToolButton;
tbWallRectExpert: TToolButton;
tbWallPathExpert: TToolButton;
cbScaleExpert: TcxComboBox;
aExpertNews: TAction;
N202: TMenuItem;
TimerNews: TTimer;
tbOther: TToolBar;
aMarkingPages: TAction;
N203: TMenuItem;
aMarkForDisableTracing: TAction;
pmiSCSObjMarkForDisableTracing: TMenuItem;
aMasterAutoTraceElectric: TAction;
N205: TMenuItem;
ExpertPresentation1: TMenuItem;
//pmiSCSObjRotatePointObject270: TMenuItem;
aCreateTrunk: TAction;
pmiSCSObjCreateTrunk: TMenuItem;
pmConnectedPoints: TPopupMenu;
miShowConnectedConnCompons: TMenuItem;
pmConnectedLines: TPopupMenu;
miShowConnectedLineCompons: TMenuItem;
// 2011-05-10
n3DModelForList: TMenuItem;
tbHouseExpert: TToolButton;
tbHouseNoob: TToolButton;
ToolButton16: TToolButton;
aToolHouse: TAction;
pmHouseDesign: TPopupMenu;
aAddApproach: TAction;
aDeleteHouse: TAction;
pmiHDAddApproach: TMenuItem;
pmiHDDeleteHouse: TMenuItem;
aInsertKnotForHouse: TAction;
aDeleteKnotForHouse: TAction;
pmiHDInsertKnotForHouse: TMenuItem;
pmiHDDeleteKnotForHouse: TMenuItem;
aEditApproach: TAction;
aRotateApproach: TAction;
pmiHDEditApproach: TMenuItem;
pmiHDRotateApproach: TMenuItem;
aModApproach: TAction;
pmiHDModApproach: TMenuItem;
pmiHDServerAsDefault: TMenuItem;
pmiHDNotAsServerDefault: TMenuItem;
tbCabinetExtExpert: TToolButton;
aToolCabinetExt: TAction;
aConvertSegmentToArc: TAction;
aInsertKnotForCabinet: TAction;
aDeleteKnotForCabinet: TAction;
N214: TMenuItem;
N215: TMenuItem;
N234: TMenuItem;
aShowDefectObjects: TAction;
OpenDialog1: TOpenDialog;
aInvertArcSegment: TAction;
N244: TMenuItem;
tbCabinetExtNoob: TToolButton;
tbPanNoob: TToolButton;
ToolButton3: TToolButton;
tbCreateOnClickModeExpert: TToolButton;
tbToolOrtholineExtExpert: TToolButton;
tbToolOrtholineExpert: TToolButton;
ToolButton20: TToolButton;
ToolButton18: TToolButton;
tbCreateOnClickModeNoob: TToolButton;
tbToolOrtholineExtNoob: TToolButton;
tbToolOrtholineNoob: TToolButton;
ToolButton21: TToolButton;
aToolSCSHDimLine1: TMenuItem;
aToolSCSVDimLine1: TMenuItem;
aOpenVectorDrawing: TAction;
aOpenRasterDrawing: TAction;
aSaveVectorDrawing: TAction;
aSaveRasterDrawing: TAction;
N3: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
tbCHM: TToolButton;
aCreateVertical: TAction;
pmiSCSObjCreateVertical: TMenuItem;
tbArch: TToolBar;
ToolButton1: TToolButton;
aNetPathToArc: TAction;
N13: TMenuItem;
aInvertNetPathArc: TAction;
N14: TMenuItem;
n3DModelForProject: TMenuItem;
aAutoCreateTraces: TAction;
pmiSCSObjAutoCreateTraces: TMenuItem;
aDivTracesOnRoowWalls: TAction;
pmiSCSObjDivTracesOnRoowWalls: TMenuItem;
pmShowPathLengthType: TPopupMenu;
N17: TMenuItem;
N18: TMenuItem;
N22: TMenuItem;
aPathLengthTypePoints: TAction;
aPathLengthTypeInner: TAction;
aPathLengthTypeOuter: TAction;
aPathTraceLengthTypePoints: TAction;
aPathTraceLengthTypeInner: TAction;
aPathTraceLengthTypeOuter: TAction;
pmShowPathTraceLengthType: TPopupMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
pmiArchDesignSplit2: TMenuItem;
N24: TMenuItem;
N901: TMenuItem;
N25: TMenuItem;
N2701: TMenuItem;
N902: TMenuItem;
N2702: TMenuItem;
N2703: TMenuItem;
N27: TMenuItem;
aMirrorFigure: TAction;
N38: TMenuItem;
N62: TMenuItem;
aNetProps: TAction;
pmiNetProps: TMenuItem;
aConvertToPolygon: TAction;
N23: TMenuItem;
N82: TMenuItem;
tbSCSArcDimLineExpert: TToolButton;
aToolSCSArcDimLine: TAction;
tbSCSArcDimLineNoob: TToolButton;
tbPrintRect: TToolButton;
aPrintRect: TAction;
tbCalc: TToolButton;
tb3D: TToolButton;
tbExtProtocol: TToolButton;
tbConnectionsConfigurator: TToolButton;
tbRepWizard: TToolButton;
aSegCurveAll: TAction;
aSegLineAll: TAction;
aSegClose: TAction;
aSegOpen: TAction;
aSegInsertKnot: TAction;
aSegDeleteKnot: TAction;
aSegLine: TAction;
aSegCurve: TAction;
aSegArc: TAction;
aSegDimLine: TAction;
aSegDivTo3: TAction;
aSegInverArc: TAction;
aSegRoundCornerByArc: TAction;
aSegPenNone: TAction;
aSegPenZigZag: TAction;
aSegPenFlower: TAction;
aSegPenSinus: TAction;
aSegPenButtons: TAction;
aSegPenSquare: TAction;
aSegPenMiniSinus: TAction;
pmiObjectSplitPoly: TMenuItem;
N90: TMenuItem;
N95: TMenuItem;
N96: TMenuItem;
N112: TMenuItem;
pmiObjSegment: TMenuItem;
N119: TMenuItem;
N139: TMenuItem;
N171: TMenuItem;
N245: TMenuItem;
N246: TMenuItem;
N247: TMenuItem;
N310: TMenuItem;
N248: TMenuItem;
pmiSegPenPattern: TMenuItem;
N249: TMenuItem;
N250: TMenuItem;
N251: TMenuItem;
N252: TMenuItem;
N253: TMenuItem;
N254: TMenuItem;
N255: TMenuItem;
aSaveProjectToPDF: TAction;
PDF1: TMenuItem;
pmiSCSObjFreeRotate: TMenuItem;
aLinesToTraces: TAction;
N257: TMenuItem;
pmiArchTurn: TMenuItem;
aTurnObject: TAction;
tbShowRepResources: TToolButton;
aLoadSubstrateFromPDF: TAction;
PDF2: TMenuItem;
TimerInteractive: TTimer;
tbInteractive: TToolBar;
tbInteractiveNextStep: TToolButton;
aInteractiveNextStep: TAction;
aInteractiveStop: TAction;
ToolButton2: TToolButton;
aTransparentFigure: TAction;
N15: TMenuItem;
pnHintBar: TRzSizePanel;
aExportDWG: TAction;
DWG1: TMenuItem;
aSaveRevision: TAction;
aViewRevs: TAction;
aProjectSchedule: TAction;
N16: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
aBillWork: TAction;
N28: TMenuItem;
aShowCableRule: TMenuItem;
aAutoDiv: TAction;
pmiSCSObjAutoDivideLine: TMenuItem;
N70: TMenuItem;
Act_ConnectSelectedPoints: TAction;
Act_ReindexMaster: TAction;
N79: TMenuItem;
N133: TMenuItem;
N149: TMenuItem;
N150: TMenuItem;
N170: TMenuItem;
EmptyConnSelect: TAction;
N207: TMenuItem;
SelectAllLineObjs: TAction;
SelectAllPointObjects: TAction;
N208: TMenuItem;
N209: TMenuItem;
Act_Magistral_Channel_Index: TAction;
N210: TMenuItem;
N211: TMenuItem;
actLoadPictasRastr: TAction;
Act_AlignSelection: TAction;
N212: TMenuItem;
N1100: TMenuItem;
N213: TMenuItem;
N311: TMenuItem;
N410: TMenuItem;
N235: TMenuItem;
aToolPie: TAction;
tbPieExpert: TToolButton;
SetSefaultAllowTransparensy: TAction;
SetNetDoorType: TMenuItem;
N237: TMenuItem;
N256: TMenuItem;
N258: TMenuItem;
aSetDoubleDoor: TAction;
aSetMirroredDoor: TAction;
aSetLeftRightDoor: TAction;
N236: TMenuItem;
N259: TMenuItem;
aSetOpenedDoor: TAction;
aSetHalfOpenedDoor: TAction;
aSetCornHeight: TAction;
N260: TMenuItem;
aSetDoorWndH: TAction;
N261: TMenuItem;
aSetDoorWindowPllacementHeight: TAction;
N263: TMenuItem;
aSetAllListDoorsPlacementHeight: TAction;
N262: TMenuItem;
N264: TMenuItem;
aSetAllListWndPlacement: TAction;
aSetAllListDoorsHeight: TAction;
aSetAllListWndHeight: TAction;
B1: TMenuItem;
N265: TMenuItem;
N266: TMenuItem;
DCP_md41: TDCP_md4;
pmiOneLineCheme: TMenuItem;
aOneLineCheme: TAction;
pmELObjMenu: TPopupMenu;
mnuRot90: TMenuItem;
mnuRot180: TMenuItem;
mnuRot270: TMenuItem;
Act_SelectCableToTrace: TAction;
mnuSelTraceCable: TMenuItem;
mnuAsServer: TMenuItem;
mnuAsNoServer: TMenuItem;
Act_ConnectByCable: TAction;
mnuConnectByCable: TMenuItem;
Act_ConnectByCableAll: TAction;
Act_ConnectByCableOnEnds: TAction;
mnuConnectByCableEnds: TMenuItem;
mnuOnLineSC: TMenuItem;
mnuRotObj: TMenuItem;
N268: TMenuItem;
N269: TMenuItem;
EmptyTracesSelect: TAction;
EmptyRaiseVertSelect: TAction;
Pmi_CopyCurrList: TMenuItem;
Pmi_CopyCurrListWCompon: TMenuItem;
CopyList_All: TAction;
CopyList_WCompon: TAction;
pmSCSRack: TPopupMenu;
pmiAsDefaultServer: TMenuItem;
Act_SelectFiberCableToTrace: TAction;
Act_ConnectToAnotherRack: TAction;
pmiSelectFiberCableToTrace: TMenuItem;
pmiConnectToAnotherRack: TMenuItem;
Act_SetAsEndObject: TAction;
pmi_SelectFiberCableToTrace: TMenuItem;
pmi_ConnectToAnotherRack: TMenuItem;
cxLabel2: TcxLabel;
XPMenu1: TXPMenu;
G1: TMenuItem;
N218: TMenuItem;
N267: TMenuItem;
N270: TMenuItem;
N271: TMenuItem;
N272: TMenuItem;
N273: TMenuItem;
N274: TMenuItem;
ToolButton4: TToolButton;
N275: TMenuItem;
mnuInstRaspredBox: TMenuItem;
aInstRaspredBox: TAction;
mnuShieldAssemblySH: TMenuItem;
aShieldAssemblyScheme: TAction;
TimerTracingInterval: TTimer;
mnuReserv: TMenuItem;
// ACTIONs
// ñîçäàòü íîâûé ïðîåêò
procedure aNewExecute(Sender: TObject);
// çàãðóçèòü ïîäëîæêó
procedure aLoadSubstrateExecute(Sender: TObject);
// çàêðûòü ëèñò
procedure aCloseExecute(Sender: TObject);
// ñîõðàíèòü ïîäëîæêó
procedure aSaveSubstrateExecute(Sender: TObject);
// ñîõðàíèòü ïîäëîæêó êàê...
procedure aSaveAsSubstrateExecute(Sender: TObject);
// Ýêñïîðò â DXF
procedure aExportExecute(Sender: TObject);
// Èìïîðò â DXF
procedure aImportExecute(Sender: TObject);
// Ïðåäâàðèòåëüíûé ïðîñìîòð
procedure aPrevViewExecute(Sender: TObject);
// Ïå÷àòü
procedure aPrintExecute(Sender: TObject);
// Âûõîä èç ïðîãðàììû
procedure aExitExecute(Sender: TObject);
// Undo
procedure aUndoExecute(Sender: TObject);
// Redo
procedure aRedoExecute(Sender: TObject);
// Âûðåçàòü â áóôôåð
procedure aCutExecute(Sender: TObject);
// Êîïèðîâàòü â áóôôåð
procedure aCopyExecute(Sender: TObject);
// Âñòàâèòü èç áóôôåðà
procedure aPasteExecute(Sender: TObject);
// Âûäåëèòü âñå
procedure aSelectAllExecute(Sender: TObject);
// ïîèñê (íå ðàáîòàåò)
procedure aFindExecute(Sender: TObject);
// ïîèñê ñëåäóþùåãî (íå ðàáîòàåò)
procedure aFindNextExecute(Sender: TObject);
// Âî âåñü ýêðàí
procedure aAllScreenExecute(Sender: TObject);
// ìàñøòàá 50%
procedure a50Execute(Sender: TObject);
// ìàñøòàá 75%
procedure a75Execute(Sender: TObject);
// ìàñøòàá 100%
procedure a100Execute(Sender: TObject);
// ìàñøòàá 150%
procedure a150Execute(Sender: TObject);
// ìàñøòàá 200%
procedure a200Execute(Sender: TObject);
// óâåëè÷èòü ìàñøòàá íà...
procedure aIncExecute(Sender: TObject);
// óâåëè÷èòü ìàñøòàá íà 5%
procedure aInc1ptExecute(Sender: TObject);
// óìåíüøèòü ìàñøòàá íà 5%
procedure aDec1ptExecute(Sender: TObject);
// öâåò ôîíà ÊÀÄà
procedure aBackgroundColorExecute(Sender: TObject);
// ïîêàçûâàòü ëèíèéêó íà ÊÀÄå
procedure aShowRulerExecute(Sender: TObject);
// ïîêàçûâàòü ñåòêó íà ÊÀÄå
procedure aShowGridExecute(Sender: TObject);
// ïîêàçûâàòü ïàíåëü èíñòðóìåíòîâ
procedure aViewBtnPanelExecute(Sender: TObject);
// ïîêàçûâàòü îêíî íîðìàòèâíîé áàçû
procedure aViewNormBaseExecute(Sender: TObject);
// ïîêàçûâàòü ñâîéñòâà ÊÀÄ îáúåêòîâ
procedure aViewCADObjectsPropExecute(Sender: TObject);
// ïîêàçûâàòü íàâèãàòîð
procedure aViewNavigatorExecute(Sender: TObject);
// ïîêàçûâàòü ñâîéñòâà ÑÊÑ îáúåêòîâ
procedure aObjPropertiesExecute(Sender: TObject);
// ñâîáîäíîå âðàùåíèå
procedure aRotateExecute(Sender: TObject);
// íà çàäíèé ïëàí
procedure aBackwardsExecute(Sender: TObject);
// íà ïåðåäíèé ïëàí
procedure aForwardExecute(Sender: TObject);
// ñãðóïïèðîâàòü
procedure aGroupingExecute(Sender: TObject);
// ðàçãðóïïèðîâàòü
procedure aUngroupingExecute(Sender: TObject);
// çàáëî÷èòü
procedure aLockExecute(Sender: TObject);
// ðàçáëî÷èòü
procedure aUnlockExecute(Sender: TObject);
// èçìåíèòü øðèôò
procedure aTextFontExecute(Sender: TObject);
// èçìåíèòü MapScale
procedure aScaleExecute(Sender: TObject);
// ñîçäàòü íîâûé ëèñò
procedure aNewWindowExecute(Sender: TObject);
// çàêðûòü âñå îêíà
procedure aCloseAllWindowsExecute(Sender: TObject);
// âûçâàòü Õåëï
procedure aHelpExecute(Sender: TObject);
// Ïðåçåíòàöèÿ
procedure aPresentationExecute(Sender: TObject);
// Èíòåðàêòèâíîå îáó÷åíèå (íå ðàáîòàåò)
procedure aInteractiveExecute(Sender: TObject);
// íå ðàáîòàåò
procedure aWizardsExecute(Sender: TObject);
// íå ðàáîòàåò
procedure aTechDocExecute(Sender: TObject);
// íå ðàáîòàåò
procedure aToAuthorsExecute(Sender: TObject);
procedure aBuyExecute(Sender: TObject);
// Î ïðîãðàììå
procedure aAboutExecute(Sender: TObject);
// ïîêàçûâàòü Ìåíåäæåð ïðîåêòîâ
procedure aViewProjectManagerExecute(Sender: TObject);
// ñîçäàíèå íîâîãî ëèñòà
procedure aNewListExecute(Sender: TObject);
// âñòàâêà òåêñòà
procedure aInsertTextExecute(Sender: TObject);
// âñòàâêà êàðòèíêè
procedure aInsertBitmapExecute(Sender: TObject);
// Óäàëèòü
procedure aDeleteExecute(Sender: TObject);
// óäàëèòü âñå
procedure aDeleteAllExecute(Sender: TObject);
// óáðàòü âûäåëåíèå ñî âñåõ îáúåêòîâ
procedure aDeSelectAllExecute(Sender: TObject);
// ñòèëü ëèíèè
procedure aPenStyleExecute(Sender: TObject);
// öâåò ëèíèè
procedure aPenColorExecute(Sender: TObject);
// øèðèíà ëèíèè
procedure aPenWidthExecute(Sender: TObject);
// ñòèëü ñòðåëêè ëèíèè
procedure aRowStyleExecute(Sender: TObject);
// ñòèëü çàëèâêè
procedure aBrushStyleExecute(Sender: TObject);
// êîäèðîâêà
procedure aTextCharsetExecute(Sender: TObject);
// øðèôò
procedure aFontStyleExecute(Sender: TObject);
// ïåðåìåùåíèå íà çàäíèé/ïåðåäíèé ïëàí
procedure aFormatOrderExecute(Sender: TObject);
// òèï ñåòêè
procedure aGridTypeExecute(Sender: TObject);
// ïîêàçûâàòü öåíòðàëüíûå íàïðàâëÿþùèå
procedure aShowCenterGuidesExecute(Sender: TObject);
// ïîêàçûâàòü íàïðàâëÿþùèå
procedure aShowGuideLinesExecute(Sender: TObject);
// ïðèâÿçêà ê ñåòêå
procedure aSnaptoGridExecute(Sender: TObject);
// ïðèâÿçêà ê íàïðàâëÿþùèì
procedure aSnaptoGuidesExecute(Sender: TObject);
// ïðèâÿçêà ê áëèæíåìó îáúåêòó
procedure aSnaptoNearObjectExecute(Sender: TObject);
// öâåò ñåòêè
procedure aGridColorExecute(Sender: TObject);
// öâåò íàïðàâëÿþùèõ
procedure aGuideColorExecute(Sender: TObject);
// öâåò ñòðàíèöû
procedure aPageColorExecute(Sender: TObject);
// íàïðàâëÿþùèå ïîä óãëîì
procedure aAngularGuidesExecute(Sender: TObject);
// ñèñòåìà ëèíåéêè: ñì, ì
procedure aRulerSystemExecute(Sender: TObject);
// òèï ëèíåéêè: ñòðàíè÷íàÿ, ãëîáàëüíàÿ
procedure aRulerModeExecute(Sender: TObject);
// ôîðìàò ëèñòà
procedure aPageLayoutExecute(Sender: TObject);
// îðèåíòàöèÿ ëèñòà
procedure aPageOrientationExecute(Sender: TObject);
// øàã ñåòêè
procedure aGridStepExecute(Sender: TObject);
// ïëàí íàçàä
procedure aSendtoBackExecute(Sender: TObject);
// ïëàí âïåðåä
procedure aBringtoFrontExecute(Sender: TObject);
// íà çàäíèé ïëàí
procedure aSendBackwardsExecute(Sender: TObject);
// íà ïåðåäíèé ïëàí
procedure aBringForwardsExecute(Sender: TObject);
// âûðàâíèâàíèÿ
procedure aalTopExecute(Sender: TObject);
procedure aalBottomExecute(Sender: TObject);
procedure aalXcenterExecute(Sender: TObject);
procedure aalLeftExecute(Sender: TObject);
procedure aalRightExecute(Sender: TObject);
procedure aalYCenterExecute(Sender: TObject);
procedure aFormatAlignExecute(Sender: TObject);
// ñòèëè ëèíèé
procedure apsClearExecute(Sender: TObject);
procedure apsDashExecute(Sender: TObject);
procedure apsDashDotExecute(Sender: TObject);
procedure apsDashDotDotExecute(Sender: TObject);
procedure apsDotExecute(Sender: TObject);
procedure apsSolidExecute(Sender: TObject);
// øèðèíè ëèíèé
procedure aPenw1Execute(Sender: TObject);
procedure aPenw2Execute(Sender: TObject);
procedure aPenw3Execute(Sender: TObject);
procedure aPenw4Execute(Sender: TObject);
procedure aPenw5Execute(Sender: TObject);
procedure aPenw6Execute(Sender: TObject);
procedure aPenw7Execute(Sender: TObject);
// ñòèëè ñòðåëîê ëèíèé
procedure arsBothLightExecute(Sender: TObject);
procedure arsBothSolidExecute(Sender: TObject);
procedure arsLeftLightExecute(Sender: TObject);
procedure arsLeftSolidExecute(Sender: TObject);
procedure arsNoneExecute(Sender: TObject);
procedure arsRightLightExecute(Sender: TObject);
procedure arsRightSolidExecute(Sender: TObject);
// ñòèëè çàëèâîê
procedure absBDiagonalExecute(Sender: TObject);
procedure absClearExecute(Sender: TObject);
procedure absCrossExecute(Sender: TObject);
procedure absDiagCrossExecute(Sender: TObject);
procedure absFDiagonalExecute(Sender: TObject);
procedure absHorizontalExecute(Sender: TObject);
procedure absSolidExecute(Sender: TObject);
procedure absVerticalExecute(Sender: TObject);
// ñòèëè øðèôòà
procedure aTextBoldExecute(Sender: TObject);
procedure aTextItalicExecute(Sender: TObject);
procedure aTextUnderLineExecute(Sender: TObject);
procedure aTextStrikeThroughExecute(Sender: TObject);
// êîäèðîâêè øðèôòà
procedure aANSI_CHARSETExecute(Sender: TObject);
procedure aDEFAULT_CHARSETExecute(Sender: TObject);
procedure aRUSSIAN_CHARSETExecute(Sender: TObject);
// öâåò çàëèâêè
procedure aBrushColorExecute(Sender: TObject);
// öâåò òåêñòà
procedure aTextColorExecute(Sender: TObject);
// âèäû ñåòêè
procedure aLineGridExecute(Sender: TObject);
procedure aPointGridExecute(Sender: TObject);
procedure aCrossGridExecute(Sender: TObject);
// âèäû íàïðàâëÿþùèõ ïîä óãëîì
procedure aAngularNoneExecute(Sender: TObject);
procedure aAngular90Execute(Sender: TObject);
procedure aAngular30Execute(Sender: TObject);
procedure aAngular60Execute(Sender: TObject);
procedure aAngular45Execute(Sender: TObject);
// âèäû ñèñòåìû ëèíåéêè
procedure aMetricExecute(Sender: TObject);
procedure aWitworthExecute(Sender: TObject);
// âèäû ðåæèìà ëèíåéêè
procedure aPageModeExecute(Sender: TObject);
procedure aWorldModeExecute(Sender: TObject);
// âèäû îðèåíòàöèè ëèñòà
procedure aLandscaleExecute(Sender: TObject);
procedure aPortraitExecute(Sender: TObject);
// âèäû ôîðìàòà ëèñòà
procedure aA0Execute(Sender: TObject);
procedure aA1Execute(Sender: TObject);
procedure aA2Execute(Sender: TObject);
procedure aA3Execute(Sender: TObject);
procedure aA4Execute(Sender: TObject);
procedure aA5Execute(Sender: TObject);
procedure aA6Execute(Sender: TObject);
procedure aB4Execute(Sender: TObject);
procedure aB5Execute(Sender: TObject);
procedure aLetterExecute(Sender: TObject);
procedure aTabloidExecute(Sender: TObject);
procedure aCustomExecute(Sender: TObject);
// äóáëèðîâàòü âûäåëåííûå (ÊÀÄ îáúåêòû)
procedure aDuplicateSelectionExecute(Sender: TObject);
// âðàùåíèå âûáðàííîãî (ÊÀÄ îáúåêòû)
procedure aRotateSelectionExecute(Sender: TObject);
// ïåðåìåùåíèå âûáðàííîãî (ÊÀÄ îáúåêòû)
procedure aMoveSelectionExecute(Sender: TObject);
// çåðêàëüíîå îòîáðàæåíèå âûáðàííîãî (ÊÀÄ îáúåêòû)
procedure aMirrorSelectionExecute(Sender: TObject);
// òóëñà - âûáîðêà
procedure aToolSelectExecute(Sender: TObject);
// òóëñà - ëèíèÿ
procedure aToolLineExecute(Sender: TObject);
// òóëñà - ïðÿìîóãîëíèê
procedure aToolRectangleExecute(Sender: TObject);
// òóëñà - ýëëèïñ
procedure aToolEllipseExecute(Sender: TObject);
// òóëñà - îêðóæíîñòü
procedure aToolCircleExecute(Sender: TObject);
// òóëñà - äóãà
procedure aToolArcExecute(Sender: TObject);
// òóëñà - ýëëèïñè÷åñêàÿ äóãà
procedure aToolElipticArcExecute(Sender: TObject);
// òóëñà - ïîëèëèíèÿ
procedure aToolPolyLineExecute(Sender: TObject);
// òóëñà - òî÷êà
procedure aToolPointExecute(Sender: TObject);
// òóëñà - ÐÒÔ òåêñò
procedure aToolRichTextExecute(Sender: TObject);
// òóëñà - ðàçðåçêà
procedure aToolKnifeExecute(Sender: TObject);
// òóëñà - ãîðèçîíòàëüíàÿ èçìåðèòåëüíàÿ ëèíèÿ
procedure aToolHDimLineExecute(Sender: TObject);
// òóëñà - âåðòèêàëüíàÿ èçìåðèòåëüíàÿ ëèíèÿ
procedure aToolVDimLineExecute(Sender: TObject);
// ðàçìåð òåêñòà
procedure aTextSizeExecute(Sender: TObject);
// ìåíåäæåð ñëîåâ
procedure aViewLayersExecute(Sender: TObject);
// äîáàâëåíèå íîâîãî ñëîÿ
procedure aNewLayerExecute(Sender: TObject);
// óäàëåíèå ñëîÿ
procedure aDeleteLayerExecute(Sender: TObject);
// ñëèÿíèå âñåõ âèäèìûõ ñëîåâ
procedure aMergeVisibleExecute(Sender: TObject);
// ñëèÿíèå âñåõ ñëîåâ
procedure aMergeAllExecute(Sender: TObject);
// âñå íåàêòèâíûå ñëîè êàê ïîäëîæêà
procedure aFlueInactivesExecute(Sender: TObject);
// ñêðûòü âñå íåàêòèâíâûå ñëîè
procedure aHideInactivesExecute(Sender: TObject);
// ïîêàçàòü âñå ñëîè
procedure aShowAllLayersExecute(Sender: TObject);
// óäàëèòü ñîåäèíèòåëü - ñëèÿíèå òðàññ
procedure aDisconnectExecute(Sender: TObject);
// ðàçäåëåíèå òðàññû
procedure aDivideLineExecute(Sender: TObject);
// òóëñà - îðòîëèíèÿ
procedure aToolOrthoLineExecute(Sender: TObject);
// óñòàíîâèòü ñëîé ïîäëîæêà
procedure aSetSubstrateLayerExecute(Sender: TObject);
// óñòàíîâèòü ñëîé ÑÊÑ
procedure aSetSCSLayerExecute(Sender: TObject);
// óñòàíîâêà öâåòîâ ïî óìîë÷àíèþ
procedure aSetDefaultColorsExecute(Sender: TObject);
// èçìåíèòü ïàðàìåòðîâ îðòîëèíèè
procedure aChangeOrtoParamsExecute(Sender: TObject);
// ñâîáîäíîå âðàùåíèå (ÊÀÄ îáúåêòû)
procedure aFreeRotateExecute(Sender: TObject);
// ðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø
procedure aRegHotKeysExecute(Sender: TObject);
// îòðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø
procedure aUnregHotKeysExecute(Sender: TObject);
// àâòîâûäåëÿòü òðàññó äî êîíå÷íîãî îáúåêòà
procedure aAutoSelectTraceExecute(Sender: TObject);
// óñòàíîâèòü êàê ÊÎ
procedure aServerAsDefaultExecute(Sender: TObject);
// îòêðûòü ïðîåêò
procedure aOpenProjectExecute(Sender: TObject);
// âûðàâíèâàíèå ëèíèè ïî ñåòêå
procedure aRealignLineExecute(Sender: TObject);
// óáðàòü óñòàíîâêó êàê ÊÎ
procedure aNotAsServerDefaultExecute(Sender: TObject);
// âûäåëèòü òðàññó äî ÊÎ
procedure aSelectTracetoServerExecute(Sender: TObject);
// òóëñà - òåêñò
procedure aToolTextExecute(Sender: TObject);
// ñäåëàòü ñêðóòêó êàáåëåé (äëÿ ýëåêòðèêè)
procedure aMakeCablingExecute(Sender: TObject);
// ñâîéñòâî ÑÊÑ îáúåêòîâ
procedure aViewSCSObjectsPropExecute(Sender: TObject);
// ñîçäàíèå ñ-ï
procedure aCreateRaiseExecute(Sender: TObject);
// óäàëåíèå ñ-ï
procedure aDestroyRaiseExecute(Sender: TObject);
// ìàñòåð àâòîòðàññèðîâêè
procedure aMasterAutoTraceExecute(Sender: TObject);
// ñâîéñòâà ëèñòà
procedure aListPropertiesExecute(Sender: TObject);
// îò÷åò Âåäîìîñòü îáúåêòîâ
procedure aReport_ListObjectsExecute(Sender: TObject);
// îò÷åò Âåäîìîñòü ðåñóðñîâ
procedure aReport_ResorcesExecute(Sender: TObject);
// îò÷åò Âåäîìîñòü êàáåëåé
procedure aReport_CablesExecute(Sender: TObject);
// îò÷åò Êàáåëè ñ ïðåâûøàþùåé äëèíîé
procedure aReport_CablesWithLimitLengthExecute(Sender: TObject);
// îò÷åò Êàáåëüíûå êàíàëû
procedure aReport_CableChannelsExecute(Sender: TObject);
// îò÷åò Ïîäêëþ÷åíèÿ ïî öâåòàì
procedure aReport_ConnectByColorsExecute(Sender: TObject);
// îò÷åò Ïîäêëþ÷åíèÿ ïî ïðîèçâîäèòåëÿì
procedure aReport_ConnectByProducerExecute(Sender: TObject);
// îò÷åò Êàáåëüíûé æóðíàë
procedure aReport_ConnectionsExecute(Sender: TObject);
// îò÷åò Ñïåöèôèêàöèÿ
procedure aReport_SpecificationExecute(Sender: TObject);
// ïîäíÿòü/îïóñòèòü òðàññó
// Tolik -- 01/08/2016 --
Procedure aRaiseLineExecute(Sender: TObject);
procedure RaiseSelectedLine(aToHeight: Double = -1);
// ñîçäàâàòü îáúåêòû ïî êëèêó íà ÊÀÄ
procedure aCreateObjectOnClickExecute(Sender: TObject);
// óäàëèòü ÑÊÑ îáúåêò
procedure aDeleteSCSObjectExecute(Sender: TObject);
// ïîêàçûâàòü çàïîëíåííîñòü îáúåêòîâ
procedure aShowConnFullnessExecute(Sender: TObject);
// ïîêàçûâàòü çàïîëíåííîñòü êàáåëåé
procedure aShowCableFullnessExecute(Sender: TObject);
// ïîêàçûâàòü çàïîëíåííîñòü êàáåëüíûõ êàíàëîâ
procedure aShowCableChannelFullnessExecute(Sender: TObject);
// òóëñà - ñîçäàâàòü îáúåêòû ïðè êëèêå íà ÊÀÄ
procedure aCreateObjectOnClickToolExecute(Sender: TObject);
// ñîçäàòü ìåæýòàæíûé ïîäüåì
procedure aCreateFloorRaiseUpExecute(Sender: TObject);
// ñîçäàòü ìåæýòàæíûé ñïóñê
procedure aCreateFloorRaiseDownExecute(Sender: TObject);
// ðàñïîëîæèòü îêíà ÊÀÄîâ ïî ïîðÿäêó
procedure aTileWindowsExecute(Sender: TObject);
// ðàñïîëîæèòü îêíà ÊÀÄîâ êàñêàäîì
procedure aCascadeWindowsExecute(Sender: TObject);
// âñòàâèòü áëîê
procedure aInsertBlockExecute(Sender: TObject);
// ñîçäàòü ÓÃÎ â ÍÁ
procedure aCreateBlockToNBExecute(Sender: TObject);
// çàïóñê ðåäàêòîðà ýêñïîðòà ÓÃÎ
procedure aBlocksEditorExecute(Sender: TObject);
// âðàùàòü ÓÃÎ îáúåêòà íà 90 ãðàäóñîâ
procedure aRotatePointObject90Execute(Sender: TObject);
// âðàùàòü ÓÃÎ îáúåêòà íà 180 ãðàäóñîâ
procedure aRotatePointObject180Execute(Sender: TObject);
// ñäâèã ÓÃÎ îáúåêòîâ ââåðõ
procedure aShiftUpObjectExecute(Sender: TObject);
// ñäâèã ÓÃÎ îáúåêòîâ âíèç
procedure aShiftDownObjectExecute(Sender: TObject);
// ñäâèã ÓÃÎ îáúåêòîâ âëåâî
procedure aShiftLeftObjectExecute(Sender: TObject);
// ñäâèã ÓÃÎ îáúåêòîâ âïðàâî
procedure aShiftRightObjectExecute(Sender: TObject);
// îò÷åò Ðàñøèðåííûé êàáåëüíûé æóðíàë
procedure aReport_CableJournalExtExecute(Sender: TObject);
// ñâîéñòâà ïðîåêòà
procedure aProjectPropertiesExecute(Sender: TObject);
// îòêðûòü ïðîåêò èç ôàéëà
procedure aOpenProjectAtCurrNodeExecute(Sender: TObject);
// çàêðûòü òåêóùèé ïðîåêò
procedure aCloseCurrProjectExecute(Sender: TObject);
// çàãðóçêà ïðîåêòà èç ôàéëà
procedure aLoadNewProjectFromFileExecute(Sender: TObject);
// Ñîõðàíèòü ïðîåêò êàê
procedure aSaveAsSCSProjectExecute(Sender: TObject);
// ñâîéñòâà êîìïîíåíòû â îáúåêòå
procedure aComponPropertiesExecute(Sender: TObject);
// òóëñà - ïàíàðîìèðîâàíèå
procedure aToolPanExecute(Sender: TObject);
// ìàñøòàá 400%
procedure a400Execute(Sender: TObject);
// îòñîåäèíèòü ÒÎ
procedure aDisconnectPointObjectExecute(Sender: TObject);
// Ìàñòåð îò÷åòîâ
procedure aRepWizardExecute(Sender: TObject);
// ñîõðàíèòü ÊÀÄ êàê ÁÌÏ
procedure aSaveAsBMPExecute(Sender: TObject);
// ïîêàçûâàòü òðàññû ñ ïðåâûøàþùåé äëèíîé
procedure aShowTracesLengthLimitExecute(Sender: TObject);
// ñîõðàíèòü ïðîåêò â ÌÏ
procedure aSaveProjectExecute(Sender: TObject);
// ñâîéñòâà òåêóùåãî ïðîåêòà
procedure aCurrProjectPropertiesExecute(Sender: TObject);
// ñïðàâî÷íèê Âàëþòû
procedure aManual_CurrencyExecute(Sender: TObject);
// ñïðàâî÷íèê Òèïû ñåòåé
procedure aManual_NettypesExecute(Sender: TObject);
// ñïðàâî÷íèê Ïî ïðîèçâîäèòåëþ
procedure aManual_ProducersExecute(Sender: TObject);
// ñïðàâî÷íèê Èíòåðôåéñû
procedure aManual_InterfacesExecute(Sender: TObject);
// ñïðàâî÷íèê Ñâîéñòâà îáúåêòîâ
procedure aManual_ObjPropExecute(Sender: TObject);
// ñïðàâî÷íèê ÓÃÎ
procedure aManual_LegendsExecute(Sender: TObject);
// ñïðàâî÷íèê Òèïû êîìïîíåíò
procedure aManual_ComponTypesExecute(Sender: TObject);
// ñïðàâî÷íèê Íîðìû
procedure aManual_NormsExecute(Sender: TObject);
// ñïðàâî÷íèê Ðåñóðñû
procedure aManual_ResourcesExecute(Sender: TObject);
// ñïðàâî÷íèê ÍÄÑ
procedure aManual_NDSExecute(Sender: TObject);
// Äèçàéí øêàôà
procedure aDesignBoxExecute(Sender: TObject);
// âûáîð ïóòè ê ÍÁ
procedure aChoiceNBPathExecute(Sender: TObject);
// âûáîð ïóòè ê ÌÏ
procedure aChoicePMPathExecute(Sender: TObject);
// Íàñòðîéêè ïðîãðàììû
procedure aChoiceBaseOptionsExecute(Sender: TObject);
// Ðåãèñòðàöèÿ
procedure aRegistrationExecute(Sender: TObject);
// Îáíîâëåíèå ÍÁ
procedure aUpdateNormBaseExecute(Sender: TObject);
// Õèñòîðè
procedure aHistoryExecute(Sender: TObject);
// êîíôèãóðàòîð ñîåäèíåíèé
procedure aConnectionsConfiguratorExecute(Sender: TObject);
// íå ïåðåìåùàòü ïðèñîåäèíåííûå îáúåêòû
procedure aNoMoveConnectedObjectsExecute(Sender: TObject);
// âûðîâíÿòü Îáúåêò ïî ñåòêå
procedure aRealignObjectExecute(Sender: TObject);
// Î÷èñòèòü íàïðàâëÿþùèå
procedure aClearGuidesExecute(Sender: TObject);
// Ñîõðàíèòü â ÈÁÄ
procedure aSaveToIBDExecute(Sender: TObject);
// òóëñà - ãîðèçîíòàëüíàÿ èçìåðèòåëüíàÿ ëèíèÿ ÑÊÑ
procedure aToolSCSHDimLineExecute(Sender: TObject);
// òóëñà - âåðòèêàëüíàÿ èçìåðèòåëüíàÿ ëèíèÿ ÑÊÑ
procedure aToolSCSVDimLineExecute(Sender: TObject);
// òóëñà - ïëàí
procedure aToolWallRectExecute(Sender: TObject);
// òóëñà - ñåãìåíò ïëàíà
procedure aToolWallPathExecute(Sender: TObject);
// óäàëèòü ñåãìåíò
procedure aDeleteWallPathExecute(Sender: TObject);
// óäàëèòü ïëàí
procedure aDeleteWallRectExecute(Sender: TObject);
// ðàçäåëèòü ñåãìåíò
procedure aDivSelPathExecute(Sender: TObject);
// óñòàíîâèòü øèðèíó ñåãìåíòà
procedure aSetWallPathWidthExecute(Sender: TObject);
// óñòàíîâèòü øèðèíó âñåõ ñåãìåíòîâ ïëàíà
procedure aSetAllWallPathWidthExecute(Sender: TObject);
// äîáàâèòü îêíî íà ñåãìåíò
procedure aAddWindowExecute(Sender: TObject);
// äîáàâèòü äâåðü íà ñåãìåíò
procedure aAddDoorExecute(Sender: TObject);
// óäàëèòü äâåðü/îêíî ñ ñåãìåíòà
procedure aDeleteWindowDoorExecute(Sender: TObject);
// óñòàíîâèòü ðàçìåð îêíà/äâåðè
procedure aSetSizeWindowDoorExecute(Sender: TObject);
// çàãðóçèòü ïîäëîæêó
procedure aLoadStampExecute(Sender: TObject);
// ñîõðàíèòü ïîäëîæêó
procedure aSaveStampExecute(Sender: TObject);
// ïîêàçûâàòü äëèíó ñåãìåíòîâ
procedure aWallPathShowLengthExecute(Sender: TObject);
// ñîõðàíèòü àðõèòåêòóðíûé ïëàí
procedure aSaveFPlanExecute(Sender: TObject);
// çàãðóçèòü àðõèòåêòóðíûé ïëàí
procedure aLoadFPlanExecute(Sender: TObject);
// äîáàâèòü êîëîííó íà ñåãìåíò
procedure aAddColumnExecute(Sender: TObject);
// óäàëèòü êîëîííó ñ ñåãìåíòà
procedure aDeleteColumnExecute(Sender: TObject);
// óñòàíîâèòü óãîë êîëîííû ñåãìåíòà
procedure aSetColumnAngleExecute(Sender: TObject);
// óñòàíîâèòü âûñîòó êîëîííû ñåãìåíòà
procedure aSetColumnHeightExecute(Sender: TObject);
// óñòàíîâèòü øèðèíó êîëîííû ñåãìåíòà
procedure aSetColumnWidthExecute(Sender: TObject);
// âûñîòà ïîäïèñåé ê Äèçàéíó øêàôà
procedure aDesignBoxCaptionHeightExecute(Sender: TObject);
// øèðèíà ïîäïèñåé ê Äèçàéíó øêàôà
procedure aDesignBoxCaptionWidthExecute(Sender: TObject);
// øèðèíà ëèíèè ñåãìåíòà
procedure aSetPathLineWidthExecute(Sender: TObject);
// ñòèëü ëèíèè ñåãìåíòà
procedure aSetPathLineStyleExecute(Sender: TObject);
// øèðèíà ëèíèé âñåõ ñåãìåíòîâ
procedure aSetAllPathLineWidthExecute(Sender: TObject);
// ñòèëü ëèíèé âñåõ ñåãìåíòîâ
procedure aSetAllPathLineStyleExecute(Sender: TObject);
// ñïðàâî÷íèê Òèïû ïîñòàâîê
procedure aManual_SuppliesKindsExecute(Sender: TObject);
// ìàñòåð ïðîêëàäêè êàáåëüíûõ êàíàëîâ
procedure aMasterCableChannelExecute(Sender: TObject);
// ìàñòåð òðàññèðîâêè êàáåëÿ
procedure aMasterCableTracingExecute(Sender: TObject);
// ñîõðàíåíèå ÓÃÎ â ôàéë
procedure aCreateBlockToFileExecute(Sender: TObject);
// èçìåíèòü âûñîòó ñ-ï
procedure aChangeRaiseHeightExecute(Sender: TObject);
// ñîçäàòü ëèñò ñõåìû ïðîåêòà
procedure aCreateProjectPlanExecute(Sender: TObject);
// îòñîåäèíèòü îò ÐÌ
procedure aDisconnectFromRMExecute(Sender: TObject);
// îòñîåäèíèòü âñå ñîåäèíèòåëè îò ÐÌ
procedure aDisconnectAllConnectorsExecute(Sender: TObject);
// ïåðåìåñòèòü îáúåêò íà âûñîòó
procedure aRemoveObjectOnHeightExecute(Sender: TObject);
// òóëñà - êàáèíåò
procedure aToolCabinetExecute(Sender: TObject);
// ñîõðàíèòü ÊÀÄ êàê WMF
procedure aSaveAsWMFExecute(Sender: TObject);
// ïîêàçàòü êîíôèãóðàòîð
procedure aShowConfiguratorExecute(Sender: TObject);
// ïîêàçàòü îò÷åò Âåäîìîñòü ðåñóðñîâ
procedure aShowRepResourcesExecute(Sender: TObject);
// ñîçäàíèå Âåäîìîñòè íîðì íà ÊÀÄ
procedure aCreateNormsOnCadExecute(Sender: TObject);
// ðåäàêòèðîâàíèå Âåäîìîñòè íîðì íà ÊÀÄ
procedure aNormsEditExecute(Sender: TObject);
// ñâîéñòâà Âåäîìîñòè íîðì íà ÊÀÄ
procedure aNormsPropExecute(Sender: TObject);
// çåðêàëüíîå îòîáðàæåíèå êðîññîâ
procedure aMirrorViewExecute(Sender: TObject);
// ñîçäàíèå äóáëèêàòîð
procedure aCreateDuplicatesExecute(Sender: TObject);
// Õåëï â âèäå CHM
procedure aCHMExecute(Sender: TObject);
// Îòñîåäèíèòü âñå òðàññû îò êîííåêòîðà
procedure aDisconnectTracesExecute(Sender: TObject);
// Ïîâåðíóòü ÓÃÎ òðàññû íà 180 ãðàäóñîâ
procedure aRotateTraceDrawFigure180Execute(Sender: TObject);
// ïàðàìåòðû Äèçàéíà øêàôà
procedure aDesignBoxParamsExecute(Sender: TObject);
// óïàêîâêà ÍÁ
procedure aPackNormBaseExecute(Sender: TObject);
// óïàêîâêà ÌÏ
procedure aPackProjManExecute(Sender: TObject);
// çåðêàëüíîå îòîáðàæåíèå ÓÃÎ
procedure aMirrorBlockExecute(Sender: TObject);
// óñòàíîâêà ïîìåòêè òðàññû äëÿ òðàññèðîâêè
procedure aMarkForTracingExecute(Sender: TObject);
// îáðàáîò÷èê çàêðûòèÿ ôîðìû
procedure FormClose(Sender: TObject; var Action: TCloseAction);
// ñîáûòèå íà ìèíèìèçàöèè
procedure AppMinima(Sender: TObject);
// ïåðåäâèæåíèå ñïëèòåðîâ
procedure sDiv1CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure sDiv2CanResize(Sender: TObject; var NewSize: Integer; var Accept: Boolean);
procedure sDiv1Moved(Sender: TObject);
procedure sDiv2Moved(Sender: TObject);
// ïåðåêëþ÷åíèå îêîí/ëèñòîâ
procedure SwitchWindow(Sender: TObject);
procedure PDock1DockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure PDock1UnDock(Sender: TObject; Client: TControl; NewTarget: TWinControl; var Allow: Boolean);
procedure PDock1DockDrop(Sender: TObject; Source: TDragDockObject; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure pageCADListChange(Sender: TObject);
procedure fcbTextFontChange(Sender: TObject);
procedure fcbTextSizeChange(Sender: TObject);
procedure cbMainPanelDockOver(Sender: TObject; Source: TDragDockObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure tbEditStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbEditEndDock(Sender, Target: TObject; X, Y: Integer);
procedure tbFileStartDock(Sender: TObject; var DragObject: TDragObject);
procedure tbFileEndDock(Sender, Target: TObject; X, Y: Integer);
procedure tbFormatStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbFormatEndDock(Sender, Target: TObject; X, Y: Integer);
procedure tbObjectStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbObjectEndDock(Sender, Target: TObject; X, Y: Integer);
procedure tbSelectOptionsStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbSelectOptionsEndDock(Sender, Target: TObject; X, Y: Integer);
procedure tbCADToolsExpertStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbCADToolsExpertEndDock(Sender, Target: TObject; X, Y: Integer);
procedure mpsDashAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
procedure mPenw1AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
procedure mrsBothLightAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
procedure mbsVerticalAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure cbScalePropertiesCloseUp(Sender: TObject);
procedure cbScaleExpertKeyPress(Sender: TObject; var Key: Char);
procedure cbLayersPropertiesCloseUp(Sender: TObject);
procedure cbLayersCloseUp(Sender: TObject);
procedure cxComboBox1Enter(Sender: TObject);
procedure mRegisterClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure tbSCSToolsExpertStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure tbSCSToolsExpertEndDock(Sender, Target: TObject; X, Y: Integer);
procedure ApplicationEvents1Exception(Sender: TObject; E: Exception);
procedure TimerProcessMessagesTimer(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure TimerOpenStartTimer(Sender: TObject);
procedure TimerRefreshTimer(Sender: TObject);
procedure FOnAppActivate(Sender: TObject);
procedure tbExtProtocolClick(Sender: TObject);
procedure N113Click(Sender: TObject);
procedure FloatPanel1Click(Sender: TObject);
procedure PDock1Resize(Sender: TObject);
// ðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø
procedure RegisteredHotKeys;
// îòðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø
procedure UnRegisteredHotKeys;
// ðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø íà ÊÀÄå
procedure RegisteredCADHotKeys;
// îòðåãèñòðàöèÿ ãîðÿ÷èõ êëàâèø íà ÊÀÄå
procedure UnRegisteredCADHotKeys;
procedure aBlockParamsExecute(Sender: TObject);
procedure aCabinetFalseFloorExecute(Sender: TObject);
procedure aLicenceTypeExecute(Sender: TObject);
procedure aToolMultiLineExecute(Sender: TObject);
procedure aShowDisconnectedObjectsExecute(Sender: TObject);
procedure aMasterUpdateComponPriceFromXFExecute(Sender: TObject);
procedure aRefreshDesignListExecute(Sender: TObject);
procedure aToolOrtholineExtExecute(Sender: TObject);
procedure aBackUpBaseExecute(Sender: TObject);
procedure aRestoreBaseExecute(Sender: TObject);
procedure aExpertModeExecute(Sender: TObject);
procedure cbLayersPropertiesInitPopup(Sender: TObject);
procedure aShowPMUsersExecute(Sender: TObject);
procedure aLoginUserToProManExecute(Sender: TObject);
procedure aShowCurrUserInfoExecute(Sender: TObject);
procedure aExpertNewsExecute(Sender: TObject);
procedure TimerNewsTimer(Sender: TObject);
procedure tbCalcClick(Sender: TObject);
procedure aMarkingPagesExecute(Sender: TObject);
procedure aMarkForDisableTracingExecute(Sender: TObject);
procedure aMasterAutoTraceElectricExecute(Sender: TObject);
procedure ExpertPresentation1Click(Sender: TObject);
procedure aRotatePointObject270Execute(Sender: TObject);
procedure aCreateTrunkExecute(Sender: TObject);
procedure miShowConnectedConnComponsClick(Sender: TObject);
procedure miShowConnectedLineComponsClick(Sender: TObject);
procedure pmConnectedPointsPopup(Sender: TObject);
procedure pmConnectedLinesPopup(Sender: TObject);
procedure tb3DClick(Sender: TObject);
procedure aToolHouseExecute(Sender: TObject);
procedure aAddApproachExecute(Sender: TObject);
procedure aDeleteHouseExecute(Sender: TObject);
procedure aInsertKnotForHouseExecute(Sender: TObject);
procedure aDeleteKnotForHouseExecute(Sender: TObject);
procedure aEditApproachExecute(Sender: TObject);
procedure aRotateApproachExecute(Sender: TObject);
procedure aModApproachExecute(Sender: TObject);
procedure aToolCabinetExtExecute(Sender: TObject);
procedure aConvertSegmentToArcExecute(Sender: TObject);
procedure aInsertKnotForCabinetExecute(Sender: TObject);
procedure aDeleteKnotForCabinetExecute(Sender: TObject);
procedure aShowDefectObjectsExecute(Sender: TObject);
procedure aInvertArcSegmentExecute(Sender: TObject);
procedure aOpenVectorDrawingExecute(Sender: TObject);
procedure aOpenRasterDrawingExecute(Sender: TObject);
procedure aSaveVectorDrawingExecute(Sender: TObject);
procedure aSaveRasterDrawingExecute(Sender: TObject);
procedure aCreateVerticalExecute(Sender: TObject);
procedure TimerFindSnapTimer(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure aNetPathToArcExecute(Sender: TObject);
procedure aInvertNetPathArcExecute(Sender: TObject);
procedure n3DModelForProjectClick(Sender: TObject);
procedure aAutoCreateTracesExecute(Sender: TObject);
procedure aDivTracesOnRoowWallsExecute(Sender: TObject);
procedure aPathLengthTypePointsExecute(Sender: TObject);
procedure aPathLengthTypeInnerExecute(Sender: TObject);
procedure aPathLengthTypeOuterExecute(Sender: TObject);
procedure aPathTraceLengthTypePointsExecute(Sender: TObject);
procedure aPathTraceLengthTypeInnerExecute(Sender: TObject);
procedure aPathTraceLengthTypeOuterExecute(Sender: TObject);
procedure aMirrorFigureExecute(Sender: TObject);
procedure aNetPropsExecute(Sender: TObject);
procedure aConvertToPolygonExecute(Sender: TObject);
procedure aToolSCSArcDimLineExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure aPrintRectExecute(Sender: TObject);
procedure aSegActionExecute(Sender: TObject);
procedure aSaveProjectToPDFExecute(Sender: TObject);
procedure aLinesToTracesExecute(Sender: TObject);
procedure aTurnObjectExecute(Sender: TObject);
procedure aLoadSubstrateFromPDFExecute(Sender: TObject);
procedure TimerInteractiveTimer(Sender: TObject);
procedure aInteractiveNextStepExecute(Sender: TObject);
procedure aInteractiveStopExecute(Sender: TObject);
procedure aTransparentFigureExecute(Sender: TObject);
procedure pnHintBarPaint(Sender: TObject);
procedure pmListPopup(Sender: TObject);
procedure aExportDWGExecute(Sender: TObject);
procedure aSaveRevisionExecute(Sender: TObject);
procedure aViewRevsExecute(Sender: TObject);
procedure aProjectScheduleExecute(Sender: TObject);
procedure aBillWorkExecute(Sender: TObject);
procedure aShowCableRuleClick(Sender: TObject);
procedure aAutoDivExecute(Sender: TObject);
procedure N70Click(Sender: TObject);
procedure Act_ConnectSelectedPointsExecute(Sender: TObject);
procedure Act_ReindexMasterExecute(Sender: TObject);
procedure N150Click(Sender: TObject);
procedure EmptyConnSelectExecute(Sender: TObject);
procedure SelectAllPointObjectsExecute(Sender: TObject);
procedure SelectAllLineObjsExecute(Sender: TObject);
procedure Act_Magistral_Channel_IndexExecute(Sender: TObject);
procedure actLoadPictasRastrExecute(Sender: TObject);
procedure Act_AlignSelectionExecute(Sender: TObject);
procedure aToolPieExecute(Sender: TObject);
procedure SetSefaultAllowTransparensyExecute(Sender: TObject);
procedure aSetDoubleDoorExecute(Sender: TObject);
procedure aSetMirroredDoorExecute(Sender: TObject);
procedure aSetLeftRightDoorExecute(Sender: TObject);
procedure aSetOpenedDoorExecute(Sender: TObject);
procedure aSetHalfOpenedDoorExecute(Sender: TObject);
procedure aSetCornHeightExecute(Sender: TObject);
procedure aSetDoorWndHExecute(Sender: TObject);
procedure aSetDoorWindowPllacementHeightExecute(Sender: TObject);
procedure aSetAllListDoorsPlacementHeightExecute(Sender: TObject);
procedure aSetAllListWndPlacementExecute(Sender: TObject);
procedure aSetAllListDoorsHeightExecute(Sender: TObject);
procedure aSetAllListWndHeightExecute(Sender: TObject);
procedure pnHintBarHotSpotClick(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure aOneLineChemeExecute(Sender: TObject);
procedure Act_SelectCableToTraceExecute(Sender: TObject);
procedure Act_ConnectByCableExecute(Sender: TObject);
procedure Act_ConnectByCableAllExecute(Sender: TObject);
procedure Act_ConnectByCableOnEndsExecute(Sender: TObject);
procedure cbMainPanelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure mainFileClick(Sender: TObject);
procedure MainMenuChange(Sender: TObject; Source: TMenuItem;
Rebuild: Boolean);
procedure tbCADToolsExpertMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure EmptyTracesSelectExecute(Sender: TObject);
procedure EmptyRaiseVertSelectExecute(Sender: TObject);
procedure CopyList_AllExecute(Sender: TObject);
procedure CopyList_WComponExecute(Sender: TObject);
procedure pmiSCSObjAutoCreateTracesAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
procedure Act_SetAsEndObjectExecute(Sender: TObject);
procedure Act_SelectFiberCableToTraceExecute(Sender: TObject);
procedure Act_ConnectToAnotherRackExecute(Sender: TObject);
procedure cbMainPanelBandPaint(Sender: TObject; Control: TControl;
Canvas: TCanvas; var ARect: TRect; var Options: TBandPaintOptions);
procedure ToolButton4Click(Sender: TObject);
procedure N272AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
procedure aInstRaspredBoxExecute(Sender: TObject);
procedure aShieldAssemblySchemeExecute(Sender: TObject);
procedure TimerTracingIntervalTimer(Sender: TObject);
procedure mnuReservClick(Sender: TObject);
{ procedure SelectAllLineObjsHint(var HintStr: String;
var CanShow: Boolean);
procedure N209DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
Selected: Boolean); }
private
//Tolik 30/04/2021 --
tbCADToolsNoob_oldProc: TWndMethod;
tbCADToolsNoob2_oldProc: TWndMethod;
tbCADToolsExpert_oldProc: TWndMethod;
tbOther_oldProc: TWndMethod;
tbFile_oldProc: TWndMethod;
tbObject_oldProc: TWndMethod;
tbLayers_oldProc: TWndMethod;
tbSCSToolsExpert_oldProc: TWndMethod;
cbMainPanel_oldProc: TWndMethod;
//
procedure WMAct(var msg: TMessage); message WM_ACTIVATE;
procedure SaveProjectForSC;
{ Private declarations }
// Tolik 30/04/2021 --
Procedure tbCADToolsNoob_NewProc(var message: TMessage);
Procedure tbCADToolsNoob2_NewProc(var message: TMessage);
Procedure tbCADToolsExpert_NewProc(var message: TMessage);
Procedure tbOther_NewProc(var message: TMessage);
Procedure tbFile_NewProc(var message: TMessage);
Procedure tbObject_NewProc(var message: TMessage);
Procedure tbLayers_NewProc(var message: TMessage);
Procedure tbSCSToolsExpert_NewProc(var message: TMessage);
Procedure cbMainPanel_NewProc(var message: TMessage);
//
protected
procedure FInteractiveMsg(var Msg: TMsg; var Handled: boolean);
procedure RunInteractive(aScene: Integer);
function CanResizePanelForm(AForm: TForm; ADeltaSize: Integer): Boolean;
//26.12.2011 - Ïåðåõâàò ñîáûòèé ñòàðòà ñïëèòòåðà è îòïóñêàíèÿ
procedure OnSplitterMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure OnSplitterMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
public
// äëÿ Docking`à îêîí ÌÏ è ÍÁ
CountDock1: integer;
CountDock2: integer;
// ïåðåìåííûå äëÿ îïðåäåëåíèÿ Docking`à FlightBar`îâ
tbEditDocking: boolean;
tbFileDocking: boolean;
tbFormatDocking: boolean;
tbObjectDocking: boolean;
tbSelectOptionsDocking: boolean;
tbCADToolsDocking: boolean;
tbSCSToolsDocking: boolean;
OldApplicationEventsMessage: TMessageEvent;
FPMItemsRoofHipTypes: TList; // Ýëåìåíòû ê.ì. ñ òèïàìè ðåáåð êðûøè
FCADsInProgress: TList;
FOldOnActionExecute: TActionEvent; //03.05.2013
FInteractiveActions: TList; //03.05.2013
FInteractiveControlHandler: HWnd;
FInteractiveStep: Integer; //06.05.2013
FInteractiveStepCount: Integer; //06.05.2013
FInteractiveStepHitsCount: Integer; //09.05.2013 - êîëè÷åñòâî çàõîäîâ çà îäèí øàã
FInteractiveScene: Integer; //06.05.2013
FInteractiveMsgOrig: TMessageEvent;
FInteractiveStepShowed: Boolean;
FInteractiveWorkColorSet: Boolean;
FInteractiveRackColorSet: Boolean;
//FInteractiveTimerExecution: Boolean; //11.05.2013
procedure StepInteractive;
procedure SetCursors;
// ñîõðàíèòü ïîäëîæêó
procedure SaveSubstrate(aFName: string);
// çàãðóçèòü ïîäëîæêó
procedure LoadSubstrate(aFName: string);
// ñîõðàíèòü ïëàí
procedure SaveFPlan(aFName: string);
// çàãðóçèòü ïëàí
procedure LoadFPlan(aFName: string);
// ñîõðàíèòü ðàìêó ëèñòà
procedure SaveStamp(aFName: string);
// çàãðóçèòü ðàìêó ëèñòà
procedure LoadStamp(aFName: string);
// ñáðîñ ïàíåëè èíñòðóìåíòîâ ÊÀÄ
procedure SkipCADPanelChecked;
// çàêðûòèå âñåõ îêîí (ïðîåêòà)
procedure CloseAll;
{ Public declarations }
// îòëàâëèâàíèå Exception, åñëè ôëàã çàêðûòèÿ ïðîãðàììû ïîäíÿò - âûãðóçèòü ïðîãðàììó
procedure AppException(Sender: TObject; E: Exception);
// ïðîâåðêà íà çàêðûòèå ïðîãðàììû
procedure CheckClose;
// ñîáûòèå, íà íåì âîññòàíîâëåíèå ïðîãðàììû ïîñëå ñâîðà÷èâàíèÿ
procedure WMUser(var msg: TMessage); message wm_user;
procedure ReceiveMessage (var Msg: TMessage); message WM_COPYDATA;
procedure WMGetSysCommand(var msg: TMessage); message WM_SYSCOMMAND;
procedure AddDoorObj(aDoorObjType: TDoorObjType);
procedure AddDoorEmbrasure;
procedure AddDoorNiche;
procedure SetLayerForDraw;
procedure SetMenuStatus(aStatus: Boolean);
procedure SetShowPathLengthType(aPathLengthType: TShowPathLengthType);
procedure SetShowPathTraceLengthType(aPathLengthType: TShowPathLengthType);
procedure SetToolArch(const aTool: string; aToolData: Integer=0);
procedure ShiftObjects(AShiftDirection: Integer);
procedure LoadSubstrateEx(aReplace: Boolean);
procedure SetFigureAsEndObject(aCad: TForm; aFigure: TFigure);
procedure CustomizeNewList; //27.06.2013
// 2011-05-10
function isMapScaleDifferent: Boolean;
//12.08.2011
procedure DefinePMItemsRoofHipTypes;
procedure OnPMItemsRoofHipTypeClick(Sender: TObject);
procedure SDCreateBlockToFileCanClose(Sender: TObject; var CanClose: Boolean); //11.03.2012
procedure ShowBlockParamsForPopupFigure(aAllowPersent: Boolean=true; aAllowProportion: Boolean=true);
procedure RecreateHandle;
procedure SetHints;
procedure InteractiveTest;
procedure InteractiveActionExecute(Action: TBasicAction; var Handled: Boolean);
end;
procedure SetDefaultActiveLayer;
procedure AutoFitBitMap(Bmp: TBMPObject);
const
// êîíñòàíòû êóðñîðîâ
crHandAni = 1;
crNewHand = 2;
crNewMove = 3;
crNewMoveCross = 4;
//Tolik
// äîïóñòèìàÿ ðàçíèöà êîîðäèíàò êîííåêòîðîâ â îäíîé òî÷êå
ConnectorDifference = 5;
var
phandle: THandle;
SetHook: procedure(); stdcall;
DropHook: procedure(); stdcall;
is_hook: boolean;
FSCS_Main: TFSCS_Main;
// ôëàã çàêðûòèÿ ïðîãðàììû
GExitProgEx: Boolean = False;
// ñîõð. íîìåð ñëîÿ ñ êîòîðîãî áûëî êîïèðîâàíèå/âûðåçêà â áóôåð îáìåíà
GCurrLayerBuffer: integer;
// ñâîéñòâà îáüåêòà
GObjectProperty: boolean = False;
// Èìÿ íîâîãî Ëèñòà è ÈÄ
GCurrentCADListID: integer;
GExportUSeScale: boolean = False;
hints_prog_id: string = '';
stat_prog_id: string = '';
implementation
uses
U_Cad, U_Main, U_IncOn, U_Navigator, U_Scale, U_GridStep, U_Common, {Tolik 15/02/2021 -- } U_ELCommon, U_BaseCommon, U_BaseConstants,
Unit_DM_SCS, U_SCSComponent, U_ObjsProp,
Types, U_Layers, U_NewLayer, U_SizePos, U_OrtholineParams,
U_LoadColor, U_SCSObjectsProp, U_InterfacesAutoTrace, U_MasterNewList, U_MasterNewListLite, U_RaiseHeight,
U_AutoTraceType, cxCheckBox, U_BlockEditor, U_Progress, U_ImportDXF, U_ExportDXF, U_ProtectionCommon,
U_Protection, U_ProtectionBase, U_Registration, U_ComponDesignWizard, U_SmetaExport, U_SCSLists,
U_ChooseComponTypes, U_ChooseComponTypesForReport, U_FloatPanel, U_EndPoints, U_CadNormsProp,
U_CadNormsList, U_TrunkSCS, U_Constants, RichEdit2, U_ChooseDesignBoxParams, U_ChooseSCSObjectsProp,
U_ReportForm, U_CreateRaiseQuery, U_PrintLists, U_BlockParams, U_ChooseListForTrunk, U_HouseClasses, U_ResourceReport,
// 2011-05-10
U_BaseSettings, PrvForm, {U_Arch3D}U_Arch3DNew, form3D, U_PDFView, U_HintBar, U_HintW,
{$IF Defined (SCS_RF)}
U_AboutRF, U_InputBox
{$ELSE}
U_About
{$IFEND}
// Tolik 16/05/2016 --
, U_SCSClasses
// Tolik 28/03/2017 --
, U_Master_compl
, U_PortsReIndex, U_PEGetBox,
U_Reserv; //Tolik 11/12/2024 --óïðàâëåíèå ðåçåðâíûìè êîïèÿìè
{$R *.dfm}
{$R Cursors.res}
{$R font.rc}
{$R hand.rc}
//
Procedure TFSCS_Main.tbCADToolsNoob_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbCADToolsNoob.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbCADToolsNoob_OldProc(message);
end;
Procedure TFSCS_Main.tbCADToolsNoob2_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbCADToolsNoob2.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbCADToolsNoob2_OldProc(message);
end;
Procedure TFSCS_Main.tbCADToolsExpert_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbCADToolsExpert.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbCADToolsExpert_OldProc(message);
end;
Procedure TFSCS_Main.tbOther_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbOther.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbOther_OldProc(message);
end;
Procedure TFSCS_Main.tbFile_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbFile.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbFile_OldProc(message);
end;
Procedure TFSCS_Main.tbObject_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbObject.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbObject_OldProc(message);
end;
Procedure TFSCS_Main.tbLayers_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbLayers.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbLayers_OldProc(message);
end;
Procedure TFSCS_Main.tbSCSToolsExpert_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := tbSCSToolsExpert.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
tbSCSToolsExpert_OldProc(message);
end;
Procedure TFSCS_Main.cbMainPanel_NewProc(var message: TMessage);
var Control: TControl;
begin
case message.Msg of
WM_LBUTTONDOWN, WM_LBUTTONDBLCLK:
begin
Control := cbMainPanel.ControlAtPos(SmallPointToPoint(TWMMouse(Message).Pos), False);
if Assigned(Control) then
if Control is TToolButton then
CheckCloseReportForm;
end;
end;
cbMainPanel_OldProc(message);
end;
//
procedure ExtractExe(Instance: THandle; ResID: Integer; FileName: string);
var
ResStream: TResourceStream; // Îáúåêò - ïîòîê ðåñóðñîâ
FileStream: TFileStream;
begin
try
try
ResStream := TResourceStream.CreateFromID(Instance, Resid, RT_RCDATA);
FileStream := TFileStream.Create(FileName, fmCreate);
try
FileStream.CopyFrom(ResStream, 0);
finally
FreeAndNil(FileStream);
end;
finally
FreeAndNil(ResStream);
end;
except
on E:Exception do
begin
DeleteFile(FileName);
end;
end;
end;
{ TSplitter }
{procedure TSplitter.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
FOldMouseMoveTick := 0;
if Assigned(FOnMouseDown) then
FOnMouseDown(Self, Button, Shift, X, Y);
inherited;
end;
procedure TSplitter.MouseMove(Shift: TShiftState; X, Y: Integer);
var
SavedResizeStyle: TResizeStyle;
begin
SavedResizeStyle := ResizeStyle;
//if ResizeStyle = rsUpdate then
// begin
// // Åñëè ðåçàéç áûë íå òàê äàâíî, òî
// if (GetTickCount - FOldMouseMoveTick) < 40 then
// ResizeStyle := ExtCtrls.rsNone
// else
// FOldMouseMoveTick := GetTickCount;
// end;
inherited;
ResizeStyle := SavedResizeStyle;
end;
procedure TSplitter.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited;
if Assigned(FOnMouseUp) then
FOnMouseUp(Self, Button, Shift, X, Y);
end;
}
procedure TFSCS_Main.SetCursors;
begin
//11.07.2013 - moved from TFSCS_Main.FormCreate
Screen.Cursors[crNewHand] := LoadCursor(HInstance, 'CUR_HAND1');
Screen.Cursors[crNewMove] := LoadCursor(HInstance, 'CUR_MOVE1');
Screen.Cursors[crNewMoveCross] := LoadCursor(HInstance, 'CUR_MOVE2');
end;
// ÑÎÇÄÀÍÈÅ ÃËÀÂÍÎÉ ÔÎÐÌÛ
procedure TFSCS_Main.FormCreate(Sender: TObject);
var
buff: PChar;
i: integer;
RemoveStatus: boolean;
LastError: DWORD;
begin
DisableAlign;
self.Color := clBtnFace;
try
{$IF Defined(TRIAL_SCS)}
Self.Caption := ApplicationName + cMain_Mes2 + ' ' + versionEXE + cMain_Mes3 + DateEXE + ' Trial)';
{$ELSE}
Self.Caption := ApplicationName + cMain_Mes2 + ' ' + versionEXE + cMain_Mes3 + DateEXE + ')';
{$IFEND}
{$if Defined(ES_GRAPH_SC)}
pnHintBar.Visible := False;
{$ifend}
CountDock1 := 0;
CountDock2 := 0;
GRefreshCad := nil;
GCurrentCADListID := 0;
GexitProg := True;
Self.SetCursors; //11.07.2013
ExtractExe(HInstance, $2, 'handa.ani');
try
ExtractExe(HInstance, $3, 'gost.ttf');
except
end;
try
GetMem(buff, 256*2);
GetWindowsDirectory(buff, 255);
// DeleteFile(PChar(buff + '\Fonts\' + 'gost.ttf'));
if Not FileExists(buff + '\Fonts\' + 'gost.ttf') then
begin
try
CopyFile(PChar(ExeDir + '\gost.ttf'), PChar(buff + '\Fonts\' + 'gost.ttf'), False);
except
end;
end;
if AddFontResource(PChar(buff + '\Fonts\' + 'gost.ttf')) = 0 then
LastError := GetLastError;
FreeMem(Buff);
except
end;
PostMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
Screen.Cursors[crHandAni] := LoadCursorFromFile('handa.ani');
Application.HelpFile := ExeDir + '\HELP\HELP.HLP';
// Çàäàòü Captions íà ïàíåëÿõ
tbSCSHDimLineNoob.Caption := cMain_Mes104;
tbSCSVDimLineNoob.Caption := cMain_Mes105;
tbCabinetNoob.Caption := cMain_Mes106;
tbCabinetExtNoob.Caption := cMain_Mes117;
tbWallRectNoob.Caption := cMain_Mes107;
tbWallPathNoob.Caption := cMain_Mes108;
tbToolOrtholineExtNoob.Caption := cMain_Mes109;
tbToolOrtholineNoob.Caption := cMain_Mes110;
tbHouseNoob.Caption := cMain_Mes114;
tbPanNoob.Caption := cMain_Mes118;
{$IF DEFINED(SCS_PE) or DEFINED(SCS_SPA)}
{$IF Defined(SCS_PANDUIT) or DEFINED(SCS_PE)}
N221.Enabled := True;
aInteractive.Visible := True;
aInteractive.Enabled := true;
{$ELSE}
aInteractive.Visible := False;
{$IFEND}
// Tolik --24/01/2017 - -
//tbSCSToolsNoob.Width := cSCSNoob_PE;
tbSCSToolsNoob.Width := cSCSNoob_PE + 20;
//
aSaveToIBD.Visible := False;
//aCreateNormsOnCad.Visible := False;
aCreateNormsOnCad.Visible := True;
aWizards.Visible := False;
aTechDoc.Visible := True;
aBuy.Visible := False;
aPresentation.Visible := False;
aShowDefectObjects.Visible := False;
//aManual_Norms.Visible := False;
aManual_Norms.Visible := True;
aHelp.Visible := False;
aCHM.Visible := False;
ExpertPresentation1.Visible := False;
{$ELSE}
{$IF Defined(SCS_PANDUIT)}
N221.Enabled := True;
aInteractive.Visible := True;
aInteractive.Enabled := true;
// Tolik -- 24/01/2017 --
//tbSCSToolsNoob.Width := cSCSNoob_PE;
tbSCSToolsNoob.Width := cSCSNoob_PE + 20;
//
aSaveToIBD.Visible := False;
//aCreateNormsOnCad.Visible := False;
aCreateNormsOnCad.Visible := True;
aWizards.Visible := False;
aTechDoc.Visible := True;
aBuy.Visible := False;
aPresentation.Visible := False;
aShowDefectObjects.Visible := False;
//aManual_Norms.Visible := False;
aManual_Norms.Visible := True;
aHelp.Visible := False;
aCHM.Visible := False;
ExpertPresentation1.Visible := False;
{$ELSE}
// Tolik --
// tbSCSToolsNoob.Width := cSCSNoob_SCS;
tbSCSToolsNoob.Width := cSCSNoob_SCS + 20;
//
aSaveToIBD.Visible := True;
aCreateNormsOnCad.Visible := True;
aInteractive.Visible := false;
aWizards.Visible := True;
aTechDoc.Visible := True;
aBuy.Visible := True;
aPresentation.Visible := True;
aShowDefectObjects.Visible := True;
aManual_Norms.Visible := True;
{$IFEND}
{$IFEND}
//07.10.2011 - ïåðåíåñåíî íà FormShow, òàê êàê íà ýòîò ìîìåíò ðàçìåðû ôîðìû íå ïîä ýêðàí,
// ÷òî íå äàåò íåêîòîðûì ïàíåëåì âûñòàâèòü øèðèíó, òàê êàê îíà áîëüøå øèðèíû ôîðìû íà òåê. ìîìåíò
//{$IF Defined(SCS_PE) or DEFINED(SCS_SPA)}
// aToolHouse.Visible := False;
// tbCADToolsNoob.Width := cCADNoob_PE;
// {$ELSEIF Defined(TELECOM)}
// aToolHouse.Visible := False;
// tbCADToolsNoob.Width := cCADNoob_TEL;
// {$ELSE}
// aToolHouse.Visible := True;
// tbCADToolsNoob.Width := cCADNoob_SCS;
// {$IFEND}
{$IF DEFINED(SCS_SPA)}
ExpertPresentation1.Visible := false;
{$IFEND}
// Ðåæèì Ýêñïåðòà
if GSCSIni.Controls.F_SCSMain_IsPanelExpertMode then
begin
aExpertMode.Checked := True;
tbCADToolsExpert.Visible := True;
// Tolik 24/01/2017 --
tbCADToolsNoob2.Visible := False;
//
tbCADToolsNoob.Visible := False;
tbSCSToolsExpert.Visible := True;
tbSCSToolsNoob.Visible := False;
end
else
begin
aExpertMode.Checked := False;
tbCADToolsExpert.Visible := False;
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsExpert.Visible := True;
{$else}
tbSCSToolsExpert.Visible := False;
{$ifend}
tbCADToolsNoob2.Visible := False;
tbCADToolsNoob.Visible := False;
tbCADToolsNoob.Visible := True;
tbCADToolsNoob2.Visible := True;
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsNoob.Visible := False;
{$else}
//
//tbSCSToolsNoob.Visible := True;
{$ifend}
end;
if tbCADToolsNoob.Visible then
begin
tbCADToolsNoob.Top := tbCADToolsExpert.Top;
tbCADToolsNoob.Left := tbCADToolsExpert.Left;
// Tolik -- 01/02/2017 --
{$if Defined(ES_GRAPH_SC)}
tbCADToolsNoob2.Top := tbCADToolsExpert.Top;
tbCADToolsNoob2.Left := tbCADToolsNoob.Left + tbCADToolsNoob.width + 10;
{$else}
tbCADToolsNoob2.Top := tbCADToolsExpert.Top + 30;
tbCADToolsNoob2.Left := tbCADToolsExpert.Left;
{$ifend}
//
end;
if tbSCSToolsNoob.Visible then
begin
tbSCSToolsNoob.Top := tbSCSToolsExpert.Top;
end;
if tbCADToolsExpert.Visible then
begin
tbSelectExpert.Down := True;
tbSelectNoob.Down := False;
end
else
begin
tbSelectExpert.Down := False;
tbSelectNoob.Down := True;
end;
if Assigned(cbScaleExpert) then
begin
cbScaleExpert.Properties.Items.Clear;
cbScaleExpert.Properties.Items.Add('50%');
cbScaleExpert.Properties.Items.Add('75%');
cbScaleExpert.Properties.Items.Add('100%');
cbScaleExpert.Properties.Items.Add('150%');
cbScaleExpert.Properties.Items.Add('200%');
cbScaleExpert.Properties.Items.Add('400%');
cbScaleExpert.Properties.Items.Add(cMain_Mes111);
end;
if Assigned(cbScaleNoob) then
begin
cbScaleNoob.Properties.Items.Clear;
cbScaleNoob.Properties.Items.Add('50%');
cbScaleNoob.Properties.Items.Add('75%');
cbScaleNoob.Properties.Items.Add('100%');
cbScaleNoob.Properties.Items.Add('150%');
cbScaleNoob.Properties.Items.Add('200%');
cbScaleNoob.Properties.Items.Add('400%');
cbScaleNoob.Properties.Items.Add(cMain_Mes111);
end;
if PROG_NEWSID = '-1' then
aExpertNews.Visible := False;
if GLiteVersion then
begin
mainFormat.Visible := False;
mainTools.Visible := False;
tbSelectExpert.Visible := True;
tbPanExpert.Visible := True;
tbsToolsExpert.Visible := False; //29.12.2011
tbLineExpert.Visible := False;
//Tolik 23/07/2017 --
tbPieExpert.Visible := False;
//
tbRectangleExpert.Visible := False;
tbEllipseExpert.Visible := False;
tbCircleExpert.Visible := False;
tbArcExpert.Visible := False;
tbElipticArcExpert.Visible := False;
tbPolyLineExpert.Visible := False;
tbPointExpert.Visible := False;
tbTextExpert.Visible := False;
tbRichTextExpert.Visible := False;
tbKnifeExpert.Visible := False;
tbHDimLineExpert.Visible := False;
tbVDimLineExpert.Visible := False;
tbSCSHDimLineExpert.Visible := True;
tbSCSVDimLineExpert.Visible := True;
tbSCSArcDimLineExpert.Visible := True;
tbCabinetExpert.Visible := True;
tbCabinetExtExpert.Visible := True;
//29.03.2012 tbWallRectExpert.Visible := False;
//29.03.2012 tbWallPathExpert.Visible := False;
tbHouseExpert.Visible := False;
//Tolik 18/02/2022 --
//tbCreateOnClickModeExpert.Down := True;
//tbToolOrtholineExpert.Down := True;
//tbToolOrtholineExtExpert.Down := True;
tbToolOrtholineExpert.Down := False;
tbToolOrtholineExtExpert.Down := False;
tbCreateOnClickModeExpert.Down := False;
//
tbSelectNoob.Visible := True;
tbSCSHDimLineNoob.Visible := True;
tbSCSVDimLineNoob.Visible := True;
tbSCSArcDimLineNoob.Visible := True;
tbCabinetNoob.Visible := True;
tbCabinetExtNoob.Visible := True;
//29.03.2012 tbWallRectNoob.Visible := False;
//29.03.2012 tbWallPathNoob.Visible := False;
tbHouseNoob.Visible := False;
//Tolik 18/02/2022 --
//tbCreateOnClickModeNoob.Down := True;
//tbToolOrtholineNoob.Down := True;
//tbToolOrtholineExtNoob.Down := True;
tbCreateOnClickModeNoob.Down := False;
tbToolOrtholineNoob.Down := False;
tbToolOrtholineExtNoob.Down := False;
//
aMasterAutoTrace.Visible := False;
aMasterAutoTraceElectric.Visible := False;
aCreateNormsOnCad.Visible := False;
aManual_Interfaces.Visible := False;
end;
GFtpConnectStr := ReadSetting(fnSCSIniFile, dtString, scReservFtp, idtConnectString, '');
mnuReserv.Enabled := GFtpConnectStr <> '';
//#From Oleg#
//XPMenu.Active := false;
//XPMenu.Active := True;
FCADsInProgress := TList.Create; //07.11.2011
//sDiv1.OnMouseDown := OnSplitterMouseDown;
//sDiv1.OnMouseUp := OnSplitterMouseUp;
//sDiv2.OnMouseDown := OnSplitterMouseDown;
//sDiv2.OnMouseUp := OnSplitterMouseUp;
SetHints;
//pnHintBar
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.FormCreate', E.Message);
end;
// Tolik 05/05/2021 --
tbCADToolsNoob_OldProc := tbCADToolsNoob.WindowProc;
tbCADToolsNoob.WindowProc := tbCADToolsNoob_newProc;
tbCADToolsNoob2_OldProc := tbCADToolsNoob2.WindowProc;
tbCADToolsNoob2.WindowProc := tbCADToolsNoob2_newProc;
tbCADToolsExpert_OldProc := tbCADToolsExpert.WindowProc;
tbCADToolsExpert.WindowProc := tbCADToolsExpert_newProc;
tbOther_OldProc := tbOther.WindowProc;
tbOther.WindowProc := tbOther_newProc;
tbFile_OldProc := tbFile.WindowProc;
tbFile.WindowProc := tbFile_newProc;
tbObject_OldProc := tbObject.WindowProc;
tbObject.WindowProc := tbObject_newProc;
tbLayers_OldProc := tbLayers.WindowProc;
tbLayers.WindowProc := tbLayers_newProc;
tbSCSToolsExpert_OldProc := tbSCSToolsExpert.WindowProc;
tbSCSToolsExpert.WindowProc := tbSCSToolsExpert_newProc;
cbMainPanel_OldProc := cbMainPanel.WindowProc;
cbMainPanel.WindowProc := cbMainPanel_newProc;
//
EnableAlign;
end;
// ÑÎÇÄÀÒÜ ÏÐÎÅÊÒ
procedure TFSCS_Main.aNewExecute(Sender: TObject);
var
i: integer;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
if Not IsVista then
begin
BuildFHash;
GetLic;
for i := 0 to 15 do
begin
if ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A))) <> 0 then
begin
exit;
end;
end;
end;
{$IFEND}
// Tolik 30/04/2021 --
{
tbCADToolsNoob_OldProc := tbCADToolsNoob.WindowProc;
tbCADToolsNoob.WindowProc := tbCADToolsNoob_newProc;
tbCADToolsNoob2_OldProc := tbCADToolsNoob2.WindowProc;
tbCADToolsNoob2.WindowProc := tbCADToolsNoob2_newProc;
tbCADToolsExpert_OldProc := tbCADToolsExpert.WindowProc;
tbCADToolsExpert.WindowProc := tbCADToolsExpert_newProc;
tbOther_OldProc := tbOther.WindowProc;
tbOther.WindowProc := tbOther_newProc;
tbFile_OldProc := tbFile.WindowProc;
tbFile.WindowProc := tbFile_newProc;
tbObject_OldProc := tbObject.WindowProc;
tbObject.WindowProc := tbObject_newProc;
tbLayers_OldProc := tbLayers.WindowProc;
tbLayers.WindowProc := tbLayers_newProc;
cbMainPanel_OldProc := cbMainPanel.WindowProc;
cbMainPanel.WindowProc := cbMainPanel_newProc;
}
//
try
MakeProject;
// SetMenuStatus(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNewExecute', E.Message);
end;
end;
// ÑÎÇÄÀÒÜ ÍÎÂÛÉ ËÈÑÒ
procedure TFSCS_Main.aNewListExecute(Sender: TObject);
var
ListParams: TListParams;
Res: Boolean;
//IDFloor: Integer;
// ListForPassage: TF_CAD;
// SavedCAD: TF_CAD;
begin
try
ListParams := GetListParamsForNewList;
F_MasterNewList.Tag := 0;
Res := MakeEditList(meMake, ListParams, True);
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
GCadForm.FListType := lt_Normal;
//24.06.2013 - ñîçäàíèå ì-ý ïåðåõîäà
if Res then
begin
CustomizeNewList;
// //27.06.2013 - ïîäãðóçêà ïîäëîæêè ñ çàìåíîé ñóùåñòâóþùåé, ñîõðàíÿÿ ðàçìåðû/ïîçèöèè
// Application.ProcessMessages;
// LoadSubstrateEx(true);
// //25.06.2013 - âûáîð ìåñòà äëÿ ì-ý íà íîâîì ëèñòå
// IDFloor := GetListIDForCreatePassage(GCadForm.FCADListID, -1);
// ListForPassage := nil;
//
// if IDFloor > 0 then
// begin
// ListForPassage := GetListByID(IDFloor);
// if ListForPassage <> nil then
// begin
// // Òóëçà ñîçäàíèÿ ì-ý ïåðåõîäà
// if MessageQuastYN(cMain_Mes139) = IDYES then
// begin
// Application.ProcessMessages;
// if GCadForm.CurrentLayer <> lnSCSCommon then
// GCadForm.CurrentLayer := lnSCSCommon;
// GCadForm.PCad.SetTool(toFigure, TBetweenFloorUpVertex.ClassName);
// end;
// end;
// end;
////25.06.2013 - âûáîð ìåñòà äëÿ ì-ý íà ëèñòå íèæå
// IDFloor := GetListIDForCreatePassage(GCadForm.FCADListID, -1);
// ListForPassage := nil;
// if IDFloor > 0 then
// begin
// ListForPassage := GetListByID(IDFloor);
// if ListForPassage <> nil then
// begin
// // Òóëçà ñîçäàíèÿ ì-ý ïåðåõîäà
// if MessageQuastYN(cMain_Mes139) = IDYES then
// begin
// Application.ProcessMessages;
// SavedCAD := GCADForm;
// try
// GCADForm := ListForPassage;
// GCadForm.BringToFront;
//
// if GCadForm.CurrentLayer <> lnSCSCommon then
// GCadForm.CurrentLayer := lnSCSCommon;
// GCadForm.PCad.SetTool(toFigure, TBetweenFloorUpVertex.ClassName);
// finally
// //GCADForm := SavedCAD;
// //GCadForm.BringToFront;
// end;
// end;
// end;
// end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNewListExecute', E.Message);
end;
end;
// ÎÊÐÛÒÜ ÏÐÎÅÊÒ
procedure TFSCS_Main.aOpenProjectExecute(Sender: TObject);
begin
try
// ïîäâÿçàòü ê ôîðìå ïðîåêòà
if F_ProjMan <> nil then
begin
F_ProjMan.Position := poDesigned;
F_ProjMan.Show;
aViewProjectManager.Checked := True;
F_ProjMan.ManualDock(FSCS_Main.pDock1, nil, alNone);
FSCS_Main.pDock1.Width := 200;
end
else
aViewProjectManager.Checked := False;
if F_NormBase <> nil then
begin
F_NormBase.Position := poDesigned;
F_NormBase.Show;
aViewNormBase.Checked := True;
F_NormBase.ManualDock(FSCS_Main.pDock2, nil, alNone);
FSCS_Main.pDock2.Width := 200;
end
else
aViewNormBase.Checked := False;
if F_HintBar = nil then
begin
F_HintBar := TF_HintBar.Create(Application);
F_HintBar.Parent := pnHintBar;
F_HintBar.Align := alClient;
F_HintBar.Show;
F_HintBar.StartWizard;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aOpenProjectExecute', E.Message);
end;
end;
// Çàãðóçèòü ïîäëîæêó
procedure TFSCS_Main.aLoadSubstrateExecute(Sender: TObject);
var
FName, FExt: string;
i: integer;
FDir: string;
OpenDialog: TOpenDialog;
Jpeg: TJpegImage;
Bmp: TBMPObject;
Bitmp: TBitmap;
Fig: TFigure;
begin
GisUserDimLine := True;//Tolik 11/08/2021 --
//if ActiveMDIChild <> nil then
// begin
// OpenDialog := TOpenDialog.Create(Self);
// {$if Defined(ES_GRAPH_SC)}
// FDir := ExeDir;
// {$else}
// FDir := ExtractFileDir(Application.ExeName);
// {$ifend}
// if DirectoryExists(FDir + '\.Makets') then
// FDir := FDir + '\.Makets';
// OpenDialog.Title := cMain_Mes4;
// OpenDialog.InitialDir := ExtractDirByCategoryType(dctBackgLayers);//ExtractSaveDirForCategory('.Makets'); //FDir;
// OpenDialog.DefaultExt := 'scb';
// OpenDialog.Filter := cMain_Mes5;
// if OpenDialog.Execute then
// begin
// try
// FName := OpenDialog.FileName;
// LoadSubstrate(FName);
// GCadForm.PCad.DeselectAll(0);
// except
// ShowMessage(cMain_Mes6);
// end;
// RefreshCAD(GCadForm.PCad);
// end;
// OpenDialog.Free;
// end
// else
// MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
LoadSubstrateEx(false);
//Tolik 11/08/2021 --
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
end;
// ÇÀÊÐÛÒÜ ÏÐÎÅÊÒ
procedure TFSCS_Main.aCloseExecute(Sender: TObject);
begin
try
if FSCS_Main.MDIChildCount > 0 then
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
// GNotNeedCheckRaisesBeforeClose := True;
GCadForm.Close;
// GNotNeedCheckRaisesBeforeClose := False;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCloseExecute', E.Message);
end;
end;
// ñîõðàíåíèå ïîäëîæåê
procedure TFSCS_Main.SaveSubstrate(aFName: string);
var
TempCad: TPowerCad;
begin
TempCad := TPowerCad.create(FSCS_Main);
try
TempCad.Parent := FSCS_Main;
TempCad.NewLayer(cCad_Mes1);
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.ActiveLayer := 1;
GCadForm.PCad.SelectAll(1);
Clipboard.Clear;
GCadForm.PCad.CopyToClipBoard;
TempCad.PasteFromClipBoard(1);
TempCad.SaveToFile(1, aFName);
Clipboard.Clear;
finally
try
FreeAndNil(TempCad);
except
end;
end;
end;
// çàãðóçêà ïîäëîæåê
procedure TFSCS_Main.LoadSubstrate(aFName: string);
var
TempCad: TPowerCad;
i: integer;
begin
TempCad := TPowerCad.create(FSCS_Main);
try
TempCad.Parent := FSCS_Main;
TempCad.LoadFromFile(aFName);
TempCad.SelectAll(1);
Clipboard.Clear;
TempCad.ActiveLayer := 1;
GCadForm.CurrentLayer := 1;
TempCad.CopyToClipBoard;
GCadForm.PCad.OnObjectInserted := nil;
GCadForm.PCad.PasteFromClipBoard(1);
GCadForm.PCad.OnObjectInserted := GCadForm.PCadObjectInserted;
Clipboard.Clear;
finally
try
FreeAndNil(TempCad);
except
end;
end;
end;
procedure TFSCS_Main.SaveFPlan(aFName: string);
var
TempCad: TPowerCad;
begin
TempCad := TPowerCad.create(FSCS_Main);
try
TempCad.Parent := FSCS_Main;
TempCad.NewLayer(cCad_Mes8);
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.ActiveLayer := 8;
GCadForm.PCad.SelectAll(8);
Clipboard.Clear;
GCadForm.PCad.CopyToClipBoard;
TempCad.PasteFromClipBoard(1);
TempCad.SaveToFile(1, aFName);
Clipboard.Clear;
finally
try
FreeAndNil(TempCad);
except
end;
end;
end;
procedure TFSCS_Main.LoadFPlan(aFName: string);
var
TempCad: TPowerCad;
i: integer;
begin
TempCad := TPowerCad.create(FSCS_Main);
try
TempCad.Parent := FSCS_Main;
TempCad.LoadFromFile(aFName);
TempCad.SelectAll(1);
Clipboard.Clear;
TempCad.ActiveLayer := 1;
GCadForm.CurrentLayer := 8;
TempCad.CopyToClipBoard;
GCadForm.PCad.OnObjectInserted := nil;
GCadForm.PCad.PasteFromClipBoard(8);
GCadForm.PCad.OnObjectInserted := GCadForm.PCadObjectInserted;
Clipboard.Clear;
finally
try
FreeAndNil(TempCad);
except
end;
end;
end;
// ÑÎÕÐÀÍÈÒÜ Ïîäëîæêó
procedure TFSCS_Main.aSaveSubstrateExecute(Sender: TObject);
var
FName: string;
FDir: string;
SaveDialog: TSaveDialog;
begin
if ActiveMDIChild <> nil then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.Makets') then
FDir := FDir + '\.Makets';
SaveDialog.Title := cMain_Mes7;
SaveDialog.InitialDir := FDir;
SaveDialog.DefaultExt := 'scb';
SaveDialog.Filter := cMain_Mes5;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
begin
try
FName := SaveDialog.FileName;
SaveSubstrate(FName);
except
ShowMessage(cMain_Mes6);
end;
end;
SaveDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÎÕÐÀÍÈÒÜ ïîäëîæêó ÊÀÊ ...
procedure TFSCS_Main.aSaveAsSubstrateExecute(Sender: TObject);
var
FName: string;
FDir: string;
SaveDialog: TSaveDialog;
PDFDoc: TPDFDocument;
begin
if ActiveMDIChild <> nil then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.Makets') then
FDir := FDir + '\.Makets';
SaveDialog.Title := cMain_Mes7;
SaveDialog.InitialDir := ExtractDirByCategoryType(dctBackgLayers);//ExtractSaveDirForCategory('.Makets');//FDir;
SaveDialog.DefaultExt := 'scb';
SaveDialog.Filter := cMain_Mes5 + '|'+ cProgressExp_Msg9_1; //29.02.2012 cMain_Mes5;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctBackgLayers, ExtractFileDir(SaveDialog.FileName));
//
FName := SaveDialog.FileName;
if ExtractFileExt(SaveDialog.FileName) = '.scb' then
SaveSubstrate(FName)
else
begin
PDFDoc := CreatePDFObject(Self, cCad_Mes1 +' '+ GetListParams(GCadForm.FCADListID).Caption, SaveDialog.FileName, nil);
PDFDoc.BeginDoc;
SetCADPageParamsToPDF(GCadForm, PDFDoc, true);
PDFDoc.EndDoc;
PDFDoc.Free;
end;
except
ShowMessage(cMain_Mes8);
end;
end;
SaveDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÝÊÑÏÎÐÒÈÐÎÂÀÒÜ ÈÇ ÏÐÎÅÊÒÀ
procedure TFSCS_Main.aExportExecute(Sender: TObject);
var
FName: string;
begin
if ActiveMDIChild <> nil then
begin
SaveDXFFile(GCadForm.PCad, cExport_Mes1, cImport_Mes12);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÈÌÏÎÐÒÈÐÎÂÀÒÜ Â ÏÐÎÅÊÒ
procedure TFSCS_Main.aImportExecute(Sender: TObject);
var
FName: string;
begin
if ActiveMDIChild <> nil then
begin
// LoadDXFFile(GCadForm.PCad);
LoadDXFFileNew(GCadForm.PCad, cImport_Mes4, cImport_Mes5);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÐÅÄÂÀÐÈÒÅËÜÍÛÉ ÏÐÎÑÌÎÒÐ ËÈÑÒÀ
procedure TFSCS_Main.aPrevViewExecute(Sender: TObject);
var
i: integer;
SelCheck: integer;
prnW,prnH: Integer;
resX,resY: Integer;
pw, ph: integer;
dev,
driv,
port: array[0..80] of Char;
deviceMode: THandle;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
SelCheck := 0;
if Not IsVista then
begin
GetLic;
BuildFHash;
SelCheck := 0;
for i := 0 to 35 do
begin
SelCheck := SelCheck + ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A)))
end;
end;
{$ELSE}
SelCheck := 0;
{$IFEND}
{$if Not Defined(ES_GRAPH_SC)}
if SelCheck > 0 then
ExitProcess(0);
{$ifend}
{$IF Defined(TRIAL_SCS) and not Defined(PROCAT_SCS) and not Defined(SCS_PE)}
ShowMessage(cMain_Mes9);
{$ELSE}
{$if Defined(ES_GRAPH_SC_EXE)}
// ShowMessage('Print...');
{$ifend}
try
if ActiveMDIChild <> nil then
begin
// SetupPrinter(round(GCadForm.PCad.WorkHeight), round(GCadForm.PCad.WorkWidth), integer(GCadForm.PCad.PageOrient) + 1);
// GCadForm.PCad.AutoTilePrint := False;
try
Printer.GetPrinter(dev, driv, port, deviceMode);
Printer.SetPrinter(dev, driv, port, 0)
except
on E: Exception do ShowMessage('Printer.GetPrinter - ' + E.Message);
end;
try
// Portrait
if GCadForm.PCad.PageOrient = TPageOrient(1) then
begin
Printer.Orientation := TPrinterOrientation(0);
end
else
// Landscape
begin
Printer.Orientation := TPrinterOrientation(1);
end;
except
on E: Exception do ShowMessage('Printer.Orientation - ' + E.Message);
end;
try
prnW := GetDeviceCaps(printer.Handle, PHYSICALWIDTH);
prnH := GetDeviceCaps(printer.Handle, PHYSICALHEIGHT);
resX := GetDeviceCaps(printer.Handle, LOGPIXELSX);
resY := GetDeviceCaps(printer.Handle, LOGPIXELSY);
except
on E: Exception do ShowMessage('GetDeviceCaps - ' + E.Message);
end;
pw := round(prnW / (resX / 25.4));
ph := round(prnH / (resY / 25.4));
try
GPreview := True;
Init_prnW := round(prnW * (GCadForm.PCad.WorkWidth / pw));
Init_prnH := round(prnH * (GCadForm.PCad.WorkHeight / ph));
try
GCadForm.PCad.PrintPreview;
except
on E: Exception do ShowMessage('PCad.PrintPreview - ' + E.Message);
end;
finally
GPreview := False;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do ShowMessage(E.Message);
end;
{$IFEND}
end;
// ÏÅ×ÀÒÜ ËÈÑÒÀ
procedure TFSCS_Main.aPrintExecute(Sender: TObject);
var
i: integer;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
if Not IsVista then
begin
BuildFHash;
GetLic;
for i := 0 to 15 do
begin
if ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A))) > 0 then
Close;
end;
end;
{$IFEND}
{$IF Defined(TRIAL_SCS) and not Defined(PROCAT_SCS) and not Defined(SCS_PE)}
ShowMessage(cMain_Mes9);
{$ELSE}
if ActiveMDIChild <> nil then
FSCS_Main.aPrevViewExecute(Sender)
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
{$IFEND}
end;
// ÂÛÕÎÄ ÈÇ ÏÐÎÅÊÒÀ
procedure TFSCS_Main.aExitExecute(Sender: TObject);
begin
GNotNeedCheckRaisesBeforeClose := True;
FSCS_Main.Close;
end;
// ÎÒÌÅÍÈÒÜ
procedure TFSCS_Main.aUndoExecute(Sender: TObject);
var a: Integer;
figstream: TMemoryStream;
FileStream: Tstream;
Figure: TFigure;
xSize: Integer;
begin
(*try
// Tolik 18/11/2020 -- Ýòî "Âûëåòèò" íà ïóñòîì ïðîåêòå (åñëè, íàïðèìåð, âñå ëèñòû óäàëèòü !!!, òàì GCadForm íå áóäåò!!!)
if Assigned(GCadForm) then
begin
//
FileStream := TStream.Create;
//FileStream := SafeOpenFileStream('c:\Figstream.txt', fmCreate, 'TPCDrawing.SaveSCSFiguresToFile', cSCSComponent_Msg22_7);
For a := 0 to GCadForm.PCad.Figures.Count - 1 do
begin
Figure := TFigure(GCadForm.PCad.Figures[a]);
//if Figure.Classname <> 'TFigureGrpNotMod' then
//if Figure.Classname = 'TFigureGrp' then
begin
figStream := TMemoryStream.Create;
Figure.WriteToStream(figStream);
xSize := figStream.Size;
figStream.Seek(0, soFromBeginning);
FileStream.Write(xSize, 4);
StreamToStream(figStream, FileStream, xSize);
FreeAndNil(figStream);
end;
end;
FreeAndNil(FileStream);
end;
Except
On E:Exception do ShowMessage('Write Figures to Stream ERROR !!! ' + Figure.Cname);
end;
*)
if ActiveMDIChild <> nil then
begin
try
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
// CTRL + Z äëÿ ñëîÿ ÑÊÑ
if (GCadForm.FListType = lt_Normal) and ((GCadForm.PCad.ActiveLayer = lnArch) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer)) then
begin
GCadForm.SCSUndoNormalList;
SetProjectChanged(True);
end
else
if (GCadForm.FListType = lt_ProjectPlan) then
begin
GCadForm.SCSUndoProjectPlan;
SetProjectChanged(True);
end
else
if (GCadForm.FListType = lt_DesignBox) then
begin
GCadForm.SCSUndoDesignList;
SetProjectChanged(True);
end
// Tolik 12/02/2021 --
else
if (GCadForm.FListType = lt_ElScheme) then
begin
GCadForm.SCSUndoElScheme;
SetProjectChanged(True);
end
//Tolik 06/02/2023 --
else
if (GCadForm.FListType = lt_AScheme) then
begin
GCadForm.SCSUndoElScheme;
SetProjectChanged(True);
end
//
else
if not CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
begin
GCadForm.PCad.UnDo;
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aUndoExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÂÒÎÐÈÒÜ
procedure TFSCS_Main.aRedoExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
// CTRL + Y äëÿ ñëîÿ ÑÊÑ
if (GCadForm.FListType = lt_Normal) and ((GCadForm.PCad.ActiveLayer = lnArch) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer)) then
begin
GCadForm.SCSRedoNormalList;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (GCadForm.FListType = lt_ProjectPlan) then
begin
GCadForm.SCSRedoProjectPlan;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (GCadForm.FListType = lt_DesignBox) then
begin
GCadForm.SCSRedoDesignList;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
// Tolik 12/02/2021 -- åñëè òèï ëèñòà - ñõåìà ýëåêòðè÷åñêàÿ
else
if ((GCadForm.FListType = lt_ElScheme) or (GCadForm.FListType = lt_AScheme)) then
begin
//GCadForm.SCSRedoElScheme;
GCadForm.PCad.ReDo;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
//
else
if not CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
begin
GCadForm.PCad.ReDo;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRedoExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÅÇÀÒÜ ÂÛÄÅËÅÍÍÎÅ
procedure TFSCS_Main.aCutExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.Selection.Count > 0 then
begin
try
if not CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
begin
GCadForm.PCad.CutToClipBoard;
GCurrLayerBuffer := GCadForm.PCad.ActiveLayer;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCutExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÊÎÏÈÐÎÂÀÒÜ ÂÛÄÅËÅÍÍÎÅ
procedure TFSCS_Main.aCopyExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.Selection.Count > 0 then
begin
try
if not CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
begin
GCadForm.PCad.CopyToClipBoard;
GCurrLayerBuffer := GCadForm.PCad.ActiveLayer;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCopyExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÑÒÀÂÈÒÜ ÂÛÄÅËÅÍÍÎÅ
procedure TFSCS_Main.aPasteExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if (GCadForm.PCad.ActiveLayer <> 1) and (GCadForm.PCad.ActiveLayer <> 8) and (GCadForm.PCad.ActiveLayer <> 7) then
begin
GCadForm.CurrentLayer := 1;
end;
if not CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
GCadForm.PCad.PasteFromClipBoard(GCadForm.PCad.ActiveLayer);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPasteExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÄÅËÈÒÜ ÂÑÅ
procedure TFSCS_Main.aSelectAllExecute(Sender: TObject);
var
ActLayer: integer;
begin
if ActiveMDIChild <> nil then
begin
try
ActLayer := GCadForm.PCad.ActiveLayer;
if ActLayer = lnSCSCommon then
begin
// c Shift íî áåç ALT - âûäåëèòü âñå òðàññû è ñ/ï
// c Shift è c ALT - âûäåëèòü òðàññû áåç ñ/ï (òîëüêî ñ/ï ìîæíî áóäåò âûäåëèòü òàê: âíà÷àëå ïðîñòî Ctrl-A - âûäåëèòñÿ âñå,
// à çàòåì èíâåðòèðóåì âûäåëåíèå - âûäåëÿòñÿ òîëüêî ñ/ï
// ñ ALT íî áåç Shift - èíâåðòèðîâàòü âûáîð
if ((GetKeyState(VK_SHIFT) and 128) = 128) and ((GetKeyState(VK_MENU) and 128) = 0) then //Åñëè íàæàòà VK_SHIFT è íå íàæàò ALT
begin
GCadForm.SelectTracesAndRaisers;
end
else if ((GetKeyState(VK_SHIFT) and 128) = 128) and ((GetKeyState(VK_MENU) and 128) = 128) then //Åñëè íàæàòà ALT è Shift (÷òî áû ðàáîòàëî ñ ìåíþ - âíà÷àëå íàæèìàòü ïóíêò íå îòïóñêàÿ ìûøó íàæàòü Alt)
begin
GCadForm.SelectTraces;
end
else if ((GetKeyState(VK_SHIFT) and 128) = 0) and ((GetKeyState(VK_MENU) and 128) = 128) then //Åñëè íàæàòà ALT íî áåç Shift (÷òî áû ðàáîòàëî ñ ìåíþ - âíà÷àëå íàæèìàòü ïóíêò íå îòïóñêàÿ ìûøó íàæàòü Alt)
begin
GCadForm.InvertSCSSelection;
end
else
GCadForm.PCad.SelectAll(ActLayer);
end
else
begin
if ((GetKeyState(VK_MENU) and 128) = 128) then //Åñëè íàæàòà ALT íî áåç Shift (÷òî áû ðàáîòàëî ñ ìåíþ - âíà÷àëå íàæèìàòü ïóíêò íå îòïóñêàÿ ìûøó íàæàòü Alt)
GCadForm.InvertAllSelection
else
GCadForm.PCad.SelectAll(ActLayer);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSelectAllExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÍÀÉÒÈ ÎÁÜÅÊÒ
procedure TFSCS_Main.aFindExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
end;
// ÍÀÉÒÈ ÄÀËÅÅ...
procedure TFSCS_Main.aFindNextExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
end;
// ËÈÑÒ ÂÎ ÂÅÑÜ ÝÊÐÀÍ
procedure TFSCS_Main.aAllScreenExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.FitToWindow;
// if GCadForm.PCad.ZoomScale < 50 then
// GCadForm.SetZoomScale(50);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aAllScreenExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ËÈÑÒ ÍÀ 50%
procedure TFSCS_Main.a50Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(50);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a50Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ËÈÑÒ ÍÀ 75%
procedure TFSCS_Main.a75Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(75);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a75Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ËÈÑÒ ÍÀ 100%
procedure TFSCS_Main.a100Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(100);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a100Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ËÈÑÒ ÍÀ 150%
procedure TFSCS_Main.a150Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(150);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a150Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ËÈÑÒ ÍÀ 200%
procedure TFSCS_Main.a200Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(200);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a200Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.a400Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(400);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a400Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÂÅËÈ×ÈÒÜ ÌÀÑØÒÀÁ ÍÀ...
procedure TFSCS_Main.aIncExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
F_IncOn.ShowModal
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÂÅËÈ×ÈÒÜ ÌÀÑØÒÀÁ
procedure TFSCS_Main.aInc1ptExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.SetZoomScale(GCadForm.PCad.ZoomScale + 5);
if GCadForm.PCad.AutoRefresh then
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aInc1ptExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÌÅÍÜØÈÒÜ ÌÀÑØÒÀÁ
procedure TFSCS_Main.aDec1ptExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if (GCadForm.PCad.ZoomScale - 5) >= 10 then
begin
GCadForm.SetZoomScale(GCadForm.PCad.ZoomScale - 5);
if GCadForm.PCad.AutoRefresh then
RefreshCAD(GCadForm.PCad);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDec1ptExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÔÎÍÀ
procedure TFSCS_Main.aBackgroundColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clGray;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.BackGround;
F_LoadColor.ShowModal;
GCadForm.PCad.BackGround := F_LoadColor.ColorPicker.SelectedColor;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBackgroundColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ËÈÍÅÉÊÓ
procedure TFSCS_Main.aShowRulerExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aShowRuler.Checked then
GCadForm.PCad.RulerVisible := true
else
GCadForm.PCad.RulerVisible := false;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADShowRuler := GCadForm.PCad.RulerVisible;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ÑÅÒÊÓ
procedure TFSCS_Main.aShowGridExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aShowGrid.Checked then
GCadForm.PCad.Grids := true
else
GCadForm.PCad.Grids := false;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADShowGrid := GCadForm.PCad.Grids;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ÏÀÍÅËÜ ÈÍÑÒÐÓÌÅÍÒÎÂ
procedure TFSCS_Main.aViewBtnPanelExecute(Sender: TObject);
begin
if aViewBtnPanel.Checked then
cbMainPanel.Visible := true
else
cbMainPanel.Visible := false;
end;
// ÏÎÊÀÇÛÂÀÒÜ ÍÎÐÌÀÒÈÂÍÓÞ ÁÀÇÓ
procedure TFSCS_Main.aViewNormBaseExecute(Sender: TObject);
var
ParentPanel: TComponent;
begin
if F_NormBase <> nil then
begin
try
if aViewNormBase.Checked then
begin
FSCS_Main.sDiv2.Visible := False;
FSCS_Main.pDock2.Visible := True;
FSCS_Main.sDiv2.Visible := True;
end
else
begin
FSCS_Main.pDock2.Visible := False;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aViewNormBaseExecute', E.Message);
end;
end
else
begin
aViewNormBase.Checked := False;
MessageBox(Application.Handle, cMain_Mes10, cMain_Mes1, MB_OK);
end;
end;
// ÏÎÊÀÇÛÂÀÒÜ ÌÅÍÅÄÆÅÐ ÏÐÎÅÊÒÎÂ
procedure TFSCS_Main.aViewProjectManagerExecute(Sender: TObject);
var
ParentPanel: TComponent;
begin
if F_ProjMan <> nil then
begin
try
if aViewProjectManager.Checked then
begin
FSCS_Main.PDock1.Visible := True;
end
else
begin
FSCS_Main.PDock1.Visible := False;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aViewProjectManagerExecute', E.Message);
end;
end
else
begin
aViewProjectManager.Checked := False;
MessageBox(Application.Handle, cMain_Mes11, cMain_Mes1, MB_OK);
end;
end;
// ÏÎÊÀÇÛÂÀÒÜ ÑÂÎÉÑÒÂÀ CAD-ÎÁÜÅÊÒÎÂ
procedure TFSCS_Main.aViewCADObjectsPropExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aViewCADObjectsProp.Checked then
begin
F_SizePos.Caption := cMain_Mes12;
F_SizePos.Show;
end
else
F_SizePos.Close;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ÑÂÎÉÑÒÂÀ ÑÊÑ-ÎÁÜÅÊÒÎÂ
procedure TFSCS_Main.aViewSCSObjectsPropExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aViewSCSObjectsProp.Checked then
begin
F_SCSObjectsProp.Caption := cMain_Mes12;
F_SCSObjectsProp.Show;
end
else
F_SCSObjectsProp.Close;
end
else
begin
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
aViewSCSObjectsProp.Checked := False;
end;
end;
// ÏÎÊÀÇÀÒÜ ÌÅÍÅÄÆÅÐ ÑËÎÅÂ
procedure TFSCS_Main.aViewLayersExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aViewLayers.Checked then
F_LayersDialog.Show
else
F_LayersDialog.Close;
end
else
begin
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
aViewLayers.Checked := False;
end;
end;
// ÏÎÊÀÇÀÒÜ ÍÀÂÈÃÀÒÎÐ
procedure TFSCS_Main.aViewNavigatorExecute(Sender: TObject);
var
MainRight: integer;
begin
if aViewNavigator.Checked then
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
if F_Navigator = nil then
begin
F_Navigator := TF_Navigator.Create(nil);
GSaveNavigatorFigures := F_Navigator.PCadNavigator.Figures;
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
F_Navigator.PCadNavigator.Figures := GCadForm.PCad.Figures;
MainRight := FSCS_Main.Left + FSCS_Main.Width;
F_Navigator.Top := FSCS_Main.Top + 45;
F_Navigator.Left := MainRight - F_Navigator.Width - 5;
if not F_Navigator.Showing then
F_Navigator.Show;
end;
end
else
aViewNavigator.Checked := False;
end
else
begin
if F_Navigator <> nil then
begin
F_Navigator.PCadNavigator.Figures := GSaveNavigatorFigures;
FreeAndNil(F_Navigator);
end;
end;
end;
// ÑÂÎÉÑÒÂÀ ÎÁÜÅÊÒÀ
procedure TFSCS_Main.aObjPropertiesExecute(Sender: TObject);
var
ClickFigure: TFigure;
SelCount: Integer;
SelCheck: integer;
i: integer;
begin
if ActiveMDIChild <> nil then
begin
try
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
SelCheck := 0;
if Not IsVista then
begin
for i := 0 to 15 do
begin
SelCheck := SelCheck + ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A)))
end;
end;
{$ELSE}
SelCheck := 0;
{$IFEND}
if GCadForm.PCad.SelectedCount > SelCheck then
begin
if GPopupFigure = Nil then
begin
SelCount := GCadForm.PCad.SelectedCount;
GPopupFigure := TFigure(GCadForm.PCad.Selection[SelCount - 1]);
end;
ClickFigure := TFigure(GPopupFigure);
if Assigned(ClickFigure) then
begin
if CheckFigureByClassName(ClickFigure, cTConnectorObject) or
CheckFigureByClassName(ClickFigure, cTOrthoLine) then //09.04.2012
begin
//
FSCS_Main.aViewSCSObjectsProp.Checked := True;
if F_SCSObjectsProp.FormStyle <> fsStayOnTop then
F_SCSObjectsProp.FormStyle := fsStayOnTop;
//
if F_SCSObjectsProp.Showing then
SetForegroundWindow(F_SCSObjectsProp.Handle);
// Âûçâàòü îáðàáîòêó ãðóïïû âûäåëåííûõ îáúåêòîâ
F_SCSObjectsProp.Execute(ClickFigure);
end
else
if CheckFigureByClassName(ClickFigure, TSCSFigureGrp.ClassName) or
CheckFigureByClassName(ClickFigure, TFigureGrp.ClassName) or
CheckFigureByClassName(ClickFigure, TBlock.ClassName) or
CheckFigureByClassName(ClickFigure, TPolyline.ClassName)
// Tolik 18/10/2017 --
or CheckFigureByClassName(ClickFigure, TPie.ClassName) // ñåêòîð
//
then
aBlockParams.Execute
else
ClickFigure.Edit;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aObjPropertiesExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aOneLineChemeExecute(Sender: TObject);
var i: integer;
LineList, PointList, ShieldList, AutoSwitchList, JoinedSwitchCompons, CableList: TSCSComponents;
ShieldCompon, AVR_Compon, SwitchCompon: TSCSComponent;
ShieldLines, Switch_List: TList;
PassedComponList, EndCompons: TSCSComponents;
CableComponent: TSCSComponent;
ShieldFigure: TConnectorObject;
ShieldCatalog: TSCSCatalog;
AllConnectedTrace: TList;
AllConnectedCables: TSCSComponents;
Procedure GetSwitchList(var aList: TSCSComponents; aLookList: TSCSComponents);
var i: Integer;
ChildCompon: TSCSComponent;
begin
for i := 0 to aLookList.Count - 1 do
begin
ChildCompon := aLookList[i];
if ChildCompon.ComponentType.SysName = ctsnAutoSwitch then
if aList.IndexOf(childCompon) = -1 then
aList.Add(ChildCompon);
end;
end;
Procedure CollectConnections(aCompon: TSCSComponent; var aList: TSCSComponents; aCypher: string);
var i, j, k: integer;
ParentCompon, ChildCompon, JoinedCompon: TSCSComponent;
begin
if aList.IndexOf(aCompon) = -1 then
aList.Add(aCompon);
if isCableComponent(aCompon) then
if AllConnectedCables.IndexOf(aCompon) = -1 then
AllConnectedCables.Add(aCompon);
if PassedComponList.IndexOf(aCompon) = -1 then
begin
PassedComponList.Add(aCompon);
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if aCompon.JoinedComponents[i].IsLine = biTrue then // Ïîäêëþ÷åí êàáåëü
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].Cypher = aCypher then
begin
if PassedComponList.IndexOf(aCompon.JoinedComponents[i]) = -1 then
CollectConnections(aCompon.JoinedComponents[i], aList, aCypher);
end;
end
else
begin // Point Connection
if PassedComponList.IndexOf(aCompon.JoinedComponents[i]) = -1 then
begin
PassedComponList.Add(aCompon.JoinedComponents[i]);
if aList.IndexOf(aCompon.JoinedComponents[i]) = -1 then // òóò äîïîëíèòåëüíó ïðîâåðêó âîòêíóòü, íà÷èíàÿ ñ ïàðåíòà äîíèçó íà âõîæäåíèå
begin
ParentCompon := aCompon.JoinedComponents[i].GetTopComponent;
if ParentCompon <> nil then
begin
if aList.IndexOf(ParentCompon) = -1 then
aList.Add(ParentCompon);
if ParentCompon.ComponentType.SysName <> ctsnTerminalBox then
if EndCompons.IndexOf(ParentCompon) = -1 then
EndCompons.Add(ParentCompon);
for j := 0 to ParentCompon.JoinedComponents.Count - 1 do
begin
JoinedCompon := ParentCompon.JoinedComponents[j];
if PassedComponList.IndexOf(JoinedCompon) = -1 then
if JoinedCompon.IsLine = biTrue then
if isCableComponent(JoinedCompon) then
if JoinedCompon.Cypher = aCypher then
CollectConnections(JoinedCompon, aList, aCypher);
end;
for j := 0 to ParentCompon.ChildReferences.Count - 1 do
begin
ChildCompon := ParentCompon.ChildReferences[j];
if PassedComponList.IndexOf(ChildCompon) = -1 then
PassedComponList.Add(ChildCompon);
for k := 0 to ChildCompon.JoinedComponents.Count - 1 do
begin
JoinedCompon := ChildCompon.JoinedComponents[k];
if PassedComponList.IndexOf(JoinedCompon) = -1 then
if JoinedCompon.IsLine = biTrue then
if isCableComponent(JoinedCompon) then
if JoinedCompon.Cypher = aCypher then
CollectConnections(JoinedCompon, aList, aCypher);
end;
end;
end;
end;
end;
end;
end;
end;
end;
function GetConnectedToSwitch(aCompon: TSCSComponent): TSCSComponents;
var i: integer;
JoinedCompon: TSCSComponent;
HasNoCableConnection: Boolean;
HasPointConnections: Boolean;
begin
Result := nil;
HasNoCableConnection := true;
HasPointConnections := False;
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].IDNetType = 3 then
HasNoCableConnection := false;
end;
if HasNoCableConnection then
exit;
Result := TSCSComponents.Create(false);
if PassedComponList.IndexOf(aCompon) = -1 then
PassedComponList.Add(aCompon);
AllConnectedCables.Add(aCompon);
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].IDNetType = 3 then
begin
CollectConnections(aCompon.JoinedComponents[i], Result, aCompon.JoinedComponents[i].Cypher);
if CableComponent = nil then
CableComponent := aCompon.JoinedComponents[i];
end;
end;
end;
Procedure RemovePlugSwithes(aList: TSCSComponents);
var i: integer;
begin
for i := aList.Count - 1 downto 0 do
begin
if aList[i].ComponentType.SysName = ctsnPlugSwitch then
aList.delete(i);
end;
end;
begin
ShieldFigure := nil;
if GPopupFigure <> nil then
if GPopupFigure is TConnectorObject then
if TConnectorObject(GPopupFigure).ConnectorType = ct_NB then
ShieldFigure := TConnectorObject(GPopupFigure);
if ShieldFigure = nil then
exit;
ShieldCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(ShieldFigure.ID);
if ShieldCatalog = nil then
exit;
PointList := TSCSComponents.Create(false); // òî÷êè
LineList := TSCSComponents.Create(false); // êàáåëü
AllConnectedTrace := nil;
AVR_Compon := nil;
ShieldList := nil;
AutoSwitchList := Nil;
ShieldLines := Nil;
Switch_List := Nil;
CableList := TSCSComponents.Create(False);
for i := 0 to ShieldCatalog.ComponentReferences.Count - 1 do
begin
if ShieldCatalog.ComponentReferences[i].isTop then
PointList.Add(ShieldCatalog.ComponentReferences[i]);
end;
if PointList.Count > 0 then
begin
//ïîñòðîèòü ñïèñîê ùèòîâ
ShieldList := TSCSComponents.Create(false);
for i := 0 to PointList.Count - 1 do
begin
if PointList[i].ComponentType.SysName = ctsnShield then // ùèòîê
if PointList[i].IdNetType = 3 then // ýëåêòðè÷åñêàÿ ñåòü
if ShieldList.IndexOf(PointList[i]) = -1 then
ShieldList.Add(PointList[i]);
break; // òîëüêî îäèí
end;
end;
if ShieldList.Count > 0 then
begin
ShieldCompon := ShieldList[0];
// ïîñòðîèòü ñïèñîê àâòîìàòîâ ùèòêà
if ShieldCompon.ChildReferences.Count > 0 then
begin
AutoSwitchList := TSCSComponents.Create(false);
GetSwitchList(AutoSwitchList, ShieldCompon.ChildReferences);
end;
end
else
begin
CableList.Free;
PointList.Free;
ShieldList.Free;
LineList.Free;
exit; // íå îáíàðóæåíî íè îäíîãî ùèòêà ....
end;
ShieldLines := TList.Create;
AllConnectedTrace := TList.Create;
if AutoSwitchList.Count > 0 then
begin
// ïîñòðîèòü ñïèñêè ïîäêëþ÷åíèé íà êàæäûé àâòîìàò
PassedComponList := TSCSComponents.Create(false);
PassedComponList.Add(ShieldCompon);
for i := AutoSwitchList.Count - 1 downto 0 do
begin
AllConnectedCables := TSCSComponents.Create(false);
SwitchCompon := AutoSwitchList[i];
PassedComponList.Add(SwitchCompon);
EndCompons := TSCSComponents.Create(false);
CableComponent := nil;
JoinedSwitchCompons := GetConnectedToSwitch(SwitchCompon);
//PassedComponList.Clear;
if EndCompons.Count > 0 then
begin
RemovePlugSwithes(EndCompons);
if EndCompons.Count > 0 then
begin
if CableComponent <> nil then
begin
ShieldLines.Insert(0, EndCompons);
////20/06/2022 --
{
CableList.Add(CableComponent);
AllConnectedTrace.Add(AllConnectedCables);
}
CableList.Insert(0, CableComponent);
AllConnectedTrace.Insert(0, AllConnectedCables);
end;
end;
end
else
begin
AutoSwitchList.delete(i);
EndCompons.Free;
AllConnectedCables.Free;
end;
end;
if Switch_List = nil then
Switch_List := TList.Create;
if AutoSwitchList.Count > 0 then
Switch_List.Add(AutoSwitchList);
end
else
begin // íå îáíàðóæåíî àâòîìàòîâ â ùèòêå!!! -- ìîæå ñîîáùåíèå êàêîå âûäàòü òóò.....
end;
if ShieldLines.Count > 0 then //
BuildElectricianChemeList(AVR_Compon, ShieldList, Switch_List, ShieldLines, CableList, AllConnectedTrace)
else
ShowMessage(EL_Mess29);
if PassedComponList <> nil then
PassedComponList.free;
if LineList <> nil then
LineList.Free;
if PointList <> nil then
PointList.Free;
if ShieldList <> nil then
ShieldList.Free;
if AutoSwitchList <> nil then
AutoSwitchList.free;
FreeList(ShieldLines);
CableList.Free;
if AllConnectedTrace <> nil then
begin
for i := 0 to AllConnectedTrace.Count - 1 do
TSCSComponents(AllConnectedTrace[i]).free;
AllConnectedTrace.free;
end;
end;
// ÂÐÀÙÀÒÜ ÂÛÄÅËÅÍÍÛÉ ÎÁÜÅÊÒ
procedure TFSCS_Main.aRotateExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
if GCadForm.PCad.ActiveLayer = 1 then
GCadForm.PCad.SetTool(toOperation, 'TRotate');
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRotateExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÇÀÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aBackwardsExecute(Sender: TObject);
var
i: integer;
FFigure: TFigure;
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osBack);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBackwardsExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÏÅÐÅÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aForwardExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osFront);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aForwardExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÃÐÓÏÏÈÐÎÂÀÒÜ ÎÁÜÅÊÒÛ
procedure TFSCS_Main.aGroupingExecute(Sender: TObject);
var
i: Integer;
ActLayer: Integer;
FFigure: TFigure;
// Tolik 03/10/2016--
SavedUndoFlag : Boolean;
//
begin
if ActiveMDIChild <> nil then
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GCadForm.PCad.Selection.Count > 1 then
begin
ActLayer := GCadForm.PCad.ActiveLayer;
if (ActLayer = lnSubstrate) {or (ActLayer > 8)} or (ActLayer = lnArch) then
begin
if ActLayer = lnArch then
GCadForm.RemoveFigureFromSelected(GCadForm.FActiveNet);
GCadForm.PCad.GroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (ActLayer = 7) then
begin
// Stamp !!!
{//17.11.2011
if GCadForm.FFrameProjectName <> nil then
if GCadForm.FFrameProjectName.Selected then
GCadForm.FFrameProjectName.Deselect;
if GCadForm.FFrameListName <> nil then
if GCadForm.FFrameListName.Selected then
GCadForm.FFrameListName.Deselect;
if GCadForm.FFrameCodeName <> nil then
if GCadForm.FFrameCodeName.Selected then
GCadForm.FFrameCodeName.Deselect;
if GCadForm.FFrameIndexName <> nil then
if GCadForm.FFrameIndexName.Selected then
GCadForm.FFrameIndexName.Deselect;}
for i := 0 to GCadForm.FFrameObjects.Count - 1 do
begin
FFigure := TFigure(GCadForm.FFrameObjects.Objects[i]);
if FFigure <> nil then
if FFigure.Selected then
FFigure.Deselect;
end;
RefreshCAD(GCadForm.PCad);
GCadForm.PCad.GroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (ActLayer = 2) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
SCSGroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end
else
begin
MessageBox(Application.Handle, cMain_Mes13, cMain_Mes1, MB_OK);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aGroupingExecute', E.Message);
end;
// GCadForm.FCanSaveForUndo := SavedUndoFlag;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÇÃÐÓÏÏÈÐÎÂÀÒÜ ÎÁÜÅÊÒÛ
procedure TFSCS_Main.aUngroupingExecute(Sender: TObject);
var
ActLayer: Integer;
// Tolik 03/10/2016--
SavedUndoFlag: Boolean;
//
begin
if ActiveMDIChild <> nil then
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GCadForm.PCad.Selection.Count > 0 then
begin
ActLayer := GCadForm.PCad.ActiveLayer;
if (ActLayer = 1) {or (ActLayer > 8)} or (ActLayer = 8) then
begin
GCadForm.PCad.UnGroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (ActLayer = 7) then
begin
GCadForm.PCad.UnGroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
if (ActLayer = 2) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
SCSUngroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
RefreshCAD(GCadForm.PCad);
end
else
begin
MessageBox(Application.Handle, cMain_Mes13_1, cMain_Mes1, MB_OK);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aUngroupingExecute', E.Message);
end;
// GCadForm.FCanSaveForUndo := SavedUndoFlag;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÇÀÁËÎÊÈÐÎÂÀÒÜ ÎÁÜÅÊÒ
procedure TFSCS_Main.aLockExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
if (GCadForm.PCad.ActiveLayer = 1) then
begin
GCadForm.PCad.LockSelectionToModify(True);
GCadForm.PCad.LockSelectionToMove(True);
GCadForm.PCad.OrderSelection(osBack);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aLockExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÇÁËÎÊÈÐÎÂÀÒÜ ÎÁÜÅÊÒ
procedure TFSCS_Main.aUnlockExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
if GCadForm.PCad.ActiveLayer = 1 then
begin
GCadForm.PCad.LockSelectionToModify(False);
GCadForm.PCad.LockSelectionToMove(False);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aUnlockExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÈÇÌÅÍÈÒÜ ØÐÈÔÒ
procedure TFSCS_Main.aTextFontExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aTextFontExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÑÒÀÍÎÂÈÒÜ ÌÀÑØÒÀÁ
procedure TFSCS_Main.aScaleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.RulerMode = rmWorld then
F_Scale.ShowModal
else
MessageBox(Application.Handle, cMain_Mes14, cMain_Mes15, MB_OK);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÍÎÂÎÅ ÎÊÍÎ (ËÈÑÒ)
procedure TFSCS_Main.aNewWindowExecute(Sender: TObject);
begin
try
aNewList.Execute;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNewWindowExecute', E.Message);
end;
end;
// ÇÀÊÐÛÒÜ ÂÑÅ ÎÊÍÀ (ÏÐÎÅÊÒ)
procedure TFSCS_Main.aCloseAllWindowsExecute(Sender: TObject);
begin
CloseAll;
end;
// ÑÏÐÀÂÊÀ
procedure TFSCS_Main.aHelpExecute(Sender: TObject);
var
FileName: string;
begin
try
Application.HelpCommand(HELP_FORCEFILE, 0);
// Application.HelpCommand(HELP_FINDER, 0);
{ FileName := ExeDir + '\Docs\HELP_CKC.HLP';
if FileExists(FileName) then
begin
ShellExecute(FSCS_Main.Handle, 0, PChar(FileName), 0, 0, 0);
end
else
ShowMessage('Ôàéë ñïðàâêè íå íàéäåí!');
}
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aHelpExecute', E.Message);
end;
end;
// ÏÐÅÇÅÍÒÀÖÈß
procedure TFSCS_Main.aPresentationExecute(Sender: TObject);
var
FileName: string;
begin
try
FileName := ExeDir + '\presentation.exe';
if FileExists(FileName) then
begin
ShellExecute(0, PChar('open'), PChar(FileName), 0, 0, SW_MAXIMIZE);
end
else
ShowMessage(cMain_Mes16);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPresentationExecute', E.Message);
end;
end;
// ÈÍÒÅÐÀÊÒÈÂÍÎÅ ÎÁÓ×ÅÍÈÅ
procedure TFSCS_Main.aInteractiveExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
InteractiveTest;
end;
// ÏÎÌÎÙÍÈÊÈ
procedure TFSCS_Main.aWizardsExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
end;
// ÒÅÕ.ÏÎÄÄÅÐÆÊÀ
procedure TFSCS_Main.aTechDocExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
OpenURL(urlSupport);
end;
procedure OpenMail(s: string='');
var
SHI : TShellExecuteInfo;
tmpstr: string;
begin
try
ZeroMemory(@SHI, sizeof(SHI));
SHI.cbSize := sizeof(SHI);
SHI.fMask := SEE_MASK_NOCLOSEPROCESS;
SHI.Wnd := Application.Handle;
SHI.lpVerb := PChar('Open');
if s = '' then
SHI.lpFile := PChar('mailto:' + 'office@expertsoft.com.ua')
else
begin
tmpstr := 'mailto:' + s;
SHI.lpFile := PChar(tmpstr);
end;
SHI.lpParameters := nil;
SHI.lpDirectory := nil;
ShellExecuteEx(@SHI);
except
end;
end;
// ÍÀÏÈÑÀÒÜ ÐÀÇÐÎÁÎÒ×ÈÊÓ
procedure TFSCS_Main.aToAuthorsExecute(Sender: TObject);
begin
{$IF Defined(SCS_PE)}
{$IF Defined(SCS_PANDUIT)}
MessageInfo(cActionNoRealized);
{$ELSE}
OpenMail('office@cableproject.net');
{$IFEND}
{$ELSEIF Defined(SCS_SPA)}
OpenMail('office@telcocad.net');
{$ELSEIF Defined(SCS_RF)}
{$IF Defined(SCS_PANDUIT)}
MessageInfo(cActionNoRealized);
{$ELSE}
OpenMail('info@expertsoft.ru');
{$IFEND}
{$ELSE}
OpenMail('office@expertsoft.com.ua');
{$IFEND}
end;
// ÊÓÏÈÒÜ ÏÐÎÄÓÊÒ
procedure TFSCS_Main.aBuyExecute(Sender: TObject);
begin
// ShowMessage('Äàííàÿ êîìàíäà â ýòîé âåðñèè íå ðåàëèçîâàíà!');
CheckAndShowHint('http://admin.cableproject.net/hints/' + hints_prog_id + '/index.html', hints_prog_id, FSCS_Main, 0, True);
end;
// Î ÏÐÎÃÐÀÌÌÅ...
procedure TFSCS_Main.aAboutExecute(Sender: TObject);
begin
(*
tbCADToolsExpert.AutoSize := false;
tbCADToolsExpert.Realign;
tbCADToolsExpert.Refresh;
tbCADToolsExpert.Repaint;
tbCADToolsExpert.Show;
*)
try
F_About := TF_About.Create(Application);
F_About.ShowModal;
finally
FreeAndNil(F_About);
end;
end;
////////////////////////////////////////////////////
// ÐÀÁÎÒÀ Ñ ÎÊÍÀÌÈ ÏÀÍÅËßÌÈ ////////////////////////
////////////////////////////////////////////////////
// ÏÅÐÅÊËÞ×ÅÍÈÅ ÌÅÆÄÓ ÎÊÍÀÌÈ
procedure TFSCS_Main.SwitchWindow(Sender: TObject);
var
i: integer;
PageIndex: integer;
begin
try
TMenuItem(Sender).Checked := True;
i := TMenuItem(Sender).MenuIndex - 5;
FSCS_Main.pageCADList.ActivePageIndex := i;
PageIndex := pageCADList.ActivePageIndex;
for i := 0 to MDIChildCount - 1 do
begin
if MDIChildren[i].Tag = pageCADList.ActivePage.Tag then
begin
MDIChildren[i].BringToFront;
Exit;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.SwitchWindow', E.Message);
end;
end;
// ÎÁÜÅÊÒ ÍÀÄ ÏÀÍÅËÜÞ
procedure TFSCS_Main.PDock1DockOver(Sender: TObject; Source: TDragDockObject;
X, Y: Integer; State: TDragState; var Accept: Boolean);
var
DockForm: TForm;
begin
try
DockForm := nil; //#From Oleg# //14.09.2010
// åñëè áîëüøå îäíîé ôîðìû íà ïàíåëü
if (Sender = PDock1) And (CountDock1 > 0) then
begin
PDock1.DockSite := false;
Exit;
end;
if (Sender = PDock2) And (CountDock2 > 0) then
begin
PDock2.DockSite := false;
Exit;
end;
// åñëè äîêàåòñÿ îäèí èç ôëàéòáàðîâ
if FSCS_Main.tbEditDocking Or FSCS_Main.tbFileDocking Or FSCS_Main.tbFormatDocking Or
FSCS_Main.tbObjectDocking Or FSCS_Main.tbSelectOptionsDocking Or
FSCS_Main.tbCADToolsDocking Or FSCS_Main.tbSCSToolsDocking then
begin
PDock1.DockSite := false;
pDock2.DockSite := false;
Exit;
end;
if F_ProjMan <> nil then
if F_ProjMan.Docking then
DockForm := F_ProjMan;
if F_NormBase <> nil then
if F_NormBase.Docking then
DockForm := F_NormBase;
if TPanel(Sender) = PDock1 then
Source.DockRect := Rect(Source.DockRect.Left, Source.DockRect.Top,
Source.DockRect.Left + DockForm.Width, Source.DockRect.Bottom)
else
if TPanel(Sender) = PDock2 then
Source.DockRect := Rect(Source.DockRect.Right - DockForm.Width, Source.DockRect.Top,
Source.DockRect.Right, Source.DockRect.Bottom);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.PDock1DockOver', E.Message);
end;
end;
// ÎÒÂßÇÊÀ ÎÁÜÅÊÒÀ ÎÒ ÏÀÍÅËÈ
procedure TFSCS_Main.PDock1UnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
try
Allow := False;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.PDock1UnDock', E.Message);
end;
end;
// ÎÁÜÅÊÒ Â ÏÀÍÅËÈ
procedure TFSCS_Main.PDock1DockDrop(Sender: TObject;
Source: TDragDockObject; X, Y: Integer);
var
ParentPanel: TComponent;
begin
try
if Sender = PDock1 then
CountDock1 := CountDock1 + 1;
if Sender = PDock2 then
CountDock2 := CountDock2 + 1;
if (Sender = PDock1) And (CountDock1 = 1) then
begin
sDiv1.Visible := True;
TPanel(Sender).Width := Source.DockRect.Right - Source.DockRect.Left;
end;
if (Sender = PDock2) And (CountDock2 = 1) then
begin
sDiv2.Visible := True;
TPanel(Sender).Width := Source.DockRect.Right - Source.DockRect.Left;
end;
if F_NormBase <> nil then
begin
ParentPanel := TForm(F_NormBase).GetParentComponent;
if ParentPanel = nil then
begin
F_NormBase.Panel_Addition.DragKind := dkDock;
F_NormBase.Panel_Tree.DragKind := dkDock;
end
else
begin
F_NormBase.Panel_Addition.DragKind := dkDrag;
F_NormBase.Panel_Tree.DragKind := dkDrag;
end;
end;
if F_ProjMan <> nil then
begin
ParentPanel := TForm(F_ProjMan).GetParentComponent;
if ParentPanel = nil then
begin
F_ProjMan.Panel_Addition.DragKind := dkDock;
F_ProjMan.Panel_Tree.DragKind := dkDock;
end
else
begin
F_ProjMan.Panel_Addition.DragKind := dkDrag;
F_ProjMan.Panel_Tree.DragKind := dkDrag;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.PDock1DockDrop', E.Message);
end;
end;
// ÏÐÈ ÏÅÐÅÊËÞ×ÅÍÈÈ ÌÅÆÄÓ ËÈÑÒÀÌÈ Â PAGECONTROL
procedure TFSCS_Main.pageCADListChange(Sender: TObject);
var
PageIndex: integer;
i: integer;
begin
try
PageIndex := pageCADList.ActivePageIndex;
FSCS_Main.mainWindow[PageIndex + 5].Checked := true;
for i := 0 to MDIChildCount - 1 do
begin
if MDIChildren[i].Tag = pageCADList.ActivePage.Tag then
begin
if MDIChildren[i] is TF_CAD then
SwitchListInCAD(TF_CAD(MDIChildren[i]).FCADListID, '')
else
MDIChildren[i].BringToFront;
Exit;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.pageCADListChange', E.Message);
end;
end;
// ÏÐÎÖÅÄÓÐÀ ÄËß ÇÀÊÐÛÒÈß ÏÐÎÅÊÒÀ
procedure TFSCS_Main.CloseAll;
var
Count: integer;
i, j: integer;
PageIndex: integer;
MenuItem : TMenuItem;
ChildForm: TF_CAD;
//ATable: TSQLMemTable;
// Tolik -- 09/03/2017 --
RefreshFlag: Boolean;
ChildFormName: string;
//
begin
// Tolik 15/08/2019 --
if GExitProgEX then
Application.OnIdle := nil;
//
// Tolik 09/02/2017 -- íà âñÿêèé, ÷òîáû íå îáíîâèëñÿ Êàä ïðè óäàëåíèè
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False;
//
try
// çàêðûòü ïðåäûäóùèé ïðîåêò
if ActiveMDIChild <> nil then
begin
// çàêðûòü âñå îêíà ïðåäûäóùåãî ïðîåêòà
Count := 0;
GNotNeedCheckRaisesBeforeClose := True;
//
while Count < MDIChildCount do
begin
ChildForm := TF_CAD(MDIChildren[Count]);
// Tolik 02/08/2017 --
GCadForm := ChildForm;
//
ChildFormName := ChildForm.Name;
ChildForm.Close;
try
// Tolik --30/01/2017 --
ChildForm.FCadClose := True;
//
ChildForm.Free;
except
// Tolik 29/09/2016 --
//on E: Exception do addExceptionToLogEx('TFSCS_Main.CloseAll on ChilFormClose ', E.Message);
on E: Exception do
// Tolik - -27/01/2017 -- ïîêà íå ïîéìàëè, ãäå ïàäàåò -- õîòü êîñòûëü....
begin
try
{for i := 0 to ChildForm.ControlCount - 1 do
begin
if TControl(ChildForm.Controls[i]).ClassName = 'TPowerCad' then
begin
ChildForm.RemoveControl(TControl(ChildForm.Controls[i]));
Break; //// BREAK ////;
end;
end;}
for i := 0 to FSCS_Main.ComponentCount - 1 do
begin
if TComponent(FSCS_Main.Components[i]).Name = ChildFormName then
begin
FSCS_Main.RemoveComponent(TComponent(FSCS_Main.Components[i]));
break;
end;
end;
ChildForm.Free;
except
addExceptionToLogEx('TFSCS_Main.CloseAll on ChilFormClose ', E.Message);
end;
end;
//
end;
end;
GNotNeedCheckRaisesBeforeClose := False;
// óäàëèòü PageControl
count := pageCADList.PageCount - 1;
for i := 0 to count do
pageCADList.ActivePage.Free;
// óäàëèòü Ëèñòû â ãëàâíîå ìåíþ
for i := 0 to mainWindow.Count - 1 do
if mainWindow.Items[i].Caption = '-' then
break;
j := 0;
inc(i);
while mainWindow.Count > i do
begin
MenuItem := mainWindow.Items[mainWindow.Count - 1];
mainWindow.Delete(mainWindow.Count - 1);
MenuItem.Free;
end;
GCadForm := nil;
// Tolik 09/03/2017 --
//GCanRefreshCad := RefreshFlag;
//
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.CloseAll', E.Message);
end;
GCanRefreshCad := RefreshFlag;
end;
procedure TFSCS_Main.CopyList_AllExecute(Sender: TObject);
begin
if Assigned(F_ProjMan) then
F_ProjMan.Act_CopyCurrList.Execute;
end;
procedure TFSCS_Main.CopyList_WComponExecute(Sender: TObject);
begin
if Assigned(F_ProjMan) then
F_ProjMan.Act_CopyCurrListWithoutCompons.Execute;
end;
// ÂÑÒÀÂÈÒÜ ÒÅÊÑÒ
procedure TFSCS_Main.aInsertTextExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.CurrentLayer := 1;
GCadForm.PCad.SetTool(toFigure, 'TRichText');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aInstRaspredBoxExecute(Sender: TObject);
var RaspredBox: TSCSComponent;
begin
try
//Application.ProcessMessages;
//FSCS_Main.pmELObjMenu.CloseMenu;
if GPlugSwitch <> nil then
begin
F_PEGetBox.SetNBToForm;
//FSCS_Main.pmELObjMenu.CloseMenu;
if F_PEGetBox.ShowModal = mrOk then
begin
if GCadForm <> nil then
begin
RaspredBox := F_PEGetBox.GetCompon;
if RaspredBox <> nil then
begin
GDropComponent := RaspredBox;
//GFigureSnap := GPlugSwitch;
GCadForm.DoDragDrop(TConnectorObject(GPlugSwitch).ap1.x, TconnectorObject(GPlugSwitch).ap1.y);
end;
end;
end;
end;
finally
GPlugSwitch := nil;
end;
end;
// ÂÑÒÀÂÈÒÜ ÊÀÐÒÈÍÊÓ
procedure TFSCS_Main.aInsertBitmapExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.CurrentLayer := 1;
GCadForm.PCad.SetTool(toFigure, 'TBMPObject');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÄÀËÈÒÜ ÂÛÄÅËÅÍÍÛÉ
procedure TFSCS_Main.aDeleteExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
GCadForm.PCad.RemoveSelection;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÄÀËÈÒÜ ÂÑÅ ÎÁÜÅÊÒÛ
procedure TFSCS_Main.aDeleteAllExecute(Sender: TObject);
var
ActLayer: integer;
begin
if ActiveMDIChild <> nil then
begin
try
ActLayer := GCadForm.PCad.ActiveLayer;
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.SelectAll(ActLayer);
if GCadForm.PCad.SelectedCount > 0 then
begin
GCadForm.PCad.RemoveSelection;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteAllExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÓÁÐÀÒÜ ÂÛÄÅËÅÍÈÅ ÂÑÅÕ ÎÁÜÅÊÒÎÂ
procedure TFSCS_Main.aDeSelectAllExecute(Sender: TObject);
var
ActLayer: integer;
begin
if ActiveMDIChild <> nil then
begin
try
ActLayer := GCadForm.PCad.ActiveLayer;
GCadForm.PCad.DeselectAll(ActLayer);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeSelectAllExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÒÈËÜ ËÈÍÈÈ
procedure TFSCS_Main.aPenStyleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'apsSolid' then
apsSolidExecute(Sender);
if TAction(Sender).Name = 'apsDash' then
apsDashExecute(Sender);
if TAction(Sender).Name = 'apsDashDot' then
apsDashDotExecute(Sender);
if TAction(Sender).Name = 'apsDashDotDot' then
apsDashDotDotExecute(Sender);
if TAction(Sender).Name = 'apsDot' then
apsDotExecute(Sender);
if TAction(Sender).Name = 'apsClear' then
apsClearExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPenStyleExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ËÈÍÈÈ
procedure TFSCS_Main.aPenColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clBlack;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.DefaultPenColor;
F_LoadColor.ShowModal;
GCadForm.PCad.DefaultPenColor := F_LoadColor.ColorPicker.SelectedColor;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPenColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÇÌÅÐ ËÈÍÈÈ
procedure TFSCS_Main.aPenWidthExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aPenw1' then
aPenw1Execute(sender);
if TAction(Sender).Name = 'aPenw2' then
aPenw2Execute(sender);
if TAction(Sender).Name = 'aPenw3' then
aPenw3Execute(sender);
if TAction(Sender).Name = 'aPenw4' then
aPenw4Execute(sender);
if TAction(Sender).Name = 'aPenw5' then
aPenw5Execute(sender);
if TAction(Sender).Name = 'aPenw6' then
aPenw6Execute(sender);
if TAction(Sender).Name = 'aPenw7' then
aPenw7Execute(sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPenWidthExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÒÈËÜ ÑÒÐÅËÊÈ
procedure TFSCS_Main.aRowStyleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'arsBothLight' then
arsBothLightExecute(Sender);
if TAction(Sender).Name = 'arsBothSolid' then
arsBothSolidExecute(Sender);
if TAction(Sender).Name = 'arsLeftLight' then
arsLeftLightExecute(Sender);
if TAction(Sender).Name = 'arsLeftSolid' then
arsLeftSolidExecute(Sender);
if TAction(Sender).Name = 'arsNone' then
arsNoneExecute(Sender);
if TAction(Sender).Name = 'arsRightLight' then
arsRightLightExecute(Sender);
if TAction(Sender).Name = 'arsRightSolid' then
arsRightSolidExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRowStyleExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÒÈËÜ ÇÀËÈÂÊÈ
procedure TFSCS_Main.aBrushStyleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'absBDiagonal' then
absBDiagonalExecute(Sender);
if TAction(Sender).Name = 'absClear' then
absClearExecute(Sender);
if TAction(Sender).Name = 'absCross' then
absCrossExecute(Sender);
if TAction(Sender).Name = 'absDiagCross' then
absDiagCrossExecute(Sender);
if TAction(Sender).Name = 'absFDiagonal' then
absFDiagonalExecute(Sender);
if TAction(Sender).Name = 'absHorizontal' then
absHorizontalExecute(Sender);
if TAction(Sender).Name = 'absSolid' then
absSolidExecute(Sender);
if TAction(Sender).Name = 'absVertical' then
absVerticalExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBrushStyleExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ØÐÈÔÒ ÒÅÊÑÒÀ
procedure TFSCS_Main.aTextCharsetExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aANSI_CHARSET' then
aANSI_CHARSETExecute(Sender);
if TAction(Sender).Name = 'aDEFAULT_CHARSET' then
aDEFAULT_CHARSETExecute(Sender);
if TAction(Sender).Name = 'aRUSSIAN_CHARSET' then
aRUSSIAN_CHARSETExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aTextCharsetExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÍÀ×ÅÐÒÀÍÈÅ ÒÅÊÑÒÀ
procedure TFSCS_Main.aFontStyleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aTextBold' then
aTextBoldExecute(Sender);
if TAction(Sender).Name = 'aTextItalic' then
aTextItalicExecute(Sender);
if TAction(Sender).Name = 'aTextUnderLine' then
aTextUnderLineExecute(Sender);
if TAction(Sender).Name = 'aTextStrikeThrough' then
aTextStrikeThroughExecute(Sender);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aFontStyleExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÑÏÎËÎÆÅÍÈÅ ÎÁÜÅÊÒÎÂ
procedure TFSCS_Main.aFormatOrderExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
//if GCadForm.PCad.Selection.Count = 1 then
if GCadForm.PCad.Selection.Count >= 1 then
begin
try
if TAction(Sender).Name = 'aSendtoBack' then
aSendtoBackExecute(Sender);
if TAction(Sender).Name = 'aBringtoFront' then
aBringtoFrontExecute(Sender);
if TAction(Sender).Name = 'aSendBackwards' then
aSendBackwardsExecute(Sender);
if TAction(Sender).Name = 'aBringForwards' then
aBringForwardsExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aFormatOrderExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÒÈÏ ÑÅÒÊÈ
procedure TFSCS_Main.aGridTypeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aLineGrid' then
aLineGridExecute(Sender);
if TAction(Sender).Name = 'aPointGrid' then
aPointGridExecute(Sender);
if TAction(Sender).Name = 'aCrossGrid' then
aCrossGridExecute(Sender);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aGridTypeExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ÖÅÍÒÐÀËÜÍÛÅ ÍÀÏÐÂËßÞÙÈÅ
procedure TFSCS_Main.aShowCenterGuidesExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aShowCenterGuides.Checked then
GCadForm.PCad.CenterGuide := true
else
GCadForm.PCad.CenterGuide := false;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÎÊÀÇÛÂÀÒÜ ÍÀÏÐÀÂËßÞÙÈÅ
procedure TFSCS_Main.aShowGuideLinesExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aShowGuideLines.Checked then
GCadForm.PCad.GuidesVisible := true
else
GCadForm.PCad.GuidesVisible := false;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADShowGuides := GCadForm.PCad.GuidesVisible;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
GCadForm.PCad.Refresh;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÐÈÂßÇÊÀ Ê ÑÅÒÊÅ
procedure TFSCS_Main.aSnaptoGridExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aSnaptoGrid.Checked then
GCadForm.PCad.SnapToGrids := true
else
GCadForm.PCad.SnapToGrids := false;
GCadForm.LastSnapGridStatus := GCadForm.PCad.SnapToGrids;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADSnapGrid := GCadForm.PCad.SnapToGrids;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÐÈÂßÇÊÀ Ê ÍÀÏÐÀÂËßÞÙÈÌ
procedure TFSCS_Main.aSnaptoGuidesExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aSnaptoGuides.Checked then
GCadForm.PCad.SnapToGuides := true
else
GCadForm.PCad.SnapToGuides := false;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADSnapGuides := GCadForm.PCad.SnapToGuides;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÐÈÂßÇÊÀ Ê ÁËÈÆÍÅÌÓ ÎÁÜÅÊÒÓ
procedure TFSCS_Main.aSnaptoNearObjectExecute(Sender: TObject);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
if aSnaptoNearObject.Checked then
GCadForm.PCad.SnapToNearPoint := true
else
GCadForm.PCad.SnapToNearPoint := false;
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADSnapNearObject := GCadForm.PCad.SnapToNearPoint;
SaveCADListParams(GCadForm.FCADListID, CurListParams);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÑÅÒÊÈ
procedure TFSCS_Main.aGridColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clSilver;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.GridColor;
F_LoadColor.ShowModal;
GCadForm.PCad.GridColor := F_LoadColor.ColorPicker.SelectedColor;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aGridColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÍÀÏÐÀÂËßÞÙÈÕ
procedure TFSCS_Main.aGuideColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clGreen;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.GuideColor;
F_LoadColor.ShowModal;
GCadForm.PCad.GuideColor := F_LoadColor.ColorPicker.SelectedColor;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aGuideColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÑÒÐÀÍÈÖÛ
procedure TFSCS_Main.aPageColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clWhite;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.PageColor;
F_LoadColor.ShowModal;
GCadForm.PCad.PageColor := F_LoadColor.ColorPicker.SelectedColor;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPageColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÍÀÏÐÀÂËßÞÙÈÅ ÏÎÄ ÓÃËÎÌ
procedure TFSCS_Main.aAngularGuidesExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aAngularNone' then
aAngularNoneExecute(Sender);
if TAction(Sender).Name = 'aAngular90' then
aAngular90Execute(Sender);
if TAction(Sender).Name = 'aAngular30' then
aAngular30Execute(Sender);
if TAction(Sender).Name = 'aAngular45' then
aAngular45Execute(Sender);
if TAction(Sender).Name = 'aAngular60' then
aAngular60Execute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aAngularGuidesExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÑÈÑÒÅÌÀ ËÈÍÅÉÊÈ
procedure TFSCS_Main.aRulerSystemExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if TAction(Sender).Name = 'aMetric' then
aMetricExecute(Sender);
if TAction(Sender).Name = 'aWitworth' then
aWitworthExecute(Sender);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÅÆÈÌ ËÈÍÅÉÊÈ
procedure TFSCS_Main.aRulerModeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if TAction(Sender).Name = 'aPageMode' then
aPageModeExecute(Sender);
if TAction(Sender).Name = 'aWorldMode' then
aWorldModeExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÇÌÅÐ ÑÒÐÀÍÈÖÛ
procedure TFSCS_Main.aPageLayoutExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aA0' then
aA0Execute(Sender);
if TAction(Sender).Name = 'aA1' then
aA1Execute(Sender);
if TAction(Sender).Name = 'aA2' then
aA2Execute(Sender);
if TAction(Sender).Name = 'aA3' then
aA3Execute(Sender);
if TAction(Sender).Name = 'aA4' then
aA4Execute(Sender);
if TAction(Sender).Name = 'aA5' then
aA5Execute(Sender);
if TAction(Sender).Name = 'aA6' then
aA6Execute(Sender);
if TAction(Sender).Name = 'aB4' then
aB4Execute(Sender);
if TAction(Sender).Name = 'aB5' then
aB5Execute(Sender);
if TAction(Sender).Name = 'aLetter' then
aLetterExecute(Sender);
if TAction(Sender).Name = 'aTabloid' then
aTabloidExecute(Sender);
if TAction(Sender).Name = 'aCustom' then
aCustomExecute(Sender);
// îáíîâèòü ñêðîëëû
GCadForm.ChangeScrollsOnChangeListSize;
// îáíîâèòü íàâèãàòîð
if F_Navigator <> nil then
begin
RefreshCAD(F_Navigator.PCadNavigator);
ReAssignNavigatorParams;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPageLayoutExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÐÈÅÍÒÀÖÈß ÑÒÐÀÍÈÖÛ
procedure TFSCS_Main.aPageOrientationExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if TAction(Sender).Name = 'aLandscape' then
aLandscaleExecute(Sender);
if TAction(Sender).Name = 'aPortrait' then
aPortraitExecute(Sender);
// îáíîâèòü ñêðîëëû
GCadForm.ChangeScrollsOnChangeListSize;
// îáíîâèòü íàâèãàòîð
if F_Navigator <> nil then
begin
RefreshCAD(F_Navigator.PCadNavigator);
ReAssignNavigatorParams;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPageOrientationExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ØÀÃ ÑÅÒÊÈ
procedure TFSCS_Main.aGridStepExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
F_GridStep.ShowModal;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÇÀÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aSendtoBackExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osBward{osBack});
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSendtoBackExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÏÅÐÅÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aBringtoFrontExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osFWard{osFront});
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBringtoFrontExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÇÀÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aSendBackwardsExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osBack{osBward});
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSendBackwardsExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÎÁÜÅÊÒ ÍÀ ÏÅÐÅÄÍÈÉ ÏËÀÍ
procedure TFSCS_Main.aBringForwardsExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.PCad.OrderSelection(osFront{osFWard});
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBringForwardsExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÂÍÈÂÀÍÈÅ ÏÎ ÂÅÐÕÍÅÌÓ ÊÐÀÞ
procedure TFSCS_Main.aalTopExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
// Tolik -- 07/02/2017 --
//if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2)or(GCadForm.PCad.ActiveLayer = 8) then
//
begin
GCadForm.PCad.AlignSelection(haTop, vaNoChange);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÍÈÂÀÍÈÅ ÏÎ ÍÈÆÍÅÌÓ ÊÐÀÞ
procedure TFSCS_Main.aalBottomExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
// Tolik -- 07/02/2017 --
//if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2)or(GCadForm.PCad.ActiveLayer = 8) then
//
begin
GCadForm.PCad.AlignSelection(haBottom, vaNoChange);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÂÍÈÂÀÍÈÅ ÏÎ X
procedure TFSCS_Main.aalXcenterExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
begin
GCadForm.PCad.AlignSelection(haCenter, vaNoChange);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÂÍÈÂÀÍÈÅ ÏÎ ËÅÂÎÌÓ ÊÐÀÞ
procedure TFSCS_Main.aalLeftExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
// Tolik -- 06/02/2017 --
//if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2)or(GCadForm.PCad.ActiveLayer = 8) then
begin
GCadForm.PCad.AlignSelection(haNoChange, vaLeft);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÂÍÈÂÀÍÈÅ ÏÎ ÏÐÀÂÎÌÓ ÊÐÀÞ
procedure TFSCS_Main.aalRightExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
// Tolik -- 07/02/2017 --
//if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2)or(GCadForm.PCad.ActiveLayer = 8) then
begin
GCadForm.PCad.AlignSelection(haNoChange, vaRight);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÂÍÈÂÀÍÈÅ ÏÎ Y
procedure TFSCS_Main.aalYCenterExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if (GCadForm.PCad.ActiveLayer = 1)or(GCadForm.PCad.ActiveLayer = 2) then
begin
GCadForm.PCad.AlignSelection(haNoChange, vaCenter);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÛÐÀÍÈÂÀÍÈÅ ÎÁÜÅÊÒÀ ÏÎ ...
procedure TFSCS_Main.aFormatAlignExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.Selection.Count > 1 then
begin
try
if TAction(Sender).Name = 'aalTop' then
aalTopExecute(Sender);
if TAction(Sender).Name = 'aalBottom' then
aalBottomExecute(Sender);
if TAction(Sender).Name = 'aalXcenter' then
aalXcenterExecute(Sender);
if TAction(Sender).Name = 'aalLeft' then
aalLeftExecute(Sender);
if TAction(Sender).Name = 'aalRight' then
aalRightExecute(Sender);
if TAction(Sender).Name = 'aalYCenter' then
aalYCenterExecute(Sender);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aFormatAlignExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//---------------------------------------------------
// ÒÈÏÛ ÑÒÈËß ËÈÍÈÈ
procedure TFSCS_Main.apsClearExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psClear;
apsClear.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(5, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.apsDashExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psDash;
apsDash.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(1, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.apsDashDotExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psDashDot;
apsDashDot.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(3, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.apsDashDotDotExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psDashDotDot;
apsDashDotDot.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(4, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.apsDotExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psDot;
apsDot.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(2, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.apsSolidExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenStyle := psSolid;
apsSolid.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(0, ImageLoad);
mPenStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//--------------------------------------------------
// ÒÈÏÛ ÐÀÇÌÅÐÀ ËÈÍÈÈ
procedure TFSCS_Main.aPenw1Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 1;
aPenw1.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(6, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw2Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 2;
aPenw2.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(7, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw3Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 3;
aPenw3.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(8, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw4Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 4;
aPenw4.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(9, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw5Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 5;
aPenw5.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(10, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw6Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 6;
aPenw6.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(11, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPenw7Execute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultPenWidth := 7;
aPenw7.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(12, ImageLoad);
mPenw.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//--------------------------------------------------------
// ÒÈÏÛ ÑÒÈËß ÑÒÐÅËÊÈ
procedure TFSCS_Main.arsBothLightExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsBothLight;
arsBothLight.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(14, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsBothSolidExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsBothSolid;
arsBothSolid.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(15, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsLeftLightExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsLeftLight;
arsLeftLight.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(16, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsLeftSolidExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsLeftSolid;
arsLeftSolid.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(17, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsNoneExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsNone;
arsNone.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(18, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsRightLightExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsRightLight;
arsRightLight.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(19, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.arsRightSolidExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultRowStyle := rsRightSolid;
arsRightSolid.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(20, ImageLoad);
mRowstyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//-------------------------------------------------------
// ÒÈÏÛ ÑÒÈËß ÇÀËÈÂÊÈ
procedure TFSCS_Main.absBDiagonalExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsBDiagonal;
absBDiagonal.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(26, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absClearExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsClear;
absClear.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(22, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absCrossExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsCross;
absCross.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(27, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absDiagCrossExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsDiagCross;
absDiagCross.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(28, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absFDiagonalExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsFDiagonal;
absFDiagonal.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(25, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absHorizontalExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsHorizontal;
absHorizontal.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(23, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absSolidExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsSolid;
absSolid.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(21, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.absVerticalExecute(Sender: TObject);
var
ImageLoad: TBitmap;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.DefaultBrushStyle := bsVertical;
absVertical.Checked := true;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(24, ImageLoad);
mBrushStyle.Bitmap := ImageLoad;
FreeAndNil(ImageLoad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//-----------------------------------------------------
// ÒÈÏÛ ÍÀ×ÅÐÒÀÍÈß ÒÅÊÑÒÀ
procedure TFSCS_Main.aTextBoldExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aTextBold.Checked then
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style + [fsBold]
else
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style - [fsBold];
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aTextItalicExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aTextItalic.Checked then
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style + [fsItalic]
else
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style - [fsItalic];
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aTextUnderLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aTextUnderLine.Checked then
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style + [fsUnderLine]
else
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style - [fsUnderLine];
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aTextStrikeThroughExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
if aTextStrikeThrough.Checked then
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style + [fsStrikeOut]
else
GCadForm.PCad.Font.Style := GCadForm.PCad.Font.Style - [fsStrikeOut];
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//---------------------------------------------------------
// ÒÈÏÛ ØÐÈÔÒÎÂ ÒÅÊÑÒÀ
procedure TFSCS_Main.aANSI_CHARSETExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.Font.Charset := ANSI_CHARSET;
aANSI_CHARSET.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aDEFAULT_CHARSETExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.Font.Charset := DEFAULT_CHARSET;
aDEFAULT_CHARSET.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aRUSSIAN_CHARSETExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.Font.Charset := RUSSIAN_CHARSET;
aRUSSIAN_CHARSET.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÇÀËÈÂÊÈ
procedure TFSCS_Main.aBrushColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clBlack;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.DefaultBrushColor;
F_LoadColor.ShowModal;
GCadForm.PCad.DefaultBrushColor := F_LoadColor.ColorPicker.SelectedColor;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBrushColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÖÂÅÒ ÒÅÊÑÒÀ
//Tolik 01/11/2021 -- ñòàðàÿ çàêîììåí÷åíà - ñì. íèæå
procedure TFSCS_Main.aTextColorExecute(Sender: TObject);
var i: Integer;
TextList: TList;
begin
if ActiveMDIChild <> nil then
begin
try
TextList := TList.Create;
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
begin
if TFigure(GCadForm.PCad.Selection[i]).ClassName = 'TText' then
TextList.Add(TFigure(GCadForm.PCad.Selection[i]));
end;
F_LoadColor.ColorPicker.DefaultColor := clBlack;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.Font.Color;
F_LoadColor.ShowModal;
if TextList.Count > 0 then
begin
for i := 0 to TextList.Count - 1 do
begin
//TText(TextList[i]).Font.Color := F_LoadColor.ColorPicker.SelectedColor;
TText(TextList[i]).Color := F_LoadColor.ColorPicker.SelectedColor;
end;
GCadForm.PCad.Refresh;
end
else
GCadForm.PCad.Font.Color := F_LoadColor.ColorPicker.SelectedColor;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
TextList.free;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aTextColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
{
procedure TFSCS_Main.aTextColorExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
F_LoadColor.ColorPicker.DefaultColor := clBlack;
F_LoadColor.ColorPicker.SelectedColor := GCadForm.PCad.Font.Color;
F_LoadColor.ShowModal;
GCadForm.PCad.Font.Color := F_LoadColor.ColorPicker.SelectedColor;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aTextColorExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
}
//-----------------------------------------------------
// ÒÈÏÛ ÒÈÏÎÂ ÑÅÒÊÈ
procedure TFSCS_Main.aLineGridExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GridType := grtLine;
aLineGrid.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPointGridExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GridType := grtPoint;
aPointGrid.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aCrossGridExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GridType := grtCross;
aCrossGrid.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//--------------------------------------------------------
// ÒÈÏÛ ÍÀÏÐÀÂËßÞÙÈÕ ÏÎÄ ÓÃËÎÌ
procedure TFSCS_Main.aAngularNoneExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GuideTrace := gtNone;
aAngularNone.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aAngular90Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GuideTrace := gtNinty;
aAngular90.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aAngular30Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GuideTrace := gtThirty;
aAngular30.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aAngular60Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GuideTrace := gtSixty;
aAngular60.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aAngular45Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.GuideTrace := gtFortyFive;
aAngular45.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//---------------------------------------------------
// ÒÈÏÛ ÑÈÑÒÅÌÛ ËÈÍÅÉÊÈ
procedure TFSCS_Main.aMetricExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.RulerSystem := rsMetric;
aMetric.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aWitworthExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.RulerSystem := rsWhitworth;
aWitworth.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//----------------------------------------------------
// ÒÈÏÛ ÐÅÆÈÌÀ ËÈÍÅÉÊÈ
procedure TFSCS_Main.aPageModeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.RulerMode := rmPage;
aPageMode.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aWorldModeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.RulerMode := rmWorld;
aWorldMode.Checked := true;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//------------------------------------------------------
// ÒÈÏÛ ÎÐÈÅÍÒÀÖÈÈ ÑÒÐÀÍÈÖÛ
procedure TFSCS_Main.aLandscaleExecute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
try
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
GCadForm.PCad.PageOrient := poLandscape;
aLandscape.Checked := true;
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
// âûñòàâèòü ðàìêó
if GCadForm.PCad.PageLayout = plA0 then
LoadFrameToList(GCadForm, FullPathName + 'A0_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA1 then
LoadFrameToList(GCadForm, FullPathName + 'A1_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA2 then
LoadFrameToList(GCadForm, FullPathName + 'A2_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA3 then
LoadFrameToList(GCadForm, FullPathName + 'A3_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA4 then
LoadFrameToList(GCadForm, FullPathName + 'A4_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout <> plCustom then
LoadFrameToList(GCadForm, '');
}
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aLandscaleExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aPortraitExecute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
try
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
GCadForm.PCad.PageOrient := poPortrait;
aPortrait.Checked := true;
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
// âûñòàâèòü ðàìêó
if GCadForm.PCad.PageLayout = plA0 then
LoadFrameToList(GCadForm, FullPathName + 'A0_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA1 then
LoadFrameToList(GCadForm, FullPathName + 'A1_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA2 then
LoadFrameToList(GCadForm, FullPathName + 'A2_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA3 then
LoadFrameToList(GCadForm, FullPathName + 'A3_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageLayout = plA4 then
LoadFrameToList(GCadForm, FullPathName + 'A4_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch')
else
if GCadForm.pcad.PageLayout <> plCustom then
LoadFrameToList(GCadForm, '');
}
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPortraitExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//-----------------------------------------------
// ÒÈÏÛ ÐÀÇÌÅÐÀ ÑÒÐÀÍÈÖÛ
procedure TFSCS_Main.aA0Execute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
GCadForm.PCad.PageLayout := plA0;
if GCadForm.PCad.PageOrient = poLandscape then
LoadFrameToList(GCadForm, FullPathName + 'A0_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageOrient = poPortrait then
LoadFrameToList(GCadForm, FullPathName + 'A0_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch');
aA0.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA1Execute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
GCadForm.PCad.PageLayout := plA1;
if GCadForm.PCad.PageOrient = poLandscape then
LoadFrameToList(GCadForm, FullPathName + 'A1_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageOrient = poPortrait then
LoadFrameToList(GCadForm, FullPathName + 'A1_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch');
aA1.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA2Execute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
GCadForm.PCad.PageLayout := plA2;
if GCadForm.PCad.PageOrient = poLandscape then
LoadFrameToList(GCadForm, FullPathName + 'A2_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageOrient = poPortrait then
LoadFrameToList(GCadForm, FullPathName + 'A2_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch');
aA2.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA3Execute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
GCadForm.PCad.PageLayout := plA3;
if GCadForm.PCad.PageOrient = poLandscape then
LoadFrameToList(GCadForm, FullPathName + 'A3_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageOrient = poPortrait then
LoadFrameToList(GCadForm, FullPathName + 'A3_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch');
aA3.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA4Execute(Sender: TObject);
var
StampTypeStr: string;
StampLangStr: string;
FullPathName: string;
begin
if ActiveMDIChild <> nil then
begin
{
FullPathName := ExtractFileDir(Application.ExeName) + '\Stamp\';
//
if GCadForm.FCadStampType = stt_simple then
StampTypeStr := 'Small';
if GCadForm.FCadStampType = stt_extended then
StampTypeStr := 'Big';
if GCadForm.FCadStampType = stt_detailed then
StampTypeStr := 'ExtBig';
//
if GCadForm.FCadStampLang = stl_ukr then
StampLangStr := 'ukr';
if GCadForm.FCadStampLang = stl_rus then
StampLangStr := 'rus';
//
GCadForm.PCad.PageLayout := plA4;
if GCadForm.PCad.PageOrient = poLandscape then
LoadFrameToList(GCadForm, FullPathName + 'A4_' + StampTypeStr + '_Landscape_' + StampLangStr + '.sch')
else
if GCadForm.PCad.PageOrient = poPortrait then
LoadFrameToList(GCadForm, FullPathName + 'A4_' + StampTypeStr + '_Portrait_' + StampLangStr + '.sch');
aA4.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA5Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plA5;
LoadFrameToList(GCadForm, '');
aa5.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aA6Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plA6;
LoadFrameToList(GCadForm, '');
aa6.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aB4Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plB4;
LoadFrameToList(GCadForm, '');
ab4.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aB5Execute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plB5;
LoadFrameToList(GCadForm, '');
ab5.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aLetterExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plLetter;
LoadFrameToList(GCadForm, '');
aLetter.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aTabloidExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plTabloid;
LoadFrameToList(GCadForm, '');
aTabloid.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aCustomExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
{
GCadForm.PCad.PageLayout := plCustom;
LoadFrameToList(GCadForm, '');
aCustom.Checked := true;
}
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÄÓÁËÈÊÀÒ ÂÛÄÅËÅÍÍÎÃÎ ÎÁÜÅÊÒÀ
procedure TFSCS_Main.aDuplicateSelectionExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
GCadForm.PCad.SetTool(toOperation, 'TMirror');
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDuplicateSelectionExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÂÐÀÙÅÍÈÅ ÂÛÄÅËÅÍÍÎÃÎ ÎÁÜÅÊÒÀ
procedure TFSCS_Main.aRotateSelectionExecute(Sender: TObject);
var
Point: TDoublePoint;
i: integer;
SelFigure: TFigure;
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.Selection.Count > 0 then
begin
try
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
SelFigure := TFigure(GCadForm.PCad.Selection[i]);
Point := TFigure(SelFigure).CenterPoint;
GCadForm.PCad.RotateSelection(100, DoublePoint(Point.X, Point.Y));
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRotateSelectionExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÏÅÐÅÌÅÙÅÍÈÅ ÂÛÄÅËÅÍÍÎÃÎ ÎÁÜÅÊÒÀ
procedure TFSCS_Main.aMoveSelectionExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
GCadForm.PCad.SetTool(toOperation, 'TMove');
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMoveSelectionExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÇÅÐÊÀËÜÍÎÅ ÎÒÎÁÐÀÆÅÍÈÅ ÂÛÄÅËÅÍÍÎÃÎ ÎÁÜÅÊÒÀ
procedure TFSCS_Main.aMirrorSelectionExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
GCadForm.PCad.SetTool(toOperation, 'TMirror');
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMirrorSelectionExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ------- ÑÏÈÑÎÊ ÈÍÑÒÐÓÌÅÍÒÎÂ CAD----------------------
// SELECT
procedure TFSCS_Main.aToolSelectExecute(Sender: TObject);
var
SCSList: TSCSList;
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
if GCadForm <> nil then
begin
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID);
if SCSList <> nil then
SCSList.FNewComponNameMark := '';
end;
//GNewComponNameMark := '';
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
try
if GCadForm.PCad.TraceFigure <> nil then
begin
if GCadForm.PCad.TraceFigure is TOrthoLine then // åñëè íå ïðîâåðÿòü è äåëàòü EndTrace äëÿ âñåõ àáñîëþòíî - áóäåò õðåíü íà àâòîñîçäàíèè ̪ ïîñëå êîïèðîâàíèÿ ëèñòà
begin
// Tolik --18/11/2015
// GCadForm.PCad.EndTrace([ssRight]); -- EndTrace ñäåëàåì òîëüêî åñëè ìû ÷òî-òî ðèñîâàëè,
// à åñëè íå ðèñîâàëè èëè ïîñòàâèëè òîëüêî îäèí êîíåö òðàññû è âûøëè çà ãðàíèöû ÊÀÄà - ïðîñòî
// øëåïíåì TraceFigure
if (GCadForm.PCad.ToolInfo = 'TOrthoLine') and (GCadForm.PCad.TraceFigure <> nil) and (GClickIndex > 1) then
begin
if GCadForm.FAutoCadMouse then // Tolik -- åñëè â íàñòðîéêàõ ëèñòà - Àâòîêàäîâñêàÿ ìûøêà
Inc(GClickIndex); // èíà÷å ïîèìååì åùå îäèí áàã (à òàê è áûëî!!!) - ïîòåðþ ïîñëåäíåé îáîçíà÷åííîé òðàññû !!!
// ïðè âûõîäå êóðñîðà çà ãðàíèöû ÊÀÄà
GCadForm.PCad.EndTrace([ssRight]);
end
else
GCadForm.PCad.KillTraceFig; // ø-ë-å-ï!
end;
end;
//
except
end;
GCadForm.PCad.SetTool(toSelect, 'TSelected');
tbCreateOnClickModeExpert.Down := False;
tbCreateOnClickModeNoob.Down := False;
tbSelectExpert.Down := True;
tbSelectNoob.Down := True;
GCurrShadowTraceX := -1;
GCurrShadowTraceY := -1;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// LINE
procedure TFSCS_Main.aToolLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// RECTANGLE
procedure TFSCS_Main.aToolRectangleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TRectangle');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ELLIPSE
procedure TFSCS_Main.aToolEllipseExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TEllipse');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// CIRCLE
procedure TFSCS_Main.aToolCircleExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TCircle');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ARC
procedure TFSCS_Main.aToolArcExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TArc');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ELIPTIC ARC
procedure TFSCS_Main.aToolElipticArcExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TElpArc');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// POLYLINE
procedure TFSCS_Main.aToolPolyLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TPolyLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// POINT (VERTEX)
procedure TFSCS_Main.aToolPointExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TVertex');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// TEXT
procedure TFSCS_Main.aToolTextExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TText');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// RICHTEXT
procedure TFSCS_Main.aToolRichTextExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TRichText');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// KNIFE
procedure TFSCS_Main.aToolKnifeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TKnife');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// HDIMLINE
procedure TFSCS_Main.aToolHDimLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'THDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// VDIMLINE
procedure TFSCS_Main.aToolVDimLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayerExecute(Sender);
GCadForm.PCad.SetTool(toFigure, 'TVDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÐÀÇÌÅÐ ÒÅÊÑÒÀ
procedure TFSCS_Main.aTextSizeExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// ÈÇÌÅÍÅÈÅ ØÐÈÔÒÀ
procedure TFSCS_Main.fcbTextFontChange(Sender: TObject);
begin
aTextFontExecute(Sender);
end;
// ÈÇÌÅÍÅÍÈÅ ÐÀÇÌÅÐÀ ØÐÈÔÒÀ
procedure TFSCS_Main.fcbTextSizeChange(Sender: TObject);
begin
aTextSizeExecute(Sender);
end;
// ÏÎÏÛÒÊÀ ÄÎÊÀ Ê ÏÀÍÅËÈ ÈÍÑÒÐÓÌÅÍÒÎÂ
procedure TFSCS_Main.cbMainPanelBandPaint(Sender: TObject; Control: TControl;
Canvas: TCanvas; var ARect: TRect; var Options: TBandPaintOptions);
begin
Options := [];
end;
procedure TFSCS_Main.cbMainPanelDockOver(Sender: TObject;
Source: TDragDockObject; X, Y: Integer; State: TDragState;
var Accept: Boolean);
begin
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
if (F_NormBase.Docking or F_ProjMan.Docking) then
cbMainPanel.DockSite := false;
end;
end;
procedure TFSCS_Main.cbMainPanelMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
end;
// --------------------------------------------------
// ÏÎÏÛÒÊÀ ÄÎÊÀ ÔËÀÉÒÁÀÐÎÂ Ê ÏÀÍÅËÈ ÈÍÑÒÐÓÌÅÍÒÎÂ
procedure TFSCS_Main.tbEditStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbEditDocking := true;
end;
procedure TFSCS_Main.tbEditEndDock(Sender, Target: TObject; X, Y: Integer);
begin
tbEditDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbFileStartDock(Sender: TObject;
var DragObject: TDragObject);
begin
tbFileDocking := true;
end;
procedure TFSCS_Main.tbFileEndDock(Sender, Target: TObject; X, Y: Integer);
begin
tbFileDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbFormatStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbFormatDocking := true;
end;
procedure TFSCS_Main.tbFormatEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
tbFormatDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbObjectStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbObjectDocking := true;
end;
procedure TFSCS_Main.tbObjectEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
tbObjectDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbSelectOptionsStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbSelectOptionsDocking := true;
end;
procedure TFSCS_Main.tbSelectOptionsEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
tbSelectOptionsDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbCADToolsExpertStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbCADToolsDocking := true;
end;
procedure TFSCS_Main.tbCADToolsExpertEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
tbCADToolsDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.tbCADToolsExpertMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
end;
// ÇÀÃÐÓÇÊÀ ÐÈÑÓÍÊÎÂ Â ÑÒÈËÜ ËÈÍÈÈ
procedure TFSCS_Main.mpsDashAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
ImageLoad: TBitmap;
DestRect: Trect;
ImIndex: integer;
begin
try
ImIndex := 0; //#From Oleg# //14.09.2010
// ïðîâåðêà íà çàãðóçêó ðèñóíêîâ
if (TMainMenu(Sender).Name = 'mpsSolid') or (TPopupMenu(Sender).Name = 'ppsSolid') then
ImIndex := 0;
if (TMainMenu(Sender).Name = 'mpsDash') or (TPopupMenu(Sender).Name = 'ppsDash') then
ImIndex := 1;
if (TMainMenu(Sender).Name = 'mpsDot') or (TPopupMenu(Sender).Name = 'ppsDot') then
ImIndex := 2;
if (TMainMenu(Sender).Name = 'mpsDashDot') or (TPopupMenu(Sender).Name = 'ppsDashDot') then
ImIndex := 3;
if (TMainMenu(Sender).Name = 'mpsDashDotDot') or (TPopupMenu(Sender).Name = 'ppsDashDotDot') then
ImIndex := 4;
if (TMainMenu(Sender).Name = 'mpsClear') or (TPopupMenu(Sender).Name = 'ppsClear') then
ImIndex := 5;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(ImIndex, ImageLoad);
DestRect := ARect;
DestRect.Top := DestRect.Top + 2;
DestRect.Left := DestRect.Left + 30;
DestRect.Bottom := DestRect.Top + 16;
DestRect.Right := DestRect.Left + 32;
ACanvas.CopyRect(DestRect, ImageLoad.Canvas, Rect(1, 0, 33, 16));
ACanvas.Refresh;
FreeAndNil(ImageLoad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.mpsClearAdvancedDrawItem', E.Message);
end;
end;
// ÇÀÃÐÓÇÊÀ ÐÈÑÓÍÊÎÂ Â ÐÀÇÌÅÐ ËÈÍÈÈ
procedure TFSCS_Main.mPenw1AdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
ImageLoad: TBitmap;
DestRect: Trect;
ImIndex: integer;
begin
try
ImIndex := 0; //#From Oleg# //14.09.2010
// ïðîâåðêà íà çàãðóçêó ðèñóíêîâ
if (TMainMenu(Sender).Name = 'mPenw1') or (TPopupMenu(Sender).Name = 'pPenw1') then
ImIndex := 6;
if (TMainMenu(Sender).Name = 'mPenw2') or (TPopupMenu(Sender).Name = 'pPenw2') then
ImIndex := 7;
if (TMainMenu(Sender).Name = 'mPenw3') or (TPopupMenu(Sender).Name = 'pPenw3') then
ImIndex := 8;
if (TMainMenu(Sender).Name = 'mPenw4') or (TPopupMenu(Sender).Name = 'pPenw4') then
ImIndex := 9;
if (TMainMenu(Sender).Name = 'mPenw5') or (TPopupMenu(Sender).Name = 'pPenw5') then
ImIndex := 10;
if (TMainMenu(Sender).Name = 'mPenw6') or (TPopupMenu(Sender).Name = 'pPenw6') then
ImIndex := 11;
if (TMainMenu(Sender).Name = 'mPenw7') or (TPopupMenu(Sender).Name = 'pPenw7') then
ImIndex := 12;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(ImIndex, ImageLoad);
DestRect := ARect;
DestRect.Top := DestRect.Top + 2;
DestRect.Left := DestRect.Left + 30;
DestRect.Bottom := DestRect.Top + 16;
DestRect.Right := DestRect.Left + 32;
ACanvas.CopyRect(DestRect, ImageLoad.Canvas, Rect(1, 0, 33, 16));
ACanvas.Refresh;
FreeAndNil(ImageLoad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.mPenw1AdvancedDrawItem', E.Message);
end;
end;
// ÇÀÃÐÓÇÊÀ ÐÈÑÓÍÊÎÂ Â ÑÒÈËÜ ÑÒÐÅËÊÈ
procedure TFSCS_Main.mrsBothLightAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
ImageLoad: TBitmap;
DestRect: TRect;
ImIndex: integer;
begin
try
ImIndex := 0; //#From Oleg# //14.09.2010
// ïðîâåðêà íà çàãðóçêó ðèñóíêîâ
if (TMainMenu(Sender).Name = 'mrsBothLight') or (TPopupMenu(Sender).Name = 'prsBothLight') then
ImIndex := 14;
if (TMainMenu(Sender).Name = 'mrsBothSolid') or (TPopupMenu(Sender).Name = 'prsBothSolid') then
ImIndex := 15;
if (TMainMenu(Sender).Name = 'mrsLeftLight') or (TPopupMenu(Sender).Name = 'prsLeftLight') then
ImIndex := 16;
if (TMainMenu(Sender).Name = 'mrsLeftSolid') or (TPopupMenu(Sender).Name = 'prsLeftSolid') then
ImIndex := 17;
if (TMainMenu(Sender).Name = 'mrsNone') or (TPopupMenu(Sender).Name = 'prsNone') then
ImIndex := 18;
if (TMainMenu(Sender).Name = 'mrsRightLight') or (TPopupMenu(Sender).Name = 'prsRightLight') then
ImIndex := 19;
if (TMainMenu(Sender).Name = 'mrsRightSolid') or (TPopupMenu(Sender).Name = 'prsRightSolid') then
ImIndex := 20;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(ImIndex, ImageLoad);
DestRect := ARect;
DestRect.Top := DestRect.Top + 2;
DestRect.Left := DestRect.Left + 30;
DestRect.Bottom := DestRect.Top + 16;
DestRect.Right := DestRect.Left + 32;
ACanvas.CopyRect(DestRect, ImageLoad.Canvas, Rect(1, 0, 33, 16));
ACanvas.Refresh;
FreeAndNil(ImageLoad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.mrsBothLightAdvancedDrawItem', E.Message);
end;
end;
// ÇÀÃÐÓÇÊÀ ÐÈÑÓÍÊÎÂ Â ÑÒÈËÜ ÇÀËÈÂÊÈ
procedure TFSCS_Main.mainFileClick(Sender: TObject);
begin
CheckCloseReportForm;
inherited;
end;
procedure TFSCS_Main.MainMenuChange(Sender: TObject; Source: TMenuItem;
Rebuild: Boolean);
begin
CheckCloseReportForm;
end;
procedure TFSCS_Main.mbsVerticalAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
ImageLoad: TBitmap;
DestRect: Trect;
ImIndex: integer;
begin
try
ImIndex := 0; //#From Oleg# //14.09.2010
// ïðîâåðêà íà çàãðóçêó ðèñóíêîâ
if (TMainMenu(Sender).Name = 'mbsSolid') or (TPopupMenu(Sender).Name = 'pbsSolid') then
ImIndex := 21;
if (TMainMenu(Sender).Name = 'mbsClear') or (TPopupMenu(Sender).Name = 'pbsClear') then
ImIndex := 22;
if (TMainMenu(Sender).Name = 'mbsHorizontal') or (TPopupMenu(Sender).Name = 'pbsHorizontal') then
ImIndex := 23;
if (TMainMenu(Sender).Name = 'mbsVertical') or (TPopupMenu(Sender).Name = 'pbsVertical') then
ImIndex := 24;
if (TMainMenu(Sender).Name = 'mbsFDiagonal') or (TPopupMenu(Sender).Name = 'pbsFDiagonal') then
ImIndex := 25;
if (TMainMenu(Sender).Name = 'mbsBDiagonal') or (TPopupMenu(Sender).Name = 'pbsBDiagonal') then
ImIndex := 26;
if (TMainMenu(Sender).Name = 'mbsCross') or (TPopupMenu(Sender).Name = 'pbsCross') then
ImIndex := 27;
if (TMainMenu(Sender).Name = 'mbsDiagCross') or (TPopupMenu(Sender).Name = 'pbsDiagCross') then
ImIndex := 28;
ImageLoad := TBitmap.Create;
ImageStyles.GetBitmap(ImIndex, ImageLoad);
DestRect := ARect;
DestRect.Top := DestRect.Top + 2;
DestRect.Left := DestRect.Left + 30;
DestRect.Bottom := DestRect.Top + 16;
DestRect.Right := DestRect.Left + 32;
ACanvas.CopyRect(DestRect, ImageLoad.Canvas, Rect(1, 0, 33, 16));
ACanvas.Refresh;
FreeAndNil(ImageLoad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.mbsBDiagonalAdvancedDrawItem', E.Message);
end;
end;
////////////////////////////////////////////////////////////////////////////////
// ----------------------- LAYERS ----------------------------------------------
// ÍÎÂÛÉ ÑËÎÉ
procedure TFSCS_Main.aNewLayerExecute(Sender: TObject);
begin
F_NewLayer.ShowModal;
end;
// ÓÄÀËÈÒÜ ÑËÎÉ
procedure TFSCS_Main.aDeleteLayerExecute(Sender: TObject);
var
RemoveLayer: TLayer;
LNbr: integer;
ActLayer: integer;
begin
try
ActLayer := GCadForm.PCad.ActiveLayer;
LNbr := GCadForm.PCad.ActiveLayer;
RemoveLayer := GCadForm.PCad.Layers.Items[LNbr];
if (ActLayer > 9) then
begin
// Tolik 30/08/2019 --
if CheckCanDelLayer(RemoveLayer) then
begin
//LNbr := GCadForm.PCad.ActiveLayer;
//RemoveLayer := GCadForm.PCad.Layers.Items[LNbr];
if GCadForm.PCad.ActiveLayer = LNbr then
{$IF Defined(ES_GRAPH_SC)}
GCadForm.CurrentLayer := 8;
{$else}
GCadForm.CurrentLayer := 2;
{$ifend}
GCadForm.PCad.DeleteLayer(RemoveLayer.name);
FSCS_Main.cbLayers.Properties.Items.Delete(LNbr - 1);
F_LayersDialog.UpdateLayersList;
F_LayersDialog.lbCurLayer.Caption := 'Base Layer';
F_LayersDialog.listGrayed.Delete(LNbr);
// Tolik 30/08/2019 --
//F_LayersDialog.FIsManualGrayed.Delete(LNbr);
F_LayersDialog.FIsManualGrayed.Delete(LNbr - 1);
//
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
MessageBox(Application.Handle, cMain_Mes19_1, cMain_Mes1, MB_OK);
end
else
begin
if ActLayer = 0 then
MessageBox(Application.Handle, cMain_Mes17, cMain_Mes1, MB_OK);
if ActLayer = 1 then
MessageBox(Application.Handle, cMain_Mes18, cMain_Mes1, MB_OK);
if ActLayer = 2 then
MessageBox(Application.Handle, cMain_Mes19, cMain_Mes1, MB_OK);
if ActLayer = 3 then
MessageBox(Application.Handle, cMain_Mes20, cMain_Mes1, MB_OK);
if ActLayer = 4 then
MessageBox(Application.Handle, cMain_Mes21, cMain_Mes1, MB_OK);
if ActLayer = 5 then
MessageBox(Application.Handle, cMain_Mes22, cMain_Mes1, MB_OK);
if ActLayer = 6 then
MessageBox(Application.Handle, cMain_Mes23, cMain_Mes1, MB_OK);
if ActLayer = 7 then
MessageBox(Application.Handle, cMain_Mes24, cMain_Mes1, MB_OK);
if ActLayer = 8 then
MessageBox(Application.Handle, cMain_Mes25, cMain_Mes1, MB_OK);
if ActLayer = 9 then
MessageBox(Application.Handle, cMain_Mes103, cMain_Mes1, MB_OK);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteLayerExecute', E.Message);
end;
end;
// ÑÎÅÄÈÍÈÒÜ ÂÑÅ ÂÈÄÈÌÛÅ ÑËÎÈ Â ÁÀÇÎÂÛÉ
procedure TFSCS_Main.aMergeVisibleExecute(Sender: TObject);
begin
try
GCadForm.PCad.MergeVisibleLayers;
F_LayersDialog.UpdateLayersList;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMergeVisibleExecute', E.Message);
end;
end;
// ÑÎÅÄÈÍÈÒÜ ÂÑÅ ÑËÎÈ Â ÁÀÇÎÂÛÉ
procedure TFSCS_Main.aMergeAllExecute(Sender: TObject);
begin
try
GCadForm.PCad.MergeAllLayers;
F_LayersDialog.UpdateLayersList;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMergeAllExecute', E.Message);
end;
end;
// ÍÅÀÊÒÈÂÍÛÅ ÑËÎÈ ÊÀÊ ÏÎÄËÎÆÊÀ
procedure TFSCS_Main.aFlueInactivesExecute(Sender: TObject);
var
FlueLayer: TLayer;
CurItem: TListItem;
ActiveLNbr: integer;
i: integer;
begin
try
ActiveLNbr := GCadForm.PCad.ActiveLayer;
for i := 1 to GCadForm.PCad.Layers.Count - 1 do
begin
FlueLayer := GCadForm.PCad.Layers.Items[i];
CurItem := F_LayersDialog.lvLayersList.Items[i - 1];
if i <> ActiveLNbr then // íåàêòèâíûå ñëîè
begin
if FlueLayer.visible <> lost then
begin
FlueLayer.visible := grayed;
CurItem.SubItemImages[1] := 137;
end;
end
else // àêòèâíûé ñëîé
begin
if FlueLayer.visible <> lost then
begin
FlueLayer.visible := seen;
CurItem.SubItemImages[1] := -1;
end;
end;
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aFlueInactivesExecute', E.Message);
end;
end;
// ÑÊÐÛÒÜ ÍÅÀÊÒÈÂÍÛÅ ÑËÎÈ
procedure TFSCS_Main.aHideInactivesExecute(Sender: TObject);
var
HideLayer: TLayer;
CurItem: TListItem;
ActiveLNbr: integer;
i: integer;
begin
try
ActiveLNbr := GCadForm.PCad.ActiveLayer;
for i := 1 to GCadForm.PCad.Layers.Count - 1 do
begin
HideLayer := GCadForm.PCad.Layers.Items[i];
CurItem := F_LayersDialog.lvLayersList.Items[i - 1];
if i <> ActiveLNbr then
begin
if HideLayer.visible = seen then
F_LayersDialog.listGrayed[i] := 'seen';
if HideLayer.visible = grayed then
F_LayersDialog.listGrayed[i] := 'grayed';
CurItem.SubItemImages[1] := -1;
CurItem.SubItemImages[0] := -1;
HideLayer.visible := lost;
end
else
begin
CurItem.SubItemImages[0] := 136;
if F_LayersDialog.listGrayed[i] = 'seen' then
HideLayer.visible := seen;
if F_LayersDialog.listGrayed[i] = 'grayed' then
begin
HideLayer.visible := grayed;
CurItem.SubItemImages[1] := 137;
end;
end;
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aHideInactivesExecute', E.Message);
end;
end;
// ÏÎÊÀÇÀÒÜ ÂÑÅ ÑËÎÈ
procedure TFSCS_Main.aShowAllLayersExecute(Sender: TObject);
var
i: integer;
ShowLayer: TLayer;
CurItem: TListItem;
begin
try
for i := 1 to GCadForm.PCad.Layers.Count - 1 do
begin
ShowLayer := GCadForm.PCad.Layers.Items[i];
CurItem := F_LayersDialog.lvLayersList.Items[i - 1];
CurItem.SubItemImages[0] := 136;
if (F_LayersDialog.listGrayed[i] = 'seen') or (F_LayersDialog.listGrayed[i] = 'lost') then
ShowLayer.visible := seen;
if F_LayersDialog.listGrayed[i] = 'grayed' then
begin
ShowLayer.visible := grayed;
CurItem.SubItemImages[1] := 137;
end;
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowAllLayersExecute', E.Message);
end;
end;
////////////////////////////////////////////////////////////////////////////////
/////-------------- ÐÀÁÎÒÀ Ñ ÊÀÄ ----------------------------------------///////
//Tolik 09/02/2021 --
{
procedure TFSCS_Main.aToolOrthoLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FContinueTrace := False;
aSetSCSLayer.Execute;
GCadForm.FCreateObjectOnClick := False;
GDefaultGap := 1;
GDefaultNum := 1;
GOrthoStatus := False;
GCurrentConnectorType := ct_Clear;
GCadForm.PCad.SetTool(toFigure, 'TOrthoLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
}
procedure TFSCS_Main.aToolOrthoLineExecute(Sender: TObject);
var NotSCSLayer: Boolean;
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
DropDownFirstToolbar; // Tolik 27/09/2021 --
{$IF Defined(ES_GRAPH_SC)}
NotSCSLayer := (GCadForm.CurrentLayer <> 8);
{$else}
NotSCSLayer := (GCadForm.CurrentLayer <> 2);
{$ifend}
GCadForm.FContinueTrace := False;
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GDefaultGap := 1;
GDefaultNum := 1;
GOrthoStatus := False;
GCurrentConnectorType := ct_Clear;
if NotSCSLayer then
begin
aSetSCSLayer.Execute;
tbToolOrtholineNoob.Click;
tbToolOrtholineNoob.Down := True;
end
else
//Tolik 27/09/2021 - -
// GCadForm.PCad.SetTool(toFigure, 'TOrthoLine');
begin
GCadForm.PCad.SetTool(toFigure, 'TOrthoLine');
if tbCADToolsExpert.Visible then // Tolik 04/02/2022 --
tbToolOrtholineExpert.Down := True
else
tbToolOrtholineNoob.Down := True;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
{
procedure TFSCS_Main.aToolOrtholineExtExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FContinueTrace := False;
aSetSCSLayer.Execute;
GCadForm.FCreateObjectOnClick := False;
GDefaultGap := 1;
GDefaultNum := 1;
GOrthoStatus := True;
GCurrentConnectorType := ct_Clear;
GCadForm.PCad.SetTool(toFigure, 'TOrthoLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
}
procedure TFSCS_Main.aToolOrtholineExtExecute(Sender: TObject);
var NotSCSLayer: Boolean;
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
{$IF Defined(ES_GRAPH_SC)}
NotSCSLayer := (GCadForm.CurrentLayer <> 8);
{$else}
NotSCSLayer := (GCadForm.CurrentLayer <> 2);
{$ifend}
GCadForm.FContinueTrace := False;
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GDefaultGap := 1;
GDefaultNum := 1;
GOrthoStatus := True;
GCurrentConnectorType := ct_Clear;
if NotSCSLayer then
begin
aSetSCSLayer.Execute;
tbToolOrtholineExtNoob.Click;
tbToolOrtholineExtNoob.Down := True;
//tbSelect.Down := False;
end
else
GCadForm.PCad.SetTool(toFigure, 'TOrthoLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
//
procedure TFSCS_Main.aDisconnectExecute(Sender: TObject);
var
DisConnectFigure: TConnectorObject;
// Tolik 03/10/2016 --
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GPopupFigure = nil then
exit;
DisConnectFigure := TConnectorObject(GPopupFigure);
if CheckCannotDelete(GPopupFigure) then
Exit;
DisConnectFigure.Deselect;
//// åñëè êîíåêòîð ïóñòîé ///////////////////////
if DisConnectFigure.ConnectorType = Ct_Clear then
begin
if (DisConnectFigure.JoinedOrtholinesList.Count = 2) and
(DisConnectFigure.FConnRaiseType = crt_None) and (GetRaiseConn(DisConnectFigure) = nil) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
DisconnectConn(DisConnectFigure);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes26);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDisconnectExecute', E.Message);
end;
// GCadForm.FCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.aDivideLineExecute(Sender: TObject);
var
i: integer;
FFigure: TFigure;
SelectedList: TList;
// Tolik -- 03/10/2016--
SavedUndoFlag: Boolean;
//
begin
if GPopupFigure = nil then
exit;
if ActiveMDIChild <> nil then
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
BeginProgress;
try
SelectedList := TList.Create;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
SelectedList.Add(TFigure(GCadForm.PCad.Selection[i]));
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
if not TOrthoLine(GPopupFigure).FConnectingLine then
DivideLine(TOrthoLine(GPopupFigure));
for i := 0 to SelectedList.Count - 1 do
begin
FFigure := TFigure(SelectedList[i]);
if CheckFigureByClassName(FFigure, cTOrthoLine) then
if FFigure <> GPopupFigure then
if not TOrthoLine(FFigure).FIsRaiseUpDown then
if not TOrthoLine(GPopupFigure).FConnectingLine then
DivideLine(TOrthoLine(FFigure));
end;
// *UNDO*
GCadForm.FCanSaveForUndo := True;
if SelectedList <> nil then
FreeAndNil(SelectedList);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDivideLineExecute', E.Message);
end;
EndProgress;
// GCadForm.FCanSaveForUndo := SavedUndoFlag;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aSetSubstrateLayerExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
GCadForm.CurrentLayer := 1;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetSubstrateLayerExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aSetSCSLayerExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
try
{$IF Defined(ES_GRAPH_SC)}
GCadForm.CurrentLayer := 8;
{$else}
GCadForm.CurrentLayer := 2;
{$ifend}
// Tolik 10/11/2017 -- åñëè ýòî íå ñäåëàòü, òî óêàçàòåëü ìûøêè ìîæåò îñòàòüñÿ â âèäå "ðó÷êè", ðåæèì íå ïåðåêëþ÷èòñÿ
// è åñëè ïîëüçîâàòåëü äî ýòîãî òàñêàë ïîäëîæêó, òî ñ òàêèì æå óñïåõîì ñìîæåò òàñêàòü êîìïîíåíòû, íî îíè òîãäà õåðîâî ïåðåðèñîâûâàþòñÿ
if tbCADToolsExpert.Visible then
begin
tbSelectExpert.Click;
tbSelectExpert.Down := True;
tbCreateOnClickModeExpert.Down := False;
end
else
begin
tbSelectNoob.Click;
tbSelectNoob.Down := True;
tbCreateOnClickModeNoob.Down := False;
end;
//
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetSCSLayerExecute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aSetDefaultColorsExecute(Sender: TObject);
begin
if TF_CAD(ActiveMDIChild) <> nil then
begin
try
GCadForm.PCad.DefaultPenColor := clBlack;
GCadForm.PCad.DefaultBrushColor := clBlack;
GCadForm.PCad.Font.Color := clBlack;
GCadForm.PCad.GridColor := clSilver;
GCadForm.PCad.GuideColor := clGreen;
GCadForm.PCad.PageColor := clWhite;
GCadForm.PCad.BackGround := clGray;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetDefaultColorsExecute', E.Message);
end;
end;
end;
// ÈÇÌÅÍÈÒÜ ÏÀÐÀÌÅÒÐÛ ÎÐÒÎËÈÍÈÈ
procedure TFSCS_Main.aChangeOrtoParamsExecute(Sender: TObject);
var
itLine: TOrthoLine;
ReplaceLine: TOrthoLine;
Joined1, Joined2: TConnectorObject;
i: integer;
begin
try
itLine := TOrthoLine(GCadForm.PCad.Selection[0]);
GDefaultGap := itLine.FGap;
GDefaultNum := itLine.FCount;
F_OrthoLineParams.ShowModal;
GCadForm.PCad.SetTool(toSelect, 'TSelected');
// ïðåîáðàçîâàíèå ìóëüòèëèíèè â ìóëüòèëèíèþ
if (itLine.FCount <> 1) AND (GDefaultNum <> 1) then
begin
itLine.FCount := GDefaultNum;
itLine.FGap := GDefaultGap;
end;
// ïðåîáðàçîâàíèå îäèíî÷íîé â ìóëüòèëèíèþ
if (itLine.FCount = 1) AND (GDefaultNum <> 1) then
begin
Joined1 := TConnectorObject(itLine.JoinConnector1);
Joined2 := TConnectorObject(itLine.JoinConnector2);
TOrthoLine(itLine).create(Joined1.ActualPoints[1].x, Joined1.ActualPoints[1].y, Joined1.ActualZOrder[1],
Joined2.ActualPoints[1].x, Joined2.ActualPoints[1].y, Joined2.ActualZOrder[1],
1, ord(psSolid), clBlack, 0, Joined1.LayerHandle, mydsNormal, GCadForm.PCad);
TText(TOrthoLine(itLine).MultilineCaptionBox).Text := TOrthoLine(itLine).SaveCaption;
end;
// ïðåîáðàçîâàíèå ìóëüòèëèíèè â îäèíî÷íóþ
if (GDefaultNum = 1) AND (itLine.FCount <> 1) then
begin
Joined1 := TConnectorObject(itLine.JoinConnector1);
Joined2 := TConnectorObject(itLine.JoinConnector2);
TOrthoLine(itLine).SaveCaption := TTextMod(TOrthoLine(itLine).MultilineCaptionBox).Text;
TTextMod(TOrthoLine(itLine).MultilineCaptionBox).Delete;
TOrthoLine(itLine).create(Joined1.ActualPoints[1].x, Joined1.ActualPoints[1].y, Joined1.ActualZOrder[1],
Joined2.ActualPoints[1].x, Joined2.ActualPoints[1].y, Joined2.ActualZOrder[1],
1, ord(psSolid), clBlack, 0, Joined1.LayerHandle, mydsNormal, GCadForm.PCad);
end;
itLine.FGap := GDefaultGap;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aChangeOrtoParamsExecute', E.Message);
end;
end;
procedure TFSCS_Main.FormClose(Sender: TObject; var Action: TCloseAction);
var
Rect: TRect;
Status: TMemoryStatus;
i: integer;
MessageResult: integer;
begin
{$if Defined(ES_GRAPH_SC)}
try
SaveAutoShowPanel(F_FloatPanel.Visible);
except
end;
if Assigned(GSCStream) then
begin
if Assigned(F_ProjMan.GSCSBase) and Assigned(F_ProjMan.GSCSBase.CurrProject) and F_ProjMan.GSCSBase.CurrProject.Active then
begin
MessageResult := IDNO;
MessageResult := MessageModal('Ïåðåäàòü ïðîåêò "' + F_ProjMan.GSCSBase.CurrProject.GetNameForVisible + '" â ñìåòíóþ ïðîãðàììó?', ApplicationName,
MB_ICONQUESTION or MB_YESNO);
if MessageResult = IDYES then
begin
try
ExpProjToStroyCalcStream(F_ProjMan.GSCSBase.CurrProject, GSCStream);
except
GSCStream.Clear;
end;
end;
end;
end;
if CloseCurrProject(true) = IDCANcel then
begin
if Assigned(GSCStream) then
GSCStream.Clear;
Action := caNone;
ModalResult := mrCancel;
Exit;
end;
Action := caHide;
ModalResult := mrOk;
{$else}
try
SaveAutoShowPanel(F_FloatPanel.Visible);
except
end;
{if aExpertMode.Checked then
GSCSIni.Controls.F_SCSMain_IsPanelExpertMode := True
else
GSCSIni.Controls.F_SCSMain_IsPanelExpertMode := False;}
if CloseCurrProject(true) = IDCANcel then
begin
Action := caNone;
Exit;
end;
try
Rect.Left := 0;
Rect.Top := 0;
if Assigned(F_Navigator) then
if F_Navigator <> nil then
begin
try
F_Navigator.PCadNavigator.Figures.Clear;
except
end;
FreeAndNil(F_Navigator);
end;
if Assigned(F_ProjMan) then
if F_ProjMan <> nil then
begin
try
F_ProjMan.ManualFloat(Rect);
FreeAndNil(F_ProjMan);
except
end;
end;
if Assigned(F_Normbase) then
if F_NormBase <> nil then
begin
F_NormBase.ManualFloat(Rect);
FreeAndNil(F_NormBase);
end;
if Assigned(F_Progress) then
FreeAndNil(F_Progress);
if Assigned(F_BlockEditor) then
FreeAndNil(F_BlockEditor);
if Assigned(F_AutoTraceType) then
FreeAndNil(F_AutoTraceType);
if Assigned(F_RaiseHeight) then
FreeAndNil(F_RaiseHeight);
//
GExitProgEx := True;
//
if Assigned(F_MasterNewList) then
FreeAndNil(F_MasterNewList);
if Assigned(F_InterfacesAutoTrace) then
FreeAndNil(F_InterfacesAutoTrace);
if Assigned(F_SCSObjectsProp) then
FreeAndNil(F_SCSObjectsProp);
if Assigned(F_LoadColor) then
FreeAndNil(F_LoadColor);
if Assigned(F_OrthoLineParams) then
FreeAndNil(F_OrthoLineParams);
if Assigned(F_SizePos) then
FreeAndNil(F_SizePos);
if Assigned(F_NewLayer) then
FreeAndNil(F_NewLayer);
if Assigned(F_GridStep) then
FreeAndNil(F_GridStep);
if Assigned(F_Scale) then
FreeAndNil(F_Scale);
if Assigned(F_IncOn) then
FreeAndNil(F_IncOn);
if Assigned(F_LayersDialog) then
FreeAndNil(F_LayersDialog);
if Assigned(F_ComponDesignWizard) then
FreeAndNil(F_ComponDesignWizard);
if Assigned(F_PrintLists) then
FreeAndNil(F_PrintLists);
if Assigned(FSCS_Main) then
begin
FSCS_Main.ActionManager.Free;
// FreeAndNil(FSCS_Main);
end;
if Assigned(FPMItemsRoofHipTypes) then
FreeAndNil(FPMItemsRoofHipTypes);
try
FreeLibrary(Newshandle);
except
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.FormClose', E.Message);
end;
try
SetInternationalSettingsToRegistry(GGlobalInternationalSettings);
except
end;
if IsVista then
begin
{$if Not Defined(ES_GRAPH_SC)}
ExitProcess(0);
{$ifend}
end;
for i := 0 to 10000 do
Application.ProcessMessages;
Status.dwLength := sizeof(TMemoryStatus);
GlobalMemoryStatus(Status);
if Status.dwMemoryLoad >= 70 then
begin
{$if Not Defined(ES_GRAPH_SC)}
Application.Terminate;
{$ifend}
end;
{$ifend}
end;
procedure TFSCS_Main.aFreeRotateExecute(Sender: TObject);
var
SelFigure: TFigure;
oldGrpSizex, OldGrpSizeY: Double;
BndRect: TDoubleRect;
RestoreTConnectorObjectBouns: Boolean; //Tolik -- 18/10/2017
function CheckHasAutoCreated(aPointObject: TConnectorObject): boolean;
var i: Integer;
function HasAutoCreated(aFigure: TFigureGrp): Boolean;
var i: Integer;
inFigure: TFigure;
begin
Result := False;
for i := 0 to aFigure.InFigures.count - 1 do
begin
inFigure := TFigure(aFigure.InFigures[i]);
if inFigure is TFigureGrp then
Result := HasAutoCreated(TFigureGrp(inFigure))
else
if (inFigure.isAutoCreatedFigure = biTrue) then
Result := True;
if Result then
break;
end;
end;
begin
Result := False;
if Assigned(aPointObject.DrawFigure) then
begin
Result := HasAutoCreated(aPointObject.DrawFigure);
end;
end;
begin
RestoreTConnectorObjectBouns := False;
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.Selection.Count > 0 then
begin
try
SelFigure := TFigure(GCadForm.PCad.Selection[0]);
if (not CheckFigureByClassName(SelFigure, cTCabinet)) and (not CheckFigureByClassName(SelFigure, cTCabinetExt)) then
begin
GCadForm.PCad.SetTool(toSelect, 'TFigure');
// Tolik 04/09/2017 --
if CheckFigureByClassName(SelFigure, cTConnectorObject) then
begin
if CheckHasAutoCreated(TConnectorObject(SelFigure)) then
begin
RestoreTConnectorObjectBouns := True;
oldGrpSizex := TConnectorObject(SelFigure).GrpSizeX;
OldGrpSizeY := TConnectorObject(SelFigure).GrpSizeY;
TFigureGrp(TConnectorObject(SelFigure).DrawFigure).BoundCalc := False;
BndRect := TConnectorObject(SelFigure).DrawFigure.GetBoundRectWithoutAutoCreatedFigures;
TConnectorObject(SelFigure).GrpSizeX := BndRect.Right - BndRect.Left;
TConnectorObject(SelFigure).GrpSizeY := BndRect.Bottom - BndRect.Top;
end;
end;
//
SelFigure.RotateSelect;
// Tolik 18/10/2017 --
if RestoreTConnectorObjectBouns then
//if CheckFigureByClassName(SelFigure, cTConnectorObject) then
begin
TConnectorObject(SelFigure).GrpSizeX := oldGrpSizex;
TConnectorObject(SelFigure).GrpSizeY := OldGrpSizeY;
end;
RefreshCAD(GCadForm.PCad);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aFreeRotateExecute', E.Message);
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.RegisteredHotKeys;
var
GLogFile: TMyLoglist;
begin
end;
procedure TFSCS_Main.UnRegisteredHotKeys;
var
GLogFile: TMyLoglist;
begin
end;
procedure TFSCS_Main.aRegHotKeysExecute(Sender: TObject);
begin
GAppMinim := False;
RegisteredHotKeys;
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
if (GCadForm.CurrentLayer >= 0) and (GCadForm.CurrentLayer <= 1) then
UnRegisteredCADHotKeys;
if (GCadForm.CurrentLayer >= 2) and (GCadForm.CurrentLayer <= 7) then
RegisteredCADHotKeys;
end;
end;
procedure TFSCS_Main.aUnregHotKeysExecute(Sender: TObject);
begin
UnRegisteredHotKeys;
UnRegisteredCADHotKeys;
end;
procedure TFSCS_Main.aAutoSelectTraceExecute(Sender: TObject);
begin
if aAutoSelectTrace.Checked = True then
begin
GCadForm.FAutoSelectTrace := True;
if GEndPoint = nil then
begin
ShowMessage(cMain_Mes27);
end;
end;
if aAutoSelectTrace.Checked = False then
GCadForm.FAutoSelectTrace := False;
end;
procedure TFSCS_Main.aServerAsDefaultExecute(Sender: TObject);
var
Server: TFigure;
EndPoint: TFigure;
begin
{//18.06.2013
try
if GPopupFigure = nil then
exit;
try
EndPoint := GPopupFigure;
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) then
TConnectorObject(EndPoint).AsEndPoint := True
else
if CheckFigureByClassName(GPopupFigure, cTHouse) then
THouse(EndPoint).AsEndPoint := True;
if EndPoint = GEndPoint then
Exit;
except
EndPoint := Nil;
end;
// ñáðîñèòü áûâøèé ÊÎ
if GEndPoint <> nil then
begin
if CheckFigureByClassName(GEndPoint, cTConnectorObject) then
TConnectorObject(GEndPoint).AsEndPoint := False
else
if CheckFigureByClassName(GEndPoint, cTHouse) then
THouse(GEndPoint).AsEndPoint := False;
if (GListWithEndPoint <> GCadForm) and (GListWithEndPoint <> nil) then
begin
RefreshCAD(GListWithEndPoint.PCad);
RefreshCAD(GListWithEndPoint.PCad);
end;
RefreshCAD(GCadForm.PCad);
GListWithEndPoint := Nil;
end;
RefreshCAD(GCadForm.PCad);
GCadForm.mProtocol.Lines.Add(cEndPoints_Mes1 + EndPoint.Name + cEndPoints_Mes2);
// ïåðåíàçíà÷èòü íîâûé
GEndPoint := EndPoint;
GListWithEndPoint := GCadForm;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aServerAsDefaultExecute', E.Message);
end;}
SetFigureAsEndObject(GCadForm, GPopupFigure);
end;
procedure TFSCS_Main.sDiv1CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
begin
try
Accept := CanResizePanelForm(F_ProjMan, NewSize - PDock1.Width);
if Accept then
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.AutoRefresh := False;
GCadForm.FCurrPCadScrollX := GCadForm.PCad.HSCBarPosition;
GCadForm.FCurrPCadScrollY := GCadForm.PCad.VSCBarPosition;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.sDiv1CanResize', E.Message);
end;
end;
procedure TFSCS_Main.sDiv2CanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
begin
try
Accept := CanResizePanelForm(F_NormBase, NewSize - PDock2.Width);
if Accept then
begin
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad <> nil then
begin
GCadForm.PCad.AutoRefresh := False;
GCadForm.FCurrPCadScrollX := GCadForm.PCad.HSCBarPosition;
GCadForm.FCurrPCadScrollY := GCadForm.PCad.VSCBarPosition;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.sDiv2CanResize', E.Message);
end;
end;
procedure TFSCS_Main.sDiv1Moved(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.AutoRefresh := True;
end;
end;
procedure TFSCS_Main.sDiv2Moved(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.PCad.AutoRefresh := True;
end;
end;
procedure TFSCS_Main.aRealignLineExecute(Sender: TObject);
// Tolik 03/10/2016--
var
SavedUndoFlag: Boolean;
//
begin
if GPopupFigure = nil then
exit;
if ActiveMDIChild <> nil then
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
ReAlignLine(TOrthoLine(GPopupFigure));
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRealignLineExecute', E.Message);
end;
// GCadForm.FCanSaveForUndo := SavedUndoFlag;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
KeyState: TKeyboardState;
CurrPos: TPoint;
CurrPos1: TPoint;
Pt: TPoint;
Res1: TWinControl;
Hand: THandle;
begin
Handled := False;
if not Application.Active then
begin
inherited;
exit;
end;
if (Msg.message = 0) then
begin
inherited;
exit;
end;
try
if (Msg.message = WM_MOUSEWHEEL) then
try
GetCursorPos(Pt);
Hand := WindowFromPoint(Pt);
Res1 := Nil;
Res1 := FindControl(Hand);
try
if Res1.Parent.Name = 'PCad' then
begin
if (GCadForm.PCad.ToolIdx = toSelect) and (GCadForm.PCad.SelectedCount = 0) then
begin
if tbCADToolsExpert.Visible then
cbScaleExpert.SetFocus
else
cbScaleNoob.SetFocus;
SendMessage(GCadForm.PCad.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
SendMessage(GCadForm.PCad.Handle, WM_SETFOCUS, 0, 0);
RefreshCAD_T(GCadForm.PCad);
end;
end;
except
end;
if ActiveControl <> nil then
begin
if (ActiveControl.ClassName = 'TcxCustomComboBoxInnerEdit') or (ActiveControl.ClassName = 'TPanel') then
begin
Handled := True;
exit;
end
else
begin
inherited;
exit;
end;
end;
except
inherited;
exit;
end;
if msg.message = WM_Syscommand then
begin
if msg.wParam = SC_CLOSE then
begin
if GCadForm = nil then
inherited
else
Handled := True;
exit;
end;
end;
if (GCadForm = nil) or (GCadForm.PCad = nil) then
begin
inherited;
Exit;
end
else
begin
if msg.message = wm_MouseWheel then
begin
try
CurrPos := GCadForm.ClientToScreen(Point(GCadForm.VerScroll.Left, GCadForm.VerScroll.Top));
CurrPos1 := GCadForm.ClientToScreen(Point(GCadForm.VerScroll.Left + GCadForm.VerScroll.Width, GCadForm.VerScroll.Top + GCadForm.VerScroll.Height));
// VerScroll
if (CurrPos.Y < Mouse.CursorPos.Y) And (CurrPos.X < Mouse.CursorPos.X) And
(CurrPos1.Y > Mouse.CursorPos.Y) And (CurrPos1.X > Mouse.CursorPos.X) then
begin
if 120 - HIWORD(Msg.wParam) < 0 then
begin
if (GCadForm.VerScroll.Position + ((GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize) div 10)) < GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize then
GCadForm.VerScroll.Position := GCadForm.VerScroll.Position + ((GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize) div 10)
else
GCadForm.VerScroll.Position := GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize + 1;
end
else
begin
if (GCadForm.VerScroll.Position - ((GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize) div 10)) > GCadForm.VerScroll.Min then
GCadForm.VerScroll.Position := GCadForm.VerScroll.Position - ((GCadForm.VerScroll.Max - GCadForm.VerScroll.PageSize) div 10)
else
GCadForm.VerScroll.Position := GCadForm.VerScroll.Min;
end;
GCadForm.Set_PCad_VerScroll;
end
// HorScroll
else
begin
CurrPos := GCadForm.ClientToScreen(Point(GCadForm.HorScroll.Left, GCadForm.HorScroll.Top));
CurrPos1 := GCadForm.ClientToScreen(Point(GCadForm.HorScroll.Left + GCadForm.HorScroll.Width, GCadForm.HorScroll.Top + GCadForm.HorScroll.Height));
if (CurrPos.Y < Mouse.CursorPos.Y) And (CurrPos.X < Mouse.CursorPos.X)
And (CurrPos1.Y > Mouse.CursorPos.Y) And (CurrPos1.X > Mouse.CursorPos.X) then
begin
if 120 - HIWORD(Msg.wParam) < 0 then
begin
if (GCadForm.HorScroll.Position + ((GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize) div 10)) < GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize then
GCadForm.HorScroll.Position := GCadForm.HorScroll.Position + ((GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize) div 10)
else
GCadForm.HorScroll.Position := GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize + 1;
end
else
begin
if (GCadForm.HorScroll.Position - ((GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize) div 10)) > GCadForm.HorScroll.Min then
GCadForm.HorScroll.Position := GCadForm.HorScroll.Position - ((GCadForm.HorScroll.Max - GCadForm.HorScroll.PageSize) div 10)
else
GCadForm.HorScroll.Position := GCadForm.HorScroll.Min;
end;
GCadForm.Set_PCad_HorScroll;
end;
end;
Handled := True;
exit;
except
inherited;
exit;
end;
end;
end;
try
if Assigned(GCadForm) then
if GCadForm.FWaitWork then
begin
Handled := True;
exit;
end
else
begin
inherited;
exit;
end;
except
inherited;
exit;
end;
inherited;
exit;
except
inherited;
// on E: Exception do addExceptionToLogEx('TFSCS_Main.ApplicationEvents1Message', E.Message);
end;
end;
procedure TFSCS_Main.aNotAsServerDefaultExecute(Sender: TObject);
var
EndPoint: TFigure;
begin
try
if GPopupFigure = nil then
exit;
try
EndPoint := GPopupFigure;
except
EndPoint := nil;
end;
// ñáðîñèòü ÊÎ
if CheckFigureByClassName(EndPoint, cTConnectorObject) then
TConnectorObject(EndPoint).AsEndPoint := False
else
if CheckFigureByClassName(EndPoint, cTHouse) then
THouse(EndPoint).AsEndPoint := False;
GCadForm.mProtocol.Lines.Add(cEndPoints_Mes1 + EndPoint.Name + cEndPoints_Mes3);
GEndPoint := Nil;
GListWithEndPoint := Nil;
RefreshCAD(GCadForm.PCad);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNotAServerDefaultExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSelectTracetoServerExecute(Sender: TObject);
var
RaiserThisList: TConnectorObject;
RaiserOtherList: TConnectorObject;
CurrentWS: TConnectorObject;
CurrentServer: TConnectorObject;
AllTrace: TList;
i, j, k: integer;
CurGCadForm: TF_CAD;
isTrace: boolean;
RaiseType: TConnRaiseType;
ListOfLists: TIntList;
ListOfRaises: TList;
CurrentCAD: TF_CAD;
ConnFrom: TConnectorObject;
ConnTo: TConnectorObject;
PrevConn: TConnectorObject;
PrevCAD: TF_CAD;
ListOfAllTraces: TList;
EndPoint: TConnectorObject;
TracesLength: Double;
procedure SelectObjects;
var
i: Integer;
Figure: TFigure;
begin
// Tolik -- 08/02/2017 --
if GCadForm.FTracingList = nil then
GCadForm.FTracingList := TList.Create
else
GCadForm.FTracingList.Clear;
//
if AllTrace <> nil then
begin
// Tolik -- 08/02/2017 --
// GCadForm.FTracingList := TList.Create;
for i := 0 to AllTrace.Count - 1 do
begin
Figure := TFigure(AllTrace[i]);
GCadForm.FTracingList.Add(Figure);
Figure.Select;
if CheckFigureByClassName(Figure, TOrthoLine.ClassName) then
TracesLength := TracesLength + TOrtholine(Figure).LineLength;
end;
end;
// Tolik -- 08/02/2017 --
// else
// GCadForm.FTracingList := TList.Create;
//
// Tolik -- 27/04/2017 --
GCadForm.PCad.Refresh;
//
end;
begin
// Tolik 08/02/2017 --
ListOfRaises := Nil;
ListOfLists := nil; // Tolik 21/05/2018 --
//
try
CurrentServer := nil; //#From Oleg# //14.09.2010
try
CurrentWS := TConnectorObject(CheckBySCSObjects(GCurrMousePos.x, GCurrMousePos.y));
except
CurrentWS := Nil;
end;
if CurrentWS = nil then
begin
if GPopupFigure <> nil then
CurrentWS := TConnectorObject(GPopupFigure)
else
Exit;
end;
// ***
if CheckFigureByClassName(GEndPoint, cTConnectorObject) then
CurrentServer := TConnectorObject(GEndPoint)
else
if CheckFigureByClassName(GEndPoint, cTHouse) then
CurrentServer := GetEndPointByHouse(THouse(GEndPoint), CurrentWS);
// ***
if (CurrentServer = nil) or (CurrentWS = nil) or (not CheckFigureByClassName(CurrentWS, cTConnectorObject)) then
Exit;
if (GCadForm.FIsDragOver) and (GFigureSnap <> nil) then
begin
end
else
begin
BeginProgress('', 1, true);
F_Progress.BringToFront;
end;
try
AllTrace := nil;
ListOfAllTraces := nil;
TracesLength := 0;
GCadForm.FDeselectUpDown := True;
// â ïðåäåëàõ îäíîãî ëèñòà
if GListWithEndPoint = GCadForm then
begin
//Tolik
// ListOfAllTraces := GetAllTraceInCADByMarked_New(CurrentServer, CurrentWS);
// ListOfAllTraces := GetAllTraceInCADByMarked_New1(CurrentServer, CurrentWS);
// ListOfAllTraces := GetAllTraceInCADByMarked(CurrentServer, CurrentWS);
//
if ((GetKeyState(VK_SHIFT) and 128) = 128) then
ListOfAllTraces := GetAllTraceInCADByMarked_New1(CurrentServer, CurrentWS)
else
ListOfAllTraces := GetAllTraceInCADByMarked(CurrentServer, CurrentWS);
if ListOfAllTraces.Count > 0 then
begin
if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
GCadForm.FTracingListIndex := 0;
//Tolik 09/10/2017 --
// AllTrace := ListOfAllTraces[GCadForm.FTracingListIndex];
AllTrace := TList.Create;
// ïðîâåðî÷êà -- íà âñÿêèé --
if ((GCadForm.FTracingListIndex < ListOfAllTraces.Count) and
(TList(ListOfAllTraces[GCadForm.FTracingListIndex]) <> nil)) then
AllTrace.Assign(TList(ListOfAllTraces[GCadForm.FTracingListIndex]), laCopy);
//
{//08.08.2012
if AllTrace <> nil then
begin
GCadForm.FTracingList := TList.Create;
for k := 0 to AllTrace.Count - 1 do
GCadForm.FTracingList.Add(AllTrace[k]);
for i := 0 to AllTrace.Count - 1 do
TFigure(AllTrace[i]).Select;
end
else
GCadForm.FTracingList := TList.Create;}
SelectObjects;
FreeAndNil(AllTrace);
end
else
// Tolik -- 08/02/2017 --
// GCadForm.FTracingList := TList.Create;
begin
if GCadForm.FTracingList = nil then
GCadForm.FTracingList := TList.Create
else
GCadForm.FTracingList.Clear;
end;
//
end
else
if GListWithEndPoint <> nil then
begin
RaiseType := crt_OnFloor; //#From Oleg# //14.09.2010
// äðóãîé ëèñò ñ ÊÎ
if GetUpperList(GListWithEndPoint.FCADListID, GCadForm.FCADListID) = GCadForm.FCADListID then
RaiseType := crt_BetweenFloorDown;
if GetUpperList(GListWithEndPoint.FCADListID, GCadForm.FCADListID) = GListWithEndPoint.FCADListID then
RaiseType := crt_BetweenFloorUp;
ListOfLists := GetSortedListIDsByBounds(GCadForm.FCADListID, GListWithEndPoint.FCADListID);
if ListOfLists.Count >= 2 then
begin
ListOfRaises := GetSortedListOfRaisesFromCurr(ListOfLists, RaiseType, CurrentWS, CurrentServer);
if CheckCanTracingBetweenFloor(ListOfLists, ListOfRaises) then
begin
PrevCAD := nil;
PrevConn := nil;
for i := 0 to ListOfLists.Count - 1 do
begin
CurrentCAD := GetListByID(ListOfLists[i]);
// âçÿòü íàéäåííûé ì-ý ñ-ï
if i < ListOfLists.Count - 1 then
begin
ConnTo := TConnectorObject(ListOfRaises[i]);
end
else
begin
ConnTo := CurrentServer;
end;
CurGCadForm := GCadForm;
GCadForm := CurrentCAD;
if i = 0 then
begin
ConnFrom := CurrentWS;
end
else
begin
ConnFrom := TConnectorObject(GetFigureByID(GCadForm, PrevConn.FID_ConnToPassage));
end;
ListOfAllTraces := GetAllTraceInCADByMarked(ConnTo, ConnFrom{ConnFrom, ConnTo});
if ListOfAllTraces.Count > 0 then
begin
if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
GCadForm.FTracingListIndex := 0;
// Tolik 09/02/2017 --
//AllTrace := ListOfAllTraces[GCadForm.FTracingListIndex];
AllTrace := TList.Create;
// ïðîâåðî÷êà -- íà âñÿêèé --
if ((GCadForm.FTracingListIndex < ListOfAllTraces.Count) and
(TList(ListOfAllTraces[GCadForm.FTracingListIndex]) <> nil)) then
AllTrace.Assign(TList(ListOfAllTraces[GCadForm.FTracingListIndex]), laCopy);
//
{//08.08.2012
if AllTrace <> nil then
begin
GCadForm.FTracingList := TList.Create;
for k := 0 to AllTrace.Count - 1 do
GCadForm.FTracingList.Add(AllTrace[k]);
for j := 0 to AllTrace.Count - 1 do
TFigure(AllTrace[j]).Select;
GCadForm := CurGCadForm;
PrevCAD := CurrentCAD;
PrevConn := ConnTo;
end
else
GCadForm.FTracingList := TList.Create;}
SelectObjects;
// Tolik 21/02/2017 --
//if AllTrace <> nil then
if AllTrace.Count > 0 then
begin
GCadForm := CurGCadForm;
PrevCAD := CurrentCAD;
PrevConn := ConnTo;
end;
FreeAndNil(AllTrace);
end
else
// Tolik -- 08/02/2017 --
//GCadForm.FTracingList := TList.Create;
begin
if GCadForm.FTracingList = nil then
GCadForm.FTracingList := TList.Create
else
GCadForm.FTracingList.Clear;
end;
end;
end;
end;
if ListOfLists <> nil then
FreeAndNil(ListOfLists);
if ListOfRaises <> nil then
FreeAndNil(ListOfRaises);
end;
// Tolik 21/02/2017 --
//if AllTrace <> nil then
if TracesLength > 0 then
//
begin
GCadForm.sbView.Panels[1].Text := GCadForm.GetMsgLengthToPoint(TracesLength);
//FreeAndNil(AllTrace);
end;
// Tolik 09/02/2017 -- çäåñü ListOfAllTraces -- ñïèñîê, êîòîðûé ñîäåðæèò ñïèñêè, ïîýòîìó íóæíî îñâîáîäèòü
// åùå è òó ïàìÿòü, êîòîðóþ çàíèìàåò êàæäûé èç íèõ
//if ListOfAllTraces <> nil then
// FreeAndNil(ListOfAllTraces);
if ListOfAllTraces <> nil then
begin
for i := 0 to ListOfAllTraces.Count - 1 do
begin
// Tolik 21/02/2017 --
if TList(ListOfAllTraces[i]) <> nil then
//
TList(ListOfAllTraces[i]).Free;
end;
FreeAndNil(ListOfAllTraces);
end;
//
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSelectTracetoServerExecute0', E.Message);
end;
if (GCadForm.FIsDragOver) and (GFigureSnap <> nil) then
begin
end
else
EndProgress;
RefreshCAD(GCadForm.PCad);
if GListWithEndPoint <> nil then
begin
RefreshCAD(GListWithEndPoint.PCad);
end;
GCadForm.FDeselectUpDown := false;
//Tolik
//DragState := dsNone;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSelectTracetoServerExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMakeCablingExecute(Sender: TObject);
var
CablingObj: TConnectorObject;
CurrLine: TOrthoLine;
i: integer;
isMaked: Boolean;
ptrInterfRecord: PConnectObjectParam;
ParamsList: TList;
begin
try
if GPopupFigure = nil then
exit;
try
CablingObj := TConnectorObject(GPopupFigure);
except
CablingObj := nil;
end;
ParamsList := TList.Create;
for i := 0 to CablingObj.JoinedOrtholinesList.Count - 1 do
begin
CurrLine := TOrthoLine(CablingObj.JoinedOrtholinesList[i]);
New(ptrInterfRecord);
ptrInterfRecord.IDObject := CurrLine.ID;
if CurrLine.JoinConnector1 = CablingObj then
ptrInterfRecord.Side := 1;
if CurrLine.JoinConnector2 = CablingObj then
ptrInterfRecord.Side := 2;
ParamsList.Add(ptrInterfRecord);
end;
MakeCablingInPM(ParamsList, True);
// Tolik 09/02/2017 -- îñâîáîäèòü ïàìÿòü
for i := 0 to ParamsList.Count - 1 do
Dispose(PConnectObjectParam(ParamsList[i]));
//
FreeAndNil(ParamsList);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMakeCablingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aCreateRaiseExecute(Sender: TObject);
var
RaiseOnFigure: TConnectorObject;
RaiseHeight: Double;
// Tolik
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GPopupFigure = nil then
exit;
try
RaiseOnFigure := TConnectorObject(GPopupFigure);
except
RaiseOnFigure := nil;
end;
F_RaiseHeight.cbApplyToAll.Visible := False;//Tolik 04/08/2021 --
F_RaiseHeight.Caption := cMain_Mes28;
F_RaiseHeight.lbMessage.Caption := cMain_Mes29;
// íà ñîåäèíèòåëå
if RaiseOnFigure.ConnectorType = ct_Clear then
begin
if F_RaiseHeight.Showmodal = mrOK then
begin
RaiseHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
RaiseHeight := UOMToMetre(RaiseHeight);
if RaiseHeight > GCadForm.FRoomHeight then
RaiseHeight := GCadForm.FRoomHeight;
if RaiseHeight <> RaiseOnFigure.ActualZOrder[1] then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
CreateRaiseOnConnector(RaiseOnFigure, RaiseHeight);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes30);
end;
end
else
// íà îáúåêòå
begin
if RaiseOnFigure.JoinedConnectorsList.Count > 0 then
begin
if F_RaiseHeight.Showmodal = mrOK then
begin
RaiseHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
RaiseHeight := UOMToMetre(RaiseHeight);
if RaiseHeight <> RaiseOnFigure.ActualZOrder[1] then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
// Tolik 17/03/2017 --
//CreateRaiseOnPointObject(RaiseOnFigure, RaiseHeight);
CreateRaiseOnPointObjectNew(RaiseOnFigure, RaiseHeight);
//
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes30);
end;
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes31);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateRaiseExecute', E.Message);
end;
//GCadForm.FCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.aDestroyRaiseExecute(Sender: TObject);
var
RaiseConn: TConnectorObject;
RaiseLine: TOrtholine;
RaiseOnFigure: TConnectorObject;
vList: TF_CAD;
vLists: TList;
// Tolik -- 03/10/2016--
SavedUndoFlag : Boolean;
//
begin
// Tolik -- 09/02/2017 --
vLists := nil;
//
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GPopupFigure = nil then
exit;
try
RaiseOnFigure := TConnectorObject(GPopupFigure);
except
RaiseOnFigure := nil;
end;
// îïðåäåëèòü òèï ñ-ï
RaiseConn := GetRaiseConn(RaiseOnFigure);
if RaiseConn <> nil then
begin
if RaiseOnFigure.ConnectorType = ct_Clear then
begin
// *UNDO*
if RaiseConn.FConnRaiseType = crt_OnFloor then
GCadForm.SaveForUndo(uat_None, True, False)
else
begin
vLists := TList.Create;
vLists.Add(GCadForm);
vList := GetListByID(RaiseConn.FID_ListToPassage);
if vList <> nil then
vLists.Add(vList);
SaveForProjectUndo(vLists, True, False);
end;
DestroyRaiseOnConnector(RaiseOnFigure);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
begin
// *UNDO*
if RaiseConn.FConnRaiseType = crt_OnFloor then
GCadForm.SaveForUndo(uat_None, True, False)
else
begin
vLists := TList.Create;
vLists.Add(GCadForm);
vList := GetListByID(RaiseConn.FID_ListToPassage);
if vList <> nil then
vLists.Add(vList);
SaveForProjectUndo(vLists, True, False);
end;
DestroyRaiseOnPointObject(RaiseOnFigure);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
// Tolik 09/02/2017 --
if vLists <> nil then
FreeAndNil(vLists);
//
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDestroyRaiseExecute', E.Message);
end;
//GCadForm.FCanSaveForUndo := SavedUndoFlag;
end;
// Tolik -- 31/05/2016 --
function GetFigureByCatalogId(CatalogId: Integer): TFigure;
var i: Integer;
begin
Result := nil;
for i := 0 to GCadForm.FSCSFigures.Count - 1 do
begin
if TFigure(GCadForm.FSCSFigures[i]).ID = CatalogId then
begin
Result := TFigure(GCadForm.FSCSFigures[i]);
break;
end;
end;
end;
Procedure ConnectCableComponents(ACompon1, ACompon2: TSCSComponent);
var LineCatalog1, LineCatalog2 : TSCSCatalog;
SelfSide, JoinSide : integer;
Line1, Line2: TOrthoLine;
function CheckCanJoinOnConnectors(aConn1, aConn2: TConnectorObject): Boolean;
begin
Result := False;
// åñëè íà îäíîì òî÷å÷íîì
if (aConn1.JoinedConnectorsList.Count > 0) and
(TConnectorObject(aConn1.JoinedConnectorsList[0]).JoinedConnectorsList.IndexOf(aConn2) <> -1) then
Result := True
else
// èëè ýòî îäèí è òîò æå êîííåêòîð
if aConn1.ID = aConn2.ID then
Result := True;
end;
begin
LineCatalog1 := ACompon1.GetFirstParentCatalog;
LineCatalog2 := ACompon2.GetFirstParentCatalog;
if ((LineCatalog1 <> nil) and (LineCatalog2 <> nil)) then
begin
Line1 := TOrthoLine(GetFigureByCatalogId(LineCatalog1.SCSId));
Line2 := TOrthoLine(GetFigureByCatalogId(LineCatalog2.SCSId));
if ((Line1 <> nil) and (Line2 <> nil)) then
begin
SelfSide := 0;
JoinSide := 0;
if (ACompon1 <> nil) and (ACompon2 <> nil) then
begin
if CheckCanJoinOnConnectors(TConnectorObject(Line1.JoinConnector1), TConnectorObject(Line2.JoinConnector1)) then
ACompon1.JoinTo(ACompon2, 1, 1)
else
if CheckCanJoinOnConnectors(TConnectorObject(Line1.JoinConnector1), TConnectorObject(Line2.JoinConnector2)) then
ACompon1.JoinTo(ACompon2, 1, 2)
else
if CheckCanJoinOnConnectors(TConnectorObject(Line1.JoinConnector2), TConnectorObject(Line2.JoinConnector1)) then
ACompon1.JoinTo(ACompon2, 2, 1)
else
if CheckCanJoinOnConnectors(TConnectorObject(Line1.JoinConnector2), TConnectorObject(Line2.JoinConnector2)) then
ACompon1.JoinTo(ACompon2, 2, 2);
end;
end;
end;
end;
//
// procedure TFSCS_Main.aRaiseLineExecute(Sender: TObject);
procedure TFSCS_Main.RaiseSelectedLine(aToHeight: double = -1);
var
i, j: integer;
RaiseHeight: Double;
RaiseLine: TOrthoLine;
FFigure: TFigure;
SelectedList: TList;
// Tolik 28/08/2019 --
//CurrTick, OldTick: Cardinal;
CurrTick, OldTick: DWord;
//
// Tolik
NB_Conn: TConnectorObject;
SavedTraceList, SavedLineList: TList;
SavedComponList: TList;
SavedLineConnectionsList: TList; // Ñïèñîê äèíåéíûõ ñîåäèíåíèé
SavedPointConnectionsList: TList; // Ñïèñîê ñîåäèíåííé ñ òî÷å÷íûìè îáúåêòàìè
SelfLineConnectInfo, JoinedLineConnectInfo: TLineComponConnectionInfo;
//
SavedLineComponList, SavedPointComponList, TempLineList: TList;
DivLineObject, JoinedPointObject: TSCSCatalog;
PointCompon: TSCSComponent;
NBConnector: TConnectorObject;
InterfRel : TSCSIOfIRel;
InterfPosition, JoinedPosition: TSCSInterfPosition;
LineCompon: TSCSComponent;
ALineInterFace, APointInterFace, aTempInterf: TSCSInterface;
LineInterfList: TList;
ConnComponList: TList;
AInterfPositions1, AInterfPositions2: TSCSInterfPositions;
LineComponInterFace, PointComponInterFace: TSCSInterFace;
InterFaceAccordanceList: TList;
APointInterfID: Integer;
ConnectedInterFaces: TSCSIOfIRel;
ConnectIDCompRel: Integer;
TempInterfaces1, TempInterfaces2: TSCSInterfaces;
InterfCount: Integer;
ptrConnection: PComplect;
DisJoinList: TList;
ComponToDeleteList: TSCSComponents;
SavedUndoFlag: Boolean; // 03/10/2016 -- Tolik
ProgressChecked: Boolean;
CanRefreshCadFlag: Boolean;
//
// 12/05/2016 -- áëîê çàïèñè/âîññòàíîâëåíèÿ êàáåëüíûõ ñîåäèíåíèé ïîñëå ïîäúåìà/ñïóñêà òðàññû íà âûñîòó
Procedure CheckSaveLineConnectionsBySide(aLine: TOrthoLine; aCableCompon: TSCSComponent; aSide: Integer);
var i, j, k: Integer;
InterfPos: TSCSInterfPosition;
Interf, ConnectedInterf: TSCSInterface;
DirectConnectedComponList, ConnectedComponList: TList;
JoinedCompon, ConnectedLineComponent: TSCSComponent;
PointToSave: TConnectorObject;
PointCatalog, LineCatalog, JoinedLineCatalog: TSCSCatalog;
POintFigure, LineFigure: TFigure;
CanContinue: Boolean;
WayList: TList;
// ComponToDeleteList: TSCSComponents;
LastComponent: TSCSComponent;
LastSide: Integer;
isLineConnection, isPointConnection: Boolean;
ComponJoinedByMultiInterface: TSCSComponent;
JoinedInterface: TSCSInterface;
FirstComponID: Integer;
SavedPointConnection: Boolean;
Procedure SaveConnectionOnPointObject(aPointObject: TConnectorObject; aPointCatalog: TSCSCatalog; aJoinedLineCompon: TSCSComponent; ConnectionSide: Integer);
var i, j, k, l, m: Integer;
PointJoinedLineCatalog : TSCSCatalog;
PointComponent, LineComponent: TSCSComponent;
LineJoinedComponList: TList;
LineInterface: TSCSInterface;
aCableComponInterface: TSCSInterface;
begin
NBConnector := APointObject;
if NBConnector <> nil then
begin
//JoinedPointObject := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(NBConnector.Id);
// DivLineObject := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(ASnapLine.Id);
//DivLineObject := aJoinedLineCompon.GetFirstParentCatalog;
//if (aPointCatalog <> nil) and (DivLineObject <> nil) then
if (aPointCatalog <> nil) then
begin
//if ((aPointCatalog.ComponentReferences.Count > 0) and (DivLineObject.ComponentReferences.Count > 0)) then
begin
InterFaceAccordanceList := TList.Create;
//LineInterfList := TList.Create;
//for j := 0 to DivLineObject.ComponentReferences.Count - 1 do
//begin
//LineCompon := DivLineObject.ComponentReferences[j];
// 14/05/2016
// if LineCompon.ComponentType.SysName = ctsnCable then
if IsCableComponent(aJoinedLineCompon) then // òàê ïðàâèëüíåå -- äëÿ âñåõ êàáåëåé
//
begin
if CheckJoinedComponToComponFromObject(aJoinedLineCompon, aPointCatalog) then
begin
for k := 0 to aJoinedLineCompon.Interfaces.count - 1 do
begin
if (aJoinedLineCompon.Interfaces[k].TypeI = itFunctional) and (aJoinedLineCompon.Interfaces[k].Side = ConnectionSide) and
((aJoinedLineCompon.Interfaces[k].IsBusy = biTrue) or (aJoinedLineCompon.Interfaces[k].BusyPositions.Count > 0)) then
begin
SavedLineComponList := TList.Create;
SavedPointComponList := TList.Create;
ALineInterFace := TSCSInterFace(aJoinedLineCompon.Interfaces.Items[k]);
{
if SavedLineComponList.IndexOf(LineCompon.Interfaces.Items[k]) = -1 then
SavedLineComponList.Add(TSCSInterFace(LineCompon.Interfaces.Items[k]));}
if aCableCompon.Id = aJoinedLineCompon.id then
begin
if SavedLineComponList.IndexOf(ALineInterFace) = -1 then
SavedLineComponList.Add(TSCSInterface(ALineInterFace));
end
else
begin
aCableComponInterFace := aCableCompon.Interfaces[k];
if SavedLineComponList.IndexOf(aCableComponInterFace) = -1 then
SavedLineComponList.Add(TSCSInterface(aCableComponInterFace));
// aTempInterf := TSCSInterface(SavedLineComponList[l]);
end;
APointInterfID := -1;
for l := 0 to ALineInterFace.BusyPositions.Count - 1 do
begin
InterfPosition := ALineInterFace.BusyPositions[l];
JoinedPosition := InterfPosition.GetConnectedPos;
if JoinedPosition <> nil then
begin
if JoinedPosition.InterfOwner <> nil then
begin
if SavedPointComponList.IndexOf(JoinedPosition.InterfOwner) = -1 then
SavedPointComponList.Add(TSCSInterFace(JoinedPosition.InterfOwner));
end;
end;
end;
if ((SavedLineComponList.Count > 0) and (SavedPointComponList.Count > 0)) then
begin
InterFaceAccordanceList.Add(SavedLineComponList);
InterFaceAccordanceList.Add(SavedPointComponList);
end
else
begin
SavedLineComponList.Clear;
SavedPointComponList.Clear;
FreeAndNil(SavedLineComponList);
FreeAndNil(SavedPointComponList);
end;
end;
end;
end;
end;
//end;
end;
if InterFaceAccordanceList.Count > 0 then
begin
// ñîñòîÿíèå ñîåäèíåíèÿ êàáåëÿ íà òî÷å÷íîì îáúåêòå
SelfLineConnectInfo := TLineComponConnectionInfo.Create(True);
SelfLineConnectInfo.ComponId := aCableCompon.ID;//AJoinedLineCompon.ID;
//SelfLineConnectInfo.ComponSide := ConnectionSide;
SelfLineConnectInfo.ComponSide := aSide;
SelfLineConnectInfo.isLineConnection := False;
JoinedLineConnectInfo := TLineComponConnectionInfo.Create(False);
JoinedLineConnectInfo.ComponCatalogID := APointCatalog.ID;
JoinedLineConnectInfo.ComponSide := 0;
// Tolik 09/02/2017 --
// JoinedLineConnectInfo.ConnectedComponList := InterFaceAccordanceList;
JoinedLineConnectInfo.ConnectedComponList := TList.Create;
JoinedLineConnectInfo.ConnectedComponList.Assign(InterFaceAccordanceList, LaCopy);
//
SelfLineConnectInfo.ConnectedComponList.Add(JoinedLineConnectInfo);
SavedLineConnectionsList.Add(SelfLineConnectInfo);
FreeAndNil(InterFaceAccordanceList);
end
else
FreeAndNil(InterFaceAccordanceList);
end;
end;
// ñáðîñèòü ñîåäèíåíèÿ ëèíåéíîãî ñ òî÷å÷íûìè íà çàäàííîé ñòîðîíå
LineJoinedComponList := TList.Create;
for i := 0 to aJoinedLineCompon.Interfaces.Count - 1 do
begin
LineInterface := TSCSInterface(aJoinedLineCompon.Interfaces[i]);
if (LineInterface.TypeI = itFunctional) and (LineInterface.Side = ConnectionSide) then
begin
for j := 0 to LineInterface.ConnectedInterfaces.Count - 1 do
if LineJoinedComponList.IndexOf(TSCSComponent(LineInterface.ConnectedInterfaces[j].ComponentOwner)) = -1 then
LineJoinedComponList.Add(TSCSComponent(LineInterface.ConnectedInterfaces[j].ComponentOwner));
end;
end;
for i := 0 to LineJoinedComponList.Count - 1 do
begin
aJoinedLineCompon.DisJoinFrom(TSCSComponent(LineJoinedComponList[i]));
end;
FreeAndNil(LineJoinedComponList);
//
end;
function GetLastConnectedComponent(ALastCompon: TSCSComponent; SelfSide: integer): TSCSComponent;
var i, j, k: Integer;
//LineFigure: Tfigure;
LineCatalog: TSCSCatalog;
LastComponinterface: TSCSInterface;
InterfPos: TSCSInterfPosition;
LineFound, PointFound: Boolean;
ConnectedCompon: TSCSComponent;
LastLine: TOrthoLine;
SavedPosSide: Integer;
LastLineCompon: TSCSComponent;
JoinedPointObject: TConnectorObject;
JoinedPointCatalog: TSCSCatalog;
begin
Result := nil;
LineFound := False;
PointFound := False;
CanContinue := False;
LastLineCompon := ALastCompon;
LineCatalog := ALastCompon.GetFirstParentCatalog;
if LineCatalog <> nil then
begin
LastLine := TOrthoLine(GetFigureByCatalogId(LineCatalog.SCSID));
if LastLine <> nil then
begin
if (not LastLine.FIsVertical) and (not LastLine.FIsRaiseUpDown) then
begin
if ConnectedComponList.IndexOf(ALastCompon) = -1 then
ConnectedComponList.Add(ALastCompon)
else
exit;
Exit;
end;
end;
end;
for i := 0 to ALastCompon.Interfaces.Count - 1 do
begin
LastComponinterface := TSCSInterface(ALastCompon.Interfaces[i]);
if ((LastComponinterface.TypeI = itFunctional) and (LastComponinterface.Side <> SelfSide)) then
begin
if ((LastComponinterface.IsBusy = biTrue) or (LastComponinterface.BusyPositions.Count > 0)) then
begin
for j := 0 to LastComponinterface.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(LastComponinterface.BusyPositions[j]);
InterfPos := InterfPos.GetConnectedPos;
if InterfPos <> nil then
begin
ConnectedCompon := TSCSComponent(InterfPos.InterfOwner.ComponentOwner);
if ConnectedCompon.IsLine = biTrue then
begin
LastLineCompon := ConnectedCompon;
if ConnectedComponList.IndexOf(ConnectedCompon) = -1 then
begin
SavedPosSide := InterfPos.InterfOwner.Side; // ñòîðîíà ïîäêëþ÷åíèÿ
LineCatalog := ConnectedCompon.GetFirstParentCatalog;
if LineCatalog <> nil then
begin
LineFigure := GetFigureByCatalogId(LineCatalog.SCSID);
if LineFigure <> nil then
begin
if TOrthoLine(LineFigure).FIsVertical or TOrthoLine(LineFigure).FIsRaiseUpDown then
begin
if ComponToDeleteList.IndexOf(ConnectedCompon) = -1 then
ComponToDeleteList.Add(ConnectedCompon);
if ConnectedComponlist.IndexOf(Connectedcompon) = -1 then
ConnectedComponList.Add(ConnectedCompon);
ALastCompon.DisJoinFrom(ConnectedCompon);
Result := GetLastConnectedComponent(ConnectedCompon, SavedPosSide);
if Result = Nil then
begin
if SavedPosSide = 1 then
LastSide := 2
else
if SavedPosSide = 2 then
LastSide := 1;
end;
end
else
// åñëè ñõîäèì ñ âåðòèêàëè -- ïðèåõàëè
begin
Result := ConnectedCompon;
//Result := nil;
// LineFigure := nil; // ñáðîñ äëÿ ìíîæåñòâåííûõ ïîäêëþ÷åíèé íà òîì æå óðîâíå ïðè íàëè÷èè ìóëüòèèíòåðôåéñà
if ConnectedComponList.IndexOf(ConnectedCompon) = -1 then
ConnectedComponList.Add(ConnectedCompon);
{if SavedPosSide = 1 then
LastSide := 2
else
if SavedPosSide = 2 then
LastSide := 1;}
LastSide := SavedPosSide;
exit;
end;
end;
end;
end;
end
else
begin
if ConnectedCompon.isLine = biFalse then
begin
SavedPosSide := LastComponInterface.Side;
LastSide := SavedPosSide;
JoinedPointCatalog := ConnectedCompon.GetFirstParentCatalog;
if JoinedPointCatalog <> nil then
begin
JoinedPointObject := TConnectorObject(GetFigureByCatalogId(JoinedPointCatalog.SCSID));
if JoinedPointObject <> nil then
begin
SaveConnectionOnPointObject(JoinedPointObject, JoinedPointCatalog, aLastCompon, LastSide);
SavedPointConnection := True;
isPointConnection := True;
end;
Result := nil;
Exit;
end;
end;
end;
end;
end;
end;
end;
end;
end;
begin
CanContinue := False;
SelfLineConnectInfo := nil;
JoinedLineConnectInfo := Nil;
ConnectedComponList := TList.Create;
PointToSave := nil;
isLineConnection := False;
isPointConnection := False;
LineFigure := Nil;
SavedPointConnection := False;
// ComponToDeleteList := TSCSComponents.Create(False);
if ((aCableCompon.JoinedComponents.count > 0) and (SavedComponList.IndexOf(aCableCompon) = -1)) then
SavedComponList.Add(ACablecompon);
for i := 0 to aCableCompon.Interfaces.Count - 1 do
begin
Interf := TSCSInterface(aCableCompon.Interfaces[i]);
// èùåì âîçìîæíûå ïîäêëþ÷åíèÿ ñ óêàçàííîé ñòîðîíû
if ((Interf.Side = aSide) and (Interf.TypeI = itFunctional) and
((Interf.IsBusy = biTrue) or (interf.BusyPositions.Count > 0))) then
begin
for j := 0 to Interf.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(Interf.BusyPositions[j]); // çàíÿòàÿ ïîçèöèÿ èíòåðôåéñà
InterfPos := InterfPos.GetConnectedPos; // ïîäêëþ÷åííàÿ ê íåé íåïîñðåäñòâåííî ïîçèöèÿ èíòåðôåéñà
// ïðèñîåäèíåííîãî êîìïîíåíòà
JoinedCompon := InterfPos.InterfOwner.ComponentOwner; // ïðèñîåäèíåííûé êîìïîíåíò
if JoinedCompon <> nil then
begin
// ïîäêëþ÷åí òî÷å÷íûé êîìïîíåíò
if JoinedCompon.IsLine = biFalse then
begin
// òî÷å÷íîå ñîåäèíåíèå -- ñîõðàíèòü ïî ïîçèöèÿì äëÿ âîññòàíîâëåíèÿ
if ConnectedComponList.IndexOf(JoinedCompon) = -1 then
ConnectedComponList.Add(JoinedCompon);
if PointToSave = nil then
begin
PointCatalog := JoinedCompon.GetFirstParentCatalog;
PointToSave := TConnectorObject(GetFigurebyCatalogID(PointCatalog.SCSID));
// íàøëè òî÷å÷íûé, ïðèñîåäèíåííûé ê êàáåëþ -- ñîõðàíÿåì ñîåäèíåíèå è âûâàëèâàåìñÿ
if ((PointToSave <> nil) and (CheckFigureByClassName(PointToSave, cTConnectorObject))) then
begin
SaveConnectionOnPointObject(PointtoSave, PointCatalog, aCableCompon, aSide);
ConnectedComponList.Free;
exit; //// BREAK ////;
end;
end;
end
// ïîäêëþ÷åí ëèíåéíûé êîìïîíåíò
// ëèíåéíûå ïîèíòåðôåéñíî ñîåäèíÿòü íå íóæíî, ïðîñòî ñîåäèíèòü êàáåëü
else
if JoinedCompon.isLine = biTrue then
begin
if ConnectedComponlist.IndexOf(JoinedCompon) = -1 then
begin
ConnectedComponList.Add(JoinedCompon);
isLineConnection := True;
LastSide := InterfPos.InterfOwner.Side; // ñòîðîíà ïîäëþ÷åíèÿ ïîäêëþ÷åííîãî êàáåëÿ ê òåêóùåìó
//åñëè ïîäêëþ÷åí ëèíåéíûé - èùåì êîíå÷íóþ òî÷êó âîññòàíîâëåíèÿ
JoinedLineCatalog := JoinedCompon.GetFirstParentCatalog;
if JoinedLineCatalog <> nil then
begin
LineFigure := GetFigureByCatalogId(JoinedLineCatalog.SCSID);
if LineFigure <> nil then
begin
if (TOrthoLine(LineFigure).FIsVertical or TOrthoLine(LineFigure).FIsRaiseUpDown) then
begin
// ñïèñîê íà óäàëåíèå
if (ComponToDeleteList.IndexOf(JoinedCompon) = -1) then
ComponToDeleteList.Add(JoinedCompon);
// ïîëó÷èòü ïîñëåäíèé êóñîê êàáåëÿ
aCableCompon.DisJoinFrom(JoinedCompon);
JoinedCompon := GetLastConnectedComponent(JoinedCompon, LastSide);
end;
// åñëè ïîñëåäíÿÿ ôèãóðà -- âåðòèêàëü è äàëüøå îáðûâ
if (JoinedCompon = nil) and (not SavedPointConnection) then
begin
if ConnectedComponList.Count > 0 then
begin
JoinedCOmpon := TSCSComponent(ConnectedComponList[ConnectedComponList.Count - 1]);
JoinedLineCatalog := JoinedCompon.GetFirstParentCatalog;
LineFigure := GetFigureByCatalogId(JoinedLineCatalog.SCSID);
end;
end;
end;
end;
// åñëè ñîåäèíåíèå - ëèíåéíîå - ñîõðàíèòü åãî
if (LineFigure <> nil) and (not SavedPointConnection) then
begin
// êàáåëü ïîäíèìàåìîé òðàññû
SelfLineConnectInfo := TLineComponConnectionInfo.Create(True);
SelfLineConnectInfo.ComponId := aCableCompon.ID;
SelfLineConnectInfo.ComponSide := aSide;
// òðàññà è ñòîðîíà ñîåäèíåíèÿ
JoinedLineConnectInfo:= TLineComponConnectionInfo.Create(False);
JoinedLineConnectInfo.ComponId := JoinedCompon.ID;
if TOrthoLine(LineFigure).FIsVertical then
begin
if LastSide = 1 then
LastSide := 2
else
if LastSide = 2 then
LastSide := 1;
end;
JoinedLineConnectInfo.ComponSide := LastSide;
JoinedLineCatalog := JoinedCompon.GetFirstParentCatalog;
if JoinedLineCatalog <> nil then
JoinedLineConnectInfo.ComponCatalogID := JoinedLineCatalog.ID;
SelfLineConnectInfo.ConnectedComponList.Add(JoinedLineConnectInfo);
SavedLineConnectionsList.Add(SelfLineConnectInfo);
//îòêëþ÷èòü íàéäåííûé êàáåëü íàõ
if aCableCompon.JoinedComponents.IndexOF(JoinedCompon) <> -1 then
aCableCompon.DisJoinFrom(JoinedCompon);
end;
end;
end;
end;
if isLineConnection then
Break; //// BREAK ////
if isPointConnection then
Break; //// BREAK ////;
end;
end;
if isLineConnection then
Break; //// BREAK ////
if isPointConnection then
Break; //// BREAK ////;
end;
// åñëè ìóëüòèèíòåðôåéñ - îòêëþ÷èòü âñå ïîäêëþ÷åííûå íà íåì( îñòàëüíûå êàáåëè)
// è çàãíàòü èõ â ñïèñîê ïîäêëþ÷åííûõ êîìïîíåíò äëÿ âîññòàíîâëåíèÿ,
if aCableCompon.JoinedComponents.Count > 0 then
begin
for i := 0 to aCableCompon.Interfaces.count - 1 do
begin
Interf := TSCSInterface(aCableCompon.Interfaces[i]);
if ((Interf.TypeI = itFunctional) and (Interf.Side = aSide) and (Interf.Multiple = biTrue) and
(Interf.ConnectedInterfaces.Count > 1)) then
begin
if aCableCompon.JoinedComponents.Count > 0 then
begin
While Interf.ConnectedInterfaces.Count > 0 do
begin
JoinedInterface := TSCSInterface(Interf.ConnectedInterfaces[0]);
ComponJoinedByMultiInterface := JoinedInterface.ComponentOwner;
if ComponJoinedByMultiInterface <> nil then
begin
if (ComponJoinedByMultiInterface.IsLine = biTrue) then
begin
ConnectedComponList.Add(ComponJoinedByMultiInterface);
// åñëè áûëî ñîõðàíåíèå ëèíåéíîãî ñîåäèíåíèÿ -- äîáàâèòü â ñïèñîê ñîõðàíåíèÿ ïîäêëþ÷åííûé êàáåëü
if SelfLineConnectInfo <> nil then
begin
FirstComponID := TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[0]).ComponId; // íà âñÿêèé
if ComponJoinedByMultiInterface.ID <> FirstComponID then
begin
JoinedLineConnectInfo := TLineComponConnectionInfo.Create(False);
JoinedLineConnectInfo.ComponId := ComponJoinedByMultiInterface.ID;
JoinedLineConnectInfo.ComponSide := JoinedInterface.Side;
SelfLineConnectInfo.ConnectedComponList.Add(JoinedLineConnectInfo);
end;
end;
end;
// îòêëþ÷èòü (åñëè óæå åñòü â ñïèñêå èëè òî÷å÷íûé êîìïîíåíò)
aCableCompon.DisJoinFrom(ComponJoinedByMultiInterface);
end;
end;
end;
end;
end;
end;
// óäàëèòü êàáåëü ïî ïóòè ïðîõîæäåíèÿ
{if ComponToDeleteList.Count > 0 then
begin
F_ProjMan.DelComponentsFromList(F_ProjMan.GSCSBase.CurrProject.CurrList, ComponToDeleteList, False, biNone, false, nil);
ComponToDeleteList.Clear;
end; }
//FreeAndNil(ComponToDeleteList);
ConnectedComponList.Clear;
FreeAndNil(ConnectedcomponList);
GCadForm.PCad.Refresh;
end;
Procedure SaveLineConnections(aLine: TOrthoLine);
var i, j, k: Integer;
LineCatalog: TSCSCatalog;
SCSCompon: TSCSComponent;
CanSaveThisTrace: Boolean;
CanMoveLineConnector1, CanMoveLineConnector2: Boolean;
JoinedLine: TOrthoLine;
CanSaveLineConnector1, CanSaveLineConnector2: Boolean;
function CheckCanSaveOnLineConnector(aConn: TConnectorObject): Boolean;
var i,j : Integer;
NextRaiseConn: TConnectorObject;
VLine1, VLine2, ConnRaiseLine: TOrthoLine;
VLineConn1, VLineConn2 : TConnectorObject;
DirectionUP, DirectionDown: boolean;
begin
Result := True;
DirectionUP := False;
DirectionDown := False;
VLineConn1 := Nil;
VLineConn2 := Nil;
if aConn = nil then
begin
Result := False;
Exit;
end;
if aConn.Deleted then
begin
Result := False;
exit;
end;
// åñëè êîííåêòîð - íà óêàçàííîé âûñîòå -- âûõîäèì íàõ
if Comparevalue(aConn.ActualZOrder[1], RaiseHeight) = 0 then
begin
Result := False;
Exit;
end;
// Tolik -- 17/11/2016 --
// íà êîííåêòîðàõ ìàãèñòðàëåé è ìåæýòàæåê òîæå çàïèñûâàòü íå áóäåì (òàì êîííåêòîð äâèíåòñÿ êàê åñòü)
if (aConn.FConnRaiseType = crt_BetweenFloorUp) or (aConn.FConnRaiseType = crt_BetweenFloorDown) or
(aConn.FConnRaiseType = crt_TrunkUp) or (aConn.FConnRaiseType = crt_TrunkDown) then
begin
Result := False;
exit;
end
//Tolik 05/12/2016-- ìîæåò áûòü íà âòîðîì êîíåêòîðå
else
if aConn.FConnRaiseType = crt_none then
begin
NextRaiseConn := nil;
for i := 0 to aConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(aConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
if TConnectorObject(TOrthoLine(aConn.JoinedOrtholinesList[i]).JoinConnector1).ID = aConn.ID then
NextRaiseConn := TConnectorObject(TOrthoLine(aConn.JoinedOrtholinesList[i]).JoinConnector2)
else
if TConnectorObject(TOrthoLine(aConn.JoinedOrtholinesList[i]).JoinConnector2).ID = aConn.ID then
NextRaiseConn := TConnectorObject(TOrthoLine(aConn.JoinedOrtholinesList[i]).JoinConnector1)
end;
if NextRaiseConn <> nil then
break;
end;
if NextRaiseConn <> nil then
begin
if (NextRaiseConn.FConnRaiseType = crt_BetweenFloorUp) or (NextRaiseConn.FConnRaiseType = crt_BetweenFloorDown) or
(NextRaiseConn.FConnRaiseType = crt_TrunkUp) or (NextRaiseConn.FConnRaiseType = crt_TrunkDown) then
begin
Result := False;
exit;
end
end;
end;
//
ConnRaiseLine := Nil;
VLine1 := nil;
VLine2 := Nil;
NextRaiseConn := Nil;
// åñëè òðàññà ïðèñîåäèíåíà ê òî÷å÷íîìó îáúåêòó -- íàõ
if aConn.JoinedConnectorsList.Count > 0 then
exit;
// åñëè äâèãàåì íå âñå òðàññû êîííåêòîðà - íàõ
for i := 0 to AConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(AConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
ConnRaiseLine := TOrthoLine(AConn.JoinedOrtholinesList[i]);
if TOrthoLine(AConn.JoinedOrtholinesList[i]).FIsVertical then
begin
if VLine1 = Nil then
VLine1 := TOrthoLine(AConn.JoinedOrtholinesList[i])
else
begin
if TOrthoLine(AConn.JoinedOrtholinesList[i]).ID <> VLine1.Id then
VLine2 := TOrthoLine(AConn.JoinedOrtholinesList[i]);
end;
end;
// åñëè íå äâèãàåì õîòü îäíó òðàññó -- íàõ (íóæíî çàïèñàòü ñîåäèíåíèå)
if (not TOrthoLine(AConn.JoinedOrtholinesList[i]).FIsRaiseUpDown) and
(not TOrthoLine(AConn.JoinedOrtholinesList[i]).FIsVertical) and
(SelectedList.IndexOf(TOrthoLine(AConn.JoinedOrtholinesList[i])) = -1) then
Exit;
end;
//åñòü ëè ðàéç
if ConnRaiseLine <> nil then
begin
NextRaiseConn := Nil;
if TConnectorObject(ConnRaiseLine.JoinConnector1).ID <> aConn.ID then
NextRaiseConn := TConnectorObject(ConnRaiseLine.JoinConnector1)
else
if TConnectorObject(ConnRaiseLine.JoinConnector2).ID <> aConn.ID then
NextRaiseConn := TConnectorObject(ConnRaiseLine.JoinConnector2);
if NextRaiseConn <> nil then
begin
// ïèøåì, åñëè ïîïàäåì íà âòîðîé êîííåêòîð ðàéçà
if CompareValue(NextRaiseConn.ActualZOrder[1],RaiseHeight) = 0 then
Exit;
end;
end;
{for i := 0 to AConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(AConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
if TConnectorObject(TOrthoLine(AConn.JoinedOrtholinesList[i]).JoinConnector1).ID <> aConn.ID then
NextRaiseConn := TConnectorObject(TOrthoLine(AConn.JoinedOrtholinesList[i]).JoinConnector1)
else
if TConnectorObject(TOrthoLine(AConn.JoinedOrtholinesList[i]).JoinConnector2).ID <> aConn.ID then
NextRaiseConn := TConnectorObject(TOrthoLine(AConn.JoinedOrtholinesList[i]).JoinConnector2);
if NextRaiseConn <> nil then
begin
//åñëè íå ïîïàäåì íà âåðøèíó ðàéçà - íå ïèøåì
if CompareValue(NextRaiseConn.ActualZOrder[1], RaiseHeight) <> 0 then
Result := False;
end;
Exit; // åñëè åñòü ðàéç -- âåðòèêàëåé íå áóäåò
end;
end;}
if Result then
begin
// íåò íè ðàéçà íè âåðòèêàëè è âñå òðàññû ñäâèãàþòñÿ â äàííîé òî÷êå îäíîâðåìåííî
if (ConnRaiseLine = nil) and (VLine1 = nil) then
Result := False
else
// åñòü âåðòèêàëü (èëè äâå)
if (ConnRaiseLine = nil) and (VLine1 <> nil) then
begin
// íàïðàâëåíèå ñäâèãà
if CompareValue(aConn.ActualZOrder[1], RaiseHeight) = -1 then
DirectionUP := True
else
if CompareValue(aConn.ActualZOrder[1], RaiseHeight) = 1 then
DirectionDown := True;
// åñëè âåðòèêàëü -- îäíà, ñìîòðèì, íå ïîïàäåì ëè íà êîííåêòîð âåðòèêàëè
if VLine2 = nil then
begin
// íå ïîïàäåì íà êîííåêòîð
if (CompareValue(TConnectorObject(VLine1.JoinConnector1).ActualZOrder[1], RaiseHeight) <> 0) and
(CompareValue(TConnectorObject(VLine1.JoinConnector2).ActualZOrder[1], RaiseHeight) <> 0) then
begin
// ïðîâåðèòü ïîïàäàíèå íà âåðòèêàëü ÷åðåç êîííåêòîð
if DirectionUP then
begin
VLineConn1 := TConnectorObject(VLine1.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine1.JoinConnector2).ActualZOrder[1]) = -1 then
VLineConn1 := TConnectorObject(VLine1.JoinConnector2);
if VLineConn1.JoinedConnectorsList.Count > 0 then
VLineConn1 := TConnectorObject(VLineConn1.JoinedConnectorsList[0]);
if VLineConn1.ConnectorType = ct_Clear then
begin
for i := 0 to VLineConn1.JoinedOrthoLinesList.Count - 1 do
begin
if (TOrthoLine(VLineConn1.JoinedOrthoLinesList[i]).FisVertical and
(TOrthoLine(VLineConn1.JoinedOrthoLinesList[i]).Id <> VLine1.Id)) then
exit;
end;
end
else
begin
for i := 0 to VLineConn1.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList[j]).FIsVertical and
(TOrthoLine(TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList[j]).ID <> VLine1.Id) then
;
end;
end;
end;
end
else
if DirectionDown then
begin
VLineConn1 := TConnectorObject(VLine1.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine1.JoinConnector2).ActualZOrder[1]) = 1 then
VLineConn1 := TConnectorObject(VLine1.JoinConnector2);
if VLineConn1.JoinedConnectorsList.Count > 0 then
VLineConn1 := TConnectorObject(VLineConn1.JoinedConnectorsList[0]);
if VLineConn1.ConnectorType = ct_Clear then
begin
for i := 0 to VLineConn1.JoinedOrthoLinesList.Count - 1 do
begin
if (TOrthoLine(VLineConn1.JoinedOrthoLinesList[i]).FisVertical and
(TOrthoLine(VLineConn1.JoinedOrthoLinesList[i]).Id <> VLine1.Id)) then
exit;
end;
end
else
begin
for i := 0 to VLineConn1.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList[j]).FIsVertical and
(TOrthoLine(TConnectorObject(VLineConn1.JoinedConnectorsList[i]).JoinedOrtholinesList[j]).ID <> VLine1.Id) then
Exit;
end;
end;
end;
end;
// íå ïîïàëè íà âåðòèêàëü (ïåðåâîðîò âåðòèêàëè)
for i := 0 to aConn.JoinedOrtholinesList.Count - 1 do
begin
if (not TOrthoLine(aConn.JoinedOrtholinesList[i]).FIsRaiseUpDown) and
(not TOrthoLine(aConn.JoinedOrtholinesList[i]).FIsVertical) and
(SelectedList.IndexOf(TOrthoLine(aConn.JoinedOrtholinesList[i])) = -1) then
Exit;
end;
Result := False;
exit;
end
else
// íà êîííåêòîð
begin
exit;
end;
end
else
// åñëè 2 âåðòèêàëè - ñìîòðèì, ïîïàäåì ëè íà êîííåêòîð âåðòèêàëè èëè ìîæåì ëè ìû â ðåçóëüòàòå
// ïåðåìåùåíèÿ åãî ïåðåïðûãíóòü (åñëè íåò - ïèñàòü òîæå íè÷åãî íå íóæíî)
begin
if DirectionUP then
begin
//áåðåì ñàìûé âåðõíèé êîííåêòîð
VLineConn1 := TConnectorObject(VLine1.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine1.JoinConnector2).ActualZOrder[1]) = -1 then
VLineConn1 := TConnectorObject(VLine1.JoinConnector2);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine2.JoinConnector1).ActualZOrder[1]) = -1 then
VLineConn1 := TConnectorObject(VLine2.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine2.JoinConnector2).ActualZOrder[1]) = -1 then
VLineConn1 := TConnectorObject(VLine2.JoinConnector2);
// åñëè íå äîòÿãèâàåì äî íåãî -- ïèñàòü íå íóæíî
if CompareValue(VLineConn1.ActualZOrder[1], RaiseHeight) = 1 then
begin
Result := False;
exit;
end;
end
else
if DirectionDown then
begin
//áåðåì ñàìûé íèæíèé êîííåêòîð
VLineConn1 := TConnectorObject(VLine1.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine1.JoinConnector2).ActualZOrder[1]) = 1 then
VLineConn1 := TConnectorObject(VLine1.JoinConnector2);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine2.JoinConnector1).ActualZOrder[1]) = 1 then
VLineConn1 := TConnectorObject(VLine2.JoinConnector1);
if CompareValue(VLineConn1.ActualZOrder[1], TConnectorObject(VLine2.JoinConnector2).ActualZOrder[1]) = 1 then
VLineConn1 := TConnectorObject(VLine2.JoinConnector2);
// åñëè íå äîòÿãèâàåì äî íåãî -- ïèñàòü íå íóæíî
if CompareValue(VLineConn1.ActualZOrder[1], RaiseHeight) = -1 then
begin
Result := False;
exit;
end;
end;
end;
end;
end;
end;
begin
if aLine <> nil then
begin
CanMoveLineConnector1 := False;
CanMoveLineConnector2 := False;
CanSaveLineConnector1 := False;
CanSaveLineConnector2 := False;
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð2
if ((aLine.JoinConnector1 <> nil) and
(CompareValue(TConnectorObject(aLine.JoinConnector1).ActualZOrder[1], RaiseHeight) <> 0)) then
CanMoveLineConnector1 := True;
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð2
if ((aLine.JoinConnector2 <> nil) and
(CompareValue(TConnectorObject(aLine.JoinConnector2).ActualZOrder[1], RaiseHeight) <> 0)) then
CanMoveLineConnector2 := True;
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(aLine.ID);
if LineCatalog <> nil then
begin
CanSaveThisTrace := False;
// åñòü ëè êàáåëü è íóæíî ëè ñîõðàíÿòü êàáåëüíûå ñîåäèíåíèÿ
if LineCatalog.ComponentReferences.Count > 0 then
begin
for i := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[i]);
if (IsCableComponent(SCSCompon) and (SCScompon.JoinedComponents.Count > 0)) then
begin
CanSaveThisTrace := True;
// åñëè åñòü êàáåëü è ñîåäèíåíèÿ íóæíî ñîõðàíÿòü -- äîáàâèòü òðàññó â ñïèñîê äëÿ ïîñëåäóþùåãî âîññòàíîâëåíèÿ
SavedTraceList.Add(aLine);
if SavedLineList.IndexOf(aLine) = -1 then
SavedLineList.Add(aLine);
Break; //// BREAK ////
end;
end;
if CanSaveThisTrace then
begin
if SavedTraceList.IndexOf(LineCatalog) = -1 then
SavedTraceList.Add(LineCatalog);
if CanMoveLineConnector1 then
CanSaveLineConnector1 := CheckCanSaveOnLineConnector(TConnectorObject(aLine.JoinConnector1));
if CanMoveLineConnector2 then
CanSaveLineConnector2 := CheckCanSaveOnLineConnector(TConnectorObject(aLine.JoinConnector2));
for i := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[i]);
if (IsCableComponent(SCSCompon) and (SCSCompon.JoinedComponents.Count > 0)) then
begin
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð1 - ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ äî ...
if (CanMoveLineConnector1 and CanSaveLineConnector1) then
begin
CheckSaveLineConnectionsBySide(aLine, SCSCompon, 1);
end;
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð2 - ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ äî ...
if (CanMoveLineConnector2 and CanSaveLineConnector2) then
begin
CheckSaveLineConnectionsBySide(aLine, SCSCompon, 2);
end;
end;
end;
end;
end;
end;
// ñîõðàíèòü îñòàëüíûå ñîåäèíåíèÿ íà êîííåêòîðå
{ if CanMoveLineConnector1 then
begin
for i := 0 to TConnectorObject(aLine.JoinConnector1).JoinedOrtholinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(TConnectorObject(aLine.JoinConnector1).JoinedOrtholinesList[i]);
if ((not JoinedLine.FIsRaiseUpDown) and (not JoinedLine.FIsVertical) and (JoinedLine.ID <> aLine.Id) and
(SelectedList.IndexOf(JoinedLine) <> - 1)) then
begin
CanSaveThisTrace := False;
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(JoinedLine.ID);
if LineCatalog <> nil then
begin
// åñòü ëè êàáåëü è íóæíî ëè ñîõðàíÿòü êàáåëüíûå ñîåäèíåíèÿ
if LineCatalog.ComponentReferences.Count > 0 then
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[j]);
if (IsCableComponent(SCSCompon) and (SCScompon.JoinedComponents.Count > 0)) then
begin
CanSaveThisTrace := True;
// åñëè åñòü êàáåëü è ñîåäèíåíèÿ íóæíî ñîõðàíÿòü -- äîáàâèòü òðàññó â ñïèñîê äëÿ ïîñëåäóþùåãî âîññòàíîâëåíèÿ
if SavedTraceList.IndexOf(JoinedLine) = -1 then
SavedTraceList.Add(JoinedLine);
Break; //// BREAK ////
end;
end;
end;
if CanSaveThisTrace then
begin
if SavedLineList.IndexOf(JoinedLine) = -1 then
SavedLineList.Add(JoinedLine);
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[j]);
if (IsCableComponent(SCSCompon) and (SCSCompon.JoinedComponents.Count > 0)) then
begin
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð1 - ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ äî ...
if TConnectorObject(JoinedLine.JoinConnector1).Id = TConnectorObject(aLine.JoinConnector1).ID then
CheckSaveLineConnectionsBySide(JoinedLine, SCSCompon, 1)
else
if TConnectorObject(JoinedLine.JoinConnector2).Id = TConnectorObject(aLine.JoinConnector1).ID then
CheckSaveLineConnectionsBySide(JoinedLine, SCSCompon, 2);
end;
end;
end;
end;
end;
end;
end;
if CanMoveLineConnector2 then
begin
for i := 0 to TConnectorObject(aLine.JoinConnector2).JoinedOrtholinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(TConnectorObject(aLine.JoinConnector2).JoinedOrtholinesList[i]);
if ((not JoinedLine.FIsRaiseUpDown) and (not JoinedLine.FIsVertical) and (JoinedLine.ID <> aLine.Id) and
(SelectedList.IndexOf(JoinedLine) <> - 1)) then
begin
CanSaveThisTrace := False;
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(JoinedLine.ID);
if LineCatalog <> nil then
begin
// åñòü ëè êàáåëü è íóæíî ëè ñîõðàíÿòü êàáåëüíûå ñîåäèíåíèÿ
if LineCatalog.ComponentReferences.Count > 0 then
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[j]);
if (IsCableComponent(SCSCompon) and (SCScompon.JoinedComponents.Count > 0)) then
begin
CanSaveThisTrace := True;
// åñëè åñòü êàáåëü è ñîåäèíåíèÿ íóæíî ñîõðàíÿòü -- äîáàâèòü òðàññó â ñïèñîê äëÿ ïîñëåäóþùåãî âîññòàíîâëåíèÿ
if SavedTraceList.IndexOf(JoinedLine) = -1 then
SavedTraceList.Add(JoinedLine);
if SavedLineList.IndexOf(JoinedLine) = -1 then
SavedLineList.Add(JoinedLine);
Break; //// BREAK ////
end;
end;
end;
if CanSaveThisTrace then
begin
if SavedTraceList.IndexOf(LineCatalog) = -1 then
SavedTraceList.Add(LineCatalog);
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
SCSCompon := TSCSComponent(LineCatalog.ComponentReferences[j]);
if (IsCableComponent(SCSCompon) and (SCSCompon.JoinedComponents.Count > 0)) then
begin
// åñëè áóäåì ïîäíèìàòü/îïóñêàòü êîííåêòîð1 - ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ äî ...
if TConnectorObject(JoinedLine.JoinConnector1).Id = TConnectorObject(aLine.JoinConnector2).ID then
CheckSaveLineConnectionsBySide(JoinedLine, SCSCompon, 1)
else
if TConnectorObject(JoinedLine.JoinConnector2).Id = TConnectorObject(aLine.JoinConnector2).ID then
CheckSaveLineConnectionsBySide(JoinedLine, SCSCompon, 2);
end;
end;
end;
end;
end;
end;
end;
}
end;
end;
Procedure CheckDisJoinLineComponBySide(aLineCompon: TSCSComponent; ASide: Integer);
var i, j: Integer;
Interf: TSCSInterface;
InterfPos: TSCSInterfPosition;
JoinedComponList: TList;
begin
JoinedComponList := TList.Create;
for i := 0 to aLineCompon.Interfaces.Count - 1 do
begin
Interf := TSCSInterface(aLineCompon.Interfaces[i]);
if ((Interf.TypeI = itFunctional) and (Interf.Side = aSide)) then
begin
for j := 0 to Interf.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(Interf.BusyPositions[j]);
InterfPos := InterfPos.GetConnectedPos;
if InterfPos <> nil then
begin
if JoinedComponList.IndexOf(InterfPos.InterfOwner.ComponentOwner) = -1 then
JoinedComponList.Add(InterfPos.InterfOwner.ComponentOwner);
end;
end;
end;
end;
for i := 0 to JoinedComponList.Count - 1 do
aLineCompon.DisJoinFrom(TSCSComponent(JoinedComponList[i]));
FreeAndNil(JoinedComponList);
end;
Procedure RestoreLineConnectionsBySide(aLine: TOrthoLine; ACableCompon: TSCSComponent; aSide: Integer);
var i, j, k, l, m: Integer;
TargetLine, TargetPointFigure: TFigure;
WayList: TList;
SelfConnector, TargetConn: TConnectorObject;
TargetCatalog: TSCSCatalog;
IdNewCompon: Integer;
TargetCompon, NewCompon, FirstCompon, NextCompon: TSCSComponent;
PassWayList: Boolean; // ïðîêëàäûâàòü êàáåëü íà âåðòèêàëè/ðàéçû
ComponJoinedByMultiInterFace: TSCSComponent;
CanRestoreConnection: Boolean;
DisJoinSide: Integer;
DisJoinComponList: TList;
SideConnectionDropped: Boolean;
Function GetInterfaceForConnection(AInterf: TSCSInterFace; WasConnectedCable, isConnectedCable: TSCSComponent; aPointObject: TConnectorObject): TSCSInterFace;
var i, j, k: Integer;
LineCompon: TSCSComponent;
LineFigure: TOrthoLine;
LineCatalog: TSCSCatalog;
SourceLineCatalog, DestLineCatalog: TSCSCatalog;
ConnectionSide : Integer;
TmpInterfPos: TSCSInterfPosition;
begin
Result := nil;
LineCatalog := Nil;
ConnectionSide := 0;
LineCompon := isConnectedCable;//AInterf.ComponentOwner;
if LineCompon <> nil then
begin
LineCatalog := LineCompon.GetFirstParentCatalog;
if LineCatalog <> nil then
begin
LineFigure := TOrthoLine(GetFigurebyCatalogID(LineCatalog.SCSID));
if LineFigure <> nil then
begin
if (TConnectorObject(LineFigure.JoinConnector1).JoinedConnectorsList.IndexOf(aPointObject) <> -1) or
(TConnectorObject(LineFigure.JoinConnector1).ID = aPointObject.ID) then
ConnectionSide := 1
else
if (TConnectorObject(LineFigure.JoinConnector2).JoinedConnectorsList.IndexOf(aPointObject) <> -1) or
(TConnectorObject(LineFigure.JoinConnector2).ID = aPointObject.ID) then
ConnectionSide := 2;
for j := 0 to LineCompon.Interfaces.Count - 1 do
begin
if TSCSInterface(LineCompon.Interfaces[j]).TypeI = itFunctional then
if TSCSInterface(LineCompon.Interfaces[j]).Npp = AInterf.Npp then
// âòîðàÿ ñòîðîíà èäèí õ çàíÿòà óæå ...(åñëè íå îáðûâ êàáåëÿ)
if TSCSInterface(LineCompon.Interfaces[j]).Side = ConnectionSide then
if ((TSCSInterface(LineCompon.Interfaces[j]).IsBusy = biFalse) or
(TSCSInterface(LineCompon.Interfaces[j]).BusyPositions.Count = 0)) then
begin
Result := TSCSInterface(LineCompon.Interfaces[j]);
break;
end;
end;
end;
end;
{SourceLineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(ALine.ID);
if SourceLineCatalog <> nil then
begin
for i := 0 to SourceLineCatalog.ComponentReferences.Count - 1 do
begin
if (TSCSComponent(SourceLineCatalog.ComponentReferences[i]).ID = LineCompon.ID) then
begin
DestLineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(AddLine.ID);
if DestLineCatalog <> nil then
begin
if i <= (DestLineCatalog.ComponentReferences.Count - 1) then
begin
LineCompon := DestLineCatalog.ComponentReferences[i];
if LineCompon <> nil then
begin
// Difining ConnectionSide
{ for j := 0 to LineCompon.Interfaces.Count - 1 do
begin
ConnectionSide := 2;
if TSCSInterface(LineCompon.Interfaces[j]).TypeI = itFunctional then
if TSCSInterface(LineCompon.Interfaces[j]).BusyPositions.Count > 0 then
begin
for k := 0 to TSCSInterface(LineCompon.Interfaces[j]).BusyPositions.Count - 1 do
begin
TmpInterfPos := TSCSInterface(LineCompon.Interfaces[j]).BusyPositions[k];
TmpInterfPos := TmpInterfPos.GetConnectedPos;
if TSCSComponent(TmpInterfPos.InterfOwner.ComponentOwner).IsLine = biTrue then
begin
if TmpInterfPos.InterfOwner.Side = 2 then
ConnectionSide := 1;
break;
end;
end;
end;
end;}
{ end;
end;
end;
Break; //// BREAK ////;
end;
end;
end; }
end;
end;
Function DefineIDComponRel(ALineCompon, APointCompon: TSCSComponent): Integer;
var
TopCatalog: TSCSCatalog;
begin
Result := -1;
begin
TopCatalog := aLineCompon.GetTopParentCatalog;
if TopCatalog <> nil then
if TopCatalog is TSCSProject then
Result := TSCSProject(TopCatalog).GenIDByGeneratorIndex(giComponentRelationID, 1);
end;
//if IDComponRel = -1 then
//IDComponRel := TF_Main(ActiveForm).AppendToComponRel(Self.ID, AComponent.ID, 1, AConnectType);
end;
begin
WayList := nil;
SelfLineConnectInfo := Nil;
SelfConnector := nil;
TargetConn := Nil;
PassWayList := True;
DisJoinComponList := nil;
CanRestoreConnection := True;
SideConnectionDropped := False;
While CanRestoreconnection do
begin
CanRestoreConnection := False;
for i := 0 to SavedLineConnectionsList.Count - 1 do
begin
if ((TLineComponConnectionInfo(SavedLineConnectionsList[i]).ComponId = ACableCompon.ID) and
(TLineComponConnectionInfo(SavedLineConnectionsList[i]).ComponSide = aSide)) then
begin
SelfLineConnectInfo := TLineComponConnectionInfo(SavedLineConnectionsList[i]);
CanRestoreConnection := True;
Break; //// BREAK ////;
end;
end;
if SelfLineConnectInfo <> nil then
begin
if not SideConnectionDropped then
begin
CheckDisJoinLineComponBySide(ACableCompon, aSide);
SideConnectionDropped := True;
end;
if SelfLineConnectInfo.ComponSide = 1 then
SelfConnector := TConnectorObject(aLine.JoinConnector1)
else
if SelfLineConnectInfo.ComponSide = 2 then
SelfConnector := TConnectorObject(aLine.JoinConnector2);
if SelfConnector <> nil then
begin
// for i := 0 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
FirstCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(SelfLineConnectInfo.ComponId);
JoinedLineConnectInfo := TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[0]);
TargetCompon := nil;
if SelfLineConnectInfo.isLineConnection then
TargetCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if FirstCompon <> nil then
begin
// ïðîèçîøëî ðàçäåëåíèå âåðòèêàëè
if TargetCompon = nil then
begin
TargetCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferences(JoinedLineConnectInfo.ComponCatalogID);
end
else
if TargetCompon <> nil then
TargetCatalog := TargetCompon.GetFirstParentCatalog;
// ëèíåéíîå ñîåäèíåíèå (êàáåëü -- êàáåëü)
{ if TargetCompon.IsLine = biTrue then
begin
TargetCatalog := TargetCompon.GetFirstParentCatalog;}
if TargetCatalog <> nil then
begin
TargetLine := GetFigureByCatalogID(TargetCatalog.SCSID);
if TargetLine <> nil then
begin
TargetConn := Nil;
if CheckFigureByClassName(TargetLine, cTOrthoLine) then
begin
// ëèíåéíîíå ïîäêëþ÷åíèå
if JoinedLineConnectInfo.ComponSide = 1 then
TargetConn := TConnectorObject(TOrthoLine(TargetLine).JoinConnector1)
else
if JoinedLineConnectInfo.ComponSide = 2 then
TargetConn := TConnectorObject(TOrthoLine(TargetLine).JoinConnector2);
end
else
if CheckFigureByClassName(TargetLine, CTConnectorObject) then
begin
// òî÷å÷íîå ïîäêëþ÷åíèå
TargetPointfigure := TargetLine;
if JoinedLineConnectInfo.ComponSide = 0 then
begin
TargetConn := TConnectorObject(TargetLine);
end;
end;
if TargetConn <> nil then
begin
// åñëè ïðîèçîøëî ðàçäåëåíèå âåðòèêàëè - íàéòè êîííåêòîð îò âûñîòû ïîäúåìà
WayList := GetAllTraceInCAD(TFigure(SelfConnector), TFigure(TargetConn));
if WayList <> nil then
begin
// óäàëèòü íåâåðòèêàëè è íåðàéçû èç ïóòè
for j := (WayList.Count - 1) downto 0 do
begin
if CheckFigureByClassName(TFigure(WayList[j]), cTOrthoLine) then
begin
if ((not TOrthoLine(WayList[j]).FIsVertical) and (not TOrthoLine(WayList[j]).FIsRaiseUpDown)) then
WayList.Delete(j);
end
{else
WayList.Delete(j);}
end;
// ïðîêëàäêà êàáåëÿ (òîëüêî íà ðàéç èëè íà âåðòèêàëè)
for j := 0 to WayList.Count - 1 do
begin
TargetLine := TFigure(WayList[j]);
if CheckFigureByClassName(TargetLine, CTOrthoLine) then
begin
if ((TOrthoLine(TargetLine).FIsVertical) or (TOrthoLine(TargetLine).FIsRaiseUpDown)) then
begin
TargetCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TargetLine.ID);
if TargetCatalog <> nil then
begin
NewCompon := Nil;
// âêèíóòü êàáåëü íà òðàññó
NewCompon := CopyComponentToPMSCSObject(ACableCompon, TargetCatalog, False);
// ðàññîåäèíèòü äîáàâëåííûé êàáåëü îò âñåãî, ê ÷åìó ïîäêëþ÷èëñÿ àâòîìàòîì
if NewCompon <> nil then
NewCompon.DisJoinFromAll(false).Free;
end;
end;
end;
end;
end;
end;
end;
// FirstCompon := TargetCompon;
// ñîåäèíèòü êàáåëè
if WayList <> nil then
begin
if WayList.Count > 0 then
begin
//FirstCompon := aCableCompon;
for j := 0 to WayList.count - 1 do
begin
TargetLine := TFigure(WayList[j]);
if CheckFigureByClassName(TargetLine, cTOrthoLine) then
begin
if TOrthoLine(TargetLine).FIsVertical or TOrthoLine(TargetLine).FIsRaiseUpDown then
begin
TargetCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TargetLine.ID);
if TargetCatalog <> nil then
begin
NewCompon := TargetCatalog.LastAddedComponent;
if NewCompon <> nil then
begin
if FirstCompon.JoinedComponents.IndexOf(NewCompon) = -1 then
ConnectCableComponents(FirstCompon, NewCompon);
// åñëè íà ìóëüòèèíòåðôåéñå
if ((j = 0) and (SelfLineConnectInfo.ConnectedComponList.Count > 1)) then
begin
for k := 1 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
ComponJoinedByMultiInterFace := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[k]).ComponId);
if ComponJoinedByMultiInterFace <> nil then
begin
if NewCompon.JoinedComponents.IndexOf(ComponJoinedByMultiInterFace) = -1 then
ConnectCableComponents(NewCompon, ComponJoinedByMultiInterFace);
end;
end;
end;
FirstCompon := NewCompon;
NewCompon := Nil;
end;
end;
end
else
begin
//NewCompon := aCableCompon;//F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
NewCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if NewCompon <> nil then
begin
if FirstCompon.JoinedComponents.IndexOf(NewCompon) = -1 then
ConnectCableComponents(FirstCompon, NewCompon);
// åñëè íà ìóëüòèèíòåðôåéñå
if SelfLineConnectInfo.ConnectedComponList.Count > 1 then
begin
for k := 1 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
ComponJoinedByMultiInterFace := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[k]).ComponId);
if ComponJoinedByMultiInterFace <> nil then
begin
if NewCompon.JoinedComponents.IndexOf(ComponJoinedByMultiInterFace) = -1 then
ConnectCableComponents(NewCompon, ComponJoinedByMultiInterFace);
end;
end;
end;
end;
break;
end;
end;
end;
// êîíå÷íîå ñîåäèíåíèå
//NewCompon := aCableCompon;//F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if SelfLineConnectInfo.isLineConnection then
begin
NewCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if ((NewCompon <> nil) and (FirstCompon.JoinedComponents.IndexOf(NewCompon) = -1)) then
ConnectCableComponents(FirstCompon, NewCompon);
end
else
begin
if not SelfLineConnectInfo.isLineConnection then
begin
// Restore Connection
// âîññòàíîâèòü ñîñòîÿíèå ñîåäèíåíèÿ êàáåëÿ ñ òî÷å÷íûìè êîìïîíåíòàìè
NewCompon := FirstCompon;
// åñëè êîííåêòîð óïàë íà òî÷å÷íûé îáúåêò, òî êàáåëü ìîã àâòîìàòîì ñîåäèíèòüñÿ ñ
// êîìïîíåíòàìè òî÷å÷íîãî, ïîýòîìó íóæíî èõ ðàñêîííåêòèòü äî âîññòàíîâëåíèÿ ñîåäèíåíèÿ
TargetCatalog := NewCompon.GetFirstParentCatalog;
if TargetCatalog <> nil then
begin
TargetLine := GetFigureByCatalogId(TargetCatalog.SCSID);
if TargetLine <> nil then
begin
DisJoinSide := 0;
if TConnectorObject(TOrthoLine(TargetLine).JoinConnector1).JoinedConnectorsList.IndexOf(TConnectorObject(TargetPointFigure)) <> -1 then
DisJoinSide := 1
else
if TConnectorObject(TOrthoLine(TargetLine).JoinConnector2).JoinedConnectorsList.IndexOf(TConnectorObject(TargetPointFigure)) <> -1 then
DisJoinSide := 2;
if DisJoinSide <> 0 then
begin
DisJoinComponList := TList.Create;
for i := 0 to NewCompon.Interfaces.Count - 1 do
begin
if (NewCompon.Interfaces[i].TypeI = itFunctional) and
(NewCompon.Interfaces[i].Side = DisJoinSide) then
begin
for j := 0 to NewCompon.Interfaces[i].ConnectedInterfaces.Count - 1 do
begin
if (TSCSInterface(NewCompon.Interfaces[i].ConnectedInterfaces[j]).ComponentOwner <> nil) and
(DisJoinComponList.IndexOf(TSCSInterface(NewCompon.Interfaces[i].ConnectedInterfaces[j]).ComponentOwner) = -1) then
DisJoinComponList.Add(TSCSInterface(NewCompon.Interfaces[i].ConnectedInterfaces[j]).ComponentOwner);
end;
end;
end;
for i := 0 to DisJoinComponList.Count - 1 do
begin
NewCompon.DisJoinFrom(TSCSComponent(DisJoinComponList[i]));
end;
end;
FreeAndNil(DisJoinComponList);
end;
end;
FirstCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(SelfLineConnectInfo.ComponId);
InterFaceAccordanceList := JoinedLineConnectInfo.ConnectedComponList;
if ((InterFaceAccordanceList <> nil) and (InterFaceAccordanceList.Count > 0)) then
begin
i := 0;
While (i <= (InterFaceAccordanceList.Count - 1)) do
begin
SavedLineComponList := TList(InterFaceAccordanceList[i]);
SavedPointComponList := TList(InterFaceAccordanceList[i + 1]);
for j := 0 to SavedLineComponList.Count - 1 do
begin
aTempInterf := TSCSInterface(SavedLineComponList[j]);
ALineInterFace := GetInterfaceForConnection(aTempInterf, FirstCompon, NewCompon, TConnectorObject(TargetPointFigure));
if ALineInterFace <> nil then
begin
LineCompon := ALineInterFace.ComponentOwner;
for k := 0 to SavedPointComponList.Count - 1 do
begin
APointInterFace := TSCSInterface(SavedPointComponList[k]);
PointCompon := APointInterFace.ComponentOwner;
AInterfPositions1 := ALineInterFace.GetEmptyPositions;
AInterfPositions2 := APointInterFace.GetEmptyPositions;
// óðàâíÿòü êîëè÷åñòâî ïîçèöèé äëÿ ñîåäèíåíèÿ
if AInterfPositions1.Positions.Count > AInterfPositions2.Positions.Count then
begin
While AInterfPositions1.Positions.Count <> AInterfPositions2.Positions.Count do
begin
l := AInterfPositions1.Positions.Count - 1;
AInterfPositions1.Positions.Delete(l);
end;
AInterfPositions1.DefineKolvo;
end
else
if AInterfPositions2.Positions.Count > AInterfPositions1.Positions.Count then
begin
While AInterfPositions2.Positions.Count <> AInterfPositions1.Positions.Count do
begin
l := AInterfPositions2.Positions.Count - 1;
AInterfPositions2.Positions.Delete(l);
end;
AInterfPositions2.DefineKolvo;
end;
ConnectIDCompRel := DefineIDComponRel(LineCompon, PointCompon);
// Äî òîãî êàê ñîåäèíèòü èíòåðôåéñû, íóæíî ñîåäèíèòü ñàìè êîìïîíåíòû
if LineCompon.JoinedComponents.IndexOf(PointCompon) = -1 then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
if TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.JoinWithDefineSides(LineCompon, PointCompon, false, TempInterfaces1, TempInterfaces2, true).CanConnect then;
FreeAndNil(TempInterfaces1);
FreeAndNil(TempInterfaces2);
end;
if LineCompon.JoinedComponents.IndexOf(PointCompon) <> -1 then
begin
ptrConnection := LineCompon.GetConnectionByConnected(PointCompon);
if ptrConnection <> nil then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
TempInterfaces1.Add(ALineInterFace);
TempInterfaces2.Add(APointInterFace);
InterfCount := AInterfPositions1.Kolvo;
if InterfCount > AInterfPositions2.Kolvo then
InterfCount := AInterfPositions2.Kolvo;
TF_Main(LineCompon.ActiveForm).ConnectInterfacesWithAccordance(ALineInterFace, APointInterFace,
InterfCount, InterfCount, ptrConnection.ID, cntUnion,
AInterfPositions1, AInterfPositions2, true, TempInterfaces1, TempInterfaces2);
TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.OnAfterJoinCompons(LineCompon, PointCompon, -1, -1);
end;
end;
end;
end;
end;
SavedLineComponList.Clear;
SavedPointComponList.Clear;
FreeAndNil(SavedLineComponList);
FreeAndNil(SavedPointComponList);
Inc(i,2);
end;
end;
if InterFaceAccordanceList <> nil then
begin
InterFaceAccordanceList.clear;
FreeAndNil(InterFaceAccordanceList);
end;
end;
end;
end
else
begin
//NewCompon := aCableCompon;// F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
NewCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if NewCompon <> nil then
if FirstCompon.JoinedComponents.IndexOf(NewCompon) = -1 then
ConnectCableComponents(FirstCompon, NewCompon);
// åñëè íà ìóëüòèèíòåðôåéñå
if SelfLineConnectInfo.ConnectedComponList.Count > 1 then
begin
for k := 1 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
ComponJoinedByMultiInterFace := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[k]).ComponId);
if ComponJoinedByMultiInterFace <> nil then
begin
if NewCompon.JoinedComponents.IndexOf(ComponJoinedByMultiInterFace) = -1 then
ConnectCableComponents(NewCompon, ComponJoinedByMultiInterFace);
end;
end;
end;
end;
WayList.Clear;
FreeAndNil(WayList);
end
else
begin
// åñëè ñîåäèíåíèå ëèíåéíîå
if SelfLineConnectInfo.isLineConnection then
begin
// NewCompon := aCableCompon;//F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
NewCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(JoinedLineConnectInfo.ComponId);
if NewCompon <> nil then
if FirstCompon.JoinedComponents.IndexOf(NewCompon) = - 1 then
ConnectCableComponents(FirstCompon, NewCompon);
// åñëè íà ìóëüòèèíòåðôåéñå
if SelfLineConnectInfo.ConnectedComponList.Count > 1 then
begin
for k := 1 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
ComponJoinedByMultiInterFace := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[k]).ComponId);
if ComponJoinedByMultiInterFace <> nil then
begin
if NewCompon.JoinedComponents.IndexOf(ComponJoinedByMultiInterFace) = -1 then
ConnectCableComponents(NewCompon, ComponJoinedByMultiInterFace);
end;
end;
end;
end
// åñëè êàáåëü áûë ïðèñîáà÷åí ê êîìïîíåíòàì òî÷å÷íîãî îáúåêòà - ñîåäèíèòü êàê áûëî
else
begin
end;
//
end;
end
else
begin
if not SelfLineConnectInfo.isLineConnection then
begin
TargetPointFigure := TConnectorObject(GetFigureByCatalogId(JoinedLineConnectInfo.ComponId));
if TargetPointFigure <> nil then
begin
// åñëè ÷èñòûé êîííåêòîð è íà íåì îáúåêò -- ïîëó÷èòü åãî
if (TConnectorObject(TargetPointFigure).ConnectorType = ct_clear) and
(TConnectorObject(TargetPointFigure).JoinedConnectorsList.Count > 0) then
TargetPointFigure := TFigure(TConnectorObject(TargetPointFigure).JoinedConnectorsList[0]);
WayList := GetAllTraceInCAD(TFigure(SelfConnector), TFigure(TargetPointFigure));
if WayList <> nil then
begin
// ïðîêëàäêà êàáåëÿ (òîëüêî íà ðàéç èëè íà âåðòèêàëè)
for j := 0 to WayList.Count - 1 do
begin
TargetLine := TFigure(WayList[j]);
if CheckFigureByClassName(TargetLine, CTOrthoLine) then
begin
if ((TOrthoLine(TargetLine).FIsVertical) or (TOrthoLine(TargetLine).FIsRaiseUpDown)) then
begin
TargetCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TargetLine.ID);
if TargetCatalog <> nil then
begin
NewCompon := Nil;
// âêèíóòü êàáåëü íà òðàññó
NewCompon := CopyComponentToPMSCSObject(ACableCompon, TargetCatalog, False);
// ðàññîåäèíèòü äîáàâëåííûé êàáåëü îò âñåãî, ê ÷åìó ïîäêëþ÷èëñÿ àâòîìàòîì
if NewCompon <> nil then
NewCompon.DisJoinFromAll(false).Free;
end;
end;
end;
end;
// âûïîëíèòü êàáåëüíîå ñîåäèíåíèå ïî ïóòè ñëåäîâàíèÿ
for j := 0 to WayList.count - 1 do
begin
TargetLine := TFigure(WayList[j]);
if CheckFigureByClassName(TargetLine, cTOrthoLine) then
begin
if TOrthoLine(TargetLine).FIsVertical or TOrthoLine(TargetLine).FIsRaiseUpDown then
begin
TargetCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TargetLine.ID);
if TargetCatalog <> nil then
begin
NewCompon := TargetCatalog.LastAddedComponent;
if NewCompon <> nil then
begin
if FirstCompon.JoinedComponents.IndexOf(NewCompon) = -1 then
ConnectCableComponents(FirstCompon, NewCompon);
// åñëè íà ìóëüòèèíòåðôåéñå
if ((j = 0) and (SelfLineConnectInfo.ConnectedComponList.Count > 1)) then
begin
for k := 1 to SelfLineConnectInfo.ConnectedComponList.Count - 1 do
begin
ComponJoinedByMultiInterFace := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TLineComponConnectionInfo(SelfLineConnectInfo.ConnectedComponList[k]).ComponId);
if ComponJoinedByMultiInterFace <> nil then
begin
if NewCompon.JoinedComponents.IndexOf(ComponJoinedByMultiInterFace) = -1 then
ConnectCableComponents(NewCompon, ComponJoinedByMultiInterFace);
end;
end;
end;
FirstCompon := NewCompon;
NewCompon := Nil;
end;
end;
end;
end;
end;
FreeAndNil(WayList);
end;
// Restore Connection
// âîññòàíîâèòü ñîñòîÿíèå ñîåäèíåíèÿ êàáåëÿ ñ òî÷å÷íûìè êîìïîíåíòàìè
NewCompon := FirstCompon;
FirstCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(SelfLineConnectInfo.ComponId);
InterFaceAccordanceList := JoinedLineConnectInfo.ConnectedComponList;
if ((InterFaceAccordanceList <> nil) and (InterFaceAccordanceList.Count > 0)) then
begin
i := 0;
While (i <= (InterFaceAccordanceList.Count - 1)) do
begin
SavedLineComponList := TList(InterFaceAccordanceList[i]);
SavedPointComponList := TList(InterFaceAccordanceList[i + 1]);
for j := 0 to SavedLineComponList.Count - 1 do
begin
aTempInterf := TSCSInterface(SavedLineComponList[j]);
ALineInterFace := GetInterfaceForConnection(aTempInterf, FirstCompon, NewCompon, TConnectorObject(TargetPointFigure));
LineCompon := ALineInterFace.ComponentOwner;
if ALineInterFace <> nil then
begin
for k := 0 to SavedPointComponList.Count - 1 do
begin
APointInterFace := TSCSInterface(SavedPointComponList[k]);
PointCompon := APointInterFace.ComponentOwner;
AInterfPositions1 := ALineInterFace.GetEmptyPositions;
AInterfPositions2 := APointInterFace.GetEmptyPositions;
// óðàâíÿòü êîëè÷åñòâî ïîçèöèé äëÿ ñîåäèíåíèÿ
if AInterfPositions1.Positions.Count > AInterfPositions2.Positions.Count then
begin
While AInterfPositions1.Positions.Count <> AInterfPositions2.Positions.Count do
begin
l := AInterfPositions1.Positions.Count - 1;
AInterfPositions1.Positions.Delete(l);
end;
AInterfPositions1.DefineKolvo;
end
else
if AInterfPositions2.Positions.Count > AInterfPositions1.Positions.Count then
begin
While AInterfPositions2.Positions.Count <> AInterfPositions1.Positions.Count do
begin
l := AInterfPositions2.Positions.Count - 1;
AInterfPositions2.Positions.Delete(l);
end;
AInterfPositions2.DefineKolvo;
end;
ConnectIDCompRel := DefineIDComponRel(LineCompon, PointCompon);
// Äî òîãî êàê ñîåäèíèòü èíòåðôåéñû, íóæíî ñîåäèíèòü ñàìè êîìïîíåíòû
if LineCompon.JoinedComponents.IndexOf(PointCompon) = -1 then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
if TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.JoinWithDefineSides(LineCompon, PointCompon, false, TempInterfaces1, TempInterfaces2, true).CanConnect then;
FreeAndNil(TempInterfaces1);
FreeAndNil(TempInterfaces2);
end;
if LineCompon.JoinedComponents.IndexOf(PointCompon) <> -1 then
begin
ptrConnection := LineCompon.GetConnectionByConnected(PointCompon);
if ptrConnection <> nil then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
TempInterfaces1.Add(ALineInterFace);
TempInterfaces2.Add(APointInterFace);
InterfCount := AInterfPositions1.Kolvo;
if InterfCount > AInterfPositions2.Kolvo then
InterfCount := AInterfPositions2.Kolvo;
TF_Main(LineCompon.ActiveForm).ConnectInterfacesWithAccordance(ALineInterFace, APointInterFace,
InterfCount, InterfCount, ptrConnection.ID, cntUnion,
AInterfPositions1, AInterfPositions2, true, TempInterfaces1, TempInterfaces2);
TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.OnAfterJoinCompons(LineCompon, PointCompon, -1, -1);
end;
end;
end;
end;
end;
SavedLineComponList.Clear;
SavedPointComponList.Clear;
FreeAndNil(SavedLineComponList);
FreeAndNil(SavedPointComponList);
Inc(i,2);
end;
end;
if InterFaceAccordanceList <> nil then
begin
InterFaceAccordanceList.clear;
FreeAndNil(InterFaceAccordanceList);
end;
end;
end;
end;
end;
end;
end;
SavedLineConnectionsList.Remove(SelfLineConnectInfo);
FreeAndNil(SelfLineConnectInfo);
end;
end;
end;
Procedure RestoreLineConnections(aLine: TOrthoLine);
var i, j: Integer;
LineCatalog: TSCSCatalog;
LineCompon: TSCSComponent;
SavedLine: TOrthoLine;
{ Procedure CheckDisJoinLineComponBySide(aLineCompon: TSCSComponent; ASide: Integer);
var i, j: Integer;
Interf: TSCSInterface;
InterfPos: TSCSInterfPosition;
JoinedComponList: TList;
begin
JoinedComponList := TList.Create;
for i := 0 to aLineCompon.Interfaces.Count - 1 do
begin
Interf := TSCSInterface(aLineCompon.Interfaces[i]);
if ((Interf.TypeI = itFunctional) and (Interf.Side = aSide)) then
begin
for j := 0 to Interf.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(Interf.BusyPositions[j]);
InterfPos := InterfPos.GetConnectedPos;
if InterfPos <> nil then
begin
if JoinedComponList.IndexOf(InterfPos.InterfOwner.ComponentOwner) = -1 then
JoinedComponList.Add(InterfPos.InterfOwner.ComponentOwner);
end;
end;
end;
end;
for i := 0 to JoinedComponList.Count - 1 do
aLineCompon.DisJoinFrom(TSCSComponent(JoinedComponList[i]));
FreeAndNil(JoinedComponList);
end; }
begin
if SavedLineConnectionsList.Count = 0 then
Exit;
for i := 0 to SavedLineList.Count - 1 do
begin
SavedLine := TOrthoLine(SavedLineList[i]);
if ((SavedLine <> nil) and (SavedTraceList.IndexOf(SavedLine) <> -1)) then
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(SavedLine.ID);
if LineCatalog <> nil then
begin
if SavedTraceList.IndexOf(LineCatalog) <> - 1 then
begin
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
LineCompon := TSCSComponent(LineCatalog.ComponentReferences[j]);
if (isCableComponent(LineCompon) and
(SavedComponList.IndexOF(LineCompon) <> -1)) then
begin
//CheckDisJoinLineComponBySide(LineCompon, 1);
RestoreLineConnectionsBySide(SavedLine, LineCompon, 1);
//CheckDisJoinLineComponBySide(LineCompon, 2);
RestoreLineConnectionsBySide(SavedLine, LineCompon, 2);
end;
end;
end;
end;
end;
end;
end;
//
Procedure CheckdelVLines(aLine: TOrthoLine);
var i: Integer;
LineList: TList;
CanLook: Boolean;
VLine1, vLine2 : TOrthoLine;
Procedure GetVLines(aConn: TConnectorObject);
var i, j: Integer;
currConn: TConnectorObject;
begin
currConn := aConn;
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(aConn.JoinedConnectorsList[0]);
if currConn.ConnectorType = ct_clear then
begin
if aConn.ConnectorType = ct_clear then
begin
for i := 0 to aConn.JoinedOrthoLinesList.Count - 1 do
begin
if TOrthoLine(aConn.JoinedOrthoLinesList[i]).FIsVertical then
begin
if VLine1 = nil then
VLine1 := TOrthoLine(aConn.JoinedOrthoLinesList[i])
else
if vLine2 = nil then
begin
VLine2 := TOrthoLine(aConn.JoinedOrthoLinesList[i]);
break;
end;
end;
end;
end;
end
else
if currConn.ConnectorType = ct_NB then
begin
for i := 0 to currConn.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(currConn.JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(TConnectorObject(currConn.JoinedConnectorsList[i]).JoinedOrtholinesList[j]).FIsVertical then
begin
if VLine1 = nil then
VLine1 := TOrthoLine(TConnectorObject(currConn.JoinedConnectorsList[i]).JoinedOrtholinesList[j])
else
if vLine2 = nil then
begin
vLine2 := TOrthoLine(TConnectorObject(currConn.JoinedConnectorsList[i]).JoinedOrtholinesList[j]);
Break; //// BREAK ////;
end;
end;
end;
if vLine2 <> nil then
break;
end;
end;
end;
Procedure DelVLines(vLine: TOrthoLine);
var i, j: Integer;
CanSeek:Boolean;
currConn: TConnectorObject;
currLine: TOrthoLine;
TempConn: TConnectorObject;
CandelLine: Boolean;
LineCatalog: TSCSCatalog;
procedure GetLineList;
var i, j: Integer;
Counter: Integer;
begin
Counter := 0;
While CanSeek do
begin
inc(Counter);
CanSeek := False;
if Counter > 50 then
break;
if currConn.ConnectorType = ct_clear then
begin
for i := 0 to currConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(currConn.JoinedOrtholinesList[i]).FIsVertical and
(TOrthoLine(currConn.JoinedOrtholinesList[i]).Id <> currLine.Id) then
begin
currLine := TOrthoLine(currConn.JoinedOrtholinesList[i]);
if LineList.IndexOf(currLine) = -1 then
LineList.Add(currLine);
if TOrthoLine(currConn.JoinedOrtholinesList[i]).JoinConnector1.Id <> currConn.ID then
currConn := TConnectorObject(TOrthoLine(currConn.JoinedOrtholinesList[i]).JoinConnector1)
else
if TOrthoLine(currConn.JoinedOrtholinesList[i]).JoinConnector2.Id <> currConn.ID then
currConn := TConnectorObject(TOrthoLine(currConn.JoinedOrtholinesList[i]).JoinConnector2);
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedConnectorsList[0]);
CanSeek := True;
break;
end;
end;
end
else
if currConn.ConnectorType = ct_NB then
begin
for i := 0 to currConn.JoinedConnectorsList.Count - 1 do
begin
TempConn := TConnectorObject(currConn.JoinedConnectorsList[i]);
for j := 0 to TempConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(TempConn.JoinedOrtholinesList[j]).FIsVertical and
(TOrthoLine(TempConn.JoinedOrtholinesList[j]).ID <> currLine.Id) then
begin
currLine := TOrthoLine(TempConn.JoinedOrtholinesList[j]);
if LineList.IndexOf(currLine) = -1 then
LineList.Add(currLine);
if currLine.JoinConnector1.Id <> TempConn.ID then
currConn := TConnectorObject(currLine.JoinConnector1)
else
if currLine.JoinConnector2.Id <> TempConn.ID then
currConn := TConnectorObject(currLine.JoinConnector2);
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedConnectorsList[0]);
CanSeek := True;
break;
end;
end;
if CanSeek then break;
end;
end;
end;
end;
begin
if ((vLine <> nil) and (not VLine.deleted)) then
begin
LineList.Add(vLine);
CanSeek := True;
currConn := TConnectorObject(vLine.JoinConnector1);
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedConnectorsList[0]);
currLine := vLine;
GetLineList;
currLine := VLine;
currConn := TConnectorObject(vLine.JoinConnector2);
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedConnectorsList[0]);
CanSeek := True;
GetLineList;
CanDelLine := True;
while CandelLine do
begin
CanDelLine := False;
for i := 0 to LineList.Count - 1 do
begin
currLine := TOrthoLine(LineList[i]);
if ((TConnectorObject(currLine.JoinConnector1).JoinedConnectorsList.Count = 0) and
(TConnectorObject(currLine.JoinConnector1).JoinedOrtholinesList.Count = 1)) or
((TConnectorObject(currLine.JoinConnector2).JoinedConnectorsList.Count = 0) and
(TConnectorObject(currLine.JoinConnector2).JoinedOrtholinesList.Count = 1)) then
begin
LineCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(currLine.Id);
if LineCatalog <> nil then
begin
if LineCatalog.ComponentReferences.Count = 0 then
CanDelLine := True
else
begin
CanDelLine := True;
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
//Tolik 11/11/2021 --
//if ((not TSCSComponent(LineCatalog.ComponentReferences).ServToDelete) and
if ((not TSCSComponent(LineCatalog.ComponentReferences[j]).ServToDelete) and
//
(TSCSComponent(LineCatalog.ComponentReferences[j]).ID <> 0)) then
begin
CanDelLine := False;
Break; //// BREAK ////;
end;
end;
end;
end
else
CanDelLine := True;
if CanDelLine then
begin
LineList.Remove(currLine);
if TConnectorObject(currLine.JoinConnector1).JoinedOrtholinesList.Count > 0 then
begin
TConnectorObject(currLine.JoinConnector1).JoinedOrtholinesList.Remove(currLine);
currLine.JoinConnector1 := nil;
end;
if TConnectorObject(currLine.JoinConnector2).JoinedOrtholinesList.Count > 1 then
begin
TConnectorObject(currLine.JoinConnector2).JoinedOrtholinesList.Remove(currLine);
currLine.JoinConnector2 := nil;
end;
currLine.Delete;
currLine := Nil;
break;
end;
end;
end;
end;
LineList.Clear;
end;
end;
begin
VLine1 := nil; // ïåðâàÿ âåðòèêàëü íà êîííåêòîðå
VLine2 := Nil; // âòîðàÿ âåðòèêàëü íà êîííåêòîðå
LineList := TList.Create;
GetVLines(TConnectorObject(aLine.JoinConnector1));
delVLines(VLine1);
delVLines(VLine2);
VLine1 := nil; // ïåðâàÿ âåðòèêàëü íà êîííåêòîðå
VLine2 := Nil; // âòîðàÿ âåðòèêàëü íà êîííåêòîðå
GetVLines(TConnectorObject(aLine.JoinConnector2));
delVLines(VLine1);
delVLines(VLine2);
FreeAndNil(LineList);
end;
// Tolik 04/08/2021 --
Procedure SelectAllTracesOnCad;
var i: integer;
begin
for i := 0 to GCadform.FSCSFigures.Count - 1 do
begin
if CheckFigureByClassName(TFigure(GCadform.FSCSFigures[i]), cTOrthoLine) then
begin
if not TOrthoLine(GCadForm.FSCSFigures[i]).FIsRaiseUpDown then
begin
if not TOrthoLine(GCadForm.FSCSFigures[i]).FIsVertical then
begin
if not TOrthoLine(GCadForm.FSCSFigures[i]).Selected then
TOrthoLine(GCadForm.FSCSFigures[i]).Select;
end;
end;
end;
end;
GCadForm.PCad.Refresh;
end;
//
begin
SavedUndoFlag := GlobalDisableSaveForUndo;
ProgressChecked := False;
{CanRefreshCadFlag := False;
if GCanRefreshCad then
begin
GCanRefreshCad := False;
CanRefreshCadFlag := True;
end;}
try
// Tolik 12/05/2016 -- íàõ ýòîò êóñîê ?
{try
RaiseLine := TOrthoLine(GPopupFigure);
except
RaiseLine := nil;
end;
if RaiseLine = nil then
begin
if (GPopupFigure <> nil) and CheckFigureByClassName(GPopupFigure, cTOrthoLine) then
RaiseLine := TOrthoLine(GPopupFigure);
end;}
F_RaiseHeight.cbApplyToAll.Visible := true;
if aToHeight = -1 then
begin
F_RaiseHeight.Caption := cMain_Mes32;
F_RaiseHeight.lbMessage.Caption := cMain_Mes33;
if F_RaiseHeight.Showmodal <> mrOK then
Exit;
RaiseHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
RaiseHeight := UOMToMetre(RaiseHeight);
if RaiseHeight > GCadForm.FRoomHeight then
RaiseHeight := GCadForm.FRoomHeight;
end
else
begin
RaiseHeight := aToHeight;
RaiseHeight := UOMToMetre(RaiseHeight);
if RaiseHeight > GCadForm.FRoomHeight then
RaiseHeight := GCadForm.FRoomHeight;
end;
if F_RaiseHeight.cbApplyToAll.Checked then
SelectAlltracesOnCad;
SavedTraceList := TList.Create;
SavedLineConnectionsList := TList.Create;
SavedComponList := TList.Create;
ComponToDeleteList := TSCSComponents.Create(False);
TempLineList := TList.Create;
SavedLineList:= TList.Create;
begin
CurrTick := GetTickCount;
//GCadForm.PCad.Locked := true;
//BeginProgress;
try
SelectedList := TList.Create;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
// Tolik -- 12/05/2016 -- ó÷åñòü âåðòèêàëüíûå òðàññû --
// if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
if ((not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown) and
(not TOrthoLine(GCadForm.PCad.Selection[i]).FIsVertical)) then
//
if (RaiseHeight <> TOrthoLine(FFigure).ActualZOrder[1]) or (RaiseHeight <> TOrthoLine(FFigure).ActualZOrder[2]) then
SelectedList.Add(TFigure(GCadForm.PCad.Selection[i]));
end;
if SelectedList.Count > 0 then
begin
// Tolik -- 06/12/2016 --
ProgressChecked := True; // çàëî÷èòü îêíà íà âðåìÿ ïîäúåìà òðàññ âî èçáåæàíèå..., à òî íåêîòîðûå
BeginProgress; // íåòåðïåëèâûå, íå äîæäàâøèñü çàâåðøåíèÿ ïðîöåññà, íàæèìàþò ÷òî íè ïîïàäÿ...
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
GlobalDisableSaveForUndo := True;
// Tolik -- 08//05/2016--
// ïîäðàâíÿòü êîííåêòîðû îðòîëèíèé íà òî÷å÷íûõ ïåðåä ñäâèãîì
for i := 0 to SelectedList.count - 1 do
begin
ComponToDeleteList.Clear;
RaiseLine := TOrthoLine(SelectedList[i]);
if TConnectorObject(RaiseLine.JoinConnector1).JoinedConnectorsList.Count > 0 then
begin
NB_Conn := TConnectorObject(RaiseLine.JoinConnector1).JoinedConnectorsList[0];
TConnectorObject(RaiseLine.JoinConnector1).Move(NB_Conn.ActualPoints[1].x - TConnectorObject(RaiseLine.JoinConnector1).ActualPoints[1].x,
NB_Conn.ActualPoints[1].y - TConnectorObject(RaiseLine.JoinConnector1).ActualPoints[1].y)
end;
if TConnectorObject(RaiseLine.JoinConnector2).JoinedConnectorsList.Count > 0 then
begin
NB_Conn := TConnectorObject(RaiseLine.JoinConnector2).JoinedConnectorsList[0];
TConnectorObject(RaiseLine.JoinConnector2).Move(NB_Conn.ActualPoints[1].x - TConnectorObject(RaiseLine.JoinConnector2).ActualPoints[1].x,
NB_Conn.ActualPoints[1].y - TConnectorObject(RaiseLine.JoinConnector2).ActualPoints[1].y)
end;
// ñîõðàíåíèå êàáåëüíûõ ñîåäèíåíèé äî ñäâèãà
//SaveLineConnections(RaiseLine);
end;
//
for i := 0 to SelectedList.Count - 1 do
begin
ComponToDeleteList.Clear;
//Tolik 23/11/2021 --
if i = 0 then
begin
for j := GCadForm.PCad.Selection.Count - 1 downto 0 do
begin
TFigure(GCadForm.PCad.Selection[j]).Deselect;
end;
end;
//FFigure := TFigure(SelectedList[i]);
//Tolik -- 12/05/2016 --
RaiseLine := TOrthoLine(SelectedList[i]);
//RaiseLineOnHeight(TOrthoLine(FFigure), RaiseHeight, SelectedList);
//Tolik 23/11/2021 -- ÷óòü òîðìîçíåò çà ñ÷åò ñðàâíåíèÿ âûñîò, çàòî óñêîðèòñÿ çà ñ÷åò òîãî, ÷òî íå íóæíî
// áóäåò ïîäíèìàòü òðàññû èç ñïèñêà, êîòîðûå óæå ïîäíÿëèñü çà ñ÷åò òåõ, ÷òî áûëè äî íèõ â ñïèñêå
if ((CompareValue(RaiseLine.ActualZOrder[1], RaiseHeight) <> 0) or
(CompareValue(RaiseLine.ActualZOrder[2], RaiseHeight) <> 0)) then
begin
SavedLineList.Clear;
SaveLineConnections(RaiseLine);
if ComponToDeleteList.Count > 0 then
begin
for j := 0 to ComponToDeleteList.Count - 1 do
begin
if not TSCSComponent(ComponTodeleteList[j]).ServToDelete then
TSCSComponent(ComponToDeleteList[j]).DisJoinFromAll(true).Free
else
ComponToDeleteList.Remove(TSCSComponent(ComponTodeleteList[j]));
end;
end;
{ TempLineList.Clear;
TempLineList.Add(RaiseLine);}
{ RaiseLine.Select;
if GCadForm.PCad.Selection.Indexof(RaiseLine) = -1 then
GCadForm.PCad.Selection.Add(RaiseLine);}
if Assigned(RaiseLine.JoinConnector1) and (not TConnectorObject(RaiseLine.JoinConnector1).deleted) then
begin
TConnectorObject(RaiseLine.JoinConnector1).JoinedOrthoLinesList.remove(RaiseLine);
TConnectorObject(RaiseLine.JoinConnector1).JoinedOrthoLinesList.Insert(0, RaiseLine);
end;
if Assigned(RaiseLine.JoinConnector2) and (not TConnectorObject(RaiseLine.JoinConnector2).deleted) then
begin
TConnectorObject(RaiseLine.JoinConnector2).JoinedOrthoLinesList.remove(RaiseLine);
TConnectorObject(RaiseLine.JoinConnector2).JoinedOrthoLinesList.Insert(0, RaiseLine);
end;
RaiseLineOnHeight(RaiseLine, RaiseHeight, SelectedList);
//RaiseLineOnHeight(RaiseLine, RaiseHeight, TempLineList);
//CheckDeleteAllRaises(GCadForm.PCad);
RestoreLineConnections(RaiseLine);
if ComponToDeleteList.Count > 0 then
begin
// Tolik -- 22/12/2016 --
Try
// Tolik -- 30/09/2016 --
for j := ComponTodeleteList.Count - 1 downto 0 do
begin
if ((TSCSComponent(ComponTodeleteList[j]).ServToDelete = true) or (TSCSComponent(ComponToDeleteList[j]).id = 0)) then
ComponToDeleteList.delete(j);
end;
if ComponToDeleteList.Count > 0 then
begin
for j := ComponToDeleteList.Count - 1 downto 0 do
begin
if not TSCSComponent(ComponTodeleteList[j]).ServToDelete then
TSCSComponent(ComponToDeleteList[j]).DisJoinFromAll(true).Free
else
ComponToDeleteList.Remove(TSCSComponent(ComponTodeleteList[j]));
end;
end;
F_ProjMan.DelComponentsFromList(F_ProjMan.GSCSBase.CurrProject.CurrList, ComponToDeleteList, False, biNone, false, nil);
//ComponToDeleteList.Clear;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.F_ProjMan.DelComponentsFromList', E.Message);
end;
end;
{if CanRefreshCadFlag then
begin
GCanRefreshCad := True;
end;}
// óäàëèòü íåíóæíûå âåðòèêàëè
Try
CheckDelVLines(RaiseLine);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.F_ProjMan.CheckDelVLines', E.Message);
end;
end;
//
end;
// Tolik 12/05/2016 -- âîññòàíîâëåíèå êàáåëüíûõ ñîåäèíåíèé
{for i := 0 to SelectedList.Count - 1 do
begin
RaiseLine := TOrthoLine(SelectedList[i]);
RestoreLineConnections(RaiseLine);
end;}
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
RefreshCAD(GCadForm.PCad);
// SP !!!
CheckDeleteAllRaises(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
FreeAndNil(SelectedList);
finally
//EndProgress;
//GCadForm.PCad.Locked := false;
end;
OldTick := GetTickCount - CurrTick;
OldTick := GetTickCount - CurrTick;
end;
FreeAndNil(ComponToDeleteList);
FreeAndNil(SavedTraceList);
FreeAndNil(SavedLineConnectionsList);
FreeAndNil(SavedComponList);
FreeAndNil(TempLineList);
FreeAndNil(SavedLineList);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRaiseLineExecute', E.Message);
end;
GlobalDisableSaveForUndo := SavedUndoFlag;
{if CanRefreshCadFlag then
GCanRefreshCad := True;}
if ProgressChecked then
EndProgress;
end;
// Tolik -- 01/08/2016 --
procedure TFSCS_Main.aRaiseLineExecute(Sender: TObject);
begin
RaiseSelectedLine;
end;
procedure TFSCS_Main.aMasterAutoTraceExecute(Sender: TObject);
var
IsAnyRTSelected: Boolean;
mess: string;
i: integer;
aEndPointName: string;
begin
if ActiveMDIChild <> nil then
begin
if GEndPoint = nil then
begin
// ÊÎ ÂÛÁÐÀÒÜ
F_EndPoints.Execute;
end;
if GEndPoint <> nil then
begin
// ïðîâåðèòü ìîæíî ëè òðàññèðîâàòü ïî âûáðàííûì èëè òîëüêî âî âñåì
IsAnyRTSelected := False;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
If CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
If TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_Clear then
if TConnectorObject(GCadForm.PCad.Selection[i]) <> GEndPoint then
IsAnyRTSelected := True;
end;
// ïî âûáðàííûì
if IsAnyRTSelected then
begin
if F_AutoTraceType.ShowModal = mrOK then
begin
if F_AutoTraceType.rbTraceBySelected.Checked then
GCadForm.FAutoTraceBySelected := True;
if F_AutoTraceType.rbTraceByAll.Checked then
GCadForm.FAutoTraceBySelected := False;
end
else
Exit;
end
else
// ïî âñåì
begin
aEndPointName := GetFigureFirstComponentName(GEndPoint.ID);
mess := cMain_Mes34 + aEndPointName + #13#10 + cMain_Mes35;
//if MessageBox(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes36, MB_YESNO) = IDYes then
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes36, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes36), MB_YESNO) = IDYes then
GCadForm.FAutoTraceBySelected := False
else
Exit;
end;
//*** Âûáðàòü ïîðÿäîê ïîäêëþ÷åíèÿ ïàíåëåé ñ ïîðòàìè
if Not ChoiceAutoTraceConnectOrder then
Exit; ///// EXIT /////
Show_F_InterfacesAutoTraceForm;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aReport_ListObjectsExecute(Sender: TObject);
begin
RepObjectReport;
end;
procedure TFSCS_Main.aReport_ResorcesExecute(Sender: TObject);
begin
RepResourceReport;
end;
procedure TFSCS_Main.aReport_CablesExecute(Sender: TObject);
begin
RepCableReport;
end;
procedure TFSCS_Main.aCreateObjectOnClickExecute(Sender: TObject);
begin
if aCreateObjectOnClick.Checked = True then
begin
GCadForm.FCreateObjectOnClick := True;
GCadForm.PCad.SetCursor(crDrag);
end;
if aCreateObjectOnClick.Checked = False then
begin
GCadForm.FCreateObjectOnClick := False;
GCadForm.PCad.SetCursor(crDefault);
end;
RefreshCAD(GCadForm.PCad);
end;
procedure TFSCS_Main.aDeleteSCSObjectExecute(Sender: TObject);
var
i: integer;
FFigure,Selfigure: TFigure;
mess: string;
vList: TList;
vIntList: TIntList;
FigID: Integer;
ListID: Integer;
Node: TTreeNode;
Obj: PObjectData;
DelComponMode: TDelComponMode;
vListCad: TF_CAD;
CurrCatalog: TSCSCatalog;
CurrComponent: TSCSComponent;
//Tolik
SCSCatalog : TSCSCatalog;
SCSComponent : TSCSComponent;
j: integer;
NeedInputBox: boolean;
// 18/11/2016--
DelRaiseFromPointObject: Boolean;
//
// Tolik -- 21/04/2017 --
RefreshFlag: Boolean;
DelFiguresList: TList;
DelCableFromPoint: Boolean; // Tolik 24/05/2021 --
ListCount: integer;
//
function CanDelRaiseFromPointObject(aConn: TConnectorObject): Boolean;
var i, j: Integer;
JoinedLine : TOrthoLine;
begin
Result := True;
if aConn.ConnectorType <> ct_Nb then
exit;
for i := 0 to aConn.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(aConn.JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(TConnectorObject(aConn.JoinedConnectorsList[i]).JoinedOrtholinesList[j]);
if (not JoinedLine.FIsRaiseUpDown) and (not JoinedLine.Deleted) and (not JoinedLine.Selected) then
begin
Result := False;
break;
end;
end;
if not Result then
break;
end;
end;
{ // Tolik 26/05/2021 -- âûíåñåíî â U_Common (è ïåðåäåëàíî ÷óòü-÷óòü)
// Tolik 11/07/2019 - -
function CheckNeedInputBox: boolean;
var i: Integer;
function DoesHaveFigureConnectedCable(aFigure: TFigure): Boolean;
var i, j: Integer;
FigCatalog: TSCSCatalog;
ChildCompon: TSCSComponent;
JoinedCompon: TSCSComponent; // Tolik 24/05/2021 --
begin
Result := false;
if FFigure = nil then
exit;
if FFigure.Deleted then
exit;
if CheckFigureByClassName(aFigure, cTOrthoLine) then
begin
FigCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(aFigure.ID);
if FigCatalog <> nil then
begin
for i := 0 to FigCatalog.ComponentReferences.Count - 1 do
begin
ChildCompon := TSCSComponent(FigCatalog.ComponentReferences[i]);
if IsCableComponent(ChildCompon) then
begin
childCompon.LoadWholeComponent(false);
if ChildCompon.WholeComponent.Count > 1 then
begin
Result := True;
break;
end;
end;
end;
end;
end
//Tolik 24/05/2021 --
else
if CheckFigureByClassName(aFigure, cTConnectorObject) then
begin
FigCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(aFigure.ID);
if FigCatalog <> nil then
begin
for i := 0 to FigCatalog.ComponentReferences.Count - 1 do
begin
ChildCompon := TSCSComponent(FigCatalog.ComponentReferences[i]);
for j := 0 to ChildCompon.JoinedComponents.Count - 1 do
begin
JoinedCompon := ChildCompon.JoinedComponents[j];
if IsCableComponent(JoinedCompon) then
begin
Result := True;
break;
end;
end;
end;
end;
end
//
end;
begin
Result := DoesHaveFigureConnectedCable(FFigure);
if not Result then
begin
if GCadForm <> nil then
begin
if GCadForm.PCad.Selection.Count > 1 then
begin
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
begin
Result := DoesHaveFigureConnectedCable(TFigure(GCadForm.PCad.Selection[i]));
if Result then
break;
end;
end;
end;
end;
end;
//
}
begin
DelCableFromPoint := False; // Tolik 24/05/2021 -- óäàëÿòü êàáåëè, ïîäêëþ÷åííûå ê òî÷å÷íûì óäàëÿåìûì îáúåêòàì
// Tolik -- 07/02/2017 --
vList := nil;
//
// Toilk 21/04/2017 --
RefreshFlag := GCanRefreshCad;
GCanRefreshCad := False;
DelFiguresList := TList.Create;
BeginProgress('', -1, False);
//
try
if GPopupFigure = nil then
//Tolik 12/05/2017 --
//exit;
begin
DelFiguresList.free;
GCanRefreshCad := RefreshFlag;
exit;
end;
//
try
FFigure := GPopupFigure;
except
FFigure := nil;
end;
mess := cCad_Mes11;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cCad_Mes12, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cCad_Mes12), MB_YESNO) = IDYes then
begin
{ Node := GetTreeNodeByID(FFigure.ID);
if node <> nil then
begin
Obj := Node.Data;
with F_ProjMan do
begin
case Obj.ComponKind of
ckCompon:
Act_DelComponent.Execute;
end;
end;
end; }
DelComponMode := dmTrace;
// Tolik 11/07/2019 --
// âîîáùå-òî çäåñü ïðåäïîëàãàëîñü ñäåëàòü ïðîâåðêó íà óäàëåíèå êàáåëÿ (åñëè åñòü) ïî âñåé òðàññå
// à íàïèñàëè ÷åðòå-÷òî .... âîò, ïðèøëîñü ïîïðàâèòü, à òî âûäàâàëî ñîîáùåíèå íà óäàëåíèå êîìïîíåíòà
// ïî âñåé òðàññå êàê äëÿ òðàññ, òàê è äëÿ ñ/ï íåçàâèñèìî îò òîãî, åñòü òàì êàáåëü èëè íåò...(íåõîðîøî)
{
NeedInputBox := False;
if (FFigure <> nil)and(CheckFigureByClassName(FFigure,cTOrthoLine)) then
NeedInputBox := true;
if not NeedInputBox then
begin
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
Selfigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(Selfigure, cTOrthoLine) then
begin
NeedInputBox := true;
break;
end;
end;
end;
}
NeedInputBox := CheckNeedInputBox; // Tolik 11/07/2019 -- âîò, ñîáñòâåííî, è âñÿ ïðîâåðêà!
// ----
if NeedInputBox then
begin
// if F_ProjMan.GSCSBase.SCSComponent <> nil then
// if Trim(F_ProjMan.GSCSBase.SCSComponent.Name) <> '' then
DelComponMode := F_ProjMan.F_InputBox.ChoiceDelComponMode(''{F_ProjMan.GSCSBase.SCSComponent.Name});
DelCableFromPoint := (F_ProjMan.F_InputBox.cbDelConnToPoinCable.Checked and F_ProjMan.F_InputBox.cbDelConnToPoinCable.Visible);
end;
if DelComponMode <> dmNOne then
begin
if (FFigure <> nil) or (GCadForm.PCad.SelectedCount > 0) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
vList := GetRelatedListsBySelected(GCadForm.PCad.Selection, cst_Delete);
// !!!
// vIntList := TIntList.Create;
// for i := 0 to vList.Count - 1 do
// begin
// ListID := TF_CAD(vList[i]).FCADListID;
// vIntList.Add(ListID);
// end;
// FigID := FFigure.ID;
// BeforeDelObjectFromPM(cfCAD, GCadForm.FCADListID, FigID, vIntList);
// !!!
// Tolik 25/05/2021 -- åñëè óäàëÿòü êàáåëè -- îïðåäåëèòü ëèñòû äëÿ óíäî ....
//
if VList.Count = 1 then
begin
VList.Free;
VList := GetListsByDeleteCable(DelCableFromPoint, DelComponMode);
end;
if vList.Count = 1 then
GCadForm.SaveForUndo(uat_None, True, False)
else
SaveForProjectUndo(vList, True, False);
GCadForm.FCanSaveForUndo := False;
end;
// Tolik 24/05/2021 -- óäàëèòü êàáåëü, ïîäêëþ÷åííûé ê óäàëÿåìûì òî÷å÷íûì îáúåêòàì
if DelCableFromPoint then
DeleteConnectedToPointsCable;
//
if DelComponMode = dmTrace then
begin
DelCableByAllLengthFromSelected; // Tolik 25/05/2021 -- óäàëèòü êàáåëè ïî âñåé äëèíå ñ óäàëÿåìûõ òðàññ
if FFigure <> nil then
if CheckFigureByClassName(FFigure, cTOrthoLine) then
GCadForm.FFiguresDelManual.add(FFigure);
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
Selfigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(Selfigure, cTOrthoLine) then
begin
if FFigure <> SelFigure then
GCadForm.FFiguresDelManual.add(SelFigure);
end;
end;
{
if F_ProjMan <> nil then
begin
for i := 0 to F_ProjMan.Tree_Catalog.SelectionCount - 1 do
begin
Obj := TTreeNode(F_ProjMan.Tree_Catalog.Selections[i]).Data;
CurrComponent := F_ProjMan.GSCSBase.CurrProject.GetComponentFromReferences(obj.ObjectID);
if Assigned(CurrComponent) then
begin
CurrCatalog := CurrComponent.GetFirstParentCatalog;
if CurrCatalog <> nil then
begin
vListCad := GetListByID(CurrCatalog.ListID);
if vList <> nil then
Selfigure := GetFigureByID(vListCad, CurrCatalog.SCSID);
if FFigure <> SelFigure then
GCadForm.FFiguresDelManual.add(SelFigure);
end;
end;
end;
end;
}
end;
if FFigure <> nil then
begin
GCadForm.PCad.OnBeforeDelete := nil;
if CheckFigureByClassName(FFigure, cTConnectorObject) then
begin
// Tolik 18/11/2016-- ðàéç ñ ïîèíòà óäàëèòñÿ ïî-ëþáîìó, äàæå åñëè ê óäàëÿåìîìó òî÷å÷íîìó ïðèñîåäèíåíû òðàññû
//(íà óðîâíå ïîèíòà) + òðàññû íà óðîâíå ïðîòèâîïîëîæíîãî êîííåòêîðà ðàéçà, êîòîðûå â ýòîé òî÷êå íóæíî áû ïåðåêîííåêòèòü
{if not CheckCannotDelete(FFigure) then
TConnectorObject(FFigure).Delete(True);}
if not CheckCannotDelete(FFigure) then
begin
// TConnectorObject(FFigure).Delete(True);
DelRaiseFromPointObject := CanDelRaiseFromPointObject(TConnectorObject(FFigure));
TConnectorObject(FFigure).Delete(true, DelRaiseFromPointObject);
end
end
else
if CheckFigureByClassName(FFigure, cTOrthoLine) then
begin
if not CheckCannotDelete(FFigure) then
TOrthoLine(FFigure).Delete;
end;
GCadForm.PCad.OnBeforeDelete := GCadForm.PCadBeforeDelete;
end;
// óäàëèòü âñå âûäåëåííûå
// Tolik 21/04/2017 --
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
begin
if DelFiguresList.IndexOf(TFigure(GCadForm.PCad.Selection[i])) = -1 then
DelFiguresList.Add(TFigure(GCadForm.PCad.Selection[i]));
end;
//
//for i := 0 to GCadForm.PCad.SelectedCount - 1 do
for i := 0 to DelFiguresList.Count - 1 do
begin
//FFigure := TFigure(GCadForm.PCad.Selection[i]);
FFigure := TFigure(DelFiguresList[i]);
GCadForm.PCad.OnBeforeDelete := nil;
if CheckFigureByClassName(FFigure, cTConnectorObject) then
begin
if not TConnectorObject(FFigure).Deleted then // Tolik 25/05/2021 --
if not CheckCannotDelete(FFigure) then
TConnectorObject(FFigure).Delete(True);
end
else
if CheckFigureByClassName(FFigure, cTOrthoLine) then
begin
//Tolik
SCSCatalog := nil;
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(FFigure.ID);
if SCSCatalog <> nil then
begin
for j := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := nil;
SCSComponent := SCSCatalog.ComponentReferences[j];
if SCSComponent <> nil then
SCSComponent.ServToDelete := true;
end;
end;
//
if not CheckCannotDelete(FFigure) then
TOrthoLine(FFigure).Delete;
end;
GCadForm.PCad.OnBeforeDelete := GCadForm.PCadBeforeDelete;
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
except
on E: Exception do
begin
addExceptionToLogEx('TFSCS_Main.aDeleteSCSObjectExecute', E.Message);
// Toilk 21/04/2017 --
GCanRefreshCad := RefreshFlag;
//
end;
end;
EndProgress;
// Tolik 07/02/2017 --
if vList <> nil then
FreeAndNil(vList);
DelFiguresList.Free; // 21/05/2018 --
//
// Toilk 21/04/2017 --
GCanRefreshCad := RefreshFlag;
GCadForm.PCad.Refresh;
//
end;
procedure TFSCS_Main.aShowConnFullnessExecute(Sender: TObject);
begin
try
if aShowConnFullness.Checked = True then
GCadForm.FShowConnFullness := True;
if aShowConnFullness.Checked = False then
GCadForm.FShowConnFullness := False;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowConnFullnessExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowCableFullnessExecute(Sender: TObject);
begin
try
if aShowCableFullness.Checked = True then
begin
GCadForm.FShowCableFullness := True;
aShowCableChannelFullness.Checked := False;
GCadForm.FShowCableChannelFullness := False;
end;
if aShowCableFullness.Checked = False then
begin
GCadForm.FShowCableFullness := False;
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowCableFullnessExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowCableChannelFullnessExecute(Sender: TObject);
begin
try
if aShowCableChannelFullness.Checked = True then
begin
GCadForm.FShowCableChannelFullness := True;
aShowCableFullness.Checked := False;
GCadForm.FShowCableFullness := False;
end;
if aShowCableChannelFullness.Checked = False then
GCadForm.FShowCableChannelFullness := False;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowCableChannelFullnessExecute', E.Message);
end;
end;
procedure TFSCS_Main.aCreateObjectOnClickToolExecute(Sender: TObject);
var ToolClassName: String;
ToolData: Integer;
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
if GCadForm.FCreateObjectOnClick = True then
begin
if tbCADToolsExpert.Visible then
begin
tbSelectExpert.Click;
tbSelectExpert.Down := True;
end
else
begin
tbSelectNoob.Click;
tbSelectNoob.Down := True;
end;
DestroyShadowObject;
end
else
begin
//29.06.2010 aSetSCSLayer.Execute;
GCadForm.FCreateObjectOnClick := True;
DefineCurrLayerByCompon; //29.06.2010
GCadForm.PCad.SetCursor(crDrag);
RefreshCAD(GCadForm.PCad);
GCadForm.PCad.SetTool(toSelect, 'TSelected');
DropCreatedObjCountOnClickInList(GCadForm.FCADListID); //#From Oleg#
CreateShadowObject; // Íà CAD
end;
{$IF Defined(ES_GRAPH_SC)}
if Not GCadForm.PCad.Focused then
begin
SendMessage(GCadForm.PCad.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
SendMessage(GCadForm.PCad.Handle, WM_SETFOCUS, 0, 0);
GCadForm.PCad.SetFocus;
end;
// Tolik -- 31/01/2017 -- ÷òîáû ïðàâèëüíî âûñòàâèòü òóëçó ðèñîâàíèÿ äëÿ
// àðõèòåêòóðíîãî ïðîåêòèðîâàíèÿ
if TF_Main(F_NormBase).GSCSBase.SCSComponent.ID <> 0 then
begin
if IsArchTopComponByIsLine(TF_Main(F_NormBase).GSCSBase.SCSComponent.IsLine)
or (TF_Main(F_NormBase).GSCSBase.SCSComponent.IsLine = ctArhWallDivision) then
begin
ToolClassName := '';
ToolData := TF_Main(F_NormBase).GSCSBase.SCSComponent.IsLine;
if (TF_Main(F_NormBase).GSCSBase.SCSComponent.IsLine = ctArhWallDivision) then
FSCS_Main.SetToolArch('TWallDivPath')
else
if IsArchTopComponByIsLine(TF_Main(F_NormBase).GSCSBase.SCSComponent.IsLine) then
begin
if TF_Main(F_NormBase).Act_DrawModePoly.Checked then
ToolClassName := 'TWallPolyPath'
else
ToolClassName := 'TRoomWallRect';
end;
if ToolClassName <> '' then
FSCS_Main.SetToolArch(ToolClassName, ToolData);
end;
end
else
TF_Main(F_NormBase).Act_EditTemplate.Execute;
//
//GCadForm.SetFocus;
{$IFEND}
end
else
begin
if tbCADToolsExpert.Visible then
tbCreateOnClickModeExpert.Down := False
else
tbCreateOnClickModeNoob.Down := False;
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
end;
procedure TFSCS_Main.aTileWindowsExecute(Sender: TObject);
begin
FSCS_Main.Tile;
end;
procedure TFSCS_Main.aCascadeWindowsExecute(Sender: TObject);
begin
FSCS_Main.Cascade;
end;
procedure TFSCS_Main.CheckClose;
begin
try
GexitProg := False;
if MessageBox(FSCS_Main.Handle, cMain_Mes49, cMain_Mes50, MB_YESNO) = IDYes then
begin
//if CloseCurrProject(true) <> IDCancel then
GExitProg := True;
// Tolik -- 09/03/2016 --
GExitProgEX := True;
//
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.CheckClose', E.Message);
end;
end;
procedure TFSCS_Main.WMAct(var msg: TMessage);
begin
if not Assigned(FSCS_Main) then
Exit;
end;
procedure TFSCS_Main.aReport_CablesWithLimitLengthExecute(Sender: TObject);
begin
RepCableExceedLength;
end;
procedure TFSCS_Main.aReport_CableChannelsExecute(Sender: TObject);
begin
RepCableCanal;
end;
procedure TFSCS_Main.aReport_ConnectByColorsExecute(Sender: TObject);
begin
RepDisparityComponColor;
end;
procedure TFSCS_Main.aReport_ConnectByProducerExecute(Sender: TObject);
begin
RepDisparityComponProducer;
end;
procedure TFSCS_Main.aReport_ConnectionsExecute(Sender: TObject);
begin
RepCableJournal;
end;
procedure TFSCS_Main.aReport_SpecificationExecute(Sender: TObject);
begin
RepSpecification;
end;
procedure TFSCS_Main.aReport_CableJournalExtExecute(Sender: TObject);
begin
RepCableJournalExt;
end;
procedure TFSCS_Main.aInsertBlockExecute(Sender: TObject);
var
BlkName: string;
FDir: string;
OpenDialog: TOpenDialog;
begin
try
if ActiveMDIChild <> nil then
begin
OpenDialog := TOpenDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.blk') then
FDir := FDir + '\.blk';
OpenDialog.Title := cMain_Mes51;
OpenDialog.InitialDir := FDir;
OpenDialog.DefaultExt := 'blk';
OpenDialog.Filter := cMain_Mes52;
if OpenDialog.Execute then
begin
BlkName := OpenDialog.FileName;
try
GCadForm.CurrentLayer := 1;
GCadForm.PCad.InsertBlockwithFileName(GCadForm.PCad.ActiveLayer, BlkName, 20, 20);
except
ShowMessage(cMain_Mes53);
end;
end;
OpenDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aInsertBlockExecute', E.Message);
end;
end;
//procedure TFSCS_Main.aCreateBlockToNBExecute(Sender: TObject);
//var
// BlkName: string;
// FullBlkName: string;
// MetaFile: TMetafile;
// Bitmap: TBitmap;
// FDir: string;
// Buffer: array[0..1023] of Char;
// TempPath: string;
//
//begin
// try
// if ActiveMDIChild <> nil then
// begin
// if GCadForm.PCad.SelectedCount > 0 then
// begin
// SetString(TempPath, Buffer, GetTempPath(Sizeof(Buffer) - 1, Buffer));
// if not DirectoryExists(TempPath) then
// TempPath := GetEXEDir + '\';
// BlkName := cMain_Mes54;
// FullBlkName := TempPath + cMain_Mes54;
//
// GCadForm.PCad.MakeSelectionBlock(FullBlkName + '.blk');
// MetaFile := TMetafile.Create;
// Bitmap := TBitmap.Create;
// MetaFile := GCadForm.PCad.SelectionAsWmf;
// Bitmap.Height := Metafile.Height;
// Bitmap.Width := Metafile.Width;
// Bitmap.Canvas.Draw(0, 0, MetaFile);
// //BitmapToNormalSize(Bitmap, 75);
//
// Bitmap.SaveToFile(FullBlkName + '.bmp');
// FreeAndNil(MetaFile);
// FreeAndNil(Bitmap);
// AddObjectIconFromCADToDirectories(BlkName, FullBlkName + '.bmp', FullBlkName + '.blk');
// if FileExists(FullBlkName + '.bmp') then
// DeleteFile(FullBlkName + '.bmp');
// if FileExists(FullBlkName + '.blk') then
// DeleteFile(FullBlkName + '.blk');
// end;
// end;
// except
// on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateBlockExecute', E.Message);
// end;
//end;
procedure TFSCS_Main.aCreateBlockToNBExecute(Sender: TObject);
var
BlkName: string;
FullBlkName: string;
FullBlkNameOr: string;
FullBlkName1: string;
FullBlkName2: string;
MetaFile: TMetafile;
Bitmap: TBitmap;
FDir: string;
//08.09.2011 Buffer: array[0..1023] of Char;
TempPath: string;
SelList: TList;
Block: TBlock;
i: integer;
begin
try
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.SelectedCount > 0 then
begin
TempPath := GetAnsiTempPath; //08.09.2011 SetString(TempPath, Buffer, GetTempPath(Sizeof(Buffer) - 1, Buffer));
if not DirectoryExists(TempPath) then
TempPath := GetEXEDir + '\';
BlkName := cMain_Mes54;
FullBlkName := TempPath + cMain_Mes54;
if GCadForm.PCad.SelectedCount = 2 then
begin
SelList := TList.Create;
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
SelList.Add(GCadForm.PCad.Selection[i]);
for i := 0 to SelList.Count - 1 do
begin
GCadForm.PCad.DeSelectFigure(TFigure(SelList[i]).Handle);
end;
FullBlkName1 := FullBlkName;
FullBlkName2 := FullBlkName;
FullBlkNameOr := FullBlkName;
if TFigure(SelList[0]).CenterPoint.x > TFigure(SelList[1]).CenterPoint.x then
FullBlkName1 := FullBlkName + '_active'
else
FullBlkName2 := FullBlkName + '_active';
for i := 0 to SelList.Count - 1 do
begin
FullBlkName := FullBlkName1;
if i = 1 then
FullBlkName := FullBlkName2;
GCadForm.PCad.SelectFigure(TFigure(SelList[i]).Handle);
//GCadForm.PCad.Refresh;
Block := nil;
if (TFigure(SelList[i]) is TBlock) then
Block := TBlock(TBlock(SelList[i]).duplicate)
else if (TFigure(SelList[i]) is TFigureGrp) then
Block := TBlock(TFigureGrp(SelList[i]).duplicate)
else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
//GCadForm.PCad.Refresh;
Block := nil;
if (TFigure(SelList[i]) is TBlock) then
Block := TBlock(TBlock(SelList[i]).duplicate)
else if (TFigure(SelList[i]) is TFigureGrp) then
Block := TBlock(TFigureGrp(SelList[i]).duplicate)
else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
GCadForm.PCad.Refresh;
Block := nil;
//if (TFigure(SelList[i]) is TBlock) then
// Block := TBlock(TBlock(SelList[i]).duplicate)
//else if (TFigure(SelList[i]) is TFigureGrp) then
// Block := TBlock(TFigureGrp(SelList[i]).duplicate)
//else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
//Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
//BlockToNormalSize(Block, 150);
//MetaFile := TMetafile.Create;
//Bitmap := TBitmap.Create;
//MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
//Bitmap.Height := Metafile.Height;
//Bitmap.Width := Metafile.Width;
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.SaveToFile(FullBlkName + '.bmp');
//FreeAndNil(MetaFile);
//FreeAndNil(Bitmap);
if Block <> nil then
begin
//Block.InFigures.Clear;
Block.Free;
end;
GCadForm.PCad.DeSelectFigure(TFigure(SelList[i]).Handle);
GCadForm.PCad.Refresh;
end;
AddObjectIconFromCADToDirectories(BlkName, FullBlkNameOr + '.bmp', FullBlkNameOr + '.blk');
if FileExists(FullBlkName1 + '.bmp') then
DeleteFile(FullBlkName1 + '.bmp');
if FileExists(FullBlkName1 + '.blk') then
DeleteFile(FullBlkName1 + '.blk');
if FileExists(FullBlkName2 + '.bmp') then
DeleteFile(FullBlkName2 + '.bmp');
if FileExists(FullBlkName2 + '.blk') then
DeleteFile(FullBlkName2 + '.blk');
SelList.Clear;
FreeAndNil(SelList);
end
else
begin
Block := nil;
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
//AddObjectIconFromCADToDirectories(BlkName, FullBlkName + '.bmp', FullBlkName + '.blk');
if FileExists(FullBlkName + '.bmp') then
DeleteFile(FullBlkName + '.bmp');
if FileExists(FullBlkName + '.blk') then
DeleteFile(FullBlkName + '.blk');
if Block <> nil then
begin
//Block.InFigures.Clear;
Block.Free;
end;
Block := nil;
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
AddObjectIconFromCADToDirectories(BlkName, FullBlkName + '.bmp', FullBlkName + '.blk');
if FileExists(FullBlkName + '.bmp') then
DeleteFile(FullBlkName + '.bmp');
if FileExists(FullBlkName + '.blk') then
DeleteFile(FullBlkName + '.blk');
if Block <> nil then
begin
//Block.InFigures.Clear;
Block.Free;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateBlockExecute', E.Message);
end;
end;
procedure TFSCS_Main.aBlocksEditorExecute(Sender: TObject);
begin
F_BlockEditor.ShowModal;
end;
procedure TFSCS_Main.aRotatePointObject90Execute(Sender: TObject);
var
i: integer;
PointObject: TConnectorObject;
AngleRad: Double;
AngleDeg: Double;
Bnd: TDoubleRect;
FFigure: TFigure;
CurrCaptionAngle: Double;
// Tolik -- 03/10/2016 --
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GCadForm.PCad.SelectedCount > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) and (TConnectorObject(FFigure).ConnectorType <> ct_Clear) then
begin
PointObject := TConnectorObject(FFigure);
if CheckTrunkObject(PointObject) then
begin
RotateTrunkObject(PointObject, 90);
Exit;
end;
AngleRad := 90 / 180 * pi;
PointObject.Rotate(AngleRad, PointObject.ActualPoints[1]);
PointObject.DrawFigure.Rotate(AngleRad, PointObject.CenterPoint);
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle + AngleRad;
if PointObject.FDrawFigureAngle >= 2 * pi then
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle - 2 * pi;
Bnd := PointObject.DrawFigure.GetBoundRect;
PointObject.GrpSizeX := Bnd.Right - Bnd.Left;
PointObject.GrpSizeY := Bnd.Bottom - Bnd.Top;
//
CurrCaptionAngle := 0; //#From Oleg# //14.09.2010
if PointObject.FCaptionsViewType = cv_Right then
CurrCaptionAngle := 0;
if PointObject.FCaptionsViewType = cv_Down then
CurrCaptionAngle := 90;
if PointObject.FCaptionsViewType = cv_Left then
CurrCaptionAngle := 180;
if PointObject.FCaptionsViewType = cv_Up then
CurrCaptionAngle := 270;
CurrCaptionAngle := CurrCaptionAngle + 90;
CurrCaptionAngle := round(CurrCaptionAngle) mod 360;
if (CurrCaptionAngle >= 0) and (CurrCaptionAngle <= 45) then
PointObject.FCaptionsViewType := cv_Right
else
if (CurrCaptionAngle > 45) and (CurrCaptionAngle < 135) then
PointObject.FCaptionsViewType := cv_Down
else
if (CurrCaptionAngle >= 135) and (CurrCaptionAngle <= 225) then
PointObject.FCaptionsViewType := cv_Left
else
if (CurrCaptionAngle > 225) and (CurrCaptionAngle < 315) then
PointObject.FCaptionsViewType := cv_Up
else
if (CurrCaptionAngle >= 315) and (CurrCaptionAngle <= 360) then
PointObject.FCaptionsViewType := cv_Right;
PointObject.DefRaizeDrawFigurePos;
//
RefreshCAD(GCadForm.PCad);
PointObject.ReCreateCaptionsGroup(false, false);
end
else
RotateFigure(FFigure, 90);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRotatePointObject90Execute', E.Message);
end;
//GCadForm.FCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.aRotatePointObject180Execute(Sender: TObject);
var
i: integer;
PointObject: TConnectorObject;
AngleRad: Double;
AngleDeg: Double;
Bnd: TDoubleRect;
FFigure: TFigure;
CurrCaptionAngle: Double;
// Tolik
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GCadForm.PCad.SelectedCount > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) and (TConnectorObject(FFigure).ConnectorType <> ct_Clear) then
begin
PointObject := TConnectorObject(FFigure);
if CheckTrunkObject(PointObject) then
begin
RotateTrunkObject(PointObject, 180);
Exit;
end;
AngleRad := 180 / 180 * pi;
PointObject.Rotate(AngleRad, PointObject.ActualPoints[1]);
PointObject.DrawFigure.Rotate(AngleRad, PointObject.CenterPoint);
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle + AngleRad;
if PointObject.FDrawFigureAngle >= 2 * pi then
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle - 2 * pi;
Bnd := PointObject.DrawFigure.GetBoundRect;
PointObject.GrpSizeX := Bnd.Right - Bnd.Left;
PointObject.GrpSizeY := Bnd.Bottom - Bnd.Top;
//
if PointObject.FCaptionsViewType = cv_Right then
CurrCaptionAngle := 0;
if PointObject.FCaptionsViewType = cv_Down then
CurrCaptionAngle := 90;
if PointObject.FCaptionsViewType = cv_Left then
CurrCaptionAngle := 180;
if PointObject.FCaptionsViewType = cv_Up then
CurrCaptionAngle := 270;
CurrCaptionAngle := CurrCaptionAngle + 180;
CurrCaptionAngle := round(CurrCaptionAngle) mod 360;
if (CurrCaptionAngle >= 0) and (CurrCaptionAngle <= 45) then
PointObject.FCaptionsViewType := cv_Right
else
if (CurrCaptionAngle > 45) and (CurrCaptionAngle < 135) then
PointObject.FCaptionsViewType := cv_Down
else
if (CurrCaptionAngle >= 135) and (CurrCaptionAngle <= 225) then
PointObject.FCaptionsViewType := cv_Left
else
if (CurrCaptionAngle > 225) and (CurrCaptionAngle < 315) then
PointObject.FCaptionsViewType := cv_Up
else
if (CurrCaptionAngle >= 315) and (CurrCaptionAngle <= 360) then
PointObject.FCaptionsViewType := cv_Right;
PointObject.DefRaizeDrawFigurePos;
//
RefreshCAD(GCadForm.PCad);
PointObject.ReCreateCaptionsGroup(false, false);
end
else
RotateFigure(FFigure, 180);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRotatePointObject180Execute', E.Message);
end;
//GCadForm.FCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.aRotatePointObject270Execute(Sender: TObject);
var
i: integer;
PointObject: TConnectorObject;
AngleRad: Double;
AngleDeg: Double;
Bnd: TDoubleRect;
FFigure: TFigure;
CurrCaptionAngle: Double;
// Tolik 03/10/2016 --
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GCadForm.PCad.SelectedCount > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) and (TConnectorObject(FFigure).ConnectorType <> ct_Clear) then
begin
PointObject := TConnectorObject(FFigure);
if CheckTrunkObject(PointObject) then
begin
RotateTrunkObject(PointObject, 270);
Exit;
end;
AngleRad := 270 / 180 * pi;
PointObject.Rotate(AngleRad, PointObject.ActualPoints[1]);
PointObject.DrawFigure.Rotate(AngleRad, PointObject.CenterPoint);
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle + AngleRad;
if PointObject.FDrawFigureAngle >= 2 * pi then
PointObject.FDrawFigureAngle := PointObject.FDrawFigureAngle - 2 * pi;
Bnd := PointObject.DrawFigure.GetBoundRect;
PointObject.GrpSizeX := Bnd.Right - Bnd.Left;
PointObject.GrpSizeY := Bnd.Bottom - Bnd.Top;
//
if PointObject.FCaptionsViewType = cv_Right then
CurrCaptionAngle := 0;
if PointObject.FCaptionsViewType = cv_Down then
CurrCaptionAngle := 90;
if PointObject.FCaptionsViewType = cv_Left then
CurrCaptionAngle := 180;
if PointObject.FCaptionsViewType = cv_Up then
CurrCaptionAngle := 270;
CurrCaptionAngle := CurrCaptionAngle + 270;
CurrCaptionAngle := round(CurrCaptionAngle) mod 360;
if (CurrCaptionAngle >= 0) and (CurrCaptionAngle <= 45) then
PointObject.FCaptionsViewType := cv_Right
else
if (CurrCaptionAngle > 45) and (CurrCaptionAngle < 135) then
PointObject.FCaptionsViewType := cv_Down
else
if (CurrCaptionAngle >= 135) and (CurrCaptionAngle <= 225) then
PointObject.FCaptionsViewType := cv_Left
else
if (CurrCaptionAngle > 225) and (CurrCaptionAngle < 315) then
PointObject.FCaptionsViewType := cv_Up
else
if (CurrCaptionAngle >= 315) and (CurrCaptionAngle <= 360) then
PointObject.FCaptionsViewType := cv_Right;
PointObject.DefRaizeDrawFigurePos;
//
RefreshCAD(GCadForm.PCad);
PointObject.ReCreateCaptionsGroup(false, false);
end
else
RotateFigure(FFigure, 270);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aRotatePointObject270Execute', E.Message);
end;
//GCanForm.FCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.AppException(Sender: TObject; E: Exception);
var
s: string;
begin
s := E.Message;
if GExitProgEx then
{$if Defined(ES_GRAPH_SC)}
begin
Application.Terminate;
end;
{$else}
ExitProcess(0);
{$ifend}
end;
procedure TFSCS_Main.aShiftUpObjectExecute(Sender: TObject);
//30.05.2011 var
//30.05.2011 i: integer;
//30.05.2011 ConnObjList: TList;
//30.05.2011 LinesList: TList;
begin
try
ShiftObjects(sdUp); //30.05.2011
//30.05.2011
// if ActiveMDIChild <> nil then
// begin
//
// // ñïèñîê âûäåëåííûõ îáúåêòîâ
// ConnObjList := TList.Create;
// LinesList := TList.create;
// for i := 0 to GCadForm.PCad.SelectedCount - 1 do
// begin
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
// if TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_clear then
// ConnObjList.Add(TConnectorObject(GCadForm.PCad.Selection[i]));
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
// if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
// LinesList.Add(TOrthoLine(GCadForm.PCad.Selection[i]));
// end;
//
// if (ConnObjList.Count > 0) or (LinesList.Count > 0) then
// begin
// // *UNDO*
// if GCadForm.FCanSaveForUndo then
// begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := False;
// end;
// if ConnObjList.Count > 0 then
// ObjectsShiftUp(ConnObjList);
// if LinesList.Count > 0 then
// LinesShiftUp(LinesList);
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
//
// if ConnObjList <> nil then
// FreeAndNil(ConnObjList);
// if LinesList <> nil then
// FreeAndNil(LinesList);
// RefreshCAD(GCadForm.PCad);
// end
// else
// MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShiftUpObjectExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShieldAssemblySchemeExecute(Sender: TObject);
begin
BuildWiringSchemeList;
end;
procedure TFSCS_Main.aShiftDownObjectExecute(Sender: TObject);
//30.05.2011 var
//30.05.2011 i: integer;
//30.05.2011 ConnObjList: TList;
//30.05.2011 LinesList: TList;
begin
try
ShiftObjects(sdDown); //30.05.2011
//30.05.2011
//if ActiveMDIChild <> nil then
// begin
// // ñïèñîê âûäåëåííûõ îáúåêòîâ
// ConnObjList := TList.Create;
// LinesList := TList.create;
// for i := 0 to GCadForm.PCad.SelectedCount - 1 do
// begin
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
// if TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_clear then
// ConnObjList.Add(TConnectorObject(GCadForm.PCad.Selection[i]));
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
// if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
// LinesList.Add(TOrthoLine(GCadForm.PCad.Selection[i]));
// end;
// if (ConnObjList.Count > 0) or (LinesList.Count > 0) then
// begin
// // *UNDO*
// if GCadForm.FCanSaveForUndo then
// begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := False;
// end;
// if ConnObjList.Count > 0 then
// ObjectsShiftDown(ConnObjList);
// if LinesList.Count > 0 then
// LinesShiftDown(LinesList);
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
//
// if ConnObjList <> nil then
// FreeAndNil(ConnObjList);
// if LinesList <> nil then
// FreeAndNil(LinesList);
// RefreshCAD(GCadForm.PCad);
//
// if BeforeShiftObjects(ConnObjList, LinesList, FigList) then
// begin
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
// EndShiftObjects(ConnObjList, LinesList, FigList);
// end
// else
// MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShiftDownObjectExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShiftLeftObjectExecute(Sender: TObject);
//30.05.2011 var
//30.05.2011 i: integer;
//30.05.2011 ConnObjList: TList;
//30.05.2011 LinesList: TList;
//30.05.2011 FigList: TList;
begin
try
ShiftObjects(sdLeft); //30.05.2011
//30.05.2011
//if ActiveMDIChild <> nil then
// begin
// // ñïèñîê âûäåëåííûõ îáúåêòîâ
// ConnObjList := TList.Create;
// LinesList := TList.create;
// for i := 0 to GCadForm.PCad.SelectedCount - 1 do
// begin
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
// if TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_clear then
// ConnObjList.Add(TConnectorObject(GCadForm.PCad.Selection[i]));
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
// if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
// LinesList.Add(TOrthoLine(GCadForm.PCad.Selection[i]));
// end;
// if (ConnObjList.Count > 0) or (LinesList.Count > 0) then
// begin
// // *UNDO*
// if GCadForm.FCanSaveForUndo then
// begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := False;
// end;
// if ConnObjList.Count > 0 then
// ObjectsShiftLeft(ConnObjList);
// if LinesList.Count > 0 then
// LinesShiftLeft(LinesList);
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
//
// if ConnObjList <> nil then
// FreeAndNil(ConnObjList);
// if LinesList <> nil then
// FreeAndNil(LinesList);
// RefreshCAD(GCadForm.PCad);
//
// if BeforeShiftObjects(ConnObjList, LinesList, FigList) then
// begin
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
// EndShiftObjects(ConnObjList, LinesList, FigList);
// end
// else
// MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShiftLeftObjectExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShiftRightObjectExecute(Sender: TObject);
//30.05.2011 var
//30.05.2011 i: integer;
//30.05.2011 ConnObjList: TList;
//30.05.2011 LinesList: TList;
//30.05.2011 FigList: TList;
begin
try
ShiftObjects(sdRight); //30.05.2011
//30.05.2011
//if ActiveMDIChild <> nil then
// begin
// // ñïèñîê âûäåëåííûõ îáúåêòîâ
// ConnObjList := TList.Create;
// LinesList := TList.create;
// for i := 0 to GCadForm.PCad.SelectedCount - 1 do
// begin
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
// if TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_clear then
// ConnObjList.Add(TConnectorObject(GCadForm.PCad.Selection[i]));
// if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
// if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
// LinesList.Add(TOrthoLine(GCadForm.PCad.Selection[i]));
// end;
// if (ConnObjList.Count > 0) or (LinesList.Count > 0) then
// begin
// // *UNDO*
// if GCadForm.FCanSaveForUndo then
// begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := False;
// end;
// if ConnObjList.Count > 0 then
// ObjectsShiftRight(ConnObjList);
// if LinesList.Count > 0 then
// LinesShiftRight(LinesList);
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
//
// if ConnObjList <> nil then
// FreeAndNil(ConnObjList);
// if LinesList <> nil then
// FreeAndNil(LinesList);
// RefreshCAD(GCadForm.PCad);
//
// if BeforeShiftObjects(ConnObjList, LinesList, FigList) then
// begin
// // *UNDO*
// GCadForm.FCanSaveForUndo := True;
// end;
// EndShiftObjects(ConnObjList, LinesList, FigList);
// end
// else
// MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShiftRightObjectExecute', E.Message);
end;
end;
procedure TFSCS_Main.RegisteredCADHotKeys;
var
GLogFile: TMyLoglist;
begin
end;
procedure TFSCS_Main.UnRegisteredCADHotKeys;
var
GLogFile: TMyLoglist;
begin
end;
function strtoPchar(s:string):Pchar;
begin
S := S+#0;
result:=StrPCopy(@S[1], S) ;
end;
procedure TFSCS_Main.ReceiveMessage;
var
pcd: PCopyDataStruct;
txt: PChar;
begin
try
pcd := PCopyDataStruct(Msg.LParam);
txt := PChar(pcd.lpData);
OpenFileAtStart := txt;
if OpenFileAtStart <> '' then
if FileExists(OpenFileAtStart) then
TimerOpenStart.Enabled := True;
except
end;
Application.Restore;
end;
procedure TFSCS_Main.WMUser(var msg: TMessage);
begin
Application.Restore;
end;
procedure TFSCS_Main.aListPropertiesExecute(Sender: TObject);
var
ListParams: TListParams;
begin
try
if ActiveMDIChild <> nil then
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
F_MasterNewList.Tag := 1;
F_MasterNewList.ListPageControl.ActivePageIndex := 0;
F_MasterNewList.RzGroupBox12.Height := 192;
ListParams := GetListParams(GCadForm.FCADListID);
MakeEditList(meEdit, ListParams, True);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aListPropertiesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aProjectPropertiesExecute(Sender: TObject);
begin
try
F_MasterNewList.Caption := cMasterNewList_Mes3;
F_MasterNewList.GlobalPageControl.ActivePageIndex := 0;
F_MasterNewList.ShowModal;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aProjectPropertiesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aOpenProjectAtCurrNodeExecute(Sender: TObject);
begin
OpenProjectAtCurrNode;
end;
procedure TFSCS_Main.aCloseCurrProjectExecute(Sender: TObject);
begin
// Tolik -- 28/02/20107 -- ñáðîñèòü ñ÷åò÷èê âûçîâîâ ñîîáùåíèÿ î ïðåâûøåíèè êâîòû îáúåêòîâ USER
GUserOBjectsQuotaLimit_Message_Counter := 0;
GCanRefreshCad := False;
//
try
CloseCurrProject(false);
Except
On E: Exception do;
end;
GCanRefreshCad := True; // Tolik -- 03/03/2017 --
// SetMenuStatus(False);
end;
procedure TFSCS_Main.aLoadNewProjectFromFileExecute(Sender: TObject);
// Tolik -- 28/02/20107 -- äëÿ ïðîâåðêè ïðåâûøåíèÿ êâîòû --
var
OldQuotaMessCount: Integer;
//
begin
// {$IF Defined(TRIAL_SCS)}
// ShowMessage('Íåäîñòóïíî â Trial-âåðñèè!');
// {$ELSE}
if GProtectionType <> ltLocal then
begin
ProgProtection.CheckIsVerls(PRO);
ConnCount := ConnCount XOR $1978;
ConnCount := ConnCount SHR 6;
ConnCount := ConnCount AND $0000ffff;
if GetCurrConnectionCount > ConnCount then
exit;
end;
// Tolik -- 21/02/2017 -*-
// LoadNewProjectFromFile;
GUserOBjectsQuotaLimit_Message_Counter := 0; // ïðè îòêðûòèè íîâîãî ïðîåêòà ïîäðàçóìåâàåòñÿ, ÷òî îñòàëüíûå çàêðûòû,
// ïîýòîìó ñ÷åò÷èê ñîîáùåíèé î ïðåâûøåíèè êâîòû îáúåêòîâ USER -*- ñáðàñûâàåì
OldQuotaMessCount := GUserOBjectsQuotaLimit_Message_Counter;
GIsProjectOpening := True; // ÷òîáû ïîíèìàòü, ÷òî â äàííûé ìîìåíò îòêðûâàåòñÿ ïðîåêò
LoadNewProjectFromFile;
if OldQuotaMessCount <> GUserOBjectsQuotaLimit_Message_Counter then
begin
// showmessage('Ïðåâûøåíèå êâîòû! Íåâîçìîæíî çàãðóçèòü ïðîåêò !!! ');
end;
if Assigned(GCadForm) then
begin
F_LayersDialog.LoadFromCADForm(GCadForm);
SetProjectChanged(false);
end;
GIsProjectOpening := False;
//
// SetMenuStatus(True);
// {$IFEND}
end;
procedure TFSCS_Main.aSaveAsSCSProjectExecute(Sender: TObject);
var
i: integer;
SelCheck: integer;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
SelCheck := 0;
if Not IsVista then
begin
Randomize;
SelCheck := Random(100);
if ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A))) > 0 then
exit;
end;
{$IFEND}
{$IF Defined(TRIAL_SCS) and not Defined(PROCAT_SCS) and not Defined(SCS_PE)}
ShowMessage(cMain_Mes9);
{$ELSE}
SaveProjectToFile;
{$IFEND}
end;
{ TMyLoglist }
procedure TMyLoglist.Add(aStr: string);
begin
try
StrList.Add(aStr);
StrList.SaveToFile(FFileName);
except
end;
end;
constructor TMyLoglist.Create(aFName: string);
begin
inherited create;
FFileName := aFName;
StrList := TStringList.Create;
end;
destructor TMyLoglist.Destroy;
begin
StrList.Free;
inherited;
end;
procedure TFSCS_Main.aComponPropertiesExecute(Sender: TObject);
var
ClickFigure: TFigure;
SelCount: integer;
begin
try
if GPopupFigure = Nil then
begin
if GCadForm.PCad.SelectedCount > 0 then
begin
SelCount := GCadForm.PCad.SelectedCount;
GPopupFigure := TFigure(GCadForm.PCad.Selection[SelCount - 1]);
end;
end;
if GPopupFigure <> nil then
EditFirstFigureComponent(GPopupFigure.ID);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aObjPropertiesExecute', E.Message);
end;
end;
procedure TFSCS_Main.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
try
CanClose := False;
GExitProg := False;
CheckClose;
if GExitProg then
CanClose := True;
GexitProg := True;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.FormCloseQuery', E.Message);
end;
end;
procedure TFSCS_Main.aToolPanExecute(Sender: TObject);
var
HPos, VPos: integer;
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
if GCadForm.PCad.Tag = 0 then
begin
{
HPos := GCadForm.PCad.HSCBarPosition;
VPos := GCadForm.PCad.VSCBarPosition;
PDock2.Width := PDock2.Width + 1;
Application.ProcessMessages;
PDock2.Width := PDock2.Width - 1;
GCadForm.PCad.Tag := 1;
GCadForm.PCad.SetHScrollPosition(HPos, False);
GCadForm.PCad.SetVScrollPosition(VPos, True);
}
end;
GIsMousePressed := False;
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
//GCadForm.ChangeScrollsOnChangeListSize;
GCadForm.PCad.SetTool(TPCTool(11), '');
end;
end;
procedure TFSCS_Main.cbScalePropertiesCloseUp(Sender: TObject);
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
if tbCADToolsExpert.Visible then
begin
if cbScaleExpert.ItemIndex = 0 then
if GCadForm.PCad.ZoomScale <> 50 then
a50.Execute;
if cbScaleExpert.ItemIndex = 1 then
if GCadForm.PCad.ZoomScale <> 75 then
a75.Execute;
if cbScaleExpert.ItemIndex = 2 then
if GCadForm.PCad.ZoomScale <> 100 then
a100.Execute;
if cbScaleExpert.ItemIndex = 3 then
if GCadForm.PCad.ZoomScale <> 150 then
a150.Execute;
if cbScaleExpert.ItemIndex = 4 then
if GCadForm.PCad.ZoomScale <> 200 then
a200.Execute;
if cbScaleExpert.ItemIndex = 5 then
if GCadForm.PCad.ZoomScale <> 400 then
a400.Execute;
if cbScaleExpert.ItemIndex = 6 then
aAllScreen.Execute;
end
else
begin
if cbScaleNoob.ItemIndex = 0 then
if GCadForm.PCad.ZoomScale <> 50 then
a50.Execute;
if cbScaleNoob.ItemIndex = 1 then
if GCadForm.PCad.ZoomScale <> 75 then
a75.Execute;
if cbScaleNoob.ItemIndex = 2 then
if GCadForm.PCad.ZoomScale <> 100 then
a100.Execute;
if cbScaleNoob.ItemIndex = 3 then
if GCadForm.PCad.ZoomScale <> 150 then
a150.Execute;
if cbScaleNoob.ItemIndex = 4 then
if GCadForm.PCad.ZoomScale <> 200 then
a200.Execute;
if cbScaleNoob.ItemIndex = 5 then
if GCadForm.PCad.ZoomScale <> 400 then
a400.Execute;
if cbScaleNoob.ItemIndex = 6 then
aAllScreen.Execute;
end;
end;
// RefreshCAD(GCadForm.PCad);
end;
procedure TFSCS_Main.cbScaleExpertKeyPress(Sender: TObject; var Key: Char);
var
val: integer;
begin
if Key = #13 then
begin
if tbCADToolsExpert.Visible then
Val := StrToInt(FSCS_Main.cbScaleExpert.Text)
else
Val := StrToInt(FSCS_Main.cbScaleNoob.Text);
// if Val < 50 then -
// Val := 50;
if Val > GCadForm.PCad.MaxScale then
Val := GCadForm.PCad.MaxScale;
if tbCADToolsExpert.Visible then
FSCS_Main.cbScaleExpert.Text := IntToStr(Val)
else
FSCS_Main.cbScaleNoob.Text := IntToStr(Val);
if GCadForm.PCad.ZoomScale <> val then
begin
GCadForm.SetZoomScale(val);
RefreshCAD(GCadForm.PCad);
end;
end;
end;
procedure TFSCS_Main.cbLayersPropertiesCloseUp(Sender: TObject);
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
GCadForm.CurrentLayer := FSCS_Main.cbLayers.ItemIndex + 1;
if FSCS_Main.tbCADToolsExpert.Visible then
FSCS_Main.tbSelectExpert.Down := True
else
FSCS_Main.tbSelectNoob.Down := True;
end;
try
if (Application.Active) and (GCadForm <> nil) and (GCadForm.PCad <> nil) then
if Not GCadForm.PCad.Focused then
begin
SendMessage(GCadForm.PCad.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
SendMessage(GCadForm.PCad.Handle, WM_SETFOCUS, 0, 0);
GCadForm.PCad.SetFocus;
end;
except
ShowMessage('EXCEPTION: TFSCS_Main.cbLayersPropertiesCloseUp (Set PCAD focus)');
end;
end;
procedure TFSCS_Main.cbLayersCloseUp(Sender: TObject);
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
GCadForm.CurrentLayer := FSCS_Main.cbLayers.ItemIndex;
end;
end;
procedure TFSCS_Main.aDisconnectPointObjectExecute(Sender: TObject);
var
i: integer;
CurObject: TConnectorObject;
SelList: TList;
// Tolik 03/10/2016 --
SavedUndoFlag: Boolean;
//
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
if GPopupFigure = nil then
exit;
SelList := TList.Create;
// îòáîð îáúåêòîâ
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
begin
CurObject := TConnectorObject(GCadForm.PCad.Selection[i]);
if CurObject.ConnectorType <> ct_Clear then
if CurObject.JoinedConnectorsList.Count > 0 then
SelList.Add(CurObject);
end;
end;
if SelList.Count > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to SelList.Count - 1 do
begin
CurObject := TConnectorObject(SelList[i]);
DisconnectPointObject(CurObject);
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
FreeAndNil(SelList);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDisconnectPointObjectExecute', E.Message);
end;
//GCadForm.fFCanSaveForUndo := SavedUndoFlag;
end;
procedure TFSCS_Main.cxComboBox1Enter(Sender: TObject);
begin
FSCS_Main.OldApplicationEventsMessage := Application.OnMessage;
Application.OnMessage := FSCS_Main.ApplicationEvents1Message;
end;
procedure TFSCS_Main.mRegisterClick(Sender: TObject);
var
TempList: TStringList;
begin
{$IF Defined (FINAL_SCS)}
//GReadOnlyMode := false;
ProgramRegisterPro := false;
ProgramRegisterTrial := false;
ProgID := ProgProtection.GenProgID;
ProgramRegisterPro := ProgProtection.CheckIsVer(PRO);
ProgramRegisterTrial := ProgProtection.CheckIsVer(TRIAL);
GLicProgCode := ProgIDToStr(ProgID);
if ProgramRegisterTrial then
begin
GReadOnlyMode := True;
ProgramRegisterPro := True;
end;
try
//TempList.Add('0');
RaiseException(EXCEPTION_INT_DIVIDE_BY_ZERO ,0, 0, 0);
except
begin
MessageBeep(MB_ICONASTERISK);
if Not ShowRegistration then
begin
end;
ProgramRegisterPro := ProgProtection.CheckIsVerls(PRO);
ProgramRegisterTrial := ProgProtection.CheckIsVerls(TRIAL);
if ProgramRegisterTrial then
begin
GReadOnlyMode := True;
ProgramRegisterPro := True;
end;
Application.ProcessMessages;
end;
end;
{$ELSE}
GReadOnlyMode := false;
ProgramRegisterPro := True;
GLicProgCode := ProgIDToStr(ProgID);
{$IFEND}
end;
procedure TFSCS_Main.aRepWizardExecute(Sender: TObject);
var
i: integer;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
if Not IsVista then
begin
for i := 0 to 6 do
begin
if ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A))) <> 0 then
begin
exit;
end;
end;
end;
{$IFEND}
CheckCloseReportForm; // Toilk 30/04/2021 --
RepWizard;
end;
procedure TFSCS_Main.aSaveAsBMPExecute(Sender: TObject);
var
FName: string;
FDir: string;
SavePictureDialog: TSavePictureDialog;
begin
if ActiveMDIChild <> nil then
begin
SavePictureDialog := TSavePictureDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.bmp') then
FDir := FDir + '\.bmp';
SavePictureDialog.Title := cMain_Mes56;
SavePictureDialog.InitialDir := ExtractDirByCategoryType(dctPictures);//ExtractSaveDirForCategory('.bmp');//FDir;
SavePictureDialog.DefaultExt := 'bmp';
SavePictureDialog.Filter := cMain_Mes57;
if SavePictureDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctPictures, ExtractFileDir(SavePictureDialog.FileName));
//
FName := SavePictureDialog.FileName;
GCadForm.SetZoomScale(GCadForm.Pcad.ZoomScale);
RefreshCAD_T(GCadForm.PCad);
GCadForm.PCad.SaveAsBitmap(FName);
GCadForm.SetZoomScale(GCadForm.Pcad.ZoomScale);
RefreshCAD_T(GCadForm.PCad);
except
ShowMessage(cMain_Mes8);
end;
end;
SavePictureDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aShowTracesLengthLimitExecute(Sender: TObject);
begin
try
if aShowTracesLengthLimit.Checked = True then
begin
GCadForm.FShowTracesLengthLimit := True;
DefineTracesWithExceedTwistedPair(GCadForm.FCADListID);
end;
if aShowTracesLengthLimit.Checked = False then
begin
GCadForm.FShowTracesLengthLimit := False;
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowTracesLengthLimitExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSaveProjectExecute(Sender: TObject);
var
i: integer;
begin
// Tolik -- 29/12/2016 --
// åñëè ÷òî-òî åùå â ïðîöåññå - íåõóé âûïîëíÿòü çàïèñü, à òî òàêîå ïîíàçàïèñûâàåòñÿ!
if (GIsProgress or (GIsProgressCount > 0)) then
Exit;
//
if GProtectionType <> ltLocal then
begin
ProgProtection.CheckIsVerls(PRO);
ConnCount := ConnCount XOR $1978;
ConnCount := ConnCount SHR 6;
ConnCount := ConnCount AND $0000ffff;
if GetCurrConnectionCount > ConnCount then
exit;
end;
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
if Not IsVista then
begin
for i := 0 to 9 do
begin
if ((ord(bufflic[i mod 16]) XOR $3A) - (Digest[i mod 16]))<> 0 then
begin
exit;
end;
end;
end;
{$IFEND}
try
SaveCurrentProject;
// î÷èñòèòü Undo ëèñòû ïîñëå ñîõðàíåíèÿ ïðîåêòà (íå ôàêò ÷òî íóæíî)
// for i := 0 to MDIChildCount - 1 do
// begin
// TF_CAD(MDIChildren[i]).ClearUndoList;
// end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSaveProjectExecute', E.Message);
end;
end;
procedure TFSCS_Main.aCurrProjectPropertiesExecute(Sender: TObject);
begin
ShowCurrProjectProperties;
end;
procedure TFSCS_Main.aManual_CurrencyExecute(Sender: TObject);
begin
ShowCurrencyDirectory;
end;
procedure TFSCS_Main.aManual_NettypesExecute(Sender: TObject);
begin
ShowNetTypeDirectory;
end;
procedure TFSCS_Main.aManual_ProducersExecute(Sender: TObject);
begin
ShowProducersDirectory;
end;
procedure TFSCS_Main.aManual_InterfacesExecute(Sender: TObject);
begin
ShowInterfaceDirectory;
end;
procedure TFSCS_Main.aManual_ObjPropExecute(Sender: TObject);
begin
ShowPropertyDirectory;
end;
procedure TFSCS_Main.aManual_LegendsExecute(Sender: TObject);
begin
ShowObjectIconsDirectory;
end;
procedure TFSCS_Main.aManual_ComponTypesExecute(Sender: TObject);
begin
ShowComponentTypesDirectory;
end;
procedure TFSCS_Main.aManual_NormsExecute(Sender: TObject);
begin
ShowNormsDirectory;
end;
procedure TFSCS_Main.aManual_ResourcesExecute(Sender: TObject);
begin
ShowResourcesDirectory;
end;
procedure TFSCS_Main.aManual_NDSExecute(Sender: TObject);
begin
ShowNDSDirectory;
end;
procedure TFSCS_Main.aDesignBoxExecute(Sender: TObject);
var
CurrGCadForm: TF_CAD;
ListID: Integer;
ListCaption: string;
aPopupFigure: TConnectorObject;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) then
begin
// Ñîçäàíèå ëèñòà Äèçàéíà øêàôà
if TConnectorObject(GPopupFigure).FJoinedListIDForBox = -1 then
begin
F_ChooseDesignBoxParams.cbShowDesignBoxName.Checked := True;
F_ChooseDesignBoxParams.cbShowDesignBoxSign.Checked := False;
F_ChooseDesignBoxParams.cbShowDesignBoxMark.Checked := False;
if F_ChooseDesignBoxParams.ShowModal = mrOK then
begin
CreateDesignList(TConnectorObject(GPopupFigure));
DisableOptionsForDesignList;
end;
end
else
// Ïåðåîòêðûòèå ëèñòà Äèçàéíà ëèñòà
begin
ListID := TConnectorObject(GPopupFigure).FJoinedListIDForBox;
CurrGCadForm := GetListByID(ListID);
if CurrGCadForm <> nil then
begin
OpenDesignList(TConnectorObject(GPopupFigure), CurrGCadForm);
end
else
begin
aPopupFigure := TConnectorObject(GPopupFigure);
ListCaption := GetListParams(ListID).Caption;
ReOpenListInCAD(ListID, ListCaption);
GPopupFigure := aPopupFigure;
OpenDesignList(TConnectorObject(GPopupFigure), GCadForm);
end;
DisableOptionsForDesignList;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDesignBoxExecute', E.Message);
end;
end;
procedure TFSCS_Main.aChoiceNBPathExecute(Sender: TObject);
begin
GDatabaseName := '';
ChoiceNBPath;
end;
procedure TFSCS_Main.aChoicePMPathExecute(Sender: TObject);
begin
GDatabaseName := '';
ChoicePMPath;
end;
procedure TFSCS_Main.aChoiceBaseOptionsExecute(Sender: TObject);
begin
ChoiceBaseOptions;
end;
procedure TFSCS_Main.aRegistrationExecute(Sender: TObject);
var
TempList: TStringList;
begin
{$IF Defined (FINAL_SCS)}
//GReadOnlyMode := False;
ProgramRegisterPro := false;
ProgramRegisterTrial := false;
ProgID := ProgProtection.GenProgID;
ProgramRegisterPro := ProgProtection.CheckIsVer(PRO);
ProgramRegisterTrial := ProgProtection.CheckIsVer(TRIAL);
if ProgramRegisterTrial then
begin
GReadOnlyMode := True;
ProgramRegisterPro := True;
end;
GLicProgCode := ProgIDToStr(ProgID);
try
//TempList.Add('0');
RaiseException(EXCEPTION_INT_DIVIDE_BY_ZERO ,0, 0, 0);
except
while 234 <> 912 do
begin
MessageBeep(MB_ICONASTERISK);
if Not ShowRegistration then
begin
end;
ProgramRegisterPro := ProgProtection.CheckIsVerls(PRO);
ProgramRegisterTrial := ProgProtection.CheckIsVerls(TRIAL);
if ProgramRegisterTrial then
begin
GReadOnlyMode := True;
ProgramRegisterPro := True;
end;
if ProgramRegisterPro or ProgramRegisterTrial then
break;
Application.ProcessMessages;
end;
end;
{$ELSE}
GReadOnlyMode := False;
ProgramRegisterPro := True;
GLicProgCode := ProgIDToStr(ProgID);
{$IFEND}
end;
procedure TFSCS_Main.aUpdateNormBaseExecute(Sender: TObject);
begin
UpdateNB;
end;
procedure TFSCS_Main.tbSCSToolsExpertStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
tbSCSToolsDocking := true;
end;
procedure TFSCS_Main.tbSCSToolsExpertEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
tbSCSToolsDocking := false;
PDock1.DockSite := true;
pDock2.DockSite := true;
if (F_NormBase <> nil) and (F_ProjMan <> nil) then
begin
F_NormBase.Panel_Main.DockSite := true;
F_ProjMan.Panel_Main.DockSite := true;
end;
end;
procedure TFSCS_Main.FormResize(Sender: TObject);
begin
try
if Assigned(F_FloatPanel) then
if F_FloatPanel.ClassName = 'TF_FloatPanel' then
ResizeFloatPanel;
except
end;
try
if Assigned(tbSCSToolsExpert) and Assigned(cbMainPanel) then
begin
tbSCSToolsExpert.Width := cSCSExpert;
tbSCSToolsExpert.Left := cbMainPanel.Width - tbSCSToolsExpert.Width;
end;
if Assigned(tbSCSToolsNoob) and Assigned(cbMainPanel) then
begin
{$IF DEFINED(SCS_PE) or DEFINED(SCS_SPA)}
// Tolik 24/01/2017
//tbSCSToolsNoob.Width := cSCSNoob_PE;
tbSCSToolsNoob.Width := cSCSNoob_PE + 20;
//
{$ELSE}
// Tolik 24/01/2017 --
// tbSCSToolsNoob.Width := cSCSNoob_SCS;
tbSCSToolsNoob.Width := cSCSNoob_SCS + 20;
//
{$IFEND}
// Tolik -- 24/01/2017
// tbSCSToolsNoob.Left := cbMainPanel.Width - tbSCSToolsNoob.Width;
tbSCSToolsNoob.Left := cbMainPanel.Width - tbSCSToolsNoob.Width;
//
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.FormResize', E.Message);
end;
end;
procedure TFSCS_Main.aHistoryExecute(Sender: TObject);
var
FileName: string;
begin
try
FileName := ExeDir + '\Docs\History.doc';
if FileExists(FileName) then
begin
ShellExecute(FSCS_Main.Handle, 0, PChar(FileName), 0, 0, 0);
end
else
ShowMessage(cMain_Mes58);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aHistoryExecute', E.Message);
end;
end;
procedure TFSCS_Main.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
addExceptionToLogEx('TFSCS_Main.ApplicationEvents1Exception ', E.Message);
end;
procedure TFSCS_Main.SkipCADPanelChecked;
begin
try
if tbCADToolsExpert.Visible then
begin
if tbSelectExpert.Down then
tbSelectExpert.Down := False;
if tbPanExpert.Down then
tbPanExpert.Down := False;
if tbLineExpert.Down then
tbLineExpert.Down := False;
//Tolik 23/07/2017 --
if tbPieExpert.Down then
tbPieExpert.Down := False;
//
if tbRectangleExpert.Down then
tbRectangleExpert.Down := False;
if tbEllipseExpert.Down then
tbEllipseExpert.Down := False;
if tbCircleExpert.Down then
tbCircleExpert.Down := False;
if tbArcExpert.Down then
tbArcExpert.Down := False;
if tbElipticArcExpert.Down then
tbElipticArcExpert.Down := False;
if tbPolyLineExpert.Down then
tbPolyLineExpert.Down := False;
if tbPointExpert.Down then
tbPointExpert.Down := False;
if tbTextExpert.Down then
tbTextExpert.Down := False;
if tbRichTextExpert.Down then
tbRichTextExpert.Down := False;
if tbKnifeExpert.Down then
tbKnifeExpert.Down := False;
if tbHDimLineExpert.Down then
tbHDimLineExpert.Down := False;
if tbVDimLineExpert.Down then
tbVDimLineExpert.Down := False;
if tbSCSHDimLineExpert.Down then
tbSCSHDimLineExpert.Down := False;
if tbSCSVDimLineExpert.Down then
tbSCSVDimLineExpert.Down := False;
if tbSCSArcDimLineExpert.Down then
tbSCSArcDimLineExpert.Down := False;
if tbCabinetExpert.Down then
tbCabinetExpert.Down := False;
if tbWallRectExpert.Down then
tbWallRectExpert.Down := False;
if tbWallPathExpert.Down then
tbWallPathExpert.Down := False;
if tbCreateOnClickModeExpert.Down then
tbCreateOnClickModeExpert.Down := False;
if tbToolOrtholineExpert.Down then
tbToolOrtholineExpert.Down := False;
if tbToolOrtholineExtExpert.Down then
tbToolOrtholineExtExpert.Down := False;
end
else
begin
if tbSelectNoob.Down then
tbSelectNoob.Down := False;
if tbSCSHDimLineNoob.Down then
tbSCSHDimLineNoob.Down := False;
if tbSCSVDimLineNoob.Down then
tbSCSVDimLineNoob.Down := False;
if tbSCSArcDimLineNoob.Down then
tbSCSArcDimLineNoob.Down := False;
if tbCabinetNoob.Down then
tbCabinetNoob.Down := False;
if tbCabinetExtNoob.Down then
tbCabinetExtNoob.Down := False;
if tbWallRectNoob.Down then
tbWallRectNoob.Down := False;
if tbWallPathNoob.Down then
tbWallPathNoob.Down := False;
if tbCreateOnClickModeNoob.Down then
tbCreateOnClickModeNoob.Down := False;
if tbToolOrtholineNoob.Down then
tbToolOrtholineNoob.Down := False;
if tbToolOrtholineExtNoob.Down then
tbToolOrtholineExtNoob.Down := False;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.SkipCADPanelChecked', E.Message);
end;
end;
procedure TFSCS_Main.aConnectionsConfiguratorExecute(Sender: TObject);
begin
try
ShowConfigurator;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aConnectionsConfiguratorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aNoMoveConnectedObjectsExecute(Sender: TObject);
begin
try
if aNoMoveConnectedObjects.Checked then
GCadForm.FNoMoveConnectedObjects := True
else
GCadForm.FNoMoveConnectedObjects := False;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNoMoveConnectedObjectsExecute', E.Message);
end;
end;
procedure TFSCS_Main.TimerProcessMessagesTimer(Sender: TObject);
begin
try
TimerProcessMessages.Enabled := False;
Application.ProcessMessages;
TimerProcessMessages.Enabled := True;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.TimerProcessMessagesTimer', E.Message);
end;
end;
procedure TFSCS_Main.aRealignObjectExecute(Sender: TObject);
var
i: integer;
FFigure: TFigure;
SelectedList: TList;
// Tolik -- 03/10/2016 --
SavedUndoFlag: Boolean;
//
begin
if GPopupFigure = nil then
exit;
if ActiveMDIChild <> nil then
begin
SavedUndoFlag := GCadForm.FCanSaveForUndo;
try
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
ReAlignObject(TConnectorObject(GPopupFigure));
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRealignObjectExecute', E.Message);
end;
//GCadForm.FCanSaveForUndo := SavedUndoFlag;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.FormShow(Sender: TObject);
var
temps : string;
t : word;
innt: integer;
tmr: integer;
tempall: string;
temp3: string;
is_trial: boolean;
is_flash: boolean;
s: string;
begin
//Tolik 03/01/2025 --
GFtpConnectStr := ReadSetting(fnSCSIniFile, dtString, scReservFtp, idtConnectString, '');
mnuReserv.Enabled := GFtpConnectStr <> '';
//
// Tolik 06/11/2019 --
WindowState := wsMaximized;
Width := Screen.Width;
Height := Screen.Height;
//
//RecreateWnd;
{$IF Defined(SCS_PE) or DEFINED(SCS_SPA)}
aToolHouse.Visible := False;
//Tolik 17/08/2021 --
//tbCADToolsNoob.Width := cCADNoob_PE;
//tbCADToolsNoob2.Width := cCADNoob_PE;
tbCADToolsNoob.Width := cCADNoob_PE+20;
tbCADToolsNoob2.Width := cCADNoob_PE - 100;
tbCADToolsNoob2.Left := tbCADToolsNoob.Width + 25;
tbCADToolsNoob2.Top := tbCADToolsNoob.Top;
//
{$ELSEIF Defined(TELECOM)}
aToolHouse.Visible := False;
tbCADToolsNoob.Width := cCADNoob_TEL;
tbCADToolsNoob2.Width := cCADNoob_TEL;
{$ELSE}
aToolHouse.Visible := True;
tbCADToolsNoob.Width := cCADNoob_SCS;
//Tolik 17/08/2021 --
//tbCADToolsNoob2.Width := cCADNoob_SCS;
tbCADToolsNoob2.Width := cCADNoob_SCS - 100;
tbCADToolsNoob2.Left := tbCADToolsNoob.Width + 25;
tbCADToolsNoob2.Top := tbCADToolsNoob.Top;
//
{$IFEND}
if OpenFileAtStart <> '' then
TimerOpenStart.Enabled := True;
FSCS_Main.aRegHotKeys.Execute;
try
if isAutoShowPanel then
ShowFloatPanel;
except
end;
SetProjectChanged(False);
SetMenuStatus(False);
aManual_Interfaces.Visible := GUseVisibleInterfaces;
hints_prog_id := 'scs_ua';
{$if Defined(ES_GRAPH_SC)}
hints_prog_id := 'graph_sc';
{$ELSE}
{$IF DEFINED(SCS_PE)}
hints_prog_id := 'cp';
{$ELSE}
{$IF Defined(SCS_PANDUIT)}
hints_prog_id := 'panduitcad';
{$ELSE}
{$IF Defined (SCS_RF)}
hints_prog_id := 'scs_rf';
{$ELSE}
hints_prog_id := 'scs_ua';
{$IFEND}
{$IFEND}
{$IFEND}
{$IFEND}
hints_prog_id := hints_prog_id + '_' + FastReplace(versionEXE, '.', '');
{$IF Defined(TRIAL_SCS)}
hints_prog_id := hints_prog_id + '_' + 'trial';
{$IFEND}
stat_prog_id := hints_prog_id;
{$IF Defined(FLASH_SCS)}
stat_prog_id := stat_prog_id + '_' + 'flash';
{$IFEND}
is_trial := false;
is_flash := false;
{$IF Defined(TRIAL_SCS)}
is_trial := true;
{$IFEND}
{$IF Defined(FLASH_SCS)}
is_flash := true;
{$IFEND}
if GSendInfo then
begin
try
s := ProgID.Data1 + '-' + ProgID.Data2 + '-' +
ProgID.Data3 + '-' + ProgID.Data4 + '-' + DateID;
s := FormatForUser(s);
tempall := FormatForUser(ProgProtection.AnswerReg.Data1) +
'-' + FormatForUser(ProgProtection.AnswerReg.Data2);
if ProgProtection.AnswerReg.Data3 = '' then
ProgProtection.AnswerReg.Data3 := '1111';
temp3 := inttostr(strtoint('$' + FormatForProg(ProgProtection.AnswerReg.Data3)));
while length(temp3) < 5 do
insert('0', temp3, 1);
tempall := tempall + '-' + temp3 +
'-' + FormatForUser(ProgProtection.AnswerReg.Data4);
except
end;
try
SendStat('http://admin.cableproject.net/stat/sendstat.php', 'scs', stat_prog_id, VersionEXE, DateEXE, s, tempall, is_trial, is_flash);
except
end;
end;
F_HintW.Caption := '';
try
CheckAndShowHint('http://admin.cableproject.net/hints/' + hints_prog_id + '/index.html', hints_prog_id, FSCS_Main, 7, True);
except
end;
TimerNews.OnTimer := nil;
TimerNews.Enabled := False;
if PROG_NEWSID <> '-1' then
begin
try
temps := ExtractFilePath(application.ExeName)+'news\mess.txt';
case Get_News(application.Handle, PROG_NEWSID, SiteUrlNews + 'expert_news/expert_news' + IDESerialG + '.html',SiteUrlNews + 'expert_news/expert_news.html', temps, 2, t) of
0:begin
innt:=t*60*1000;
tmr:=innt;
TimerNews.Interval := tmr;
end;
// 1:begin ShowMessage('Îøèáêà çàãðóçêè áèáëèîòåêè'); end;
// 2:begin ShowMessage('Îøèáêà âûçîâà ïðîöåäóðû'); end;
// 3:begin ShowMessage('Îøèáî÷íûé ïàðàìåòð âûçîâà'); end;
// 4:begin ShowMessage('Îøèáêà âûïîëíåíèÿ ïðîöåäóðû'); end;
end;
Get_News(application.Handle, PROG_NEWSID, SiteUrlNews + 'expert_news/expert_news' + IDESerialG + '.html', SiteUrlNews + 'expert_news/expert_news.html', temps, 0, t);
except
end;
TimerNews.Enabled := True;
TimerNews.OnTimer := TimerNewsTimer;
end;
//Tolik 13/09/2021 --
if not GNewVesrChecked then
begin
try
GNewVesrChecked := True;
CheckForNewVersion(VersionEXE, BuildEXE, nil);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.CheckForNewVersion', E.Message);
end;
end;
end;
procedure TFSCS_Main.TimerOpenStartTimer(Sender: TObject);
begin
if GIsProgress or GNowOpen then
begin
end
else
begin
TimerOpenStart.Enabled := False;
GNowOpen := True;
try
if OpenFileAtStart <> '' then
if FileExists(OpenFileAtStart) then
F_ProjMan.LoadProjectFromFile(OpenFileAtStart);
except
end;
GNowOpen := False;
OpenFileAtStart := '';
end;
end;
procedure TFSCS_Main.TimerRefreshTimer(Sender: TObject);
begin
if Not TF_CAD(GRefreshCad.Owner).InGUIEvent then
begin
TF_CAD(GRefreshCad.Owner).InGUIEvent := True;
TimerRefresh.Enabled := False;
TimerRefresh.Interval := 50;
try
GRefreshCad.Refresh;
except
end;
TF_CAD(GRefreshCad.Owner).InGUIEvent := False;
//Tolik 31/10/2015
{if TF_CAD(GRefreshCad.Owner).GisAction then
GRefreshCad.EventEngine(95,1,'',0);}
if TF_CAD(GRefreshCad.Owner).GisEventWaiting then
GRefreshCad.EventEngine(95,1,'',0);
end
end;
procedure TFSCS_Main.TimerTracingIntervalTimer(Sender: TObject);
begin
GDropTracing := true;
FSCS_Main.TimerTracingInterval.Enabled := false;
//showmessage('TracingTimer');
end;
procedure TFSCS_Main.FOnAppActivate(Sender: TObject);
begin
if not GAppMinim then
begin
try
if MDIChildCount > 0 then
ReDrawCurrShadowOnCAD;
aRegHotKeys.Execute;
except
// on E: Exception do addExceptionToLogEx('TFSCS_Main.FOnAppActivate', E.Message);
end;
end;
end;
procedure TFSCS_Main.aClearGuidesExecute(Sender: TObject);
begin
try
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
GCadForm.PCad.ClearGuides;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
except//
on E: Exception do addExceptionToLogEx('TFSCS_Main.aClearGuidesExecute', E.Message);
end;
end;
procedure TFSCS_Main.AppMinima(Sender: TObject);
begin
GAppMinim := true;
end;
procedure TFSCS_Main.aSaveToIBDExecute(Sender: TObject);
begin
{$if Defined(ES_GRAPH_SC)}
SaveProjectForSC;
{$else}
//10.01.2012 SaveProjectToIBD(F_ProjMan.GSCSBase.CurrProject);
SaveProjectToSmeta(F_ProjMan.GSCSBase.CurrProject);
{$ifend}
end;
procedure TFSCS_Main.aToolSCSHDimLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
SetLayerForDraw; //16.05.2011 aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TSCSHDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aToolSCSVDimLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
SetLayerForDraw; //16.05.2011 aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TSCSVDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aToolWallRectExecute(Sender: TObject);
begin
try
if ActiveMDIChild <> nil then
begin
DropDownFirstToolbar; // Tolik 10/02/2021 --
RaiseActiveNet(GCadForm);
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 8;
GCadForm.PCad.SetTool(toFigure, 'TWallRect');
tbWallRectNoob.Down := True; // Tolik 10/02/2021 --
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aToolWallRectExecute', E.Message);
end;
end;
procedure TFSCS_Main.SetShowPathLengthType(aPathLengthType: TShowPathLengthType);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.SetShowPathLengthType(aPathLengthType);
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADShowPathLengthType := Ord(aPathLengthType);
SaveCADListParams(GCadForm.FCADListID, CurListParams);
RefreshCAD(GCadForm.PCad);
end;
end;
procedure TFSCS_Main.SetShowPathTraceLengthType(aPathLengthType: TShowPathLengthType);
var
CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
GCadForm.SetShowPathTraceLengthType(aPathLengthType);
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.CADShowPathTraceLengthType := Ord(aPathLengthType);
SaveCADListParams(GCadForm.FCADListID, CurListParams);
RefreshCAD(GCadForm.PCad);
end;
end;
procedure TFSCS_Main.SetToolArch(const aTool: string; aToolData: Integer=0);
begin
try
if ActiveMDIChild <> nil then
begin
RaiseActiveNet(GCadForm);
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 8;
GCadForm.PCad.SetTool(toFigure, aTool, aToolData);
tbCreateOnClickModeExpert.Down := True;
tbCreateOnClickModeNoob.Down := True;
tbSelectExpert.Down := False;
tbSelectNoob.Down := False;
end;
except
end;
end;
procedure TFSCS_Main.ShiftObjects(AShiftDirection: Integer);
var
i: integer;
ConnObjs: TList;
LineObjs: TList;
Objs: TList;
begin
if ActiveMDIChild <> nil then
begin
ConnObjs := TList.Create;
LineObjs := TList.Create;
Objs := TList.Create;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
begin
if TConnectorObject(GCadForm.PCad.Selection[i]).ConnectorType <> ct_clear then
ConnObjs.Add(TConnectorObject(GCadForm.PCad.Selection[i]));
end
else if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTOrthoLine) then
begin
if not TOrthoLine(GCadForm.PCad.Selection[i]).FIsRaiseUpDown then
LineObjs.Add(TOrthoLine(GCadForm.PCad.Selection[i]));
end
else
Objs.Add(TObject(TObject(GCadForm.PCad.Selection[i])));
end;
if (ConnObjs.Count > 0) or (LineObjs.Count > 0) or (Objs.Count > 0) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
case AShiftDirection of
sdUp:
begin
if ConnObjs.Count > 0 then
ObjectsShiftUp(ConnObjs);
if LineObjs.Count > 0 then
LinesShiftUp(LineObjs);
if Objs.Count > 0 then
MoveFigures(Objs, 0, -0.1);
end;
sdDown:
begin
if ConnObjs.Count > 0 then
ObjectsShiftDown(ConnObjs);
if LineObjs.Count > 0 then
LinesShiftDown(LineObjs);
if Objs.Count > 0 then
MoveFigures(Objs, 0, 0.1);
end;
sdLeft:
begin
if ConnObjs.Count > 0 then
ObjectsShiftLeft(ConnObjs);
if LineObjs.Count > 0 then
LinesShiftLeft(LineObjs);
if Objs.Count > 0 then
MoveFigures(Objs, -0.1, 0);
end;
sdRight:
begin
if ConnObjs.Count > 0 then
ObjectsShiftRight(ConnObjs);
if LineObjs.Count > 0 then
LinesShiftRight(LineObjs);
if Objs.Count > 0 then
MoveFigures(Objs, 0.1, 0);
end;
end;
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
if ConnObjs <> nil then
FreeAndNil(ConnObjs);
if LineObjs <> nil then
FreeAndNil(LineObjs);
if Objs <> nil then
FreeAndNil(Objs);
RefreshCAD(GCadForm.PCad);
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
// Tolik 09/08/2019 - -
procedure AutoFitBitMap(Bmp: TBMPObject);
var
ScaleKoef1: double;
ScaleKoef2: double;
begin
{ if GAutoScaleRasterImages then // ñêåéëèòü êàðòèíêó, òîëüêî åñëè âêëþ÷åíà ñîîòâåòñòâóþùàÿ îïöèÿ â íàñòðîéêàõ
// (Ìàñøòàáèðîâàòü ðàñòðîâûå èçîáðàæåíèÿ, ïðåâûøàþùèå ðàçìåðû ëèñòà)
begin
if (GCadForm.PCad.WorkWidth*0.95 < Bmp.ap3.x) or (GCadForm.PCad.WorkHeight*0.95 < Bmp.ap3.y) then
begin
ScaleKoef1 := GCadForm.PCad.WorkWidth*0.95 / Bmp.ap3.x;
ScaleKoef2 := GCadForm.PCad.WorkHeight*0.95 / Bmp.ap3.y;
if ScaleKoef1 < ScaleKoef2 then
Bmp.Scale(ScaleKoef1, ScaleKoef1, Bmp.ap1)
else
Bmp.Scale(ScaleKoef2, ScaleKoef2, Bmp.ap1)
end;
end;
}
ScaleKoef1 := (GCadForm.PCad.WorkWidth - Bmp.ap3.x) / 2;
ScaleKoef2 := (GCadForm.PCad.WorkHeight - Bmp.ap3.y) / 2;
Bmp.move(ScaleKoef1, ScaleKoef2);
end;
{
procedure AutoFitBitMap(Bmp: TBMPObject);
var
ScaleKoef1: double;
ScaleKoef2: double;
begin
if (GCadForm.PCad.WorkWidth*0.95 < Bmp.ap3.x) or (GCadForm.PCad.WorkHeight*0.95 < Bmp.ap3.y) then
begin
ScaleKoef1 := GCadForm.PCad.WorkWidth*0.95 / Bmp.ap3.x;
ScaleKoef2 := GCadForm.PCad.WorkHeight*0.95 / Bmp.ap3.y;
if ScaleKoef1 < ScaleKoef2 then
Bmp.Scale(ScaleKoef1, ScaleKoef1, Bmp.ap1)
else
Bmp.Scale(ScaleKoef2, ScaleKoef2, Bmp.ap1)
end;
ScaleKoef1 := (GCadForm.PCad.WorkWidth - Bmp.ap3.x) / 2;
ScaleKoef2 := (GCadForm.PCad.WorkHeight - Bmp.ap3.y) / 2;
Bmp.move(ScaleKoef1, ScaleKoef2);
end;
}
procedure TFSCS_Main.LoadSubstrateEx(aReplace: Boolean);
var
FName, FExt: string;
i: integer;
FDir: string;
OpenDialog: TOpenDialog;
Jpeg: TJpegImage;
Bmp: TBMPObject;
Bitmp: TBitmap;
BitmapHandle: TFigHandle;
Fig: TFigure;
SavedDrawingRect: TDoubleRect;
CanRestoreParams: Boolean;
Flag: Boolean;
procedure RemoveSubstrate;
begin
CanRestoreParams := false;
if aReplace then
begin
//SavedDrawingRect := GCadForm.PCad.GetDrawingRect;
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.SelectAll(lnSubstrate);
CanRestoreParams := GCadForm.PCad.Selection.Count > 0;
if CanRestoreParams then
begin
SavedDrawingRect := GCadForm.PCad.GetSelectionRect;
//GCadForm.DeleteLayerAllObjects(lnSubstrate, false);
GCadForm.DeleteSelection(false);
end;
end;
end;
procedure RestoreParams;
var
DrawingRect: TDoubleRect;
rp: TDoublePoint;
NewH, NewW, OldH, OldW: Double;
begin
if aReplace then
if CanRestoreParams then
begin
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.SelectAll(lnSubstrate);
if GCadForm.PCad.Selection.Count > 0 then
begin
DrawingRect := GCadForm.PCad.GetSelectionRect;
GCadForm.PCad.MoveSelection(SavedDrawingRect.Left - DrawingRect.Left, SavedDrawingRect.Top - DrawingRect.Top);
rp := DoublePoint(SavedDrawingRect.Left, SavedDrawingRect.Top);
NewH := DrawingRect.Bottom - DrawingRect.Top;
NewW := DrawingRect.Right - DrawingRect.Left;
OldH := SavedDrawingRect.Bottom - SavedDrawingRect.Top;
OldW := SavedDrawingRect.Right - SavedDrawingRect.Left;
GCadForm.PCad.ScaleSelection(OldW/NewW, OldH/NewH, rp);
end;
end;
end;
begin
bmp := Nil; // Tolik 09/08/2019 --
Flag := GisUserDimLine;
if ActiveMDIChild <> nil then
begin
OpenDialog := TOpenDialog.Create(Self);
OpenDialog.Title := cMain_Mes4;
OpenDialog.InitialDir := ExtractDirByCategoryType(dctBackgLayers);
OpenDialog.Filter := cMain_MesAllFormats +'|' + cMain_Mes5 + '|' + cMain_Mes124 +'|'+ cMain_Mes125_ +'|'+
cProgressExp_Msg9_1 +'|'+ GetDialogFilter(exdAll, '*');
OpenDialog.DefaultExt := 'dxf';
if OpenDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctBackgLayers, ExtractFileDir(OpenDialog.FileName));
//
FName := AnsiLowerCaseFileName(OpenDialog.FileName);
FExt := ExtractFileExt(FName);
if FExt = '.scb' then
begin
RemoveSubstrate;
LoadSubstrate(FName);
RestoreParams;
end
else if (FExt = '.dxf') or (FExt = '.dwg') or (FExt = '.svg') or (FExt = '.prn') or (FExt = '.plt') or (FExt = '.wmf') then
begin
RemoveSubstrate;
// Åñëè âîññòàíàâëèâàåì ðàçìåðû ïî ïðåäûäóùåé ïîäëîæêå, îò íå çàäàåì âîïðîñ íà ñ÷åò ìàñøòàáèðîâàíèÿ ÷åðåç CanRestoreParams
LoadDXFFileNew(GCadForm.PCad, cMain_Mes120, cMain_Mes124, FName, Not CanRestoreParams);
RestoreParams;
end
//Tolik 11/08/2021 --
//else if (FExt = '.bmp') or (FExt = '.jpg') or (FExt = '.jpeg') then
else if (FExt = '.bmp') or (FExt = '.jpg') or (FExt = '.jpeg') or (FExt = '.png') then
//
begin
RemoveSubstrate;
aSetSubstrateLayer.Execute;
if FExt = '.bmp' then
begin
// Toilk 09/08/2019 --
//Bmp := TBMPObject(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
BitmapHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if BitmapHandle <> -1 then
Bmp := TBMPObject(BitmapHandle)
else
GisUserDimLine := False; // Tolik 11/08/2021 --
//
end
else
begin
// Tolik 09/08/2019 --
//Bmp := TBMPObject(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
BitmapHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if BitmapHandle <> -1 then
Bmp := TBMPObject(BitmapHandle)
else
GisUserDimLine := False; // Tolik 11/08/2021 --
// Ýòî âîîáùå ïîêà ÷òî íåïîíÿòíî, çà÷åì ....
{Jpeg := TJpegImage.create;
Jpeg.LoadFromFile(FName);
Bmp.Picture.Width := Jpeg.Width;
Bmp.Picture.Height := Jpeg.Height;
Bmp.Picture.Canvas.Draw(0, 0, Jpeg);
Bmp.Picture.PixelFormat := pf24bit;
FreeAndNil(Jpeg);}
end;
RestoreParams;
//if Not aReplace then
if Not CanRestoreParams then
begin
if Bmp <> nil then // Tolik 09/08/2019 --
AutoFitBitmap(Bmp)
else
GisUserDimLine := False; // Tolik 11/08/2021 --
end;
//Tolik 11/08/2021 --
end
else if FExt = '.pdf' then
begin
Bitmp := CreateFPDFView.GetDocBitmap(cMain_Mes136, FName);
GisUserDimLine := Flag;
if Bitmp <> nil then
begin
try
RemoveSubstrate;
FName := ExtractSCSTempDir + GetUniqueFileName('', enBmp);
Bitmp.SaveToFile(FName);
Bitmp.Free;
//Tolik 03/09/2021 - -
aSetSubstrateLayer.Execute;
BitmapHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if BitmapHandle <> -1 then
begin
Fig := TFigure(BitmapHandle);
//Fig := TFigure(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
Fig.width := 0; // Óáèðàåì ðàìêó
GCadForm.PCad.DeselectAll(0);
DeleteFile(FName);
RestoreParams;
end
else
GisUserDimLine := False; // Tolik 11/08/2021 --
//if Not aReplace then
if Not CanRestoreParams then
begin
AutoFitBitmap(TBMPObject(Fig));
end;
except
ShowMessage(cMain_Mes6);
GisUserDimLine := False; // Tolik 11/08/2021 --
end;
RefreshCAD(GCadForm.PCad);
end
else
GisUserDimLine := False; // Tolik 11/08/2021 --
end;
GCadForm.PCad.DeselectAll(0);
except
ShowMessage(cMain_Mes6);
end;
{
FSCS_Main.tbSelectExpert.Down := False;
FSCS_Main.tbSelectNoob.Down := False;
FSCS_Main.tbPanExpert.Down := True;
FSCS_Main.tbPanNoob.Down := True;
FSCS_Main.aToolPan.Execute;
}
RefreshCAD(GCadForm.PCad);
end
else
GisUserDimLine := False; // Tolik 11/08/2021 --
OpenDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.SetFigureAsEndObject(aCad: TForm; aFigure: TFigure);
var
EndPoint: TFigure;
begin
try
if aFigure = nil then
exit;
try
EndPoint := aFigure;
if CheckFigureByClassName(aFigure, cTConnectorObject) then
TConnectorObject(EndPoint).AsEndPoint := True
else
if CheckFigureByClassName(aFigure, cTHouse) then
THouse(EndPoint).AsEndPoint := True;
if EndPoint = GEndPoint then
Exit;
except
EndPoint := Nil;
end;
// ñáðîñèòü áûâøèé ÊÎ
if GEndPoint <> nil then
begin
if CheckFigureByClassName(GEndPoint, cTConnectorObject) then
TConnectorObject(GEndPoint).AsEndPoint := False
else
if CheckFigureByClassName(GEndPoint, cTHouse) then
THouse(GEndPoint).AsEndPoint := False;
if (GListWithEndPoint <> aCad) and (GListWithEndPoint <> nil) then
begin
RefreshCAD(GListWithEndPoint.PCad);
RefreshCAD(GListWithEndPoint.PCad);
end;
RefreshCAD(TF_CAD(aCad).PCad);
GListWithEndPoint := Nil;
end;
RefreshCAD(TF_CAD(aCad).PCad);
GCadForm.mProtocol.Lines.Add(cEndPoints_Mes1 + EndPoint.Name + cEndPoints_Mes2);
// ïåðåíàçíà÷èòü íîâûé
GEndPoint := EndPoint;
GListWithEndPoint := GCadForm;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.SetFigureAsEndObject', E.Message);
end;
end;
procedure TFSCS_Main.CustomizeNewList; //27.06.2013
var
IDFloor: Integer;
ListForPassage: TF_CAD;
SavedCAD: TF_CAD;
WasPausedProgress: Boolean;
OldUserDimLine: Boolean;
begin
//27.06.2013 - ïîäãðóçêà ïîäëîæêè ñ çàìåíîé ñóùåñòâóþùåé, ñîõðàíÿÿ ðàçìåðû/ïîçèöèè
Application.ProcessMessages;
WasPausedProgress := False;
if GIsProgress then
begin
PauseProgress(True);
WasPausedProgress := True;
end;
if not GisListCopy then //Tolik 16/06/2021 -- íå çàãðóæàòü ïîäëîæêó, åñëè êîïèÿ ëèñòà
begin
//Tolik 11/08/2021 --
//LoadSubstrateEx(true);
GisUserDimLine := True;
LoadSubstrateEx(true);
OldUserDimLine := GisUserDimLine;
//
end;
if WasPausedProgress then
PauseProgress(False);
{//25.06.2013 - âûáîð ìåñòà äëÿ ì-ý íà íîâîì ëèñòå, Ïîêà ÍÅ ÓÄÀËßÒÜ!!!!!!!!
IDFloor := GetListIDForCreatePassage(GCadForm.FCADListID, -1);
ListForPassage := nil;
if IDFloor > 0 then
begin
ListForPassage := GetListByID(IDFloor);
if ListForPassage <> nil then
begin
// Òóëçà ñîçäàíèÿ ì-ý ïåðåõîäà
if MessageQuastYN(cMain_Mes139) = IDYES then
begin
Application.ProcessMessages;
if GCadForm.CurrentLayer <> lnSCSCommon then
GCadForm.CurrentLayer := lnSCSCommon;
GCadForm.PCad.SetTool(toFigure, TBetweenFloorUpVertex.ClassName);
end;
end;
end;}
{$if Not Defined(ES_GRAPH_SC)}
//25.06.2013 - âûáîð ìåñòà äëÿ ì-ý íà ëèñòå íèæå
IDFloor := GetListIDForCreatePassage(GCadForm.FCADListID, -1);
ListForPassage := nil;
if IDFloor > 0 then
begin
ListForPassage := GetListByID(IDFloor);
if ListForPassage <> nil then
begin
// Tolik 21/04/2017 --
WasPausedProgress := False;
if GIsProgress then
begin
PauseProgress(True);
WasPausedProgress := True;
end;
//
{
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
tbSCSHDimLineExpert.click
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
}
// Òóëçà ñîçäàíèÿ ì-ý ïåðåõîäà
if MessageQuastYN(cMain_Mes139) = IDYES then
begin
Application.ProcessMessages;
SavedCAD := GCADForm;
try
GCADForm := ListForPassage;
GCadForm.BringToFront;
if GCadForm.CurrentLayer <> lnSCSCommon then
GCadForm.CurrentLayer := lnSCSCommon;
GCadForm.PCad.SetTool(toFigure, TBetweenFloorUpVertex.ClassName);
ShowHintRzR(cMain_Mes145, 5000); // Tolik 23/09/2021 --
finally
//Tolik 12/08/2021 --
if not GisListCopy then
GisUserDimLine := OldUserDimLine;
//
//GCADForm := SavedCAD;
//GCadForm.BringToFront;
end;
end
else
begin
//Tolik 11/08/2021 --
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
end;
if WasPausedProgress then
PauseProgress(False);
end;
end
else
begin
//Tolik 11/08/2021 --
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
end;
{$ifend}
end;
procedure TFSCS_Main.aToolWallPathExecute(Sender: TObject);
begin
try
if ActiveMDIChild <> nil then
begin
DropDownFirstToolbar; // Tolik 10/02/2021 --
RaiseActiveNet(GCadForm);
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 8;
GCadForm.PCad.SetTool(toFigure, 'TWallPath');
tbWallPathNoob.Down := True;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aToolWallPathExecute', E.Message);
end;
end;
procedure TFSCS_Main.aToolHouseExecute(Sender: TObject);
begin
try
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 2;
GCadForm.PCad.SetTool(toFigure, 'THouseTool');
DropDownFirstToolbar; // Tolik 10/02/2021 --
tbHouseNoob.Down := True;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aToolHouseExecute', E.Message);
end;
end;
// 0 - Óäàëèòü ñåãìåíò
procedure TFSCS_Main.aDeleteWallPathExecute(Sender: TObject);
var
CurNet: TNet;
mess: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
CurNet := TNet(GCadForm.PCad.Selection[0]);
if CurNet.SelPath <> nil then
begin
mess := cMain_Mes37;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes38, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes38), MB_YESNO) = IDYes then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, (CurNet.FComponID <> 0), False);
GCadForm.FCanSaveForUndo := false;
end;
CurNet.DeleteSelected;
// Tolik 18/10/2016 --
// åñëè óäàëåíà ïîñëåäíÿÿ ñòåíà - óäàëèòü è êîìíàòó âìåñòå ñ ïîëîì è ïîòîëêîì, ÷òîá íå âàëÿëàñü â ÏÌ
if CurNet.Paths.Count = 0 then
begin
CurNet.DeleteNet;
RefreshCAD(GCadForm.PCad);
RaiseActiveNet(GCadForm);
end
else
RefreshCAD(GCadForm.PCad);
//
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteWallPathExecute', E.Message);
end;
end;
// 1 - Óäàëèòü ïëàí
procedure TFSCS_Main.aDeleteWallRectExecute(Sender: TObject);
var
i: integer;
CurNet: TNet;
CurPath: TNetPath;
CurCol: TNetCol;
mess: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
mess := cMain_Mes39;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes40, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes40), MB_YESNO) = IDYes then
begin
CurNet := TNet(GCadForm.PCad.Selection[0]);
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, (CurNet.FcomponID <> 0), False);
GCadForm.FCanSaveForUndo := false;
end;
//04.06.2010
//i := 0;
//while i < CurNet.Paths.Count do
//begin
// CurPath := TNetPath(CurNet.Paths[i]);
// CurNet.DeletePath(CurPath);
//end;
//i := 0;
//while i < CurNet.Structs.Count do
//begin
// CurCol := TNetCol(CurNet.Structs[i]);
// CurNet.DeleteStruct(CurCol);
//end;
//GCadForm.PCad.Figures.Remove(CurNet);
CurNet.DeleteNet;
RefreshCAD(GCadForm.PCad);
RaiseActiveNet(GCadForm);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteWallRectExecute', E.Message);
end;
end;
// 2 - Ðàçäåëèòü ñåãìåíò
procedure TFSCS_Main.aDivSelPathExecute(Sender: TObject);
var
CurNet: TNet;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
CurNet := TNet(GCadForm.PCad.Selection[0]);
if CurNet.SelPath <> nil then
begin
// *UNDO*
//if GCadForm.FCanSaveForUndo then
//begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := false;
//end;
GCadForm.BeginSaveForUndo(uat_None, CurNet.FComponID <> 0, False);
try
CurNet.DivSelPath;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
finally
GCadForm.EndSaveForUndo;
end;
//GCadForm.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDivSelPathExecute', E.Message);
end;
end;
// 3 - Óñòàíîâèòü øèðèíó ñåãìåíòà
procedure TFSCS_Main.aSetWallPathWidthExecute(Sender: TObject);
var
i, j: integer;
tempstr: string;
CurSelPath: TNetPath;
RulerModeStr: String;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
tempstr := '';
if GCadForm.PCad.RulerMode = rmPage then
RulerModeStr := cCadClasses_Mes6
else
if GCadForm.PCad.RulerMode = rmWorld then
RulerModeStr := GetUOMString(GCurrProjUnitOfMeasure);
tempstr := FormatFloat(ffMask, MetreToUOM(CurSelPath.Width * GCadForm.PCad.MapScale / 1000));
if InputQuery(cMain_Mes59, cMain_Mes60 + RulerModeStr, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0.1 then
tempstr := '0,1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
//CurSelPath.Width := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
// *UNDO*
//if GCadForm.FCanSaveForUndo then
//begin
// GCadForm.SaveForUndo(uat_None, False, False);
// GCadForm.FCanSaveForUndo := false;
//end;
//GCadForm.BeginSaveForUndo(uat_None, CurSelPath.FComponID <> 0, False);
GCadForm.BeginSaveForUndo(uat_None, False, False);
try
CurSelPath.Width := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
// èçìåíåíèå øèðèíû îêîí è äâåðåé
for j := 0 to CurSelPath.Doors.Count - 1 do
begin
TNetDoor(CurSelPath.Doors[j]).Width := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
end;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if CurSelPath.FComponID = 0 then
GArchEngine.SetLastObjSize(aoskPathWidth, CurSelPath.Width);
finally
GCadForm.EndSaveForUndo;
end;
//GCadForm.FCanSaveForUndo := True;
if CurSelPath.FComponID <> 0 then
begin
F_ProjMan.RefreshNode(false);
LoadArchObjPropsFromCAD(GetArchObjByCADObj(CurSelPath));
LoadArchObjPropsToCAD(GetArchObjByCADObj(CurSelPath));
end;
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetWallPathWidthExecute', E.Message);
end;
end;
// 4 - Óñòàíîâèòü øèðèíó âñåõ ñåãìåíòîâ
procedure TFSCS_Main.aSetAllWallPathWidthExecute(Sender: TObject);
var
i, j: integer;
tempstr: string;
CurPath: TNetPath;
CurSelPath: TNetPath;
RulerModeStr: string;
value: Double;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
tempstr := '';
if GCadForm.PCad.RulerMode = rmPage then
RulerModeStr := cCadClasses_Mes6
else
if GCadForm.PCad.RulerMode = rmWorld then
RulerModeStr := GetUOMString(GCurrProjUnitOfMeasure);
tempstr := FormatFloat(ffMask, MetreToUOM(CurSelPath.Width * GCadForm.PCad.MapScale / 1000));
if InputQuery(cMain_Mes61, cMain_Mes62 + RulerModeStr, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0.1 then
tempstr := '0,1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Value := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
TNet(GCadForm.PCad.Selection[0]).UpdateWallThick(Value);
RefreshCAD(GCadForm.PCad);
GCadForm.FCanSaveForUndo := True;
if CurSelPath.FComponID = 0 then
GArchEngine.SetLastObjSize(aoskPathWidth, Value);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetAllWallPathWidthExecute', E.Message);
end;
end;
// 5 - Äîáàâèòü îêíî
procedure TFSCS_Main.aAddWindowExecute(Sender: TObject);
var
Net: TNet;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
Net := TNet(GCadForm.PCad.Selection[0]);
if Net.SelPath <> nil then
begin
if Net.SelPath.FComponID = 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
//04.06.2013 TNet(GCadForm.PCad.Selection[0]).AddWindow;
TNet(GCadForm.PCad.Selection[0]).AddWindow(GArchEngine.GetLastDoorObjSize(dotWindow, -1));
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := True;
end
else
begin
CreateArchObjWizardByCAD(ctArhWindow, GCadForm, Net.SelPath);
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aAddWindowExecute', E.Message);
end;
end;
// 6 - Äîáàâèòü äâåðü
procedure TFSCS_Main.aAddDoorExecute(Sender: TObject);
var
Net: TNet;
Len: Double;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
Net := TNet(GCadForm.PCad.Selection[0]);
if Net.SelPath <> nil then
begin
if Net.SelPath.FComponID = 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
//04.06.2013 TNet(GCadForm.PCad.Selection[0]).AddDoor;
TNet(GCadForm.PCad.Selection[0]).AddDoor(dotDoor, GArchEngine.GetLastDoorObjSize(dotDoor, -1));
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end
else
begin
CreateArchObjWizardByCAD(ctArhDoor, GCadForm, Net.SelPath);
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aAddDoorExecute', E.Message);
end;
end;
// 7 - Äîáàâèòü êîëîííó
procedure TFSCS_Main.aAddColumnExecute(Sender: TObject);
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
TNet(GCadForm.PCad.Selection[0]).AddCol;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aAddColumnExecute', E.Message);
end;
end;
// 8 - Óäàëèòü îêíî/äâåðü
procedure TFSCS_Main.aDeleteWindowDoorExecute(Sender: TObject);
var
mess: string;
CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.ActiveDoor <> nil then
begin
mess := cMain_Mes41;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes42, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes42), MB_YESNO) = IDYes then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurSelPath.DeleteDoor;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteWindowDoorExecute', E.Message);
end;
end;
// 9 - Óäàëèòü êîëîííó
procedure TFSCS_Main.aDeleteColumnExecute(Sender: TObject);
var
mess: string;
CurSelCol: TNetCol;
begin
try
// Tolik 18/10/2016-- ñþäà ìîæåì ïîïàñòü äàæå, êîãäà íà ÊÀÄå íè÷åãî íå âûáðàíî(íàïðèìåð, ïîñëå óäàëåíèÿ êîìíàòû ïîëíîñòüþ), òàê ÷òî ïîëó÷èì ÀÂ,
// ïîýòîìó ñíà÷àëà ïðîâåðÿåì, à âûáðàíî ëè ÷òî-íèáóäü òàì âîîáùå, à óæ ïîòîì -- ïîæàëòå óäàëÿòü
if GCadForm.PCad.Selection.Count > 0 then
begin
//
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelCol <> nil then
begin
mess := cMain_Mes43;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes44, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes44), MB_YESNO) = IDYes then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurSelCol := TNet(GCadForm.PCad.Selection[0]).SelCol;
TNet(GCadForm.PCad.Selection[0]).DeleteStruct(CurSelCol);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDeleteColumnExecute', E.Message);
end;
end;
// 10 - Óñòàâíîâèòü ðàçìåð äâåðè/îêíà
procedure TFSCS_Main.aSetSizeWindowDoorExecute(Sender: TObject);
var
CurDoor: TNetDoor;
tempstr: string;
RulerModeStr: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
if TNetPath(TNet(GCadForm.PCad.Selection[0]).SelPath).ActiveDoor <> nil then
begin
CurDoor := TNetPath(TNet(GCadForm.PCad.Selection[0]).SelPath).ActiveDoor;
tempstr := '';
if GCadForm.PCad.RulerMode = rmPage then
RulerModeStr := cCadClasses_Mes6
else
RulerModeStr := GetUOMString(GCurrProjUnitOfMeasure);
tempstr := FormatFloat(ffMask, MetreToUOM(CurDoor.Len * GCadForm.PCad.MapScale / 1000));
if InputQuery(cMain_Mes63, cMain_Mes64 + RulerModeStr, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0.1 then
tempstr := '0,1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurDoor.Len := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
CurDoor.DoResize;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
if CurDoor.FComponID = 0 then
GArchEngine.SetLastDoorObjSize(CurDoor.DoorObjType, CurDoor.Len);
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetSizeWindowDoorExecute', E.Message);
end;
end;
// 11 - Óñòàâíîâèòü óãîë êîëîííû
procedure TFSCS_Main.aSetColumnAngleExecute(Sender: TObject);
var
tempstr: string;
CurCol: TNetCol;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelCol <> nil then
begin
CurCol := TNet(GCadForm.PCad.Selection[0]).SelCol;
tempstr := FormatFloat(ffMask, CurCol.Angle * 180 / pi);
if InputQuery(cMain_Mes65, cMain_Mes66, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0 then
tempstr := '0';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurCol.Angle := StrToFloat_My(Tempstr) / 180 * pi;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetColumnAngleExecute', E.Message);
end;
end;
// 12 - Óñòàâíîâèòü âûñîòó êîëîííû
procedure TFSCS_Main.aSetColumnHeightExecute(Sender: TObject);
var
RulerModeStr: string;
tempstr: string;
CurCol: TNetCol;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelCol <> nil then
begin
CurCol := TNet(GCadForm.PCad.Selection[0]).SelCol;
tempstr := '';
if GCadForm.PCad.RulerMode = rmPage then
RulerModeStr := cCadClasses_Mes6
else
RulerModeStr := cCadClasses_Mes6;
tempstr := FormatFloat(ffMask, MetreToUOM(CurCol.h * GCadForm.PCad.MapScale / 1000));
if InputQuery(cMain_Mes67, cMain_Mes68 + RulerModeStr, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0.1 then
tempstr := '0,1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurCol.h := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetColumnHeightExecute', E.Message);
end;
end;
// 13 - Óñòàâíîâèòü øèðèíû êîëîííû
procedure TFSCS_Main.aSetColumnWidthExecute(Sender: TObject);
var
RulerModeStr: string;
tempstr: string;
CurCol: TNetCol;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelCol <> nil then
begin
CurCol := TNet(GCadForm.PCad.Selection[0]).SelCol;
tempstr := '';
if GCadForm.PCad.RulerMode = rmPage then
RulerModeStr := cCadClasses_Mes6
else
RulerModeStr := GetUOMString(GCurrProjUnitOfMeasure);
tempstr := FormatFloat(ffMask, MetreToUOM(CurCol.w * GCadForm.PCad.MapScale / 1000));
if InputQuery(cMain_Mes69, cMain_Mes70 + RulerModeStr, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 0.1 then
tempstr := '0,1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurCol.w := UOMToMetre(StrToFloat_My(Tempstr) * 1000 / GCadForm.PCad.MapScale);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetColumnWidthExecute', E.Message);
end;
end;
// 14 - Óñòàíîâèòü øèðèíó ëèíèé ñåãìåíòà
procedure TFSCS_Main.aSetPathLineWidthExecute(Sender: TObject);
var
CurSelPath: TNetPath;
tempstr: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
tempstr := '';
tempstr := IntToStr(CurSelPath.FPathWidth);
if InputQuery(cMain_Mes71, cMain_Mes72, tempstr) then
begin
try
StrToInt(tempstr);
if (StrToInt(tempstr) < 1) or (StrToInt(tempstr) > 7) then
begin
ShowMessage(cMain_Mes73);
Exit;
end;
except
ShowMessage(cMain_Mes74);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurSelPath.FPathWidth := StrToInt(Tempstr);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetPathLineWidthExecute', E.Message);
end;
end;
// 15 - Óñòàíîâèòü ñòèëü ëèíèé ñåãìåíòà
procedure TFSCS_Main.aSetPathLineStyleExecute(Sender: TObject);
var
CurSelPath: TNetPath;
tempstr: string;
StyleIndex: Integer;
mess: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
if CurSelPath.FPathWidth > 1 then
begin
ShowMessage(cMain_Mes75);
Exit;
end;
tempstr := '';
StyleIndex := Ord(CurSelPath.FPathStyle);
mess := cMain_Mes76;
tempstr := IntToStr(StyleIndex);
if InputQuery(cMain_Mes77, mess, tempstr) then
begin
try
StrToInt(tempstr);
if (StrToInt(tempstr) < 0) or (StrToInt(tempstr) > 6) then
begin
ShowMessage(cMain_Mes78);
Exit;
end;
except
ShowMessage(cMain_Mes74);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
StyleIndex := StrToInt(Tempstr);
CurSelPath.FPathStyle := TPenStyle(StyleIndex);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetPathLineStyleExecute', E.Message);
end;
end;
// 16 - Óñòàíîâèòü øèðèíó ëèíèé âñåõ ñåãìåíòîâ
procedure TFSCS_Main.aSetAllPathLineWidthExecute(Sender: TObject);
var
i: integer;
tempstr: string;
CurSelPath: TNetPath;
CurPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
tempstr := '';
tempstr := IntToStr(CurSelPath.FPathWidth);
if InputQuery(cMain_Mes79, cMain_Mes80, tempstr) then
begin
try
StrToInt(tempstr);
if (StrToInt(tempstr) < 1) or (StrToInt(tempstr) > 7) then
begin
ShowMessage(cMain_Mes73);
Exit;
end;
except
ShowMessage(cMain_Mes74);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
for i := 0 to TNet(GCadForm.PCad.Selection[0]).Paths.Count - 1 do
begin
CurPath := TNetPath(TNet(GCadForm.PCad.Selection[0]).Paths[i]);
CurPath.FPathWidth := StrToInt(Tempstr);
end;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetAllPathLineWidthExecute', E.Message);
end;
end;
// 17 - Óñòàíîâèòü ñòèëü ëèíèé âñåõ ñåãìåíòîâ
procedure TFSCS_Main.aSetAllPathLineStyleExecute(Sender: TObject);
var
i: integer;
tempstr: string;
mess: string;
StyleIndex: Integer;
CurSelPath: TNetPath;
CurPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath <> nil then
begin
tempstr := '';
StyleIndex := Ord(CurSelPath.FPathStyle);
mess := cMain_Mes76;
tempstr := IntToStr(StyleIndex);
if InputQuery(cMain_Mes77, mess, tempstr) then
begin
try
StrToInt(tempstr);
if (StrToInt(tempstr) < 0) or (StrToInt(tempstr) > 5) then
begin
ShowMessage(cMain_Mes78);
Exit;
end;
except
ShowMessage(cMain_Mes74);
Exit;
end;
if tempstr <> '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
StyleIndex := StrToInt(Tempstr);
for i := 0 to TNet(GCadForm.PCad.Selection[0]).Paths.Count - 1 do
begin
CurPath := TNetPath(TNet(GCadForm.PCad.Selection[0]).Paths[i]);
CurPath.FPathStyle := TPenStyle(StyleIndex);
end;
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetAllPathLineStyleExecute', E.Message);
end;
end;
procedure TFSCS_Main.LoadStamp(aFName: string);
var
i, j: integer;
LHandle: integer;
BlockFig: TBlock;
InFigure: TFigure;
begin
try
RemoveFrameFromList(GCadForm);
LHandle := GCadForm.PCad.GetLayerHandle(7);
try
BlockFig := TBlock(GCadForm.PCad.InsertBlockwithFileName(7, aFName, GCadForm.PCad.WorkWidth / 2 - 2.5, GCadForm.PCad.WorkHeight / 2));
SetAllStampFiguresLayer(TFigureGrp(BlockFig), LHandle);
SetAllStampTextsFont(TFigureGrp(BlockFig), GCadForm.FFontName);
// âûñòàâèòü ïîäïèñè
GCadForm.FFrameFileName := aFName;
LoadCaptionsOnFrame(GCadForm, GCadForm.FCadStampType);
except
GCadForm.FFrameFileName := '';
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.LoadStamp', E.Message);
end;
end;
procedure TFSCS_Main.SaveStamp(aFName: string);
var
i: integer;
FFigure: TFigure;
LHandle: Integer;
begin
try
GCadForm.PCad.DeselectAll(0);
GCadForm.PCad.SelectAll(7);
{//17.11.2011
if GCadForm.FFrameProjectName <> nil then
GCadForm.FFrameProjectName.Deselect;
if GCadForm.FFrameListName <> nil then
GCadForm.FFrameListName.Deselect;
if GCadForm.FFrameCodeName <> nil then
GCadForm.FFrameCodeName.Deselect;
if GCadForm.FFrameIndexName <> nil then
GCadForm.FFrameIndexName.Deselect;}
for i := 0 to GCadForm.FFrameObjects.Count - 1 do
begin
FFigure := TFigure(GCadForm.FFrameObjects.Objects[i]);
if FFigure <> nil then
FFigure.Deselect;
end;
RefreshCAD(GCadForm.PCad);
GCadForm.PCad.GroupSelection;
GCadForm.PCad.MakeSelectionBlock(aFName);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.SaveStamp', E.Message);
end;
end;
procedure TFSCS_Main.aLoadStampExecute(Sender: TObject);
var
FName: string;
FDir: string;
OpenDialog: TOpenDialog;
begin
try
if ActiveMDIChild <> nil then
begin
OpenDialog := TOpenDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\Stamp') then
FDir := FDir + '\Stamp';
OpenDialog.Title := cMain_Mes81;
OpenDialog.InitialDir := ExtractDirByCategoryType(dctStamps);//ExtractSaveDirForCategory('Stamp');//FDir;
OpenDialog.DefaultExt := 'sch';
OpenDialog.Filter := cMain_Mes82;
if OpenDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctStamps, ExtractFileDir(OpenDialog.FileName));
//
FName := OpenDialog.FileName;
LoadStamp(FName);
GCadForm.PCad.DeselectAll(0);
except
ShowMessage(cMain_Mes6);
end;
RefreshCAD(GCadForm.PCad);
end;
OpenDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aLoadStampExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSaveStampExecute(Sender: TObject);
var
FName: string;
FDir: string;
SaveDialog: TSaveDialog;
begin
try
if ActiveMDIChild <> nil then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\Stamp') then
FDir := FDir + '\Stamp';
SaveDialog.Title := cMain_Mes83;
SaveDialog.InitialDir := ExtractDirByCategoryType(dctStamps);//ExtractSaveDirForCategory('Stamp');//FDir;
SaveDialog.DefaultExt := 'sch';
SaveDialog.Filter := cMain_Mes82;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctStamps, ExtractFileDir(SaveDialog.FileName));
//
FName := SaveDialog.FileName;
SaveStamp(FName);
except
ShowMessage(cMain_Mes8);
end;
end;
SaveDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSaveStampExecute', E.Message
);
end;
end;
procedure TFSCS_Main.aWallPathShowLengthExecute(Sender: TObject);
var
CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.FShowLength then
CurSelPath.FShowLength := False
else
CurSelPath.FShowLength := True;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aWallPathShowLengthExecute', E.Message);
end;
end;
procedure TFSCS_Main.SaveProjectForSC;
var
FName: string;
FDir: string;
SaveDialog: TSaveDialog;
begin
try
if ActiveMDIChild <> nil then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\Save') then
FDir := FDir + '\Save';
SaveDialog.Title := 'Cîõðàíèòü ïàðàìåòðû îáúåêòîâ...';
SaveDialog.InitialDir := ExtractFileDir(Application.ExeName) + '\Save';
SaveDialog.DefaultExt := 'scp';
SaveDialog.Filter := 'Ôàéëû ïàðàìåòðîâ îáúåêòîâ (*.scp)|*.scp';
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
begin
try
FName := SaveDialog.FileName;
ExpProjToStroyCalcFile(F_ProjMan.GSCSBase.CurrProject, FName);
except
//ShowMessage(cMain_Mes8);
end;
end;
SaveDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSaveFPlanExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSaveFPlanExecute(Sender: TObject);
var
FName: string;
FDir: string;
SaveDialog: TSaveDialog;
begin
try
if ActiveMDIChild <> nil then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.ArchPlan') then
FDir := FDir + '\.ArchPlan';
SaveDialog.Title := cMain_Mes84;
SaveDialog.InitialDir := ExtractDirByCategoryType(dctArchPlans);//ExtractSaveDirForCategory('.ArchPlan');//FDir;
SaveDialog.DefaultExt := 'sca';
SaveDialog.Filter := cMain_Mes85;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
if SaveDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctArchPlans, ExtractFileDir(SaveDialog.FileName));
//
FName := SaveDialog.FileName;
SaveFPlan(FName);
except
ShowMessage(cMain_Mes8);
end;
end;
SaveDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSaveFPlanExecute', E.Message);
end;
end;
procedure TFSCS_Main.aLoadFPlanExecute(Sender: TObject);
var
FName: string;
i: integer;
FDir: string;
OpenDialog: TOpenDialog;
begin
try
if ActiveMDIChild <> nil then
begin
OpenDialog := TOpenDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.ArchPlan') then
FDir := FDir + '\.ArchPlan';
OpenDialog.Title := cMain_Mes86;
OpenDialog.InitialDir := ExtractDirByCategoryType(dctArchPlans);//ExtractSaveDirForCategory('.ArchPlan');//FDir;
OpenDialog.DefaultExt := 'sca';
OpenDialog.Filter := cMain_Mes85;
if OpenDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctArchPlans, ExtractFileDir(OpenDialog.FileName));
//
GisUserDimLine := True;
FName := OpenDialog.FileName;
LoadFPlan(FName);
GCadForm.PCad.DeselectAll(0);
//Tolik 11/08/2021 --
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
except
ShowMessage(cMain_Mes6);
end;
RefreshCAD(GCadForm.PCad);
end;
OpenDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aLoadFPlanExecute', E.Message);
end;
end;
procedure TFSCS_Main.tbExtProtocolClick(Sender: TObject);
begin
try
ShowLog;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.tbExtProtocolClick', E.Message);
end;
end;
procedure TFSCS_Main.N113Click(Sender: TObject);
var
FileName: string;
begin
try
FileName := ExeDir + '\Docs\UserGuide.doc';
{$IF Defined(SCS_PE) or Defined(SCS_SPA)}
FileName := ExeDir + '\Docs\UserGuide.pdf';
{$IFEND}
if FileExists(FileName) then
begin
ShellExecute(FSCS_Main.Handle, 0, PChar(FileName), 0, 0, 0);
end
else
ShowMessage(cMain_Mes87);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aUserGuideExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDesignBoxCaptionHeightExecute(Sender: TObject);
var
i: integer;
tempstr: string;
CurText: TText;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TText') then
begin
CurText := TText(GCadForm.PCad.Selection[0]);
tempstr := FormatFloat(ffMask, CurText.Height);
if InputQuery(cMain_Mes88, cMain_Mes89, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 1 then
tempstr := '1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), 'TText') then
begin
CurText := TText(GCadForm.PCad.Selection[i]);
CurText.Height := StrToFloat_My(tempstr);
CurText.Create(CurText.ActualPoints[1].x, CurText.ActualPoints[1].y,
CurText.Height, CurText.CWidth, CurText.Text, CurText.Font.Name, CurText.Font.Charset,
CurText.color, CurText.LayerHandle, mydsNormal, GCadForm.PCad);
end;
end;
RefreshCAD(GCadForm.PCad);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDesignBoxCaptionHeightExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDesignBoxCaptionWidthExecute(Sender: TObject);
var
i: integer;
tempstr: string;
CurText: TText;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TText') then
begin
CurText := TText(GCadForm.PCad.Selection[0]);
tempstr := FormatFloat(ffMask, CurText.width);
if InputQuery(cMain_Mes90, cMain_Mes91, tempstr) then
begin
try
StrToFloat_My(tempstr);
if StrToFloat_My(tempstr) < 1 then
tempstr := '1';
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), 'TText') then
begin
CurText := TText(GCadForm.PCad.Selection[i]);
CurText.CWidth := StrToFloat_My(tempstr);
CurText.Create(CurText.ActualPoints[1].x, CurText.ActualPoints[1].y,
CurText.Height, CurText.CWidth, CurText.Text, CurText.Font.Name, CurText.Font.Charset,
CurText.color, CurText.LayerHandle, mydsNormal, GCadForm.PCad);
end;
end;
RefreshCAD(GCadForm.PCad);
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDesignBoxCaptionWidthExecute', E.Message);
end;
end;
procedure TFSCS_Main.aManual_SuppliesKindsExecute(Sender: TObject);
begin
try
ShowSuppliesKinds;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aManual_SuppliesKindsExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMasterCableChannelExecute(Sender: TObject);
begin
try
MasterCableCanalTracing;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMasterCableChannelExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMasterCableTracingExecute(Sender: TObject);
begin
try
MasterCableTracing;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMasterCableTracingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aCreateBlockToFileExecute(Sender: TObject);
var
BlkName: string;
FullBlkName: string;
FullBlkNameOr: string;
FullBlkName1: string;
FullBlkName2: string;
MetaFile: TMetafile;
Bitmap: TBitmap;
FDir: string;
//08.09.2011 Buffer: array[0..1023] of Char;
TempPath: string;
SaveDialog: TSaveDialog;
FileName: String;
SelList: TList;
i: integer;
Block: TBlock;
begin
try
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.SelectedCount > 0 then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.blk') then
FDir := FDir + '\.blk';
SaveDialog.Title := cMain_Mes92;
SaveDialog.InitialDir := FDir;
SaveDialog.DefaultExt := 'blk'; //11.03.2012 '';
SaveDialog.Filter := cMain_Mes52;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
SaveDialog.OnCanClose := SDCreateBlockToFileCanClose; // äëÿ ïðîâåðêè ñóùåñòâîâàíèÿ bmp
if SaveDialog.Execute then
begin
FileName := ExtractFilePathOnly(SaveDialog.FileName);
FullBlkName := FileName;
if GCadForm.PCad.SelectedCount = 2 then
begin
SelList := TList.Create;
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
SelList.Add(GCadForm.PCad.Selection[i]);
for i := 0 to SelList.Count - 1 do
begin
GCadForm.PCad.DeSelectFigure(TFigure(SelList[i]).Handle);
end;
FullBlkName1 := FullBlkName;
FullBlkName2 := FullBlkName;
FullBlkNameOr := FullBlkName;
if TFigure(SelList[0]).CenterPoint.x > TFigure(SelList[1]).CenterPoint.x then
FullBlkName1 := FullBlkName + '_active'
else
FullBlkName2 := FullBlkName + '_active';
for i := 0 to SelList.Count - 1 do
begin
FullBlkName := FullBlkName1;
if i = 1 then
FullBlkName := FullBlkName2;
GCadForm.PCad.SelectFigure(TFigure(SelList[i]).Handle);
//GCadForm.PCad.Refresh;
Block := nil;
if (TFigure(SelList[i]) is TBlock) then
Block := TBlock(TBlock(SelList[i]).duplicate)
else if (TFigure(SelList[i]) is TFigureGrp) then
Block := TBlock(TFigureGrp(SelList[i]).duplicate)
else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
//GCadForm.PCad.Refresh;
Block := nil;
if (TFigure(SelList[i]) is TBlock) then
Block := TBlock(TBlock(SelList[i]).duplicate)
else if (TFigure(SelList[i]) is TFigureGrp) then
Block := TBlock(TFigureGrp(SelList[i]).duplicate)
else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
BlockToNormalSize(Block, 150);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
GCadForm.PCad.Refresh;
Block := nil;
//if (TFigure(SelList[i]) is TBlock) then
// Block := TBlock(TBlock(SelList[i]).duplicate)
//else if (TFigure(SelList[i]) is TFigureGrp) then
// Block := TBlock(TFigureGrp(SelList[i]).duplicate)
//else
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
//Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
// Èçìåíÿåì ðàçìåðû äëÿ ðàñòðîâîãî èçîáðàæåíèÿ
//BlockToNormalSize(Block, 150);
//MetaFile := TMetafile.Create;
//Bitmap := TBitmap.Create;
//MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
//Bitmap.Height := Metafile.Height;
//Bitmap.Width := Metafile.Width;
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.Canvas.Draw(0, 0, MetaFile);
//Bitmap.SaveToFile(FullBlkName + '.bmp');
//FreeAndNil(MetaFile);
//FreeAndNil(Bitmap);
if Block <> nil then
begin
//Block.InFigures.Clear;
Block.Free;
end;
GCadForm.PCad.DeSelectFigure(TFigure(SelList[i]).Handle);
GCadForm.PCad.Refresh;
end;
SelList.Clear;
FreeAndNil(SelList);
end
else
begin
Block := nil;
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
Block := nil;
Block := GCadForm.PCad.GetSelectionBlockDuplicate;
Block.SaveToFile(FullBlkName + '.blk');
Block.Scale(GCadForm.PCad.ZoomScale / 100, GCadForm.PCad.ZoomScale / 100, Block.ap1);
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.BlockObjAsWmf(Block);
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FullBlkName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
if Block <> nil then
begin
Block.Free;
end;
end;
end;
FreeAndNil(SaveDialog);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateBlockToFileExecute', E.Message);
end;
(*
try
if ActiveMDIChild <> nil then
begin
if GCadForm.PCad.SelectedCount > 0 then
begin
SaveDialog := TSaveDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.blk') then
FDir := FDir + '\.blk';
SaveDialog.Title := cMain_Mes92;
SaveDialog.InitialDir := FDir;
SaveDialog.DefaultExt := 'blk'; //11.03.2012 '';
SaveDialog.Filter := cMain_Mes52;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
SaveDialog.OnCanClose := SDCreateBlockToFileCanClose; // äëÿ ïðîâåðêè ñóùåñòâîâàíèÿ bmp
if SaveDialog.Execute then
begin
FileName := ExtractFilePathOnly(SaveDialog.FileName);
GCadForm.PCad.MakeSelectionBlock(FileName + '.blk');
MetaFile := TMetafile.Create;
Bitmap := TBitmap.Create;
MetaFile := GCadForm.PCad.SelectionAsWmf;
Bitmap.Height := Metafile.Height;
Bitmap.Width := Metafile.Width;
Bitmap.Canvas.Draw(0, 0, MetaFile);
Bitmap.SaveToFile(FileName + '.bmp');
FreeAndNil(MetaFile);
FreeAndNil(Bitmap);
end;
FreeAndNil(SaveDialog);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateBlockToFileExecute', E.Message);
end;
*)
end;
procedure TFSCS_Main.aChangeRaiseHeightExecute(Sender: TObject);
var
RaiseLine: TOrthoLine;
RaiseConn: TConnectorObject;
ObjFromRaise: TConnectorObject;
CheckRaiseConn: TConnectorObject;
i: integer;
OldRaiseHeight: Double;
RaiseHeight: Double;
tempstr: string;
SetRaiseHeight: Double;
mess: string;
CurLine: TOrthoLine;
ZDirectionKoef: Integer; // Íàïðàâëåíèå áîëüøå íóëÿ èëè ìåíüøå íóëÿ
NextConn: TConnectorObject; // Tolik 04/02/2021 --
function CheckCanSnap : Boolean;
begin
Result := (RaiseConn.JoinedconnectorsList.Count = 0) and GCadForm.FAutoPosTraceBetweenRM;
end;
begin
try
if GPopupFigure = nil then
exit;
try
RaiseLine := TOrthoLine(GPopupFigure);
except
RaiseLine := nil;
Exit;
end;
//
RaiseConn := nil;
ObjFromRaise := nil;
if TConnectorObject(RaiseLine.JoinConnector1).FConnRaiseType <> crt_None then
begin
RaiseConn := TConnectorObject(RaiseLine.JoinConnector1);
ObjFromRaise := RaiseConn.FObjectFromRaise;
end;
if TConnectorObject(RaiseLine.JoinConnector2).FConnRaiseType <> crt_None then
begin
RaiseConn := TConnectorObject(RaiseLine.JoinConnector2);
ObjFromRaise := RaiseConn.FObjectFromRaise;
end;
if (RaiseConn <> nil) and (ObjFromRaise <> nil) then
begin
//24.10.2012 OldRaiseHeight := RaiseConn.ActualZOrder[1] - ObjFromRaise.ActualZOrder[1];
OldRaiseHeight := RaiseConn.ActualZOrder[1] - ObjFromRaise.ActualZOrder[1];
//OldRaiseHeight := Abs(RaiseConn.ActualZOrder[1] - ObjFromRaise.ActualZOrder[1]);
tempstr := FormatFloat(ffMask, MetreToUOM(OldRaiseHeight));
if InputQuery(cCad_Mes13, cMain_Mes93, tempstr) then
begin
try
StrToFloat_My(tempstr);
except
ShowMessage(cSizePos_Mes1);
Exit;
end;
if tempstr <> '' then
begin
RaiseHeight := StrToFloat_My(tempstr);
RaiseHeight := UOMToMetre(RaiseHeight);
if RaiseHeight <> OldRaiseHeight then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
ZDirectionKoef := 1;
//if RaiseConn.ActualZOrder[1] < 0 then
// ZDirectionKoef := -1;
// OnFloor
if RaiseConn.FConnRaiseType = crt_OnFloor then
begin
SetRaiseHeight := ObjFromRaise.ActualZOrder[1] + ZDirectionKoef * RaiseHeight;
//24.10.2012 if SetRaiseHeight < 0 then
//24.10.2012 SetRaiseHeight := 0;
if SetRaiseHeight > GCadForm.FRoomHeight then
SetRaiseHeight := GCadForm.FRoomHeight;
if SetRaiseHeight = ObjFromRaise.ActualZOrder[1] then
begin
mess := cSCSObjectProp_Mes1;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cSCSObjectProp_Mes2, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cSCSObjectProp_Mes2), MB_YESNO) = IDYes then
begin
if CheckCanSnap then
begin
RaiseConn.ActualZOrder[1] := ObjFromRaise.ActualZOrder[1];
if ObjFromRaise.ConnectorType = ct_Clear then
DestroyRaiseOnConnector(ObjFromRaise)
else
DestroyRaiseOnPointObject(ObjFromRaise);
end
else
RaiseLine.Delete;
end;
end
else
begin
RaiseConn.ActualZOrder[1] := SetRaiseHeight;
SetConFigureCoordZInPM(RaiseConn.ID, RaiseConn.ActualZOrder[1]);
RaiseLine.CalculLength := RaiseLine.LengthCalc;
RaiseLine.LineLength := RaiseLine.CalculLength;
RaiseLine.UpdateLengthTextBox(False, true);
end;
end
else
// BetweenFloor
begin
SetRaiseHeight := RaiseConn.ActualZOrder[1] - RaiseHeight;
if SetRaiseHeight < 0 then
SetRaiseHeight := 0;
if SetRaiseHeight > GCadForm.FRoomHeight then
SetRaiseHeight := GCadForm.FRoomHeight;
if SetRaiseHeight = RaiseConn.ActualZOrder[1] then
begin
mess := cMain_Mes94;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes95, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes95), MB_YESNO) = IDYes then
begin
if CheckCanSnap then // Tolik 04/02/2020 --
begin
RaiseConn.ActualZOrder[1] := ObjFromRaise.ActualZOrder[1];
if ObjFromRaise.ConnectorType = ct_Clear then
DestroyRaiseOnConnector(ObjFromRaise)
else
DestroyRaiseOnPointObject(ObjFromRaise);
end
else
RaiseLine.Delete;
end;
end
else
begin
ObjFromRaise.ActualZOrder[1] := SetRaiseHeight;
SetConFigureCoordZInPM(ObjFromRaise.ID, ObjFromRaise.ActualZOrder[1]);
RaiseLine.CalculLength := RaiseLine.LengthCalc;
RaiseLine.LineLength := RaiseLine.CalculLength;
RaiseLine.UpdateLengthTextBox(False, true);
end;
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aChangeRaiseHeightExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDisconnectFromRMExecute(Sender: TObject);
var
Conn: TConnectorObject;
RM: TConnectorObject;
begin
try
if GPopupFigure <> nil then
begin
Conn := TConnectorObject(GPopupFigure);
if Conn.JoinedConnectorsList.Count > 0 then
begin
RM := TConnectorObject(Conn.JoinedConnectorsList[0]);
if RM <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
UnsnapConnectorFromPointObject(Conn, RM);
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDisconnectFromRMExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDisconnectAllConnectorsExecute(Sender: TObject);
var
i, j: integer;
RM: TConnectorObject;
Conn: TConnectorObject;
isRaiseOnIt: Boolean;
begin
try
if GPopupFigure <> nil then
begin
RM := TConnectorObject(GPopupFigure);
i := 0;
if RM.JoinedConnectorsList.Count > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
while i < RM.JoinedConnectorsList.Count do
begin
Conn := TConnectorObject(RM.JoinedConnectorsList[i]);
if Conn <> nil then
begin
isRaiseOnIt := false;
for j := 0 to Conn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(Conn.JoinedOrtholinesList[j]).FIsRaiseUpDown then
isRaiseOnIt := True;
end;
if not isRaiseOnIt then
begin
UnsnapConnectorFromPointObject(Conn, RM);
RefreshCAD(GCadForm.PCad);
end
else
i := i + 1;
end;
end;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDisconnectAllConnectorsExecute', E.Message);
end;
end;
// Tolik -- 27/05/2016 --
// äâèíóòü îáúåêò íà ïðîòèâîïîëîæíóþ âåðøèíó ñïóñêà/ïîäúåìà
// îðèãèíàë çàêîììåí÷åí, ñìîòðè íèæå, ò.ê. íå ðàáîòàåò íè õ
// òîëüêî "íà êîøêàõ" è òî, åñëè êàáåëÿ íåò, èíà÷å - ÀÂ
procedure TFSCS_Main.aRemoveObjectOnHeightExecute(Sender: TObject);
var
BaseConn: TConnectorObject;
OtherConn: TConnectorObject;
i, j: integer;
prevcount: integer;
RaiseLine: TOrthoLine;
SavedConnectionsList: TList;
SavedComponList: TList;
InterFaceAccordanceList, SavedLineComponList, SavedPointComponList: TList;
SelfPointConnectInfo, JoinedLineConnectInfo: TLineComponConnectionInfo;
SavedPointConnectionsList, PointComponents: TList;
RaiseSide: Integer;
Procedure SaveConnectionOnPointObject;
var i, j, k, l, m, n: Integer;
PointCatalog: TSCSCatalog;
PointComponent, CableComponent: TSCSComponent;
LineComponentsList: TList;
function GetJoinedCableSide(CableCompon, JoinedCableCompon: TSCSComponent): Integer;
var i, j : Integer;
CableInterFace: TSCSInterface;
CableInterfPos, JoinedCableInterfPos: TSCSInterfPosition;
begin
Result := 0;
for i := 0 to CableCompon.Interfaces.Count - 1 do
begin
CableInterFace := TSCSInterface(CableCompon.Interfaces[i]);
if (CableInterFace.TypeI = itFunctional) and ((CableInterFace.IsBusy = bitrue) or
(CableInterFace.BusyPositions.Count > 0)) then
begin
for j := 0 to CableInterFace.BusyPositions.Count - 1 do
begin
CableInterfPos := TSCSInterfPosition(CableInterFace.BusyPositions[j]);
JoinedCableInterfPos := CableInterfPos.GetConnectedPos;
if JoinedCableInterfPos <> nil then
begin
if JoinedCableInterfPos.InterfOwner.ComponentOwner.ID = JoinedCableCompon.ID then
begin
Result := JoinedCableInterfPos.InterfOwner.Side;
Break; //// BREAK ////;
end;
end;
end;
end;
if Result <> 0 then Break; //// BREAK ////;
end;
end;
function GetCableSide(CableComponent: TSCSComponent; aCatalog: TSCSCatalog): Integer;
var i, j: Integer;
interf: TSCSInterface;
InterfPos: TSCSInterfPosition;
begin
Result := 0;
for i := 0 to CableComponent.Interfaces.Count - 1 do
begin
if (TSCSInterface(CableComponent.Interfaces[i]).TypeI = itFunctional) then
begin
Interf := TSCSInterface(CableComponent.Interfaces[i]);
for j := 0 to interf.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(interf.BusyPositions[j]);
InterfPos := InterfPos.GetConnectedPos;
if (InterfPos <> nil) and (InterfPos.InterfOwner <> nil) and
(InterfPos.InterfOwner.ComponentOwner <> nil) then
begin
if aCatalog.ComponentReferences.IndexOf(InterfPos.InterfOwner.ComponentOwner) <> -1 then
begin
Result := interf.Side;
break;
end;
end;
end;
if Result <> 0 then
Break; //// BREAK ////;
end;
end;
end;
function GetConnectedInterFace(aInterf: TSCSInterFace; ACompon: TSCSComponent; aSide: integer): TSCSInterface;
var i: Integer;
begin
Result := nil;
end;
function GetCableFromRaise(aCompon: TSCSComponent) : TSCSComponent;
var i: Integer;
begin
Result := nil;
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
begin
Result := TSCSComponent(aCompon.JoinedComponents[i]);
Break; //// BREAK ////;
end;
end;
end;
function GetInterfFromRaise(aCableComponent: TSCSComponent; aComponSide: Integer; aCableInterFace: TSCSInterface): TSCSInterface;
var i: Integer;
begin
Result := Nil;
for i := 0 to aCableComponent.Interfaces.Count - 1 do
begin
if (TSCSInterface(aCableComponent.Interfaces[i]).Npp = aCableInterFace.Npp) and
(TSCSInterface(aCableComponent.Interfaces[i]).Side = aComponSide) then
begin
Result := TSCSInterface(aCableComponent.Interfaces[i]);
Break; //// BREAK ////;
end;
end;
end;
procedure SaveLineConnection(aCableList: TList; aPointCatalog: TSCSCatalog);
var i, j, k: Integer;
CableComponent, JoinedFromRaiseCableComponent, JoinedPointComponent: TSCSComponent;
LineCatalog: TSCSCatalog;
LineFigure: TFigure;
CableInterface, JoinedCableInterFace: TSCSInterface;
InterfPos, JoinedInterfPos: TSCSInterfPosition;
CableComponSide, JoinedCableComponSide: Integer;
ComponToDeleteList: TSCSComponents;
CanDelCable: Boolean;
ADInterface: TSCSInterface;
begin
if aCableList.Count > 0 then
begin
SavedPointConnectionsList := TList.Create;
ComponToDeleteList := TSCSComponents.Create(False);
for i := 0 to aCableList.Count - 1 do
begin
InterFaceAccordanceList := TList.Create;
CableComponent := TSCSComponent(aCableList[i]);
CableComponSide := GetCableSide(CableComponent, aPointCatalog);
CanDelCable := False;
JoinedFromRaiseCableComponent := nil;
LineCatalog := CableComponent.GetFirstParentCatalog;
if LineCatalog <> nil then
begin
LineFigure := GetFigureByCatalogId(LineCatalog.SCSID);
if LineFigure <> nil then
begin
if TOrthoLine(LineFigure).FIsRaiseUpDown then
begin
CanDelCable := True;
JoinedFromRaiseCableComponent := GetCableFromRaise(CableComponent);
if JoinedFromRaiseCableComponent <> nil then
JoinedCableComponSide := GetJoinedCableSide(CableComponent, JoinedFromRaiseCableComponent);
end;
end;
// ñîõðàíÿòü ñîåäèíåíèÿ òîëüêî åñëè ýòî òðàññà èëè êàáåëü ñ ðàéçà ïîäêëþ÷åí íà äðóãóþ òðàññó, à íå
// ê òî÷å÷íîìó èëè ïðîñòî âèñèò â âîçäóõå
if ((not CanDelCable) or (CanDelCable and (JoinedFromRaiseCableComponent <> nil))) then
begin
for j := 0 to CableComponent.Interfaces.Count - 1 do
begin
SavedLineComponList := TList.Create;
SavedPointComponList := TList.Create;
CableInterface := TSCSInterface(CableComponent.Interfaces[j]);
if (CableInterface.TypeI = itFunctional) and (CableInterface.Side = CableComponSide) and
((CableInterface.BusyPositions.Count > 0) or (CableInterface.IsBusy = biTrue)) then
begin
if CanDelCable then
ADInterface := GetInterfFromRaise(JoinedFromRaiseCableComponent, JoinedCableComponSide, CableInterFace)
else
ADInterface := CableInterface;
if SavedLineComponList.IndexOf(AdInterface) = -1 then
SavedLineComponList.Add(ADInterface);
for k := 0 to CableInterface.BusyPositions.Count - 1 do
begin
InterfPos := TSCSInterfPosition(CableInterface.BusyPositions[k]);
JoinedInterfPos := InterfPos.GetConnectedPos;
if (JoinedInterfPos <> nil) and (JoinedInterfPos.InterfOwner <> nil) and
(JoinedInterfPos.InterfOwner.ComponentOwner <> nil) then
begin
if SavedPointComponList.IndexOf(JoinedInterfPos.InterfOwner) = -1 then
SavedPointComponList.Add(JoinedInterfPos.InterfOwner);
end;
end;
end;
if ((SavedLineComponList.Count > 0) and (SavedPointComponList.Count > 0)) then
begin
InterFaceAccordanceList.Add(SavedLineComponList);
InterFaceAccordanceList.Add(SavedPointComponList);
SavedPointComponList := Nil;
SavedPointComponList := Nil;
end
else
begin
FreeAndNil(SavedPointComponList);
FreeAndNil(SavedLineComponList);
end;
end;
end;
end;
// åñëè êàáåëü íà ðàéçå - çàíåñòè â ñïèñîê íà óäàëåíèå
if (CanDelCable and (ComponToDeleteList.IndexOf(CableComponent) = - 1)) then
ComponToDeleteList.Add(CableComponent);
if ((InterFaceAccordanceList <> nil) and (InterFaceAccordanceList.Count > 0)) then
begin
// ñîñòîÿíèå ñîåäèíåíèÿ êàáåëÿ íà òî÷å÷íîì îáúåêòå
SelfPointConnectInfo := TLineComponConnectionInfo.Create(True);
if (not CanDelCable) then
begin
SelfPointConnectInfo.ComponId := CableComponent.ID;//AJoinedLineCompon.ID;
SelfPointConnectInfo.ComponSide := CableComponSide;
SelfPointConnectInfo.isLineConnection := True; // ïîäêëþ÷èòü ÷åðåç íîâûé êàáåëü íà ðàéçå
end
else
begin
SelfPointConnectInfo.ComponId := JoinedFromRaiseCableComponent.ID;//AJoinedLineCompon.ID;
SelfPointConnectInfo.ComponSide := JoinedCableComponSide;
SelfPointConnectInfo.isLineConnection := False; // ïîäêëþ÷èòü ïðÿìî ê òîìó, ÷òî åñòü (â òî÷êå ïîäúåìà)
end;
JoinedLineConnectInfo := TLineComponConnectionInfo.Create(False);
JoinedLineConnectInfo.ComponCatalogID := 0;
JoinedLineConnectInfo.ConnectedComponList := InterFaceAccordanceList;
SelfPointConnectInfo.ConnectedComponList.Add(JoinedLineConnectInfo);
SavedPointConnectionsList.Add(SelfPointConnectInfo);
InterFaceAccordanceList := Nil;
end
else
begin
if InterFaceAccordanceList <> nil then
FreeAndNil(InterFaceAccordanceList);
end;
end;
// óäàëèòü êàáåëè ñ ðàéçà
if ComponToDeleteList.Count > 0 then
F_ProjMan.DelComponentsFromList(F_ProjMan.GSCSBase.CurrProject.CurrList, ComponToDeleteList, False, biNone, false, nil);
end;
end;
begin
if BaseConn <> nil then
begin
PointCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(BaseConn.ID);
// ñòðîèì ñïèñîê êàáåëåé, ïîäêëþ÷åííûõ ê ïîèíòó
if PointCatalog <> nil then
begin
PointComponents := TList.Create;
LineComponentsList := TList.Create;
for i := 0 to PointCatalog.ComponentReferences.Count - 1 do
begin
PointComponent := TSCSComponent(PointCatalog.ComponentReferences[i]);
if PointComponents.IndexOf(PointComponent) = -1 then
PointComponents.Add(PointComponent);
for j := 0 to PointComponent.JoinedComponents.Count - 1 do
begin
if IsCableComponent(TSCSComponent(PointComponent.JoinedComponents[j])) then
begin
if LineComponentsList.IndexOf(TSCSComponent(PointComponent.JoinedComponents[j])) = -1 then
LineComponentsList.Add(TSCSComponent(PointComponent.JoinedComponents[j]));
end;
end;
end;
if LineComponentsList.Count > 0 then
SaveLineConnection(LineComponentsList, PointCatalog)
else
FreeAndNil(LineComponentsList);
end;
end;
end;
Procedure RestoreLineConnections;
var i, j, k, l, m: Integer;
CanDisJoin: boolean;
LineCompon, PointCompon, JoinedLineCompon: TSCSComponent;
PointCatalog, LineCatalog, RaiseCatalog: TSCSCatalog;
PointFigure, LineFigure: TFigure;
WayList, LineComponList: TList;
LineConnector: TConnectorObject;
aTempInterf, aLineInterface, aPointInterface: TSCSInterface;
AInterfPositions1, AInterfPositions2: TSCSInterfPositions;
ConnectIDCompRel, InterfCount: Integer;
ptrConnection: PComplect;
TempInterfaces1, TempInterfaces2: TSCSInterfaces;
Function DefineIDComponRel(ALineCompon, APointCompon: TSCSComponent): Integer;
var
TopCatalog: TSCSCatalog;
begin
Result := -1;
begin
TopCatalog := aLineCompon.GetTopParentCatalog;
if TopCatalog <> nil then
if TopCatalog is TSCSProject then
Result := TSCSProject(TopCatalog).GenIDByGeneratorIndex(giComponentRelationID, 1);
end;
//if IDComponRel = -1 then
//IDComponRel := TF_Main(ActiveForm).AppendToComponRel(Self.ID, AComponent.ID, 1, AConnectType);
end;
begin
if SavedPointConnectionsList <> nil then
begin
RaiseCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(RaiseLine.ID);
// ñáðîñèòü ñîåäèíåíèÿ òî÷å÷íûõ ñ êàáåëÿìè, åñëè îíè ñîåäèíèëèñü àâòîìàòè÷åñêè ïîñëå ïîäúåìà
if (PointComponents <> nil) then
begin
for i := 0 to PointComponents.Count - 1 do
begin
PointCompon := TSCSComponent(PointComponents[i]);
for j := (PointCompon.JoinedComponents.Count - 1) downto 0 do
begin
if IsCableComponent(TSCSComponent(PointCompon.JoinedComponents[j])) then
PointCompon.DisJoinFrom(TSCSComponent(PointCompon.JoinedComponents[j]));
end;
end;
end;
// âîññòàíîâèòü ñîåäèíåíèÿ
for i := (SavedPointConnectionsList.Count - 1) downto 0 do
begin
SelfPointConnectInfo := TLineComponConnectionInfo(SavedPointConnectionsList[i]);
LineCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(SelfPointConnectInfo.ComponId);
JoinedLineCompon := Nil;
// åñëè ñîåäèíåíèå ÷åðåç ðàéç - âêèíóòü êàáåëü è îòñîåäèíèòü îò âñåãî
if SelfPointConnectInfo.isLineConnection then
begin
JoinedLineCompon := CopyComponentToPMSCSObject(LineCompon, RaiseCatalog, False);
if JoinedLinecompon <> nil then
JoinedLineCompon.DisJoinFromAll(false).Free;
// ñîåäèíèòü êàáåëü íà ðàéçå ñ òåì, ÷òî áûë ïîäêëþ÷åí ê òî÷å÷íîìó
ConnectCableComponents(LineCompon, JoinedLineCompon);
end;
if LineCompon <> nil then
begin
LineCatalog := LineCompon.GetFirstParentCatalog;
if LineCatalog <> nil then
begin
LineFigure := GetFigureByCatalogId(LineCatalog.SCSID);
if LineFigure <> nil then
begin
JoinedLineConnectInfo := TLineComponConnectionInfo(SelfPointConnectInfo.ConnectedComponList[0]);
InterFaceAccordanceList := JoinedLineConnectInfo.ConnectedComponList;
if InterFaceAccordanceList.Count > 0 then
begin
m := 0;
While (m <= (InterFaceAccordanceList.Count - 1)) do
begin
SavedLineComponList := TList(InterFaceAccordanceList[m]);
SavedPointComponList := TList(InterFaceAccordanceList[m + 1]);
for j := 0 to SavedLineComponList.Count - 1 do
begin
ALineInterFace := TSCSInterface(SavedLineComponList[j]);
if SelfPointConnectInfo.isLineConnection then
begin
for k := 0 to JoinedLineCompon.Interfaces.Count - 1 do
begin
if ((TSCSInterface(JoinedLineCompon.Interfaces[k]).TypeI = itFunctional) and
(TSCSInterface(JoinedLineCompon.Interfaces[k]).Npp = aLineInterface.Npp) and
(TSCSInterface(JoinedLineCompon.Interfaces[k]).Side = RaiseSide)) then
ALineInterface := TSCSInterface(JoinedLineCompon.Interfaces[k]);
end;
end;
LineCompon := ALineInterFace.ComponentOwner;
if ALineInterFace <> nil then
begin
for k := 0 to SavedPointComponList.Count - 1 do
begin
APointInterFace := TSCSInterface(SavedPointComponList[k]);
PointCompon := APointInterFace.ComponentOwner;
AInterfPositions1 := ALineInterFace.GetEmptyPositions;
AInterfPositions2 := APointInterFace.GetEmptyPositions;
// óðàâíÿòü êîëè÷åñòâî ïîçèöèé äëÿ ñîåäèíåíèÿ
if AInterfPositions1.Positions.Count > AInterfPositions2.Positions.Count then
begin
While AInterfPositions1.Positions.Count <> AInterfPositions2.Positions.Count do
begin
l := AInterfPositions1.Positions.Count - 1;
AInterfPositions1.Positions.Delete(l);
end;
AInterfPositions1.DefineKolvo;
end
else
if AInterfPositions2.Positions.Count > AInterfPositions1.Positions.Count then
begin
While AInterfPositions2.Positions.Count <> AInterfPositions1.Positions.Count do
begin
l := AInterfPositions2.Positions.Count - 1;
AInterfPositions2.Positions.Delete(l);
end;
AInterfPositions2.DefineKolvo;
end;
ConnectIDCompRel := DefineIDComponRel(LineCompon, PointCompon);
// Äî òîãî êàê ñîåäèíèòü èíòåðôåéñû, íóæíî ñîåäèíèòü ñàìè êîìïîíåíòû
if LineCompon.JoinedComponents.IndexOf(PointCompon) = -1 then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
if TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.JoinWithDefineSides(LineCompon, PointCompon, false, TempInterfaces1, TempInterfaces2, true).CanConnect then;
FreeAndNil(TempInterfaces1);
FreeAndNil(TempInterfaces2);
end;
if LineCompon.JoinedComponents.IndexOf(PointCompon) <> -1 then
begin
ptrConnection := LineCompon.GetConnectionByConnected(PointCompon);
if ptrConnection <> nil then
begin
TempInterfaces1 := TSCSInterfaces.Create(false);
TempInterfaces2 := TSCSInterfaces.Create(false);
TempInterfaces1.Add(ALineInterFace);
TempInterfaces2.Add(APointInterFace);
InterfCount := AInterfPositions1.Kolvo;
if InterfCount > AInterfPositions2.Kolvo then
InterfCount := AInterfPositions2.Kolvo;
TF_Main(LineCompon.ActiveForm).ConnectInterfacesWithAccordance(ALineInterFace, APointInterFace,
InterfCount, InterfCount, ptrConnection.ID, cntUnion,
AInterfPositions1, AInterfPositions2, true, TempInterfaces1, TempInterfaces2);
TF_Main(LineCompon.ActiveForm).F_ChoiceConnectSide.OnAfterJoinCompons(LineCompon, PointCompon, -1, -1);
end;
end;
end;
end;
end;
SavedLineComponList.Clear;
SavedPointComponList.Clear;
FreeAndNil(SavedLineComponList);
FreeAndNil(SavedPointComponList);
Inc(m,2);
end;
end;
end;
end;
end;
SavedPointConnectionsList.Remove(SelfPointConnectInfo);
FreeAndNil(SelfPointConnectInfo);
end;
FreeAndNil(SavedPointConnectionsList);
end;
end;
begin
try
if GPopupFigure <> nil then
begin
SavedPointConnectionsList := Nil;
PointComponents := Nil;
RaiseLine := nil;
RaiseSide := 0;
BaseConn := TConnectorObject(GPopupFigure);
// Tolik
// îïðåäåëèòü ðàéç è ñòîðîíó ïîäêëþ÷åíèÿ ê ðàéçó â òî÷êå ïîäúåìà
if BaseConn <> nil then
begin
RaiseSide := 0; // ïðîòèâîïîëîæíàÿ ñòîðîíà ðàéçà äëÿ ïîäêëþ÷åíèÿ
if BaseConn.ConnectorType = ct_Clear then
begin
for i := 0 to BaseConn.JoinedOrtholinesList.Count - 1 do
begin
if TorthoLine(BaseConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
// ðàéç
RaiseLine := TOrthoLine(BaseConn.JoinedOrtholinesList[i]);
// ñòîðîíà ïðîòèâîïîëîæíîãî ïîäêëþ÷åíèÿ
if TConnectorObject(RaiseLine.JoinConnector1).ID = BaseConn.ID then
RaiseSide := 2
else
if TConnectorObject(RaiseLine.JoinConnector2).ID = BaseConn.ID then
RaiseSide := 1;
break;
end;
end;
end
else
if BaseConn.ConnectorType = ct_NB then
begin
for i := 0 to BaseConn.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(BaseConn.JoinedConnectorsList[i]).JoinedOrthoLinesList.Count - 1 do
begin
if TOrthoLine(TConnectorObject(BaseConn.JoinedConnectorsList[i]).JoinedOrthoLinesList[j]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(TConnectorObject(BaseConn.JoinedConnectorsList[i]).JoinedOrthoLinesList[j]);
if TConnectorObject(RaiseLine.JoinConnector1).ID = TConnectorObject(BaseConn.JoinedConnectorsList[i]).ID then
RaiseSide := 2
else
if TConnectorObject(RaiseLine.JoinConnector2).ID = TConnectorObject(BaseConn.JoinedConnectorsList[i]).ID then
RaiseSide := 1;
break;
end;
end;
if RaiseSide <> 0 then
break;
end;
end;
end;
//
// ÝÒÎ ÂÅÐØÈÍÀ
GMovedByOtherObject := True;
if BaseConn.FConnRaiseType = crt_OnFloor then
begin
OtherConn := BaseConn.FObjectFromRaise;
if OtherConn <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
//ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ íà òî÷å÷íîì
SaveConnectionOnPointObject;
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithRM(BaseConn, OtherConn)
else
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType = ct_Clear) then
RemoveRMWithClear(BaseConn, OtherConn)
else
if (BaseConn.ConnectorType = ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithClear(OtherConn, BaseConn);
//
if Not BaseConn.Deleted then
begin
i := 0;
while i < BaseConn.JoinedOrtholinesList.Count do
begin
prevcount := BaseConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(BaseConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(BaseConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(BaseConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(BaseConn) or BaseConn.Deleted then
break;
end;
end;
if BaseConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if BaseConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
if Not OtherConn.Deleted then
begin
i := 0;
while i < OtherConn.JoinedOrtholinesList.Count do
begin
prevcount := OtherConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(OtherConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(OtherConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(OtherConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(OtherConn) or OtherConn.Deleted then
break;
end;
end;
if OtherConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if OtherConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
//
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
// ÝÒÎ ÎÑÍÎÂÀÍÈÅ
if GetRaiseConn(BaseConn) <> nil then
begin
OtherConn := GetRaiseConn(BaseConn);
if OtherConn <> nil then
begin
if OtherConn.FConnRaiseType = crt_OnFloor then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
//ñîõðàíèòü êàáåëüíûå ñîåäèíåíèÿ íà òî÷å÷íîì
SaveConnectionOnPointObject;
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithRM(BaseConn, OtherConn)
else
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType = ct_Clear) then
RemoveRMWithClear(BaseConn, OtherConn)
else
if (BaseConn.ConnectorType = ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithClear(OtherConn, BaseConn);
//
if Not BaseConn.Deleted then
begin
i := 0;
while i < BaseConn.JoinedOrtholinesList.Count do
begin
prevcount := BaseConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(BaseConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(BaseConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(BaseConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(BaseConn) or BaseConn.Deleted then
break;
end;
end;
if BaseConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if BaseConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
if Not OtherConn.Deleted then
begin
i := 0;
while i < OtherConn.JoinedOrtholinesList.Count do
begin
prevcount := OtherConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(OtherConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(OtherConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(OtherConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(OtherConn) or OtherConn.Deleted then
break;
end;
end;
if OtherConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if OtherConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
//
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
// Âîññòàíîâèòü êàáåëüíûå ñîåäèíåíèÿ
// if InterFaceAccordanceList <> nil then
RestoreLineConnections;
GMovedByOtherObject := False;
CheckDeleteAllRaises(GCadForm.PCad);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRemoveObjectOnHeightExecute', E.Message);
end;
end;
{
procedure TFSCS_Main.aRemoveObjectOnHeightExecute(Sender: TObject);
var
BaseConn: TConnectorObject;
OtherConn: TConnectorObject;
i: integer;
prevcount: integer;
RaiseLine: TOrthoLine;
begin
try
if GPopupFigure <> nil then
begin
BaseConn := TConnectorObject(GPopupFigure);
// ÝÒÎ ÂÅÐØÈÍÀ
GMovedByOtherObject := True;
if BaseConn.FConnRaiseType = crt_OnFloor then
begin
OtherConn := BaseConn.FObjectFromRaise;
if OtherConn <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithRM(BaseConn, OtherConn);
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType = ct_Clear) then
RemoveRMWithClear(BaseConn, OtherConn);
if (BaseConn.ConnectorType = ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithClear(OtherConn, BaseConn);
//
if Not BaseConn.Deleted then
begin
i := 0;
while i < BaseConn.JoinedOrtholinesList.Count do
begin
prevcount := BaseConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(BaseConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(BaseConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(BaseConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(BaseConn) or BaseConn.Deleted then
break;
end;
end;
if BaseConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if BaseConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
if Not OtherConn.Deleted then
begin
i := 0;
while i < OtherConn.JoinedOrtholinesList.Count do
begin
prevcount := OtherConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(OtherConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(OtherConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(OtherConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(OtherConn) or OtherConn.Deleted then
break;
end;
end;
if OtherConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if OtherConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
//
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
// ÝÒÎ ÎÑÍÎÂÀÍÈÅ
if GetRaiseConn(BaseConn) <> nil then
begin
OtherConn := GetRaiseConn(BaseConn);
if OtherConn <> nil then
begin
if OtherConn.FConnRaiseType = crt_OnFloor then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithRM(BaseConn, OtherConn);
if (BaseConn.ConnectorType <> ct_Clear) and (OtherConn.ConnectorType = ct_Clear) then
RemoveRMWithClear(BaseConn, OtherConn);
if (BaseConn.ConnectorType = ct_Clear) and (OtherConn.ConnectorType <> ct_Clear) then
RemoveRMWithClear(OtherConn, BaseConn);
//
if Not BaseConn.Deleted then
begin
i := 0;
while i < BaseConn.JoinedOrtholinesList.Count do
begin
prevcount := BaseConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(BaseConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(BaseConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(BaseConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(BaseConn) or BaseConn.Deleted then
break;
end;
end;
if BaseConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if BaseConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
if Not OtherConn.Deleted then
begin
i := 0;
while i < OtherConn.JoinedOrtholinesList.Count do
begin
prevcount := OtherConn.JoinedOrtholinesList.Count;
if Not TOrthoLine(OtherConn.JoinedOrtholinesList[i]).Deleted then
begin
if TOrthoLine(OtherConn.JoinedOrtholinesList[i]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(OtherConn.JoinedOrtholinesList[i]);
CheckDeleteRaise(RaiseLine);
if Not assigned(OtherConn) or OtherConn.Deleted then
break;
end;
end;
if OtherConn.JoinedOrtholinesList.Count = PrevCount then
i := i + 1;
if OtherConn.JoinedOrtholinesList.Count < PrevCount then
i := 0;
end;
end;
//
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
end;
GMovedByOtherObject := False;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRemoveObjectOnHeightExecute', E.Message);
end;
end; }
procedure TFSCS_Main.aCreateProjectPlanExecute(Sender: TObject);
var
i: integer;
begin
try
if FSCS_Main.MDIChildCount > 0 then
begin
for i := 0 to FSCS_Main.MDIChildCount - 1 do
begin
if TF_CAD(FSCS_Main.MDIChildren[i]).FListType = lt_ProjectPlan then
begin
ShowMessage(cMain_Mes96);
Exit;
end;
end;
if F_ChooseComponTypes.Execute then
begin
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateProjectPlanExecute', E.Message);
end;
end;
procedure TFSCS_Main.FloatPanel1Click(Sender: TObject);
begin
try
if F_FloatPanel.Visible then
HideFloatPanel
else
ShowFloatPanel;
except
end;
end;
procedure TFSCS_Main.PDock1Resize(Sender: TObject);
begin
try
if F_FloatPanel.ClassName = 'TF_FloatPanel' then
ResizeFloatPanel;
except
end;
end;
procedure TFSCS_Main.aToolCabinetExecute(Sender: TObject);
begin
try
DropDownFirstToolbar; // Tolik 10/02/2021 --
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 9;
GCadForm.PCad.SetTool(toFigure, 'TCabinet');
tbCabinetNoob.Down := True; // Tolik 10/02/2021 --
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aToolCabinetExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSaveAsWMFExecute(Sender: TObject);
var
FName: string;
FDir: string;
SavePictureDialog: TSavePictureDialog;
Stream: TStream;
mf, mf2, mf3: TMetafile;
wmf: TWMFObject;
i: integer;
rtf: TRichText;
f: tfigure;
begin
if ActiveMDIChild <> nil then
begin
SavePictureDialog := TSavePictureDialog.Create(Self);
{$if Defined(ES_GRAPH_SC)}
FDir := ExeDir;
{$else}
FDir := ExtractFileDir(Application.ExeName);
{$ifend}
if DirectoryExists(FDir + '\.bmp') then
FDir := FDir + '\.bmp';
SavePictureDialog.Title := cMain_Mes97;
SavePictureDialog.InitialDir := ExtractDirByCategoryType(dctPictures);//ExtractSaveDirForCategory('.bmp');//FDir;
SavePictureDialog.DefaultExt := 'wmf';
SavePictureDialog.Filter := cMain_Mes98;
if SavePictureDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctPictures, ExtractFileDir(SavePictureDialog.FileName));
//
FName := SavePictureDialog.FileName;
GCadForm.PCad.ExportAsWmf(FName);
except
ShowMessage(cMain_Mes8);
end;
end;
SavePictureDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aShowConfiguratorExecute(Sender: TObject);
var
Conn: TConnectorObject;
begin
try
if GPopupFigure <> nil then
begin
Conn := TConnectorObject(GPopupFigure);
ShowConfiguratorForPointObject(Conn.ID);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowConfiguratorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowRepResourcesExecute(Sender: TObject);
begin
try
RepResourceReport;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowRepResourcesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aCreateNormsOnCadExecute(Sender: TObject);
var
i: Integer;
FindCadNorms: TCadNorms;
Lhandle: Integer;
begin
try
if ActiveMDIChild <> nil then
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
FindCadNorms := nil;
for i := 0 to GCadForm.PCad.FigureCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Figures[i]), cTCadNorms) then
FindCadNorms := TCadNorms(GCadForm.PCad.Figures[i]);
end;
if FindCadNorms <> nil then
begin
RemoveInFigureGrp(FindCadNorms);
GCadForm.PCad.Figures.Remove(FindCadNorms);
FreeAndNil(FindCadNorms);
end;
RefreshCAD(GCadForm.PCad);
try
BeginProgress;
LHandle := GCadForm.PCad.GetLayerHandle(1);
FindCadNorms := TCadNorms.create(LHandle, GCadForm.PCad);
FindCadNorms.FNormsList := GetCurrentNormsForCAD(GCadForm.FCADListID);
FindCadNorms.Build;
GCadForm.PCad.AddCustomFigure(1, FindCadNorms, False);
RefreshCAD(GCadForm.PCad);
finally
EndProgress;
end;
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateNormsOnCadExecute', E.Message);
end;
end;
procedure TFSCS_Main.aNormsEditExecute(Sender: TObject);
begin
try
if GPopupFigure <> nil then
if CheckFigureByClassName(GPopupFigure, cTCadNorms) then
begin
if F_CadNormsList.Execute(TCadNorms(GPopupFigure)) then
begin
try
BeginProgress;
TCadNorms(GPopupFigure).ReBuild;
// ñîõðàíèòü ñòðóêòóðó
SetNormsToListFromCAD(GCadForm.FCADListID, TCadNorms(GPopupFigure).FNormsList);
finally
EndProgress;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNormsEditRecordExecute', E.Message);
end;
end;
procedure TFSCS_Main.aNormsPropExecute(Sender: TObject);
begin
try
if GPopupFigure <> nil then
if CheckFigureByClassName(GPopupFigure, cTCadNorms) then
begin
if F_CadNormsProp.Execute(TCadNorms(GPopupFigure)) then
begin
try
BeginProgress;
TCadNorms(GPopupFigure).ReBuild;
finally
EndProgress;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aNormsPropExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMirrorViewExecute(Sender: TObject);
var
Conn: TConnectorObject;
CadCrossObject: TCadCrossObject;
begin
try
BeginProgress;
if GPopupFigure <> nil then
begin
// MessageDlg('', mtWarning, [mbOK], 0);
Conn := TConnectorObject(GPopupFigure);
if Conn.FMirrored then
Conn.FMirrored := False
else
Conn.FMirrored := True;
CadCrossObject := GetPointObjectConnectedTrunk(GCadForm.FCADListID, Conn.ID);
if Conn.FTrunkName = ctsnCrossATS then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
ReCreateCadCrossATS(GCadForm.FCADListID, Conn.ID, CadCrossObject);
AfterMirrorTrunkObject(Conn);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
if Conn.FTrunkName = ctsnDistributionCabinet then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
ReCreateCadDistribCab(GCadForm.FCADListID, Conn.ID, CadCrossObject);
AfterMirrorTrunkObject(Conn);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMirrorViewExecute', E.Message);
end;
EndProgress;
end;
procedure TFSCS_Main.aCreateDuplicatesExecute(Sender: TObject);
var
i, j: Integer;
FFigure: TFigure;
FiguresList: TList;
RaiseConn: TConnectorObject;
RaiseLine: TOrthoLine;
ObjFromRaise: TConnectorObject;
DupList: TList;
PointConn: TConnectorObject;
GetParentDup: TConnectorObject;
DrawDeltaX, DrawDeltaY: Double;
PointToX, PointToY: Double;
SelBnd: TDoubleRect;
Offsetdeltax, Offsetdeltay: double;
// Tolik
SnapToGridsValue, SnapToGuidesValue, SnapToNearValue: Boolean;
CanMoveFigure: Boolean;
UserQuotaReached_Message: String;
//
// Tolik -- 03/09/2016 --
Procedure CheckAlignVLines(aList: TList);
var i: Integer;
VLine: TOrthoLine;
deltax, deltay: Double;
begin
if ((AList <> nil) and (AList.Count > 0)) then
begin
for i := 0 to AList.Count - 1 do
begin
if CheckFigureByClassName(TFigure(aList[i]), cTOrthoLine) then
begin
VLine := TOrthoLine(aList[i]);
if VLine.FIsVertical then
begin
if TConnectorObject(VLine.JoinConnector1).JoinedConnectorsList.Count > 0 then
begin
TConnectorObject(VLine.JoinConnector1).ActualPoints[1] := TConnectorObject(TConnectorObject(VLine.JoinConnector1).JoinedConnectorsList[0]).ActualPoints[1];
DeleteObjectFromPM(TConnectorObject(VLine.JoinConnector1).ID, TConnectorObject(VLine.JoinConnector1).Name);
end;
if TConnectorObject(VLine.JoinConnector2).JoinedConnectorsList.Count > 0 then
begin
TConnectorObject(VLine.JoinConnector2).ActualPoints[1] := TConnectorObject(TConnectorObject(VLine.JoinConnector2).JoinedConnectorsList[0]).ActualPoints[1];
DeleteObjectFromPM(TConnectorObject(VLine.JoinConnector2).ID, TConnectorObject(VLine.JoinConnector2).Name);
end;
end;
VLine.ActualPoints[1] := TConnectorObject(VLine.JoinConnector1).ActualPoints[1];
VLine.ActualPoints[2] := TConnectorObject(VLine.JoinConnector2).ActualPoints[1];
end;
end;
end;
end;
begin
// Tolik -- 27/02/2017 -- ïðîâåðêà íà óãðîçó ïðåâûøåíèÿ îáúåêòîâ USER
UserQuotaReached_Message := '';
//
try
BeginProgress;
// Tolik -- 24/11/2015 -- ñîõðàíÿåì è ñáðàñûâàåì íàñòðîéêè ïðèâÿçêè îáúåêòîâ äëÿ ÊÀÄà,
// èíà÷å ïðè äóáëèðîâàíèè "ïîïëûâóò" ðàçìåðû ëèíåéíûõ îáúåêòîâ
if GCadForm.PCad.SnapToGrids then
SnapToGridsValue := True
else
SnapToGridsValue := False;
if GCadForm.PCad.SnapToGuides then
SnapToGuidesValue := True
else
SnapToGuidesValue := False;
if GCadForm.PCad.SnapToNearPoint then
SnapToNearValue := True
else
SnapToNearValue := False;
// ñáðîñ
GCadForm.PCad.SnapToGrids := False;
GCadForm.PCad.SnapToGuides := False;
GCadForm.PCad.SnapToNearPoint := False;
//
FiguresList := TList.Create;
DupList := nil;
// îñíîâíîé öèêë
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) then
begin
if not (TConnectorObject(FFigure).FIsApproach) then
FiguresList.Add(FFigure);
end
else
if CheckFigureByClassName(FFigure, cTOrthoLine) then
begin
FiguresList.Add(FFigure);
end
else
if FFigure is TNet then
begin
//if TNet(FFigure).FComponID <> 0 then
FiguresList.Add(FFigure);
end;
end;
// Tolik -- 20/11/2015 -- ïàðà êîïèé - è ìû âíå ïðåäåëîâ ÊÀÄà... îíî íàäî?
// ñäâèãàåì ïî äèàãîíàëè íåìíîæêî âïðàâî-âíèç, ÷òîáû áûëî âèäíî ñêîïèðîâàííûå ôèãóðû - è õàðý
// ïîëó÷èòü ãðàíèöû âûäåëåííûõ îáúåêòîâ
{
SelBnd := GCadForm.PCad.GetSelectionRect;
Offsetdeltax := abs(SelBnd.Right - SelBnd.Left);
Offsetdeltay := abs(SelBnd.Bottom - SelBnd.Top);
if Offsetdeltax < Offsetdeltay then
begin
if Offsetdeltax <> 0 then //17.05.2011
Offsetdeltay := 0;
end
else
begin
if Offsetdeltay <> 0 then
Offsetdeltax := 0;
end;
}
Offsetdeltay := 10;
Offsetdeltax := 10;
//
// äîïîëíèòü ñ-ï, êîòîðûå íà ïóñòûõ âûäåëåííûõ ñ-ï
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
FFigure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) and (not TConnectorObject(FFigure).FIsApproach) then
begin
if TConnectorObject(FFigure).ConnectorType = ct_Clear then
begin
RaiseConn := nil;
RaiseLine := nil;
if TConnectorObject(FFigure).JoinedConnectorsList.Count > 0 then
ObjFromRaise := TConnectorObject(TConnectorObject(FFigure).JoinedConnectorsList[0])
else
ObjFromRaise := TConnectorObject(FFigure);
RaiseConn := GetRaiseConn(ObjFromRaise);
if RaiseConn <> nil then
RaiseLine := GetRaiseLine(RaiseConn);
if RaiseConn <> nil then
if CheckNoFigureInList(RaiseConn, FiguresList) then
FiguresList.Add(RaiseConn);
if RaiseLine <> nil then
if not RaiseLine.Deleted then // Tolik 17/12/2020 --
if CheckNoFigureInList(RaiseLine, FiguresList) then
FiguresList.Add(RaiseLine);
end;
end;
end;
// Tolik 27/02/2017 --
//if FiguresList.Count > 0 then
if ((FiguresList.Count > 0) and (GUserOBjectsQuotaLimit_Message_Counter < 3)) then
begin
UserQuotaReached_Message := GetQuotaMessage(CheckUserObjQuotaReached(FiguresList.Count), cMess_Quota_DuplicateFigList);
if UserQuotaReached_Message = '' then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
BeginDublicateCADObjects;
DupList := CreateSCSObjectDuplicates(GCadForm, FiguresList);
RefreshCAD(GCadForm.PCad);
end
else
if GUserOBjectsQuotaLimit_Message_Counter < 4 then
begin
PauseProgress(True);
ShowMessage(UserQuotaReached_Message);
PauseProgress(False);
end;
end;
FreeAndNil(FiguresList);
EndDublicateCADObjects;
// !!!
if DupList <> nil then
begin
// ãëîáàëüíîå ñìåùåíèå ÓÃÎ îáúåêòîâ
for i := 0 to DupList.Count - 1 do
begin
FFigure := TFigure(DupList[i]);
if CheckFigureByClassName(FFigure, cTConnectorObject) then
begin
if TConnectorObject(FFigure).ConnectorType <> ct_Clear then
begin
PointConn := TConnectorObject(FFigure);
GetParentDup := TConnectorObject(GetFigureByID(GCadForm, PointConn.tmpParentDupID));
if GetParentDup <> nil then
begin
if GetParentDup.DrawFigure <> nil then
begin
DrawDeltaX := GetParentDup.DrawFigure.CenterPoint.x - GetParentDup.ActualPoints[1].x;
DrawDeltaY := GetParentDup.DrawFigure.CenterPoint.y - GetParentDup.ActualPoints[1].y;
PointToX := PointConn.ActualPoints[1].x + DrawDeltaX;
PointToY := PointConn.ActualPoints[1].y + DrawDeltaY;
if PointConn.DrawFigure <> nil then
begin
PointConn.DrawFigure.move(PointToX - PointConn.DrawFigure.CenterPoint.x, PointToY - PointConn.DrawFigure.CenterPoint.y);
end;
end;
end;
PointConn.tmpParentDupID := -1;
end;
end;
end;
// âûäåëèòü ãðóïïû è ñìåñòèòü åå
GCadForm.PCad.DeselectAll(0);
RefreshCAD(GCadForm.PCad);
for i := 0 to DupList.Count - 1 do
TFigure(DupList[i]).Select;
// Tolik -- 23/11/2015 -- íå ñäåëàòü - íà ñëåäóþùåì ïîâòîðíîì äóáëèêàòå
// ïîëîìàåòñÿ âñå íàõ, åñëè áóäóò ñ/ï
for i := 0 to DupList.Count - 1 do
begin
if CheckFigurebyClassName(TFigure(DupList[i]), cTConnectorObject) then
begin
// íà ct_NB âûáèðàåì âñå ïóñòûå, ÷òîáû ïîïàëè ñ/ï (åñëè åñòü) â ñëåäóþùóþ êîïèþ
if TConnectorObject(DupList[i]).ConnectorType = ct_NB then
begin
for j := 0 to TConnectorObject(DupList[i]).JoinedConnectorsList.Count - 1 do
TConnectorObject(TConnectorObject(DupList[i]).JoinedConnectorsList[j]).Selected := True;
end
else // ïóñòîé êîííåêòîð
if (TConnectorObject(DupList[i]).ConnectorType = ct_Clear) and
(TConnectorObject(DupList[i]).JoinedConnectorsList.Count = 0 ) and // òàì ãäå <> 0 îòáåðåòñÿ íà ct_NB
(TConnectorObject(DupList[i]).JoinedOrthoLinesList.Count > 0 ) then
TConnectorObject(DupList[i]).Selected := True;
end
else
// ñ/ï íå âûáèðàåì (íà âñÿêèé ñáðàñûâàåì)
if CheckFigurebyClassName(TFigure(DupList[i]), cTOrthoLine) then
if TOrthoLine(DupList[i]).FIsRaiseUpDown then
TOrthoLine(DupList[i]).Selected := False;
end;
//Tolik 03/09/2016 -- âûðîâíÿòü âåðòèêàëè ïîñëå ñíàïà êîííåòêîðîâ (êîííåêòîðû âåðòèêàëè ìîãóò ñäâèíóòüñÿ)
CheckAlignVLines(DupList);
//
RefreshCAD(GCadForm.PCad);
UnSelectFiguresOnSelectedChange(GcadForm.PCad.Selection);
RefreshCAD(GCadForm.PCad);
// ïåðåìåñòèòü
{ for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
{ FFigure := TFigure(GCadForm.PCad.Selection[i]);
// Tolik 24/11/2015 -- ïðîâåðèòü è äâèíóòü òîëüêî ïóñòûå è íåïðèñîåäèíåííûå ê òî÷å÷íûì êîííåêòîðû
// ÷òîáû íå áûëî äâîéíîãî ñäâèãà
CanMoveFigure := False;
if CheckFigureByClassName(FFigure, cTConnectorObject) then
begin
if TConnectorObject(FFigure).ConnectorType = ct_Clear then
begin
CanMoveFigure := True;
for j := 0 to TConnectorObject(FFigure).JoinedConnectorsList.Count - 1 do
begin
if ((TConnectorObject(TConnectorObject(FFigure).JoinedConnectorsList[j]).ConnectorType = ct_NB) and
(GCadForm.PCad.Selection.IndexOf(TConnectorObject(TConnectorObject(FFigure).JoinedConnectorsList[j])) <> -1)) then
begin
CanMoveFigure := False;
Break; //// BREAK ////
end;
end;
end;
end
else
if CheckFigureByClassName(FFigure, cTOrthoLine) then
begin
if ((GCadForm.PCad.Selection.IndexOf(TOrthoLine(FFigure).JoinConnector1) <> -1) or
(GCadForm.PCad.Selection.IndexOf(TOrthoLine(FFigure).JoinConnector2) <> -1)) then
CanMoveFigure := False;
end
else
CanMoveFigure := True;
if CanMoveFigure then
begin }
//
GCadForm.PCad.MoveSelection(Offsetdeltax, Offsetdeltay);
{ if not FFigure.LockMove then
begin
if FFigure is TNet then
TNet(FFigure).FMoveAllPoints := true;
FFigure.Move(Offsetdeltax, Offsetdeltay);
if FFigure is TNet then
TNet(FFigure).FMoveAllPoints := false;
end;
end;
end; }
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateDuplicatesExecute', E.Message);
end;
// Tolik -- 24/11/2015 -- âîññòàíàâëèâàåì çíà÷åíèÿ íàñòðîåê ïðèâÿçêè(âûðàâíèâàíèÿ) îáúåêòîâ äëÿ ÊÀÄà
GCadForm.PCad.SnapToGrids := SnapToGridsValue;
GCadForm.PCad.SnapToGuides := SnapToGuidesValue;
GCadForm.PCad.SnapToNearPoint := SnapToNearValue;
if DupList <> nil then // ýòî ïðîñòî çàáûëè
FreeAndNil(DupList);
//if GCadForm.GisEventWaiting then
if GCadForm.FRemFigures.Count > 0 then
begin
//GCadForm.PCad.EventEngine(95,1,'',0); // Tolik 27/03/2019 --
GCadForm.PCad.OnGUIEvent := GCADFORM.PCadGUIEvent;
end;
//
EndProgress;
end;
procedure TFSCS_Main.aCHMExecute(Sender: TObject);
var
FileName: string;
begin
try
FileName := ExeDir + '\Help\Help.chm';
if FileExists(FileName) then
begin
ShellExecute(FSCS_Main.Handle, 0, PChar(FileName), 0, 0, SW_SHOWNORMAL);
end
else
ShowMessage(cMain_Mes87);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCHMExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDisconnectTracesExecute(Sender: TObject);
var
i: Integer;
CurObject: TConnectorObject;
SelList, FigList: TList;
//vList: TList;
//vIntLIst: TIntList;
begin
try
if GPopupFigure = nil then
exit;
SelList := TList.Create;
for i := 0 to GCadForm.PCad.SelectedCount - 1 do
begin
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[i]), cTConnectorObject) then
begin
CurObject := TConnectorObject(GCadForm.PCad.Selection[i]);
if CurObject.ConnectorType = Ct_Clear then
SelList.Add(CurObject);
end;
end;
if SelList.Count > 0 then
begin
// *UNDO*
// vIntList := GetListsIDRelatedToFigures(GCadForm.FCADListID, FiguresToIntFigures(SelList));
// vList := IntCadsToCads(vIntList);
// if vList.Count = 1 then
// GCadForm.SaveForUndo(uat_None, True, False)
// else
// SaveForProjectUndo(vList, True, False);
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to SelList.Count - 1 do
begin
CurObject := TConnectorObject(SelList[i]);
CurObject.Deselect;
DisconnectTraces(CurObject);
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
FreeAndNil(SelList);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDisconnectTracesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aRotateTraceDrawFigure180Execute(Sender: TObject);
var
RotateTrace: TOrthoLine;
CP: TDoublePoint;
begin
try
if GPopupFigure = nil then
exit;
RotateTrace := TOrthoLine(GPopupFigure);
CP := DoublePoint((RotateTrace.ActualPoints[1].x + RotateTrace.ActualPoints[2].x) / 2,
(RotateTrace.ActualPoints[1].y + RotateTrace.ActualPoints[2].y) / 2);
// âåðíóòü â Ðåæèì îáû÷íûé
if RotateTrace.FIsRotated then
begin
RotateTrace.FIsRotated := false;
if RotateTrace.DrawFigure <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
RotateTrace.DrawFigure.Rotate(- pi, CP);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end
else
// â Ðåæèì 180
begin
RotateTrace.FIsRotated := true;
if RotateTrace.DrawFigure <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
RotateTrace.DrawFigure.Rotate(pi, CP);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRotateTraceDrawFigure180Execute', E.Message);
end;
end;
procedure TFSCS_Main.aDesignBoxParamsExecute(Sender: TObject);
var
DesignID: Integer;
BoxID: Integer;
FList: TF_CAD;
FBox: TConnectorObject;
begin
try
F_ChooseDesignBoxParams.cbShowDesignBoxName.Checked := GCadForm.FDesignListShowName;
F_ChooseDesignBoxParams.cbShowDesignBoxSign.Checked := GCadForm.FDesignListShowSign;
F_ChooseDesignBoxParams.cbShowDesignBoxMark.Checked := GCadForm.FDesignListShowMark;
if F_ChooseDesignBoxParams.Execute then
begin
GCadForm.FDesignListShowName := F_ChooseDesignBoxParams.cbShowDesignBoxName.Checked;
GCadForm.FDesignListShowSign := F_ChooseDesignBoxParams.cbShowDesignBoxSign.Checked;
GCadForm.FDesignListShowMark := F_ChooseDesignBoxParams.cbShowDesignBoxMark.Checked;
DesignID := GCadForm.FJoinedListIDForDesignList;
BoxID := GCadForm.FJoinedBoxIDForDesignList;
FList := GetListByID(DesignID);
if FList <> nil then
begin
FBox := TConnectorObject(GetFigureByID(FList, BoxID));
if FBox <> nil then
begin
UpdateDesignList(GCadForm, FBox);
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aDesignBoxParamsExecute', E.Message);
end;
end;
procedure TFSCS_Main.aPackNormBaseExecute(Sender: TObject);
begin
try
PackNormBase;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPackNormBaseExecute', E.Message);
end;
end;
procedure TFSCS_Main.aPackProjManExecute(Sender: TObject);
begin
try
PackProjMan;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aPackProjManExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMirrorBlockExecute(Sender: TObject);
var
vObject: TConnectorObject;
ang: Double;
begin
try
if GPopupFigure <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
vObject := TConnectorObject(GPopupFigure);
ang := vObject.FDrawFigureAngle;
vObject.DrawFigure.Rotate(- ang, vObject.DrawFigure.CenterPoint);
vObject.DrawFigure.Mirror(vObject.DrawFigure.CenterPoint, vObject.DrawFigure.CenterPoint);
vObject.DrawFigure.Rotate(ang);
// vObject.DrawFigure.Rotate(pi, vObject.DrawFigure.CenterPoint);
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMirrorBlockExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMarkForTracingExecute(Sender: TObject);
var
vLine: TOrthoLine;
begin
try
if GPopupFigure <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
vLine := TOrthoLine(GPopupFigure);
vLine.FMarkTracing := not vLine.FMarkTracing;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMarkForTracingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aBlockParamsExecute(Sender: TObject);
{var
TempBlock: TFigure;
FigHandle: Integer;
CommonNetIdx: Integer;
IsSaveForUndo: Boolean;}
var
SelFigure: TFigure;
SelFigureObj: TSCSComponent;
CommonNetIdx: Integer;
begin
if GCadForm.PCad.Selection.Count > 1 then
begin
SelFigure := TFigure(GCadForm.PCad.Selection[0]);
//10.05.2012 Åñëè TNet, òî åñëè âûäåëåíû âñå ñåãìåíòû êðûøè (ñâÿçàííûå), òî âûâîäèì äèàëîã ñ ó÷åòîì âûñîòû êðûøè
if (SelFigure.ClassName = TNet.ClassName) and (TNet(SelFigure).FComponID <> 0) then
begin
CommonNetIdx := GCadForm.RemoveFigureFromSelected(GCadForm.FActiveNet);
SelFigureObj := GetArchObjByCADObj(SelFigure);
if SelFigureObj <> nil then
if SelFigureObj.IsLine = ctArhRoofSeg then
begin
if IsAllRelatedNetsInList(TNet(SelFigure), GCadForm.PCad.Selection, true) then
ShowRoofParams(GCadForm, nil, GCadForm.PCad.Selection);
end;
if CommonNetIdx <> -1 then
begin
GCadForm.PCad.Selection.Add(GCadForm.FActiveNet);
GCadForm.FActiveNet.Selected := true;
end;
end;
end
else
ShowBlockParamsForPopupFigure;
{try
TempBlock := nil;
IsSaveForUndo := false;
try
if (GPopupFigure = nil) then
begin
if GCadForm.PCad.ActiveLayer = lnArch then
begin
GCadForm.BeginSaveForUndo(uat_None, False, False);
IsSaveForUndo := true;
if GCadForm.PCad.SelectedCount = 1 then
TempBlock := TFigure(GCadForm.PCad.Selection.Items[0])
else
if GCadForm.PCad.SelectedCount > 0 then
begin
//CommonNetIdx := GCadForm.PCad.Selection.IndexOf(GCadForm.FActiveNet);
//if CommonNetIdx <> -1 then
//begin
// GCadForm.FActiveNet.Selected := false;
// GCadForm.PCad.Selection.Delete(CommonNetIdx);
//end;
CommonNetIdx := GCadForm.RemoveFigureFromSelected(GCadForm.FActiveNet);
FigHandle := GCadForm.PCad.GroupSelection;
SetProjectChanged(True);
TempBlock := TFigure(FigHandle);
if CommonNetIdx <> -1 then
begin
GCadForm.PCad.Selection.Add(GCadForm.FActiveNet);
GCadForm.FActiveNet.Selected := true;
end;
end;
GPopupFigure := TempBlock;
end;
end;
if GPopupFigure <> nil then
begin
F_BlockParams.Execute(GPopupFigure);
end;
if (TempBlock <> nil) and (TempBlock is TFigureGrp) then
begin
GCadForm.PCad.UnGroupSelection;
SetProjectChanged(True);
end;
finally
if IsSaveForUndo then
GCadForm.EndSaveForUndo;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aBlockParamsExecute', E.Message);
end;}
end;
procedure TFSCS_Main.aCabinetFalseFloorExecute(Sender: TObject);
var
Cabinet: TCabinet;
SCSID: Integer;
begin
try
if GPopupFigure <> nil then
begin
SCSID := -1;
if CheckFigureByClassName(GPopupFigure, cTCabinet) then
SCSID := TCabinet(GPopupFigure).FSCSID
else
if CheckFigureByClassName(GPopupFigure, cTCabinetExt) then
SCSID := TCabinetExt(GPopupFigure).FSCSID;
ShowRoomPropsInCAD(GCadForm.FCADListID, SCSID);
// Cabinet := TCabinet(GPopupFigure);
// SetCabinetFalseFloor(Cabinet);
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCabinetFalseFloorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aLicenceTypeExecute(Sender: TObject);
var
CanRemotePath: Boolean;
begin
try
(*
{$IF NOT Defined(TRIAL_SCS)}
CheckProtectionBase(true);
GProtectionType := GetProtectionType;
if GProtectionType <> ltLocal then
begin
if AnsiLowerCase(F_NormBase.DM.Database_SCS.DatabaseName) <> AnsiLowerCase(GetStrFromRegistry(pnServerNameNB, '') + ':' + GetStrFromRegistry(pnLocalPathToNB, '')) then
begin
ShowMessage('Íåîáõîäèìî ïåðåçàïóñòèòü ïðîãðàììíûé êîìïëåêñ!');
ExitProcess(0);
end;
end;
{$IFEND} *)
{$IF Defined (TRIAL_SCS)}
CanRemotePath := false;
{$ELSE}
CanRemotePath := true;
{$IFEND}
ConnecToNBWizard(true, false, true, CanRemotePath);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aLicenceTypeExecute', E.Message);
end;
end;
procedure TFSCS_Main.aToolMultiLineExecute(Sender: TObject);
begin
try
if ActiveMDIChild <> nil then
begin
aSetSCSLayer.Execute;
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GDefaultNum := 2;
GDefaultGap := 4;
GCurrentConnectorType := ct_Clear;
F_OrthoLineParams.ShowModal;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aToolMultiLineExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowDisconnectedObjectsExecute(Sender: TObject);
begin
try
if aShowDisconnectedObjects.Checked = True then
begin
GCadForm.FShowDisconnectedObjects := True;
end
else
begin
GCadForm.FShowDisconnectedObjects := False;
end;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aShowDisconnectedObjectsExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMasterUpdateComponPriceFromXFExecute(Sender: TObject);
begin
try
ShowMasterUpdatePriceInNB;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMasterUpdateComponPriceFromXFExecute', E.Message);
end;
end;
procedure TFSCS_Main.aRefreshDesignListExecute(Sender: TObject);
var
vList: TF_CAD;
vBox: TConnectorObject;
begin
try
vList := GetListByID(GCadForm.FJoinedListIDForDesignList);
if vList <> nil then
begin
vBox := TConnectorObject(GetFigureByID(vList, GCadForm.FJoinedBoxIDForDesignList));
if vBox <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndoDesignList(uat_None, false, false);
GCadForm.FCanSaveForUndo := False;
end;
UpdateDesignList(GCadForm, vBox);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aRefreshDesignListExecute', E.Message);
end;
end;
procedure TFSCS_Main.aBackUpBaseExecute(Sender: TObject);
begin
BackUpBase(bkNone);
end;
procedure TFSCS_Main.aRestoreBaseExecute(Sender: TObject);
begin
RestoreBase;
end;
procedure TFSCS_Main.aExpertModeExecute(Sender: TObject);
var
i: integer;
CAD: TF_CAD;
begin
try
GSCSIni.Controls.F_SCSMain_IsPanelExpertMode := aExpertMode.Checked; //01.04.2009
WriteControls(GSCSIni.Controls); //#From Oleg#
//19.12.2011 -
//for i := 0 to FSCS_Main.MDIChildCount - 1 do
//begin
// CAD := TF_CAD(FSCS_Main.MDIChildren[i]);
// CAD.OnResize := nil;
//end;
cbMainPanel.DisableAlign;
try
//cbMainPanel.
if aExpertMode.Checked then
begin
tbCADToolsExpert.Visible := True;
tbSCSToolsExpert.Visible := True;
// Tolik 24/01/2017 --
tbCADToolsNoob2.Visible := False;
tbCalc.Visible := true;
//
tbCADToolsNoob.Visible := False;
tbSCSToolsNoob.Visible := False;
if Assigned(tbSCSToolsExpert) and Assigned(cbMainPanel) then
begin
tbSCSToolsExpert.Width := cSCSExpert;
tbSCSToolsExpert.Left := cbMainPanel.Width - tbSCSToolsExpert.Width;
end;
//Tolik 13/08/2021 --
ToolButton9.Visible := True;
ToolButton10.Visible := True;
//tbSCSToolsNoob.Visible := True;
//
end
else
begin
//Tolik 13/08/2021 --
ToolButton9.Visible := False;
ToolButton10.Visible := False;
tbSCSToolsNoob.Visible := False;
tbCalc.Visible := false;
//
tbCADToolsExpert.Visible := False;
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsExpert.Visible := True;
{$else}
tbSCSToolsExpert.Visible := False;
{$ifend}
tbCADToolsNoob2.Visible := False;
tbCADToolsNoob.Visible := False;
tbCADToolsNoob.Visible := True;
// Tolik 24/01/2017 - -
tbCADToolsNoob2.Visible := True;
//
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsNoob.Visible := False;
{$else}
//tbSCSToolsNoob.Visible := True;
{$ifend}
if Assigned(tbSCSToolsNoob) and Assigned(cbMainPanel) then
begin
{$IF Defined(SCS_PE) or Defined(SCS_SPA)}
tbCADToolsNoob.Width := cCADNoob_PE;
tbCADToolsNoob2.Width := cCADNoob_PE;
tbCADToolsNoob2.Top := tbCADToolsNoob.Top + 32;
// Tolik -- 24/01/2017
// tbSCSToolsNoob.Width := cSCSNoob_PE;
tbSCSToolsNoob.Width := cSCSNoob_PE + 20;
//
{$ELSEIF Defined(TELECOM)}
tbCADToolsNoob.Width := cCADNoob_TEL;
tbCADToolsNoob2.Width := cCADNoob_TEL;
tbCADToolsNoob2.Top := tbCADToolsNoob.Top + 30;
// Tolik 24/01/2017 --
// tbSCSToolsNoob.Width := cSCSNoob_SCS;
tbSCSToolsNoob.Width := cSCSNoob_SCS + 20;
//
{$ELSE}
// Tolik -- 01/02/2017 --
{$if Defined(ES_GRAPH_SC)}
tbCADToolsNoob.Width := 600;
tbCADToolsNoob2.Width := 300;
{$ELSE}
//
tbCADToolsNoob.Width := cCADNoob_SCS;
//Tolik 17/08/2021 --
//tbCADToolsNoob2.Width := cCADNoob_SCS;
tbCADToolsNoob2.Width := cCADNoob_SCS;
//
tbCADToolsNoob2.Top := tbCADToolsNoob.Top + 30;
{$ifend}
// Tolik -- 24/01/2017 --
// tbSCSToolsNoob.Width := cSCSNoob_SCS;
tbSCSToolsNoob.Width := cSCSNoob_SCS + 20;
//
{$IFEND}
// Tolik -- 24/01/2017 --
// tbSCSToolsNoob.Left := cbMainPanel.Width - tbSCSToolsNoob.Width;
tbSCSToolsNoob.Left := cbMainPanel.Width - tbSCSToolsNoob.Width;
//
end;
end;
if tbCADToolsNoob.Visible then
begin
tbCADToolsNoob.Top := tbCADToolsExpert.Top;
tbCADToolsNoob.Left := tbCADToolsExpert.Left;
// Tolik -- 01/02/2017 --
tbCADToolsNoob2.Visible := False;
tbCADToolsNoob.visible := False;
{$if Defined(ES_GRAPH_SC)}
tbCADToolsNoob2.Left := tbCADToolsNoob.Left + tbCADToolsNoob.width + 10;
tbCADToolsNoob2.Top := tbCADToolsExpert.Top;
{$else}
tbCADToolsNoob2.Top := tbCADToolsExpert.Top + 30;
tbCADToolsNoob2.Left := tbCADToolsExpert.Left;
{$ifend}
tbCADToolsNoob.Visible := True;
tbCADToolsNoob2.Visible := True;
//
end;
if tbSCSToolsNoob.Visible then
begin
tbSCSToolsNoob.Top := tbSCSToolsExpert.Top;
end;
if tbCADToolsExpert.Visible then
begin
tbSelectExpert.Down := True;
tbSelectNoob.Down := False;
end
else
begin
tbSelectExpert.Down := False;
tbSelectNoob.Down := True;
end;
finally
cbMainPanel.EnableAlign;
//19.12.2011 -
//for i := 0 to FSCS_Main.MDIChildCount - 1 do
//begin
// CAD := TF_CAD(FSCS_Main.MDIChildren[i]);
// CAD.OnResize := CAD.FormResize;
//end;
end;
if GCadForm <> nil then
GCadForm.FormActivate(GCadForm);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aExpertModeExecute', E.Message);
end;
end;
procedure TFSCS_Main.cbLayersPropertiesInitPopup(Sender: TObject);
var
i: integer;
begin
if (GCadForm.PCad.Layers.Count - 1) <> cbLayers.Properties.Items.Count then
begin
cbLayers.Properties.Items.Clear;
for i := 1 to GCadForm.PCad.LayerCount - 1 do
cbLayers.Properties.Items.Add(GCadForm.PCad.GetLayerName(i));
end;
end;
procedure TFSCS_Main.aShowPMUsersExecute(Sender: TObject);
begin
try
ShowPMUsers;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.Act_ShowPMUsersExecute', E.Message);
end;
end;
procedure TFSCS_Main.aLoginUserToProManExecute(Sender: TObject);
begin
try
LoginUserToProMan;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aLoginUserToProManExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowCurrUserInfoExecute(Sender: TObject);
begin
try
ShowCurrUserInfo;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aShowCurrUserInfoExecute', E.Message);
end;
end;
procedure TFSCS_Main.aExpertNewsExecute(Sender: TObject);
var
temps : string;
t : word;
innt: integer;
tmr: integer;
s : string;
begin
try
if PROG_NEWSID <> '-1' then
begin
temps := ExtractFilePath(application.ExeName)+'news\mess.txt';
t := 11;
case Get_News(application.Handle, PROG_NEWSID, SiteUrlNews + 'expert_news/expert_news' + IDESerialG + '.html', SiteUrlNews + 'expert_news/expert_news.html', temps, 1, t) of
0:begin
end;
end;
case Get_News(application.Handle, PROG_NEWSID, SiteUrlNews + 'expert_news/expert_news' + IDESerialG + '.html', SiteUrlNews + 'expert_news/expert_news.html', temps, 2, t) of
0:begin
innt:=t*60*1000;
tmr:=innt;
TimerNews.Interval := tmr;
end;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aExpertNewsExecute', E.Message);
end;
end;
procedure TFSCS_Main.TimerNewsTimer(Sender: TObject);
var
temps : string;
t : word;
innt: integer;
tmr: integer;
begin
TimerNews.OnTimer := nil;
TimerNews.Enabled := False;
if PROG_NEWSID <> '-1' then
begin
try
temps := ExtractFilePath(application.ExeName)+'news\mess.txt';
case Get_News(application.Handle, PROG_NEWSID, SiteUrlNews + 'expert_news/expert_news' + IDESerialG + '.html', SiteUrlNews + 'expert_news/expert_news.html', temps, 0, t) of
0:begin
TimerNews.Enabled := True;
end;
1:begin TimerNews.Enabled := False;
// ShowMessage('Îøèáêà çàãðóçêè áèáëèîòåêè');
end;
// 2:begin ShowMessage('Îøèáêà âûçîâà ïðîöåäóðû'); end;
// 3:begin ShowMessage('Îøèáî÷íûé ïàðàìåòð âûçîâà'); end;
// 4:begin ShowMessage('Îøèáêà âûïîëíåíèÿ ïðîöåäóðû'); end;
end;
except
end;
TimerNews.OnTimer := TimerNewsTimer;
end;
end;
procedure TFSCS_Main.tbCalcClick(Sender: TObject);
begin
try
{$IF Defined(OEM_NIKOMAX)}
MessageBox(Application.Handle, 'Íåäîñòóïíî â äàííîé ñáîðêå!', 'Âíèìàíèå!', MB_OK);
{$ELSE}
ShowKalc;
{$IFEND}
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.tbCalcClick', E.Message);
end;
end;
procedure TFSCS_Main.aMarkingPagesExecute(Sender: TObject);
begin
try
RepMarkPages;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aMarkingPagesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMarkForDisableTracingExecute(Sender: TObject);
var
vLine: TOrthoLine;
begin
try
if GPopupFigure <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
vLine := TOrthoLine(GPopupFigure);
vLine.FDisableTracing := not vLine.FDisableTracing;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aMarkForTracingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aMasterAutoTraceElectricExecute(Sender: TObject);
begin
try
F_NormBase.Act_AutoTraceByRayMode.Execute;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aMasterAutoTraceElectricExecute', E.Message);
end;
end;
//ôóíêöèÿ âûçîâà
function RunPresentation: boolean;
var
RunPre: procedure(); stdcall;
begin
Result := false;
if phandle = 0 then
phandle := LoadLibrary(PChar('ep.dll'));
try
if phandle <> 0 then
begin
Result := true;
@RunPre:=GetProcAddress(phandle,'RExecute');
@SetHook:=GetProcAddress(phandle,'SetHook');
@DropHook:=GetProcAddress(phandle,'UnHook');
if (@SetHook <> nil) and (@DropHook <> nil) then
is_hook:=true;
if @RunPre <> nil then
begin
try
// SetHook;
RunPre();
except
Result := false;
Exit;
end;
end;
end;
finally
end;
end;
procedure TFSCS_Main.ExpertPresentation1Click(Sender: TObject);
begin
if RunPresentation then
begin
end
else
begin
// Tolik --10/09/2018 -*-
(*
{$IF Defined(SCS_PE)}
ShowMessage('Error load presentation module');
{$ELSE}
ShowMessage('Îøèáêà çàãðóçêè ìîäóëÿ ïðåçåíòàöèè');
{$IFEND}
*)
ShowMessage(cPresentation_err1);
//
end;
end;
procedure TFSCS_Main.WMGetSysCommand(var msg: TMessage);
//var
// OldReadOnly: boolean;
begin
if (msg.wParam = SC_CLOSE) then
begin
GNotNeedCheckRaisesBeforeClose := True;
//if Assigned(F_ProjMan) then
//begin
// OldReadOnly := F_ProjMan.GSCSBase.CurrProject.ReadOnly;
// F_ProjMan.GSCSBase.CurrProject.ReadOnly := true;
//end;
GCloseProg := True;
try
inherited;
finally
GNotNeedCheckRaisesBeforeClose := False;
GCloseProg := False;
// if Assigned(F_ProjMan) then
// F_ProjMan.GSCSBase.CurrProject.ReadOnly := OldReadOnly;
end;
end
else
inherited;
end;
procedure TFSCS_Main.aCreateFloorRaiseUpExecute(Sender: TObject);
var
RaiseOnFigure: TConnectorObject;
ID_Floor: Integer;
i: integer;
ConnForPassage: TConnectorObject;
RaiseConn: TConnectorObject;
RaiseConnPassage: TConnectorObject;
ListForPassage: TF_CAD;
CurGCadFrom: TF_CAD;
LayHandle: Integer;
ObjParams: TObjectParams;
CreatePoints: TDoublePoint;
z: double;
vLists: TList;
SavedGCadForm: TF_CAD;
SavedGPopupFigure: TFigure;
begin
// Tolik 09/02/2017 --
vLists := nil;
//
try
RaiseOnFigure := nil; //#From Oleg# //14.09.2010
if (not ShowCreateRaiseQuery) or F_CreateRaiseQuery.Execute then
begin
// èñêàòü ýòàæ
ID_Floor := GetListIDForCreatePassage(GCadForm.FCADListID, 1);
ListForPassage := nil;
if ID_Floor > 0 then
if Not CheckListExist(ID_Floor) then
begin
SavedGCadForm := GCadForm;
SavedGPopupFigure := GPopupFigure;
Application.ProcessMessages;
ReopenListInCAD(ID_Floor, '');
Application.ProcessMessages;
GCadForm := SavedGCadForm;
GPopupFigure := SavedGPopupFigure;
end;
for i := 0 to FSCS_Main.MDIChildCount - 1 do
begin
if TF_CAD(FSCS_Main.MDIChildren[i]).FCADListID = ID_Floor then
begin
ListForPassage := TF_CAD(FSCS_Main.MDIChildren[i]);
Break;
end;
end;
// Íàéäåííûé ýòàæ
if ListForPassage = nil then
begin
ShowMessage(cMain_Mes45);
GCadForm.mProtocol.Lines.Add(cMain_Mes45);
Exit;
end
else
begin
// òèï ëèñòà íå îáû÷íûé
if ListForPassage.FListType <> lt_Normal then
begin
ShowMessage(cMain_Mes46);
Exit;
end;
// òèï ñåòè âíåøíÿÿ
if ListForPassage.FSCSType = st_External then
begin
ShowMessage(cMain_Mes101);
Exit;
end;
end;
if GPopupFigure = nil then
Exit;
// *UNDO*
vLists := TList.Create;
vLists.Add(GCadForm);
vLists.Add(ListForPassage);
SaveForProjectUndo(vLists, True, False);
// if GCadForm.FCanSaveForUndo then
// begin
// GCadForm.SaveForUndo(uat_Floor);
// GCadForm.FCanSaveForUndo := False;
// end;
// if ListForPassage.FCanSaveForUndo then
// begin
// ListForPassage.SaveForUndo(uat_Floor);
// ListForPassage.FCanSaveForUndo := False;
// end;
if CheckFigureByClassName(GPopupFigure, cTOrthoLine) then
begin
if TOrthoLine(GPopupFigure).ActualZOrder[1] = TOrthoLine(GPopupFigure).ActualZOrder[2] then
begin
CreatePoints := GetCoordsWithSnapToGrid(GCurrMousePos.x, GCurrMousePos.y);
z := TOrthoLine(GPopupFigure).ActualZOrder[1];
end
else
begin
CreatePoints.x := (TOrthoLine(GPopupFigure).ActualPoints[1].x + TOrthoLine(GPopupFigure).ActualPoints[2].x) / 2;
CreatePoints.y := (TOrthoLine(GPopupFigure).ActualPoints[1].y + TOrthoLine(GPopupFigure).ActualPoints[2].y) / 2;
z := (TOrthoLine(GPopupFigure).ActualZOrder[1] + TOrthoLine(GPopupFigure).ActualZOrder[2]) / 2;
end;
{//25.06.2013
RaiseOnFigure := TConnectorObject.Create(CreatePoints.x, CreatePoints.y, z, GPopupFigure.LayerHandle, mydsNormal, GCadForm.PCad);
RaiseOnFigure.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(GPopupFigure.LayerHandle), RaiseOnFigure, False);
RaiseOnFigure.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(RaiseOnFigure.ID, RaiseOnFigure.Name);
ObjParams := GetFigureParams(RaiseOnFigure.ID);
RaiseOnFigure.Name := ObjParams.Name;
RaiseOnFigure.FIndex := ObjParams.MarkID;}
RaiseOnFigure := GCadForm.CreateConnForFloorRaise(CreatePoints.x, CreatePoints.y, z, GPopupFigure.LayerHandle);
SnapConnectorToOrtholine(RaiseOnFigure, TOrthoLine(GPopupFigure));
end
else
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) then
begin
RaiseOnFigure := TConnectorObject(GPopupFigure);
end;
// ñîçäàòü ì-ý ïîäúåì ñ ýòàæà íà îáúåêòå
if RaiseOnFigure.ConnectorType = ct_Clear then
RaiseConn := CreateBetweenFloorRaiseOnConnector(RaiseOnFigure, lrt_Up)
else
RaiseConn := CreateBetweenFloorRaiseOnPointObject(RaiseOnFigure, lrt_Up);
ListForPassage := TF_CAD(FSCS_Main.MDIChildren[i]);
CurGCadFrom := GCadForm;
GCadForm := ListForPassage;
GCadForm.BringToFront;
// Ñîçäàòü îáúåêò íà íàéäåíîì ýòàæå
LayHandle := GCadForm.PCad.GetLayerHandle(2);
//24.10.2012 ConnForPassage := TConnectorObject.Create(RaiseConn.ActualPoints[1].x, RaiseConn.ActualPoints[1].y, ListForPassage.FConnHeight,
//24.10.2012 LayHandle, mydsNormal, GCadForm.PCad);
ConnForPassage := TConnectorObject.Create(RaiseConn.ActualPoints[1].x, RaiseConn.ActualPoints[1].y, ListForPassage.FLineHeight,
LayHandle, mydsNormal, GCadForm.PCad);
ConnForPassage.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(LayHandle), ConnForPassage, False);
ConnForPassage.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(ConnForPassage.ID, ConnForPassage.Name);
ObjParams := GetFigureParams(ConnForPassage.ID);
ConnForPassage.Name := ObjParams.Name;
ConnForPassage.FIndex := ObjParams.MarkID;
// ñîçäàòü ì-ý ñïóñê îò òîãî îáúåêòà
RaiseConnPassage := CreateBetweenFloorRaiseOnConnector(ConnForPassage, lrt_Down);
GCadForm := CurGCadFrom;
GCadForm.BringToFront;
// Çàïîëíèòü ïîëÿ ñîåäèíåíèé òî÷åê ïåðåõîäà
RaiseConn.FID_ListToPassage := ListForPassage.FCADListID;
RaiseConn.FID_ConnToPassage := RaiseConnPassage.ID;
RaiseConnPassage.FID_ListToPassage := GCadForm.FCADListID;
RaiseConnPassage.FID_ConnToPassage := RaiseConn.ID;
SetConnBringToFront(RaiseOnFigure);
SetConnBringToFront(ConnForPassage);
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
ListForPassage.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateFloorRaiseUpExecute', E.Message);
end;
// Tolik 09/02/2017 --
if vLists <> nil then
FreeAndNil(vLists);
//
end;
procedure TFSCS_Main.aCreateFloorRaiseDownExecute(Sender: TObject);
var
RaiseOnFigure: TConnectorObject;
ID_Floor: Integer;
i: integer;
ConnForPassage: TConnectorObject;
RaiseConn: TConnectorObject;
RaiseConnPassage: TConnectorObject;
ListForPassage: TF_CAD;
CurGCadFrom: TF_CAD;
LayHandle: Integer;
ObjParams: TObjectParams;
CreatePoints: TDoublePoint;
z: double;
vLists: TList;
SavedGCadForm: TF_CAD;
SavedGPopupFigure: TFigure;
begin
// Tolik -- 09/02/2017 --
vLists := Nil;
//
try
RaiseOnFigure := nil; //#From Oleg# //14.09.2010
if (not ShowCreateRaiseQuery) or F_CreateRaiseQuery.Execute then
begin
// èñêàòü ýòàæ
ID_Floor := GetListIDForCreatePassage(GCadForm.FCADListID, -1);
ListForPassage := nil;
if ID_Floor > 0 then
if Not CheckListExist(ID_Floor) then
begin
SavedGCadForm := GCadForm;
SavedGPopupFigure := GPopupFigure;
Application.ProcessMessages;
ReopenListInCAD(ID_Floor, '');
Application.ProcessMessages;
GCadForm := SavedGCadForm;
GPopupFigure := SavedGPopupFigure;
end;
for i := 0 to FSCS_Main.MDIChildCount - 1 do
begin
if TF_CAD(FSCS_Main.MDIChildren[i]).FCADListID = ID_Floor then
begin
ListForPassage := TF_CAD(FSCS_Main.MDIChildren[i]);
Break;
end;
end;
// Íàéäåííûé ýòàæ
if ListForPassage = nil then
begin
ShowMessage(cMain_Mes47);
GCadForm.mProtocol.Lines.Add(cMain_Mes47);
Exit;
end
else
begin
// òèï ëèñòà íå îáû÷íûé
if ListForPassage.FListType <> lt_Normal then
begin
ShowMessage(cMain_Mes48);
Exit;
end;
// òèï ñåòè âíåøíÿÿ
if ListForPassage.FSCSType = st_External then
begin
ShowMessage(cMain_Mes102);
Exit;
end;
end;
if GPopupFigure = nil then
Exit;
// *UNDO*
vLists := TList.Create;
vLists.Add(GCadForm);
vLists.Add(ListForPassage);
SaveForProjectUndo(vLists, True, False);
if CheckFigureByClassName(GPopupFigure, cTOrthoLine) then
begin
if TOrthoLine(GPopupFigure).ActualZOrder[1] = TOrthoLine(GPopupFigure).ActualZOrder[2] then
begin
CreatePoints := GetCoordsWithSnapToGrid(GCurrMousePos.x, GCurrMousePos.y);
z := TOrthoLine(GPopupFigure).ActualZOrder[1];
end
else
begin
CreatePoints.x := (TOrthoLine(GPopupFigure).ActualPoints[1].x + TOrthoLine(GPopupFigure).ActualPoints[2].x) / 2;
CreatePoints.y := (TOrthoLine(GPopupFigure).ActualPoints[1].y + TOrthoLine(GPopupFigure).ActualPoints[2].y) / 2;
z := (TOrthoLine(GPopupFigure).ActualZOrder[1] + TOrthoLine(GPopupFigure).ActualZOrder[2]) / 2;
end;
{//19.06.2013
RaiseOnFigure := TConnectorObject.Create(CreatePoints.x, CreatePoints.y, z, GPopupFigure.LayerHandle, mydsNormal, GCadForm.PCad);
RaiseOnFigure.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(GPopupFigure.LayerHandle), RaiseOnFigure, False);
RaiseOnFigure.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(RaiseOnFigure.ID, RaiseOnFigure.Name);
ObjParams := GetFigureParams(RaiseOnFigure.ID);
RaiseOnFigure.Name := ObjParams.Name;
RaiseOnFigure.FIndex := ObjParams.MarkID;}
RaiseOnFigure := GCadForm.CreateConnForFloorRaise(CreatePoints.x, CreatePoints.y, z, GPopupFigure.LayerHandle);
SnapConnectorToOrtholine(RaiseOnFigure, TOrthoLine(GPopupFigure));
end
else
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) then
begin
RaiseOnFigure := TConnectorObject(GPopupFigure);
end;
if RaiseOnFigure.ConnectorType = ct_Clear then
RaiseConn := CreateBetweenFloorRaiseOnConnector(RaiseOnFigure, lrt_Down)
else
RaiseConn := CreateBetweenFloorRaiseOnPointObject(RaiseOnFigure, lrt_Down);
CurGCadFrom := GCadForm;
GCadForm := ListForPassage;
GCadForm.BringToFront;
// Ñîçäàòü îáúåêò íà íàéäåíîì ýòàæå
LayHandle := GCadForm.PCad.GetLayerHandle(2);
//24.10.2012 ConnForPassage := TConnectorObject.Create(RaiseConn.ActualPoints[1].x, RaiseConn.ActualPoints[1].y, ListForPassage.FConnHeight,
//24.10.2012 LayHandle, mydsNormal, GCadForm.PCad);
ConnForPassage := TConnectorObject.Create(RaiseConn.ActualPoints[1].x, RaiseConn.ActualPoints[1].y, ListForPassage.FLineHeight,
LayHandle, mydsNormal, GCadForm.PCad);
ConnForPassage.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(LayHandle), ConnForPassage, False);
ConnForPassage.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(ConnForPassage.ID, ConnForPassage.Name);
ObjParams := GetFigureParams(ConnForPassage.ID);
ConnForPassage.Name := ObjParams.Name;
ConnForPassage.FIndex := ObjParams.MarkID;
// ñîçäàòü ì-ý ïîäúåì îò òîãî îáúåêòà
RaiseConnPassage := CreateBetweenFloorRaiseOnConnector(ConnForPassage, lrt_Up);
GCadForm := CurGCadFrom;
GCadForm.BringToFront;
// Çàïîëíèòü ïîëÿ ñîåäèíåíèé òî÷åê ïåðåõîäà
RaiseConn.FID_ListToPassage := ListForPassage.FCADListID;
RaiseConn.FID_ConnToPassage := RaiseConnPassage.ID;
RaiseConnPassage.FID_ListToPassage := GCadForm.FCADListID;
RaiseConnPassage.FID_ConnToPassage := RaiseConn.ID;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
ListForPassage.FCanSaveForUndo := True;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aCreateFloorRaiseDownExecute', E.Message);
end;
// Tolik 09/02/2017 --
if VLists <> nil then
FreeAndNil(vLists);
//
end;
procedure TFSCS_Main.aCreateTrunkExecute(Sender: TObject);
var
i: Integer;
Item: TListItem;
FList: TF_CAD;
//
RaiseOnFigure: TConnectorObject;
ID_Floor: Integer;
ConnForPassage: TConnectorObject;
RaiseConn: TConnectorObject;
RaiseConnPassage: TConnectorObject;
ListForPassage: TF_CAD;
CurGCadFrom: TF_CAD;
LayHandle: Integer;
ObjParams: TObjectParams;
CreatePoints: TDoublePoint;
z: double;
vLists: TList;
SavedGCadForm: TF_CAD;
SavedGPopupFigure: TFigure;
RaiseType1, RaiseType2: TLineRaiseType;
ListOfListsInt: TIntList;
ListOfLists: TList;
SetLen: Double;
begin
// Tolik 07/02/2017 --
ListOfLists := Nil;
vLists := Nil;
ListOfListsInt := Nil;
//
try
RaiseOnFigure := nil; //#From Oleg# //14.09.2010
F_ChooseListForTrunk.lvCadLists.Items.Clear;
for i := 0 to FSCS_Main.MDIChildCount - 1 do
begin
FList := TF_CAD(FSCS_Main.MDIChildren[i]);
Item := F_ChooseListForTrunk.lvCadLists.Items.Add;
Item.Caption := FList.FCADListName + ' ' + IntToStr(FList.FCADListIndex);
Item.Data := FList;
if (FList.FListType <> lt_Normal) or (FList = GCadForm) then
Item.ImageIndex := 180
else
Item.ImageIndex := 0;
end;
if F_ChooseListForTrunk.ShowModal = mrOK then
begin
if F_ChooseListForTrunk.lvCadLists.Selected <> nil then
begin
ListForPassage := TF_CAD(F_ChooseListForTrunk.lvCadLists.Selected.Data);
if GPopupFigure = nil then
Exit;
// *UNDO*
vLists := TList.Create;
vLists.Add(GCadForm);
vLists.Add(ListForPassage);
SaveForProjectUndo(vLists, True, False);
if CheckFigureByClassName(GPopupFigure, cTOrthoLine) then
begin
if TOrthoLine(GPopupFigure).ActualZOrder[1] = TOrthoLine(GPopupFigure).ActualZOrder[2] then
begin
CreatePoints := GetCoordsWithSnapToGrid(GCurrMousePos.x, GCurrMousePos.y);
z := TOrthoLine(GPopupFigure).ActualZOrder[1];
end
else
begin
CreatePoints.x := (TOrthoLine(GPopupFigure).ActualPoints[1].x + TOrthoLine(GPopupFigure).ActualPoints[2].x) / 2;
CreatePoints.y := (TOrthoLine(GPopupFigure).ActualPoints[1].y + TOrthoLine(GPopupFigure).ActualPoints[2].y) / 2;
z := (TOrthoLine(GPopupFigure).ActualZOrder[1] + TOrthoLine(GPopupFigure).ActualZOrder[2]) / 2;
end;
RaiseOnFigure := TConnectorObject.Create(CreatePoints.x, CreatePoints.y, z, GPopupFigure.LayerHandle, mydsNormal, GCadForm.PCad);
RaiseOnFigure.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(GPopupFigure.LayerHandle), RaiseOnFigure, False);
RaiseOnFigure.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(RaiseOnFigure.ID, RaiseOnFigure.Name);
ObjParams := GetFigureParams(RaiseOnFigure.ID);
RaiseOnFigure.Name := ObjParams.Name;
RaiseOnFigure.FIndex := ObjParams.MarkID;
SnapConnectorToOrtholine(RaiseOnFigure, TOrthoLine(GPopupFigure));
end
else
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) then
begin
RaiseOnFigure := TConnectorObject(GPopupFigure);
end;
SetLen := 0;
// òåêóùèé íàõîäèòñÿ âûøå
if GetUpperList(GCadForm.FCADListID, ListForPassage.FCADListID) = GCadForm.FCADListID then
begin
RaiseType1 := lrt_Down;
RaiseType2 := lrt_Up;
ListOfListsInt := GetSortedListIDsByBounds(ListForPassage.FCADListID, GCadForm.FCADListID);
end
else
// òåêóùèé íàõîäèòñÿ íèæå
begin
RaiseType1 := lrt_Up;
RaiseType2 := lrt_Down;
ListOfListsInt := GetSortedListIDsByBounds(GCadForm.FCADListID, ListForPassage.FCADListID);
end;
// Âû÷èñëèòü äëèííó ìàãèñòðàëè
if ListOfListsInt <> nil then
begin
ListOfLists := IntCadsToCads(ListOfListsInt);
for i := 0 to ListOfLists.Count - 1 do
begin
if (TF_CAD(ListOfLists[i]) <> GCadForm) and (TF_CAD(ListOfLists[i]) <> ListForPassage) then
SetLen := SetLen + TF_CAD(ListOfLists[i]).FRoomHeight;
end;
end;
SetLen := StrToFloat_My(F_ChooseListForTrunk.edTrunkLength.Text);
SetLen := UOMToMetre(SetLen);
if RaiseOnFigure.ConnectorType = ct_Clear then
RaiseConn := CreateTrunkRaiseOnConnector(RaiseOnFigure, RaiseType1, SetLen)
else
RaiseConn := CreateTrunkRaiseOnPointObject(RaiseOnFigure, RaiseType1, SetLen);
CurGCadFrom := GCadForm;
GCadForm := ListForPassage;
GCadForm.BringToFront;
// Ñîçäàòü îáúåêò íà íàéäåíîì ýòàæå
LayHandle := GCadForm.PCad.GetLayerHandle(2);
ConnForPassage := TConnectorObject.Create(RaiseConn.ActualPoints[1].x, RaiseConn.ActualPoints[1].y, ListForPassage.FConnHeight,
LayHandle, mydsNormal, GCadForm.PCad);
ConnForPassage.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(LayHandle), ConnForPassage, False);
ConnForPassage.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(ConnForPassage.ID, ConnForPassage.Name);
ObjParams := GetFigureParams(ConnForPassage.ID);
ConnForPassage.Name := ObjParams.Name;
ConnForPassage.FIndex := ObjParams.MarkID;
// ñîçäàòü ì-ý ïîäúåì îò òîãî îáúåêòà
RaiseConnPassage := CreateTrunkRaiseOnConnector(ConnForPassage, RaiseType2, 0);
GCadForm := CurGCadFrom;
GCadForm.BringToFront;
// Çàïîëíèòü ïîëÿ ñîåäèíåíèé òî÷åê ïåðåõîäà
RaiseConn.FID_ListToPassage := ListForPassage.FCADListID;
RaiseConn.FID_ConnToPassage := RaiseConnPassage.ID;
RaiseConnPassage.FID_ListToPassage := GCadForm.FCADListID;
RaiseConnPassage.FID_ConnToPassage := RaiseConn.ID;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
ListForPassage.FCanSaveForUndo := True;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aCreateTrunkExecute', E.Message);
end;
// Tolik -- 07/02/2017 --
if ListOfLists <> nil then
FreeAndNil(ListOfLists);
if ListOfListsInt <> nil then
ListOfListsInt.Free;
if vLists <> nil then
FreeAndNil(vLists);
//
end;
(*
procedure TFSCS_Main.BitBtn1Click(Sender: TObject);
begin
try
GCadForm.PCad.SaveAsBitmap('123.bmp');
GCadForm.PCad.View3D;
except
end;
end;
*)
procedure TFSCS_Main.miShowConnectedConnComponsClick(Sender: TObject);
begin
ShowConnDisconnComponsForList(GCadForm.FCADListID, cdConnConCompons);
end;
procedure TFSCS_Main.miShowConnectedLineComponsClick(Sender: TObject);
begin
ShowConnDisconnComponsForList(GCadForm.FCADListID, cdConnlineCompons);
end;
procedure TFSCS_Main.mnuReservClick(Sender: TObject);
begin
F_Reserv.ShowModal;
end;
procedure TFSCS_Main.pmConnectedPointsPopup(Sender: TObject);
begin
miShowConnectedConnCompons.Caption := F_ProjMan.Act_ConnectedConCompons.Caption;
end;
procedure TFSCS_Main.pmiSCSObjAutoCreateTracesAdvancedDrawItem(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; State: TOwnerDrawState);
var
OutText: String;
begin
OutText := (Sender as TMenuItem).Caption;
if (odFocused in State) or (odSelected in State) then
begin
end
else
begin
{if Sender = N33 then
begin
OutText := 'AUTOROUTE';
end;
if Sender = N46 then
begin
OutText := 'LAY OUT ON SELECTED ROUTES';
end;}
ACanvas.Font.Style := [fsBold];
ARect.Left := 32;
ARect.Right := ARect.Right - 32;
ACanvas.brush.color := clWhite; //Tolik 26/01/2021 --
ACanvas.FillRect(ARect);
DrawText(ACanvas.Handle,
PChar(OutText),
-1,
ARect,
DT_VCENTER or dt_LEFT or dt_singleline);
end;
end;
procedure TFSCS_Main.pmConnectedLinesPopup(Sender: TObject);
begin
miShowConnectedLineCompons.Caption := F_ProjMan.Act_ConnectedLineCompons.Caption;
end;
procedure SetDefaultActiveLayer;
begin
if (GCadForm <> nil) and (GCadForm.PCad <> nil) then
begin
{$IF Defined(ES_GRAPH_SC)}
if GCadForm.CurrentLayer <> lnArch then
GCadForm.CurrentLayer := lnArch;
{$ELSE}
if GCadForm.CurrentLayer <> lnSCSCommon then
GCadForm.CurrentLayer := lnSCSCommon;
{$IFEND}
try
if (Application.Active) and (GCadForm <> nil) and (GCadForm.PCad <> nil) then
if Not GCadForm.PCad.Focused then
begin
SendMessage(GCadForm.PCad.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
SendMessage(GCadForm.PCad.Handle, WM_SETFOCUS, 0, 0);
GCadForm.PCad.SetFocus;
end;
except
ShowMessage('EXCEPTION: TFSCS_Main.cbLayersPropertiesCloseUp (Set PCAD focus)');
end;
end;
end;
procedure TFSCS_Main.tb3DClick(Sender: TObject);
var
CtrlDown: boolean;
// 2011-05-10
xModelNode: TTreeNode;
OldMapScale: Integer;
begin
{$ifdef 3D}
if ActiveMDIChild <> nil then
begin
{$IF Not Defined(ES_GRAPH_SC)}
SaveSubstrateArchPlan(GetPathToSCSTmpDir + '\3d.jpg');
{$IFEND}
GCurrentRoom3DView := nil;
{$IF Defined(ES_GRAPH_SC)}
ctrlDown:=(IsKeyDown(VK_LCONTROL) or IsKeyDown(VK_RCONTROL));
if ctrlDown then
if FileExists(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D) then
begin
try
DeleteFile(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D);
except
end;
end;
{$IFEND}
// 22.07.2011
G3DModelForProject := False;
BeginProgress;
if not Assigned(frm3D) then
Application.CreateForm(Tfrm3D, frm3d);
if Assigned(frm3D.F3DModel) then
FreeAndNil(frm3D.F3DModel);
frm3D.F3DModel := T3DModel.Create;
frm3D.FIdsStream.Clear;
frm3D.FFilesStream.Clear;
frm3D.ModelTree.Items.Clear;
frm3D.ScsModelTree.Items.Clear;
xModelNode := frm3D.ModelTree.Items.AddFirst(nil, frm3D.F3DModel.FName);
xModelNode.Data := frm3D.F3DModel;
xModelNode.HasChildren := True;
xModelNode := frm3D.ScsModelTree.Items.AddFirst(nil, frm3D.F3DModel.FName);
xModelNode.Data := frm3D.F3DModel;
xModelNode.HasChildren := True;
frm3D.FZOrder := 0;
if GCadForm.FListType = lt_Normal then
GCadForm.View3D;
EndProgress;
frm3d.FCAD := GCadForm;
Application.ProcessMessages;
frm3d.ShowModal;
FreeAndNil(frm3D);
// Tolik 23/07/2018 --
GCadForm.PCad.Refresh;
//
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
SetDefaultActiveLayer;
{$endif 3D}
end;
procedure TFSCS_Main.aInsertKnotForHouseExecute(Sender: TObject);
var
House: THouse;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTHouse) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
House := THouse(GPopupFigure);
House.InsertKnot(House.SelectedPoint);
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aInsertKnotExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDeleteKnotForHouseExecute(Sender: TObject);
var
House: THouse;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTHouse) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
House := THouse(GPopupFigure);
House.DeleteKnot(House.SelectedPoint);
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aDeleteKnotExecute', E.Message);
end;
end;
procedure TFSCS_Main.aAddApproachExecute(Sender: TObject);
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), cTHouse) then
begin
GCadForm.FActiveHouse := THouse(GCadForm.PCad.Selection[0]);
GCadForm.PCad.SetTool(toFigure, 'TApproachTool');
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aAddApproachExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDeleteHouseExecute(Sender: TObject);
var
i: integer;
CurHouse: THouse;
CurPath: TNetPath;
mess: string;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), cTHouse) then
begin
CurHouse := THouse(GCadForm.PCad.Selection[0]);
mess := cMain_Mes115;
//if MessageBoxA(FSCS_Main.Handle, PAnsiChar(mess), cMain_Mes116, MB_YESNO) = IDYes then
if MessageBox(FSCS_Main.Handle, PChar(mess), PChar(cMain_Mes116), MB_YESNO) = IDYes then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
CurHouse.Delete;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aDeleteHouseExecute', E.Message);
end;
end;
procedure TFSCS_Main.aEditApproachExecute(Sender: TObject);
var
i: Integer;
vCaption: TRichText;
vBound: TRectangle;
approach: TConnectorObject;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) and (TConnectorObject(GPopupFigure).FIsApproach) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Approach := TConnectorObject(GPopupFigure);
vCaption := nil;
vBound := nil; //#From Oleg# //14.09.2010
for i := 0 to Approach.DrawFigure.InFigures.Count - 1 do
begin
if CheckFigureByClassName(TFigure(Approach.DrawFigure.InFigures[i]), 'TRichText') then
vCaption := TRichText(Approach.DrawFigure.InFigures[i])
else
if CheckFigureByClassName(TFigure(Approach.DrawFigure.InFigures[i]), 'TRectangle') then
vBound := TRectangle(Approach.DrawFigure.InFigures[i]);
end;
if vCaption.edit then
begin
ReCreateApproachText(Approach.DrawFigure, vCaption, vBound);
end;
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aEditApproachExecute', E.Message);
end;
end;
procedure TFSCS_Main.aRotateApproachExecute(Sender: TObject);
var
Approach: TConnectorObject;
begin
try
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) and (TConnectorObject(GPopupFigure).FIsApproach) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Approach := TConnectorObject(GPopupFigure);
GCadForm.PCad.SetTool(toSelect, 'TFigure');
Approach.DrawFigure.LockModify := False;
Approach.DrawFigure.fRMode := True;
Approach.DrawFigure.RotateSelect;
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aRotateApproachExecute', E.Message);
end;
end;
procedure TFSCS_Main.aModApproachExecute(Sender: TObject);
var
Approach: TConnectorObject;
begin
try
if CheckFigureByClassName(GPopupFigure, cTConnectorObject) and (TConnectorObject(GPopupFigure).FIsApproach) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Approach := TConnectorObject(GPopupFigure);
Approach.DrawFigure.LockModify := False;
Approach.DrawFigure.fTraceMod := True;
Approach.DrawFigure.select;
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aModApproachExecute', E.Message);
end;
end;
procedure TFSCS_Main.aToolCabinetExtExecute(Sender: TObject);
begin
try
if ActiveMDIChild <> nil then
begin
DropDownFirstToolbar; // Tolik 10/02/2021 --
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.CurrentLayer := 9;
GCadForm.PCad.SetTool(toFigure, 'TCabinetExt');
tbCabinetExtNoob.Down := True; // Tolik 10/02/2021 --
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aToolCabinetExtExecute', E.Message);
end;
end;
procedure TFSCS_Main.aConvertSegmentToArcExecute(Sender: TObject);
var
Cabinet: TCabinetExt;
Segment: TPlSegment;
Poly: TPolyline;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTCabinetExt) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Cabinet := TCabinetExt(GPopupFigure);
Segment := TPlSegment(Cabinet.Segments[Cabinet.SelectedPoint - 1]);
Cabinet.ArrangeSelectedSegment(sArc);
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aConvertSegmentToArcExecute', E.Message);
end;
end;
procedure TFSCS_Main.aInsertKnotForCabinetExecute(Sender: TObject);
var
Cabinet: TCabinetExt;
CP: TDoublePoint;
MaxX, MaxY, MinX, MinY: Double;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTCabinetExt) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Cabinet := TCabinetExt(GPopupFigure);
Cabinet.InsertKnot(Cabinet.SelectedPoint);
if Cabinet.FNumberObject <> nil then
begin
Cabinet.getbounds(MaxX, MaxY, MinX, MinY);
CP.x := (MinX + MaxX) / 2;
CP.y := (MinY + MaxY) / 2;
Cabinet.FNumberObject.move(CP.x - Cabinet.FNumberObject.CenterPoint.x, CP.y - Cabinet.FNumberObject.CenterPoint.y);
end;
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aInsertKnotForCabinetExecute', E.Message);
end;
end;
procedure TFSCS_Main.aDeleteKnotForCabinetExecute(Sender: TObject);
var
Cabinet: TCabinetExt;
CP: TDoublePoint;
MaxX, MaxY, MinX, MinY: Double;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTCabinetExt) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Cabinet := TCabinetExt(GPopupFigure);
Cabinet.DeleteKnot(Cabinet.SelectedPoint);
if Cabinet.FNumberObject <> nil then
begin
Cabinet.getbounds(MaxX, MaxY, MinX, MinY);
CP.x := (MinX + MaxX) / 2;
CP.y := (MinY + MaxY) / 2;
Cabinet.FNumberObject.move(CP.x - Cabinet.FNumberObject.CenterPoint.x, CP.y - Cabinet.FNumberObject.CenterPoint.y);
end;
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aDeleteKnotForCabinetExecute', E.Message);
end;
end;
procedure TFSCS_Main.aShowDefectObjectsExecute(Sender: TObject);
begin
try
if aShowDefectObjects.Checked = True then
begin
GCadForm.FShowDefectObjects := True;
// aShowConnFullnessExecute(Sender: TObject);
// aShowCableFullnessExecute(Sender: TObject);
// aShowCableChannelFullnessExecute(Sender: TObject);
end;
if aShowDefectObjects.Checked = False then
GCadForm.FShowDefectObjects := False;
RefreshCAD(GCadForm.PCad);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aShowDefectObjectsExecute', E.Message);
end;
end;
procedure TFSCS_Main.aInvertArcSegmentExecute(Sender: TObject);
var
Cabinet: TCabinetExt;
Segment: TPlSegment;
Poly: TPolyline;
begin
try
if GPopupFigure = nil then
exit;
if CheckFigureByClassName(GPopupFigure, cTCabinetExt) then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
Cabinet := TCabinetExt(GPopupFigure);
Segment := TPlSegment(Cabinet.Segments[Cabinet.SelectedPoint - 1]);
if Segment.SType = sArc then
Segment.Inverted := not Segment.Inverted;
RefreshCAD(GCadForm.PCad);
// *UNDO*
GCadForm.FCanSaveForUndo := true;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aConvertSegmentToArcExecute', E.Message);
end;
end;
procedure TFSCS_Main.aOpenVectorDrawingExecute(Sender: TObject);
var
FName: string;
FDir: string;
OpenPictureDialog: TSavePictureDialog;
begin
try
if ActiveMDIChild <> nil then
begin
GisUserDimLine := true;
LoadDXFFileNew(GCadForm.PCad, cMain_Mes120, cMain_Mes124);
// Tolik 11/08/2021 - -
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aOpenVectorDrawingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSaveVectorDrawingExecute(Sender: TObject);
var
FName: string;
FDir: string;
SavePictureDialog: TSavePictureDialog;
begin
try
if ActiveMDIChild <> nil then
begin
SaveDXFFile(GCadForm.PCad, cMain_Mes122, cMain_Mes124_2);
GCadForm.PCad.SetFocus;// Tolik 09/04/2020 -- òóò íàäî, à òî îñòàþòñÿ áåëûå çîíû íà êàäå ïîñëå îòîáðàæåíèÿ
// ýêñïîðòèðóåìîãî ëèñòà â ëåâîì âåðõíåì óãëó êàäà
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aSaveVectorDrawingExecute', E.Message);
end;
end;
procedure TFSCS_Main.aOpenRasterDrawingExecute(Sender: TObject);
var
FName: string;
FDir: string;
OpenPictureDialog: TOpenPictureDialog;
Jpeg: TJpegImage;
Bmp: TBMPObject;
BmpHandle: TFigHandle;// Tolik 09/08/2019 --
begin
Bmp := Nil; // Tolik 09/08/2019 - -
GLoadPCadBackGroundImage := True; // Tolik 29/01/2020 --
try
if ActiveMDIChild <> nil then
begin
OpenPictureDialog := TOpenPictureDialog.Create(Self);
OpenPictureDialog.Title := cMain_Mes121;
OpenPictureDialog.InitialDir := ExtractDirByCategoryType(dctPictures);//ExtractSaveDirForCategory('.bmp');//FDir;
//Tolik 10/08/2021 --
//OpenPictureDialog.DefaultExt := '*.bmp, *.jpg, *.jpeg';
//OpenPictureDialog.Filter := cMain_Mes125;
OpenPictureDialog.DefaultExt := '*.bmp, *.jpg, *.jpeg, *.png';
OpenPictureDialog.Filter := cMain_Mes125_;
//
if OpenPictureDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctPictures, ExtractFileDir(OpenPictureDialog.FileName));
//
FName := OpenPictureDialog.FileName;
aSetSubstrateLayer.Execute;
if pos('.bmp', OpenPictureDialog.FileName) <> 0 then
begin
// Tolik 09/08/2019 - -
//Bmp := TBMPObject(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
BmpHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if BmpHandle <> -1 then
Bmp := TBMPObject(BmpHandle);
//
end
else
begin
// Tolik 09/08/2019 --
//Bmp := TBMPObject(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
BmpHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if BmpHandle <> -1 then
Bmp := TBMPObject(BmpHandle);
//
// TODO ????
{
Jpeg := TJpegImage.create;
Jpeg.LoadFromFile(FName);
Bmp.Picture.Width := Jpeg.Width;
Bmp.Picture.Height := Jpeg.Height;
Bmp.Picture.Canvas.Draw(0, 0, Jpeg);
Bmp.Picture.PixelFormat := pf24bit;
FreeAndNil(Jpeg);
}
end;
if bmp <> nil then // Tolik 09/08/2019 --
AutoFitBitMap(Bmp);
except
end;
{
FSCS_Main.tbSelectExpert.Down := False;
FSCS_Main.tbSelectNoob.Down := False;
FSCS_Main.tbPanExpert.Down := True;
FSCS_Main.tbPanNoob.Down := True;
FSCS_Main.aToolPan.Execute;
}
RefreshCAD(GCadForm.PCad);
end;
OpenPictureDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aOpenRasterDrawingExecute', E.Message);
end;
GLoadPCadBackGroundImage := False; // Tolik 29/01/2020 --
// Tolik 12/08/2021
GIsUserDimLine := (bmp <> nil);
SetHScale;
//
end;
procedure TFSCS_Main.aSaveRasterDrawingExecute(Sender: TObject);
var
FName: string;
FDir: string;
SavePictureDialog: TSavePictureDialog;
BmpFileName: string;
Bmp: TBitmap;
Jpeg: TJPEGImage;
PDFDoc: TPDFDocument;
begin
try
if ActiveMDIChild <> nil then
begin
SavePictureDialog := TSavePictureDialog.Create(Self);
SavePictureDialog.Title := cMain_Mes123;
SavePictureDialog.InitialDir := ExtractDirByCategoryType(dctPictures);//ExtractSaveDirForCategory('.bmp');//FDir;
SavePictureDialog.DefaultExt := '*.bmp, *.jpg, *.jpeg';
SavePictureDialog.Filter := cMain_Mes125 + '|'+ cProgressExp_Msg9_1;
SavePictureDialog.Options := SavePictureDialog.Options + [ofOverwritePrompt];
if SavePictureDialog.Execute then
begin
try
// Tolik 01/08/2019 -- ñîõðàíèòü ïîñëåäíèé ïóòü
if GStoreLastPaths then
WriteEnvironmentDir(dctPictures, ExtractFileDir(SavePictureDialog.FileName));
//
FName := SavePictureDialog.FileName;
if ExtractFileExt(SavePictureDialog.FileName) = '.pdf' then //06.03.2012
begin
PDFDoc := CreatePDFObject(Self, GetListParams(GCadForm.FCADListID).Caption, SavePictureDialog.FileName, nil);
PDFDoc.BeginDoc;
SetCADPageParamsToPDF(GCadForm, PDFDoc, false);
PDFDoc.EndDoc;
PDFDoc.Free;
end
else if pos('.bmp', SavePictureDialog.FileName) <> 0 then
begin
GCadForm.PCad.SaveAsBitmap(FName);
end
else
begin
BmpFileName := ChangeFileExt(FName, '.bmp');
GCadForm.PCad.SaveAsBitmap(BmpFileName);
Bmp := TBitmap.Create;
Bmp.LoadFromFile(BmpFileName);
ConvertBMPToJpeg(Bmp, FName);
FreeAndNil(Bmp);
DeleteFile(BmpFileName);
end;
except
ShowMessage(cMain_Mes8);
end;
end;
SavePictureDialog.Free;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aSaveRasterDrawingExecute', E.Message);
end;
end;
procedure TFSCS_Main.SetLayerForDraw;
begin
if GCadForm <> nil then
begin
if (GCadForm.PCad.ActiveLayer <> lnSubstrate) and (GCadForm.PCad.ActiveLayer <> lnArch) then
aSetSubstrateLayer.Execute;
end;
end;
procedure TFSCS_Main.SetMenuStatus(aStatus: Boolean);
var
aStatusArch: boolean;
i: integer;
begin
{$if Defined(ES_GRAPH_SC)}
aStatusArch := false;
{$else}
aStatusArch := aStatus;
{$ifend}
try
//Tolik 13/08/2021 --
if aStatus then
tbCalc.Visible := aExpertMode.Checked
else
tbCalc.Visible := aStatus;
//
// ãëàâíîå ìåíþ
mainEdit.Visible := aStatus;
mainObject.Visible := aStatus;
mainFormat.Visible := aStatus;
mainOptions.Visible := aStatus;
mainTools.Visible := aStatus;
//mainSCS.Visible := aStatus;
mainWindow.Visible := aStatus;
// ïóíêòû îòêðûòûõ ìåíþ
// nOpen.Enabled := aStatus;
aLoadSubstrate.Enabled := aStatus;
aLoadFPlan.Enabled := aStatus;
aLoadStamp.Enabled := aStatus;
aOpenVectorDrawing.Enabled := aStatus;
aOpenRasterDrawing.Enabled := aStatus;
nSave.Enabled := aStatus;
aCloseCurrProject.Enabled := aStatus;
aClose.Enabled := aStatus;
aExport.Enabled := aStatus;
aExportDWG.Enabled := aStatus;
aImport.Enabled := aStatus;
aPrevView.Enabled := aStatus;
aPrint.Enabled := aStatus;
aPrintRect.Enabled := aStatus;
aAllScreen.Enabled := aStatus;
a50.Enabled := aStatus;
a75.Enabled := aStatus;
a100.Enabled := aStatus;
a150.Enabled := aStatus;
a200.Enabled := aStatus;
a400.Enabled := aStatus;
aInc.Enabled := aStatus;
aInc1pt.Enabled := aStatus;
aDec1pt.Enabled := aStatus;
aViewLayers.Enabled := aStatus;
aViewNavigator.Enabled := aStatus;
aViewSCSObjectsProp.Enabled := aStatus;
aExpertMode.Enabled := aStatus;
// Add
aCurrProjectProperties.Enabled := aStatus;
aListProperties.Enabled := aStatus;
aSaveRevision.Enabled := aStatus;
aViewRevs.Enabled := aStatus;
aProjectSchedule.Enabled := aStatus;
aBillWork.Enabled := aStatus;
aShowCableRule.Enabled := aStatus;
aCreateProjectPlan.Enabled := aStatus;
aCreateNormsOnCad.Enabled := aStatus;
aConnectionsConfigurator.Enabled := aStatus;
// 2011-05-10
n3DModelForList.Enabled := aStatus;
n3DModelForProject.Enabled := aStatus;
aMasterAutoTrace.Enabled := aStatus;
aMasterAutoTraceElectric.Enabled := aStatus;
aMasterCableTracing.Enabled := aStatus;
aMasterCableChannel.Enabled := aStatus;
aShowRepResources.Enabled := aStatus;
aBlocksEditor.Enabled := aStatus;
aRepWizard.Enabled := aStatus;
aMarkingPages.Enabled := aStatus;
//aManual_Interfaces.Enabled := aStatus;
//
// Ïàíåëè èíòðóìåíòîâ
cbMainPanel.DisableAlign; //20.12.2011
try
tbObject.Visible := aStatus;
tbLayers.Visible := aStatus;
tbOther.Visible := aStatus;
if aStatus then
begin
if aExpertMode.Checked then
begin
tbSCSToolsExpert.Visible := True;
tbCADToolsExpert.Visible := True;
tbSCSToolsNoob.Visible := False;
tbCADToolsNoob2.Visible := False;
tbCADToolsNoob.Visible := False;
end
else
begin
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsExpert.Visible := True;
{$else}
tbSCSToolsExpert.Visible := False;
{$ifend}
tbCADToolsExpert.Visible := False;
{$if Defined(ES_GRAPH_SC)}
tbSCSToolsNoob.Visible := False;
{$else}
//tbSCSToolsNoob.Visible := True;
{$ifend}
tbCADToolsNoob.Visible := True;
tbCADToolsNoob2.Visible := True;
end;
end
else
begin
tbSCSToolsExpert.Visible := aStatusArch;
tbCADToolsExpert.Visible := aStatusArch;
//tbSCSToolsNoob.Visible := aStatusArch;
// Tolik 24/01/2017
if aStatusArch then
begin
tbCADToolsNoob.Visible := aStatusArch;
tbCADToolsNoob2.Visible := aStatusArch;
end
else
if not aStatusArch then
begin
tbCADToolsNoob2.Visible := aStatusArch;
tbCADToolsNoob.Visible := aStatusArch;
end;
// tbCADToolsNoob.Visible := aStatusArch;
// tbCADToolsNoob2.Visible := aStatusArch;
//
end;
// Êíîïêè íà ïàíåëè èíñòðóìåíòîâ "Ôàéë"
tbNewList.Visible := aStatus;
tbLoadSubstrate.Visible := aStatus;
tbSaveProject.Visible := aStatus;
tbPrevView.Visible := aStatus;
tbPrint.Visible := aStatus;
tbPrintRect.Visible := aStatus;
ToolButton35.Visible := aStatus;
{$if Not Defined(ES_GRAPH_SC)}
tbArch.Visible := False;
{$ifend}
{$if Defined(ES_GRAPH_SC)}
// tbCreateOnClickModeExpert.Visible := False
tbArch.Visible := aStatus;
tbProjectPlan.Visible := False;
FSCS_Main.aBillWork.Visible := False;
FSCS_Main.aSaveRevision.Visible := False;
FSCS_Main.aViewRevs.Visible := False;
FSCS_Main.aProjectSchedule.Visible := False;
FSCS_Main.aShowCableRule.Visible := False;
FSCS_Main.N70.Visible := False;
FSCS_Main.aConnectionsConfigurator.Visible := False;
FSCS_Main.aMasterCableTracing.Visible := False;
FSCS_Main.aMasterCableChannel.Visible := False;
FSCS_Main.aToolCabinet.Visible := False;
//12.04.2012 FSCS_Main.aToolWallRect.Visible := False;
//12.04.2012 FSCS_Main.aToolWallPath.Visible := False;
FSCS_Main.aToolHouse.Visible := False;
FSCS_Main.aToolOrthoLine.Visible := False;
FSCS_Main.aToolOrthoLineExt.Visible := False;
//tbOther.Visible := False;
//tbCalc.Visible := False;
tbExtProtocol.Visible := False;
mainHelp.Enabled := False;
aViewSCSObjectsProp.Visible := False;
tbChm.Visible := False;
aToolCabinetExt.Visible := False;
aCreateProjectPlan.Visible := False;
aCreateNormsOnCad.Visible := False;
aConnectionsConfigurator.Visible := False;
// 2011-05-10
n3DModelForList.Enabled := True;
n3DModelForProject.Enabled := True;
aMasterAutoTraceElectric.Visible := False;
aMasterAutoTrace.Visible := False;
aMasterCableChannel.Visible := False;
aMasterCableTracing.Visible := False;
aShowRepResources.Visible := False;
aBlocksEditor.Visible := False;
aRepWizard.Visible := False;
aMarkingPages.Visible := False;
{$IF Defined (FINAL_SCS)}
nManuals.Visible := False;
{$IFEND}
aUpdateNormBase.Visible := False;
aMasterUpdateComponPriceFromXF.Visible := False;
aChoiceBaseOptions.Visible := False;
aToolCabinet.Visible := False;
aToolCabinetExt.Visible := False;
{$IF Defined (FINAL_SCS)}
aToolWallRect.Visible := False;
aToolWallPath.Visible := False;
{$IFEND}
aToolHouse.Visible := False;
tbCabinetExpert.Visible := False;
tbCabinetExtExpert.Visible := False;
tbCabinetNoob.Visible := False;
tbCabinetExtNoob.Visible := False;
aToolHouse.Visible := False;
tbHouseExpert.Visible := False;
tbHouseNoob.Visible := False;
aCreateObjectOnClickTool.Visible := False;
aCreateObjectOnClickTool.Visible := True;
tbCreateOnClickModeExpert.Visible := False;
tbCreateOnClickModeExpert.Visible := True;
tbCreateOnClickModeNoob.Visible := False;
tbCreateOnClickModeNoob.Visible := True;
{$ifend}
finally
cbMainPanel.EnableAlign;
tbFile.AutoSize := false;
tbFile.AutoSize := true;
end;
{$if Defined(ES_GRAPH_SC)}
// Tolik -- 01/02/2017 --
//tbFile.Width := 400;
tbFile.Width := 450;
//
tbObject.Left := tbFile.Left + tbFile.Width + 10;
tbLayers.Left := tbObject.Left + tbObject.Width + 10;
tbOther.Left := tbLayers.Left + tbLayers.Width + 10;
tbOther.Width := 30;
tbArch.Left := tbOther.Left + tbOther.Width + 10;
//Tolik -- 01/02/2017 --
tbArch.Width := 150;
//
tbCADToolsExpert.Width := 780;
//Tolik -- 01/02/2017 --
//tbCADToolsNoob.Width := 700;
tbCADToolsNoob.Width := 600;
//tbCADToolsNoob2.Width := 700;
tbCADToolsNoob2.Width := 300;
//
{$ifend}
tbInteractive.Visible := FInteractiveStep > 0;
if tbInteractive.Visible then
tbCADToolsExpert.Left := 91
else
tbCADToolsExpert.Left := 11;
DisableActForReadOnlyMode;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.SetMenuStatus', E.Message);
end;
end;
// Tolik -- 17/03/2017 -- ïåðåïèñàíà ñîâñåì, ñòàðàÿ çàêîììåí÷åíà - ñìîòðè íèæå
procedure TFSCS_Main.aCreateVerticalExecute(Sender: TObject);
var
VertOnFigure: TConnectorObject;
VertHeight: Double;
VLineToSnap: TOrthoLine;
ConnToSnap: TConnectorObject;
DirectionUp, DirectionDown: Boolean;
Nb_Conn: TConnectorObject;
procedure CreateConnToSnap;
var ObjParams: TObjectParams;
begin
ConnToSnap := TConnectorObject.Create(VertOnFigure.ActualPoints[1].x, VertOnFigure.ActualPoints[1].y,
VertHeight, VertOnFigure.LayerHandle, mydsNormal, GCadForm.PCad);
ConnToSnap.ConnectorType := ct_Clear;
GCadForm.PCad.AddCustomFigure (GLN(VertOnFigure.LayerHandle), ConnToSnap, False);
ConnToSnap.Name := cCadClasses_Mes12;
SetNewObjectNameInPM(ConnToSnap.ID, ConnToSnap.Name);
ObjParams := GetFigureParams(ConnToSnap.ID);
ConnToSnap.Name := ObjParams.Name;
ConnToSnap.FIndex := ObjParams.MarkID;
end;
procedure CheckCanSnapToVLine;
var i, j: integer;
CanCheckVLine: Boolean;
currConn: TConnectorObject;
VLineFound: boolean;
JoinedLine: TOrthoLine;
LineList: TList;
function getLineConnByDirection(aLine: tOrthoLine): TConnectorObject;
begin
Result := TConnectorObject(aLine.JoinConnector1);
if DirectionUP then
begin
if CompareValue(TConnectorObject(aLine.JoinConnector1).ActualZOrder[1],
TConnectorObject(aLine.JoinConnector2).ActualZOrder[1]) = -1 then
Result := TConnectorObject(aLine.JoinConnector2);
end
else
if DirectionDown then
begin
if CompareValue(TConnectorObject(aLine.JoinConnector1).ActualZOrder[1],
TConnectorObject(aLine.JoinConnector2).ActualZOrder[1]) = 1 then
Result := TConnectorObject(aLine.JoinConnector2);
end;
end;
function GetNextConn(aLine: TOrthoLine): TConnectorObject;
begin
Result := Nil;
if aLine.FIsVertical then
begin
if DirectionUP then
begin
if (VertOnFigure.JoinedConnectorsList.IndexOf(TConnectorObject(aLine.JoinConnector1)) = -1) and
(CompareValue(VertOnFigure.ActualZOrder[1], TConnectorObject(aLine.JoinConnector1).ActualZOrder[1]) = -1) then
begin
Result := TConnectorObject(aLine.JoinConnector1);
LineList.Add(aLine);
VLineToSnap := aLine;
end
else
if (VertOnFigure.JoinedConnectorsList.IndexOf(TConnectorObject(aLine.JoinConnector2)) = -1) and
(CompareValue(VertOnFigure.ActualZOrder[1], TConnectorObject(aLine.JoinConnector2).ActualZOrder[1]) = -1) then
begin
Result := TConnectorObject(aLine.JoinConnector2);
LineList.Add(aLine);
VLineToSnap := aLine;
end;
end
else
if DirectionDown then
begin
if (VertOnFigure.JoinedConnectorsList.IndexOf(TConnectorObject(aLine.JoinConnector1)) = -1) and
(CompareValue(VertOnFigure.ActualZOrder[1], TConnectorObject(aLine.JoinConnector1).ActualZOrder[1]) = -1) then
begin
Result := TConnectorObject(aLine.JoinConnector1);
LineList.Add(aLine);
VLineToSnap := aLine;
end
else
if (VertOnFigure.JoinedConnectorsList.IndexOf(TConnectorObject(aLine.JoinConnector2)) = -1) and
(CompareValue(VertOnFigure.ActualZOrder[1], TConnectorObject(aLine.JoinConnector2).ActualZOrder[1]) = -1) then
begin
Result := TConnectorObject(aLine.JoinConnector2);
LineList.Add(aLine);
VLineToSnap := aLine;
end;
end;
end;
end;
begin
currConn := nil;
LineList := TList.create;
if VertOnFigure.ConnectorType = ct_Clear then
begin
for i := 0 to VertOnFigure.JoinedOrthoLinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(VertOnFigure.JoinedOrthoLinesList[i]);
currConn := GetNextConn(JoinedLine);
if currConn <> nil then
Break; //// BREAK ////;
end;
end
else
if VertOnFigure.ConnectorType = ct_NB then
begin
for i := 0 to VertOnFigure.JoinedConnectorsList.Count - 1 do
begin
currConn := TConnectorObject(VertOnFigure.JoinedConnectorsList[i]);
for j := 0 to currConn.JoinedOrtholinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(currConn.JoinedOrtholinesList[j]);
if JoinedLine.FIsVertical then
begin
currConn := GetNextConn(JoinedLine);
if currConn <> nil then
break
else
currConn := TConnectorObject(VertOnFigure.JoinedConnectorsList[i]);
end;
end;
if (currConn <> nil) and (Vertonfigure.JoinedConnectorsList.IndexOf(currConn) = -1) then
break;
end;
end;
if (currConn <> nil) and (VLineToSnap <> nil) then
begin
CanCheckVLine := True;
While CanCheckVLine do
begin
CanCheckVLine := False;
if currConn.ConnectorType = ct_clear then
begin
for i := 0 to currConn.JoinedOrthoLinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(currConn.JoinedOrthoLinesList[i]);
if JoinedLine.FIsVertical then
begin
if LineList.IndexOf(JoinedLine) = -1 then
begin
LineList.Add(JoinedLine);
if TConnectorObject(JoinedLine.JoinConnector1).Id = currConn.Id then
currConn := TConnectorObject(JoinedLine.JoinConnector2)
else
if TConnectorObject(JoinedLine.JoinConnector2).Id <> currConn.Id then
currConn := TConnectorObject(JoinedLine.JoinConnector1);
if currConn <> nil then
begin
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedCOnnectorsList[0]);
CanCheckVLine := True;
end;
break;
end;
end;
end;
end
else
if currConn.ConnectorType = ct_NB then
begin
NB_Conn := currConn;
for i := 0 to NB_Conn.JoinedConnectorsList.Count - 1 do
begin
currConn := TConnectorObject(Nb_Conn.JoinedConnectorsList[i]);
for j := 0 to currConn.JoinedOrthoLinesList.Count - 1 do
begin
JoinedLine := TOrthoLine(currConn.JoinedOrthoLinesList[j]);
if JoinedLine.FIsVertical then
begin
if LineList.IndexOf(JoinedLine) = -1 then
begin
LineList.Add(JoinedLine);
if TConnectorObject(JoinedLine.JoinConnector1).Id = currConn.Id then
currConn := TConnectorObject(JoinedLine.JoinConnector2)
else
if TConnectorObject(JoinedLine.JoinConnector2).Id <> currConn.Id then
currConn := TConnectorObject(JoinedLine.JoinConnector1);
if currConn <> nil then
begin
if currConn.JoinedConnectorsList.Count > 0 then
currConn := TConnectorObject(currConn.JoinedCOnnectorsList[0]);
CanCheckVLine := True;
end;
break;
end;
end;
end;
if (currConn <> nil) and (NB_Conn.JoinedConnectorsList.IndexOf(currConn) = -1 ) then
break;
end;
end;
end;
if LineList.Count > 0 then
begin
for i := 0 to LineList.Count - 1 do
begin
VLineToSnap := TOrthoLine(LineList[i]);
connToSnap := getLineConnByDirection(VLineToSnap);
if DirectionUP then
begin
VLineToSnap := Nil;
if CompareValue(connTosnap.ActualZOrder[1], VertHeight) = 1 then
begin
VLineToSnap := TOrthoLine(LineList[i]);
CreateConnToSnap;
break;
end;
end
else
if DirectionDown then
begin
VLineToSnap := Nil;
if CompareValue(connTosnap.ActualZOrder[1], VertHeight) = -1 then
begin
VLineToSnap := TOrthoLine(LineList[i]);
CreateConnToSnap;
break;
end;
end;
if CompareValue(connTosnap.ActualZOrder[1], VertHeight) = 0 then
break;
end;
end;
LineList.free;
end;
end;
procedure CreateVLineOnConnector;
var vLine: TOrthoLine; // Tolik 27/03/2018 --
begin
if CompareValue(VertHeight, VertOnFigure.ActualZOrder[1]) = 1 then
DirectionUP := True
else
if CompareValue(VertHeight, VertOnFigure.ActualZOrder[1]) = -1 then
DirectionDown := True
else
if CompareValue(VertHeight, VertOnFigure.ActualZOrder[1]) = 0 then
Exit;
VLineToSnap := nil;
ConnToSnap := Nil;
CheckCanSnapToVLine;
if VLineToSnap <> nil then
SnapConnectorToVertical(ConnToSnap, VLineToSnap)
else
if ConntoSnap <> nil then
begin
if CompareValue(ConnToSnap.ActualZOrder[1], VertHeight) <> 0 then
//CreateVerticalOnConnector(ConnToSnap, VertHeight)
vLine := CreateVerticalOnConnector(ConnToSnap, VertHeight)
end
else
begin
if VertOnFigure.ConnectorType = ct_Clear then
//CreateVerticalOnConnector(VertOnFigure, VertHeight)
VLine := CreateVerticalOnConnector(VertOnFigure, VertHeight)
else
//CreateVerticalOnPointObject(VertOnFigure, VertHeight);
vLine := CreateVerticalOnPointObject(VertOnFigure, VertHeight);
end;
end;
begin
try
if GPopupFigure = nil then
exit;
try
VertOnFigure := TConnectorObject(GPopupFigure);
except
VertOnFigure := nil;
end;
if VertOnFigure = nil then
exit;
DirectionUp := False;
DirectionDown := False;
F_RaiseHeight.cbApplyToAll.Visible := False; //Tolik 04/08/2021 --
F_RaiseHeight.Caption := cMain_Mes126;
F_RaiseHeight.lbMessage.Caption := cMain_Mes126;
// íà ñîåäèíèòåëå
if F_RaiseHeight.Showmodal = mrOK then
begin
VertHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
VertHeight := UOMToMetre(VertHeight);
if VertHeight > GCadForm.FRoomHeight then
VertHeight := GCadForm.FRoomHeight;
if CompareValue(VertOnFigure.ActualZOrder[1], VertHeight) <> 0 then // òàê íàäåæíåå
//if VertHeight <> VertOnFigure.ActualZOrder[1] then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
CreateVLineOnConnector;
{
if VertOnFigure.ConnectorType = ct_Clear then
CreateVerticalOnConnector(VertOnFigure, VertHeight)
else
CreateVerticalOnPointObject(VertOnFigure, VertHeight);
}
// *UNDO*
GCadForm.FCanSaveForUndo := True;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes128);
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aCreateVerticalExecute', E.Message);
end;
end;
(*
procedure TFSCS_Main.aCreateVerticalExecute(Sender: TObject);
var
VertOnFigure: TConnectorObject;
VertHeight: Double;
begin
try
if GPopupFigure = nil then
exit;
try
VertOnFigure := TConnectorObject(GPopupFigure);
except
VertOnFigure := nil;
end;
F_RaiseHeight.Caption := cMain_Mes126;
F_RaiseHeight.lbMessage.Caption := cMain_Mes126;
// íà ñîåäèíèòåëå
if F_RaiseHeight.Showmodal = mrOK then
begin
VertHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
VertHeight := UOMToMetre(VertHeight);
if VertHeight > GCadForm.FRoomHeight then
VertHeight := GCadForm.FRoomHeight;
if VertHeight <> VertOnFigure.ActualZOrder[1] then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
if VertOnFigure.ConnectorType = ct_Clear then
CreateVerticalOnConnector(VertOnFigure, VertHeight)
else
CreateVerticalOnPointObject(VertOnFigure, VertHeight);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
SetProjectChanged(True);
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes128);
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aCreateVerticalExecute', E.Message);
end;
end;
*)
procedure TFSCS_Main.TimerFindSnapTimer(Sender: TObject);
begin
try
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.TimerFindSnapTimer', E.Message);
end;
end;
procedure TFSCS_Main.AddDoorObj(aDoorObjType: TDoorObjType);
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := false;
end;
TNet(GCadForm.PCad.Selection[0]).AddDoor(aDoorObjType);
TNet(GCadForm.PCad.Selection[0]).RefreshPaths;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
GCadForm.FCanSaveForUndo := true;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.AddDoorObj', E.Message);
end;
end;
procedure TFSCS_Main.AddDoorEmbrasure;
begin
AddDoorObj(dotEmbrasure);
end;
procedure TFSCS_Main.AddDoorNiche;
begin
AddDoorObj(dotNiche);
end;
procedure TFSCS_Main.ToolButton1Click(Sender: TObject);
begin
if Assigned(GSCStream) then
begin
if Assigned(F_ProjMan.GSCSBase) and Assigned(F_ProjMan.GSCSBase.CurrProject) and F_ProjMan.GSCSBase.CurrProject.Active then
begin
try
ExpProjToStroyCalcStream(F_ProjMan.GSCSBase.CurrProject, GSCStream);
except
GSCStream.Clear;
end;
end;
end;
if SaveCurrentProject then
begin
CloseCurrProject(false, false);
FSCS_Main.OnClose := nil;
FSCS_Main.OnCloseQuery := nil;
ModalResult := mrOk;
FSCS_Main.Hide;
end;
end;
procedure TFSCS_Main.ToolButton4Click(Sender: TObject);
begin
ShowInvoice;
end;
procedure TFSCS_Main.aNetPathToArcExecute(Sender: TObject);
begin
NetPathToArc;
end;
procedure TFSCS_Main.aInvertNetPathArcExecute(Sender: TObject);
begin
NetArcInvert;
end;
{TODO}
(*
procedure TFSCS_Main.bDelModelClick(Sender: TObject);
begin
Remove3DModelStream;
end;
*)
// 2011-05-10
{procedure TFSCS_Main.Button1Click(Sender: TObject);
var
tmpdir: string;
FName: string;
begin
tmpdir := ExtractDirByCategoryType(dctPictures);
FName := tmpdir + '\' + 'ModelAddParams.temp';
frm3D.SaveModelAddParamsToStream(FName);
end;}
{procedure TFSCS_Main.Button2Click(Sender: TObject);
var
tmpdir: string;
FName: string;
begin
tmpdir := ExtractDirByCategoryType(dctPictures);
FName := tmpdir + '\' + 'ModelAddParams.temp';
frm3D.LoadModelAddParamsFromStream(FName);
end;}
procedure TFSCS_Main.n3DModelForProjectClick(Sender: TObject);
var
i, j: integer;
Cad: TF_CAD;
CtrlDown: boolean;
xModelNode: TTreeNode;
SavedGCadForm, TmpCad: TF_Cad;
ProjectParams: TProjectParams;
ListParams: TListParams;
HLists, LLists: TList;
PrevIndex, NextIndex: Integer;
SubstrateFileName: String;
currGLPlane: TGLPlane;
SubstrateFileList: TStringList;
{
procedure InsertIntoHList(Cad: TF_CAD);
var
i, j: integer;
Inserted: Boolean;
xCad: TF_CAD;
begin
Inserted := False;
for i := 0 to HLists.Count - 1 do
begin
xCad := TF_CAD(HLists[i]);
if Cad.FCADListIndex < xCad.FCADListIndex then
begin
HLists.Insert(i, Cad);
Inserted := True;
break;
end;
end;
if not Inserted then
HLists.Add(Cad);
end;
procedure InsertIntoLList(Cad: TF_CAD);
var
i, j: integer;
Inserted: Boolean;
xCad: TF_CAD;
begin
Inserted := False;
for i := 0 to LLists.Count - 1 do
begin
xCad := TF_CAD(LLists[i]);
if Cad.FCADListIndex > xCad.FCADListIndex then
begin
LLists.Insert(i, Cad);
Inserted := True;
break;
end;
end;
if not Inserted then
LLists.Add(Cad);
end;
}
// Tolik 02/05/2018 --
procedure GetSortModelLists;
var
i: integer;
CadLevelAchieved: Boolean;
currCatalog: TSCSCatalog;
currList: TSCSList;
SortIndex: Integer;
currCad: TF_CAD;
ReverseListSortOrder: Boolean;
procedure InsertIntoHList(Cad: TF_CAD);
var
i, j: integer;
Inserted: Boolean;
xCad: TF_CAD;
xCadCatalog: TSCSCatalog;
begin
Inserted := False;
for i := 0 to HLists.Count - 1 do
begin
xCad := TF_CAD(HLists[i]);
xCadCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(xCad.FCadListID);
if xCadCatalog <> nil then
begin
if ReverseListSortOrder then
begin
if xCadCatalog.SortID > currList.SortID then
begin
HLists.Insert(i, Cad);
Inserted := True;
break;
end;
end
else
begin
if xCadCatalog.SortID > currList.SortID then
begin
HLists.Insert(i, Cad);
Inserted := True;
break;
end;
end;
end;
end;
if not Inserted then
HLists.Add(Cad);
end;
procedure InsertIntoLList(Cad: TF_CAD);
var
i, j: integer;
Inserted: Boolean;
xCad: TF_CAD;
xCadCatalog: TSCSCatalog;
begin
Inserted := False;
for i := 0 to LLists.Count - 1 do
begin
xCad := TF_CAD(LLists[i]);
xCadCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(xCad.FCadListID);
if xCadCatalog <> nil then
begin
if ReverseListSortOrder then
begin
if xCadCatalog.SortID < currList.SortID then
begin
LLists.Insert(i, Cad);
Inserted := True;
break;
end;
end
else
begin
if xCadCatalog.SortID < currList.SortID then
begin
LLists.Insert(i, Cad);
Inserted := True;
break;
end;
end;
end;
end;
if not Inserted then
LLists.Add(Cad);
end;
begin
CadLevelAchieved := False;
HLists := TList.Create;
LLists := TList.Create;
HLists.Add(GCadForm); // òèïà ïåðâûé ýòàæ (òîò íà êîòîðîì ñòîèì â ÏÌ)
ReverseListSortOrder := F_ProjMan.GSCSBase.CurrProject.Setting.ListsInReverseOrder;
currCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(SavedGCadForm.FCADListID);
if currCatalog <> nil then
begin
for i := F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 downto 0 do
begin
currList := F_ProjMan.GSCSBase.CurrProject.ProjectLists[i];
if currList <> nil then
begin
CurrCad := GetListByID(currList.SCSID);
if currCad <> nil then
if CurrCad.FListType = lt_Normal then
begin
if ReverseListSortOrder then
begin
if CurrList.SortID > currCatalog.SortID then
InsertIntoHList(CurrCad)
else
if CurrList.SortID < currCatalog.SortID then
InsertIntoLList(CurrCad);
end
else
begin
if CurrList.SortID > currCatalog.SortID then
InsertIntoHList(CurrCad)
else
if CurrList.SortID < currCatalog.SortID then
InsertIntoLList(CurrCad);
end;
end;
end;
end;
end
end;
{
procedure GetSortModelLists;
var
i: integer;
begin
HLists := TList.Create;
LLists := TList.Create;
for i := 0 to FSCS_Main.MDIChildCount - 1 do
begin
Cad := TF_CAD(FSCS_Main.MDIChildren[i]);
if Cad.FListType = lt_Normal then
begin
if Cad.FCADListIndex > 0 then
InsertIntoHList(Cad);
if Cad.FCADListIndex <= 0 then
InsertIntoLList(Cad);
end;
end;
end;
}
// Tolik 04/05/2018 --
Function CadListCount: Integer; // ïîñ÷èòàòü êîëè÷åñòâî ëèñòîâ äëÿ 3Ä ìîäåëè
var i: Integer;
currList: TSCSList;
CurrCad: TF_Cad;
begin
Result := 0;
for i := F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 downto 0 do
begin
currList := F_ProjMan.GSCSBase.CurrProject.ProjectLists[i];
if currList <> nil then
begin
CurrCad := GetListByID(currList.SCSID);
if currCad <> nil then
if CurrCad.FListType = lt_Normal then
Inc(Result);
end;
end;
end;
begin
// Tolik 04/05/2018 -- åñëè ëèñòîâ ïðîåêòà áîëüøå îäíîãî -- âûäàòü ñîîáùåíèå, ÷òî òåêóùèé ëèñò áóäåò ðàñïîëîæåí íà íóëåâîì óðîâíå
// -- è, åñëè ïîëüçîâàòåëü íàæìåò îòìåíó -- íàõ îòñþäà, ìîäåëü íå ñòðîèì
if CadListCount > 1 then
if MessageBox(FSCS_Main.Handle, {PAnsiChar}PChar(cMain_Mes144), PChar(cCommon_Mes29), MB_OKCANCEL) <> IDOK then
exit;
//
// Tolik -- 09/02/2017 --
HLists := nil;
LLists := Nil;
SubstrateFileList := TStringList.Create; // ñïèñîê ïîäëîæåê (÷òîáû ïîòîì óäàëèòü ñîçäàííûå jpeg, äàáû íå çàñîðÿòü äèñê)
//
{$ifdef 3D}
ctrlDown:=(IsKeyDown(VK_LCONTROL) or IsKeyDown(VK_RCONTROL));
if ActiveMDIChild <> nil then
begin
{$IF Not Defined(ES_GRAPH_SC)}
SaveSubstrateArchPlan(GetPathToSCSTmpDir + '\3d.jpg');
{$IFEND}
GCurrentRoom3DView := nil;
if not isMapScaleDifferent then
begin
G3DModelForProject := True;
BeginProgress;
if not Assigned(frm3D) then
Application.CreateForm(Tfrm3D, frm3d);
// 22.07.2011
if Assigned(frm3D.F3DModel) then
FreeAndNil(frm3D.F3DModel);
frm3D.F3DModel := T3DModel.Create;
// Tolik 26/04/2018 --
frm3D.isProjectModel := True;
//
frm3D.FIdsStream.Clear;
frm3D.FFilesStream.Clear;
frm3D.ModelTree.Items.Clear;
frm3D.ScsModelTree.Items.Clear;
xModelNode := frm3D.ModelTree.Items.AddFirst(nil, frm3D.F3DModel.FName);
xModelNode.Data := frm3D.F3DModel;
xModelNode.HasChildren := True;
xModelNode := frm3D.ScsModelTree.Items.AddFirst(nil, frm3D.F3DModel.FName);
xModelNode.Data := frm3D.F3DModel;
xModelNode.HasChildren := True;
SavedGCadForm := GCadForm;
F3DSavedCad := GCadForm;// Tolik 05/05/2018 --
F3DPlaneNotLoaded := False; // Tolik 04/05/2018 --
GetSortModelLists;
// Tolik 26/04/2018 --
ListOfCadsFor3DModel := TList.Create;
if HLists.Count > 0 then
begin
HListOfCadsFor3DModel := TList.Create;
HListOfCadsFor3DModel.Assign(HLists, laCopy);
ListOfCadsFor3DModel.Assign(HLists, laCopy);
end;
if LLists.Count > 0 then
begin
LListOfCadsFor3DModel := TList.Create;
LListOfCadsFor3DModel.Assign(LLists, laCopy);
for i := 0 to LListOfCadsFor3DModel.Count - 1 do
begin
Cad := TF_CAD(LListOfCadsFor3DModel[i]);
ListOfCadsFor3DModel.Insert(0, Cad);
end;
end;
//
// Ýòàæè âûøå óðîâíÿ çåìëè
frm3D.FZOrder := 0;
for i := 0 to HLists.Count - 1 do
begin
SubstrateFileName := '';
GCadForm := TF_CAD(HLists[i]);
if i < HLists.Count - 1 then
NextIndex := TF_CAD(HLists[i+1]).FCADListIndex
else
NextIndex := -32001;
{$IF Defined(ES_GRAPH_SC)}
if ctrlDown then
if FileExists(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D) then
begin
try
DeleteFile(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D);
except
end;
end;
{$IFEND}
// Tolik 04/05/2018 --
if GCadForm.FCadListID <> SavedGCadForm.FCadListID then
begin
begin
SubstrateFileName := GetPathToSCSTmpDir + '\GLPlane' + inttostr(GCadForm.FCadListID + 100) + 'd.jpg';
if FileExists(SubstrateFileName) then
DeleteFile(SubstrateFileName);
SaveSubstrateArchPlan(SubstrateFileName);
end;
if FileExists(SubstrateFileName) then
begin
NotBase3DPlane := TGLPlane.Create(frm3D);
//NotBase3DPlane.Parent := frm3D.DummyCube1;
NotBase3DPlane.Direction.x := 0;
NotBase3DPlane.Direction.y := 1;
NotBase3DPlane.Direction.z := 0;
NotBase3DPlane.Style := [];
//NotBase3DPlane.Material.Texture.Image.LoadFromFile(SubstrateFileName);
NotBase3DPlane.Name := 'GLPlane' + inttostr(GCadForm.FCadListID + 100);
end;
end;
//
if SubstrateFileName <> '' then
SubstrateFileList.Add(SubstrateFileName);
GCadForm.View3D;
NotBase3DPlane := nil;
if GCadForm.FCADListIndex <> NextIndex then
begin
if NextIndex <> -32001 then // Tolik 20/09/2021 - -
begin
ListParams := GetListParams(GCadForm.FCADListID);
frm3D.FZOrder := frm3D.FZOrder + MetreToUOM(ListParams.Settings.HeightRoom + 0.01);
end;
end
else
begin
//frm3D.FZOrder := frm3D.FZOrder + 0.5;
end;
end;
// Ýòàæè íèæå óðîâíÿ çåìëè
frm3D.FZOrder := 0;
PrevIndex := -32001;
for i := 0 to LLists.Count - 1 do
begin
GCadForm := TF_CAD(LLists[i]);
if GCadForm.FCADListIndex <> PrevIndex then
begin
ListParams := GetListParams(GCadForm.FCADListID);
//Tolik 29/09/2021 --
//frm3D.FZOrder := frm3D.FZOrder - ListParams.Settings.HeightRoom - 0.01;
frm3D.FZOrder := frm3D.FZOrder - MetreToUOM(ListParams.Settings.HeightRoom - 0.01);
//
end
else
begin
//frm3D.FZOrder := frm3D.FZOrder - 0.5;
end;
// 22.07.2011
PrevIndex := GCadForm.FCADListIndex;
{$IF Defined(ES_GRAPH_SC)}
if ctrlDown then
if FileExists(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D) then
begin
try
DeleteFile(F_ProjMan.GSCSBase.CurrProject.GetListBySCSID(GCadForm.FCADListID).File3D);
except
end;
end;
{$IFEND}
// Tolik 04/05/2018 --
if GCadForm.FCadListID <> SavedGCadForm.FCadListID then
begin
begin
SubstrateFileName := GetPathToSCSTmpDir + '\GLPlane' + inttostr(GCadForm.FCadListID + 100) + 'd.jpg';
if FileExists(SubstrateFileName) then
DeleteFile(SubstrateFileName);
SaveSubstrateArchPlan(SubstrateFileName);
end;
if FileExists(SubstrateFileName) then
begin
NotBase3DPlane := TGLPlane.Create(frm3D);
//NotBase3DPlane.Parent := frm3D.glDummyCube1;
NotBase3DPlane.Direction.x := 0;
NotBase3DPlane.Direction.y := 1;
NotBase3DPlane.Direction.z := 0;
NotBase3DPlane.Style := [];
//NotBase3DPlane.Material.Texture.Image.LoadFromFile(SubstrateFileName);
NotBase3DPlane.Name := 'GLPlane' + inttostr(GCadForm.FCadListID + 100);
end;
end;
//
GCadForm.View3D;
if SubstrateFileName <> '' then
SubstrateFileList.Add(SubstrateFileName);
NotBase3DPlane := nil;
end;
// Tolik 03/05/2018 --
{ if ListOfCadsFor3DModel.Count > 0 then
begin
F3DFloors := TList.Create;
for i := 0 to ListOfCadsFor3DModel.Count - 1 do
begin
GCadForm := TF_CAD(ListOfCadsFor3DModel[i]);
if GCadForm.FCadListID <> SavedGCadForm.FCadListID then
begin
SubstrateFileName := GetPathToSCSTmpDir + '\' + inttostr(GCadForm.FCadListID) + 'd.jpg';
if FileExists(SubstrateFileName) then
DeleteFile(SubstrateFileName);
SaveSubstrateArchPlan(SubstrateFileName);
end;
if FileExists(SubstrateFileName) then
begin
currGLPlane := TGLPlane.Create(frm3D);
currGLPlane.Parent := frm3D.DummyCube;
currGLPlane.Material.Texture.Image.LoadFromFile(SubstrateFileName);
currGLPlane.Name := 'GLPlane' + inttostr(i+2);
F3DFloors.Add(currGLPlane);
end;
end;
end;
}
//
GCadForm := SavedGCadForm;
EndProgress;
frm3d.FCAD := GCadForm;
frm3d.ShowModal;
FreeAndNil(frm3D);
end
else
begin
// Tolik 10/05/2018 -*-
ShowMessage(cForm3D_Mes13); // òàê ïðîùå è áûñòðåå
(*
{$IF Defined(SCS_PE)}
ShowMessage('Scales of pages (floors) are different. ' + #13#10 +
'To view the entire project 3D model scales of pages should be equal.' + #13#10 +
'But anyway you can open a single page in 3D mode.');
{$ELSEIF Defined(SCS_UKR)} //Tolik 10/05/2018 -- äëÿ óêðàèíñêîé âåðñèè òîæå íàäî!!!
ShowMessage('Ìàøòàáè íà àðêóøàõ â³äð³çíÿþòüñÿ! Ïîòð³áíî âñòàíîâèòè îäíàêîâèé ìàøòàá.' + #13#10 +
'Àëå, â ëþáîìó âèïàäêó, âè ìîæåòå â³äêðèòè 3Ä ìîäåëü îäíîãî àðêóøà (ïîâåðõó).');
{$ELSE}
ShowMessage('Ìàñøòàáû íà ëèñòàõ ðàçëè÷àþòñÿ! Íóæíî óñòàíîâèòü îäèíàêîâûé ìàñøòàá.' + #13#10 +
'Íî, â ëþáîì ñëó÷àå, âû ìîæåòå îòêðûòü 3Ä ìîäåëü îäíîãî ëèñòà (ýòàæà).');
{$IFEND}
*)
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
SetDefaultActiveLayer;
{$endif 3D}
// Tolik -- 09/02/2017 --
if HLists <> nil then
FreeAndNil(HLists);
if LLists <> Nil then
FreeAndNil(LLists);
if LListOfCadsFor3DModel <> nil then
FreeAndNil(LListOfCadsFor3DModel); // Tolik 24/06/2018 --
if HListOfCadsFor3DModel <> nil then
FreeAndNil(HListOfCadsFor3DModel); // Tolik 24/06/2018 --
if ListOfCadsFor3DModel <> nil then
FreeAndNil(ListOfCadsFor3DModel); // Tolik 24/06/2018 --
F3DPlaneNotLoaded := True; // Tolik 04/05/2018 --
F3DSavedCad := Nil; // 04/05/2018 --
if NotBase3DPlane <> nil then // Tolik -- 10/05/2018 -- íà âñÿêèé...
NotBase3DPlane := Nil;
// Tolik -- 10/05/2018 -- ïî÷èñòèòü ìóñîð (óäàëèòü ñîçäàííûå êàðòèíêè ïîäëîæåê â òåìïàõ)//
for i := 0 to SubstrateFileList.Count - 1 do
begin
SubstrateFileName := SubstrateFileList.Strings[i];
if FileExists(SubstrateFileName) then
begin
try
DeleteFile(SubstrateFileName);
except
end;
end;
end;
SubstrateFileList.Free;
//
end;
// Ïðè ïðîâåðêå íà ñîîòâåòñòâèå ìàñøòàáîâ èíîãäà âîçíèêàþò êàçóñû â ïëàíå ñîîòâåòñòâèÿ "íà ãëàç" è
// íåñîîòâåòñòâèÿ ìàñøòàáîâ èç-çà îêðóãëåíèÿ âåëè÷èí... ÷òî âûçûâàåò íåîäíîêðàòíûå ñåòîâàíèÿ ïîëüçîâàòåëåé
// ÏÎýòîìó ââåäåí íåáîëüøîé ëþôò... Ñòàðàÿ çàêîììåí÷åíà -- ñì íèæå
function TFSCS_Main.isMapScaleDifferent: Boolean;
var
i: integer;
mapscale, currMapScale, MapDelta: double;
begin
try
mapscale := -100;
Result := False;
for i := 0 to MDIChildCount - 1 do
begin
if TF_CAD(MDIChildren[i]).FListType = lt_Normal then
begin
if mapscale = -100 then
mapscale := Round2(TF_CAD(MDIChildren[i]).PCad.MapScale)
else
begin
currMapScale := Round2(TF_CAD(MDIChildren[i]).PCad.MapScale);
MapDelta := Abs(currMapScale - mapscale);
if CompareValue(MapDelta, 0.05) = 1 then // ñîáñòâåííî, âîò çäåñü è ïðîâåðêà è ëþôòèê...
begin
Result := True;
break;
end;
//if not EQD(Round2(TF_CAD(MDIChildren[i]).PCad.MapScale), mapscale) then
//Result := True;
end;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.isMapScaleDifferent', E.Message);
end;
end;
{
function TFSCS_Main.isMapScaleDifferent: Boolean;
var
i: integer;
mapscale: double;
begin
try
mapscale := -100;
Result := False;
for i := 0 to MDIChildCount - 1 do
begin
if TF_CAD(MDIChildren[i]).FListType = lt_Normal then
begin
if mapscale = -100 then
mapscale := Round2(TF_CAD(MDIChildren[i]).PCad.MapScale)
else
begin
if not EQD(Round2(TF_CAD(MDIChildren[i]).PCad.MapScale), mapscale) then
Result := True;
end;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.isMapScaleDifferent', E.Message);
end;
end;
}
procedure TFSCS_Main.aAutoCreateTracesExecute(Sender: TObject);
begin
AutoCreateTracesMaster(GPopupFigure); //29.06.2013 AutoCreateTraces;
GCadForm.PCad.Refresh; // Tolik 28/10/2019 --
end;
procedure TFSCS_Main.aDivTracesOnRoowWallsExecute(Sender: TObject);
begin
DivideTracesOnRoowWalls(GCadForm);
end;
procedure TFSCS_Main.aPathLengthTypePointsExecute(Sender: TObject);
begin
SetShowPathLengthType(sltPoints);
end;
procedure TFSCS_Main.aPathLengthTypeInnerExecute(Sender: TObject);
begin
SetShowPathLengthType(sltInner);
end;
procedure TFSCS_Main.aPathLengthTypeOuterExecute(Sender: TObject);
begin
SetShowPathLengthType(sltOuter);
end;
procedure TFSCS_Main.aPathTraceLengthTypePointsExecute(Sender: TObject);
begin
SetShowPathTraceLengthType(sltPoints);
end;
procedure TFSCS_Main.aPathTraceLengthTypeInnerExecute(Sender: TObject);
begin
SetShowPathTraceLengthType(sltInner);
end;
procedure TFSCS_Main.aPathTraceLengthTypeOuterExecute(Sender: TObject);
begin
SetShowPathTraceLengthType(sltOuter);
end;
procedure TFSCS_Main.aMirrorFigureExecute(Sender: TObject);
var
fig: TFigure;
i: Integer;
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
MirrorFigure(TFigure(GCadForm.PCad.Selection[i]));
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'aMirrorFigureExecute', E.Message);
end;
end;
procedure TFSCS_Main.aTransparentFigureExecute(Sender: TObject);
var
i: Integer;
Figure: TFigure;
begin
try
if GCadForm.PCad.Selection.Count > 0 then
begin
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, False, False);
GCadForm.FCanSaveForUndo := False;
end;
for i := 0 to GCadForm.PCad.Selection.Count - 1 do
begin
Figure := TFigure(GCadForm.PCad.Selection[i]);
if Figure is TBMPObject then
TBMPObject(Figure).Transparent := aTransparentFigure.Checked;
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
// *UNDO*
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'aTransparentFigureExecute', E.Message);
end;
end;
procedure TFSCS_Main.aNetPropsExecute(Sender: TObject);
begin
NetProps;
end;
procedure TFSCS_Main.DefinePMItemsRoofHipTypes;
var
InsIdx: Integer;
MenuItem: TMenuItem;
Types: TStringList;
i: Integer;
begin
if FPMItemsRoofHipTypes = nil then
begin
FPMItemsRoofHipTypes := TList.Create;
Types := TStringList.Create;
FillPropValuesByDataType(Types, dtRoofHipType);
Types.Add('-');
InsIdx := pmArchDesign.Items.IndexOf(pmiArchDesignSplit2);
if InsIdx = -1 then
InsIdx := pmArchDesign.Items.Count - 1
else
InsIdx := InsIdx + 1;
for i := 0 to Types.Count - 1 do
begin
//if Types[i] <> '' then
begin
MenuItem := TMenuItem.Create(pmArchDesign);
MenuItem.Caption := Types[i];
MenuItem.OnClick := OnPMItemsRoofHipTypeClick;
MenuItem.Tag := GetIDFromStrings(Types, i);
if (MenuItem.Tag = rhtNone) and (MenuItem.Caption = '') then
MenuItem.Caption := cArchCommon_Msg06;
//if MenuItem.Tag <> 0 then
//begin
// MenuItem.AutoCheck := true;
// MenuItem.GroupIndex := 2;
// MenuItem.RadioItem := true;
//end;
pmArchDesign.Items.Insert(InsIdx, MenuItem);
FPMItemsRoofHipTypes.Add(MenuItem);
InsIdx := InsIdx + 1;
end;
end;
Types.Free;
end;
end;
procedure TFSCS_Main.C1Click(Sender: TObject);
var i: integer;
LineList, PointList, ShieldList, AutoSwitchList, JoinedSwitchCompons, CableList: TSCSComponents;
ShieldCompon, AVR_Compon, SwitchCompon: TSCSComponent;
ShieldLines, Switch_List: TList;
PassedComponList, EndCompons: TSCSComponents;
CableComponent: TSCSComponent;
Procedure GetSwitchList(var aList: TSCSComponents; aLookList: TSCSComponents);
var i: Integer;
ChildCompon: TSCSComponent;
begin
for i := 0 to aLookList.Count - 1 do
begin
ChildCompon := aLookList[i];
if ChildCompon.ComponentType.SysName = ctsnAutoSwitch then
if aList.IndexOf(childCompon) = -1 then
aList.Add(ChildCompon);
end;
end;
Procedure CollectConnections(aCompon: TSCSComponent; var aList: TSCSComponents; aCypher: string);
var i, j, k: integer;
ParentCompon, ChildCompon, JoinedCompon: TSCSComponent;
begin
if aList.IndexOf(aCompon) = -1 then
aList.Add(aCompon);
if PassedComponList.IndexOf(aCompon) = -1 then
begin
PassedComponList.Add(aCompon);
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if aCompon.JoinedComponents[i].IsLine = biTrue then // Ïîäêëþ÷åí êàáåëü
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].Cypher = aCypher then
begin
if PassedComponList.IndexOf(aCompon.JoinedComponents[i]) = -1 then
CollectConnections(aCompon.JoinedComponents[i], aList, aCypher);
end;
end
else
begin // Point Connection
if PassedComponList.IndexOf(aCompon.JoinedComponents[i]) = -1 then
begin
PassedComponList.Add(aCompon.JoinedComponents[i]);
if aList.IndexOf(aCompon.JoinedComponents[i]) = -1 then // òóò äîïîëíèòåëüíó ïðîâåðêó âîòêíóòü, íà÷èíàÿ ñ ïàðåíòà äîíèçó íà âõîæäåíèå
begin
ParentCompon := aCompon.JoinedComponents[i].GetTopComponent;
if ParentCompon <> nil then
begin
if aList.IndexOf(ParentCompon) = -1 then
aList.Add(ParentCompon);
if ParentCompon.ComponentType.SysName <> ctsnTerminalBox then
if EndCompons.IndexOf(ParentCompon) = -1 then
EndCompons.Add(ParentCompon);
for j := 0 to ParentCompon.JoinedComponents.Count - 1 do
begin
JoinedCompon := ParentCompon.JoinedComponents[j];
if PassedComponList.IndexOf(JoinedCompon) = -1 then
if JoinedCompon.IsLine = biTrue then
if isCableComponent(JoinedCompon) then
if JoinedCompon.Cypher = aCypher then
CollectConnections(JoinedCompon, aList, aCypher);
end;
for j := 0 to ParentCompon.ChildReferences.Count - 1 do
begin
ChildCompon := ParentCompon.ChildReferences[j];
if PassedComponList.IndexOf(ChildCompon) = -1 then
PassedComponList.Add(ChildCompon);
for k := 0 to ChildCompon.JoinedComponents.Count - 1 do
begin
JoinedCompon := ChildCompon.JoinedComponents[k];
if PassedComponList.IndexOf(JoinedCompon) = -1 then
if JoinedCompon.IsLine = biTrue then
if isCableComponent(JoinedCompon) then
if JoinedCompon.Cypher = aCypher then
CollectConnections(JoinedCompon, aList, aCypher);
end;
end;
end;
end;
end;
end;
end;
end;
end;
function GetConnectedToSwitch(aCompon: TSCSComponent): TSCSComponents;
var i: integer;
JoinedCompon: TSCSComponent;
HasNoCableConnection: Boolean;
HasPointConnections: Boolean;
begin
Result := nil;
HasNoCableConnection := true;
HasPointConnections := False;
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].IDNetType = 3 then
HasNoCableConnection := false;
end;
if HasNoCableConnection then
exit;
Result := TSCSComponents.Create(false);
if PassedComponList.IndexOf(aCompon) = -1 then
PassedComponList.Add(aCompon);
for i := 0 to aCompon.JoinedComponents.Count - 1 do
begin
if IsCableComponent(aCompon.JoinedComponents[i]) then
if aCompon.JoinedComponents[i].IDNetType = 3 then
begin
CollectConnections(aCompon.JoinedComponents[i], Result, aCompon.JoinedComponents[i].Cypher);
if CableComponent = nil then
CableComponent := aCompon.JoinedComponents[i];
end;
end;
end;
begin
LineList := nil;
PointList := nil;
AVR_Compon := nil;
ShieldList := nil;
AutoSwitchList := Nil;
ShieldLines := Nil;
Switch_List := Nil;
CableList := TSCSComponents.Create(False);
if F_ProjMan.GSCSBase.CurrProject.CurrList <> nil then
begin
if F_ProjMan.GSCSBase.CurrProject.CurrList.OpenedInCAD then
begin
PointList := TSCSComponents.Create(false); // òî÷êè
LineList := TSCSComponents.Create(false); // êàáåëü
for I := 0 to F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences.Count - 1 do
begin
if F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i].IDNetType = 3 then
begin
if F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i].IsLine = biTrue then
begin
if LineList.IndexOf(F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i]) = -1 then
LineList.Add(F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i]);
end
else
if F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i].IsLine = biFalse then
begin
if PointList.IndexOf(F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i]) = -1 then
PointList.Add(F_ProjMan.GSCSBase.CurrProject.CurrList.ComponentReferences[i]);
end;
end;
end;
end;
end;
if ((PointList.Count = 0) or (LineList.Count = 0)) then
ShowMessage('There is no Objects to display!!!')
else
begin
//ïîñòðîèòü ñïèñîê ùèòîâ
ShieldList := TSCSComponents.Create(false);
for i := 0 to PointList.Count - 1 do
begin
if PointList[i].ComponentType.SysName = ctsnShield then
if ShieldList.IndexOf(PointList[i]) = -1 then
ShieldList.Add(PointList[i]);
end;
end;
if ShieldList.Count > 0 then
begin
ShieldCompon := ShieldList[0];
// ïîñòðîèòü ñïèñîê àâòîìàòîâ ùèòêà
if ShieldCompon.ChildReferences.Count > 0 then
begin
AutoSwitchList := TSCSComponents.Create(false);
GetSwitchList(AutoSwitchList, ShieldCompon.ChildReferences);
end;
end
else; // íå îáíàðóæåíî íè îäíîãî ùèòêà ....
ShieldLines := TList.Create;
if AutoSwitchList.Count > 0 then
begin
// ïîñòðîèòü ñïèñêè ïîäêëþ÷åíèé íà êàæäûé àâòîìàò
PassedComponList := TSCSComponents.Create(false);
PassedComponList.Add(ShieldCompon);
for i := AutoSwitchList.Count - 1 downto 0 do
begin
SwitchCompon := AutoSwitchList[i];
PassedComponList.Add(SwitchCompon);
EndCompons := TSCSComponents.Create(false);
CableComponent := nil;
JoinedSwitchCompons := GetConnectedToSwitch(SwitchCompon);
//PassedComponList.Clear;
if EndCompons.Count > 0 then
begin
if CableComponent <> nil then
begin
ShieldLines.Insert(0, EndCompons);
CableList.Add(CableComponent);
end;
end
else
begin
AutoSwitchList.delete(i);
EndCompons.Free;
end;
end;
if Switch_List = nil then
Switch_List := TList.Create;
if AutoSwitchList.Count > 0 then
Switch_List.Add(AutoSwitchList);
end
else
begin // íå îáíàðóæåíî àâòîìàòîâ â ùèòêå!!! -- ìîæå ñîîáùåíèå êàêîå âûäàòü òóò.....
end;
if ShieldLines.Count > 0 then //
BuildElectricianChemeList(AVR_Compon, ShieldList, Switch_List, ShieldLines, CableList, nil);
if PassedComponList <> nil then
PassedComponList.free;
if LineList <> nil then
LineList.Free;
if PointList <> nil then
PointList.Free;
if ShieldList <> nil then
ShieldList.Free;
if AutoSwitchList <> nil then
AutoSwitchList.free;
freeList(ShieldLines);
CableList.Free;
end;
function TFSCS_Main.CanResizePanelForm(AForm: TForm; ADeltaSize: Integer): Boolean;
begin
Result := true;
if Assigned(AForm) then
if AForm.Constraints.MinWidth > (AForm.Width + ADeltaSize) then
Result := false;
end;
procedure TFSCS_Main.OnSplitterMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
{if Sender = sDiv1 then
begin
if Assigned(F_ProjMan) then
F_ProjMan.Panel_Tree.DisableAlign;
end
else
if Sender = sDiv2 then
begin
if Assigned(F_NormBase) then
F_NormBase.Panel_Tree.DisableAlign;
end; }
end;
procedure TFSCS_Main.OnSplitterMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
{if Sender = sDiv1 then
begin
if Assigned(F_ProjMan) then
F_ProjMan.Panel_Tree.EnableAlign;
end
else
if Sender = sDiv2 then
begin
if Assigned(F_NormBase) then
F_NormBase.Panel_Tree.EnableAlign;
end;}
end;
procedure TFSCS_Main.OnPMItemsRoofHipTypeClick(Sender: TObject);
begin
if {(TMenuItem(Sender).Tag <> 0) and} (TMenuItem(Sender).Caption <> '') and (GCadForm.PCad.Selection.Count > 0) then
begin
SetSelPathRoofHipType(GCadForm.PCad.Selection[0], TMenuItem(Sender).Tag);
end;
end;
procedure TFSCS_Main.SDCreateBlockToFileCanClose(Sender: TObject; var CanClose: Boolean);
var
i: Integer;
FileName: String;
begin
if TSaveDialog(Sender).Files.Count > 0 then
begin
// Ïðîâåðÿåì åñòü ëè ñ òàêèì èìåíåíì bmp êàê blk
FileName := TSaveDialog(Sender).Files[0];
FileName := ExtractFilePathOnly(FileName) +'.bmp';
if FileExists(FileName) then
if MessageQuastYN(FileName+' '+cMain_Mes131) <> IDYES then
CanClose := false;
end;
end;
procedure TFSCS_Main.ShowBlockParamsForPopupFigure(aAllowPersent: Boolean=true; aAllowProportion: Boolean=true);
var
TempBlock: TFigure;
FigHandle: Integer;
//SelFigure: TFigure;
//SelFigureObj: TSCSComponent;
CommonNetIdx: Integer;
IsSaveForUndo: Boolean;
begin
try
TempBlock := nil;
IsSaveForUndo := false;
try
if (GPopupFigure = nil) then
begin
if GCadForm.PCad.ActiveLayer = lnArch then
begin
GCadForm.BeginSaveForUndo(uat_None, False, False);
IsSaveForUndo := true;
if GCadForm.PCad.SelectedCount = 1 then
TempBlock := TFigure(GCadForm.PCad.Selection.Items[0])
else
if GCadForm.PCad.SelectedCount > 0 then
begin
//CommonNetIdx := GCadForm.PCad.Selection.IndexOf(GCadForm.FActiveNet);
//if CommonNetIdx <> -1 then
//begin
// GCadForm.FActiveNet.Selected := false;
// GCadForm.PCad.Selection.Delete(CommonNetIdx);
//end;
CommonNetIdx := GCadForm.RemoveFigureFromSelected(GCadForm.FActiveNet);
//SelFigure := TFigure(GCadForm.PCad.Selection[0]);
//10.05.2012 Åñëè TNet, òî åñëè âûäåëåíû âñå ñåãìåíòû êðûøè (ñâÿçàííûå), òî âûâîäèì äèàëîã ñ ó÷åòîì âûñîòû êðûøè
{if (SelFigure.ClassName = TNet.ClassName) and (TNet(SelFigure).FComponID <> 0) then
begin
SelFigureObj := GetArchObjByCADObj(SelFigure);
if SelFigureObj <> nil then
if SelFigureObj.IsLine = ctArhRoofSeg then
begin
if IsAllRelatedNetsInList(TNet(SelFigure), GCadForm.PCad.Selection, true) then
begin
end;
end;
end; }
FigHandle := GCadForm.PCad.GroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
TempBlock := TFigure(FigHandle);
if CommonNetIdx <> -1 then
begin
GCadForm.PCad.Selection.Add(GCadForm.FActiveNet);
GCadForm.FActiveNet.Selected := true;
end;
end;
F_BlockParams.cbProportions.Checked := false;
GPopupFigure := TempBlock;
end;
end;
if GPopupFigure <> nil then
begin
F_BlockParams.Execute(GPopupFigure, aAllowPersent, aAllowProportion);
end;
if (TempBlock <> nil) and (TempBlock is TFigureGrp) then
begin
GCadForm.PCad.UnGroupSelection;
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
finally
if IsSaveForUndo then
GCadForm.EndSaveForUndo;
end;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'ShowBlockParamsForPopupFigure', E.Message);
end;
end;
procedure TFSCS_Main.RecreateHandle;
begin
RecreateWnd;
//07.05.2013 Ïîñëå ïåðåêëþ÷åíèÿ ÿçûêà, ÷òîáû ïîäòÿíóëèñü õèíòû
SetHints;
end;
procedure TFSCS_Main.SetHints;
begin
aInteractiveNextStep.Hint := aInteractiveNextStep.Caption;
aInteractiveStop.Hint := aInteractiveStop.Caption;
end;
procedure TFSCS_Main.aConvertToPolygonExecute(Sender: TObject);
var
CADCoordKoeff: Double;
Circle: TCircle;
CornerCount: Integer;
PolygonPoints: TDoublePointArr;
PolygonFigure: TPolyline;
Points: TDoublePointArr;
LayerHandle: Integer;
ObjType: Integer;
CurrPt, CenterPt, TempPt, SrcPt1, SrcPt2: TDoublePoint;
StartPt: PDoublePoint;
ObjProps: TSCSComponent;
i, j, ptIdx: Integer;
ObjHeight: Double;
BaseRadius, BaseCircleLen: Double;
BaseCornerCount: Integer;
ArchNet: TSCSComponent;
Net: TNet;
Path: TNetPath;
NewPaths: TList;
NewPoints: TList;
pt: PDoublepoint;
LinePoints: TDoublePointArr;
begin
// Tolik 13/01/2020
Circle := nil;
try
if (GCadForm.PCad.Selection.Count = 1) then
begin
CADCoordKoeff := 1000/GCadForm.PCad.MapScale;
StartPt := nil;
CurrPt := DoublePoint(GCadForm.CurrX, GCadForm.CurrY);
ObjProps := nil;
ObjType := ctNone;
Circle := nil;
if TFigure(GCadForm.PCad.Selection[0]) is TCircle then
begin
Circle := TCircle(GCadForm.PCad.Selection[0]);
if (GCadForm.CurrentLayer = lnArch) and IsArchTopComponByIsLine(F_NormBase.GSCSBase.SCSComponent.IsLine) then
begin
ObjType := F_NormBase.GSCSBase.SCSComponent.IsLine;
ObjProps := TSCSComponent.Create(F_ProjMan);
ObjProps.AddSimpleProperty(pnCornerCount, 'Êîëè÷åñòâî óãëîâ', '6', dtInteger);
if ObjType = ctArhRoofSeg then
begin
ObjProps.AddSimpleProperty(pnHeight, 'Âûñîòà', '2', dtFloat);
ObjProps.AddSimpleProperty(pnAllowEaves, 'Ñ êàðíèçíûì ñâåñîì', '1', dtBoolean);
ObjProps.AddSimpleProperty(pnRoofBaseRadius, 'Ðàäèóñ îñíîâàíèÿ', FloatToStrU(Circle.radius * GCadForm.PCad.MapScale / 1000), dtFloat);
ObjProps.AddSimpleProperty(pnLength, 'Ïðèáëèçèòåëüíàÿ äëèíà ðåáåð íà îñíîâàíèè', '1', dtFloat);
end;
end;
end;
CornerCount := 0;
if ObjProps <> nil then
begin
if EditObjectProps(F_ProjMan, ObjProps, false) then
CornerCount := ObjProps.GetPropertyValueAsInteger(pnCornerCount);
end
else
CornerCount := InputForm(F_ProjMan, ApplicationName, cMain_Mes129, 6, dtInteger);
if CornerCount > 0 then
begin
BeginProgress;
GCadForm.BeginSaveForUndo(uat_None, True, False);
try
LayerHandle := GCadForm.PCad.GetLayerHandle(GCadForm.CurrentLayer);
if TFigure(GCadForm.PCad.Selection[0]) is TCircle then
begin
CenterPt := Circle.actualpoints[1];
if IspointInCircle(CurrPt.x, CurrPt.y, CenterPt.x, CenterPt.y, Circle.radius) then
StartPt := @CurrPt;
PolygonPoints := GetPolylineFromArc(CornerCount, CenterPt, Circle.radius, 360, StartPt, nil);
ObjType := ctNone;
if IsArchTopComponByIsLine(F_NormBase.GSCSBase.SCSComponent.IsLine) then
begin
ObjType := F_NormBase.GSCSBase.SCSComponent.IsLine;
SetLength(Points, 4);
for i := 0 to Length(PolygonPoints) - 1 do
begin
Points[0] := PolygonPoints[i];
if i < (Length(PolygonPoints) - 1) then
Points[1] := PolygonPoints[i+1]
else
Points[1] := PolygonPoints[0];
Points[2] := CenterPt;
Points[3] := Points[0];
ArchNet := CreateArchRoomByWallInfo(nil, nil, GCadForm, ObjType, nil, Points, nil, nil, true, true);
Net := TNet(GetCADObjByArchObj(ArchNet, GCadForm));
if ObjType = ctArhRoofSeg then
begin
// Ó÷èòûâàòü êàðíèçû
if ObjProps.GetPropertyValueAsBooleanDef(pnAllowEaves, false) then
for j := 0 to Net.Paths.Count - 1 do
begin
Path := TNetPath(Net.Paths[j]);
if Net.CmpIntersectPaths(Path.p1, Path.p2, @Points[0], @Points[1]) = citEqual then
SetPathRoofHipType(Net, Path, rhtEaves)
else
SetPathRoofHipType(Net, Path, rhtRoofHip);
end;
// Ó÷èòûâàòü âûñîòó òî÷êè
ObjHeight := ObjProps.GetPropertyValueAsFloat(pnHeight);
if ObjHeight > 0 then
begin
F_ProjMan.SetComponPropValue(
GetArchCornerByPoint(Net, Net.GetPointByNear(CenterPt)),
pnHeight, FloatToStr(ObjHeight)
);
end;
end;
end;
// Äîáàâëÿåì îñíîâàíèå
BaseRadius := ObjProps.GetPropertyValueAsFloat(pnRoofBaseRadius) * CADCoordKoeff;
if BaseRadius > 0 then
begin
{SetLength(Points, Length(PolygonPoints)+1);
for i := 0 to Length(PolygonPoints) - 1 do
begin
if Abs(BaseRadius - Circle.radius) > 0.1 then
Points[i] := MPoint(CenterPt, PolygonPoints[i], BaseRadius)
else
Points[i] := PolygonPoints[i];
end;
Points[Length(PolygonPoints)] := Points[0];}
if Abs(BaseRadius - Circle.radius) > 0.1 then
TempPt := MPoint(CenterPt, PolygonPoints[0], BaseRadius)
else
TempPt := PolygonPoints[0];
//CornerCount*7
// Îïðåäåëÿåì êîëâî óãëîâ, òàê ÷òîáû ðàçìåð ðåáåð áûë 20ñì
BaseCircleLen := 2 * pi * BaseRadius;
BaseCornerCount := Round(BaseCircleLen / (ObjProps.GetPropertyValueAsFloat(pnLength)*CADCoordKoeff ));
Points := GetPolylineFromArc(BaseCornerCount, CenterPt, BaseRadius, 360, @TempPt, nil);
SetLength(Points, Length(Points)+1);
Points[Length(Points)-1] := Points[0];
ArchNet := CreateArchRoomByWallInfo(nil, nil, GCadForm, ObjType, nil, Points, nil, nil, true, true);
F_ProjMan.SetComponPropValue(ArchNet, pnMaterialType, IntToStr(pmtRoofBase));
end;
end
else
begin
PolygonFigure := TPolyline.create(PolygonPoints, 1, ord(psSolid), clBlack, ord(bsClear), clBlack, 0, true, LayerHandle, mydsNormal, GCadForm.PCad);
GCadForm.PCad.AddCustomFigure(GCadForm.CurrentLayer, PolygonFigure, False);
end;
end
else if TFigure(GCadForm.PCad.Selection[0]) is TNet then
begin
Net := TNet(GCadForm.PCad.Selection[0]);
Path := Net.SelPath;
if Assigned(Path) and (Path.isArc) then
begin
PolygonPoints := GetPolylineFromArc(CornerCount+1, Path.ArcCenter, GetLineLength(Path.ArcCenter, Path.p1^), Path.ArcAng*180/pi, Path.p1, Path.p2);
Path.isArc := false;
Net.RefreshPaths;
SrcPt1 := Path.p1^;
SrcPt2 := Path.p2^;
NewPoints := TList.Create;
for i := 0 to Length(PolygonPoints) - 1 do
begin
pt := nil;
if Not EQDP(PolygonPoints[i], Path.p1^) and Not EQDP(PolygonPoints[i], Path.p2^) then
begin
//pt := Net.DivPath(Path, MPoint(Path.p1^, Path.p2^, GetLineLength(Path.p1^, Path.p2^)/2));
//pt := Net.DivPath(Path, PolygonPoints[i]);
TempPt := PolygonPoints[i];
PointToLineByAngle(SrcPt1,SrcPt2,TempPt);
//PolygonPoints[i] := TempPt;
pt := Net.DivPath(Path, TempPt);
end;
NewPoints.Add(pt);
end;
for i := 0 to NewPoints.Count - 1 do
begin
pt := NewPoints[i];
if pt <> nil then
pt^ := PolygonPoints[i];
end;
NewPoints.Free;
Net.RefreshPaths;
{NewPaths := TList.Create;
NewPaths.Add(Path);
for i := 0 to Length(PolygonPoints) - 1 do
begin
ptIdx := i;
// Åñëè èíâåðòèðîâàíà äóãà, òî ñìîòðèì ñ êîíöà
if Not Path.Inverted then
ptIdx := Length(PolygonPoints) - 1 - i;
if Not EQDP(PolygonPoints[ptIdx], Path.p1^) and Not EQDP(PolygonPoints[ptIdx], Path.p2^) then
begin
for j := 0 to NewPaths.Count - 1 do
begin
pt := Net.DivPath(TNetPath(NewPaths[j]), PolygonPoints[ptIdx]);
if pt <> nil then
begin
pt^ := PolygonPoints[ptIdx];
NewPaths.Add(Net.Paths[Net.Paths.Count - 1]);
Break; //// BREAK ////
end;
end;
//if Net.DivPath(Path, PolygonPoints[ptIdx]) = nil then
// Net.DivPath(TNetPath(Net.Paths[Net.Paths.Count - 1]), PolygonPoints[ptIdx]);
//PDoublePoint(Net.Points[Net.Points.Count - 1])^ := PolygonPoints[ptIdx];
end;
end;
Net.RefreshPaths;
NewPaths.Free; }
//PolygonFigure := TPolyline.create(PolygonPoints, 1, ord(psSolid), clBlack, ord(bsClear), clBlack, 0, true, LayerHandle, mydsNormal, GCadForm.PCad);
//GCadForm.PCad.AddCustomFigure(GCadForm.CurrentLayer, PolygonFigure, False);
end;
end;
// Tolik -- 13/01/2020
if Circle <> nil then
//
GCadForm.FRemFigures.Add(Circle);
RefreshCAD_T(GCadForm.PCad);
finally
GCadForm.EndSaveForUndo;
EndProgress;
end;
RefreshCAD(GCadForm.PCad);
end;
if ObjProps <> nil then
ObjProps.Free;
end;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'aConvertToPolygonExecute', E.Message);
end;
end;
procedure TFSCS_Main.aToolSCSArcDimLineExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
DropDownNextToolbar; // Tolik 10/02/2021
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
SetLayerForDraw;
GCadForm.PCad.SetTool(toFigure, 'TArcDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.FormDestroy(Sender: TObject);
begin
FreeAndNil(FCADsInProgress);
if Assigned(FInteractiveActions) then
FreeAndNil(FInteractiveActions);
end;
procedure TFSCS_Main.aPrintRectExecute(Sender: TObject);
var
i: integer;
begin
{$IF Defined (TRIAL_SCS) or Defined (FINAL_SCS)}
if Not IsVista then
begin
BuildFHash;
GetLic;
for i := 0 to 15 do
begin
if ((ord(bufflic[i mod 16]) - (Digest[i mod 16] XOR $3A))) > 0 then
Close;
end;
end;
{$IFEND}
{$IF Defined(TRIAL_SCS) and not Defined(PROCAT_SCS) and not Defined(SCS_PE)}
ShowMessage(cMain_Mes9);
{$ELSE}
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
GCadForm.PCad.SetTool(toFigure, 'TPrintRect');
tbSelectNoob.Down := false;
tbSelectExpert.Down := false;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
{$IFEND}
end;
procedure TFSCS_Main.aSegActionExecute(Sender: TObject);
var
Polyline: TPolyline;
MenuCmd: Integer;
Rad: Double;
begin
if (GPopupFigure <> nil) and (GCadForm.PCad.Figures.IndexOf(GPopupFigure) <> -1) and (GPopupFigure is TPolyline) then
if Not TAction(Sender).Checked or (Sender = aSegDimLine) then
begin
GCadForm.BeginSaveForUndo(uat_None, False, False);
try
Polyline := TPolyline(GPopupFigure);
MenuCmd := -1;
if Sender = aSegCurveAll then
Polyline.ConvertToBezier
else if Sender = aSegLineAll then
Polyline.ConvertToPolyLine
else if Sender = aSegClose then
Polyline.Closed := true
else if Sender = aSegOpen then
Polyline.Closed := false
else if Sender = aSegInsertKnot then
MenuCmd := 7
else if Sender = aSegDeleteKnot then
MenuCmd := 8
else if Sender = aSegLine then
MenuCmd := 9
else if Sender = aSegCurve then
MenuCmd := 10
else if Sender = aSegArc then
MenuCmd := 11
else if Sender = aSegInverArc then
MenuCmd := 12
else if Sender = aSegDimLine then
MenuCmd := 15
else if Sender = aSegDivTo3 then
MenuCmd := 14
else if Sender = aSegRoundCornerByArc then
begin
//MenuCmd := 16
Rad := 5;
//if InputDouble(aSegRoundCornerByArc.Caption, cMain_Mes130, Rad) then //if InputDouble('Round Corner By Arc','Ener Arc Corner',Rad) then begin
Rad := InputForm(F_ProjMan, aSegRoundCornerByArc.Caption, cMain_Mes130, Rad, dtFloat);
if Rad > 0 then
Polyline.RoundCornerByArc(Polyline.SelectedPoint, Rad);
end
else if Sender = aSegPenNone then
MenuCmd := 13
else if Sender = aSegPenZigZag then
MenuCmd := 17+0
else if Sender = aSegPenFlower then
MenuCmd := 17+1
else if Sender = aSegPenSinus then
MenuCmd := 17+2
else if Sender = aSegPenButtons then
MenuCmd := 17+3
else if Sender = aSegPenSquare then
MenuCmd := 17+4
else if Sender = aSegPenMiniSinus then
MenuCmd := 17+5;
if MenuCmd <> -1 then
begin
Polyline.MenuClicked(MenuCmd);
end;
finally
GCadForm.EndSaveForUndo;
end;
RefreshCAD_T(GCadForm.PCad);
end;
end;
procedure TFSCS_Main.aSaveProjectToPDFExecute(Sender: TObject);
var
SaveDialog: TSaveDialog;
i: Integer;
CAD: TF_CAD;
PDFDoc: TPDFDocument;
O, B: TPDFOutlineNode;
CADIdx: Integer;
SCSList: TSCSList;
ProjLists: TList;
SaveAll: Boolean;
Form: TForm; // Tolik 22/12/2020 --
begin
try
if MessageBox(FSCS_Main.Handle, cMain_Mes143, cMain_Mes143_c, MB_YESNO) = IDYes then
GExportUSeScale := True;
SaveDialog := TSaveDialog.Create(Self);
SaveDialog.Title := aSaveProjectToPDF.Caption;
SaveDialog.InitialDir := ExtractSaveDir;
SaveDialog.DefaultExt := 'pdf';
SaveDialog.Filter := cProgressExp_Msg9_1;
SaveDialog.Options := SaveDialog.Options + [ofOverwritePrompt];
SaveDialog.FileName := FileNameCorrect(F_ProjMan.GSCSBase.CurrProject.Name);
if SaveDialog.Execute then
begin
// Tolik 16/07/2019 -- äîáàâèë íåáîëüøóþ ôîðìî÷êó, ÷òîáû ìîæíî áûëî âûáðàòü, êàêèå èìåííî ëèñòû ïðîåêòà ñîõðàíÿòü, à òî
// âàëèò âñå ëèñòû, à íå âñåì ïîëüçîâàòåëÿì òàêîå íðàâèòñÿ (âîò, ïî ïðîñüáàì òðóäÿùèõñÿ ... è)
if not Assigned(F_SelLists) then
Application.CreateForm(TF_SelLists, F_SelLists);
F_SelLists.CheckList1.Clear;
for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count -1 do
begin
F_SelLists.CheckList1.Items.Add(F_ProjMan.GSCSBase.CurrProject.ProjectLists[i].GetNameForVisible(false));
F_SelLists.CheckList1.ItemState[i] := cbChecked;
end;
if F_SelLists.ShowModal = mrOk then
begin
i := F_SelLists.CheckList1.ItemsChecked;
if i > 0 then
begin
//
PDFDoc := CreatePDFObject(Self, F_ProjMan.GSCSBase.CurrProject.Name, SaveDialog.FileName, nil);
PDFDoc.Compression := PDF.ctNone;
PDFDoc.JPEGQuality := 100;
//PDFDoc.Resolution := 70;
if not GExportUSeScale then // Tolik 22/12/2020
PDFDoc.Resolution := 300
else
begin
if GCadForm <> nil then
begin
if GCadForm.PCad <> nil then
begin
Form := GCadForm.PCad.GetForm;
if Form <> nil then
PDFDoc.Resolution := Form.PixelsPerInch;
end;
end;
end;
PDFDoc.PageMode := pmUseOutlines;
PDFDoc.PageLayout := plSinglePage;
PdfDoc.EMFImageAsJpeg := True; // Tolik 22/12/2020
PDFDoc.Compression := ctFlate; // Tolik 22/12/2020
PDFDoc.BeginDoc;
//PDFDoc.Outlines.Add()
//B := PDFDoc.Outlines.Add(nil, F_ProjMan.GSCSBase.CurrProject.Name, TPDFGoToPageAction.Create);
{$IF Defined(SCS_PE)}
B := PDFDoc.Outlines.Add(nil, F_ProjMan.GSCSBase.CurrProject.Name, TPDFGoToPageAction.Create);
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
B := PDFDoc.Outlines.Add(nil, F_ProjMan.GSCSBase.CurrProject.Name, TPDFGoToPageAction.Create, RUSSIAN_CHARSET);
{$IFEND}
B.Expanded := True;
//B.Charset := DEFAULT_CHARSET;
//B.Charset := ANSI_CHARSET;
{$IF Defined(SCS_PE)}
B.Charset := DEFAULT_CHARSET;
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
B.Charset := RUSSIAN_CHARSET;
{$IFEND}
O := nil;
CADIdx := 0;
for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 do
begin
if F_SelLists.CheckList1.ItemChecked[i] then
begin
SCSList := F_ProjMan.GSCSBase.CurrProject.ProjectLists[i];
CAD := GetListByID(SCSList.CurrID);
if CAD <> nil then
begin
if CADIdx > 0 then
PDFDoc.NewPage;
SetCADPageParamsToPDF(CAD, PDFDoc, false);
//O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create);
{$IF Defined(SCS_PE)}
O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create);
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create, RUSSIAN_CHARSET);
{$IFEND}
TPDFGoToPageAction(O.Action).PageIndex := CADIdx;
TPDFGoToPageAction(O.Action).TopOffset := 0;
{$IF Defined(SCS_PE)}
O.Charset := DEFAULT_CHARSET;
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
O.Charset := RUSSIAN_CHARSET;
{$IFEND}
O.Expanded := True;
Inc(CADIdx);
end;
end;
end;
(*
for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 do
begin
SCSList := F_ProjMan.GSCSBase.CurrProject.ProjectLists[i];
CAD := GetListByID(SCSList.CurrID);
if CAD <> nil then
begin
if CADIdx > 0 then
PDFDoc.NewPage;
SetCADPageParamsToPDF(CAD, PDFDoc, false);
//O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create);
{$IF Defined(SCS_PE)}
O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create);
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
O := PDFDoc.Outlines.AddChild(B, SCSList.GetParams.Caption, TPDFGoToPageAction.Create, RUSSIAN_CHARSET);
{$IFEND}
TPDFGoToPageAction(O.Action).PageIndex := CADIdx;
TPDFGoToPageAction(O.Action).TopOffset := 0;
{$IF Defined(SCS_PE)}
O.Charset := DEFAULT_CHARSET;
{$ELSE}
//ÍÓÆÍÎ ÞÇÀÒÜ RUSSIAN_CHARSET
O.Charset := RUSSIAN_CHARSET;
{$IFEND}
O.Expanded := True;
Inc(CADIdx);
end;
end;
*)
PDFDoc.EndDoc;
PDFDoc.Free;
end;
end;
end;
SaveDialog.Free;
FreeAndNil(F_SelLists);
except
on E: Exception do AddExceptionToLogExt(ClassName, 'aSaveProjectToPDFExecute', E.Message);
end;
GExportUSeScale := False;
end;
procedure TFSCS_Main.aLinesToTracesExecute(Sender: TObject);
var
CmpPointDelta: Double;
Figure: TFigure;
Line: TLine;
PolyLine: TPolyline;
Seg: TPlSegment;
Trace, CTrace: TOrthoLine;
FigureList: TList;
NewTraces: TList;
TracesHeight: Double;
i, j, k, l: Integer;
Conn1, Conn2: TConnectorObject;
SnappedInfo: TStringList;
SnapInfo: String;
procedure CollectFigures(AFigures: TList);
var
i: integer;
begin
for i := 0 to AFigures.Count - 1 do
begin
Figure := TFigure(AFigures[i]);
if CheckFigureByClassName(Figure, TPolyline.ClassName) then
begin
// ïðîâåðÿåì ñåãìåíòû ïîëèëèíèè, ÷òîáû áûëè òèïà ëèí
// ----
FigureList.Add(Figure);
end
else if CheckFigureByClassName(Figure, TLine.ClassName) then
begin
if Not PointNear(TLine(Figure).ActualPoints[1], TLine(Figure).ActualPoints[2], CmpPointDelta) then
FigureList.Add(Figure);
end
else if CheckFigureByClassName(Figure, TRectangle.ClassName) then
FigureList.Add(Figure)
else if CheckFigureByClassName(Figure, TFigureGrp.ClassName) then
CollectFigures(TFigureGrp(Figure).InFigures);
end;
end;
procedure CreateTrace(p1, p2: TDoublePoint);
begin
if Not PointNear(p1, p2, CmpPointDelta) then
begin
Trace := CreateTraceByPoints(GCadForm.PCad, p1, p2);
RaiseLineOnHeight(Trace, TracesHeight, nil);
NewTraces.Add(Trace);
end;
end;
begin
try
F_RaiseHeight.cbApplyToAll.Visible := False; // Tolik 04/08/2021 --
GPopupFigure := nil;
CmpPointDelta := 1/5;
FigureList := TList.Create;
{for i := 0 to GCadForm.PCad.Selection.Count - 1 do
begin
Figure := TFigure(GCadForm.PCad.Selection[i]);
if CheckFigureByClassName(Figure, TPolyline.ClassName) then
begin
// ïðîâåðÿåì ñåãìåíòû ïîëèëèíèè, ÷òîáû áûëè òèïà ëèí
// ----
FigureList.Add(Figure);
end
else if CheckFigureByClassName(Figure, TLine.ClassName) then
begin
if Not EQDP(TLine(Figure).ActualPoints[1], TLine(Figure).ActualPoints[2]) then
FigureList.Add(Figure);
end
else if CheckFigureByClassName(Figure, TFigureGrp.ClassName) then
begin
end;
end;}
CollectFigures(GCadForm.PCad.Selection);
if FigureList.Count > 0 then
begin
if MessageQuastYN(cMain_Mes134) = IDYES then
begin
F_RaiseHeight.Caption := cMain_Mes32;
F_RaiseHeight.lbMessage.Caption := cMain_Mes33;
F_RaiseHeight.SetVal(GCadForm.FLineHeight);
if F_RaiseHeight.Showmodal = mrOK then
begin
NewTraces := TList.Create;
//GCadForm.SaveForUndo(uat_None, true, False);
GCadForm.ClearUndoList(false);
GCadForm.ClearRedoList(false);
GCadForm.PCad.ClearUndoList;
GCadForm.FCanSaveForUndo := false;
try
BeginProgress('', FigureList.Count * 2);
try
TracesHeight := StrToFloat_My(F_RaiseHeight.edRaiseHeight.Text);
TracesHeight := UOMToMetre(TracesHeight);
if TracesHeight > GCadForm.FRoomHeight then
TracesHeight := GCadForm.FRoomHeight;
// Create Traces
for i := 0 to FigureList.Count - 1 do
begin
Figure := TFigure(FigureList[i]);
//if Figure is TRectangle then
// EmptyProcedure;
for j := 1 to Figure.PointCount -1 do
CreateTrace(Figure.ActualPoints[j], Figure.ActualPoints[j+1]);
// Åñëè îáúåêò çàìêíóòûé, òî äîáàâëÿåì çàìûêàþùóþ òðàññó
if Figure.PointCount > 2 then
begin
if CheckFigureByClassName(Figure, TPolyline.ClassName) then
begin
if TPolyline(Figure).Closed then
CreateTrace(Figure.ActualPoints[1], Figure.ActualPoints[Figure.PointCount]);
end
else if CheckFigureByClassName(Figure, TRectangle.ClassName) then
CreateTrace(Figure.ActualPoints[1], Figure.ActualPoints[Figure.PointCount]);
end;
StepProgress;
end;
RefreshCAD(GCadForm.PCad);
// Connect Traces
SnappedInfo := CreateStringListSorted;
for i := 0 to NewTraces.Count - 1 do
begin
Trace := TOrthoLine(NewTraces[i]);
for j := 0 to NewTraces.Count - 1 do
begin
CTrace := TOrthoLine(NewTraces[j]);
if Trace <> CTrace then
begin
for k := 1 to 2 do
for l := 1 to 2 do
if PointNear(Trace.ActualPoints[k], CTrace.ActualPoints[l], CmpPointDelta) then
begin
Conn1 := Trace.ConnectorByNum(k);
Conn2 := CTrace.ConnectorByNum(l);
if Assigned(Conn1) and Assigned(Conn2) then
if Conn1 <> Conn2 then
begin
SnapInfo := IntToStr(Min(Conn1.ID, Conn2.ID))+'_'+IntToStr(Max(Conn1.ID, Conn2.ID));
if SnappedInfo.IndexOf(SnapInfo) = -1 then
begin
if Conn1.JoinedConnectorsList.IndexOf(Conn2) = -1 then
// Tolik -- 29/03/2018 --
//Conn1 := SnapConnectorToConnector(Conn1, Conn2)
CheckingSnapConnectorToConnector(Conn1, Conn2)
//
else
EmptyProcedure;
SnappedInfo.Add(SnapInfo);
end;
end;
end;
end;
end;
StepProgress;
end;
FreeAndNil(SnappedInfo);
RefreshCAD(GCadForm.PCad);
finally
EndProgress;
end;
// Óäàëèòü èñõîäíûå ëèíèè
if MessageQuastYN(cMain_Mes133) = IDYES then
begin
BeginProgress('', FigureList.Count * 2);
try
GCadForm.PCad.DeselectAll(0);
for i := 0 to FigureList.Count - 1 do
begin
//Line := TLine(FigureList[i]);
//Line.Select;
Figure := TFigure(FigureList[i]);
// Åñëè íå â ãðóïïå
if Figure.Parent = nil then
Figure.Select
else if CheckFigureByClassName(Figure.Parent, TFigureGrp.ClassName) then
if TFigureGrp(Figure.Parent).InFigures.IndexOf(Figure) <> -1 then
begin
//EmptyProcedure;
TFigureGrp(Figure.Parent).RemoveFromGrp(Figure);
Figure.Free;
FigureList[i] := nil;
end;
//TFigure(FigureList[i]).Select;
end;
// Ñîõðàíÿåì ñ ïîäëîæêîé äëÿ îòêàòà
//GCadForm.PCad.RecordUndo := True;
//GCadForm.PCad.RecordModifyUndo(nil);
//GCadForm.PCad.RecordUndo := False;
GCadForm.FCanSaveForUndo := false; // ÷òîáû íå âûçâàëñÿ SaveForProjectUndo íà PCadBeforeDelete
GCadForm.RemoveSelectedWithoutCheck;
RefreshCAD(GCadForm.PCad);
finally
EndProgress;
end;
end;
// Âûäåëÿåì íîâûå òðàññû
GCadForm.PCad.DeselectAll(0);
for i := 0 to NewTraces.Count - 1 do
begin
//TOrthoLine(NewTraces[i]).Select;
Trace := TOrthoLine(NewTraces[i]);
Trace.Select;
Trace.JoinConnector1.Select;
Trace.JoinConnector2.Select;
end;
RefreshCAD(GCadForm.PCad);
finally
GCadForm.FCanSaveForUndo := true;
NewTraces.Free;
end;
end;
end;
end
else
MessageInfo(cMain_Mes132);
FigureList.Free;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'aLinesToTracesExecute', E.Message);
end;
end;
procedure TFSCS_Main.aTurnObjectExecute(Sender: TObject);
var
Path: TNetPath;
Niche: TNetDoor;
begin
Path := NetGetSelPath;
if Path <> nil then
begin
Niche := NetDoorRotate(Path);
if Niche <> nil then
begin
if Niche.FComponID <> 0 then
begin
Path := Niche.GetPath;
if Path <> nil then
if Not Path.IsInnerNiche(Niche, true) then
begin
Sleep(100);
Application.ProcessMessages;
//ShowHintInCursorPos(cMain_Mes135, 2000);
ShowHintRz(cMain_Mes135, 4000, @GCadForm.FPopupScrPoint);
end;
//NetDoorShowOutNicheMessage(Path.Net, cMain_Mes135);
end;
end
else
begin
//22.05.2012 Èíà÷å ñåãìåíòó ìåíÿåì ñòîðîíó îòîáðàæàíèÿ ïåðïåíäèêóëÿðíûõ òî÷åê
NetPathPerpendSideRotate(Path);
end;
end;
end;
procedure TFSCS_Main.aLoadSubstrateFromPDFExecute(Sender: TObject);
var
Bmp: TBitmap;
Jpg: TJPEGImage;
FName: String;
bmpHandle: TFigHandle; // Tolik 09/08/2019 --
Fig: TFigure;
UserDimLine: boolean;//Tolik 12/08/2021 --
begin
if ActiveMDIChild <> nil then
begin
UserDimLine := False;
Bmp := CreateFPDFView.GetDocBitmap(cMain_Mes136);
if Bmp <> nil then
begin
try
FName := ExtractSCSTempDir + GetUniqueFileName('', enBmp);
Bmp.SaveToFile(FName);
Bmp.Free;
aSetSubstrateLayer.Execute;
// Tolik
//Fig := TFigure(GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false));
bmpHandle := GCadForm.PCad.InsertBitmap(1, 0, 0, FName, false, false);
if bmpHandle <> -1 then
begin
Fig := TFigure(bmpHandle);
if Fig <> nil then // Tolik 12/08/2021 --
begin
if not Fig.Deleted then // Tolik 12/08/2021 --
begin
Fig.width := 0; // Óáèðàåì ðàìêó
GCadForm.PCad.DeselectAll(0);
DeleteFile(FName);
AutoFitBitMap(TBMPObject(Fig));
UserDimLine := True; // Tolik 12/08/2021 --
end;
end;
end
else
begin
ShowMessage(cMain_Mes6);
end;
except
ShowMessage(cMain_Mes6);
end;
{
FSCS_Main.tbSelectExpert.Down := False;
FSCS_Main.tbSelectNoob.Down := False;
FSCS_Main.tbPanExpert.Down := True;
FSCS_Main.tbPanNoob.Down := True;
FSCS_Main.aToolPan.Execute;
}
RefreshCAD(GCadForm.PCad);
end;
GisUserDimLine := UserDimLine; // Tolik 12/08/2021 --
SetHScale; // Tolik 12/08/2021 --
end
else
MessageInfo(CActiveListNotExistMessage);
end;
procedure TFSCS_Main.InteractiveTest;
var
Pt: TPoint;
begin
{//ShowMessage('11');
Pt.X := tbNew.Left+5;
Pt.Y := tbNew.Top+tbNew.Height-5;
Pt := tbNew.Parent.ClientToScreen(Pt);
//Pt.X := Pt.X + tbNew.Width-5;
//Pt.Y := Pt.Y + tbNew.Height-5;
Sleep(100);
Application.ProcessMessages;
GOldOnActionExecute := Application.OnActionExecute;
GInteractiveAction := TBasicAction(tbNew.Action);
Application.OnActionExecute := InteractiveActionExecute;
//ShowHintInCursorPos(cMain_Mes135, 2000);
ShowHintES('Create a new project', 1000*300, @Pt);
//ShowHintRz('Create a new project', 0, @Pt); }
RunInteractive(1);
end;
procedure TFSCS_Main.InteractiveActionExecute(Action: TBasicAction; var Handled: Boolean);
begin
if FInteractiveActions.IndexOf(Action) <> -1 then
begin
if FInteractiveStepHitsCount > 0 then
begin
Dec(FInteractiveStepHitsCount);
if FInteractiveStepHitsCount = 0 then
begin
// Âîññòàíàâëèâàåì ñòàðûé îáðàáîò÷èê
Application.OnActionExecute := FOldOnActionExecute;
FInteractiveActions.Clear; //11.05.2013
StepInteractive;
end;
end;
end;
end;
procedure TFSCS_Main.FInteractiveMsg(var Msg: TMsg; var Handled: boolean);
begin
case Msg.message of
WM_LBUTTONUP:
begin
if Msg.hwnd = FInteractiveControlHandler then
begin
if FInteractiveStepHitsCount > 0 then
begin
Dec(FInteractiveStepHitsCount);
if FInteractiveStepHitsCount = 0 then
begin
if Assigned(FInteractiveMsgOrig) then
FInteractiveMsgOrig(Msg, Handled);
// Âîññòàíàâëèâàåì ñòàðûé îáðàáîò÷èê
Application.OnMessage := FInteractiveMsgOrig;
FInteractiveMsgOrig := nil;
FInteractiveControlHandler := 0; //11.05.2013
StepInteractive;
end;
end;
end;
end;
end;
if Assigned(FInteractiveMsgOrig) then
FInteractiveMsgOrig(Msg, Handled);
end;
procedure TFSCS_Main.RunInteractive(aScene: Integer);
var
Pt: TPoint;
NodeComp: TTreeNode;
begin
if FInteractiveActions = nil then
FInteractiveActions := TList.Create;
// Create forms - in Win7
//F_ProjMan.CreateFResourceReport;
aInteractiveStopExecute(nil);
FInteractiveStep := 1;
FInteractiveScene := aScene;
if FInteractiveScene = 1 then
FInteractiveStepCount := 10;
FInteractiveStepShowed := false;
tbCADToolsExpert.Left := 91;//Tolik 02/102/2022 --
tbInteractive.Visible := true;
//aInteractiveNextStep.Enabled := false;
aInteractiveStop.Enabled := true;
// ïîêàçàòü õèíò âîçëå êíîïîê óïðàâëåíèÿ èíòåðàêòèâíûì ðåæèìîì
Application.ProcessMessages;
// Pt := GetControlScreenPt(tbInteractiveNextStep, ctLeftMiddle);
// ShowHintES(cMain_Mes137, 1500, @Pt);
// Application.ProcessMessages;
// Sleep(2000);
//TimerInteractive.Interval := 1000;
//FInteractiveTimerExecution := false; //11.05.2013
TimerInteractive.Enabled := True;
NodeComp := F_NormBase.FindTreeNodeByDat(280410, [itComponCon]);
if NodeComp <> nil then
begin
PObjectData(NodeComp.Data).FontColor := clGreen;
FInteractiveWorkColorSet := True;
F_NormBase.Tree_Catalog.Repaint;
end;
NodeComp := F_NormBase.FindTreeNodeByDat(280414, [itComponCon]);
if NodeComp <> nil then
begin
PObjectData(NodeComp.Data).FontColor := clGreen;
FInteractiveRackColorSet := True;
F_NormBase.Tree_Catalog.Repaint;
end;
//if Not Assigned(FInteractiveMsgOrig) then
//begin
// FInteractiveMsgOrig := Application.OnMessage;
// Application.OnMessage := FInteractiveMsg;
//end;
end;
procedure TFSCS_Main.StepInteractive;
begin
Inc(FInteractiveStep);
FInteractiveStepShowed := false;
HideHintES;
TimerInteractive.Enabled := False;
TimerInteractive.Enabled := True;
Sleep(100);
Application.ProcessMessages;
end;
procedure TFSCS_Main.TimerInteractiveTimer(Sender: TObject);
var
Pt: TPoint;
HintMessage: String;
SCSComponent: TSCSComponent;
SCSComponents: TSCSComponents;
SprComponentType: TNBComponentType;
TestCnt: Integer;
Figure: TFigure;
SavedHandler: TNotifyEvent; //11.05.2013
begin
if FInteractiveStep > FInteractiveStepCount then
aInteractiveStopExecute(nil) //TTimer(Sender).Enabled := False
else
begin
SavedHandler := TTimer(Sender).OnTimer; //11.05.2013
TTimer(Sender).OnTimer := nil; //11.05.2013
try //11.05.2013
if Not IsVisibleHintES then
begin
if Not FInteractiveStepShowed then
begin
FInteractiveActions.Clear;
FInteractiveControlHandler := 0;
HintMessage := '';
FInteractiveStepHitsCount := 1;
if FInteractiveScene = 1 then
begin
case FInteractiveStep of
1: // Ñîçäàíèå ïðîåêòà
begin
//Pt := tbNew.
//Pt := tbNew.Parent.ClientToScreen(Pt);
Pt := GetControlScreenPt(tbNew, ctBottomMiddle);
FInteractiveActions.Add(tbNew.Action);
Pt.X := Pt.X+5;
Pt.Y := Pt.Y-5; //+tbNew.Height -5;
HintMessage := 'Create a new project';
end;
2: // Óñòàíîâêà ïàðàìåòðîâ ïðîåêòà
begin
if F_MasterNewList.Visible then
begin
FInteractiveControlHandler := F_MasterNewList.bOk.Handle;
Pt := GetControlScreenPt(F_MasterNewList.bOk);
HintMessage := 'Set basic project options and press OK. You may leave everything as is.';
end
else if F_MasterNewListLite.Visible then
begin
FInteractiveControlHandler := F_MasterNewListLite.bNext.Handle;
Pt := GetControlScreenPt(F_MasterNewListLite.bNext);
FInteractiveStepHitsCount := 4; // Êíîïêà "äàëåå" íàæèìàåòñÿ 4 ðàçà
HintMessage := 'Set basic project options and press Next/Done';
end;
end;
3: // Çàãðóçêà ïîäëîæêè
begin
if IsWindowEnabled(Handle) and Not GetIsActiveFormProgress then // Åñëè íåò ìîäàëüíîãî îêíà, äèàëîãà
if CheckIsOpenProject(false) then
if tbLoadSubstrate.Visible and tbLoadSubstrate.Enabled then
begin
//Pt := GetControlScreenPt(tbLoadSubstrate, ctBottomLeft);
//FInteractiveActions.Add(tbLoadSubstrate.Action);
//Pt.X := Pt.X+5;
//Pt.Y := Pt.Y-5; //+tbLoadSubstrate.Height -5;
//HintMessage := 'Load a floor plan in DWG or PDF';
Pt := Point(17, 0);
Pt := Self.ClientToScreen(Pt);
FInteractiveActions.Add(tbLoadSubstrate.Action);
FInteractiveActions.Add(aLoadSubstrate);
FInteractiveActions.Add(aOpenVectorDrawing);
FInteractiveActions.Add(aLoadSubstrateFromPDF);
//HintMessage := 'Load from main menu (File->Load) a floor plan in DWG (Vector drawing) or PDF';
HintMessage := 'Load a Floor plan in DWG. Click on the FILE menu, then LOAD and pick VECTOR DRAWING (DWG, DXF...). Load the file “SAMPLE FLOOR PLAN”';
end;
end;
4: // Ïîèñê Ðàá.Ìåñò â ÍÁ
begin
if IsWindowEnabled(Handle) then // Åñëè íåò ìîäàëüíîãî îêíà, äèàëîãà
begin
//Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctLeftMiddle);
Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctTopLeft);
Pt.X := Pt.X + 45;
Pt.Y := Pt.Y + 145;
//Pt.X := pt.x + trunc(F_NormBase.Tree_Catalog.Width/2);
//Pt.Y := pt.Y + trunc(F_NormBase.Tree_Catalog.Height/2);
//FInteractiveControlHandler := F_NormBase.Tree_Catalog.Handle;
//HintMessage := 'Find Jacks (work areas) in the Library - “Panduit” folder - “Examples - Work areas” folder';
//+snNextRow+cMain_Mes137_2;
//HintMessage := 'Find Jacks (work areas) in the Libraryþ. Folder “Panduit” - “SAMPLES” - “Work areas” - ' +
// 'locate “WA rj45+rj45 for T-45” and click over it';
HintMessage := 'Find jacks (work areas) in the Library. Folder “PANDUIT - SAMPLES - WORK AREAS”. Locate “WA rj45+rj45 for T-45” and click on it';
aInteractiveNextStep.Enabled := true;
FInteractiveActions.Add(aInteractiveNextStep);
end;
end;
5: // Óñòàíîâêà 3-õ ðàá.ìåñò
begin
if GCadForm <> nil then
begin
Pt := GetControlScreenPt(GCadForm, ctMiddle);
//HintMessage := 'Drag and drop 3 jacks on the drawing'; //+snNextRow+cMain_Mes137_2;
HintMessage := 'Drag and drop 3 set of jacks “WA rj45+rj45 for T-45” on the drawing';
aInteractiveNextStep.Enabled := true;
FInteractiveActions.Add(aInteractiveNextStep);
end;
end;
6: // Ïîèñê øêàôà â ÍÁ
begin
//HintMessage := 'Find a Rack "PANNET CABLE MANAGEMENT RACK" in the Library and drag and drop on the drawing'; //+snNextRow+cMain_Mes137_2;
HintMessage := 'Find a Rack “PANNET CABLE MANAGEMENT” in the “SAMPLES - RACKS AND CABINETS” folder and drag and drop on the drawing';
//Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctLeftMiddle);
Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctTopLeft);
Pt.X := Pt.X + 45;
Pt.Y := Pt.Y + 145;
aInteractiveNextStep.Enabled := true;
FInteractiveActions.Add(aInteractiveNextStep);
end;
7: // Øêàô êàê êîíå÷íûé îáúåêò
begin
SCSComponent := F_ProjMan.GSCSBase.CurrProject.ComponentReferences.GetComponentByType(ctsnCupboard);
if SCSComponent <> nil then
begin
Figure := GetFigureByID(GCadForm, SCSComponent.GetFirstParentCatalog.SCSID);
if Figure <> nil then
begin
Pt := GCadForm.PCad.PointToScreen(Figure.ActualPoints[1]);
//HintMessage := 'Set the Rack as a destination and all the cables from jacks will be layed out down to this Rack. Right-clicking on the Rack and check “As terminal object” in the context menu. The Rack should hightlight red.';
HintMessage := 'Set the Rack as a destination and all the cables from jacks will be layed out down to this Rack. Right-clicking on the Rack and check “Set as destination for cables” in the context menu. The Rack should hightlight red.';
FInteractiveActions.Add(aServerAsDefault);
end;
end;
end;
8: // Ïðîêëàäêà òðàññ
begin
//HintMessage := 'Lay out routes. Click this button and connect every jack with the Rack. Click mouse over jacks and right-click it on the Rack to finish the route';
//+snNextRow+cMain_Mes137_2;
//HintMessage := 'Lay out routes. Click the button <Route> and connect every jack with the Rack.' +
// ' When moving route over jacks click the mouse and at the end right-click on the Rack to finish the route';
HintMessage := 'Lay out routes. Click this button and connect every jack with the Rack. Click mouse over every jacks. Make sure the jack is highlighted when mouse is over, otherwise the connection will fail. ' +
'Then ñlick over the Rack and finally right-click to finish the route';
if tbCADToolsExpert.Visible then
Pt := GetControlScreenPt(tbToolOrtholineExtExpert, ctBottomMiddle)
else
Pt := GetControlScreenPt(tbToolOrtholineExtNoob, ctBottomMiddle);
Pt.y := Pt.y - 10;
aInteractiveNextStep.Enabled := true;
//FInteractiveActions.Add(aToolOrthoLine);
FInteractiveActions.Add(aInteractiveNextStep);
end;
9: // Ïðîêëàäêà êàáåëÿ
begin
if GCadForm.PCad.ToolInfo = 'TSelected' then // Åñëè òðàññû óæå ïðîëîæèëè
begin
//Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctLeftMiddle);
Pt := GetControlScreenPt(F_NormBase.Tree_Catalog, ctTopLeft);
Pt.X := Pt.X + 45;
Pt.Y := Pt.Y + 145;
//HintMessage := 'Now that we have layed out routes, please find a cable in the Library to lay out between jacks and a Rack. Right-click on the cable and execute Autoroute';
HintMessage := 'Now that we have layed out routes, please find a cable “UTP CAT5E PVC CABLE” in ' +
'the “SAMPLES-CABLES” folder to lay out it between jacks and the Rack. ' +
'Right-click on the cable and click on the AUTOROUTE command. After that confirm OK in the following windows.';
//FInteractiveActions.Add(F_NormBase.Act_AutoTraceCable);
//aInteractiveNextStep.Enabled := true;
FInteractiveActions.Add(aInteractiveNextStep);
end;
end;
10: // Ïðîñìîòð îò÷åòà
begin
Pt := GetControlScreenPt(tbRepWizard, ctBottomMiddle);
Pt.y := Pt.y - 10;
Pt.x := Pt.x - 10;
HintMessage := 'Check out the deliverables in Reports section. Open Specification first and see the resources calculated for the project';
FInteractiveActions.Add(F_ProjMan.CreateFResourceReport.Act_ShowWizardReport);
end;
end;
end;
if (FInteractiveActions.Count > 0) or (FInteractiveControlHandler <> 0) then
begin
if FInteractiveActions.Count > 0 then
begin
FOldOnActionExecute := Application.OnActionExecute;
Application.OnActionExecute := InteractiveActionExecute;
end
else if FInteractiveControlHandler <> 0 then
begin
FInteractiveMsgOrig := Application.OnMessage;
Application.OnMessage := FInteractiveMsg;
end;
FInteractiveStepShowed := true;
//Sleep(100);
//Application.ProcessMessages;
ShowHintES(HintMessage, 0, @Pt);
end;
end;
end
else
// Åñëè Õèíò âèñèò - îïðåäåëÿåì ìîæíî ëè ïðååõîäèòü ê ñëåäóþùåìó øàãó
begin
if FInteractiveScene = 1 then
begin
case FInteractiveStep of
5: // Óñòàíîâêà 3-õ ðàá.ìåñò
begin
if IsWindowEnabled(Handle) then
begin
if GCadForm <> nil then
if Not GCadForm.PCad.IsDragging then
begin
SprComponentType := F_ProjMan.GetSpravochnik.GetComponentTypeObjBySysName(ctsnWorkPlace);
if SprComponentType <> nil then
begin
SCSComponents := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentsByType(SprComponentType.ComponentType.GUID, true);
TestCnt := SCSComponents.Count;
FreeAndNil(SCSComponents);
if TestCnt = 3 then
StepInteractive; // Âàæíî äî ýòîãî ñäåëàòü FreeAndNil(SCSComponents);, òàê êàê â StepInteractive åñòü Application.ProcessMessages
end;
end;
end;
end;
8: // Ïðîêëàäêà òðàññ
if GCadForm.PCad.ToolInfo = 'TSelected' then
begin
// Ïðîâîäèì ñèìóëÿöèþ àâòîñîçäàíèÿ òðàññ, äëÿ ïðîâåðêè åñòü ëè ÷òî ñ ÷åì ñîåäèíÿòü
TestCnt := AutoCreateTraces(true, true, true);
if TestCnt = 0 then
StepInteractive;
end;
end;
end;
end;
finally //11.05.2013
TTimer(Sender).OnTimer := SavedHandler; //11.05.2013
end; //11.05.2013
end;
end;
procedure TFSCS_Main.aInteractiveNextStepExecute(Sender: TObject);
begin
aInteractiveNextStep.Enabled := false;
end;
procedure TFSCS_Main.aInteractiveStopExecute(Sender: TObject);
begin
TimerInteractive.Enabled := false;
FInteractiveStep := 0;
if FInteractiveStepShowed then
begin
// Åñëè íå âîñòàíîâëåíû, òî âîññòàíîâèòü ïðåæíèå îáðàáîò÷èêè - íà ñëó÷àé åñëè ïðåäûäóùèå øàãè âûïîëíåíû íå âñå è çàïóùåíî ïîâòîðíî
if Assigned(FInteractiveMsgOrig) then
begin
Application.OnMessage := FInteractiveMsgOrig;
FInteractiveMsgOrig := nil;
end;
if Assigned(FOldOnActionExecute) then
begin
Application.OnActionExecute := FOldOnActionExecute;
FOldOnActionExecute := nil;
end;
end;
tbInteractive.Visible := false;
tbCADToolsExpert.Left := 11; // Tolik 02/12/2022 --
aInteractiveNextStep.Enabled := false;
aInteractiveStop.Enabled := false;
if IsVisibleHintES then
HideHintES;
end;
procedure TFSCS_Main.pnHintBarHotSpotClick(Sender: TObject);
begin
//pnHintBarPaint(Self);
pnHintBar.Height := pnHintBar.Height + 1;
pnHintBar.Height := pnHintBar.Height - 1;
end;
procedure TFSCS_Main.pnHintBarPaint(Sender: TObject);
var
Bnd: TRect;
begin
Bnd := pnHintBar.BoundsRect;
Bnd.Right := Bnd.Right - 10;
Bnd.Bottom := Bnd.Bottom - 10;
//DrawDropShadow( pnHintBar.Canvas, Bnd, 6);
end;
procedure TFSCS_Main.pmListPopup(Sender: TObject);
var i, j: Integer;
HasDoors, HasWindows: Boolean;
procedure InsertActToPopupMenu(APopupMenu: TPopupMenu; AIndex: Integer; AAction: TAction);
var pmnuItem: TMenuItem;
begin
if Not Assigned(APopupMenu) then
Exit; ///// EXIT /////
pmnuItem := TMenuItem.Create(APopupMenu);
pmnuItem.Action := AAction;
if Not Assigned(AAction) then
pmnuItem.Caption := '-';
APopupMenu.Items.Insert(AIndex, pmnuItem);
if Assigned(AAction) then
begin
APopupMenu.Items[AIndex].Caption := AAction.Caption;
APopupMenu.Items[AIndex].ImageIndex := AAction.ImageIndex;
end;
end;
begin
//F_ProjMan.Act_CopyCurrList.Visible := true;
//F_ProjMan.Act_CopyCurrListWithoutCompons.Visible := true;
//Tolik 16/06/2021 -- ýòî ïðèâîäèò ê ìåðöàíèþ ìåíþ íà êàäå ... ïåðåíåñåíî â TF_CAD.FormCADPopupMenu
{
if PmList.Items[1].Action <> F_ProjMan.Act_CopyCurrListWithoutCompons then
begin
InsertActToPopupMenu(PmList, 1, F_ProjMan.Act_CopyCurrList);
InsertActToPopupMenu(PmList, 1, F_ProjMan.Act_CopyCurrListWithoutCompons);
PmList.Items[1].ImageIndex := 209;
PmList.Items[2].ImageIndex := 209;
end;
}
FSCS_Main.aSetAllListDoorsHeight.Visible := False;
FSCS_Main.aSetAllListWndHeight.Visible := False;
FSCS_Main.aSetAllListDoorsPlacementHeight.Visible := False;
FSCS_Main.aSetAllListWndPlacement.Visible := False;
//Tolik 06/09/218 -- äëÿ àðõèòåêòóðíîãî ïðîåêòèðîâàíèÿ
{$if Defined (ES_GRAPH_SC)} // -- ãðàôìîäóëü
{$else} // ÑÊÑ
if GCadForm.CurrentLayer = 8 then
begin
if GCadForm.FActiveNet <> nil then
begin
HasDoors := False;
HasWindows :=False;
for i := 0 to GCadForm.FActiveNet.Paths.Count - 1 do
begin
for j := 0 to TNetPath(GCadForm.FActiveNet.Paths[i]).Doors.Count - 1 do
begin
if TNetDoor(TNetPath(GCadForm.FActiveNet.Paths[i]).Doors[j]).DoorObjType = dotDoor then
HasDoors := True
else
if TNetDoor(TNetPath(GCadForm.FActiveNet.Paths[i]).Doors[j]).DoorObjType = dotWindow then
HasWindows := True
end;
end;
if HasDoors then
begin
FSCS_Main.aSetAllListDoorsHeight.Visible := True;
FSCS_Main.aSetAllListDoorsPlacementHeight.Visible := True;
end;
if HasWindows then
begin
FSCS_Main.aSetAllListWndHeight.Visible := True;
FSCS_Main.aSetAllListWndPlacement.Visible := True;
end;
end;
end;
{$ifEnd}
//
end;
procedure TFSCS_Main.aExportDWGExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
SaveDXFFile(GCadForm.PCad, cExport_Mes2, cImport_Mes12_2, '*.dwg');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aSaveRevisionExecute(Sender: TObject);
begin
F_ProjMan.SaveProjectRevision;
end;
procedure TFSCS_Main.aViewRevsExecute(Sender: TObject);
begin
F_ProjMan.CreateFProjectRev.Execute;
end;
procedure TFSCS_Main.aProjectScheduleExecute(Sender: TObject);
begin
if Assigned(F_ProjMan.GSCSBase) and Assigned(F_ProjMan.GSCSBase.CurrProject) and F_ProjMan.GSCSBase.CurrProject.Active then
F_ProjMan.CreateFNormsComplete.Execute(F_ProjMan.GSCSBase.CurrProject, true, true, true)
else
F_ProjMan.CreateFNormsComplete.Execute(F_ProjMan.GetActualSelectedCatalog, true, true, true);
end;
procedure TFSCS_Main.aBillWorkExecute(Sender: TObject);
begin
CheckCloseReportForm;//Tolik 15/02/2022 --
F_ProjMan.CreateFNormsGroups.Execute(F_ProjMan.GetActualSelectedCatalog, true, true, true);
end;
procedure TFSCS_Main.aShowCableRuleClick(Sender: TObject);
begin
F_ProjMan.Act_CablesNoHitToCanalsExecute(Sender);
end;
procedure TFSCS_Main.aAutoDivExecute(Sender: TObject);
begin
ApplySectionSideForTraces(GCADForm);
end;
procedure TFSCS_Main.N70Click(Sender: TObject);
var WAReport : TF_ResourceReport;
ReportForm : TForm;
SCSCatalog : TSCSCatalog;
begin
// Åñëè ñòîèì íà ïðîåêòå èëè íà ëèñòå,
SCSCatalog := nil;
SCSCatalog := F_ProjMan.GetActualSelectedCatalog;
if ( (SCSCatalog.ItemType <> itNone) and (SCSCatalog.ItemType <> itProjMan) and (SCSCatalog.ItemType <> itDir) ) then
begin
if (SCSCatalog <> nil) then // and ((SCSCatalog.ItemType = itList) or (SCSCatalog.ItemType = itProject)) then
begin
//òî ìîæåì ïîêàçàòü îò÷åò
Application.CreateForm(TF_ChooseComponTypesForReport,F_ChooseComponTypesForReport);
if F_ChooseComponTypesForReport.Execute then;
end;
end;
end;
// Tolik 25/03/2021 -- ïîäêëþ÷èòü êàáåëåì -- äëÿ ýëåêòðèêè
procedure TFSCS_Main.Act_ConnectByCableAllExecute(Sender: TObject);
begin
GDropPcadTool := True;
GConnectEndPoints := False;
Act_ConnectByCable.Execute;
end;
procedure TFSCS_Main.Act_ConnectByCableExecute(Sender: TObject);
var i: integer;
SavedEndpoint: TFigure;
SelList: TList;
isEndPointShield, EndPointSameList, SavedFlag: Boolean;
TraceList: TList;
WasEndPoint: Boolean;
WasSaveForUndo: Boolean;
function GetAllTraceInCadToEndPoint(aServer, aWS: TConnectorObject): TList;
var
RaiserThisList: TConnectorObject;
RaiserOtherList: TConnectorObject;
CurrentWS: TConnectorObject;
CurrentServer: TConnectorObject;
AllTrace: TList;
i, j, k: integer;
CurGCadForm: TF_CAD;
isTrace: boolean;
RaiseType: TConnRaiseType;
ListOfLists: TIntList;
ListOfRaises: TList;
CurrentCAD: TF_CAD;
ConnFrom: TConnectorObject;
ConnTo: TConnectorObject;
PrevConn: TConnectorObject;
PrevCAD: TF_CAD;
ListOfAllTraces: TList;
EndPoint: TConnectorObject;
TracesLength: Double;
begin
ListOfRaises := Nil;
ListOfLists := nil;
Result := TList.Create;
try
CurrentServer := aServer;
CurrentWS := aWS;
BeginProgress('', -1, False);
//F_Progress.BringToFront;
AllTrace := nil;
ListOfAllTraces := nil;
TracesLength := 0;
GCadForm.FDeselectUpDown := True;
// â ïðåäåëàõ îäíîãî ëèñòà
if GListWithEndPoint = GCadForm then
begin
if ((GetKeyState(VK_SHIFT) and 128) = 128) then
ListOfAllTraces := GetAllTraceInCADByMarked_New1(CurrentServer, CurrentWS)
else
ListOfAllTraces := GetAllTraceInCADByMarked(CurrentServer, CurrentWS);
if ListOfAllTraces.Count > 0 then
begin
//if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
GCadForm.FTracingListIndex := 0;
//Tolik 09/10/2017 --
// AllTrace := ListOfAllTraces[GCadForm.FTracingListIndex];
//AllTrace := TList.Create;
// ïðîâåðî÷êà -- íà âñÿêèé --
//if ((GCadForm.FTracingListIndex < ListOfAllTraces.Count) and
// (TList(ListOfAllTraces[GCadForm.FTracingListIndex]) <> nil)) then
// AllTrace.Assign(TList(ListOfAllTraces[GCadForm.FTracingListIndex]), laCopy);
//
//FreeAndNil(AllTrace);
Result.Assign(ListOfAllTraces[0], laCopy);
end
else
// Tolik -- 08/02/2017 --
// GCadForm.FTracingList := TList.Create;
begin
if GCadForm.FTracingList = nil then
GCadForm.FTracingList := TList.Create
else
GCadForm.FTracingList.Clear;
end;
//
end
else
if GListWithEndPoint <> nil then
begin
RaiseType := crt_OnFloor; //#From Oleg# //14.09.2010
// äðóãîé ëèñò ñ ÊÎ
if GetUpperList(GListWithEndPoint.FCADListID, GCadForm.FCADListID) = GCadForm.FCADListID then
RaiseType := crt_BetweenFloorDown;
if GetUpperList(GListWithEndPoint.FCADListID, GCadForm.FCADListID) = GListWithEndPoint.FCADListID then
RaiseType := crt_BetweenFloorUp;
ListOfLists := GetSortedListIDsByBounds(GCadForm.FCADListID, GListWithEndPoint.FCADListID);
if ListOfLists.Count >= 2 then
begin
ListOfRaises := GetSortedListOfRaisesFromCurr(ListOfLists, RaiseType, CurrentWS, CurrentServer);
if CheckCanTracingBetweenFloor(ListOfLists, ListOfRaises) then
begin
PrevCAD := nil;
PrevConn := nil;
for i := 0 to ListOfLists.Count - 1 do
begin
CurrentCAD := GetListByID(ListOfLists[i]);
// âçÿòü íàéäåííûé ì-ý ñ-ï
if i < ListOfLists.Count - 1 then
begin
ConnTo := TConnectorObject(ListOfRaises[i]);
end
else
begin
ConnTo := CurrentServer;
end;
CurGCadForm := GCadForm;
GCadForm := CurrentCAD;
if i = 0 then
begin
ConnFrom := CurrentWS;
end
else
begin
ConnFrom := TConnectorObject(GetFigureByID(GCadForm, PrevConn.FID_ConnToPassage));
end;
//ListOfAllTraces := GetAllTraceInCADByMarked(ConnTo, ConnFrom{ConnFrom, ConnTo});
ListOfAllTraces := GetAllTraceInCADByMarked(ConnFrom, ConnTo);
if ListOfAllTraces.Count > 0 then
begin
//if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
// GCadForm.FTracingListIndex := 0;
AllTrace := TList.Create;
// ïðîâåðî÷êà -- íà âñÿêèé --
//if ((GCadForm.FTracingListIndex < ListOfAllTraces.Count) and
// (TList(ListOfAllTraces[GCadForm.FTracingListIndex]) <> nil)) then
AllTrace.Assign(TList(ListOfAllTraces[0]), laCopy);
if AllTrace.Count > 0 then
begin
GCadForm := CurGCadForm;
PrevCAD := CurrentCAD;
PrevConn := ConnTo;
for j := 0 to AllTrace.Count - 1 do
Result.Add(AllTrace[j]);
end;
FreeAndNil(AllTrace);
//Result.Assign(TList(ListOfAllTraces[0]), laCopy);
end
else
begin
if GCadForm.FTracingList = nil then
GCadForm.FTracingList := TList.Create
else
GCadForm.FTracingList.Clear;
end;
end;
end;
end;
if ListOfLists <> nil then
FreeAndNil(ListOfLists);
if ListOfRaises <> nil then
FreeAndNil(ListOfRaises);
end;
if ListOfAllTraces <> nil then
begin
for i := 0 to ListOfAllTraces.Count - 1 do
begin
if TList(ListOfAllTraces[i]) <> nil then
TList(ListOfAllTraces[i]).Free;
end;
FreeAndNil(ListOfAllTraces);
end;
EndProgress;
RefreshCAD(GCadForm.PCad);
GCadForm.FDeselectUpDown := false;
except
on E: Exception do addExceptionToLogEx('USCS_Main.aSelectTracetoServerExecute', E.Message);
end;
if Result.Count = 0 then
FreeAndNil(Result);
end;
function CheckCanConnectByCable: Boolean;
var i: integer;
currFigure: TFigure;
figCatalog: TSCSCatalog;
FigCompon: TSCSComponent;
begin
Result := False;
if GEndPoint = nil then
begin
for i := 0 to SelList.Count - 1 do
begin
currFigure := TFigure(SelList[i]);
if currFigure is TConnectorObject then
begin
if TConnectorObject(currFigure).ConnectorType = ct_NB then
begin
figCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(currFigure.ID);
if FigCatalog <> nil then
begin
figCompon := FigCatalog.GetFirstComponent;
if FigCompon <> nil then
begin
if FigCompon.IDNetType = 3 then
if FigCompon.ComponentType.SysName = ctsnShield then
begin
Result := True;
// *UNDO*
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
WasSaveForUndo := True;
end;
SetFigureAsEndObject(GCadForm, currFigure);
break;
end;
end;
end;
end;
end;
end;
end;
//No shield Selected
if not Result then
Result := EndPointSameList;
if not Result then
begin
for i := 0 to SelList.Count - 1 do
begin
TraceList := GetAllTraceInCadToEndPoint(TConnectorObject(GEndPoint), TConnectorObject(TFigure(SelList[i])));
if TraceList <> nil then
begin
Result := True;
TraceList.Free;
break;
end;
end;
end;
end;
function checkEndPointShield: Boolean;
var SCSCatalog: TSCSCatalog;
SCSCompon: TSCSComponent;
begin
Result := False;
if GEndPoint <> nil then
begin
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(GEndPoint.ID);
if SCSCatalog <> nil then
begin
SCSCompon := SCSCatalog.GetFirstComponent;
if SCSCompon <> nil then
if SCSCompon.ComponentType.SysName = ctsnSHIELD then
if SCSCompon.IDNetType = 3 then
Result := True;
end;
end;
end;
function CheckEndPointSameList: boolean;
begin
Result := False;
if GEndPoint <> nil then
begin
if GEndPoint.Owner <> nil then
if GEndPoint.Owner.Owner <> nil then
if TF_Cad(GEndPoint.Owner.Owner).FCADListID = GCadForm.FCADListID then
Result := True;
end;
end;
Procedure TraceByCable;
var Point: TPoint;
begin
aToolOrthoLine.Execute;
//GetCursorPos(Point);
//GCadForm.PCad.SimulateDown(GPopupPoint.X, GPopupPoint.Y);
//GCadForm.PCad.SimulateUp(GPopupPoint.X, GPopupPoint.Y);
GCadForm.PCad.SimulateDown(GPopupFigure.ap1.X, GPopupFigure.ap1.Y);
GCadForm.PCad.SimulateUp(GPopupFigure.ap1.X, GPopupFigure.ap1.Y);
GFigureTraceTo := nil;
{GPrevFigureSnap := nil;
GFigureSnap := GPopupFigure;}
if GSnapFiguresList.Count > 0 then
begin
if GSnapFiguresList[0] = nil then
GSnapFiguresList[0] := GPopupFigure;
end;
GPrevFigureSnap := GPopupFigure;
GFigureSnap := nil;
//GPrevFigureSnap := GPopupFigure;
//GFigureSnap := GPopupFigure;
//GPrevFigureSnap := TFigure(GCadForm.PCad.Selection[0]);
{GPrevFigureSnap := nil;
// GFigureSnap := TFigure(SelList[0]);//TFigure(GCadForm.PCad.Selection[0]);
GFigureSnap := GPopupFigure;}
//GPrevFigureSnap := GPopupFigure;
//GFigureSnap := nil;
//GPrevFigureSnap := nil;
//GFigureSnap := GPopupFigure;
end;
begin
WasEndPoint := GEndPoint <> nil;
WasSaveForUndo := False;
GFigureTraceTo := nil;
GFigureSnap := nil;
GPrevFigureSnap := nil;
GCadForm.cbManualCableTracingMode.Down := True;
GAutoAddCableAfterDragDrop := true;
if GCadForm.PCad.Selection.Count > 1 then
begin
SelList := TList.Create;
isEndPointShield := checkEndPointShield;
EndPointSameList := False;
//if isEndPointShield then
EndPointSameList := CheckEndPointSameList;
for i := 0 to GCadForm.FSCSFigures.Count - 1 do
begin
if TFigure(GCadForm.FSCSFigures[i]).Selected then
if TFigure(GCadForm.FSCSFigures[i]) is TConnectorObject then
if TConnectorObject(GCadForm.FSCSFigures[i]).ConnectorType = ct_NB then
if SelList.IndexOf(TFigure(GCadForm.FSCSFigures[i])) = -1 then
SelList.Add(TFigure(GCadForm.FSCSFigures[i]));
end;
if EndPointSameList then
GEndPoint.Select;
if GCadForm.PCad.Selection.IndexOf(GEndPoint) = -1 then
GCadForm.PCad.Selection.Add(GEndPoint);
if CheckCanConnectByCable then
begin
Act_ConnectSelectedPoints.Execute;
for i := 0 to SelList.Count - 1 do
begin
TFigure(SelList[i]).Select;
if GCadForm.PCad.Selection.IndexOf(TFigure(SelList[i])) = -1 then
GCadForm.PCad.Selection.Add(TFigure(SelList[i]));
end;
SavedEndpoint := GEndPoint;
SavedFlag := GCallAutoTraceElectricMaster;
GCallAutoTraceElectricMaster := True;
try
TF_MAIN(F_NormBase).Act_AutoTraceByRayModeExecute(nil);
except
on E: Exception do;
end;
{if not GCallAutoTraceElectricMaster then
GCadForm.SCSUndoNormalList;}
GCallAutoTraceElectricMaster := SavedFlag;
if GEndPoint <> nil then
begin
if not WasEndPoint then
begin
TConnectorObject(GEndPoint).AsEndPoint := False;
GEndPoint := Nil;
GListWithEndPoint := Nil;
end;
end;
GCadForm.PCad.Refresh;
end
else
TraceByCable;
end
else // IF Only one Selected - Draw By Cable
TraceByCable;
if WasSaveForUndo then
GCadForm.FCanSaveForUndo := True;
GCadForm.PCad.DeselectAll(2);
end;
procedure TFSCS_Main.Act_ConnectByCableOnEndsExecute(Sender: TObject);
begin
GConnectEndPoints := True;
GDropPcadTool := True;
Act_ConnectByCable.Execute;
end;
//Tolik
// ñîåäèíèòü âûáðàííûå òî÷å÷íûå òðàññàìè
Procedure TFSCS_Main.Act_ConnectSelectedPointsExecute(Sender: TObject);
Var
i,j,k, currIndex: Integer;
FiguresList, FiguresPassedList, ThisPointFigures, BeforePointFigures: TList;
ListCad: TF_CAD;
ConnectedLine: TSCSComponent;
Figure1, Figure2, currFigure: Tfigure;
LineLength: double;
x,y,z : Double;
Trace: TOrtholine;
TraceList: TList;
DirectionUP: boolean;
ThisPointFiguresPassed: TList;
currLength: double;
isVerticalCreated: Boolean;
//Tolik -- 27/02/2017 --
UserQuotaReached_Message: String;
ObjCounter : Integer;
OldCadFigCounter: Integer;
GCadFlag: Boolean;
ConnectFigure1, ConnectFigure2: TConnectorObject;
//
Procedure FindAllNearestFigures(Figure: TFigure);
Var
i: Integer;
WasChanged: Boolean;
currFigure, tmpFigure: TConnectorObject;
Begin
ThisPointFigures.Clear;
//ôîðìèðóåì ñïèñîê
for i := 0 to FiguresList.Count - 1 do
begin
if TConnectorObject(Figure).ID <> TConnectorObject(FiguresList[i]).ID then
begin
if ( ((TConnectorObject(Figure).ActualPoints[1].x = TConnectorObject(FiguresList[i]).ActualPoints[1].x) and
(TConnectorObject(Figure).ActualPoints[1].y = TConnectorObject(FiguresList[i]).ActualPoints[1].y))
or
((abs(TConnectorObject(Figure).ActualPoints[1].x - TConnectorObject(FiguresList[i]).ActualPoints[1].x) < 3)
and
(abs(TConnectorObject(Figure).ActualPoints[1].y - TConnectorObject(FiguresList[i]).ActualPoints[1].y) < 3))
) then
ThisPointFigures.Add(FiguresList[i]);
end;
end;
ThisPointFigures.Add(Figure);
if ThisPointFigures.Count = 1 then
ThisPointFigures.Clear;
if ThisPointFigures.Count > 1 then
begin
// ñîðòèðóåì ïî âûñîòå ðàçìåùåíèÿ
WasChanged := true;
while WasChanged do
begin
WasChanged := false;
for i := 0 to ThisPointFigures.Count - 2 do
begin
if TConnectorObject(ThisPointFigures[i]).ActualZOrder[1] > TConnectorObject(ThisPointFigures[i+1]).ActualZOrder[1] then
begin
WasChanged := true;
currFigure := TConnectorObject(ThisPointFigures[i]);
ThisPointFigures[i] := ThisPointFigures[i+1];
ThisPointFigures[i+1] := currFigure;
end;
end;
end;
end;
End;
Procedure SortFigures(Figure: Tfigure);
Var currFigure: TFigure;
currIndex, i: integer;
WasChange: Boolean;
currLength: double;
Begin
WasChange := true;
while WasChange do
begin
WasChange := false;
currFigure := ThisPointFigures[0];
currLength := GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(currFigure).ActualPoints[1]);
// âåðõíèå
for i := 1 to ThisPointFigures.Count - 1 do
begin
if TConnectorObject(ThisPointFigures[i]).ActualZOrder[1] <> TConnectorObject(currFigure).ActualZOrder[1] then
break
else
begin
if currLength < GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(ThisPointFigures[i]).ActualPoints[1]) then
begin
WasChange := true;
currLength := GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(ThisPointFigures[i]).ActualPoints[1]);
currFigure := ThisPointFigures[i - 1];
ThisPointFigures[i - 1] := ThisPointFigures[i];
ThisPointFigures[i] := currFigure;
end;
end;
end;
end;
// íèæíèå
while WasChange do
begin
WasChange := false;
currFigure := ThisPointFigures[ThisPointFigures.Count - 1];
currLength := GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(currFigure).ActualPoints[1]);
for i := (ThisPointFigures.Count - 2) downto 0 do
begin
if TConnectorObject(ThisPointFigures[i]).ActualZOrder[1] <> TConnectorObject(currFigure).ActualZOrder[1] then
break
else
begin
if currLength < GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(ThisPointFigures[i]).ActualPoints[1]) then
begin
WasChange := true;
currLength := GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(ThisPointFigures[i]).ActualPoints[1]);
currFigure := ThisPointFigures[i + 1];
ThisPointFigures[i + 1] := ThisPointFigures[i];
ThisPointFigures[i] := currFigure;
end;
end;
end;
end;
End;
// âûñòàâëÿåò ôèãóðó â íà÷àëî èëè â êîíåö ñïèñêà
Procedure PointToZeroPosition(Figure: TFigure; var FigList: Tlist);
Var
currIndex: Integer;
Begin
if FigList.Count > 2 then
begin
if FigList.IndexOf(Figure) <> -1 then
begin
currIndex := FigList.IndexOf(Figure);
if ((currIndex <> 0) or (currIndex <> FigList.Count - 1)) then
begin
FigList.Delete(FigList.IndexOf(Figure));
if TConnectorObject(Figure).ActualZOrder[1] <= TConnectorObject(FigList[0]).ActualZOrder[1] then
FigList.Insert(0, Figure)
else
FigList.Add(Figure);
end;
end;
end;
End;
// èùåò áëèæàéøóþ òî÷êó ê òî÷å÷íîé ôèãóðå (èç âûáðàííûõ)
Function FindNearestFigure(Figure: TFigure): TFigure;
Var
Figure1_, Figure2_: TFigure;
Dist, Dist1: double;
LineLen : double;
currIndex: integer;
currFigure: TFigure;
Function FindNearest(Figure: TFigure; var Dist: double): TFigure;
Var
i: Integer;
LineLenght: double;
PointFigures1, PointFigures2: TList;
Begin
PointFigures1 := nil;
PointFigures2 := nil;
Dist := -1;
Result := nil;
// åñëè íà÷àëüíàÿ ôèãóðà îäíà
// if ThisPointFigures.Count = 0 then
begin
for i := 0 to FiguresList.Count - 1 do
begin
if FiguresPassedList.IndexOf(FiguresList[i]) = -1 then
begin
if TConnectorObject(Figure).ID <> TConnectorObject(FiguresList[i]).ID then
// if Figure <> FiguresList[i] then
begin
LineLenght := GetLineLenght(TConnectorObject(Figure).ActualPoints[1],TConnectorObject(FiguresList[i]).ActualPoints[1]);
if ((dist > LineLenght) or (dist = -1)) then
begin
dist := LineLenght;
Result := FiguresList[i];
if Dist = 0 then // ñèäÿò â îäíîé òî÷êå
break;
end;
end;
end;
end;
end
End;
Begin
Figure1_ := nil; // Tolik 05/08/2021 --
Figure2_ := nil; // Tolik 05/08/2021 --
if BeforePointFigures.Count = 0 then
Result := FindNearest(Figure1, Dist)
else
begin
Figure1_ := FindNearest(BeforePointFigures[0], Dist);
Figure2_ := FindNearest(BeforePointFigures[BeforePointFigures.Count - 1], Dist1);
Result := Figure1_;
if (Figure2_ <> nil) and (Result <> nil) then // Tolik 05/08/2021 --
begin
if ((TConnectorObject(Result).ID <> TConnectorObject(Figure2_).ID) and (Dist1 < Dist)) then
Result := Figure2_;
end
else
begin // Tolik 05/08/2021 --
if Result = nil then
begin
if Figure2_ <> nil then
Result := Figure2_;
end;
end;
end;
// îïðåäåëÿåì áëèæàéøèå â äàííîé òî÷êå (åñëè åñòü â ïðåäåëàõ äîïóñòèìîãî)
if Result = nil then
begin
ThisPointFigures.Clear;
exit;
end;
FindAllNearestFigures(Result);
// îïðåäåëÿåì áëèæàéøèå òî÷êè äëÿ ïîäêëþ÷åíèÿ òðàññîé (ñàìûé êîðîòêèé ïóòü)
// 1. Åñëè ïîäêëþ÷àåì äâå "êó÷êè"
if (BeforePointFigures.Count > 0) and (ThisPointFigures.Count > 0) then
begin
Figure1 := BeforePointFigures[0];
Figure2 := ThisPointFigures[0];
// ñàìûé êîðîòêèé ïóòü îò íèçà ïåðâîé "êó÷êè" äî âòîðîé (èç äâóõ - ê íèçó è âåðõó âòîðîé "êó÷êè")
LineLen := GetLineLenght(TConnectorObject(BeforePointFigures[0]).ActualPoints[1],TConnectorObject(ThisPointFigures[0]).ActualPoints[1]);
Dist := GetLineLenght(TConnectorObject(BeforePointFigures[0]).ActualPoints[1],TConnectorObject(ThisPointFigures[ThisPointFigures.Count - 1]).ActualPoints[1]);
if LineLen > Dist then
begin
Result := ThisPointFigures[ThisPointFigures.Count - 1];
PointToZeroPosition(Result, ThisPointFigures);
end
else
Dist := LineLen;
// ñìîòðèì ââåðõó
LineLen := GetLineLenght(TConnectorObject(BeforePointFigures[BeforePointFigures.Count - 1]).ActualPoints[1],TConnectorObject(ThisPointFigures[0]).ActualPoints[1]);
Dist1 := GetLineLenght(TConnectorObject(BeforePointFigures[BeforePointFigures.Count - 1]).ActualPoints[1],TConnectorObject(ThisPointFigures[ThisPointFigures.Count - 1]).ActualPoints[1]);
if ((LineLen < Dist) and (LineLen <= Dist1)) then
begin
Figure1 := BeforePointFigures[BeforePointFigures.Count - 1];
Result := ThisPointFigures[0];
PointToZeroPosition(Result, ThisPointFigures);
end
else
begin
if ((Dist1 < Dist) and (Dist1 < LineLen)) then
begin
Figure1 := BeforePointFigures[BeforePointFigures.Count - 1];
Result := ThisPointFigures[ThisPointFigures.Count - 1];
PointToZeroPosition(Result, ThisPointFigures);
end;
end;
end;
// 2. Âïåðåäè "êó÷êà", ïîäêëþ÷àåìñÿ ê òî÷å÷íîìó
if ((BeforePointFigures.Count > 0) and (ThisPointFigures.Count = 0)) then
begin
Figure1 := BeforePointFigures[0];
if Figure2 <> nil then // Tolik 05/08/2021 --
begin
LineLen := GetLineLenght(TConnectorObject(BeforePointFigures[0]).ActualPoints[1],TConnectorObject(Figure2).ActualPoints[1]);
Dist := GetLineLenght(TConnectorObject(BeforePointFigures[BeforePointFigures.Count - 1]).ActualPoints[1],TConnectorObject(Figure2).ActualPoints[1]);
if LineLen > Dist then
Figure1 := BeforePointFigures[BeforePointFigures.Count - 1];
end;
end;
// 3. Îäèí òî÷å÷íûé ïîäêëþ÷àåì ê "êó÷êå"
if ((BeforePointFigures.Count = 0) and (ThisPointFigures.Count > 0)) then
begin
Result := ThisPointFigures[0];
LineLen := GetLineLenght(TConnectorObject(ThisPointFigures[0]).ActualPoints[1],TConnectorObject(Figure1).ActualPoints[1]);
Dist := GetLineLenght(TConnectorObject(ThisPointFigures[ThisPointFigures.Count - 1]).ActualPoints[1],TConnectorObject(Figure1).ActualPoints[1]);
if LineLen > Dist then
Result := ThisPointFigures[ThisPointFigures.Count - 1];
PointToZeroPosition(Result, ThisPointFigures);
end;
End;
// âîçâðàùàåò íà÷àëüíóþ òî÷å÷íóþ ôèãóðó èç âûáðàííûõ (áëèæå âñåãî ê íà÷àëó êîîðäèíàò)
Function FindBeginFigure : TFigure;
Var i : Integer;
Begin
Result := FiguresList[0];
for i := 1 to FiguresList.Count - 1 do
begin
if sqrt(sqr(TConnectorObject(Result).ActualPoints[1].x)+ sqr(TConnectorObject(Result).ActualPoints[1].y)+
sqr(TConnectorObject(Result).ActualZOrder[1]))
>
sqrt(sqr(TConnectorObject(FiguresList[i]).ActualPoints[1].x)+ sqr(TConnectorObject(FiguresList[i]).ActualPoints[1].y)+
sqr(TConnectorObject(FiguresList[i]).ActualZOrder[1])) then
Result := FiguresList[i];
end;
End;
{ // Äëÿ äâóõ òî÷å÷íûõ ïðîâåðÿåì, íå ñèäÿò ëè â îäíîé òî÷êå (x,y - îäèíàêîâûå)
Function CheckTheSamePoint(Figure1, Figure2: TFigure): Boolean;
Begin
Result := false;
if (TConnectorObject(Figure1).ActualPoints[1].x = TConnectorObject(Figure2).ActualPoints[1].x) and
(TConnectorObject(Figure1).ActualPoints[1].y = TConnectorObject(Figure2).ActualPoints[1].y)
then
Result := true;
End;}
//âåðòèêàëüíàÿ òðàññà ìåæäó äâóìÿ òî÷å÷íûìè
Procedure CreateVertTraceBetweenTwoPoints(Figure1, Figure2: TConnectorObject);
Var
VertOnFigure: TConnectorObject;
VertHeight: Double;
Begin
try
VertOnFigure := Figure1;
if Figure2 <> nil then
begin
VertHeight := TConnectorObject(Figure2).ActualZOrder[1];//(abs(TConnectorObject(Figure1).ActualZOrder[1] - TConnectorObject(Figure2).ActualZOrder[1]));
VertHeight := UOMToMetre(VertHeight);
{ if VertHeight > GCadForm.FRoomHeight then
VertHeight := GCadForm.FRoomHeight;}
CreateVerticalOnTwoPointObjects(TConnectorObject(Figure1), TConnectorObject(Figure2), VertHeight);
// CreateVerticalOnPointObject(VertOnFigure, Figure2, VertHeight);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
isVerticalCreated := True;
end
else
GCadForm.mProtocol.Lines.Add(cMain_Mes128);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.CreateVertTraceBetweenTwoPoints', E.Message);
end;
End;
Function CheckIsRaiseOrVLine(aConn: TConnectorObject): Boolean;
var i, j: Integer;
Joinedconn: TConnectorObject;
begin
Result := False;
if aConn.ConnectorType = ct_Clear then
begin
for i := 0 to aConn.JoinedOrthoLinesList.Count - 1 do
begin
if (TOrthoLine(aConn.JoinedOrthoLinesList[i]).FIsRaiseUpDown or
TOrthoLine(aConn.JoinedOrthoLinesList[i]).FIsVertical) then
begin
Result := True;
exit;
end;
end;
end
else
begin
for i := 0 to aConn.JoinedconnectorsList.Count - 1 do
begin
JoinedConn := TconnectorObject(aConn.JoinedConnectorsList[i]);
for j := 0 to JoinedConn.JoinedOrthoLinesList.Count - 1 do
begin
if (TOrthoLine(JoinedConn.JoinedOrthoLinesList[j]).FIsVertical or
TOrthoLine(JoinedConn.JoinedOrthoLinesList[j]).FIsRaiseUpDown) then
begin
Result := True;
exit;
end;
end;
end;
end;
end;
Function DrawOneTrace(Figure1, Figure2: TFigure; AddResult: Boolean = true): TFigure;
var Catalog1, Catalog2: TSCSCatalog;
CanNotDrawTraceOnConn1, CanNotDrawTraceOnConn2: Boolean;
ClearConn: TConnectorObject;
LHandle: integer;
RaiseLine: TOrthoLine;
i, j: Integer;
Old_Flag: Boolean;
Begin
Result := nil;
if (Figure1 = nil) or (Figure2 = nil) then
exit;
// ïðîâåðÿåì, íåò ëè ìåæäó íèìè òðàññû
TraceList := GetAllTraceInCAD(Figure1, Figure2);
// åñëè òðàññû íåò, òî íàðèñóåì
if TraceList = nil then
begin
//08/11/2019 -- ïðîâåðÿåì íà èñïîëüçîâàíèå âåðòèêàëüíûõ òðàññ
if GUseVerticalTraces = False then
begin
// åñëè çàïðåùåíû âåðòèêàëüíûå òðàññû è õîòü íà îäíîì èç íèõ åñòü ðàéç -- ìîæåò
// áûòü òðàáëà, íóæíî ïðîâåðèòü ïîïàäàíèå
// ÎÁßÇÀÒÅËÜÍÎ áåðåì âî âíèìàíèå, ÷òî òðàññû ñîçäàþòñÿ íà óðîâíå ñîçäàíèÿ òðàññ (â íàñòðîéêàõ Êàäà)
CanNotDrawTraceOnConn1 := CheckCanDrawOneTrace(TConnectorObject(Figure1));
CanNotDrawTraceOnConn2 := CheckCanDrawOneTrace(TConnectorObject(Figure2));
//åñëè íåëüçÿ ïðîëîæèòü òðàññó ....
if (CanNotDrawTraceOnConn1 or CanNotDrawTraceOnConn2) then
begin
try
old_Flag := GCadForm.FAutoPosTraceBetweenRM;
GCadForm.FAutoPosTraceBetweenRM := True;
Trace:= CreateTraceByConnectors(GCADForm, TConnectorObject(Figure1), TConnectorObject(Figure2), False, True);
GCadForm.FAutoPosTraceBetweenRM := Old_Flag;
except
on E: Exception do
GCadForm.FAutoPosTraceBetweenRM := Old_Flag;
end;
(*if CanNotDrawTraceOnConn1 then
begin
if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);
Result := Figure2;
end
else
begin
if FiguresPassedList.IndexOf(Figure2) = -1 then
FiguresPassedList.Add(Figure2);
Result := Figure1;
end;
// ... çàíåñòè â ïðîòîêîë, ÷òî òðàññà ìåæäó ýòèìè îáúåêòàìè íå áûëà ïðîâåäåíà, ïî ïðè÷èíå òîãî, ÷òî
//â íàñòðîéêàõ ïðîãðàììû âûêëþ÷åíà îïöèÿ èñïîëüçîâàíèÿ âåðòèêàëüíûõ òðàññ
Catalog1 := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure1.ID);
Catalog2 := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure2.ID);
if Catalog1 <> nil then
if Catalog2 <> nil then
GCadForm.mProtocol.Lines.Add(CantConnMess1 + Catalog1.GetNameForVisible(false) + CantConnMess2 + Catalog2.GetNameForVisible(false) + CantConnMess4);
*)
Result := Figure2;
exit;
end;
end;
// ðèñóåì òðàññó
// åñëè íå ñèäÿò â îäíîé òî÷êå
if not CheckTheSamePoint(Figure1, Figure2) then
begin
//Trace := CreateTraceByConnectors(GCADForm, TConnectorObject(Figure1), TConnectorObject(Figure2), False, True, False)
Trace := CreateTraceByPoints(GCadForm.PCad, TConnectorObject(Figure1).AP1, TConnectorObject(Figure2).AP2);
if TConnectorObject(Figure1).ConnectorType = ct_Clear then
CheckingSnapConnectorToConnector(TConnectorObject(Figure1), TConnectorObject(Trace.JoinConnector1))
else
CheckingSnapConnectorToPointObject(TConnectorObject(Trace.JoinConnector1), TConnectorObject(Figure1), False);
if TConnectorObject(Figure2).ConnectorType = ct_Clear then
CheckingSnapConnectorToConnector(TConnectorObject(Figure2), TConnectorObject(Trace.JoinConnector2))
else
CheckingSnapConnectorToPointObject(TConnectorObject(Trace.JoinConnector2), TConnectorObject(Figure2), False);
end
else
begin
// åñëè òî÷å÷íûå ñèäÿò â îäíîé òî÷êå,
// ðàçðåøåíî èñïîëüçîâàíèå âåðòèêàëüíûõ ëèíèé è âûñîòà ðàçìåùåíèÿ ðàçíàÿ
if ( (TConnectorObject(Figure1).ActualZOrder[1] <> TConnectorObject(Figure2).ActualZOrder[1]) and
(GUseVerticalTraces = true)
) then
// ðèñóåì âåðòèêàëüíóþ òðàññó
CreateVertTraceBetweenTwoPoints(TConnectorObject(Figure1),TConnectorObject(Figure2))
else
begin
// íå ñèäÿò òî÷íî â îäíîé òî÷êå, íå ðàçðåøåíî èñïîëüçîâàíèå âåðòèêàëüíûõ ëèíèé(èëè ðàçðåøåíî,
// íî âûñîòà ðàçìåùåíèÿ îáúåêòîâ - îäèíàêîâàÿ èëè âêëþ÷åíà îïöèÿ, ðàçðåøàþùàÿ ðàçìåùåíèå òðàññû
// íà âûñîòå ðàáî÷èõ ìåñò) - ðèñóåì ïðîñòóþ òðàññó
if (CompareValue(TConnectorObject(Figure1).ActualZOrder[1], TConnectorObject(Figure2).ActualZOrder[1]) = 0) then
Trace:= CreateTraceByConnectors(GCADForm, TConnectorObject(Figure1), TConnectorObject(Figure2), False, True)
else
// ðàéç
begin
if (CheckIsRaiseOrVLine(TConnectorObject(Figure1)) or CheckIsRaiseOrVLine(TConnectorObject(Figure2))) then
begin
try
old_Flag := GCadForm.FAutoPosTraceBetweenRM;
GCadForm.FAutoPosTraceBetweenRM := True;
Trace:= CreateTraceByConnectors(GCADForm, TConnectorObject(Figure1), TConnectorObject(Figure2), False, True);
GCadForm.FAutoPosTraceBetweenRM := Old_Flag;
except
on E: Exception do
GCadForm.FAutoPosTraceBetweenRM := Old_Flag;
end;
//Trace:= CreateTraceByConnectors(GCADForm, TConnectorObject(Figure1), TConnectorObject(Figure2), False, True)
end
else
begin
LHandle := GCadForm.PCad.GetLayerHandle(2);
CreateRaiseOnPointObjectNew(TConnectorObject(Figure1), TConnectorObject(Figure2).ActualZOrder[1]);
RaiseLine := Nil;
ClearConn := Nil;
for i := 0 to TConnectorObject(Figure1).JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(TConnectorObject(Figure1).JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(TConnectorObject(TConnectorObject(Figure1).JoinedConnectorsList[i]).JoinedOrtholinesList[j]).FIsRaiseUpDown then
begin
RaiseLine := TOrthoLine(TConnectorObject(TConnectorObject(Figure1).JoinedConnectorsList[i]).JoinedOrtholinesList[j]);
if RaiseLine.JoinConnector1.ID = TConnectorObject(TConnectorObject(Figure1).JoinedConnectorsList[i]).Id then
ClearConn := TConnectorObject(RaiseLine.JoinConnector2)
else
ClearConn := TconnectorObject(RaiseLine.JoinConnector1);
end;
end;
end;
if ClearConn <> nil then
CheckingSnapConnectorToPointObject(ClearConn, TConnectorObject(Figure2), False);
end;
end;
end;
end;
end
else
begin
{if TraceList.count > 0 then
begin
for i := 0 to TraceList.count - 1 do
begin
TList(TraceList[i]).Free;
TraceList[i] := Nil;
end;
end;}
// 03/08/2018 --
Catalog1 := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure1.ID);
Catalog2 := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure2.ID);
if Catalog1 <> nil then
if Catalog2 <> nil then
GCadForm.mProtocol.Lines.Add(CantConnMess1 + Catalog1.GetNameForVisible(false) + CantConnMess2 + Catalog2.GetNameForVisible(false) + CantConnMess3);
//
FreeAndNil(TraceList);
end;
if addResult then
begin
if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);
Result := Figure2;
end;
End;
// 25/04/2016 -- ïðåîáðàçîâàíèå Ñ/Ï â âåðòèêàëü
procedure CheckConvertRaiseToVertLine(aList: TList);
var i, j, k: Integer;
Conn, ConnectedConn: TConnectorObject;
Figure: TFigure;
RaiseLine, vLine: TOrthoLine;
CanBreak: Boolean;
begin
CanBreak := False;
for i := 0 to aList.Count - 1 do
begin
Figure := TFigure(aList[i]);
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
Conn := TConnectorObject(Figure);
RaiseLine := Nil;
vLine := Nil;
if Conn.ConnectorType = ct_NB then
begin
for j := 0 to Conn.JoinedConnectorsList.Count - 1 do
begin
ConnectedConn := TConnectorObject(Conn.JoinedConnectorsList[j]);
for k := 0 to ConnectedConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(ConnectedConn.JoinedOrtholinesList[k]).FIsRaiseUpDown then
RaiseLine := TOrthoLine(ConnectedConn.JoinedOrtholinesList[k])
else
if TOrthoLine(ConnectedConn.JoinedOrtholinesList[k]).FIsVertical then
vLine := TOrthoLine(ConnectedConn.JoinedOrtholinesList[k]);
end;
end;
end
else
if Conn.ConnectorType = ct_Clear then
begin
for j := 0 to Conn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(Conn.JoinedOrtholinesList[j]).FIsRaiseUpDown then
RaiseLine := TOrthoLine(Conn.JoinedOrtholinesList[j])
else
if TOrthoLine(Conn.JoinedOrtholinesList[j]).FIsVertical then
vLine := TOrthoLine(Conn.JoinedOrtholinesList[j]);
end;
end;
end;
if RaiseLine <> nil then
if vLine <> nil then
ConvertRaiseToVertical(RaiseLine);
end;
end;
// ïîïûòàòüñÿ íàéòè ïîäõîäÿùèé êîííåêòîð äëÿ ñîåäèíåíèÿ òðàññàìè
function GetPointToConnectFromList(aList: TList; aConn: TConnectorObject): TConnectorObject;
var i: Integer;
PointList: TList;
NextConn: TConnectorObject;
Procedure GetLinesFromPoint(aPoint: TConnectorObject; var aRaiseLine, avLine1, avLine2: TOrthoLine);
var JoinedConn: TConnectorObject;
j, k: Integer;
begin
if aPoint.ConnectorType = ct_NB then
begin
JoinedConn := nil;
for j := 0 to aPoint.JoinedConnectorsList.Count - 1 do
begin
JoinedConn := TConnectorObject(aPoint.JoinedConnectorsList[j]);
for k := 0 to JoinedConn.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(JoinedConn.JoinedOrtholinesList[k]).FIsRaiseUpDown then
aRaiseLine := TOrthoLine(JoinedConn.JoinedOrtholinesList[k])
else
if TOrthoLine(JoinedConn.JoinedOrtholinesList[k]).FIsVertical then
begin
if avLine1 = nil then
avLine1 := TOrthoLine(JoinedConn.JoinedOrtholinesList[k])
else
avLine2 := TOrthoLine(JoinedConn.JoinedOrtholinesList[k]);
end;
end;
end;
end
else
if aPoint.ConnectorType = ct_Clear then
begin
for j := 0 to aPoint.JoinedOrtholinesList.Count - 1 do
begin
if TOrthoLine(aPoint.JoinedOrtholinesList[j]).FIsRaiseUpDown then
aRaiseLine := TOrthoLine(aPoint.JoinedOrtholinesList[j])
else
if TOrthoLine(aPoint.JoinedOrtholinesList[j]).FIsVertical then
begin
if avLine1 = nil then
avLine1 := TOrthoLine(aPoint.JoinedOrtholinesList[j])
else
avLine2 := TOrthoLine(aPoint.JoinedOrtholinesList[j]);
end;
end;
end;
end;
Procedure GetConnList(aConn: TConnectorObject);
var i: Integer;
RaiseLine, vLine1, vLine2: TOrthoLine;
currConn: TConnectorObject;
begin
RaiseLine := nil;
vLine1 := Nil;
vLine2 := Nil;
if PointList.IndexOf(aConn) = -1 then
begin
PointList.Add(aConn);
GetLinesFromPoint(aConn, RaiseLine, vLine1, vLine2);
if RaiseLine <> nil then
begin
CurrConn := TConnectorObject(RaiseLine.JoinConnector1);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
CurrConn := TConnectorObject(RaiseLine.JoinConnector2);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
end;
if vLine1 <> nil then
begin
CurrConn := TConnectorObject(vLine1.JoinConnector1);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
CurrConn := TConnectorObject(vLine1.JoinConnector2);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
end;
if vLine2 <> nil then
begin
CurrConn := TConnectorObject(vLine2.JoinConnector1);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
CurrConn := TConnectorObject(vLine2.JoinConnector2);
if currConn <> nil then
begin
if CurrConn.JoinedConnectorsList.Count > 0 then
CurrConn := TConnectorObject(CurrConn.JoinedConnectorsList[0]);
if PointList.IndexOf(currConn) = -1 then
begin
GetConnList(currConn);
end;
end;
end;
end;
end;
Procedure SortPointList(aList: TList);
Var i: Integer;
CanSort: Boolean;
currConn: TConnectorObject;
begin
CanSort := true;
while CanSort do
begin
CanSort := False;
for i := 0 to aList.Count - 2 do
begin
if CompareValue(ABS(TConnectorObject(aList[i]).ActualZOrder[1] - GCadForm.FLineHeight),
ABS(TConnectorObject(aList[i+1]).ActualZOrder[1] - GCadForm.FLineHeight)) = 1 then
begin
currConn := TConnectorObject(aList[i]);
aList[i] := AList[i + 1];
aList[i + 1] := currConn;
CanSort := True;
end;
end;
end;
end;
begin
// åñëè êîííåêòîð - íà âûñîòå àâòîìàòè÷åñêîãî ðàñïîëîæåíèÿ òðàññ -- áåðåì åãî
Result := nil;
PointList := TList.Create;
if aList <> nil then
begin
//îïðåäåëÿåì âñå âîçìîæíûå êîííåêòîðû â ýòîé òî÷êå äëÿ êîííåêòà
for i := 0 to aList.Count - 1 do
begin
NextConn := TConnectorObject(aList[i]);
if NextConn.ConnectorType = ct_Clear then
if NextConn.JoinedConnectorsList.Count > 0 then
NextConn := TConnectorObject(NextConn.JoinedConnectorsList[0]);
if PointList.IndexOf(NextConn) = -1 then
GetConnList(NextConn);
end;
end
else
GetConnList(aConn);
// ïðîâåðÿåì åñëè åñòü êîííåêòîð(ïî âûñîòå) - óðà
for i := 0 to PointList.Count - 1 do
begin
if CompareValue(TConnectorObject(PointList[i]).ActualZOrder[1], GCadForm.FLineHeight) = 0 then
begin
Result := TConnectorObject(PointList[i]);
break;
end;
end;
//íà êîííåêòîðû íå ïîïàäåì
if Result = nil then
begin
SortPointList(PointList); // ñîðòèðîâêà ñïèñêà ïî ðàññòîÿíèþ îò âûñîòû ðàñïîëîæåíèÿ òðàññ
//if (GCadForm.FAutoPosTraceBetweenRM or GUseVerticalTraces) then // åñëè âêëþ÷åíà îïöèÿ ðàñïîëàãàòü òðàññó íà âûñîòå ðàáî÷èõ ìåñò
// èëè äîïóñòèìî èñïîëüçîâàíèå âåðòèêàëüíûõ òðàññ --
begin
for i := 0 to PointList.Count - 1 do
begin
if TConnectorObject(PointList[i]).ConnectorType = ct_NB then
begin
Result := TConnectorObject(PointList[i]); // áëèæàéøèé ê âûñîòå ðàñïîëîæåíèÿ(àâòîñîçäàíèÿ) òðàññ íà Êàäå
break;
end;
end;
end;
end;
PointList.free;
end;
Begin
if GDropComponent <> nil then
begin
if isCableComponent(GDropComponent) then
begin
if GEndPoint <> nil then
begin
if GCadForm.PCad.Selection.IndexOf(GEndPoint) = -1 then
begin
GEndPoint.Selected := True;
GCadForm.PCad.Selection.Add(GEndPoint);
end;
end;
end;
end;
GCadFlag := GCanRefreshCad;
ProcessMessagesEx;
BeginProgress;
Figure1 := nil; // Tolik 05/08/2021 --
Figure2 := nil; // Tolik 05/08/2021 --
try
if GUserOBjectsQuotaLimit_Message_Counter >= 3 then
Exit;
UserQuotaReached_Message := '';
ObjCounter := 0;
OldCadFigCounter := GCadForm.FSCSFigures.Count;
// åñëè âûáðàíî áîëåå 2-õ òî÷å÷íûõ íà êàäå
if GCADForm.PCad.Selection.Count > 1 then
begin
// UNDO
if GCadForm.FCanSaveForUndo then
begin
GCadForm.SaveForUndo(uat_None, True, False);
GCadForm.FCanSaveForUndo := False;
end;
UserQuotaReached_Message := '';
UserQuotaReached_Message := GetQuotaMessage(CheckUserObjQuotaReached(1), cMess_Quota);
if UserQuotaReached_Message = '' then
begin
// Tolik -- 28/02/2017 -- ÷òîáû íå âûëåç PCadGuiEVENT
GCanRefreshCad := False;
//
FiguresPassedList := TList.Create;
FiguresList := TList.Create;
ThisPointFigures := TList.Create;
ThisPointFiguresPassed := TList.Create;
BeforePointFigures := TList.Create;
isVerticalCreated := False; // åñëè ñîçäàíà âåðòèêàëü
//ñîáèðàåì âûáðàííûå ôèãóðû â ñïèñîê
for i := 0 to GCADForm.PCad.Selection.Count - 1 do
begin
currFigure := TFigure(GCADForm.PCad.Selection[i]);
if CheckFigureByClassName(currFigure, cTConnectorObject) then
// åñëè òî÷å÷íûé - íå ïóñòîé êîííåêòîð(ïðîñòî ïóñòîé, êîíå÷íûé êîííåòîð òðàññû è ò.ï.) èëè íå êîííåêòîð ìàãèñòðàëè,
if (TConnectorObject(currFigure).ConnectorType = ct_NB) and (TConnectorObject(currFigure).FTrunkName = '') then
// òî äîáàâëÿåì â ñïèñîê òî÷å÷íûõ
FiguresList.Add(GCADForm.PCad.Selection[i]);
end;
// Åñëè òî÷êè âñåãî äâå, òî íåò íè÷åãî ïðîùå
if FiguresList.Count = 2 then
begin
// ïåðâàÿ
Figure1 := FiguresList[0];
// âòîðàÿ
Figure2 := FiguresList[1];
// òðàññà
Figure2 := DrawOneTrace(Figure1, Figure2);
end;
// Åñëè òî÷åê áîëüøå äâóõ
If FiguresList.Count > 2 then
begin
try
// èùåì òî÷êó áëèæå âñåãî ê íà÷àëó êîîðäèíàò (îò íåå íà÷íåì)
Figure1 := FindBeginFigure;
ThisPointFigures.Clear; // íà âñÿêèé
// âñå ïðèáëèæåííûå ê íåé èç âûáðàííûõ
FindAllNearestFigures(Figure1);
// åñëè â ýòîé òî÷êå åñòü åùå òî÷å÷íûå (èëè ïðèáëèçèòåëüíî â îäíîé)
// ïîäêëþ÷àåì èõ ìåæäó ñîáîé ñíèçó ââåðõ ïîäðÿä
if ThisPointFigures.Count <> 0 then
begin
Figure1 := ThisPointFigures[0];
for i := 1 to ThisPointFigures.Count - 1 do
begin
Figure1 := DrawOneTrace(Figure1, ThisPointFigures[i]);
if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);
end;
Figure1 := ThisPointFigures[0];
end;
while FiguresPassedList.Count < FiguresList.Count do
begin
if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);
BeforePointFigures.Clear;
// åñëè èäåì îò êó÷êè, òî ñîõðàíèì åå
if ThisPointFigures.Count > 0 then
begin
for i := 0 to ThisPointFigures.Count - 1 do
BeforePointFigures.Add(ThisPointFigures[i]);
end;
Figure2 := FindNearestFigure(Figure1); // áëèæàéøàÿ òî÷êà ê òåêóùåé, íà êîòîðîé ñòîèì (èç âûáðàííûõ)
if Figure2 = nil then
break;
// âñå ïðèáëèçèòåëüíî â îäíîé òî÷êå ñî âòîðîé ôèãóðîé
// çàîäíî ñêîððåêòèðóåòñÿ è ïåðâàÿ â çàâèñèìîñòè îò ìèíèìàëüíîé äèñòàíöèè ïîäêëþ÷åíèÿ
FindAllNearestFigures(Figure2);
// åñëè â ýòîé òî÷êå åñòü åùå òî÷å÷íûå (èëè ïðèáëèçèòåëüíî â îäíîé)
// ïîäêëþ÷àåì èõ ìåæäó ñîáîé ñíèçó ââåðõ ïîäðÿä
if ThisPointFigures.Count <> 0 then
begin
Figure2 := ThisPointFigures[0];
for i := 1 to ThisPointFigures.Count - 1 do
begin
Figure2 := DrawOneTrace(Figure2, ThisPointFigures[i]);
if FiguresPassedList.IndexOf(Figure2) = -1 then
FiguresPassedList.Add(Figure2);
end; // Çäåñü Figure2 -- ñàìàÿ âûñîêàÿ òî÷êà
Figure2 := ThisPointFigures[0]; // ñïðûãèâàåì âíèç
end;
// ïîëó÷àåì òî÷êè ñîåäèíåíèÿ
if BeforePointFigures.Count = 0 then
ConnectFigure1 := GetPointToConnectFromList(nil, TConnectorObject(Figure1))
else
ConnectFigure1 := GetPointToConnectFromList(BeforePointFigures, nil);
if ThisPointFigures.Count = 0 then
ConnectFigure2 := GetPointToConnectFromList(nil, TConnectorObject(Figure2))
else
ConnectFigure2 := GetPointToConnectFromList(ThisPointFigures, nil);
DrawOneTrace(ConnectFigure1, ConnectFigure2, False); // ðåçóëüòàò çäåñü íåèíòåðåñåí, ò.ê. òî÷êè ìîãóò áûòü è íå òå...
// ïåðåõîäèì íà ñëåäóþùóþ ôèãóðó
if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);
Figure1 := Figure2;
// åñëè ïîäêëþ÷àåì îäíó òî÷êó
(*if ThisPointFigures.Count = 0 then
begin
Figure1 := DrawOneTrace(Figure1,Figure2);
end
else
// åñëè ïîäêëþ÷àåì "êó÷êó"
begin
// SortFigures(Figure1);
//Figure2 := ThisPointFigures[0];
DirectionUp := true; // ñîåäèíÿòü òî÷êè â "êó÷êå" ñíèçó ââåðõ
{
if (TConnectorObject(ThisPointFigures[0]).ActualZOrder[1] <> TConnectorObject(ThisPointFigures[ThisPointFigures.Count - 1]).ActualZOrder[1]) then
begin
if GetLineLenght(TConnectorObject(ThisPointFigures[0]).ActualPoints[1],TConnectorObject(Figure1).ActualPoints[1]) >
GetLineLenght(TConnectorObject(ThisPointFigures[ThisPointFigures.Count - 1]).ActualPoints[1],TConnectorObject(Figure1).ActualPoints[1]) then
begin
Figure2 := ThisPointFigures[ThisPointFigures.Count - 1];
DirectionUp := false; // ñîåäèíÿòü òî÷êè â "êó÷êå" ñâåðõó âíèç
end
end;}
if Figure2 <> ThisPointFigures[0] then
DirectionUP := false;
Figure1 := DrawOneTrace(Figure1, Figure2); // çäåñü â ôèãóðà 1 - óæå íà÷àëüíàÿ òî÷êà "êó÷êè"
// èäåì ïî "êó÷êå" ñíèçó ââåðõ
if DirectionUP then
begin
for i := 1 to ThisPointFigures.Count - 1 do
begin
Figure1 := DrawOneTrace(Figure1, ThisPointFigures[i]) // figure1 = Figure2 è òðàññà ïðîëîæåíà
end;
end
// èäåì ïî êó÷êå ñâåðõó âíèç
else
begin
for i := (ThisPointFigures.Count - 2) downto 0 do
begin
Figure1 := DrawOneTrace(Figure1, ThisPointFigures[i]) // figure1 = Figure2 è òðàññà ïðîëîæåíà
end;
end;
end; *)
{if FiguresPassedList.IndexOf(Figure1) = -1 then
FiguresPassedList.Add(Figure1);}
// Tolik -- 28/02/2017 -*- ïðîâåðêà íà ïðåâûøåíèå êâîòû îáúåêòîâ USER
ObjCounter := GCadForm.FSCSFigures.Count - OldCadFigCounter;
if ObjCounter > 49 then
begin
UserQuotaReached_Message := '';
UserQuotaReached_Message := GetQuotaMessage(CheckUserObjQuotaReached(1),cMess_Quota);
if UserQuotaReached_Message <> '' then
begin
PauseProgress(True);
Showmessage(UserQuotaReached_Message);
PauseProgress(False);
Break; //// BREAK ////;
end
else
OldCadFigCounter := GCadForm.FSCSFigures.Count;
end;
end; // end while
except
on E: exception do AddExceptionToLogEX('TFSCS_Main.Act_ConnectSelectedPointsExecute', E.Message);
end;
end;
// åñëè ñîçäàíà âåðòèêàëü, íóæíî ïåðåñìîòðåòü ñïèñîê òî÷å÷íûõ è, åñëè íà íèõ ïîïàäåòñÿ Ñ/Ï -
// òî ïðåîáðàçîâàòü åãî â âåðòèêàëü
if isVerticalCreated then
CheckConvertRaiseToVertLine(FiguresList);
if FiguresList <> nil then
FreeAndNil(FiguresList);
if FiguresPassedList <> nil then
FreeAndNil(FiguresPassedList);
FreeAndNil(ThisPointFigures);
FreeAndNil(ThisPointFiguresPassed);
FreeAndNil(BeforePointFigures);
// FreeAndNil(TraceList);
// ðàçðåøèòü UNDO
end
else
ShowMessage(UserQuotaReached_Message);
GCadForm.FCanSaveForUndo := True;
end;
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.Act_ConnectSelectedPointsExecute', E.Message);
end;
EndProgress;
GCanRefreshCad := GCadFlag;
GCadForm.PCad.Refresh;
End;
//Tolik 17/08/2021 --
procedure TFSCS_Main.Act_ConnectToAnotherRackExecute(Sender: TObject);
var SavedEndPoint : Tfigure;
begin
GRackToRack := True;
SavedEndPoint := nil;
//EndPoint
if GEndPoint <> nil then
begin
SavedEndPoint := GEndPoint;
try
if CheckFigureByClassName(GEndPoint, cTConnectorObject) then
TConnectorObject(GEndPoint).AsEndPoint := False
else
if CheckFigureByClassName(GEndPoint, cTHouse) then
THouse(GEndPoint).AsEndPoint := False;
if (GListWithEndPoint <> GCadForm) and (GListWithEndPoint <> nil) then
begin
RefreshCAD(GListWithEndPoint.PCad);
RefreshCAD(GListWithEndPoint.PCad);
end
else
RefreshCAD(GCadForm.PCad);
GListWithEndPoint := Nil;
GEndPoint := nil;
except
on E: Exception do addExceptionToLogEx('Act_ConnectToAnotherRackExecute(Drop EndPoint): ', E.Message);
end;
end;
try
F_NormBase.Act_AutoTraceCableExecute(nil);
except
on E: Exception do addExceptionToLogEx('Act_ConnectToAnotherRackExecute: ', E.Message);
end;
GRackToRack := True;
if SavedEndPoint <> nil then
SetFigureAsEndObject(GCadForm, SavedEndPoint);
end;
//
procedure TFSCS_Main.Act_ReindexMasterExecute(Sender: TObject);
var aCad: TF_CAD;
begin
if not Assigned(F_ReindexMaster) then
Application.CreateForm(TF_ReindexMaster, F_ReindexMaster);
F_ReindexMaster.ShowModal;
end;
// Tolik
procedure TFSCS_Main.Act_SelectCableToTraceExecute(Sender: TObject); // Tolik 24/03/2021 -- âûáðàòü êàáåëü â ÍÁ äëÿ òðàññèðîâêè (ýëåêòðèêà)
begin
if GSelNodeColor = -1 then
begin
GSelNodeColor := clRed;
try
F_NormBase.FindComponentByGUIDWithBlink('{0D22B88D-6739-4A5D-A2D8-E1DA74EEBF5F}');
Except
on E: Exception do;
end;
GSelNodeColor := -1;
end;
end;
procedure TFSCS_Main.Act_SelectFiberCableToTraceExecute(Sender: TObject);
begin
if GSelNodeColor = -1 then
begin
GSelNodeColor := clRed;
try
{$if defined(SCS_PE)}
F_NormBase.FindComponentByGUIDWithBlink('{15A46B67-2A90-4459-8130-E04D752DCF54}');
{$ELSE}
F_NormBase.FindComponentByGUIDWithBlink('{2C158417-0736-42D4-9EDD-E638C4305391}');
{$IFEND}
Except
on E: Exception do;
end;
GSelNodeColor := -1;
end;
end;
procedure TFSCS_Main.Act_SetAsEndObjectExecute(Sender: TObject);
begin
SetFigureAsEndObject(GCadForm, GPopupFigure);
end;
//
procedure Select_clearConnectors;
var i, j: Integer;
currList: TSCSList;
aCAd: TF_CAD;
ConnList: TList;
Figure: TFigure;
currCatalog : TSCSCatalog;
Function GetEmptyConnectorsList(acurrList: TSCSList; CadList: TF_CAD) : TList;
var j: Integer;
conn1: TConnectorObject;
begin
Result := TList.Create;
if ((acurrList <> nil) and (CadList <> nil)) then
begin
for j := 0 to acurrList.ChildCatalogReferences.Count - 1 do
begin
currCatalog := TSCSCatalog(acurrList.ChildCatalogReferences[j]);
if currCatalog <> nil then
begin
Figure := GetFigureByID(CADList, currCatalog.SCSID);
if Figure <> nil then
begin
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
Conn1 := TConnectorObject(Figure);
if ((Conn1.ConnectorType = ct_Clear) and (TConnectorObject(Conn1).JoinedConnectorsList.Count = 0) and
(TConnectorObject(Conn1).JoinedFigures.Count = 0) and (TConnectorObject(Conn1).JoinedOrtholinesList.Count = 0) and
(TConnectorObject(Conn1).FIsHouseJoined = false) and (Length(TConnectorObject(Conn1).FJoinedConnectorsIndexes) = 0)
and ((TConnectorOBject(Conn1).FConnFullness = cif_Empty) or (TConnectorOBject(Conn1).FConnFullness = cif_None))
) then
Result.Add(Conn1);
end;
end;
end;
end;
end;
end;
Begin
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
if currList <> nil then
begin
aCad := GetListByID(currList.SCSID);
if aCad <> nil then
begin
ConnList := GetEmptyConnectorsList(currList, aCad);
if ConnList.Count > 0 then
begin
aCad.PCad.SelectFigures(ConnList);
aCad.PCad.FAnySelected := True;
aCAd.PCad.ReDrawSelection;
aCAd.PCad.SyncEnv;
// RefreshCAD(aCAd.PCad);
end;
ConnList.Free;
end;
end;
End;
procedure TFSCS_Main.aSetLeftRightDoorExecute(Sender: TObject);
var
CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.DoorIndex = -1 then
exit;
if TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).LeftRight then
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).LeftRight := False;
GArchEngine.SetLastObjParam(aoskPathDoorLeftRight,'FALSE');
end
else
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).LeftRight := True;
GArchEngine.SetLastObjParam(aoskPathDoorLeftRight,'TRUE');
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetLeftRightDoorExecute', E.Message);
end;
end;
Function PointNear3D(p1,p2: TDoublePoint; ZCoord1, ZCoord2: Double; delta: Double=1):Boolean;
var pp1, pp2: Double;
begin
pp1 := ZCoord1;
pp2 := ZCoord2;
//result := (abs(p1.x - p2.x) <= 1) and (abs(p1.y - p2.y) <= 1);
result := (abs(p1.x - p2.x) <= delta) and (abs(p1.y - p2.y) <= delta) and (abs(ZCoord1 - ZCoord2) <= delta);
end;
procedure TFSCS_Main.aSetMirroredDoorExecute(Sender: TObject);
var
CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.DoorIndex = -1 then
exit;
if TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Mirrored then
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Mirrored := False;
GArchEngine.SetLastObjParam(aoskPathDoorMirrored,'FALSE');
end
else
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Mirrored := True;
GArchEngine.SetLastObjParam(aoskPathDoorMirrored,'TRUE');
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetMirroredDoorExecute', E.Message);
end;
end;
procedure TFSCS_Main.N150Click(Sender: TObject);
var i, j, k, l: Integer;
TracesList, ConnectorsList: TList;
SCSComponent: TSCScomponent;
aJoinConnector, JoinedConnector: TConnectorObject;
CADList: TF_CAD;
currList: TSCSList;
Figure: TFigure;
currCatalog: TSCSCatalog;
SnappedInfo: TStringList;
SnapInfo: String;
Trace, CTrace: TOrthoLine;
CmpPointDelta: double;
Conn1, Conn2 : TConnectorObject;
p1, p2:TDoublePoint;
TraceIndex: Integer;
NewTraces : TList;
CanCreateList: TIntList;
TracesHeight: Double;
ClearConnectorsList: TList;
PointList1, PointList2: TDoublePointArr;
PointCount: Integer;
Candel: Boolean;
CanBuildList: TIntList;
aSnapToGreed_Status, aSnapToGuides_Status, aSnapToNearObject_Status: Boolean;
procedure CreateTrace(p1, p2: TDoublePoint);
begin
if Not PointNear(p1, p2, CmpPointDelta) then
begin
Trace := CreateTraceByPoints(GCadForm.PCad, p1, p2);
// RaiseLineOnHeight(Trace, TracesHeight, nil);
NewTraces.Add(Trace);
end;
end;
function CheckNearConnectors(AConn1, AConn2: TConnectorObject): Boolean;
var i: Integer;
x,y,z,x1,y1,z1 : Double;
IsOnOneLine: Boolean;
JoinLine: TOrthoLine;
Difference: Double;
begin
Result := True;
// çäåñü ïðîâåðÿåì òàêæå, ÷òîáû íå ñîåäèíèòü êîííåêòîðû îäíîé îðòîëèíèè
// äàæå åñëè åå äëèíà = 0 (ìîæåò áûòü è òàêîå)
if (aConn1.JoinedOrtholinesList.Count > 0) and (AConn2.JoinedOrtholinesList.Count > 0) then
begin
IsOnOneLine := False;
for i := 0 to AConn1.JoinedOrtholinesList.Count - 1 do
begin
JoinLine := TOrthoLine(AConn1.JoinedOrtholinesList[i]);
if AConn2.JoinedOrtholinesList.IndexOf(JoinLine) <> -1 then
begin
IsOnOneLine := True;
Result := False;
break;
end;
end;
if Not IsOnOneLine then
begin
Result := (Abs(AConn1.ActualPoints[1].x - AConn2.ActualPoints[1].x) < ConnectorDifference ) and
(Abs(AConn1.ActualPoints[1].y - AConn2.ActualPoints[1].y) < ConnectorDifference ) and
(Abs(AConn1.ActualZOrder[1] - AConn2.ActualZOrder[1]) < ConnectorDifference );
end;
end;
end;
Function GetEmptyConnectorsList(acurrList: TSCSList; CadList: TF_CAD) : TList;
var j: Integer;
conn1: TConnectorObject;
begin
Result := TList.Create;
if ((acurrList <> nil) and (CadList <> nil)) then
begin
for j := 0 to acurrList.ChildCatalogReferences.Count - 1 do
begin
currCatalog := TSCSCatalog(acurrList.ChildCatalogReferences[j]);
if currCatalog <> nil then
begin
Figure := GetFigureByID(CADList, currCatalog.SCSID);
if Figure <> nil then
begin
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
Conn1 := TConnectorObject(Figure);
if ((Conn1.ConnectorType = ct_Clear) and (TConnectorObject(Conn1).JoinedConnectorsList.Count = 0) and
(TConnectorObject(Conn1).JoinedFigures.Count = 0) and (TConnectorObject(Conn1).JoinedOrtholinesList.Count = 0) and
(TConnectorObject(Conn1).FIsHouseJoined = false) and (Length(TConnectorObject(Conn1).FJoinedConnectorsIndexes) = 0)
and ((TConnectorOBject(Conn1).FConnFullness = cif_Empty) or (TConnectorOBject(Conn1).FConnFullness = cif_None))
) then
Result.Add(Conn1);
end;
end;
end;
end;
end;
end;
// ñîåäèíÿåò êîííåêòîðû òðàññ íà ëèñòå
procedure JoinTracesOnList(aTracesList: TList);
var i, j, k, l : Integer;
Catalog, Catalog1 : TSCSCatalog;
begin
{ SnappedInfo := CreateStringListSorted;
for i := 0 to aTracesList.Count - 1 do
begin
Trace := TOrthoLine(aTracesList[i]);
Catalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(Trace.ID);
for j := 0 to aTracesList.Count - 1 do
begin
CTrace := TOrthoLine(aTracesList[j]);
Catalog1 := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(CTrace.ID);
if Trace <> CTrace then
begin
try
for k := 1 to 2 do
for l := 1 to 2 do
if PointNear(Trace.ActualPoints[k], CTrace.ActualPoints[l], CmpPointDelta) then
begin
Conn1 := Trace.ConnectorByNum(k);
Conn2 := CTrace.ConnectorByNum(l);
if Assigned(Conn1) and Assigned(Conn2) then
if Conn1 <> Conn2 then
begin
if PointNear3D(Conn1.ActualPoints[1], Conn2.ActualPoints[1], Conn1.ActualZOrder[1], Conn2.ActualZOrder[1], CmpPointDelta) then
begin
SnapInfo := IntToStr(Min(Conn1.ID, Conn2.ID))+'_'+IntToStr(Max(Conn1.ID, Conn2.ID));
if SnappedInfo.IndexOf(SnapInfo) = -1 then
begin
if Conn1.JoinedConnectorsList.IndexOf(Conn2) = -1 then
SnapConnectorToConnector(Conn1, Conn2)
else
EmptyProcedure;
SnappedInfo.Add(SnapInfo);
end;
end;
end;
end;
except
end;
end;
end;
end; }
SnappedInfo := CreateStringListSorted;
for i := 0 to aTracesList.Count - 2 do
begin
Trace := TOrthoLine(aTracesList[i]);
Catalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(Trace.ID);
for j := (i+1) to aTracesList.Count - 2 do
begin
CTrace := TOrthoLine(aTracesList[j]);
Catalog1 := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(CTrace.ID);
if Trace <> CTrace then
begin
try
for k := 1 to 2 do
for l := 1 to 2 do
if PointNear(Trace.ActualPoints[k], CTrace.ActualPoints[l], CmpPointDelta) then
begin
Conn1 := Trace.ConnectorByNum(k);
Conn2 := CTrace.ConnectorByNum(l);
if Assigned(Conn1) and Assigned(Conn2) then
if Conn1 <> Conn2 then
begin
if PointNear3D(Conn1.ActualPoints[1], Conn2.ActualPoints[1], Conn1.ActualZOrder[1], Conn2.ActualZOrder[1], CmpPointDelta) then
begin
SnapInfo := IntToStr(Min(Conn1.ID, Conn2.ID))+'_'+IntToStr(Max(Conn1.ID, Conn2.ID));
if SnappedInfo.IndexOf(SnapInfo) = -1 then
begin
if Conn1.JoinedConnectorsList.IndexOf(Conn2) = -1 then
begin
if ((TOrthoLine(Trace).FIsRaiseUpDown = False) and (TOrthoLine(CTrace).FIsRaiseUpDown = False)) then
// Tolik 29/03/2018
//Conn1 := SnapConnectorToConnector(Conn1, Conn2)
CheckingSnapConnectorToConnector(Conn1, Conn2)
//
else
begin
if TOrthoLine(Trace).FIsRaiseUpDown then
// Tolik 29/03/2018
//Conn1 := SnapConnectorToConnector(Conn2, Conn1, True)
CheckingSnapConnectorToConnector(Conn1, Conn2)
//
else
begin
if TOrthoLine(CTrace).FIsRaiseUpDown then
// Tolik 29/03/2018
//Conn1 := SnapConnectorToConnector(Conn1, Conn2, True);
CheckingSnapConnectorToConnector(Conn1, Conn2);
//
end;
end;
end
else
EmptyProcedure;
SnappedInfo.Add(SnapInfo);
end;
end;
end;
end;
except
end;
end;
end;
end;
FreeAndNil(SnappedInfo);
end;
begin
TracesList := TList.Create;
ConnectorsList := TList.Create;
ClearConnectorsList := Nil;
CmpPointDelta := 1/5;
{ for i := 0 to F_ProjMan.GSCSBase.CurrProject.ProjectLists.Count - 1 do
begin}
//currList := F_ProjMan.GSCSBase.CurrProject.ProjectLists[i];
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
if currList <> nil then
begin
CadList := GetListByID(currList.SCSID);
if CadList <> nil then
begin
for j := 0 to currList.ChildCatalogReferences.Count - 1 do
begin
currCatalog := TSCSCatalog(currList.ChildCatalogReferences[j]);
if currCatalog <> nil then
begin
Figure := GetFigureByID(CADList, currCatalog.SCSID);
if Figure <> nil then
begin
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
TracesList.Add(Figure);
aJoinConnector := TConnectorObject(TOrthoLine(Figure).JoinConnector1);
//if ConnectorsList.IndexOf(aJoinConnector) = -1 then
if aJoinConnector <> nil then
ConnectorsList.Add(aJoinConnector)
else
ShowMessage(cMain_Msg202);
aJoinConnector := TConnectorObject(TOrthoLine(Figure).JoinConnector2);
//if ConnectorsList.IndexOf(aJoinConnector) = -1 then
if aJoinConnector <> nil then
ConnectorsList.Add(aJoinConnector)
else
ShowMessage(cMain_Msg202);
end;
end;
end;
end;
end;
end;
if TracesList.Count > 0 then
begin
// Èùåì ïóñòûå êîííåêòîðû íà ïðîåêòå äëÿ óäàëåíèÿ
ClearConnectorsList := GetEmptyConnectorsList(currList, CadList);
// Óäàëÿåì ïóñòûå êîííåêòîðû ñ ëèñòà
(* if ClearConnectorsList.Count > 0 then
begin
for i := 0 to ClearConnectorsList.Count - 1 do
begin
Conn1 := TConnectorObject(ClearConnectorsList[i]);
if Assigned(TConnectorObject(Conn1).CaptionsGroup) then
TConnectorObject(Conn1).CaptionsGroup.delete;
if Assigned(TConnectorObject(Conn1).NotesGroup) then
TConnectorObject(Conn1).NotesGroup.Delete;
if Assigned(TConnectorObject(Conn1).DrawFigure) then
TConnectorObject(Conn1).DrawFigure.Delete;
TConnectorObject(Conn1).Delete;
end;
end;*)
// ñîõðàíÿåì ñîñòîÿíèå ïðèâÿçîê
aSnapToGreed_Status := FSCS_Main.aSnaptoGrid.Checked;
aSnapToGuides_Status := FSCS_Main.aSnaptoGuides.Checked;
aSnapToNearObject_Status := FSCS_Main.aSnaptoNearObject.Checked;
// ñáðàñûâàåì ïðèâÿçêè
CadList.PCad.SnapToGrids := False;
CadList.PCad.SnapToGuides := False;
CadList.PCad.SnapToNearPoint := False;
FSCS_Main.aSnaptoGrid.Checked := False;
FSCS_Main.aSnaptoGuides.Checked := False;
FSCS_Main.aSnaptoNearObject.Checked := False;
// ñîåäèíÿåì âñå òðàññû
JoinTracesOnList(TracesList); // TracesList - óæå âñå òðàññû ëèñòà ñèäÿò
// âîçâðàùàåì, êàê áûëî
CadList.PCad.SnapToGrids := aSnapToGreed_Status;
CadList.PCad.SnapToGuides := aSnapToGuides_Status;
CadList.PCad.SnapToNearPoint := aSnapToNearObject_Status;
FSCS_Main.aSnaptoGrid.Checked := aSnapToGreed_Status;
FSCS_Main.aSnaptoGuides.Checked := aSnapToGuides_Status;
FSCS_Main.aSnaptoNearObject.Checked := aSnapToNearObject_Status;
FreeAndNil(TracesList);
RefreshCAD(CadList.PCad);
end;
// åñëè âäðóã ïîòðåáóåòñÿ òðàññû ïåðåñîçäàòü, òî ìîæíî è òàê
(*
NewTraces := TList.Create;
{PointList1 := TList.Create;
PointList2 := TList.Create;}
SetLength(PointList1, 0);
SetLength(PointList2, 0);
PointCount := 0;
CanBuildList := TIntList.Create;
// ñòðîèì ñïèñîê òî÷åê è óäàëÿåì òðàññû
for i := 0 to TracesList.Count - 1 do
begin
Trace := TOrthoLine(TracesList[i]);
p1 := Trace.JoinConnector1.ActualPoints[1];
p2 := Trace.JoinConnector2.ActualPoints[1];
Inc(PointCount);
SetLength(PointList1,PointCount);
SetLength(PointList2,PointCount);
PointList1[PointCount - 1] := p1;
PointList2[PointCount - 1] := p2;
if (Trace.FIsRaiseUpDown = false) then
begin
CanBuildList.Add(1);
// ñáðàñûâàåì ñïèñêè ïðèñîåäèíåííûõ ôèãóð, ÷òîáû óäàëèëîñü, êàê åñòü
Trace.JoinedFigures.Clear;
Trace.JoinConnector1.JoinedFigures.Clear;
Trace.JoinConnector2.JoinedFigures.Clear;
TConnectorObject(Trace.JoinConnector1).JoinedConnectorsList.Clear;
TConnectorObject(Trace.JoinConnector2).JoinedConnectorsList.Clear;
TConnectorObject(Trace.JoinConnector1).JoinedOrtholinesList.Clear;
TConnectorObject(Trace.JoinConnector2).JoinedOrtholinesList.Clear;
// óäàëÿåì òðàññó
Trace.Delete;
//Trace.JoinConnector1.Select;
if Assigned(TConnectorObject(Trace.JoinConnector1).CaptionsGroup) then
TConnectorObject(Trace.JoinConnector1).CaptionsGroup.delete;
if Assigned(TConnectorObject(Trace.JoinConnector1).NotesGroup) then
TConnectorObject(Trace.JoinConnector1).NotesGroup.Delete;
if Assigned(TConnectorObject(Trace.JoinConnector1).DrawFigure) then
TConnectorObject(Trace.JoinConnector1).DrawFigure.Delete;
if Assigned(TConnectorObject(Trace.JoinConnector2).CaptionsGroup) then
TConnectorObject(Trace.JoinConnector2).CaptionsGroup.delete;
if Assigned(TConnectorObject(Trace.JoinConnector2).NotesGroup) then
TConnectorObject(Trace.JoinConnector2).NotesGroup.Delete;
if Assigned(TConnectorObject(Trace.JoinConnector2).DrawFigure) then
TConnectorObject(Trace.JoinConnector2).DrawFigure.Delete;
TConnectorObject(Trace.JoinConnector1).Delete;
TConnectorObject(Trace.JoinConnector2).Delete;
end
else
CanBuildList.Add(0);
end;
//CadList.DeleteSelection(false);
RefreshCAD(CadList.PCad);
// ñòðîèì òðàññû çàíîâî
for i := 0 to Length(PointList1) - 1 do
begin
if CanBuildList[i] > 0 then
begin
p1 := TDoublePoint(PointList1[i]);
p2 := TDoublePoint(PointList2[i]);
CreateTrace(p1, p2);
end
else
NewTraces.Add(TOrthoLine(TracesList[i]));
end;
// ñîåäèíÿåì òðàññû íà ïðîåêòå
// Ýòî åñëè ïîñëå ïåðåñîçäàíèÿ
JoinTracesOnList(NewTraces);
*)
//CADList.PCad.MoveAll(0.001, 0.001);
// 09/02/2017 --
FreeAndNil(ConnectorsList);
if ClearConnectorsList <> nil then
FreeAndNil(ClearConnectorsList);
//
end;
//Tolik 26/02/2022 --
procedure TFSCS_Main.N272AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
var OutText: String;
begin
OutText := (Sender as TMenuItem).Caption;
if (odFocused in State) or (odSelected in State) then
begin
end
else
begin
{if Sender = N33 then
begin
OutText := 'AUTOROUTE';
end;
if Sender = N46 then
begin
OutText := 'LAY OUT ON SELECTED ROUTES';
end;}
ACanvas.Font.Style := [fsBold];
ARect.Left := 32;
ARect.Right := ARect.Right - 32;
ACanvas.brush.color := clWhite; //Tolik 26/01/2021 --
ACanvas.FillRect(ARect);
DrawText(ACanvas.Handle,
PChar(OutText),
-1,
ARect,
DT_VCENTER or dt_LEFT or dt_singleline);
end;
end;
procedure TFSCS_Main.EmptyConnSelectExecute(Sender: TObject);
begin
Select_clearConnectors;
end;
procedure TFSCS_Main.EmptyRaiseVertSelectExecute(Sender: TObject);
Var i: integer;
TraceList: TList;
SCSCatalog: TSCSCatalog;
Figure: TFigure;
begin
if GCadForm <> nil then
begin
TraceList := TList.Create;
for i := 0 to GCadForm.FSCSFigures.Count - 1 do
begin
Figure := TFigure(GCadForm.FSCSFigures[i]);
//if TFigure is TOrthoLine then
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
if (TOrthoLine(Figure).FIsRaiseUpDown or TOrthoLine(Figure).FIsVertical) then
begin
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure.ID);
if SCSCatalog <> nil then
begin
if SCSCatalog.ComponentReferences.Count = 0 then
if TraceList.IndexOf(Figure) = -1 then
TraceList.Add(Figure);
end;
end;
end;
end;
if TraceList.Count > 0 then
begin
GCadForm.PCad.DeselectAll(2);
GCadForm.PCad.SelectFigures(TraceList);
GCadForm.PCad.Refresh;
{
GCadForm.PCad.FAnySelected := True;
GCadForm.PCad.ReDrawSelection;
GCadForm.PCad.SyncEnv;
}
end;
TraceList.Free;
end;
end;
procedure TFSCS_Main.EmptyTracesSelectExecute(Sender: TObject);
Var i: integer;
TraceList: TList;
SCSCatalog: TSCSCatalog;
Figure: TFigure;
begin
if GCadForm <> nil then
begin
TraceList := TList.Create;
for i := 0 to GCadForm.FSCSFigures.Count - 1 do
begin
Figure := TFigure(GCadForm.FSCSFigures[i]);
//if TFigure is TOrthoLine then
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure.ID);
if SCSCatalog <> nil then
begin
if SCSCatalog.ComponentReferences.Count = 0 then
if TraceList.IndexOf(Figure) = -1 then
TraceList.Add(Figure);
end;
end;
end;
if TraceList.Count > 0 then
begin
GCadForm.PCad.DeselectAll(2);
GCadForm.PCad.SelectFigures(TraceList);
GCadForm.PCad.Refresh;
{GCadForm.PCad.FAnySelected := True;
GCadForm.PCad.ReDrawSelection;
GCadForm.PCad.SyncEnv;}
end;
TraceList.Free;
end;
end;
procedure TFSCS_Main.SelectAllPointObjectsExecute(Sender: TObject);
var i, j: Integer;
currList: TSCSList;
aCAd: TF_CAD;
ConnList: TList;
Figure: TFigure;
currCatalog : TSCSCatalog;
Function GetNotEmptyConnectorsList(acurrList: TSCSList; CadList: TF_CAD) : TList;
var j: Integer;
conn1: TConnectorObject;
begin
Result := TList.Create;
if ((acurrList <> nil) and (CadList <> nil)) then
begin
for j := 0 to acurrList.ChildCatalogReferences.Count - 1 do
begin
currCatalog := TSCSCatalog(acurrList.ChildCatalogReferences[j]);
if currCatalog <> nil then
begin
Figure := GetFigureByID(CADList, currCatalog.SCSID);
if Figure <> nil then
begin
if CheckFigureByClassName(Figure, cTConnectorObject) then
begin
Conn1 := TConnectorObject(Figure);
if Conn1.ConnectorType = ct_NB then
Result.Add(Conn1);
end;
end;
end;
end;
end;
end;
Begin
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
if currList <> nil then
begin
aCad := GetListByID(currList.SCSID);
if aCad <> nil then
begin
ConnList := GetNotEmptyConnectorsList(currList, aCad);
if ConnList.Count > 0 then
begin
aCad.PCad.SelectFigures(ConnList);
aCad.PCad.FAnySelected := True;
aCAd.PCad.ReDrawSelection;
aCAd.PCad.SyncEnv;
// RefreshCAD(aCAd.PCad);
FreeAndNil(ConnList);
end
else
ConnList.Free;
end;
end;
end;
procedure TFSCS_Main.SelectAllLineObjsExecute(Sender: TObject);
var i, j: Integer;
currList: TSCSList;
aCAd: TF_CAD;
FigList: TList;
Figure: TFigure;
currCatalog : TSCSCatalog;
TakeRaises: Boolean;
Function GetLineList(acurrList: TSCSList; CadList: TF_CAD) : TList;
var j: Integer;
conn1: TConnectorObject;
function CheckSelectConnector(aConnector: TConnectorObject): Boolean;
var i: Integer;
begin
Result := True;
for i := 0 to aConnector.JoinedConnectorsList.Count - 1 do
begin
if TConnectorObject(aConnector.JoinedConnectorsList[i]).ConnectorType = ct_NB then
begin
Result := false;
break;
end;
end;
end;
begin
Result := TList.Create;
if ((acurrList <> nil) and (CadList <> nil)) then
begin
for j := 0 to acurrList.ChildCatalogReferences.Count - 1 do
begin
currCatalog := TSCSCatalog(acurrList.ChildCatalogReferences[j]);
if currCatalog <> nil then
begin
Figure := GetFigureByID(CADList, currCatalog.SCSID);
if Figure <> nil then
begin
if CheckFigureByClassName(Figure, cTOrthoLine) then
begin
if ( (TOrthoLine(Figure).FIsRaiseUpDown = False) or ((TOrthoLine(Figure).FIsRaiseUpDown = True) and TakeRaises ) )then
begin
Result.Add(Figure);
if TOrthoLine(Figure).JoinConnector1 <> nil then
begin
if CheckSelectConnector(TConnectorObject(TOrthoLine(Figure).JoinConnector1)) then
Result.Add(TOrthoLine(Figure).JoinConnector1);
end;
if TOrthoLine(Figure).JoinConnector2 <> nil then
begin
if CheckSelectConnector(TConnectorObject(TOrthoLine(Figure).JoinConnector2)) then
Result.Add(TOrthoLine(Figure).JoinConnector2);
end;
end
end;
end;
end;
end;
end;
end;
Function ShiftDown : Boolean;
Var
State : TKeyboardState;
Begin
GetKeyboardState(State);
Result := ((State[vk_Shift] and 128) <> 0);
End;
Begin
TakeRaises := ShiftDown; // íàæàòà ëè êëàâèøà Shift
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
if currList <> nil then
begin
aCad := GetListByID(currList.SCSID);
if aCad <> nil then
begin
FigList := GetLineList(currList, aCad);
if FigList.Count > 0 then
begin
aCad.PCad.SelectFigures(FigList);
aCad.PCad.FAnySelected := True;
aCAd.PCad.ReDrawSelection;
aCAd.PCad.SyncEnv;
// RefreshCAD(aCAd.PCad);
//FreeAndNil(FigList);
end;
//else
FreeAndNil(FigList);
{
if TakeRaises then
aCAD.SelectTracesAndRaisers
else
aCAd.SelectTraces;
}
end;
end;
End;
// Tolik
procedure TFSCS_Main.Act_Magistral_Channel_IndexExecute(Sender: TObject);
var i, j, NewIndex: Integer;
SCSComponent: TSCSComponent;
SCSCatalog, SCSCatalog1: TSCSCatalog;
TraceList, PassedTraceList, currChannelList: TList;
aCad: TF_CAD;
currList: TSCSList;
Figure: TFigure;
ChannelTypeList: TStringList;
ActLayer: Integer;
selectedCypher: String;
AllChannelList: TSCSComponents;
JoinConnector, JoinedConn: TConnectorObject;
// added by Tolik
Function GetAngleXYZ(Line1,Line2 : TSCSCatalog; Connector : TConnectorObject) : double;
Var i : integer;
x,y,z,x1,y1,z1 : double; // êîîðäèíàòû âåêòîðîâ
vector1, vector2 : TFigure;
ListOwner : TList;
ListCad : TF_Cad;
connector1, connector2 : TConnectorObject;
angle : double;
angle2 : double;
Begin
// ïåðâûé âåêòîð
ListCad := GetListByID(Line1.GetListOwner.SCSID);
// ëèíèÿ
vector1 := TOrthoLine(GetFigureByID(ListCad,Line1.SCSID));
connector1 := TConnectorObject(Tortholine(vector1).JoinConnector1);
// îïðåäåëÿåì íàïðàâëåíèå âåêòîðà
// if (connector1.ActualPoints[0] = Connector.ActualPoints[0]) and (connector1.ActualPoints.y = Connector.ActualPoints.y) and (connector1.ActualPoints.z = Connector.ActualPoints.z) then
if connector1 = Connector then
begin
connector2 := TConnectorObject(Tortholine(vector1).JoinConnector2);
end
else
begin
connector2 := TConnectorObject(Tortholine(vector1).JoinConnector1);
connector1 := TConnectorObject(Tortholine(vector1).JoinConnector2);
end;
//êîîðäèíàòû âåêòîðà 1
x := RoundX((Connector2.AP1.x - connector1.AP1.x),2);
y := RoundX((connector2.AP1.y - Connector1.AP1.y),2);
z := MetreToUOM(TOrthoLine(vector1).ActualZOrder[1])/ListCad.PCad.MapScale*1000 - MetreToUOM(TOrthoLine(vector1).ActualZOrder[2])/ListCad.PCad.MapScale*1000;
// âòîðîé âåêòîð
ListCad := GetListByID(Line1.GetListOwner.SCSID);
// ëèíèÿ
vector2 := TOrthoLine(GetFigureByID(ListCad,Line2.SCSID));
connector1 := TConnectorObject(Tortholine(vector2).JoinConnector1);
// îïðåäåëÿåì íàïðàâëåíèå âåêòîðà
if ((connector1.ActualPoints[0].x = Connector.ActualPoints[0].x) and (connector1.ActualPoints[0].y = Connector.ActualPoints[0].y) and (connector1.ActualPoints[0].z = Connector.ActualPoints[0].z)) then
begin
connector1 := TConnectorObject(Tortholine(vector2).JoinConnector1);
connector2 := TConnectorObject(Tortholine(vector2).JoinConnector2);
end
else
begin
connector2 := TConnectorObject(Tortholine(vector2).JoinConnector1);
connector1 := TConnectorObject(Tortholine(vector2).JoinConnector2);
end;
//êîîðäèíàòû âåêòîðà 2
x1 := (connector2.AP1.x - Connector1.AP1.x);
y1 := (connector2.AP1.y - Connector1.AP1.y);
z1 := MetreToUOM(TOrthoLine(vector2).ActualZOrder[1])/ListCad.PCad.MapScale*1000 - MetreToUOM(TOrthoLine(vector2).ActualZOrder[2])/ListCad.PCad.MapScale*1000;
//íà âñÿêèé, ÷òîá íå ïîëó÷èòü äåëåíèå íà 0
if (((x<>0) or (y<>0) or (z<>0)) and ((x1<>0) or (y1<>0) or (z1<>0))) then
begin
//angle2 := !!!!abs!!!!((x*x1+y*y1+z*z1)/(sqrt(sqr(x)+sqr(y)+sqr(z))*sqrt(sqr(x1)+sqr(y1)+sqr(z1))));
//Result := Roundx(RadToDeg(arccos(angle2)),1);
angle := arccos((x*x1+y*y1+z*z1)/(sqrt(sqr(x)+sqr(y)+sqr(z))*sqrt(sqr(x1)+sqr(y1)+sqr(z1))));
//óãîë ìåæäó ëèíèÿìè â ãðàäóñàõ
Result := Roundx(RadToDeg(angle),1);
if Result > 180 then
Result := 360 - Result;
end;
End;
procedure RemarkLineComponList(var ComponList: TSCSComponents; var PassedComponList: TList; var counter: Integer);
var i, j: Integer;
SCSComponent: TSCSComponent;
begin
if ComponList.Count > 0 then
begin
for i := 0 to ComponList.Count - 1 do
begin
SCSComponent := TSCSComponent(ComponList[i]);
if PassedComponList.IndexOf(SCSComponent) = -1 then
begin
SCSComponent.MarkID := counter;
// Inc(counter);
SCSComponent.SaveComponent;
PassedComponList.Add(SCSComponent);
ApplyChangeComponMarkID(SCSComponent, true, false, nil);
end;
end;
end;
end;
Function CheckCanTraceRaizeUpDown(ALine : TOrthoLine) : Boolean;
var i : Integer;
begin
Result := true;
if ALine.FIsRaiseUpDown then
begin
if Assigned(ALine.JoinConnector1) then
begin
for i := 0 to TConnectorObject(ALine.JoinConnector1).JoinedConnectorsList.Count - 1 do
begin
if TConnectorObject(TConnectorObject(ALine.JoinConnector1).JoinedConnectorsList[i]).ConnectorType = ct_Nb then
begin
Result := False;
break;
end;
end;
end;
if Result then
begin
if Assigned(ALine.JoinConnector2) then
begin
for i := 0 to TConnectorObject(ALine.JoinConnector2).JoinedConnectorsList.Count - 1 do
begin
if TConnectorObject(TConnectorObject(ALine.JoinConnector2).JoinedConnectorsList[i]).ConnectorType = ct_Nb then
begin
Result := False;
break;
end;
end;
end;
end;
end;
end;
procedure GetComponsFromTraces(aConnector: TConnectorObject; aCypher: string; var PassedList: TList; var ComponList: TSCSComponents; aLine: TOrthoLine);
var i, j, k, l: Integer;
Figure: TFigure;
BeginLine, JoinLine: TOrthoLine;
TempComponList, TempTraceList, TempConnectorsList: TList;
CanTraceNextStep: Boolean;
SCSCatalog : TSCSCatalog;
SCSComponent: TSCSComponent;
currConnector, LineConnector: TConnectorObject;
BetweenLineAngle: Double;
begin
CanTraceNextStep := True;
TempComponList := TList.Create;
TempTraceList := TList.Create;
TempConnectorsList := TList.Create;
currConnector := TConnectorObject(aConnector);
BeginLine := ALine;
while CanTraceNextStep do
begin
for i := 0 to currConnector.JoinedConnectorsList.Count - 1 do
begin
// åñëè ê êîííåêòîðó ïîäêëþ÷åí òî÷å÷íûé - äàëüøå íå èäåì
if TConnectorObject(currConnector.JoinedConnectorsList[i]).ConnectorType = ct_NB then
begin
CanTraceNextStep := False;
// SCSCatalog := //F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TConnectorObject(currConnector.JoinedConnectorsList[i]).ID);
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TConnectorObject(currConnector.JoinedConnectorsList[i]).ID);
if SCSCatalog <> nil then
begin
for j := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := TSCSComponent(SCSCatalog.ComponentReferences[j]);
// åñëè òî÷å÷íûé - ýëåìåíò êàáåëüíîãî êàíàëà - èäåì äàëüøå
if SCSComponent.ComponentType.SysName = ctsnCableChannelElement then
begin
CanTraceNextStep := True;
break;
end;
end;
end;
if not CanTraceNextStep then
Break;
end;
end;
// åñëè òî÷å÷íûõ íåò - èùåì íå ïðîéäåííûå òðàññû
if CanTraceNextStep then
begin
if TempComponList.Count > 0 then
TempComponList.Clear;
if TempTraceList.Count > 0 then
TempTraceList.Clear;
for i := 0 to currConnector.JoinedOrtholinesList.Count - 1 do
begin
JoinLine := TOrthoLine(currConnector.JoinedOrtholinesList[i]);
if CheckCanTraceRaizeUpDown(JoinLine) and (JoinLine <> BeginLine) then
begin
if PassedList.IndexOf(JoinLine) = -1 then
begin
//SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
if SCSCatalog <> nil then
begin
for j := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := TSCSComponent(SCSCatalog.ComponentReferences[j]);
if SCSComponent.Cypher = aCypher then
begin
TempTraceList.Add(JoinLine);
TempComponList.Add(SCSComponent);
LineConnector := TConnectorObject(JoinLine.JoinConnector1);
if LineConnector = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector1))
else
begin
LineConnector := TConnectorObject(JoinLine.JoinConnector2);
if LineConnector = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector2));
end;
PassedList.Add(JoinLine);
break;
end;
end;
end;
end;
end;
end;
for i := 0 to currConnector.JoinedConnectorsList.Count - 1 do
begin
for j := 0 to TConnectorObject(currConnector.JoinedConnectorsList[i]).JoinedOrtholinesList.Count - 1 do
begin
JoinLine := TOrthoLine(TConnectorObject(currConnector.JoinedConnectorsList[i]).JoinedOrtholinesList[j]);
if CheckCanTraceRaizeUpDown(JoinLine) and (JoinLine <> BeginLine) then
begin
if PassedList.IndexOf(JoinLine) = -1 then
begin
if TempTraceList.IndexOf(JoinLine) = -1 then
begin
//SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
if SCSCatalog <> nil then
begin
for k := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := TSCSComponent(SCSCatalog.ComponentReferences[k]);
if SCSComponent.Cypher = aCypher then
begin
TempTraceList.Add(JoinLine);
TempComponList.Add(SCSComponent);
if TConnectorObject(JoinLine.JoinConnector1) = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector1))
else
if TConnectorObject(JoinLine.JoinConnector2) = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector2));
break;
end;
end;
end;
end;
end;
end;
end;
JoinedConn := TConnectorObject(currConnector.JoinedConnectorsList[i]);
for j := 0 to JoinedConn.JoinedConnectorsList.Count - 1 do
begin
for k := 0 to TConnectorObject(JoinedConn.JoinedConnectorsList[j]).JoinedOrtholinesList.Count - 1 do
begin
JoinLine := TOrthoLine(TConnectorObject(JoinedConn.JoinedConnectorsList[j]).JoinedOrtholinesList[k]);
if CheckCanTraceRaizeUpDown(JoinLine) then
begin
if PassedList.IndexOf(JoinLine) = -1 then
begin
if TempTraceList.IndexOf(JoinLine) = -1 then
begin
//SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TFigure(JoinLine).ID);
if SCSCatalog <> nil then
begin
for l := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := TSCSComponent(SCSCatalog.ComponentReferences[l]);
if SCSComponent.Cypher = aCypher then
begin
TempTraceList.Add(JoinLine);
TempComponList.Add(SCSComponent);
if TConnectorObject(JoinLine.JoinConnector1) = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector1))
else
if TConnectorObject(JoinLine.JoinConnector2) = currConnector then
TempConnectorsList.Add(TConnectorObject(JoinLine.JoinConnector2));
break;
end;
end;
end;
end;
end;
end;
end;
end;
end;
end;
// åñëè òðàññ äàëüøå íåò - ñáðîñ
if TempTraceList.Count = 0 then
CanTraceNextStep := False
else
begin
// åñëè òðàññà äàëüøå îäíà - áåðåì ñðàçó è ïðîäîëæàåì
if TempTraceList.Count = 1 then
begin
ComponList.Add(TSCSComponent(TempComponList[0]));
JoinLine := TOrthoLine(TempTraceList[0]);
if CheckCanTraceRaizeUpDown(JoinLine) then
begin
currConnector := nil;
if TempConnectorsList.IndexOf(TConnectorObject(JoinLine.JoinConnector1)) = -1 then
currConnector := TConnectorObject(JoinLine.JoinConnector1)
else
if TempConnectorsList.IndexOf(TConnectorObject(JoinLine.JoinConnector2)) = -1 then
currConnector := TConnectorObject(JoinLine.JoinConnector2);
if currConnector = nil then
CanTraceNextStep := False;
BeginLine := TOrthoLine(TempTraceList[0]);
end;
end
else
// åñëè òðàññ íåñêîëüêî - èùåì (åñëè íàéäåì) òó, êîòîðàÿ ÿâëÿåòñÿ ïðîäîëæåíèåì òåêóùåé òðàññû (180 ãðàä)
if TempTraceList.Count > 1 then
begin
BetweenLineAngle := -1;
//SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TFigure(BeginLine).ID);
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TFigure(BeginLine).ID);
for i := 0 to TempTraceList.Count - 1 do
begin
//SCSCatalog1 := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(TFigure(TempTraceList[i]).ID);
SCSCatalog1 := F_ProjMan.GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(TFigure(TempTraceList[i]).ID);
BetweenLineAngle := GetAngleXYZ(SCSCatalog, SCSCatalog1, currConnector);
if BetweenLineAngle = 180 then
begin
// ïðîäîëæàåì ïóòü
CanTraceNextStep := True;
// èñõîäíàÿ òðàññà
BeginLine := TOrthoLine(TempTraceList[i]);
// èñõîäíûé êîííåêòîð
if TConnectorObject(BeginLine.JoinConnector1) <> currConnector then
currConnector := TConnectorObject(BeginLine.JoinConnector1)
else
if TConnectorObject(BeginLine.JoinConnector2) <> currConnector then
currConnector := TConnectorObject(BeginLine.JoinConnector2);
// êîìïîíåíò äëÿ èíäåêñàöèè - â îáùèé ñïèñîê
ComponList.Add(TSCSComponent(TempComponList[i]));
break;
end;
end;
end;
end;
end;
FreeAndNil(TempComponList);
FreeAndNil(TempTraceList);
FreeAndNil(TempConnectorsList);
end;
begin
ActLayer := GCadForm.PCad.ActiveLayer;
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
aCad := GetListByID(currList.SCSID);
selectedCypher := '';
if aCad <> nil then
begin
TraceList := nil;
PassedTraceList := nil;
ChannelTypeList := nil;
AllChannelList := nil;
currChannelList := nil;
NewIndex := -1;
if aCad.PCad.Selection.Count > 0 then
begin
TraceList := TList.Create;
PassedTraceList := TList.Create;
Figure := TFigure(aCad.PCAD.Selection[0]);
if CheckFigureByClassName(Figure, cTOrthoLine) then // íà âñÿêèé
begin
SCSCatalog := F_ProjMan.GSCSBase.CurrProject.CurrList.GetCatalogFromReferencesBySCSID(Figure.ID);
if SCSCatalog <> nil then
begin
try
NewIndex := StrToInt(InputBox('', '','1'));
except
NewIndex := -1;
end;
if NewIndex <> -1 then
begin
// ñòðîèì ñïèñîê êàá êàíàëîâ íà òðàññå
AllChannelList := TSCSComponents.Create(false);
ChannelTypeList := TStringList.Create;
for i := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin
if TSCSComponent(SCSCatalog.ComponentReferences[i]).ComponentType.SysName = ctsnCableChannel then
begin
SCSComponent := TSCSComponent(SCSCatalog.ComponentReferences[i]);
if ChannelTypeList.IndexOf(SCSComponent.Cypher) = -1 then
begin
ChannelTypeList.Add(SCSComponent.Cypher);
AllChannelList.Add(SCSComponent);
end;
end;
end;
// åñëè êàáêàíàë íà òðàññå òîëüêî îäèí
if AllChannelList.Count = 1 then
selectedCypher := ChannelTypeList[0]
else
if AllChannelList.Count > 1 then
begin
SCSComponent := nil;
SCSComponent := F_ProjMan.SelectComponentFromList(AllChannelList, '', '1', '2', '', 0, [], nil, nil, 0);
end;
if SCSComponent <> nil then
begin
selectedCypher := SCSComponent.Cypher;
AllChannelList.Clear;
PassedTraceList.Add(Figure); // ïðîéäåííûå ôèãóðû - ÷òîáû íå âåðíóòüñÿ íàçàä
AllChannelList.Add(SCSComponent); // ñïèñîê êîìïîíåíò äëÿ ïåðåèíäåêñàöèè
// åñòü âûáðàííûé êîìïîíåíò - øóðóåì ïî òðàññàì â îáå ñòîðîíû, èùåì òàêèå æå, ïîêà ïðèñîåäèíåííàÿ òðàññà òîëüêî îäíà,
// òîëüêî îäíà èç ïðèñîåäèíåííûõ ñ òàêèì æå êîìïîíåíòîì(áåðåì ïåðâûé ïîïàâøèéñÿ), èëè íå çàêîí÷èòñÿ òî÷å÷íûì èëè îáðûâîì
if assigned(TConnectorObject(TOrthoLine(Figure).JoinConnector1)) then
JoinConnector := TConnectorObject(TOrthoLine(Figure).JoinConnector1);
GetComponsFromTraces(JoinConnector, selectedCypher, PassedTraceList, AllChannelList, TOrthoLine(Figure));
if assigned(TConnectorObject(TOrthoLine(Figure).JoinConnector2)) then
JoinConnector := TConnectorObject(TOrthoLine(Figure).JoinConnector2);
GetComponsFromTraces(JoinConnector, selectedCypher, PassedTraceList, AllChannelList, TOrthoLine(Figure));
PassedTraceList.Clear;
RemarkLineComponList(AllChannelList, PassedTraceList, NewIndex);
end;
FreeAndNil(ChannelTypeList);
AllChannelList.Clear;
FreeAndNil(AllChannelList);
end
else
begin
ShowMessage(hReindex_Msg1);
FreeAndNil(TraceList);
FreeAndNil(PassedTraceList);
EXIT;
end;
end;
end;
aCad.PCad.DeselectAll(ActLayer);
aCad.Pcad.Refresh;
end;
end;
end;
procedure TFSCS_Main.actLoadPictasRastrExecute(Sender: TObject);
var
FName: string;
FDir: string;
OpenPictureDialog: TSavePictureDialog;
begin
try
if ActiveMDIChild <> nil then
begin
GisUserDimLine := True;
LoadDXFFileNew(GCadForm.PCad, cMain_Mes120, cMain_Mes124,'', True, True);
//Tolik 11/08/2021 --
if GisUserDimLine then
begin
GetUserScaleVal;
if CompareValue(GuserScaleVal, 0, 0.0001) > 0 then
begin
tbSCSHDimLineExpert.click;
ShowHintRzR(cCadClasses_Mes36_, 5000);
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
end
else
begin
GisUserDimLine := False;
GuserScaleVal := 0;
end;
//
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
except
on E: Exception do AddExceptionToLogEx('TFSCS_Main.aOpenVectorDrawingExecute', E.Message);
end;
end;
procedure TFSCS_Main.Act_AlignSelectionExecute(Sender: TObject);
begin
//
end;
procedure TFSCS_Main.aToolPieExecute(Sender: TObject);
begin
if ActiveMDIChild <> nil then
begin
GCadForm.FCreateObjectOnClick := False;
RestoreCadGridStatus; // Tolik 04/03/2021 --
//if (GCadForm.PCad.ActiveLayer = 0) or CheckOneOfSCSlayers(GCadForm.PCad.ActiveLayer) then
aSetSubstrateLayer.Execute;
GCadForm.PCad.SetTool(toFigure, 'TPie');
//GCadForm.PCad.SetTool(toFigure, 'TArcDimLine');
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.SetSefaultAllowTransparensyExecute(Sender: TObject);
var CurListParams: TListParams;
begin
if ActiveMDIChild <> nil then
begin
try
{GCadForm.FListSettings.AllowTransparency := True;
GCadForm.tbShowTransparency.Down := True;}
CurListParams := GetListParams(GCadForm.FCADListID);
CurListParams.Settings.AllowTransparency := True;
//SaveCADListParams(GCadForm.FCADListID, CurListParams);
RefreshCAD(GCadForm.PCad);
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.a100Execute', E.Message);
end;
end
else
MessageBox(Application.Handle, CActiveListNotExistMessage, cMain_Mes1, MB_OK);
end;
procedure TFSCS_Main.aSetDoubleDoorExecute(Sender: TObject);
var
CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.DoorIndex = -1 then
exit;
if TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Doubled then
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Doubled := False;
GArchEngine.SetLastObjParam(aoskPathDoorDoubled,'FALSE')
end
else
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Doubled := True;
GArchEngine.SetLastObjParam(aoskPathDoorDoubled,'TRUE');
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetDoubleDoorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetOpenedDoorExecute(Sender: TObject);
Var CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.DoorIndex = -1 then
exit;
if TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Opened then
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Opened := False;
GArchEngine.SetLastObjParam(aoskPathDoorOpened,'FALSE');
end
else
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Opened := True;
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).HalfOpened := False;
GArchEngine.SetLastObjParam(aoskPathDoorHalfOpened,'FALSE');
GArchEngine.SetLastObjParam(aoskPathDoorOpened,'TRUE');
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetLeftRightDoorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetHalfOpenedDoorExecute(Sender: TObject);
Var CurSelPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurSelPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurSelPath.DoorIndex = -1 then
exit;
if TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).HalfOpened then
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).HalfOpened := False;
GArchEngine.SetLastObjParam(aoskPathDoorHalfOpened,'FALSE');
end
else
begin
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).HalfOpened := True;
TNetDoor(CurSelPath.doors[CurSelPath.DoorIndex]).Opened := False;
GArchEngine.SetLastObjParam(aoskPathDoorOpened,'FALSE');
GArchEngine.SetLastObjParam(aoskPathDoorHalfOpened,'TRUE');
end;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetLeftRightDoorExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetCornHeightExecute(Sender: TObject);
var dist1, dist2, zCoord: Double;
currPath, JoinedPath: TNetPath;
i, currPathIndex: Integer;
NewZ: String;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
if TNet(GCadForm.PCad.Selection[0]).SelPath <> nil then
begin
CurrPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if CurrPath <> nil then
if CurrPath.p1 <> nil then
if CurrPath.p2 <> nil then
begin
//currPathIndex := TNet(GCadForm.PCad.Selection[0]).Paths.IndexOf(CurrPath);
dist1 := Sqrt(Sqr(CurrPath.p1.x - GMouseDownPos.x) + Sqr(CurrPath.p1.y - GMouseDownPos.y));
dist2 := Sqrt(Sqr(CurrPath.p2.x - GMouseDownPos.x) + Sqr(CurrPath.p2.y - GMouseDownPos.y));
{PathPoint.x := CurrPath.P1.x;
PathPoint.y := CurrPath.P1.y;
PathPoint.z := CurrPath.P1.z;}
i := 1;
zCoord := CurrPath.P1H;
if CompareValue(dist1, dist2) = 1 then
begin
{PathPoint.x := CurrPath.P2.x;
PathPoint.y := CurrPath.P2.y;
PathPoint.z := CurrPath.P2.z;}
//zCoord := CurrPath.P2.z;
zCoord := CurrPath.P2H;
i := 2;
end;
if zCoord < 0 then
NewZ := '-1'
else
NewZ := FloatToStr(zCoord);
if InputQuery(SetAngleHMsg,'', NewZ) then
begin
Try
zCoord := StrToFloat_My(NewZ);
except
Showmessage(IncorrInpVal);
exit;
end;
if zCoord < 0 then
exit
else
if CompareValue(F_ProjMan.GSCSBase.CurrProject.CurrList.Setting.HeightRoom, zCoord) = -1 then
zCoord := F_ProjMan.GSCSBase.CurrProject.CurrList.Setting.HeightRoom;
if i = 1 then
currPath.p1H := zCoord
else
if i = 2 then
currPath.p2H := zCoord;
currPath.Refresh;
RefreshCAD(GCadForm.PCad);
if not GProjectChanged then // Tolik 28/08/2019 --
SetProjectChanged(True);
end;
{if TNet(GCadForm.PCad.Selection[0]).Paths.Count > 1 then
begin
for i := 0 to TNet(GCadForm.PCad.Selection[0]).Paths.Count - 1 do
begin
if i <> currPathIndex then
begin
currPath := TNetPath(TNet(GCadForm.PCad.Selection[0]).Paths[i]);
if CompareValue(currPath.p1.x, PathPoint.x) = 0 then
if CompareValue(currPath.p1.y, PathPoint.y) = 0 then
begin
currPath.p1.z := zCoord;
currPath := nil;
end;
if currPath <> nil then
begin
if CompareValue(currPath.p2.x, PathPoint.x) = 0 then
if CompareValue(currPath.p2.y, PathPoint.y) = 0 then
begin
currPath.p2.z := zCoord;
currPath := nil;
end;
end;
end;
end;
end;
}
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetCornHeightExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetDoorWndHExecute(Sender: TObject);
var
nDoor: TNetDoor;
DWHeight: Double;
DWHeightStr, MStr: string;
SPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
SPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if SPath <> nil then
begin
nDoor := SPath.Net.SelDoor;
MStr := SetDoorH;
if nDoor = nil then
begin
MStr := SetWndH;
nDoor := SPath.Net.SelWindow;
end;
if nDoor <> nil then
begin
DWHeightStr := FloatToStr(nDoor.Height);
if InputQuery(MStr,'', DWHeightStr) then
begin
try
DWHeight := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DWHeight < 0 then
exit
else
begin
nDoor.Height := DWHeight;
SPath.refresh;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetDoorWndHExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetDoorWindowPllacementHeightExecute(Sender: TObject);
var
nDoor: TNetDoor;
DWHeight: Double;
DWHeightStr, MStr: string;
SPath: TNetPath;
begin
try
if CheckFigureByClassName(TFigure(GCadForm.PCad.Selection[0]), 'TNet') then
begin
SPath := TNet(GCadForm.PCad.Selection[0]).SelPath;
if SPath <> nil then
begin
nDoor := SPath.Net.SelDoor;
MStr := SetDoorPLHMsg;
if nDoor = nil then
begin
MStr := SetWinPLHMsg;
nDoor := SPath.Net.SelWindow;
end;
if nDoor <> nil then
begin
DWHeightStr := FloatToStr(nDoor.WndPlacementHeight);
if InputQuery(MStr,'', DWHeightStr) then
begin
try
DWHeight := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DWHeight < 0 then
exit
else
begin
nDoor.WndPlacementHeight := DWHeight;
SPath.refresh;
end;
end;
end;
end;
end;
except
on E: Exception do addExceptionToLogEx('TFSCS_Main.aSetDoorWindowPllacementHeightExecute', E.Message);
end;
end;
procedure TFSCS_Main.aSetAllListDoorsPlacementHeightExecute(Sender: TObject);
var i, j: Integer;
Net: TNet;
DWHeightStr: String;
DoorH: Double;
currPath: TNetPath;
Door: TNetDoor;
begin
if GCadForm.FactiveNet <> nil then
begin
Net := GCadForm.FActiveNet;
DWHeightStr:= FloatToStr(MetreToUom(0.1));
if InputQuery(SetListDoorPLHMsg,'', DWHeightStr) then
begin
try
DoorH := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DoorH >= 0 then
begin
for i := 0 to Net.Paths.count - 1 do
begin
currPath := TNetpath(net.Paths[i]);
for j := 0 to currPath.Doors.Count - 1 do
begin
Door := TNetDoor(currPath.Doors[j]);
if Door.DoorObjType = dotDoor then
Door.WndPlacementHeight := DoorH;
end;
end;
Net.RefreshPaths(false);
end;
end;
end;
end;
procedure TFSCS_Main.aSetAllListWndPlacementExecute(Sender: TObject);
var i, j: Integer;
Net: TNet;
DWHeightStr: String;
DoorH: Double;
currPath: TNetPath;
Door: TNetDoor;
begin
if GCadForm.FactiveNet <> nil then
begin
Net := GCadForm.FActiveNet;
DWHeightStr:= FloatToStr(MetreToUom(0.7));
if InputQuery(SetListWinPLHMsg,'', DWHeightStr) then
begin
try
DoorH := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DoorH >= 0 then
begin
for i := 0 to Net.Paths.count - 1 do
begin
currPath := TNetpath(net.Paths[i]);
for j := 0 to currPath.Doors.Count - 1 do
begin
Door := TNetDoor(currPath.Doors[j]);
if Door.DoorObjType = dotWindow then
Door.WndPlacementHeight := DoorH;
end;
end;
Net.RefreshPaths(false);
end;
end;
end;
end;
procedure TFSCS_Main.aSetAllListDoorsHeightExecute(Sender: TObject);
var i, j: Integer;
Net: TNet;
DWHeightStr: String;
DoorH: Double;
currPath: TNetPath;
Door: TNetDoor;
begin
if GCadForm.FactiveNet <> nil then
begin
Net := GCadForm.FActiveNet;
DWHeightStr:= FloatToStr(MetreToUom(2));
if InputQuery(SetListDoorH,'', DWHeightStr) then
begin
try
DoorH := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DoorH >= 0 then
begin
for i := 0 to Net.Paths.count - 1 do
begin
currPath := TNetpath(net.Paths[i]);
for j := 0 to currPath.Doors.Count - 1 do
begin
Door := TNetDoor(currPath.Doors[j]);
if Door.DoorObjType = dotDoor then
Door.Height := DoorH;
end;
end;
Net.RefreshPaths(false);
end;
end;
end;
end;
procedure TFSCS_Main.aSetAllListWndHeightExecute(Sender: TObject);
var i, j: Integer;
Net: TNet;
DWHeightStr: String;
DoorH: Double;
currPath: TNetPath;
Door: TNetDoor;
begin
if GCadForm.FactiveNet <> nil then
begin
Net := GCadForm.FActiveNet;
DWHeightStr:= FloatToStr(MetreToUom(1.4));
if InputQuery(SetListWndH,'', DWHeightStr) then
begin
try
DoorH := StrToFloat_My(DWHeightStr);
except
Showmessage(IncorrInpVal);
exit;
end;
if DoorH >= 0 then
begin
for i := 0 to Net.Paths.count - 1 do
begin
currPath := TNetpath(net.Paths[i]);
for j := 0 to currPath.Doors.Count - 1 do
begin
Door := TNetDoor(currPath.Doors[j]);
if Door.DoorObjType = dotWindow then
Door.Height := DoorH;
end;
end;
Net.RefreshPaths(false);
end;
end;
end;
end;
end.