how to get real coordinates for Insertion of a block
Moderators: SDS, support, admin
-
- Posts: 4
- Joined: 05 Jul 2019, 13:35
how to get real coordinates for Insertion of a block
There is a lot of insertions of one block in a CADImage. Block contains some set of lines.
How to calculate real coordinates for a specific insertion?
Didn't found example in Demos.
Thanks
How to calculate real coordinates for a specific insertion?
Didn't found example in Demos.
Thanks
Re: how to get real coordinates for Insertion of a block
Hello Pavel,
Real coordinates of block entities for a specific insertion (TsgDXFInsert object) are calculated relatively to the insertion point (TsgDXFInsert.Point). You need to add the insertion point coordinates and coordinates of TsgDXFLine (or any other entity) in the block using an AddFPoint function which is implemented in sgFunction.pas. For example:
Mikhail
Real coordinates of block entities for a specific insertion (TsgDXFInsert object) are calculated relatively to the insertion point (TsgDXFInsert.Point). You need to add the insertion point coordinates and coordinates of TsgDXFLine (or any other entity) in the block using an AddFPoint function which is implemented in sgFunction.pas. For example:
Code: Select all
var
vStartPoint, vEndPoint: TFPoint;
vDXFInsert: TsgDXFInsert;
...
vStartPoint := AddFPoint(vDXFInsert.Point, TsgDXFLine(vDXFInsert.Block.Entities[I]).Point);
vEndPoint := AddFPoint(vDXFInsert.Point, TsgDXFLine(vDXFInsert.Block.Entities[I]).Point1);
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support
Chat support on Skype: cadsofttools.support
-
- Posts: 4
- Joined: 05 Jul 2019, 13:35
Re: how to get real coordinates for Insertion of a block
Thanks for reply.
I've looked in source of the AddFPoint function. There is nothing about such Insertion parameters as Scale and Angle. May be I need some function that use Matrix property?
Block object also has property Offset. Should it be involved in calculations too?
I've looked in source of the AddFPoint function. There is nothing about such Insertion parameters as Scale and Angle. May be I need some function that use Matrix property?
Block object also has property Offset. Should it be involved in calculations too?
Code: Select all
Block #1 (24 lines):
Offset: X=0,00 Y=0,00; Box: L=811330,54 T=717214,55 R=811363,28 B=717188,29
Insert:
Angle: 0,00; Scale: X=-1,00 Y=1,00; Point: X=810463,56 Y:-716702,68
Angle: 7,49; Scale: X=1,00 Y=1,00; Point: X=-709634,02 Y:-816594,83
Angle: 101,27; Scale: X=1,00 Y=1,00; Point: X=863204,19 Y:-655433,75
Block #2 (340 lines):
Offset: X=0,00 Y=0,00; Box: L=-188,51 T=184,80 R=175,03 B=-150,13
Insert:
Angle: 0,00; Scale: X=0,49 Y=0,49; Point: X=-465,40 Y:533,48
Angle: 0,00; Scale: X=0,49 Y=0,49; Point: X=-789,31 Y:533,48
-
- Posts: 4
- Joined: 05 Jul 2019, 13:35
Re: how to get real coordinates for Insertion of a block
better solution - using FPointXMat function.
Code: Select all
var
i: integer;
aMatrix: TFMatrix;
vStartPoint, vEndPoint: TFPoint;
vDXFInsert: TsgDXFInsert;
...
aMatrix := vDXFInsert.GetMatrix;
for i := 0 to vDXFInsert.Block.Count-1 do
begin
vStartPoint := FPointXMat(TsgDXFLine(vDXFInsert.Block.Entities[i]).Point, aMatrix);
vEndPoint := FPointXMat(TsgDXFLine(vDXFInsert.Block.Entities[i]).Point1, aMatrix);
...
end;