import DxfArrayScanner, { IGroup } from '../DxfArrayScanner'; import * as helpers from '../ParseHelpers' import IGeometry, { IEntity, IPoint } from './geomtry'; export interface IVertexEntity extends IEntity, IPoint{ bulge: number; curveFittingVertex: boolean; curveFitTangent: boolean; splineVertex: boolean; splineControlPoint: boolean; threeDPolylineVertex: boolean; threeDPolylineMesh: boolean; polyfaceMeshVertex: boolean; faceA: number; faceB: number; faceC: number; faceD: number; } export default class Vertex implements IGeometry { public ForEntityName= 'VERTEX' as const; public parseEntity(scanner: DxfArrayScanner, curr: IGroup) { var entity = { type: curr.value } as IVertexEntity; curr = scanner.next(); while(!scanner.isEOF()) { if(curr.code === 0) break; switch(curr.code) { case 10: // X entity.x = curr.value as number; break; case 20: // Y entity.y = curr.value as number; break; case 30: // Z entity.z = curr.value as number; break; case 40: // start width break; case 41: // end width break; case 42: // bulge if(curr.value != 0) entity.bulge = curr.value as number; break; case 70: // flags entity.curveFittingVertex = ((curr.value as number) & 1) !== 0; entity.curveFitTangent = ((curr.value as number) & 2) !== 0; entity.splineVertex = ((curr.value as number) & 8) !== 0; entity.splineControlPoint = ((curr.value as number) & 16) !== 0; entity.threeDPolylineVertex = ((curr.value as number) & 32) !== 0; entity.threeDPolylineMesh = ((curr.value as number) & 64) !== 0; entity.polyfaceMeshVertex = ((curr.value as number) & 128) !== 0; break; case 50: // curve fit tangent direction break; case 71: // polyface mesh vertex index entity.faceA = curr.value as number; break; case 72: // polyface mesh vertex index entity.faceB = curr.value as number; break; case 73: // polyface mesh vertex index entity.faceC = curr.value as number; break; case 74: // polyface mesh vertex index entity.faceD = curr.value as number; break; default: helpers.checkCommonEntityProperties(entity, curr, scanner); break; } curr = scanner.next(); } return entity; } }