Skip to content

Commit

Permalink
Add parsing entity
Browse files Browse the repository at this point in the history
1. facd3D
2. solid3D
3. surface
4. body

ownerdictionaryHardId -> ownerDictionaryHardId
  • Loading branch information
dotoritos-kim committed Feb 1, 2024
1 parent db13c50 commit b9874af
Show file tree
Hide file tree
Showing 16 changed files with 292 additions and 3 deletions.
2 changes: 1 addition & 1 deletion Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ interface CommonDxfEntity {
plotStyleHardId?: string;
shadowMode?: ShadowMode;
xdata?: XData;
ownerdictionaryHardId?: string | number | boolean;
ownerDictionaryHardId?: string | number | boolean;
ownerDictionarySoftId?: string | number | boolean;
}
```
Expand Down
2 changes: 1 addition & 1 deletion src/parser/ParseHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export function checkCommonEntityProperties(entity: CommonDxfEntity, curr: Scann
}
break;
case 360:
entity.ownerdictionaryHardId = curr.value;
entity.ownerDictionaryHardId = curr.value;
break;
case 67:
entity.isInPaperSpace = !!curr.value;
Expand Down
2 changes: 2 additions & 0 deletions src/parser/entities/body/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './types';
export * from './parser';
52 changes: 52 additions & 0 deletions src/parser/entities/body/parser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import type DxfArrayScanner from '../../DxfArrayScanner';
import type { ScannerGroup } from '../../DxfArrayScanner';
import {
createParser,
DXFParserSnippet,
Identity,
PointParser,
} from '../../shared/parserGenerator';
import { CommonEntitySnippets } from '../shared';
import { Body } from './types';

const DefaultBodyEntity = {
type: 'Body',
subclassMarker: 'AcDbModelerGeometry',
modelerFormatVersion: 1,
};


const BodyEntityParserSnippets: DXFParserSnippet[] = [
{
code: 100,
name: 'subclassMarker',
parser: Identity,
},
{
code: 70,
name: 'modelerFormatVersion',
parser: Identity,
},
{
code: 1,
name: 'proprietarData',
parser: Identity,
},
{
code: 3,
name: 'AdditionalLines',
parser: Identity,
},
...CommonEntitySnippets,
];

export class BodyEntityParser {
static ForEntityName = 'Body';
private parser = createParser(BodyEntityParserSnippets, DefaultBodyEntity);

parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
const entity = {} as any;
this.parser(curr, scanner, entity);
return entity as Body;
}
}
9 changes: 9 additions & 0 deletions src/parser/entities/body/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import type { CommonDxfEntity } from '../shared';

export interface Body extends CommonDxfEntity {
type: 'Body';
subclassMarker: 'AcDbModelerGeometry';
proprietarData: any;
AdditionalLines: any;
modelerFormatVersion: number;
}
2 changes: 2 additions & 0 deletions src/parser/entities/face3D/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './types';
export * from './parser';
60 changes: 60 additions & 0 deletions src/parser/entities/face3D/parser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import type DxfArrayScanner from '../../DxfArrayScanner';
import type { ScannerGroup } from '../../DxfArrayScanner';
import {
createParser,
DXFParserSnippet,
Identity,
PointParser,
} from '../../shared/parserGenerator';
import { CommonEntitySnippets } from '../shared';
import { Face3D } from './types';
const DefaultFace3DEntity = {
type: 'face3D',
subclassMarker: 'AcDbFace',
invisibleEdgeFlag: 0,
};

const Face3DEntityParserSnippets: DXFParserSnippet[] = [
{
code: 100,
name: 'subclassMarker',
parser: Identity,
},
{
code: 10,
name: 'firstCorner',
parser: PointParser,
},
{
code: 11,
name: 'secondCorner',
parser: PointParser,
},
{
code: 12,
name: 'thirdCorner',
parser: PointParser,
},
{
code: 13,
name: 'fourthCorner',
parser: PointParser,
},
{
code: 70,
name: 'invisibleEdgeFlag',
parser: Identity,
},
...CommonEntitySnippets,
];

export class Face3DEntityParser {
static ForEntityName = 'Facd3D';
private parser = createParser(Face3DEntityParserSnippets, DefaultFace3DEntity);

parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
const entity = {} as any;
this.parser(curr, scanner, entity);
return entity as Face3D;
}
}
12 changes: 12 additions & 0 deletions src/parser/entities/face3D/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { Point3D } from '../../../types';
import type { CommonDxfEntity } from '../shared';

export interface Face3D extends CommonDxfEntity {
type: 'Face3D';
subclassMarker: 'AcDbFace';
firstCorner: Point3D;
secondCorner: Point3D;
thirdCorner: Point3D;
fourthCorner: Point3D;
invisibleEdgeFlag: number;
}
8 changes: 8 additions & 0 deletions src/parser/entities/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,17 @@ import { TextEntityParser } from './text';
import { HatchEntityParser } from './hatch';
import Viewport from './viewport';
import { CommonDxfEntity } from './shared';
import { Face3DEntityParser } from './face3D';
import { Solid3DEntityParser } from './solid3D';
import { SurfaceEntityParser } from './surface';
import { BodyEntityParser } from './body';

const Parsers = Object.fromEntries(
[
Solid3DEntityParser,
Face3DEntityParser,
SurfaceEntityParser,
BodyEntityParser,
ArcEntityParser,
AttDefEntityParser,
AttributeEntityParser,
Expand Down
2 changes: 1 addition & 1 deletion src/parser/entities/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export interface CommonDxfEntity {
plotStyleHardId?: string;
shadowMode?: ShadowMode;
xdata?: XData;
ownerdictionaryHardId?: string | number | boolean;
ownerDictionaryHardId?: string | number | boolean;
ownerDictionarySoftId?: string | number | boolean;
}

Expand Down
2 changes: 2 additions & 0 deletions src/parser/entities/solid3D/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './types';
export * from './parser';
57 changes: 57 additions & 0 deletions src/parser/entities/solid3D/parser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import type DxfArrayScanner from '../../DxfArrayScanner';
import type { ScannerGroup } from '../../DxfArrayScanner';
import {
createParser,
DXFParserSnippet,
Identity,
PointParser,
} from '../../shared/parserGenerator';
import { CommonEntitySnippets } from '../shared';
import { Solid3D } from './types';

const DefaultSolid3DEntity = {
type: 'Solid3D',
subclassMarker: 'AcDb3dSolid',
modelerFormatVersion: 1,
};


const Solid3DEntityParserSnippets: DXFParserSnippet[] = [
{
code: 100,
name: 'subclassMarker',
parser: Identity,
},
{
code: 70,
name: 'modelerFormatVersion',
parser: Identity,
},
{
code: 1,
name: 'proprietarData',
parser: Identity,
},
{
code: 3,
name: 'AdditionalLines',
parser: Identity,
},
{
code: 350,
name: "historyObjectHandle",
parser: Identity
},
...CommonEntitySnippets,
];

export class Solid3DEntityParser {
static ForEntityName = 'Facd3D';
private parser = createParser(Solid3DEntityParserSnippets, DefaultSolid3DEntity);

parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
const entity = {} as any;
this.parser(curr, scanner, entity);
return entity as Solid3D;
}
}
10 changes: 10 additions & 0 deletions src/parser/entities/solid3D/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import type { CommonDxfEntity } from '../shared';

export interface Solid3D extends CommonDxfEntity {
type: 'Solid3D';
subclassMarker: 'AcDb3dSolid';
proprietarData: any;
AdditionalLines: any;
modelerFormatVersion: number;
historyObjectHandle: string;
}
2 changes: 2 additions & 0 deletions src/parser/entities/surface/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './types';
export * from './parser';
62 changes: 62 additions & 0 deletions src/parser/entities/surface/parser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import type DxfArrayScanner from '../../DxfArrayScanner';
import type { ScannerGroup } from '../../DxfArrayScanner';
import {
createParser,
DXFParserSnippet,
Identity,
PointParser,
} from '../../shared/parserGenerator';
import { CommonEntitySnippets } from '../shared';
import { Surface } from './types';

const DefaultSurfaceEntity = {
type: 'Surface',
subclassMarker: 'AcDbSurface',
modelerFormatVersion: 1,
};


const SurfaceEntityParserSnippets: DXFParserSnippet[] = [
{
code: 100,
name: 'subclassMarker',
parser: Identity,
},
{
code: 70,
name: 'modelerFormatVersion',
parser: Identity,
},
{
code: 1,
name: 'proprietarData',
parser: Identity,
},
{
code: 3,
name: 'AdditionalLines',
parser: Identity,
},
{
code: 71,
name: 'UIsolines',
parser: Identity,
},
{
code: 72,
name: 'VIsolines',
parser: Identity,
},
...CommonEntitySnippets,
];

export class SurfaceEntityParser {
static ForEntityName = 'Surface';
private parser = createParser(SurfaceEntityParserSnippets, DefaultSurfaceEntity);

parseEntity(scanner: DxfArrayScanner, curr: ScannerGroup) {
const entity = {} as any;
this.parser(curr, scanner, entity);
return entity as Surface;
}
}
11 changes: 11 additions & 0 deletions src/parser/entities/surface/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import type { CommonDxfEntity } from '../shared';

export interface Surface extends CommonDxfEntity {
type: 'Surface';
subclassMarker: 'AcDbSurface';
proprietarData: any;
AdditionalLines: any;
modelerFormatVersion: number;
UIsolines: number;
VIsolines: number;
}

0 comments on commit b9874af

Please sign in to comment.