?? sgconsts.pas
字號:
{************************************************************}
{ Delphi VCL Extensions }
{ }
{ Basic constants and types }
{ }
{ Copyright (c) 2002-2007 SoftGold software company }
{ }
{************************************************************}
unit sgConsts;
{$INCLUDE SGDXF.INC}
interface
uses
Windows, Classes, Registry;
const
//dxf/dwg colors
clByLayer = $2FFFFFFF;
clByBlock = $3FFFFFFF;
// Constants for CAD import (entities)
DXF_SEC_TABLES = 0;
DXF_SEC_BLOCKS = 1;
DXF_SEC_ENTITIES = 2;
DXF_SEC_LTYPE = 3;
DXF_SEC_LAYERS = 4;
DXF_UNKNOWN = 0;
DXF_TABLE = 1;
DXF_BLOCK = 2;
DXF_LTYPE = 3;
DXF_LAYER = 4;
DXF_VERTEX = 5;
DXF_LINE = 6;
DXF_SOLID = 7;
DXF_CIRCLE = 8;
DXF_ARC = 9;
DXF_POLYLINE = 10;
DXF_LWPOLYLINE = 11;
DXF_SPLINE = 12;
DXF_INSERT = 13;
DXF_DIMENSION = 14;
DXF_TEXT = 15;
DXF_MTEXT = 16;
DXF_ATTDEF = 17;
DXF_ELLIPSE = 18;
DXF_POINT = 19;
DXF_3DFACE = 20;
DXF_HATCH = 21;
DXF_IMAGE_ENT = 22;
DXF_ATTRIB = 23;
DXF_BEGIN_POLYLINE = 100;
DXF_END_POLYLINE = 101;
DXF_BEGIN_INSERT = 102;
DXF_END_INSERT = 103;
DXF_BEGIN_VIEWPORT = 104;
DXF_END_VIEWPORT = 105;
// Constants for reading CAD images
Info_0 = 0;
Text_1 = 1;
Name_2 = 2;
Text_3 = 3;
Text_4 = 4;
Text_5 = 5;
LineTypeName_6 = 6;
TextFont_7 = 7;
LayerName_8 = 8;
VarName_9 = 9;
XFirst_10 = 10;
XOther_11 = 11;
XOther_12 = 12;
XOther_13 = 13;
XOther_14 = 14;
XOther_15 = 15;
XOther_16 = 16;
XOther_17 = 17;
XOther_18 = 18;
XOther_110 = 110;
XOther_111 = 111;
XOther_112 = 112;
YFirst_20 = 20;
YOther_21 = 21;
YOther_22 = 22;
YOther_23 = 23;
YOther_24 = 24;
YOther_25 = 25;
YOther_26 = 26;
YOther_27 = 27;
YOther_28 = 28;
YOther_120 = 120;
YOther_121 = 121;
YOther_122 = 122;
ZFirst_30 = 30;
ZOther_31 = 31;
ZOther_32 = 32;
ZOther_33 = 33;
ZOther_34 = 34;
ZOther_35 = 35;
ZOther_36 = 36;
ZOther_37 = 37;
ZOther_130 = 130;
ZOther_131 = 131;
ZOther_132 = 132;
Elevation_38 = 38;
TableOfEntity_39 = 39;
Float_40 = 40;
Float_41 = 41;
Float_42 = 42;
Float_43 = 43;
Float_44 = 44;
Float_45 = 45;
Float_46 = 46;
Float_47 = 47;
Float_48 = 48;
FloatRepeated_49 = 49;
Float_140 = 140;
Float_141 = 141;
Float_142 = 142;
Float_143 = 143;
Float_144 = 144;
Float_145 = 145;
Float_146 = 146;
Float_147 = 147;
Float_148 = 148;
Float_149 = 149;
Float_211 = 211;
Float_221 = 221;
Float_231 = 231;
Angle_50 = 50;
Angle_51 = 51;
Angle_52 = 52;
Angle_53 = 53;
Angle_54 = 54;
Angle_55 = 55;
Angle_56 = 56;
Angle_57 = 57;
Angle_58 = 58;
Visible_60 = 60;
ColorNumber_62 = 62;
UCSVP_65 = 65;
EntitysBegin_66 = 66;
PaperSpace_67 = 67;
Integer_68 = 68;
Integer_69 = 69;
Integer_70 = 70;
Integer_71 = 71;
Integer_72 = 72;
Integer_73 = 73;
Integer_74 = 74;
Integer_75 = 75;
Integer_76 = 76;
Integer_77 = 77;
Integer_78 = 78;
Integer_79 = 79;
Integer_90 = 90;
Integer_91 = 91;
Integer_92 = 92;
Integer_93 = 93;
Integer_97 = 97;
Integer_290 = 290;
Integer_1070 = 1070;
Extrusion_210 = 210;
Extrusion_220 = 220;
Extrusion_230 = 230;
String_100 = 100;
String_310 = 310;
String_330 = 330;
String_331 = 331;
String_340 = 340;
String_341 = 341;
Integer_370 = 370;
String_1000 = 1000;
String_1005 = 1005;
Float_1040 = 1040;
UserDigit = 23111;
sgDimensionArrowTypeNames: array [0..19] of string = ('_CLOSEDFILLED',
'_CLOSEDBLANK', '_CLOSED', '_DOT', '_ARCHITECTURALTICK', '_OBLIQUE',
'_OPEN', '_ORIGIN', '_ORIGIN2', '_RIGHTANGLE', '_OPEN30', '_DOTSMALL',
'_DOTBLANK', '_DOTSMALLBLANK', '_BOX', '_BOXFILLED', '_DATUMTRIANGLE',
'_INTEGRAL', '_USERARROW', '_NONE');
sByBlock = 'BYBLOCK';
sByLayer = 'BYLAYER';
sContinuous = 'CONTINUOUS';
sModel = 'Model';
sLayout = 'Layout1';
sACADXDataAppName = 'ACAD';
sActiveVPort = '*ACTIVE';
sModelSpace = '*MODEL_SPACE';
sPaperSpace = '*PAPER_SPACE';
sTextStyleStandardName = 'STANDARD';
// Names of a DXF-entities
sPolyline = 'Polyline';
sCircle = 'Circle';
sEllipse = 'Ellipse';
sHatchEntity = 'HATCH';
sPatternSOLID = 'SOLID';
sPatternANSI31 = 'ANSI31';// FDiagonal, BDiagonal
sPatternANSI37 = 'ANSI37';// DiagCross
sPatternNET = 'NET'; // Cross
sPatternLINE = 'LINE'; // Horizintal, Vertical
sRedlineLayerName = 'Redline_layer';
// Default numbers of parts for parsing circle and spline
iDefaultNumberOfCircleParts = 47;//13;
iDefaultNumberOfSplineParts = 24;
iCurrentNumberOfCircleParts: Integer = iDefaultNumberOfCircleParts;
iCurrentNumberOfSplineParts: Integer = iDefaultNumberOfSplineParts;
iMinNumberOfCircleParts = 4;
//Maximum count of the lines in a dotted polyline or curve
//(if count of lines more then iMaxNumDottedLines we draws solid-polyline)
iMaxNumDottedLines = 1000;
//It is necessary for comparison floating-point numbers
fAccuracy = 0.000001;
// bad value for all singles
BadSingValue: Single = -24444444;
// Windows text height factor
fWinTextHeightFactor: Extended = 1.6000000000;
// Windows text Y-offset factor by height
fWinTextYOffsetFactor: Extended = 0.2700000000;
// Pi / 180
fPiDividedBy180: Extended = 0.017453292519943295769236907684886;
// 180 / Pi
f180DividedByPi: Extended = 57.295779513082320876798154814105;
//Lineweight settings
bLineWeightOn: Boolean = True;
fLineWeightByLayer: Double = -1.0;
fLineWeightByBlock: Double = -2.0;
fLineWeightDefault: Double = -3.0;
fLineWeightFactor: Single = 1.0;
sLineWeightFactor = 'LineWeightDispFactor';
sCorruptedDWGfileHeader: string = 'DWG file header is corrupted';
sEncryptedByPassword: string = 'Encrypted by password';
sUnsupportedOldDWGVer: string = 'Unsupported old DWG version ID:';
sUnsupportedNewDWGVer: string = 'Unsupported new DWG version ID:';
var
bUseSHXFonts: Boolean = False;
bUseGDIPlusForRastImgRotate: Boolean = False;
//bUseTTFFonts: Boolean = False;
bSearchSHXPaths: Boolean = True;
sDefaultSHXPath: string = '';
sDefaultSHXFont: string = 'simplex.shx';//'txt.shx';
sSHXSearchPaths: string = '';
sgClientRect: TRect = (Left:MaxInt; Top:MaxInt; Right:-MaxInt; Bottom:-MaxInt);
sgClientRectForSnap: TRect;
sgVisibleArea: TPoint; //!Snap!
const
sImpossiblePointerID = '#';
sInternalDimension = 'sgDim';
sFilledArrowForLeader = 'Filled_arrow_for_leader';
sNewBlockID = '#NewBlockID';
SMessageAnalysing: string = 'Performing file analysing';
SMessageCleaning: string = 'Performing file cleaning';
sLoadFile: string = 'Loading file...';
sLoadEntities: string = 'Loading entities...';
// AutoCAD 8-bit colors
arrDXFtoRGBColors: array [0..255] of Cardinal = (
$000000, $0000FF, $00FFFF, $00FF00, $FFFF00, $FF0000, $FF00FF, $FFFFFF,
$808080, $C0C0C0, $0000FF, $7F7FFF, $0000CC, $6666CC, $000099, $4C4C99,
$00007F, $3F3F7F, $00004C, $26264C, $003FFF, $7F9FFF, $0033CC, $667FCC,
$002699, $4C5F99, $001F7F, $3F4F7F, $00134C, $262F4C, $007FFF, $7FBFFF,
$0066CC, $6699CC, $004C99, $4C7299, $003F7F, $3F5F7F, $00264C, $26394C,
$00BFFF, $7FDFFF, $0099CC, $66B2CC, $007299, $4C8599, $005F7F, $3F6F7F,
$00394C, $26424C, $00FFFF, $7FFFFF, $00CCCC, $66CCCC, $009999, $4C9999,
$007F7F, $3F7F7F, $004C4C, $264C4C, $00FFBF, $7FFFDF, $00CC99, $66CCB2,
$009972, $4C9985, $007F5F, $3F7F6F, $004C39, $264C42, $00FF7F, $7FFFBF,
$00CC66, $66CC99, $00994C, $4C9972, $007F3F, $3F7F5F, $004C26, $264C39,
$00FF3F, $7FFF9F, $00CC33, $66CC7F, $009926, $4C995F, $007F1F, $3F7F4F,
$004C13, $264C2F, $00FF00, $7FFF7F, $00CC00, $66CC66, $009900, $4C994C,
$007F00, $3F7F3F, $004C00, $264C26, $3FFF00, $9FFF7F, $33CC00, $7FCC66,
$269900, $5F994C, $1F7F00, $4F7F3F, $134C00, $2F4C26, $7FFF00, $BFFF7F,
$66CC00, $99CC66, $4C9900, $72994C, $3F7F00, $5F7F3F, $264C00, $394C26,
$BFFF00, $DFFF7F, $99CC00, $B2CC66, $729900, $85994C, $5F7F00, $6F7F3F,
$394C00, $424C26, $FFFF00, $FFFF7F, $CCCC00, $CCCC66, $999900, $99994C,
$7F7F00, $7F7F3F, $4C4C00, $4C4C26, $FFBF00, $FFDF7F, $CC9900, $CCB266,
$997200, $99854C, $7F5F00, $7F6F3F, $4C3900, $4C4226, $FF7F00, $FFBF7F,
$CC6600, $CC9966, $994C00, $99724C, $7F3F00, $7F5F3F, $4C2600, $4C3926,
$FF3F00, $FF9F7F, $CC3300, $CC7F66, $992600, $995F4C, $7F1F00, $7F4F3F,
$4C1300, $4C2F26, $FF0000, $FF7F7F, $CC0000, $CC6666, $990000, $994C4C,
$7F0000, $7F3F3F, $4C0000, $4C2626, $FF003F, $FF7F9F, $CC0033, $CC667F,
$990026, $994C5F, $7F001F, $7F3F4F, $4C0013, $4C262F, $FF007F, $FF7FBF,
$CC0066, $CC6699, $99004C, $994C72, $7F003F, $7F3F5F, $4C0026, $4C2639,
$FF00BF, $FF7FDF, $CC0099, $CC66B2, $990072, $994C85, $7F005F, $7F3F6F,
$4C0039, $4C2642, $FF00FF, $FF7FFF, $CC00CC, $CC66CC, $990099, $994C99,
$7F007F, $7F3F7F, $4C004C, $4C264C, $BF00FF, $DF7FFF, $9900CC, $B266CC,
$720099, $854C99, $5F007F, $6F3F7F, $39004C, $42264C, $7F00FF, $BF7FFF,
$6600CC, $9966CC, $4C0099, $724C99, $3F007F, $5F3F7F, $26004C, $39264C,
$3F00FF, $9F7FFF, $3300CC, $7F66CC, $260099, $5F4C99, $1F007F, $4F3F7F,
$13004C, $2F264C, $333333, $5B5B5B, $848484, $ADADAD, $D6D6D6, $FFFFFF);
sgDXFLineWeights: array [0..23] of Integer = (0, 5, 9, 13, 15, 18, 20, 25, 30, 35,
40, 50, 53, 60, 70, 80, 90, 100, 106, 120, 140, 158, 200, 211);
// Types
type
PsgFloat = ^TsgFloat;
TsgFloat = Double;
TsgInt64 = record
Lo: Integer;
Hi: Integer;
end;
PFPoint = ^TFPoint;
TFPoint = record
case Integer of
0: (X, Y, Z: TsgFloat);
1: (V: array[0..2] of TsgFloat);
end;
PF2DPoint = ^TF2DPoint;
TF2DPoint = record
case Integer of
0: (X, Y: TsgFloat);
1: (V: array[0..1] of TsgFloat);
end;
PdxfPoint = ^TdxfPoint;
TdxfPoint = record
X,Y,Z: Single;
end;
TsgLine = record
Point1: TFPoint;
Point2: TFPoint;
end;
PFRect = ^TFRect;
TFRect = record
case Integer of
0: (Left, Top, Z1, Right, Bottom, Z2: TsgFloat);
1: (TopLeft, BottomRight: TFPoint);
end;
// Extended CAD data
PcadExtendedData = ^TcadExtendedData;
TcadExtendedData = packed record
Param1: Pointer;// 4 byte field
{ Fields below may be added in future versions }
end;
PcadData = ^TcadData;
TcadData = packed record
Tag: Word; // classindex, DXF_LINE, DXF_SOLID etc.
Count: Word; // number of child entities
TickCount: Word;
Flags: Byte; // Flags byte
// for polylines: low bit <> 0 - is closed
// for layers: low bit <> 0 - is invisible
Style: Byte; // Style (pen, brush...) - for future versions
Dimension: Integer;
DashDots: PFPoint;
DashDotsCount: Integer;
Color: Integer; // Color of entity
Ticks: Pointer;
Thickness: TsgFloat;// for future versions
Rotation: TsgFloat; // Text or block rotation angle
Layer: PAnsiChar; // Layer name (only one layer for element)
Text: PAnsiChar; // Pointer to text string
FontName: PAnsiChar;
Handle: THandle;
Undefined1: Integer;
Undefined2: TsgFloat;// Double
Undefined3: TsgFloat;// Double
CADExtendedData: PcadExtendedData;
Point: TFPoint; // Coordinates of the first point
Point1: TFPoint; // Coordinates of the second point
Point2: TFPoint; // Coordinates of the third point
Point3: TFPoint; // Coordinates of the fourth point
case Integer of
0: (Radius, StartAngle, EndAngle, Ratio: TsgFloat; EntityType: Byte); // for arcs (NOT in DXFEnum)
1: (Block: THandle; Scale: TFPoint); // for Inserts (NOT in DXFEnum)
2: (FHeight, FScale, RWidth, RHeight: TsgFloat; HAlign, VAlign: Byte); // for Text
3: (Points: PFPoint); // for polylines (in DXFEnum)
end;
PdxfData = ^TdxfData;
TdxfData = packed record
Tag: Word; // classindex, DXF_LINE, DXF_SOLID etc.
Count: Word; // number of child entities
TickCount: Word;
Flags: Byte; // Flags byte
// for polylines: low bit <> 0 - is closed
// for layers: low bit <> 0 - is invisible
Style: Byte; // Style (pen, brush...) - for future versions
Dimension: Integer;
DashDots: PdxfPoint;
DashDotsCount: Integer;
Color: Integer; // Color of entity
Ticks: Pointer;
Thickness: Single;// for future versions
Rotation: Single; // Text or block rotation angle
Layer: PAnsiChar; // Layer name (only one layer for element)
Text: PAnsiChar; // Pointer to text string
FontName: PAnsiChar;
Handle: THandle;
CADExtendedData: PcadExtendedData;
Point: TdxfPoint; // Coordinates of the first point
Point1: TdxfPoint; // Coordinates of the second point
Point2: TdxfPoint; // Coordinates of the third point
Point3: TdxfPoint; // Coordinates of the fourth point
case Integer of
0: (Radius, StartAngle, EndAngle, Ratio: Single; EntityType: Byte); // for arcs (NOT in DXFEnum)
1: (Block: THandle; Scale: TdxfPoint); // for Inserts (NOT in DXFEnum)
2: (FHeight, FScale, RWidth, RHeight: Single; HAlign, VAlign: Byte); // for Text
3: (Points: PdxfPoint); // for polylines (in DXFEnum)
end;
// Axes in 3-Dimensional cartesian coordinates
TsgAxes = (axisX, axisY, axisZ);
// DWG, DXF distance units mode
TsgDistUnitsMode = (umDrawing, umUser, umAltUser);
// DWG format version
TsgDWGVersion = (acR09, acR10, acR11, acR12, acR13, acR14, acR2000, acR2004, acR2007);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -