@design-core/core 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +14 -7
- package/.github/workflows/DesignCoreQA.yml +3 -1
- package/README.md +11 -4
- package/TODO.md +19 -0
- package/core/core/core.js +49 -42
- package/core/designCore.js +61 -2
- package/core/dimensions/alignedDimension.js +142 -0
- package/core/dimensions/angularDimension.js +550 -0
- package/core/dimensions/baseCircularDimension.js +244 -0
- package/core/dimensions/baseDimension.js +558 -0
- package/core/dimensions/baseLinearDimension.js +371 -0
- package/core/dimensions/diametricDimension.js +82 -0
- package/core/dimensions/dimension.js +298 -0
- package/core/dimensions/linearDimension.js +29 -0
- package/core/dimensions/radialDimension.js +78 -0
- package/core/dimensions/rotatedDimension.js +167 -0
- package/core/entities/arc.js +314 -60
- package/core/entities/arctext.js +642 -0
- package/core/entities/basePolyline.js +553 -94
- package/core/entities/circle.js +181 -54
- package/core/entities/entity.js +154 -74
- package/core/entities/hatch.js +807 -0
- package/core/entities/insert.js +200 -39
- package/core/entities/line.js +196 -134
- package/core/entities/lwpolyline.js +21 -44
- package/core/entities/point.js +194 -29
- package/core/entities/polyline.js +54 -7
- package/core/entities/rectangle.js +43 -13
- package/core/entities/solid.js +43 -6
- package/core/entities/text.js +324 -181
- package/core/lib/boundingBox.js +73 -13
- package/core/lib/canvas.js +256 -65
- package/core/lib/clipboard.js +198 -0
- package/core/lib/colour.js +144 -0
- package/core/lib/colours.js +367 -301
- package/core/lib/commandLine.js +16 -28
- package/core/lib/commandManager.js +115 -58
- package/core/lib/constants.js +23 -0
- package/core/lib/dxf/dxf.js +249 -34
- package/core/lib/dxf/dxfFile.js +23 -38
- package/core/lib/dxf/dxfIterator.js +17 -5
- package/core/lib/dxf/dxfRead.js +23 -7
- package/core/lib/dxf/dxfWrite.js +39 -129
- package/core/lib/dxf/handleManager.js +97 -0
- package/core/lib/dxf/sections/blocks.js +16 -2
- package/core/lib/dxf/sections/entities.js +17 -3
- package/core/lib/dxf/sections/header.js +10 -1
- package/core/lib/dxf/sections/objects.js +36 -0
- package/core/lib/dxf/sections/section.js +43 -5
- package/core/lib/dxf/sections/tables.js +17 -3
- package/core/lib/entityManager.js +178 -0
- package/core/lib/fileio.js +14 -4
- package/core/lib/headers.js +229 -0
- package/core/lib/input.js +46 -0
- package/core/lib/inputManager.js +199 -194
- package/core/lib/intersect.js +341 -468
- package/core/lib/logging.js +25 -1
- package/core/lib/matrix.js +6 -8
- package/core/lib/mouse.js +24 -79
- package/core/lib/patterns.js +690 -0
- package/core/lib/promptOptions.js +133 -0
- package/core/lib/scene.js +71 -174
- package/core/lib/selectionManager.js +74 -48
- package/core/lib/selectionWindow.js +24 -10
- package/core/lib/settings.js +18 -11
- package/core/lib/snapping.js +129 -21
- package/core/lib/stateManager.js +288 -0
- package/core/lib/strings.js +57 -5
- package/core/lib/utils.js +95 -11
- package/core/objects/dictionary.js +43 -0
- package/core/objects/dictionaryManager.js +80 -0
- package/core/properties/dimType.js +117 -0
- package/core/properties/flags.js +66 -0
- package/core/properties/property.js +26 -0
- package/core/properties/propertyManager.js +65 -19
- package/core/tables/appId.js +31 -0
- package/core/tables/appIdManager.js +44 -0
- package/core/tables/block.js +323 -0
- package/core/tables/blockManager.js +48 -0
- package/core/tables/blockRecord.js +29 -0
- package/core/tables/blockRecordManager.js +37 -0
- package/core/tables/dimStyle.js +627 -0
- package/core/tables/dimStyleManager.js +187 -0
- package/core/tables/endblk.js +28 -0
- package/core/tables/layer.js +219 -0
- package/core/tables/layerManager.js +47 -0
- package/core/tables/ltype.js +85 -0
- package/core/tables/ltypeManager.js +65 -0
- package/core/tables/style.js +145 -0
- package/core/tables/styleManager.js +55 -0
- package/core/tables/styleManagerBase.js +110 -0
- package/core/tables/tableManagerBase.js +354 -0
- package/core/tables/ucs.js +28 -0
- package/core/tables/ucsManager.js +44 -0
- package/core/tables/view.js +28 -0
- package/core/tables/viewManager.js +44 -0
- package/core/tables/vport.js +70 -0
- package/core/tables/vportManager.js +65 -0
- package/core/tools/chamfer.js +343 -0
- package/core/tools/chamferFilletBase.js +162 -0
- package/core/tools/copy.js +68 -40
- package/core/tools/copybase.js +65 -0
- package/core/tools/copyclip.js +59 -0
- package/core/tools/cornerEntity.js +138 -0
- package/core/tools/cutclip.js +72 -0
- package/core/tools/distance.js +37 -9
- package/core/tools/erase.js +43 -13
- package/core/tools/explode.js +117 -0
- package/core/tools/extend.js +71 -32
- package/core/tools/fillet.js +336 -0
- package/core/tools/identify.js +33 -6
- package/core/tools/matchProp.js +106 -0
- package/core/tools/mirror.js +141 -0
- package/core/tools/move.js +65 -32
- package/core/tools/offset.js +321 -0
- package/core/tools/pan.js +54 -0
- package/core/tools/pasteclip.js +93 -0
- package/core/tools/purge.js +90 -0
- package/core/tools/rotate.js +105 -70
- package/core/tools/scale.js +166 -0
- package/core/tools/tool.js +14 -4
- package/core/tools/trim.js +71 -32
- package/core/tools/zoom.js +152 -0
- package/package.json +3 -305
- package/test/dimensions/alignedDimension.test.js +211 -0
- package/test/dimensions/angularDimension.test.js +243 -0
- package/test/dimensions/baseDimension.test.js +239 -0
- package/test/dimensions/diametricDimension.test.js +203 -0
- package/test/dimensions/dimension.test.js +102 -0
- package/test/dimensions/radialDimension.test.js +203 -0
- package/test/dimensions/rotatedDimension.test.js +224 -0
- package/test/entities/arc.test.js +463 -41
- package/test/entities/arctext.test.js +329 -0
- package/test/entities/basePolyline.test.js +459 -10
- package/test/entities/circle.test.js +312 -7
- package/test/entities/entity.test.js +28 -9
- package/test/entities/hatch.test.js +606 -0
- package/test/entities/insert.test.js +90 -0
- package/test/entities/line.test.js +182 -6
- package/test/entities/point.test.js +375 -37
- package/test/entities/solid.test.js +156 -0
- package/test/entities/text.test.js +533 -7
- package/test/integration/exportIntegration.reference.dxf +1706 -0
- package/test/integration/exportIntegration.test.js +186 -0
- package/test/integration/importExportIntegration.test.js +126 -0
- package/test/integration/intersectionIntegration.test.js +880 -0
- package/test/integration/userInputIntegration.reference.dxf +1410 -0
- package/test/integration/userInputIntegration.test.js +269 -0
- package/test/lib/boundingBox.test.js +26 -2
- package/test/lib/canvas.test.js +613 -5
- package/test/lib/clipboard.test.js +70 -0
- package/test/lib/colour.test.js +114 -0
- package/test/lib/colours.test.js +63 -18
- package/test/lib/commandLine.test.js +159 -22
- package/test/lib/commandManager.test.js +4 -4
- package/test/lib/constants.test.js +9 -0
- package/test/lib/dxf/dxfFile.test.js +6 -2
- package/test/lib/dxf/dxfIterator.test.js +1 -1
- package/test/lib/dxf/dxfWrite.test.js +173 -0
- package/test/lib/dxf/handleManager.test.js +137 -0
- package/test/lib/dxf/sections/blocks.test.js +5 -5
- package/test/lib/dxf/sections/entities.test.js +4 -4
- package/test/lib/dxf/sections/header.test.js +18 -4
- package/test/lib/dxf/sections/objects.test.js +132 -0
- package/test/lib/dxf/sections/section.test.js +29 -29
- package/test/lib/dxf/sections/tables.test.js +3 -3
- package/test/lib/entityManager.test.js +163 -0
- package/test/lib/headers.test.js +233 -0
- package/test/lib/inputManager.test.js +1144 -5
- package/test/lib/intersect.test.js +454 -331
- package/test/lib/logging.test.js +1 -1
- package/test/lib/matrix.test.js +1 -1
- package/test/lib/mouse.test.js +327 -4
- package/test/lib/patterns.test.js +105 -0
- package/test/lib/promptOptions.test.js +179 -0
- package/test/lib/scene.test.js +16 -52
- package/test/lib/selectionManager.test.js +17 -5
- package/test/lib/settings.test.js +111 -5
- package/test/lib/snapping.test.js +142 -4
- package/test/lib/stateManager.test.js +155 -0
- package/test/lib/utils.test.js +81 -1
- package/test/objects/dictionary.test.js +81 -0
- package/test/objects/dictionaryManager.test.js +34 -0
- package/test/properties/dimType.test.js +62 -0
- package/test/properties/flags.test.js +164 -0
- package/test/properties/property.test.js +13 -0
- package/test/properties/propertyManager.test.js +10 -11
- package/test/tables/appId.test.js +46 -0
- package/test/tables/appIdManager.test.js +72 -0
- package/test/tables/block.test.js +157 -0
- package/test/tables/blockManager.test.js +52 -0
- package/test/tables/blockRecord.test.js +39 -0
- package/test/tables/blockRecordManager.test.js +60 -0
- package/test/tables/dimstyle.test.js +72 -0
- package/test/tables/endblk.test.js +30 -0
- package/test/tables/layer.test.js +95 -0
- package/test/tables/layerManager.test.js +172 -0
- package/test/{styles → tables}/ltype.test.js +7 -7
- package/test/{styles → tables}/ltypeManager.test.js +2 -2
- package/test/tables/style.test.js +44 -0
- package/test/tables/stylemanagerbase.test.js +220 -0
- package/test/tables/tableManagerBase.test.js +194 -0
- package/test/tables/ucs.test.js +37 -0
- package/test/tables/ucsManager.test.js +48 -0
- package/test/tables/view.test.js +37 -0
- package/test/tables/viewManager.test.js +48 -0
- package/test/tables/vport.test.js +117 -0
- package/test/tables/vportManager.test.js +54 -0
- package/test/test-helpers/test-helpers.js +66 -0
- package/test/tools/chamfer.test.js +970 -0
- package/test/tools/chamferFilletBase.test.js +446 -0
- package/test/tools/copy.test.js +22 -14
- package/test/tools/copybase.test.js +93 -0
- package/test/tools/copyclip.test.js +92 -0
- package/test/tools/cornerEntity.test.js +201 -0
- package/test/tools/cutclip.test.js +94 -0
- package/test/tools/distance.test.js +140 -18
- package/test/tools/erase.test.js +12 -12
- package/test/tools/explode.test.js +45 -0
- package/test/tools/extend.test.js +326 -44
- package/test/tools/fillet.test.js +831 -0
- package/test/tools/identify.test.js +115 -16
- package/test/tools/matchProp.test.js +84 -0
- package/test/tools/mirror.test.js +475 -0
- package/test/tools/move.test.js +75 -19
- package/test/tools/offset.test.js +748 -0
- package/test/tools/pan.test.js +72 -0
- package/test/tools/pasteclip.test.js +100 -0
- package/test/tools/purge.test.js +89 -0
- package/test/tools/rotate.test.js +89 -23
- package/test/tools/scale.test.js +529 -0
- package/test/tools/trim.test.js +419 -84
- package/test/tools/zoom.test.js +504 -0
- package/core/entities/alignedDimension.js +0 -279
- package/core/entities/angularDimension.js +0 -194
- package/core/entities/baseDimension.js +0 -227
- package/core/entities/block.js +0 -247
- package/core/entities/diametricDimension.js +0 -133
- package/core/entities/dimension.js +0 -202
- package/core/entities/radialDimension.js +0 -126
- package/core/styles/dimStyle.js +0 -719
- package/core/styles/dimStyleManager.js +0 -47
- package/core/styles/layer.js +0 -133
- package/core/styles/layerManager.js +0 -40
- package/core/styles/ltype.js +0 -86
- package/core/styles/ltypeManager.js +0 -50
- package/core/styles/style.js +0 -158
- package/core/styles/styleManager.js +0 -43
- package/core/styles/styleManagerBase.js +0 -299
- package/test/entities/block.test.js +0 -22
- package/test/styles/dimstyle.test.js +0 -19
- package/test/styles/layerManager.test.js +0 -150
- package/test/styles/style.test.js +0 -33
- package/test/styles/stylemanagerbase.test.js +0 -219
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
import {DimStyle} from './dimStyle.js';
|
|
3
|
-
import {StyleManagerBase} from './styleManagerBase.js';
|
|
4
|
-
|
|
5
|
-
export class DimStyleManager extends StyleManagerBase {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
|
|
9
|
-
this.indelibleStyles.push('STANDARD');
|
|
10
|
-
this.styleProperty = 'styleName';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
createStyle(style) {
|
|
14
|
-
return new DimStyle(style);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
addStandardStyles() {
|
|
18
|
-
this.addStyle({
|
|
19
|
-
'name': 'STANDARD',
|
|
20
|
-
// DIMCLRD - 176 - Dimension line color
|
|
21
|
-
// DIMCLRE - 177 - Dimension extension line color
|
|
22
|
-
// DIMCLRT - 178 - Dimension text color
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
this.addStyle({
|
|
26
|
-
'name': 'ANNOTATIVE',
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// DesignCore.scene.saveRequired();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
dxf(file) {
|
|
33
|
-
// Create table data for dimension styles
|
|
34
|
-
file.writeGroupCode('0', 'TABLE');
|
|
35
|
-
file.writeGroupCode('2', 'DIMSTYLE');
|
|
36
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000);
|
|
37
|
-
file.writeGroupCode('100', 'AcDbSymbolTable', DXFFile.Version.R2000);
|
|
38
|
-
file.writeGroupCode('100', 'AcDbDimStyleTable', DXFFile.Version.R2000);
|
|
39
|
-
file.writeGroupCode('70', this.styleCount());
|
|
40
|
-
|
|
41
|
-
for (let i = 0; i < this.styleCount(); i++) {
|
|
42
|
-
this.getStyleByIndex(i).dxf(file);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
file.writeGroupCode('0', 'ENDTAB');
|
|
46
|
-
}
|
|
47
|
-
}
|
package/core/styles/layer.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import {Colours} from '../lib/colours.js';
|
|
2
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
3
|
-
|
|
4
|
-
export class Layer {
|
|
5
|
-
constructor(data) {
|
|
6
|
-
// Define Properties
|
|
7
|
-
this.type = 'Layer';
|
|
8
|
-
this.name = '';
|
|
9
|
-
this.frozen = false;
|
|
10
|
-
this.on = true;
|
|
11
|
-
this.locked = false;
|
|
12
|
-
this.colour = '#FFFFFF';
|
|
13
|
-
this.lineType = 'CONTINUOUS';
|
|
14
|
-
this.lineWeight = 'DEFAULT';
|
|
15
|
-
this.plotting = true;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (data) {
|
|
19
|
-
if (data.name || data[2]) {
|
|
20
|
-
// DXF Groupcode 2 - Layer Name
|
|
21
|
-
this.name = data.name || data[2];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (data.flags || data[70]) {
|
|
26
|
-
// DXF Groupcode 70 - Layer Flags
|
|
27
|
-
// Standard flags (bit-coded values):
|
|
28
|
-
// 1 = Layer is frozen; otherwise layer is thawed
|
|
29
|
-
// 2 = Layer is frozen by default in new viewports
|
|
30
|
-
// 4 = Layer is locked
|
|
31
|
-
// 16 = If set, table entry is externally dependent on an xref
|
|
32
|
-
// 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved
|
|
33
|
-
// 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited.
|
|
34
|
-
|
|
35
|
-
const flags = data.flags || data[70];
|
|
36
|
-
switch (flags) {
|
|
37
|
-
case 0:
|
|
38
|
-
break;
|
|
39
|
-
case 1:
|
|
40
|
-
this.frozen = true;
|
|
41
|
-
break;
|
|
42
|
-
case 2:
|
|
43
|
-
this.frozen = true;
|
|
44
|
-
break;
|
|
45
|
-
case 4:
|
|
46
|
-
this.locked = true;
|
|
47
|
-
break;
|
|
48
|
-
case 16:
|
|
49
|
-
break;
|
|
50
|
-
case 32:
|
|
51
|
-
break;
|
|
52
|
-
case 64: // (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files.)
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (data.colour || data[62]) {
|
|
58
|
-
// DXF Groupcode 62 - Color Number
|
|
59
|
-
// (present if not BYLAYER); zero indicates the BYBLOCK
|
|
60
|
-
// (floating) color; 256 indicates BYLAYER; a negative value indicates that
|
|
61
|
-
// the layer is turned off (optional)
|
|
62
|
-
this.colour = data.colour || Colours.getHexColour(data[62]);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (data.lineType || data[6]) {
|
|
66
|
-
// DXF Groupcode 6 - Linetype Name
|
|
67
|
-
this.lineType = data.lineType || data[6];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (data.lineWeight || data[370]) {
|
|
71
|
-
// DXF Groupcode 370 - Linetype Weight
|
|
72
|
-
this.lineWeight = data.lineWeight || data[370];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (data.plotting || data[290]) {
|
|
76
|
-
// DXF Groupcode 290 - Plotting flag
|
|
77
|
-
// If set to 0, do not plot this layer
|
|
78
|
-
this.plotting = data.plotting || data[290];
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
get isVisible() {
|
|
84
|
-
if (this.on && !this.frozen) {
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
get isSelectable() {
|
|
92
|
-
if (this.isVisible && !this.locked) {
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
getFlags() {
|
|
100
|
-
// Standard flags (bit-coded values):
|
|
101
|
-
// 1 = Layer is frozen; otherwise layer is thawed.
|
|
102
|
-
// 2 = Layer is frozen by default in new viewports.
|
|
103
|
-
// 4 = Layer is locked.
|
|
104
|
-
// 16 = If set, table entry is externally dependent on an xref.
|
|
105
|
-
// 32 = If this bit and bit 16 are both set, the externally dependent xref has been successfully resolved.
|
|
106
|
-
// 64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag is for the benefit of AutoCAD commands. It can be ignored by most programs that read DXF files and need not be set by programs that write DXF files.)
|
|
107
|
-
let flags = 0;
|
|
108
|
-
|
|
109
|
-
if (this.frozen) {
|
|
110
|
-
flags += 1;
|
|
111
|
-
}
|
|
112
|
-
if (this.locked) {
|
|
113
|
-
flags += 4;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return flags;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
dxf(file) {
|
|
120
|
-
file.writeGroupCode('0', 'LAYER');
|
|
121
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000);
|
|
122
|
-
file.writeGroupCode('100', 'AcDbSymbolTableRecord', DXFFile.Version.R2000);
|
|
123
|
-
file.writeGroupCode('100', 'AcDbLayerTableRecord', DXFFile.Version.R2000);
|
|
124
|
-
file.writeGroupCode('2', this.name); // Layername
|
|
125
|
-
file.writeGroupCode('70', this.getFlags()); // Flags
|
|
126
|
-
const colourValue = this.on ? Colours.getACADColour(this.colour) : (0 - Colours.getACADColour(this.colour));
|
|
127
|
-
file.writeGroupCode('62', colourValue); // Colour: Negative if layer is off
|
|
128
|
-
file.writeGroupCode('6', this.lineType);
|
|
129
|
-
file.writeGroupCode('390', file.nextHandle(), DXFFile.Version.R2000); // plotstylename handle - //TODO: this needs to be linked to the actual plotstyle
|
|
130
|
-
// file.writeGroupCode('290', this.plotting ? 1 : 0); //plotting | These items codes don't seem to be
|
|
131
|
-
// file.writeGroupCode('370', 'this.lineWeight '); // lineWeight | supported in ACAD.
|
|
132
|
-
}
|
|
133
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
import {Layer} from './layer.js';
|
|
3
|
-
import {StyleManagerBase} from './styleManagerBase.js';
|
|
4
|
-
|
|
5
|
-
export class LayerManager extends StyleManagerBase {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
|
|
9
|
-
this.indelibleStyles.push('0', 'DEFPOINTS');
|
|
10
|
-
this.styleProperty = 'layer';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
createStyle(style) {
|
|
14
|
-
return new Layer(style);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
addStandardStyles() {
|
|
18
|
-
this.addStyle({'name': '0', 'colour': '#00BFFF'});
|
|
19
|
-
this.addStyle({'name': 'DEFPOINTS', 'plotting': false});
|
|
20
|
-
// this.addStyle({'name': 'CENTERLINE', 'colour': '#FFFF00', 'lineType': 'CENTER'});
|
|
21
|
-
// this.addStyle({'name': 'HIDDEN', 'colour': '#D6D6D6', 'lineType': 'HIDDEN'});
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
dxf(file) {
|
|
25
|
-
// Create table data for layers
|
|
26
|
-
file.writeGroupCode('0', 'TABLE');
|
|
27
|
-
file.writeGroupCode('2', 'LAYER');
|
|
28
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000);
|
|
29
|
-
file.writeGroupCode('100', 'AcDbSymbolTable', DXFFile.Version.R2000);
|
|
30
|
-
file.writeGroupCode('70', this.styleCount());
|
|
31
|
-
|
|
32
|
-
for (let i = 0; i < this.styleCount(); i++) {
|
|
33
|
-
if (this.getStyleByIndex(i).name !== 'DEFPOINTS') {
|
|
34
|
-
this.getStyleByIndex(i).dxf(file);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
file.writeGroupCode('0', 'ENDTAB');
|
|
39
|
-
}
|
|
40
|
-
}
|
package/core/styles/ltype.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
|
|
3
|
-
export class LType {
|
|
4
|
-
constructor(data) {
|
|
5
|
-
this.type = 'LType';
|
|
6
|
-
this.name = '';
|
|
7
|
-
this.description = '';
|
|
8
|
-
this.pattern = [];
|
|
9
|
-
this.flags = 0;
|
|
10
|
-
|
|
11
|
-
if (data) {
|
|
12
|
-
if (data.name || data[2]) {
|
|
13
|
-
// DXF Groupcode 2 - ltype name
|
|
14
|
-
this.name = data.name || data[2];
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
if (data.description || data[3]) {
|
|
18
|
-
// DXF Groupcode 3 - description text
|
|
19
|
-
this.description = data.description || data[3];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (data.pattern || data[49]) {
|
|
23
|
-
// DXF Groupcode 49 - line type pattern
|
|
24
|
-
this.pattern = data.pattern || data[49];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (data[73]) {
|
|
28
|
-
// DXF Groupcode 73 - number of line type elements in data[49]
|
|
29
|
-
if (data[73] !== this.pattern.length) {
|
|
30
|
-
throw Error('invalid line type pattern');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (data.flags || data[70]) {
|
|
35
|
-
// DXF Groupcode 70 - Polyline flag (bit-coded; default = 0):
|
|
36
|
-
// 16 = If set, table entry is externally dependent on an xref
|
|
37
|
-
// 32 = If this bit and bit 16 are both set, the externally dependent xref has been successfully resolved
|
|
38
|
-
// 64 = line type was referenced by at least one entity in the drawing the last time the drawing was edited. (This flag can be ignored by most programs)
|
|
39
|
-
this.flags = data.flags || data[70];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Get a dash pattern that cairo and html canvas understand
|
|
46
|
-
* @param {array} scale
|
|
47
|
-
* @returns array for dash pattern
|
|
48
|
-
*/
|
|
49
|
-
getPattern(scale) {
|
|
50
|
-
// DXF Patterns use -ve values for gaps and 0.0 for dots
|
|
51
|
-
// cairo and canvas require pattern to include +ve non-zero values
|
|
52
|
-
const pattern = this.pattern.map((x) => (Math.abs(x) + 1) / scale);
|
|
53
|
-
return pattern;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Write the dxf representation to file
|
|
58
|
-
* @param {DXFFile} file
|
|
59
|
-
*/
|
|
60
|
-
dxf(file) {
|
|
61
|
-
file.writeGroupCode('0', 'LTYPE');
|
|
62
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000);
|
|
63
|
-
file.writeGroupCode('100', 'AcDbSymbolTableRecord', DXFFile.Version.R2000);
|
|
64
|
-
file.writeGroupCode('100', 'AcDbLinetypeTableRecord', DXFFile.Version.R2000);
|
|
65
|
-
file.writeGroupCode('2', this.name);
|
|
66
|
-
file.writeGroupCode('70', this.flags);
|
|
67
|
-
file.writeGroupCode('3', this.description);
|
|
68
|
-
file.writeGroupCode('72', 65); // Alignment code; value is always 65, the ASCII code for A
|
|
69
|
-
file.writeGroupCode('73', this.pattern.length);
|
|
70
|
-
|
|
71
|
-
let patternLength = 0;
|
|
72
|
-
|
|
73
|
-
if (this.pattern.length) {
|
|
74
|
-
patternLength = this.pattern.reduce(
|
|
75
|
-
(accumulator, patternValue) => accumulator + Math.abs(patternValue),
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
file.writeGroupCode('40', patternLength);
|
|
80
|
-
|
|
81
|
-
for (let i = 0; i < this.pattern.length; i++) {
|
|
82
|
-
file.writeGroupCode('49', this.pattern[i]);
|
|
83
|
-
file.writeGroupCode('74', '0', DXFFile.Version.R2000);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
import {StyleManagerBase} from './styleManagerBase.js';
|
|
3
|
-
import {LType} from './ltype.js';
|
|
4
|
-
|
|
5
|
-
export class LTypeManager extends StyleManagerBase {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
|
|
9
|
-
this.indelibleStyles.push('CONTINUOUS', 'ByLayer', 'ByBlock');
|
|
10
|
-
this.styleProperty = 'linetype';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
createStyle(style) {
|
|
14
|
-
return new LType(style);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
addStandardStyles() {
|
|
18
|
-
this.addStyle({'name': 'CONTINUOUS', 'description': 'Solid Line ________________________________________'});
|
|
19
|
-
// this.addStyle({'name': 'ByLayer'});
|
|
20
|
-
// this.addStyle({'name': 'ByBlock'});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getOptionalStyles() {
|
|
24
|
-
const styles = [];
|
|
25
|
-
styles.push({'name': 'CONTINUOUS', 'description': 'Solid Line ________________________________________'});
|
|
26
|
-
styles.push({'name': 'CENTER', 'pattern': [31.75, -6.35, 6.35, -6.35], 'description': 'Center ____ _ ____ _ ____ _ ____ _ ____ _ ____'});
|
|
27
|
-
styles.push({'name': 'DASHDOT', 'pattern': [12.7, -6.345, 0, -6.345], 'description': 'Dash dot __ . __ . __ . __ . __ . __ . __ . __'});
|
|
28
|
-
styles.push({'name': 'DOT', 'pattern': [0, -6.35], 'description': 'Dot . . . . . . . . . . . . . . . . . . . . . .'});
|
|
29
|
-
styles.push({'name': 'DASHED', 'pattern': [12.7, -6.35], 'description': 'Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _'});
|
|
30
|
-
styles.push({'name': 'HIDDEN', 'pattern': [6.35, -3.175], 'description': 'Hidden __ __ __ __ __ __ __ __ __ __ __ __ __ _'});
|
|
31
|
-
return styles;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
dxf(file) {
|
|
35
|
-
// Create table data for ltype styles
|
|
36
|
-
// The LTYPE Table must preceed the LAYER table
|
|
37
|
-
file.writeGroupCode('0', 'TABLE');
|
|
38
|
-
file.writeGroupCode('2', 'LTYPE');
|
|
39
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000);
|
|
40
|
-
file.writeGroupCode('100', 'AcDbSymbolTable', DXFFile.Version.R2000);
|
|
41
|
-
file.writeGroupCode('70', this.styleCount());
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
for (let i = 0; i < this.styleCount(); i++) {
|
|
45
|
-
this.getStyleByIndex(i).dxf(file);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
file.writeGroupCode('0', 'ENDTAB');
|
|
49
|
-
}
|
|
50
|
-
}
|
package/core/styles/style.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
|
|
3
|
-
export class Style {
|
|
4
|
-
constructor(data) {
|
|
5
|
-
// Define Properties
|
|
6
|
-
this.type = this.constructor.name;
|
|
7
|
-
this.name = '';
|
|
8
|
-
this.font = 'Arial'; // TODO: how to set the font to one thats available. See style.js also.
|
|
9
|
-
this.textHeight = 2.5;
|
|
10
|
-
this.widthFactor = 1;
|
|
11
|
-
this.obliqueAngle = 0;
|
|
12
|
-
this.lastTextHeight = this.textHeight;
|
|
13
|
-
this.flags = 0;
|
|
14
|
-
this.standardFlags = 0;
|
|
15
|
-
|
|
16
|
-
if (data) {
|
|
17
|
-
if (data.name || data[2]) {
|
|
18
|
-
// DXF Groupcode 2 - ltype name
|
|
19
|
-
this.name = data.name || data[2];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (data.font || data[3]) {
|
|
23
|
-
// DXF Groupcode 3 - style font
|
|
24
|
-
this.font = data.font || data[3];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (data.bigFont || data[4]) {
|
|
28
|
-
// DXF Groupcode 4 - big font
|
|
29
|
-
this.bigFont = data.bigFont || data[4];
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (data.textHeight || data[40]) {
|
|
33
|
-
// DXF Groupcode 40 - Text height
|
|
34
|
-
this.textHeight = data.textHeight || data[40];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (data.widthFactor || data[41]) {
|
|
38
|
-
// DXF Groupcode 41 - width factor
|
|
39
|
-
this.widthFactor = data.widthFactor || data[41];
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (data.lastTextHeight || data[42]) {
|
|
43
|
-
// DXF Groupcode 42 - Last text height
|
|
44
|
-
this.lastTextHeight = data.lastTextHeight || data[42];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (data.obliqueAngle || data[50]) {
|
|
48
|
-
// DXF Groupcode 50 - test height
|
|
49
|
-
this.obliqueAngle = data.obliqueAngle || data[50];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (data.standardFlags || data[70]) {
|
|
53
|
-
// DXF Groupcode 70 - standard flags
|
|
54
|
-
/*
|
|
55
|
-
1 = If set, this entry describes a shape
|
|
56
|
-
4 = Vertical text
|
|
57
|
-
16 = If set, table entry is externally dependent on an xref
|
|
58
|
-
32 = If this bit and bit 16 are both set, the externally dependent xref has been successfully resolved
|
|
59
|
-
64 = If set, the table entry was referenced by at least one entity in the drawing the last time the drawing was edited.
|
|
60
|
-
(This flag is for the benefit of AutoCAD commands. It can be ignored.
|
|
61
|
-
*/
|
|
62
|
-
this.standardFlags = data.standardFlags || data[70];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
if (data.flags || data[71]) {
|
|
66
|
-
// DXF Groupcode 71 - flags (bit-coded values):
|
|
67
|
-
// 2 = Text is backward (mirrored in X).
|
|
68
|
-
// 4 = Text is upside down (mirrored in Y).
|
|
69
|
-
this.flags = data.flags || data[71];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get the vertical value
|
|
76
|
-
* @returns {bool}
|
|
77
|
-
*/
|
|
78
|
-
get vertical() {
|
|
79
|
-
// Vertical value is bitmasked in standardflags as value 4
|
|
80
|
-
return Boolean(this.standardFlags & 4);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Set the vertical value
|
|
85
|
-
* @param {boolean} bool
|
|
86
|
-
*/
|
|
87
|
-
set vertical(bool) {
|
|
88
|
-
if (bool) {
|
|
89
|
-
// Add vertical flag
|
|
90
|
-
this.standardFlags = (this.standardFlags | 4);
|
|
91
|
-
} else {
|
|
92
|
-
// remove vertical flag
|
|
93
|
-
this.standardFlags = (this.standardFlags ^ (this.standardFlags & 4));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Get the backwards value
|
|
99
|
-
* @returns {bool}
|
|
100
|
-
*/
|
|
101
|
-
get backwards() {
|
|
102
|
-
// Upside down value is bitmasked in flags as value 2
|
|
103
|
-
return Boolean(this.flags & 2);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* set the backwards value
|
|
108
|
-
* @param {boolean} bool
|
|
109
|
-
*/
|
|
110
|
-
set backwards(bool) {
|
|
111
|
-
if (bool) {
|
|
112
|
-
// Add flag
|
|
113
|
-
this.flags = (this.flags | 2);
|
|
114
|
-
} else {
|
|
115
|
-
// remove flag
|
|
116
|
-
this.flags = (this.flags ^ (this.flags & 2));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Get the upside down value
|
|
122
|
-
* @returns {bool}
|
|
123
|
-
*/
|
|
124
|
-
get upsideDown() {
|
|
125
|
-
// Upside down value is bitmasked in flags as value 4
|
|
126
|
-
return Boolean(this.flags & 4);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Set the upside down value
|
|
131
|
-
* @param {boolean} bool
|
|
132
|
-
*/
|
|
133
|
-
set upsideDown(bool) {
|
|
134
|
-
if (bool) {
|
|
135
|
-
// Add flag
|
|
136
|
-
this.flags = (this.flags | 4);
|
|
137
|
-
} else {
|
|
138
|
-
// remove flag
|
|
139
|
-
this.flags = (this.flags ^ (this.flags & 4));
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
dxf(file) {
|
|
144
|
-
file.writeGroupCode('0', 'STYLE');
|
|
145
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000); // Handle
|
|
146
|
-
file.writeGroupCode('100', 'AcDbSymbolTableRecord', DXFFile.Version.R2000);
|
|
147
|
-
file.writeGroupCode('100', 'AcDbTextStyleTableRecord', DXFFile.Version.R2000);
|
|
148
|
-
file.writeGroupCode('2', this.name); // Stylename
|
|
149
|
-
file.writeGroupCode('3', this.font); // Font
|
|
150
|
-
file.writeGroupCode('4', ''); // Big font name blank is none
|
|
151
|
-
file.writeGroupCode('40', this.textHeight); // Text Height
|
|
152
|
-
file.writeGroupCode('41', this.widthFactor); // Width Factor
|
|
153
|
-
file.writeGroupCode('42', this.textHeight); // Last Text Height
|
|
154
|
-
file.writeGroupCode('50', this.obliqueAngle);
|
|
155
|
-
file.writeGroupCode('70', this.standardFlags); // Standard Flags
|
|
156
|
-
file.writeGroupCode('71', this.flags); // Flags
|
|
157
|
-
}
|
|
158
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import {DXFFile} from '../lib/dxf/dxfFile.js';
|
|
2
|
-
import {StyleManagerBase} from './styleManagerBase.js';
|
|
3
|
-
import {Style} from './style.js';
|
|
4
|
-
|
|
5
|
-
export class StyleManager extends StyleManagerBase {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
|
|
9
|
-
this.indelibleStyles.push('STANDARD');
|
|
10
|
-
this.styleProperty = 'style';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
createStyle(style) {
|
|
14
|
-
return new Style(style);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
addStandardStyles() {
|
|
18
|
-
this.addStyle({
|
|
19
|
-
'name': 'STANDARD',
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
this.addStyle({
|
|
23
|
-
'name': 'ANNOTATIVE',
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
// DesignCore.scene.saveRequired();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
dxf(file) {
|
|
30
|
-
// Create table data for text styles
|
|
31
|
-
file.writeGroupCode('0', 'TABLE');
|
|
32
|
-
file.writeGroupCode('2', 'STYLE');
|
|
33
|
-
file.writeGroupCode('5', file.nextHandle(), DXFFile.Version.R2000); // Handle
|
|
34
|
-
file.writeGroupCode('100', 'AcDbSymbolTable', DXFFile.Version.R2000);
|
|
35
|
-
file.writeGroupCode('70', this.styleCount());
|
|
36
|
-
|
|
37
|
-
for (let i = 0; i < this.styleCount(); i++) {
|
|
38
|
-
this.getStyleByIndex(i).dxf(file);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
file.writeGroupCode('0', 'ENDTAB');
|
|
42
|
-
}
|
|
43
|
-
}
|