mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
First commit
This commit is contained in:
parent
125a2f2a0b
commit
6d2b2f87ce
@ -3405,7 +3405,7 @@ object frm3D: Tfrm3D
|
||||
Left = 100
|
||||
Top = 57
|
||||
Bitmap = {
|
||||
494C01013A00B000940210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
494C01013A00B000DC0210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
|
||||
000000000000360000002800000040000000F0000000010020000000000000F0
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
||||
@ -660,6 +660,7 @@ type
|
||||
procedure Move3DRaiseConnector(aObj: T3DConnector; dp: T3DPoint);
|
||||
procedure Move3DBetweenRaiseConnector(aObj: T3DConnector; dp: 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 Trace3DLine(aObj: TGLBaseSceneObject; dx, dy: Integer);
|
||||
@ -12524,11 +12525,16 @@ var
|
||||
ComponNode, NewTraceNode, CadListNode, xScsNode: TTreeNode;
|
||||
LineToMove, xLine: T3dLine;
|
||||
SCSObjList: TList; // ñïèñîê îáúåêòîâ, êîòîðûå íóæíî áóäåò ïåðåïàðñèòü
|
||||
SelObj: TGLBaseSceneObject; // save selection
|
||||
SelObjClassNAme: string; // save selection
|
||||
IstubeSel: Boolean; // if is tube select on trace
|
||||
SelID: integer;
|
||||
SelList: TList;
|
||||
selCatalog: TSCSCatalog;
|
||||
CameraPos: T3DPoint;
|
||||
|
||||
procedure SynchronizeCoordsToCad(aPoint: TDoublePoint; aSide: integer);
|
||||
var SCSConn: TConnectorObject;
|
||||
i: integer;
|
||||
begin
|
||||
if aSide = 1 then
|
||||
SCSConn := TConnectorObject(SCSLine.JoinConnector1)
|
||||
@ -12539,19 +12545,54 @@ var
|
||||
(CompareValue(SCSConn.ap1.y, aPoint.y) <> 0)) then
|
||||
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;
|
||||
begin
|
||||
//Tolik 03/07/2025 -- Ïðîâåðêà íà âûëåò çà ïðåäåëû Êàäà
|
||||
if ((not CheckCanMoveConnector(aLine.FJoinConnector1, adp)) or
|
||||
(not CheckCanMoveConnector(aLine.FJoinConnector2, adp))) then
|
||||
exit;
|
||||
//
|
||||
|
||||
//26/06/2025 -- save selection
|
||||
SelObj := nil;
|
||||
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
|
||||
SelObj := TGLBaseSceneObject(FSelection[i]);
|
||||
if SelObj.TagObject <> nil then
|
||||
SelObjClassNAme := TObject(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).ClassName;
|
||||
|
||||
if TGLBaseSceneObject(FSelection[0]).TagObject <> nil then
|
||||
begin
|
||||
if TObject(TTreeNode(SelObj.TagObject).Data).ClassName = 'T3DLineComponent' then
|
||||
IstubeSel := True;
|
||||
if SelObjClassNAme = 'T3DLineComponent' then
|
||||
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;
|
||||
|
||||
DeselectGLObjectsT; // drop selection
|
||||
@ -12667,11 +12708,6 @@ var
|
||||
//CAD
|
||||
SavedGCadForm := GCadForm;
|
||||
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.y := Round2(aLine.FPoint2.y);
|
||||
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);
|
||||
@ -12888,7 +12929,6 @@ var
|
||||
|
||||
TObject(Obj3dList[i]).Free;
|
||||
end;
|
||||
Obj3dList.Free;
|
||||
|
||||
//ñîáðàòü ÑÊÑ-îáúåêòû, êîòîðûå çàäåë ñäâèã
|
||||
SCSObjList := TList.Create;
|
||||
@ -13032,8 +13072,46 @@ var
|
||||
end;
|
||||
//3D
|
||||
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;
|
||||
|
||||
end;
|
||||
//
|
||||
begin
|
||||
@ -23717,6 +23795,10 @@ begin
|
||||
exit;
|
||||
xGLObject := nil;
|
||||
xConn := aObj;
|
||||
//Tolik 03/07/2025 -- ïðîâåðêà íà âûëåò çà ïðåäåëû Êàäà
|
||||
if not CheckCanMoveConnector(xConn, dp) then
|
||||
exit;
|
||||
//
|
||||
if not CheckCanMoveConn(aObj) then
|
||||
exit;
|
||||
// Tolik 26/04/2018 --
|
||||
@ -24962,6 +25044,45 @@ begin
|
||||
LineCubeList.free;
|
||||
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;
|
||||
var
|
||||
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