// DXF Tables parsing types import type { Point2D, Point3D } from './common' import type { DXFTuple } from './dxf' /** * Partial point for parsing (all coordinates optional) */ export type PartialPoint2D = Partial /** * Partial 3D point for parsing (all coordinates optional) */ export type PartialPoint3D = Partial /** * DXF Header section result */ export interface ParsedHeader { /** Minimum drawing extents */ extMin?: PartialPoint3D /** Maximum drawing extents */ extMax?: PartialPoint3D /** Drawing units for measurement (0=English, 1=Metric) */ measurement?: string | number /** Default drawing units for AutoCAD DesignCenter blocks */ insUnits?: string | number /** Dimension arrow size */ dimArrowSize?: string | number | Record } /** * Block table entry * Internal representation during DXF parsing */ export interface BlockInternal { /** Block name */ name?: string | number /** Base point X coordinate */ x?: string | number /** Base point Y coordinate */ y?: string | number /** Base point Z coordinate */ z?: string | number /** External reference path */ xref?: string | number /** Paper space flag */ paperSpace?: string | number /** Layout name reference */ layout?: string | number /** Entities within this block */ entities?: any[] } /** * Line type element definition * Represents a single element in a complex line type pattern */ export interface LTypeElement { /** Length of the element */ length?: string | number /** Scale factors for the element */ scales?: Array /** Offset positions for the element */ offset?: Array<{ x: string | number; y: string | number }> /** Shape definition code */ shape?: string | number /** Shape number reference */ shapeNumber?: string | number /** Style handle reference */ styleHandle?: string | number /** Rotation angle */ rotation?: string | number /** Text content for text elements */ text?: string | number } /** * Line Type (LTYPE) table entry * Internal representation during DXF parsing */ export interface LTypeInternal { type: string /** Pattern elements that define the line type */ pattern: LTypeElement[] /** Line type name */ name?: string | number /** Line type description */ description?: string | number /** Standard flag values (bit-coded) */ flag?: string | number /** Alignment code (ASCII code for 'A' = 65) */ alignment?: string | number /** Number of elements in the pattern */ elementCount?: number /** Total pattern length */ patternLength?: string | number } /** * Layer table entry * Internal representation during DXF parsing */ export interface LayerInternal { type: string /** Layer name */ name?: string | number /** Line type name for this layer */ lineTypeName?: string | number /** ACI color number */ colorNumber?: string | number /** Standard flags (bit-coded) */ flags?: string | number /** Plot flag */ plot?: boolean /** Line weight enumeration */ lineWeightEnum?: string | number } /** * Application ID (APPID) table entry * Minimal internal representation during DXF parsing */ export interface AppIdInternal { type: string /** Application name */ name?: string | number /** Standard flags (bit-coded) */ flags?: string | number } /** * Block Record (BLOCK_RECORD) table entry * Minimal internal representation during DXF parsing */ export interface BlockRecordInternal { type: string /** Block record name */ name?: string | number /** Standard flags (bit-coded) */ flags?: string | number } /** * User Coordinate System (UCS) table entry * Minimal internal representation during DXF parsing */ export interface UcsInternal { type: string /** UCS name */ name?: string | number /** Standard flags (bit-coded) */ flags?: string | number } /** * View (VIEW) table entry * Minimal internal representation during DXF parsing */ export interface ViewInternal { type: string /** View name */ name?: string | number /** Standard flags (bit-coded) */ flags?: string | number } /** * Text Style (STYLE) table entry * Internal representation during DXF parsing */ export interface StyleInternal { type: string /** Style name */ name?: string | number /** Line type name */ lineTypeName?: string | number /** Fixed text height (0 if variable) */ fixedTextHeight?: string | number /** Width factor */ widthFactor?: string | number /** Oblique angle */ obliqueAngle?: string | number /** Standard flags (bit-coded) */ flags?: string | number /** Last height used */ lastHeightUsed?: string | number /** Primary font file name */ primaryFontFileName?: string | number /** Big font file name */ bigFontFileName?: string | number } /** * Viewport (VPORT) table entry * Internal representation during DXF parsing */ export interface VPortInternal { type: string /** Viewport name */ name?: string | number /** Handle reference */ handle?: string | number /** Standard flags (bit-coded) */ flags?: string | number /** Lower-left corner coordinates */ lowerLeft: { x?: number; y?: number } /** Upper-right corner coordinates */ upperRight: { x?: number; y?: number } /** Center point coordinates */ center: { x?: number; y?: number } /** Snap settings */ snap?: Record /** Snap spacing */ snapSpacing: { x?: number; y?: number } /** Grid spacing */ gridSpacing: { x?: number; y?: number } /** View direction from target */ direction: { x?: number; y?: number; z?: number } /** View target point */ target: { x?: number; y?: number; z?: number } /** View height */ height?: number /** Snap rotation angle */ snapAngle?: number /** View twist angle */ angle?: number /** UCS origin X coordinate */ x?: number /** UCS origin Y coordinate */ y?: number /** UCS origin Z coordinate */ z?: number /** UCS X-axis X component */ xAxisX?: number /** UCS X-axis Y component */ xAxisY?: number /** UCS X-axis Z component */ xAxisZ?: number /** View elevation */ elevation?: number } /** * Layout object entry * Internal representation during DXF parsing */ export interface LayoutInternal { /** Layout name */ name?: string | number /** Handle reference */ handle?: string | number /** Minimum limits X coordinate */ minLimitX?: number /** Minimum limits Y coordinate */ minLimitY?: number /** Maximum limits X coordinate */ maxLimitX?: number /** Maximum limits Y coordinate */ maxLimitY?: number /** Base point X coordinate */ x?: number /** Base point Y coordinate */ y?: number /** Base point Z coordinate */ z?: number /** Minimum extents X coordinate */ minX?: number /** Minimum extents Y coordinate */ minY?: number /** Minimum extents Z coordinate */ minZ?: number /** Maximum extents X coordinate */ maxX?: number /** Maximum extents Y coordinate */ maxY?: number /** Maximum extents Z coordinate */ maxZ?: number /** Layout flag (PSLTSCALE or LIMCHECK) */ flag?: 'PSLTSCALE' | 'LIMCHECK' /** Tab order */ tabOrder?: string | number /** Elevation */ elevation?: number /** UCS origin X coordinate */ ucsX?: number /** UCS origin Y coordinate */ ucsY?: number /** UCS origin Z coordinate */ ucsZ?: number /** UCS X-axis X component */ ucsXaxisX?: number /** UCS X-axis Y component */ ucsXaxisY?: number /** UCS X-axis Z component */ ucsXaxisZ?: number /** UCS Y-axis X component */ ucsYaxisX?: number /** UCS Y-axis Y component */ ucsYaxisY?: number /** UCS Y-axis Z component */ ucsYaxisZ?: number /** UCS orthographic type */ ucsType?: 'NOT ORTHOGRAPHIC' | 'TOP' | 'BOTTOM' | 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT' /** Associated table record handle */ tableRecord?: string | number /** Last active viewport handle */ lastActiveViewport?: string | number /** Shade plot mode */ shadePlot?: string | number } /** * Dimension Style (DIMSTYLE) table entry * Internal representation during DXF parsing */ export interface DimStyleInternal { type: string /** Dimension style name */ name?: string | number /** Standard flags (bit-coded) */ flags?: string | number /** DIMPOST - General dimensioning suffix */ dimPost?: string | number /** DIMAPOST - Alternate dimensioning suffix */ dimAPost?: string | number /** DIMSCALE - Overall dimensioning scale factor */ dimScale?: number /** DIMASZ - Dimensioning arrow size */ dimAsz?: number /** DIMEXO - Extension line offset */ dimExo?: number /** DIMDLI - Dimension line increment */ dimDli?: number /** DIMEXE - Extension line extension */ dimExe?: number /** DIMRND - Rounding value for dimension distances */ dimRnd?: number /** DIMDLE - Dimension line extension */ dimDle?: number /** DIMTP - Plus tolerance */ dimTp?: number /** DIMTM - Minus tolerance */ dimTm?: number /** DIMTXT - Dimensioning text height */ dimTxt?: number /** DIMCEN - Size of center mark/lines */ dimCen?: number /** DIMTSZ - Dimensioning tick size */ dimTsz?: number /** DIMALTF - Alternate unit scale factor */ dimAltf?: number /** DIMLFAC - Linear measurements scale factor */ dimLfac?: number /** DIMTVP - Text vertical position */ dimTvp?: number /** DIMTFAC - Dimension tolerance display scale factor */ dimTfac?: number /** DIMGAP - Dimension line gap */ dimGap?: number /** DIMALTRND - Determines rounding of alternate units */ dimAltRnd?: number /** DIMTOL - Dimension tolerances generated if nonzero */ dimTol?: number /** DIMLIM - Dimension limits generated if nonzero */ dimLim?: number /** DIMTIH - Text inside horizontal if nonzero */ dimTih?: number /** DIMTOH - Text outside horizontal if nonzero */ dimToh?: number /** DIMSE1 - First extension line suppressed if nonzero */ dimSe1?: number /** DIMSE2 - Second extension line suppressed if nonzero */ dimSe2?: number /** DIMTAD - Text above dimension line if nonzero */ dimTad?: number /** DIMZIN - Controls suppression of zeros for primary unit values */ dimZin?: number /** DIMAZIN - Controls suppression of zeros for angular dimensions */ dimAzin?: number /** DIMALT - Alternate unit dimensioning performed if nonzero */ dimAlt?: number /** DIMALTD - Alternate unit decimal places */ dimAltd?: number /** DIMTOFL - Force text inside extensions if nonzero */ dimTofl?: number /** DIMSAH - Use separate arrow blocks if nonzero */ dimSah?: number /** DIMTIX - Force text inside extensions if nonzero */ dimTix?: number /** DIMSOXD - Suppress outside-extensions dimension lines if nonzero */ dimSoxd?: number /** DIMCLRD - Dimension line color */ dimClrd?: number /** DIMCLRE - Dimension extension line color */ dimClre?: number /** DIMCLRT - Dimension text color */ dimClrt?: number /** DIMADEC - Number of precision places for angular dimensions */ dimAdec?: number /** DIMUNIT - Units format (obsolete, now use DIMLUNIT AND DIMFRAC) */ dimUnit?: number /** DIMDEC - Number of decimal places for tolerance values */ dimDec?: number /** DIMTDEC - Number of decimal places for tolerance values */ dimTdec?: number /** DIMALTU - Units format for alternate units */ dimAltu?: number /** DIMALTTD - Number of decimal places for alternate tolerance values */ dimAlttd?: number /** DIMAUNIT - Angle format for angular dimensions */ dimAunit?: number /** DIMFRAC - Fraction format */ dimFrac?: number /** DIMLUNIT - Linear unit format */ dimLunit?: number /** DIMDSEP - Decimal separator character */ dimDsep?: number /** DIMTMOVE - Dimension text movement rules */ dimTmove?: number /** DIMJUST - Horizontal dimension text position */ dimJust?: number /** DIMSD1 - Suppression of first extension line */ dimSd1?: number /** DIMSD2 - Suppression of second extension line */ dimSd2?: number /** DIMTOLJ - Vertical justification for tolerance values */ dimTolj?: number /** DIMTZIN - Controls suppression of zeros for tolerance values */ dimTzin?: number /** DIMALTZ - Controls suppression of zeros for alternate unit values */ dimAltz?: number /** DIMALTTZ - Controls suppression of zeros for alternate tolerance values */ dimAlttz?: number /** DIMFIT - Fit options (obsolete, now use DIMATFIT and DIMTMOVE) */ dimFit?: number /** DIMUPT - Cursor functionality for user-positioned text */ dimUpt?: number /** DIMATFIT - Controls dimension text and arrow placement */ dimAtfit?: number /** DIMTXSTY - Dimension text style (handle reference) */ dimTxsty?: string | number /** DIMLDRBLK - Leader arrow block (handle reference) */ dimLdrblk?: string | number /** DIMBLK - Arrow block (handle reference) */ dimBlk?: string | number /** DIMBLK1 - First arrow block (handle reference) */ dimBlk1?: string | number /** DIMBLK2 - Second arrow block (handle reference) */ dimBlk2?: string | number /** DIMLWD - Dimension line lineweight */ dimLwd?: number /** DIMLWE - Extension line lineweight */ dimLwe?: number } /** * DXF Objects section result */ export interface DictionaryObject { type: 'DICTIONARY' handle?: string | number ownerHandle?: string | number entries: Record } export interface XRecordObject { type: 'XRECORD' handle?: string | number ownerHandle?: string | number /** Raw tuples for downstream consumers (excluding the initial 0/XRECORD tuple). */ tuples: DXFTuple[] } export interface ImageDefObject { type: 'IMAGEDEF' handle?: string | number /** Soft-pointer ID/handle to the ACAD_IMAGE_dict dictionary (when present). */ ownerHandle?: string | number /** File name of the referenced image. */ fileName?: string /** Image size in pixels (when available). */ pixelSizeX?: number pixelSizeY?: number /** Raw tuples for downstream consumers (excluding the initial 0/IMAGEDEF tuple). */ tuples: DXFTuple[] } export interface ImageDefReactorObject { type: 'IMAGEDEF_REACTOR' handle?: string | number /** Object ID/handle for the associated IMAGE entity (when present). */ imageHandle?: string | number /** Raw tuples for downstream consumers (excluding the initial 0/IMAGEDEF_REACTOR tuple). */ tuples: DXFTuple[] } export type UnderlayDefinitionObjectType = | 'UNDERLAYDEFINITION' | 'PDFDEFINITION' | 'DWFDEFINITION' | 'DGNDEFINITION' export interface UnderlayDefinitionObject { type: UnderlayDefinitionObjectType handle?: string | number /** Soft-pointer ID/handle to the owning dictionary (when present). */ ownerHandle?: string | number /** File name or path of the referenced underlay. */ fileName?: string /** Underlay name within the file (e.g., sheet name). */ underlayName?: string /** Raw tuples for downstream consumers (excluding the initial 0/ tuple). */ tuples: DXFTuple[] } export interface DimAssocObject { type: 'DIMASSOC' handle?: string | number /** Soft-pointer ID/handle to the owning dictionary (when present). */ ownerHandle?: string | number /** Raw tuples for downstream consumers (excluding the initial 0/DIMASSOC tuple). */ tuples: DXFTuple[] } export interface FieldObject { type: 'FIELD' handle?: string | number /** Soft-pointer ID/handle to the owning dictionary (when present). */ ownerHandle?: string | number /** Raw tuples for downstream consumers (excluding the initial 0/FIELD tuple). */ tuples: DXFTuple[] } export interface ParsedObjects { /** Layout objects */ layouts: LayoutInternal[] /** DICTIONARY objects keyed by handle */ dictionaries?: Record /** XRECORD objects keyed by handle */ xRecords?: Record /** IMAGEDEF objects keyed by handle */ imageDefs?: Record /** IMAGEDEF_REACTOR objects keyed by handle */ imageDefReactors?: Record /** UNDERLAYDEFINITION objects keyed by handle */ underlayDefinitions?: Record /** DIMASSOC objects keyed by handle */ dimAssocs?: Record /** FIELD objects keyed by handle */ fields?: Record }