mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
First commit
This commit is contained in:
parent
125a2f2a0b
commit
6d2b2f87ce
@ -3405,7 +3405,7 @@ object frm3D: Tfrm3D
|
|||||||
Left = 100
|
Left = 100
|
||||||
Top = 57
|
Top = 57
|
||||||
Bitmap = {
|
Bitmap = {
|
||||||
494C01013A00B000940210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
494C01013A00B000DC0210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||||
000000000000360000002800000040000000F0000000010020000000000000F0
|
000000000000360000002800000040000000F0000000010020000000000000F0
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
0000000000000000000000000000000000000000000000000000000000000000
|
0000000000000000000000000000000000000000000000000000000000000000
|
||||||
|
|||||||
@ -660,6 +660,7 @@ type
|
|||||||
procedure Move3DRaiseConnector(aObj: T3DConnector; dp: T3DPoint);
|
procedure Move3DRaiseConnector(aObj: T3DConnector; dp: T3DPoint);
|
||||||
procedure Move3DBetweenRaiseConnector(aObj: T3DConnector; dp: T3DPoint);
|
procedure Move3DBetweenRaiseConnector(aObj: T3DConnector; dp: T3DPoint);
|
||||||
procedure Move3DLine(aObj: T3DConnector; aLine: T3DLine; aPos: T3DPoint);
|
procedure Move3DLine(aObj: T3DConnector; aLine: T3DLine; aPos: T3DPoint);
|
||||||
|
function CheckCanMoveConnector(aConn: T3DConnector; mp: T3DPoint): boolean; // Tolik 03/07/2025 -- ïðîâåðêà íå âûëåòèò ëè êîííåêòîð çà ïðåäåëû Êàäà, åñëè åãî çäåñü ïîäâèíóòü
|
||||||
|
|
||||||
procedure Trace3DConnector(aObj: TGLBaseSceneObject; dx, dy: Integer);
|
procedure Trace3DConnector(aObj: TGLBaseSceneObject; dx, dy: Integer);
|
||||||
procedure Trace3DLine(aObj: TGLBaseSceneObject; dx, dy: Integer);
|
procedure Trace3DLine(aObj: TGLBaseSceneObject; dx, dy: Integer);
|
||||||
@ -12524,11 +12525,16 @@ var
|
|||||||
ComponNode, NewTraceNode, CadListNode, xScsNode: TTreeNode;
|
ComponNode, NewTraceNode, CadListNode, xScsNode: TTreeNode;
|
||||||
LineToMove, xLine: T3dLine;
|
LineToMove, xLine: T3dLine;
|
||||||
SCSObjList: TList; // ñïèñîê îáúåêòîâ, êîòîðûå íóæíî áóäåò ïåðåïàðñèòü
|
SCSObjList: TList; // ñïèñîê îáúåêòîâ, êîòîðûå íóæíî áóäåò ïåðåïàðñèòü
|
||||||
SelObj: TGLBaseSceneObject; // save selection
|
SelObjClassNAme: string; // save selection
|
||||||
IstubeSel: Boolean; // if is tube select on trace
|
IstubeSel: Boolean; // if is tube select on trace
|
||||||
|
SelID: integer;
|
||||||
|
SelList: TList;
|
||||||
|
selCatalog: TSCSCatalog;
|
||||||
|
CameraPos: T3DPoint;
|
||||||
|
|
||||||
procedure SynchronizeCoordsToCad(aPoint: TDoublePoint; aSide: integer);
|
procedure SynchronizeCoordsToCad(aPoint: TDoublePoint; aSide: integer);
|
||||||
var SCSConn: TConnectorObject;
|
var SCSConn: TConnectorObject;
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
if aSide = 1 then
|
if aSide = 1 then
|
||||||
SCSConn := TConnectorObject(SCSLine.JoinConnector1)
|
SCSConn := TConnectorObject(SCSLine.JoinConnector1)
|
||||||
@ -12539,19 +12545,54 @@ var
|
|||||||
(CompareValue(SCSConn.ap1.y, aPoint.y) <> 0)) then
|
(CompareValue(SCSConn.ap1.y, aPoint.y) <> 0)) then
|
||||||
SCSConn.Move(aPoint.x - SCSConn.ap1.x, aPoint.y - SCSConn.ap1.y);
|
SCSConn.Move(aPoint.x - SCSConn.ap1.x, aPoint.y - SCSConn.ap1.y);
|
||||||
//ïî âûñîòå (òóò âîïðîñ... êàê ïîéäåò)...
|
//ïî âûñîòå (òóò âîïðîñ... êàê ïîéäåò)...
|
||||||
// if CompareValue(SCSConn.ActualZOrder[1], aPoint.z) <> 0 then
|
if CompareValue(SCSConn.ActualZOrder[1], aPoint.z) <> 0 then
|
||||||
|
begin
|
||||||
|
SCSConn.ActualZOrder[1] := aPoint.z;
|
||||||
|
SetConFigureCoordZInPM(SCSConn.ID, SCSConn.ActualZOrder[1]);
|
||||||
|
for i := 0 to SCSConn.JoinedOrtholinesList.Count - 1 do
|
||||||
|
begin
|
||||||
|
if TOrtholine(SCSConn.JoinedOrtholinesList[i]).JoinConnector1.ID = SCSConn.ID then
|
||||||
|
TOrtholine(SCSConn.JoinedOrtholinesList[i]).ActualZOrder[1] := aPoint.z
|
||||||
|
else
|
||||||
|
TOrtholine(SCSConn.JoinedOrtholinesList[i]).ActualZOrder[2] := aPoint.z;
|
||||||
|
|
||||||
|
TOrtholine(SCSConn.JoinedOrtholinesList[i]).CalculLength := TOrtholine(SCSConn.JoinedOrtholinesList[i]).LengthCalc;
|
||||||
|
TOrtholine(SCSConn.JoinedOrtholinesList[i]).LineLength := TOrtholine(SCSConn.JoinedOrtholinesList[i]).CalculLength;
|
||||||
|
SetLineFigureLengthInPM(TOrtholine(SCSConn.JoinedOrtholinesList[i]).ID, TOrtholine(SCSConn.JoinedOrtholinesList[i]).LineLength);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
begin
|
begin
|
||||||
|
//Tolik 03/07/2025 -- Ïðîâåðêà íà âûëåò çà ïðåäåëû Êàäà
|
||||||
|
if ((not CheckCanMoveConnector(aLine.FJoinConnector1, adp)) or
|
||||||
|
(not CheckCanMoveConnector(aLine.FJoinConnector2, adp))) then
|
||||||
|
exit;
|
||||||
|
//
|
||||||
|
|
||||||
//26/06/2025 -- save selection
|
//26/06/2025 -- save selection
|
||||||
SelObj := nil;
|
|
||||||
IstubeSel := False;
|
IstubeSel := False;
|
||||||
|
SelId := -1;
|
||||||
|
CameraPos.x := GLSceneViewer.Camera.Position.X;
|
||||||
|
CameraPos.y := GLSceneViewer.Camera.Position.Y;
|
||||||
|
CameraPos.z := GLSceneViewer.Camera.Position.Z;
|
||||||
|
|
||||||
|
|
||||||
if FSelection.Count > 0 then
|
if FSelection.Count > 0 then
|
||||||
SelObj := TGLBaseSceneObject(FSelection[i]);
|
SelObjClassNAme := TObject(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).ClassName;
|
||||||
if SelObj.TagObject <> nil then
|
|
||||||
|
if TGLBaseSceneObject(FSelection[0]).TagObject <> nil then
|
||||||
begin
|
begin
|
||||||
if TObject(TTreeNode(SelObj.TagObject).Data).ClassName = 'T3DLineComponent' then
|
if SelObjClassNAme = 'T3DLineComponent' then
|
||||||
IstubeSel := True;
|
begin
|
||||||
|
if T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSCompon <> nil then
|
||||||
|
SelID := T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSCompon.ID;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if SelObjClassNAme = 'T3DLine' then
|
||||||
|
begin
|
||||||
|
if T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSObject <> nil then
|
||||||
|
SelID := T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSObject.ID;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
DeselectGLObjectsT; // drop selection
|
DeselectGLObjectsT; // drop selection
|
||||||
@ -12667,11 +12708,6 @@ var
|
|||||||
//CAD
|
//CAD
|
||||||
SavedGCadForm := GCadForm;
|
SavedGCadForm := GCadForm;
|
||||||
GCadForm := TF_CAD(TPowerCad(TOrthoLine(aLine.FSCSObject).Owner).Owner);
|
GCadForm := TF_CAD(TPowerCad(TOrthoLine(aLine.FSCSObject).Owner).Owner);
|
||||||
//Tolik 24/06/2025 --\
|
|
||||||
//Ñèíõðîíèçèðîâàòü êîîðäèíàòû ñ Êàäîì
|
|
||||||
SynchronizeCoordsToCad(aLine.FPoint1, 1);
|
|
||||||
SynchronizeCoordsToCad(aLine.FPoint2, 2);
|
|
||||||
//
|
|
||||||
|
|
||||||
//ñîçäàòü äâà íîâûõ êîííåêòîðà
|
//ñîçäàòü äâà íîâûõ êîííåêòîðà
|
||||||
//îñíîâíàÿ ïðîáëåìà çäåñü....
|
//îñíîâíàÿ ïðîáëåìà çäåñü....
|
||||||
@ -12682,6 +12718,11 @@ var
|
|||||||
aLine.FPoint2.x := Round2(aLine.FPoint2.x);
|
aLine.FPoint2.x := Round2(aLine.FPoint2.x);
|
||||||
aLine.FPoint2.y := Round2(aLine.FPoint2.y);
|
aLine.FPoint2.y := Round2(aLine.FPoint2.y);
|
||||||
aLine.FPoint2.z := Round2(aLine.FPoint2.z);
|
aLine.FPoint2.z := Round2(aLine.FPoint2.z);
|
||||||
|
|
||||||
|
//Tolik 24/06/2025 --\
|
||||||
|
//Ñèíõðîíèçèðîâàòü êîîðäèíàòû ñ Êàäîì
|
||||||
|
SynchronizeCoordsToCad(aLine.FPoint1, 1);
|
||||||
|
SynchronizeCoordsToCad(aLine.FPoint2, 2);
|
||||||
//
|
//
|
||||||
|
|
||||||
CreatedConn1 := TConnectorObject.Create(aLine.FPoint1.x, aLine.FPoint1.y, aLine.FPoint1.z, integer(GCadForm.PCad.Layers[2]),mydsNormal,GCadForm.PCad);
|
CreatedConn1 := TConnectorObject.Create(aLine.FPoint1.x, aLine.FPoint1.y, aLine.FPoint1.z, integer(GCadForm.PCad.Layers[2]),mydsNormal,GCadForm.PCad);
|
||||||
@ -12888,7 +12929,6 @@ var
|
|||||||
|
|
||||||
TObject(Obj3dList[i]).Free;
|
TObject(Obj3dList[i]).Free;
|
||||||
end;
|
end;
|
||||||
Obj3dList.Free;
|
|
||||||
|
|
||||||
//ñîáðàòü ÑÊÑ-îáúåêòû, êîòîðûå çàäåë ñäâèã
|
//ñîáðàòü ÑÊÑ-îáúåêòû, êîòîðûå çàäåë ñäâèã
|
||||||
SCSObjList := TList.Create;
|
SCSObjList := TList.Create;
|
||||||
@ -13032,8 +13072,46 @@ var
|
|||||||
end;
|
end;
|
||||||
//3D
|
//3D
|
||||||
UpdateFaces(FaceList);
|
UpdateFaces(FaceList);
|
||||||
|
//restore selection
|
||||||
|
SelList := TList.Create;
|
||||||
|
for i := 0 to SCSModelTree.Items.Count - 1 do
|
||||||
|
begin
|
||||||
|
if TObject(TTreeNode(SCSModelTree.Items[i]).data).classname = SelObjClassNAme then
|
||||||
|
begin
|
||||||
|
if SelObjClassNAme = 'T3DLineComponent' then
|
||||||
|
begin
|
||||||
|
if T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FSCSCompon.ID = SelID then
|
||||||
|
begin
|
||||||
|
SelList.Add(T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FGLObject);
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if SelObjClassNAme = 'T3DLine' then
|
||||||
|
begin
|
||||||
|
if T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = SelID then
|
||||||
|
begin
|
||||||
|
SelList.Add(T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FGLObject);
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if SelList.Count > 0 then
|
||||||
|
SelectGLObjects(SelList);
|
||||||
|
|
||||||
|
FaceList.Free;
|
||||||
|
ObjList.Free;
|
||||||
|
Obj3dList.Free;
|
||||||
|
SelList.Free;
|
||||||
|
SCSObjList.Free;
|
||||||
|
//Tolik 01/07/2025 -- êàìåðó íà ìåñòî
|
||||||
|
GLSceneViewer.Camera.Position.X := CameraPos.x;
|
||||||
|
GLSceneViewer.Camera.Position.y := CameraPos.y;
|
||||||
|
GLSceneViewer.Camera.Position.z := CameraPos.z;
|
||||||
|
|
||||||
GCadForm := SavedGCadForm;
|
GCadForm := SavedGCadForm;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
//
|
//
|
||||||
begin
|
begin
|
||||||
@ -23717,6 +23795,10 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
xGLObject := nil;
|
xGLObject := nil;
|
||||||
xConn := aObj;
|
xConn := aObj;
|
||||||
|
//Tolik 03/07/2025 -- ïðîâåðêà íà âûëåò çà ïðåäåëû Êàäà
|
||||||
|
if not CheckCanMoveConnector(xConn, dp) then
|
||||||
|
exit;
|
||||||
|
//
|
||||||
if not CheckCanMoveConn(aObj) then
|
if not CheckCanMoveConn(aObj) then
|
||||||
exit;
|
exit;
|
||||||
// Tolik 26/04/2018 --
|
// Tolik 26/04/2018 --
|
||||||
@ -24962,6 +25044,45 @@ begin
|
|||||||
LineCubeList.free;
|
LineCubeList.free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function Tfrm3D.CheckCanMoveConnector(aConn: T3DConnector; mp: T3DPoint): Boolean; // Tolik 03/07/2025 -- ïðîâåðêà íå âûëåòèò ëè êîííåêòîð çà ïðåäåëû Êàäà, åñëè åãî çäåñü ïîäâèíóòü
|
||||||
|
var p: TDoublePoint;
|
||||||
|
SCSConn: TConnectorObject;
|
||||||
|
i: integer;
|
||||||
|
currPCad: TPowerCad;
|
||||||
|
begin
|
||||||
|
Result := True;
|
||||||
|
SCSConn := aConn.FSCSObject;
|
||||||
|
|
||||||
|
if SCSConn <> nil then
|
||||||
|
begin
|
||||||
|
currPcad := TPowerCad(SCSConn.Owner);
|
||||||
|
//âûëåòò âëåâî èëè ââåðõ
|
||||||
|
if CompareValue(Round2((aConn.FGLPoint.x + mp.x)/0.15), 0) = -1 then
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if CompareValue(Round2((aConn.FGLPoint.z + mp.z)/0.15), 0) = -1 then
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
//âûëåò âïðàâî èëè âíèç
|
||||||
|
if CompareValue(Round2((aConn.FGLPoint.x + mp.x)/0.15), currPcad.WorkWidth) = 1 then
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if CompareValue(Round2((aConn.FGLPoint.z + mp.z)/0.15), currPcad.WorkHeight) = 1 then
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function Tfrm3D.IsConnectorMoved(aConn: T3DConnector): Boolean;
|
function Tfrm3D.IsConnectorMoved(aConn: T3DConnector): Boolean;
|
||||||
var
|
var
|
||||||
i: integer;
|
i: integer;
|
||||||
|
|||||||
1
readme.txt
Normal file
1
readme.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
тут до изменения UNDO перед 3Д, чтобы потом норм восстановить, так как придется внести слишком много изменений
|
||||||
Loading…
x
Reference in New Issue
Block a user