@linkiez/dxf-renew 7.1.0 → 7.2.0
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 +1 -16
- package/.yarn/install-state.gz +0 -0
- package/ARCHITECTURE.md +163 -0
- package/CHANGELOG.md +16 -0
- package/README.md +72 -10
- package/{PLAN.md → ROADMAP.md} +227 -35
- package/dist/dxf.js +1090 -344
- package/docs/FIXTURE_VALIDATION_EZDXF.md +1 -1
- package/lib/Helper.cjs +4 -0
- package/lib/Helper.cjs.map +3 -3
- package/lib/Helper.js +4 -0
- package/lib/Helper.js.map +2 -2
- package/lib/entityToPolyline.cjs +95 -0
- package/lib/entityToPolyline.cjs.map +3 -3
- package/lib/entityToPolyline.js +95 -0
- package/lib/entityToPolyline.js.map +2 -2
- package/lib/handlers/entities.cjs +22 -2
- package/lib/handlers/entities.cjs.map +3 -3
- package/lib/handlers/entities.js +22 -2
- package/lib/handlers/entities.js.map +2 -2
- package/lib/handlers/entity/mleader.cjs +69 -0
- package/lib/handlers/entity/mleader.cjs.map +7 -0
- package/lib/handlers/entity/mleader.js +34 -0
- package/lib/handlers/entity/mleader.js.map +7 -0
- package/lib/handlers/entity/mline.cjs +91 -0
- package/lib/handlers/entity/mline.cjs.map +7 -0
- package/lib/handlers/entity/mline.js +56 -0
- package/lib/handlers/entity/mline.js.map +7 -0
- package/lib/handlers/entity/oleframe.cjs +98 -0
- package/lib/handlers/entity/oleframe.cjs.map +7 -0
- package/lib/handlers/entity/oleframe.js +63 -0
- package/lib/handlers/entity/oleframe.js.map +7 -0
- package/lib/handlers/entity/ray.cjs +81 -0
- package/lib/handlers/entity/ray.cjs.map +7 -0
- package/lib/handlers/entity/ray.js +46 -0
- package/lib/handlers/entity/ray.js.map +7 -0
- package/lib/handlers/entity/region.cjs +67 -0
- package/lib/handlers/entity/region.cjs.map +7 -0
- package/lib/handlers/entity/region.js +32 -0
- package/lib/handlers/entity/region.js.map +7 -0
- package/lib/handlers/entity/shape.cjs +95 -0
- package/lib/handlers/entity/shape.cjs.map +7 -0
- package/lib/handlers/entity/shape.js +60 -0
- package/lib/handlers/entity/shape.js.map +7 -0
- package/lib/handlers/entity/table.cjs +71 -0
- package/lib/handlers/entity/table.cjs.map +7 -0
- package/lib/handlers/entity/table.js +36 -0
- package/lib/handlers/entity/table.js.map +7 -0
- package/lib/handlers/entity/trace.cjs +101 -0
- package/lib/handlers/entity/trace.cjs.map +7 -0
- package/lib/handlers/entity/trace.js +66 -0
- package/lib/handlers/entity/trace.js.map +7 -0
- package/lib/handlers/entity/wipeout.cjs +122 -0
- package/lib/handlers/entity/wipeout.cjs.map +7 -0
- package/lib/handlers/entity/wipeout.js +87 -0
- package/lib/handlers/entity/wipeout.js.map +7 -0
- package/lib/handlers/entity/xline.cjs +81 -0
- package/lib/handlers/entity/xline.cjs.map +7 -0
- package/lib/handlers/entity/xline.js +46 -0
- package/lib/handlers/entity/xline.js.map +7 -0
- package/lib/handlers/objects.cjs +43 -1
- package/lib/handlers/objects.cjs.map +2 -2
- package/lib/handlers/objects.js +43 -1
- package/lib/handlers/objects.js.map +2 -2
- package/lib/handlers/tables.cjs +96 -17
- package/lib/handlers/tables.cjs.map +2 -2
- package/lib/handlers/tables.js +96 -17
- package/lib/handlers/tables.js.map +2 -2
- package/lib/index.cjs +5 -2
- package/lib/index.cjs.map +3 -3
- package/lib/index.js +18 -16
- package/lib/index.js.map +3 -3
- package/lib/toJson.cjs +29 -0
- package/lib/toJson.cjs.map +7 -0
- package/lib/toJson.js +9 -0
- package/lib/toJson.js.map +7 -0
- package/lib/toSVG.cjs +34 -3
- package/lib/toSVG.cjs.map +2 -2
- package/lib/toSVG.js +34 -3
- package/lib/toSVG.js.map +2 -2
- package/lib/types/entity.cjs.map +1 -1
- package/lib/types/helper.cjs.map +1 -1
- package/lib/types/index.cjs +20 -0
- package/lib/types/index.cjs.map +2 -2
- package/lib/types/index.js +10 -0
- package/lib/types/index.js.map +2 -2
- package/lib/types/mleader-entity.cjs +17 -0
- package/lib/types/mleader-entity.cjs.map +7 -0
- package/lib/types/mleader-entity.js +1 -0
- package/lib/types/mleader-entity.js.map +7 -0
- package/lib/types/mline-entity.cjs +17 -0
- package/lib/types/mline-entity.cjs.map +7 -0
- package/lib/types/mline-entity.js +1 -0
- package/lib/types/mline-entity.js.map +7 -0
- package/lib/types/oleframe-entity.cjs +17 -0
- package/lib/types/oleframe-entity.cjs.map +7 -0
- package/lib/types/oleframe-entity.js +1 -0
- package/lib/types/oleframe-entity.js.map +7 -0
- package/lib/types/options.cjs.map +1 -1
- package/lib/types/ray-entity.cjs +17 -0
- package/lib/types/ray-entity.cjs.map +7 -0
- package/lib/types/ray-entity.js +1 -0
- package/lib/types/ray-entity.js.map +7 -0
- package/lib/types/region-entity.cjs +17 -0
- package/lib/types/region-entity.cjs.map +7 -0
- package/lib/types/region-entity.js +1 -0
- package/lib/types/region-entity.js.map +7 -0
- package/lib/types/shape-entity.cjs +17 -0
- package/lib/types/shape-entity.cjs.map +7 -0
- package/lib/types/shape-entity.js +1 -0
- package/lib/types/shape-entity.js.map +7 -0
- package/lib/types/table-entity.cjs +17 -0
- package/lib/types/table-entity.cjs.map +7 -0
- package/lib/types/table-entity.js +1 -0
- package/lib/types/table-entity.js.map +7 -0
- package/lib/types/tables.cjs.map +1 -1
- package/lib/types/trace-entity.cjs +17 -0
- package/lib/types/trace-entity.cjs.map +7 -0
- package/lib/types/trace-entity.js +1 -0
- package/lib/types/trace-entity.js.map +7 -0
- package/lib/types/wipeout-entity.cjs +17 -0
- package/lib/types/wipeout-entity.cjs.map +7 -0
- package/lib/types/wipeout-entity.js +1 -0
- package/lib/types/wipeout-entity.js.map +7 -0
- package/lib/types/xline-entity.cjs +17 -0
- package/lib/types/xline-entity.cjs.map +7 -0
- package/lib/types/xline-entity.js +1 -0
- package/lib/types/xline-entity.js.map +7 -0
- package/package.json +5 -19
- package/src/Helper.ts +6 -1
- package/src/entityToPolyline.ts +124 -2
- package/src/handlers/entities.ts +21 -1
- package/src/handlers/entity/mleader.ts +46 -0
- package/src/handlers/entity/mline.ts +74 -0
- package/src/handlers/entity/oleframe.ts +62 -0
- package/src/handlers/entity/ray.ts +52 -0
- package/src/handlers/entity/region.ts +42 -0
- package/src/handlers/entity/shape.ts +73 -0
- package/src/handlers/entity/table.ts +49 -0
- package/src/handlers/entity/trace.ts +72 -0
- package/src/handlers/entity/wipeout.ts +114 -0
- package/src/handlers/entity/xline.ts +52 -0
- package/src/handlers/objects.ts +64 -8
- package/src/handlers/tables.ts +134 -21
- package/src/index.ts +9 -18
- package/src/toJson.ts +8 -0
- package/src/toSVG.ts +45 -3
- package/src/types/entity.ts +20 -0
- package/src/types/helper.ts +2 -1
- package/src/types/index.ts +10 -0
- package/src/types/mleader-entity.ts +8 -0
- package/src/types/mline-entity.ts +12 -0
- package/src/types/oleframe-entity.ts +40 -0
- package/src/types/options.ts +7 -0
- package/src/types/ray-entity.ts +12 -0
- package/src/types/region-entity.ts +11 -0
- package/src/types/shape-entity.ts +19 -0
- package/src/types/table-entity.ts +14 -0
- package/src/types/tables.ts +76 -0
- package/src/types/trace-entity.ts +14 -0
- package/src/types/wipeout-entity.ts +20 -0
- package/src/types/xline-entity.ts +12 -0
- package/docs/DIMENSION_SUMMARY.md +0 -254
- package/docs/DXF_VERSION_SUPPORT.md +0 -45
- package/docs/ENTITY_SVG_ROADMAP.md +0 -96
- package/docs/IMPLEMENTED-2D-ENTITIES.md +0 -54
- package/docs/README.md +0 -22
- package/docs/SVG_RENDERING_INTEGRATION_TESTS.md +0 -119
- package/docs/TEXT-MTEXT-DIMENSION-SUPPORT.md +0 -241
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/handlers/objects.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n DictionaryObject,\n DXFTuple,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["import type {\n DictionaryObject,\n DimAssocObject,\n DXFTuple,\n FieldObject,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nfunction parseDimAssocObject(group: ObjectGroup): DimAssocObject | undefined {\n if (group[0]?.[1] !== 'DIMASSOC') return undefined\n\n const tuples = group.slice(1)\n\n const dimAssoc: DimAssocObject = {\n type: 'DIMASSOC',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) dimAssoc.handle = value\n if (type === 330) dimAssoc.ownerHandle = value\n }\n\n return dimAssoc\n}\n\nfunction parseFieldObject(group: ObjectGroup): FieldObject | undefined {\n if (group[0]?.[1] !== 'FIELD') return undefined\n\n const tuples = group.slice(1)\n\n const field: FieldObject = {\n type: 'FIELD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) field.handle = value\n if (type === 330) field.ownerHandle = value\n }\n\n return field\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DIMASSOC: (objects, group) => {\n const dimAssoc = parseDimAssocObject(group)\n const handle = dimAssoc?.handle ? String(dimAssoc.handle) : undefined\n if (dimAssoc && handle) objects.dimAssocs![handle] = dimAssoc\n },\n FIELD: (objects, group) => {\n const field = parseFieldObject(group)\n const handle = field?.handle ? String(field.handle) : undefined\n if (field && handle) objects.fields![handle] = field\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n dimAssocs: {},\n fields: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/handlers/objects.js
CHANGED
|
@@ -176,6 +176,36 @@ function parseImageDefReactorObject(group) {
|
|
|
176
176
|
}
|
|
177
177
|
return reactor;
|
|
178
178
|
}
|
|
179
|
+
function parseDimAssocObject(group) {
|
|
180
|
+
if (group[0]?.[1] !== "DIMASSOC") return void 0;
|
|
181
|
+
const tuples = group.slice(1);
|
|
182
|
+
const dimAssoc = {
|
|
183
|
+
type: "DIMASSOC",
|
|
184
|
+
tuples
|
|
185
|
+
};
|
|
186
|
+
for (const tuple of tuples) {
|
|
187
|
+
const type = tuple[0];
|
|
188
|
+
const value = tuple[1];
|
|
189
|
+
if (type === 5) dimAssoc.handle = value;
|
|
190
|
+
if (type === 330) dimAssoc.ownerHandle = value;
|
|
191
|
+
}
|
|
192
|
+
return dimAssoc;
|
|
193
|
+
}
|
|
194
|
+
function parseFieldObject(group) {
|
|
195
|
+
if (group[0]?.[1] !== "FIELD") return void 0;
|
|
196
|
+
const tuples = group.slice(1);
|
|
197
|
+
const field = {
|
|
198
|
+
type: "FIELD",
|
|
199
|
+
tuples
|
|
200
|
+
};
|
|
201
|
+
for (const tuple of tuples) {
|
|
202
|
+
const type = tuple[0];
|
|
203
|
+
const value = tuple[1];
|
|
204
|
+
if (type === 5) field.handle = value;
|
|
205
|
+
if (type === 330) field.ownerHandle = value;
|
|
206
|
+
}
|
|
207
|
+
return field;
|
|
208
|
+
}
|
|
179
209
|
const UNDERLAY_DEFINITION_OBJECT_TYPES = /* @__PURE__ */ new Set([
|
|
180
210
|
"UNDERLAYDEFINITION",
|
|
181
211
|
"PDFDEFINITION",
|
|
@@ -245,6 +275,16 @@ const OBJECT_GROUP_HANDLERS = {
|
|
|
245
275
|
const def = parseUnderlayDefinitionObject(group);
|
|
246
276
|
const handle = def?.handle ? String(def.handle) : void 0;
|
|
247
277
|
if (def && handle) objects.underlayDefinitions[handle] = def;
|
|
278
|
+
},
|
|
279
|
+
DIMASSOC: (objects, group) => {
|
|
280
|
+
const dimAssoc = parseDimAssocObject(group);
|
|
281
|
+
const handle = dimAssoc?.handle ? String(dimAssoc.handle) : void 0;
|
|
282
|
+
if (dimAssoc && handle) objects.dimAssocs[handle] = dimAssoc;
|
|
283
|
+
},
|
|
284
|
+
FIELD: (objects, group) => {
|
|
285
|
+
const field = parseFieldObject(group);
|
|
286
|
+
const handle = field?.handle ? String(field.handle) : void 0;
|
|
287
|
+
if (field && handle) objects.fields[handle] = field;
|
|
248
288
|
}
|
|
249
289
|
};
|
|
250
290
|
function parseObjects(tuples) {
|
|
@@ -254,7 +294,9 @@ function parseObjects(tuples) {
|
|
|
254
294
|
xRecords: {},
|
|
255
295
|
imageDefs: {},
|
|
256
296
|
imageDefReactors: {},
|
|
257
|
-
underlayDefinitions: {}
|
|
297
|
+
underlayDefinitions: {},
|
|
298
|
+
dimAssocs: {},
|
|
299
|
+
fields: {}
|
|
258
300
|
};
|
|
259
301
|
const groups = groupObjectsByZero(tuples);
|
|
260
302
|
for (const group of groups) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/handlers/objects.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n DictionaryObject,\n DXFTuple,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type {\n DictionaryObject,\n DimAssocObject,\n DXFTuple,\n FieldObject,\n ImageDefObject,\n ImageDefReactorObject,\n LayoutInternal,\n ParsedObjects,\n UnderlayDefinitionObject,\n XRecordObject,\n} from '../types'\n\ntype ObjectGroup = DXFTuple[]\n\nfunction groupObjectsByZero(tuples: DXFTuple[]): ObjectGroup[] {\n const groups: ObjectGroup[] = []\n let current: ObjectGroup | undefined\n\n for (const tuple of tuples) {\n const code = tuple[0]\n if (code === 0) {\n if (current && current.length > 0) groups.push(current)\n current = [tuple]\n continue\n }\n if (!current) continue\n current.push(tuple)\n }\n\n if (current && current.length > 0) groups.push(current)\n return groups\n}\n\nconst LAYOUT_FLOAT_FIELDS: Record<number, keyof LayoutInternal> = {\n 10: 'minLimitX',\n 20: 'minLimitY',\n 11: 'maxLimitX',\n 21: 'maxLimitY',\n 12: 'x',\n 22: 'y',\n 32: 'z',\n 14: 'minX',\n 24: 'minY',\n 34: 'minZ',\n 15: 'maxX',\n 25: 'maxY',\n 35: 'maxZ',\n 146: 'elevation',\n 13: 'ucsX',\n 23: 'ucsY',\n 33: 'ucsZ',\n 16: 'ucsXaxisX',\n 26: 'ucsXaxisY',\n 36: 'ucsXaxisZ',\n 17: 'ucsYaxisX',\n 27: 'ucsYaxisY',\n 37: 'ucsYaxisZ',\n}\n\nconst LAYOUT_DIRECT_FIELDS: Record<number, keyof LayoutInternal> = {\n 1: 'name',\n 5: 'handle',\n 71: 'tabOrder',\n 330: 'tableRecord',\n 331: 'lastActiveViewport',\n 333: 'shadePlot',\n}\n\nconst LAYOUT_UCS_TYPE: Record<number, LayoutInternal['ucsType']> = {\n 0: 'NOT ORTHOGRAPHIC',\n 1: 'TOP',\n 2: 'BOTTOM',\n 3: 'FRONT',\n 4: 'BACK',\n 5: 'LEFT',\n 6: 'RIGHT',\n}\n\ntype LayoutParseState = {\n state: 'IDLE' | 'layout' | 'AcDbLayout'\n layout?: LayoutInternal\n}\n\nfunction consumeLayoutStartTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[1] === 'LAYOUT') return { state: 'layout', layout: {} }\n return { state: 'IDLE', layout: current.layout }\n}\n\nfunction consumeLayoutSubclassTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 100 && tuple[1] === 'AcDbLayout') return { state: 'AcDbLayout', layout: current.layout }\n return current\n}\n\nfunction applyLayoutFieldTuple(layout: LayoutInternal, tuple: DXFTuple): void {\n const type = tuple[0]\n const value = tuple[1]\n\n const floatKey = LAYOUT_FLOAT_FIELDS[type]\n if (floatKey) {\n ;(layout as any)[floatKey] = Number.parseFloat(String(value))\n return\n }\n\n const directKey = LAYOUT_DIRECT_FIELDS[type]\n if (directKey) {\n ;(layout as any)[directKey] = value\n return\n }\n\n if (type === 70) {\n layout.flag = value === 1 ? 'PSLTSCALE' : 'LIMCHECK'\n return\n }\n\n if (type === 76) {\n const ucsType = LAYOUT_UCS_TYPE[Number(value)]\n if (ucsType) layout.ucsType = ucsType\n }\n}\n\nfunction consumeLayoutTuple(current: LayoutParseState, tuple: DXFTuple): LayoutParseState {\n if (tuple[0] === 0) return consumeLayoutStartTuple(current, tuple)\n\n if (current.state === 'layout') return consumeLayoutSubclassTuple(current, tuple)\n\n if (current.state === 'AcDbLayout' && current.layout) applyLayoutFieldTuple(current.layout, tuple)\n return current\n}\n\nfunction parseLayoutObject(group: ObjectGroup): LayoutInternal | undefined {\n let current: LayoutParseState = { state: 'IDLE' }\n for (const tuple of group) current = consumeLayoutTuple(current, tuple)\n return current.layout\n}\n\nfunction parseDictionaryObject(group: ObjectGroup): DictionaryObject | undefined {\n if (group[0]?.[1] !== 'DICTIONARY') return undefined\n\n const dict: DictionaryObject = {\n type: 'DICTIONARY',\n entries: {},\n }\n\n let pendingKey: string | undefined\n for (const tuple of group.slice(1)) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) {\n dict.handle = value\n continue\n }\n if (type === 330) {\n dict.ownerHandle = value\n continue\n }\n if (type === 3) {\n pendingKey = String(value)\n continue\n }\n if ((type === 350 || type === 360) && pendingKey) {\n dict.entries[pendingKey] = String(value)\n pendingKey = undefined\n }\n }\n\n return dict\n}\n\nfunction parseXRecordObject(group: ObjectGroup): XRecordObject | undefined {\n if (group[0]?.[1] !== 'XRECORD') return undefined\n\n const tuples = group.slice(1)\n\n const xRecord: XRecordObject = {\n type: 'XRECORD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) xRecord.handle = value\n if (type === 330) xRecord.ownerHandle = value\n }\n\n return xRecord\n}\n\nfunction parseImageDefObject(group: ObjectGroup): ImageDefObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF') return undefined\n\n const tuples = group.slice(1)\n\n const imageDef: ImageDefObject = {\n type: 'IMAGEDEF',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) imageDef.handle = value\n if (type === 330 && imageDef.ownerHandle === undefined) imageDef.ownerHandle = value\n if (type === 1) imageDef.fileName = String(value)\n if (type === 10) imageDef.pixelSizeX = Number(value)\n if (type === 20) imageDef.pixelSizeY = Number(value)\n }\n\n return imageDef\n}\n\nfunction parseImageDefReactorObject(group: ObjectGroup): ImageDefReactorObject | undefined {\n if (group[0]?.[1] !== 'IMAGEDEF_REACTOR') return undefined\n\n const tuples = group.slice(1)\n\n const reactor: ImageDefReactorObject = {\n type: 'IMAGEDEF_REACTOR',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) reactor.handle = value\n if (type === 330) reactor.imageHandle = value\n }\n\n return reactor\n}\n\nfunction parseDimAssocObject(group: ObjectGroup): DimAssocObject | undefined {\n if (group[0]?.[1] !== 'DIMASSOC') return undefined\n\n const tuples = group.slice(1)\n\n const dimAssoc: DimAssocObject = {\n type: 'DIMASSOC',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) dimAssoc.handle = value\n if (type === 330) dimAssoc.ownerHandle = value\n }\n\n return dimAssoc\n}\n\nfunction parseFieldObject(group: ObjectGroup): FieldObject | undefined {\n if (group[0]?.[1] !== 'FIELD') return undefined\n\n const tuples = group.slice(1)\n\n const field: FieldObject = {\n type: 'FIELD',\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) field.handle = value\n if (type === 330) field.ownerHandle = value\n }\n\n return field\n}\n\nconst UNDERLAY_DEFINITION_OBJECT_TYPES = new Set([\n 'UNDERLAYDEFINITION',\n 'PDFDEFINITION',\n 'DWFDEFINITION',\n 'DGNDEFINITION',\n])\n\nfunction parseUnderlayDefinitionObject(group: ObjectGroup): UnderlayDefinitionObject | undefined {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') return undefined\n if (!UNDERLAY_DEFINITION_OBJECT_TYPES.has(objectType)) return undefined\n\n const tuples = group.slice(1)\n\n const def: UnderlayDefinitionObject = {\n type: objectType as UnderlayDefinitionObject['type'],\n tuples,\n }\n\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n\n if (type === 5) def.handle = value\n if (type === 330 && def.ownerHandle === undefined) def.ownerHandle = value\n if (type === 1) def.fileName = String(value)\n if (type === 2) def.underlayName = String(value)\n }\n\n return def\n}\n\ntype ObjectGroupHandler = (objects: ParsedObjects, group: ObjectGroup) => void\n\nconst OBJECT_GROUP_HANDLERS: Record<string, ObjectGroupHandler> = {\n LAYOUT: (objects, group) => {\n const layout = parseLayoutObject(group)\n if (layout) objects.layouts.push(layout)\n },\n DICTIONARY: (objects, group) => {\n const dict = parseDictionaryObject(group)\n const handle = dict?.handle ? String(dict.handle) : undefined\n if (dict && handle) objects.dictionaries![handle] = dict\n },\n XRECORD: (objects, group) => {\n const xRecord = parseXRecordObject(group)\n const handle = xRecord?.handle ? String(xRecord.handle) : undefined\n if (xRecord && handle) objects.xRecords![handle] = xRecord\n },\n IMAGEDEF: (objects, group) => {\n const imageDef = parseImageDefObject(group)\n const handle = imageDef?.handle ? String(imageDef.handle) : undefined\n if (imageDef && handle) objects.imageDefs![handle] = imageDef\n },\n IMAGEDEF_REACTOR: (objects, group) => {\n const reactor = parseImageDefReactorObject(group)\n const handle = reactor?.handle ? String(reactor.handle) : undefined\n if (reactor && handle) objects.imageDefReactors![handle] = reactor\n },\n UNDERLAYDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n PDFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DWFDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DGNDEFINITION: (objects, group) => {\n const def = parseUnderlayDefinitionObject(group)\n const handle = def?.handle ? String(def.handle) : undefined\n if (def && handle) objects.underlayDefinitions![handle] = def\n },\n DIMASSOC: (objects, group) => {\n const dimAssoc = parseDimAssocObject(group)\n const handle = dimAssoc?.handle ? String(dimAssoc.handle) : undefined\n if (dimAssoc && handle) objects.dimAssocs![handle] = dimAssoc\n },\n FIELD: (objects, group) => {\n const field = parseFieldObject(group)\n const handle = field?.handle ? String(field.handle) : undefined\n if (field && handle) objects.fields![handle] = field\n },\n}\n\nexport default function parseObjects(tuples: DXFTuple[]): ParsedObjects {\n const objects: ParsedObjects = {\n layouts: [],\n dictionaries: {},\n xRecords: {},\n imageDefs: {},\n imageDefReactors: {},\n underlayDefinitions: {},\n dimAssocs: {},\n fields: {},\n }\n\n const groups = groupObjectsByZero(tuples)\n for (const group of groups) {\n const objectType = group[0]?.[1]\n if (typeof objectType !== 'string') continue\n\n const handler = OBJECT_GROUP_HANDLERS[objectType]\n if (handler) handler(objects, group)\n }\n\n return objects\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/lib/handlers/tables.cjs
CHANGED
|
@@ -189,6 +189,7 @@ const vPortHandler = (tuples) => {
|
|
|
189
189
|
const type = tuple[0];
|
|
190
190
|
const value = tuple[1];
|
|
191
191
|
switch (type) {
|
|
192
|
+
// NOSONAR
|
|
192
193
|
case 2:
|
|
193
194
|
vport.name = value;
|
|
194
195
|
break;
|
|
@@ -302,12 +303,89 @@ const vPortHandler = (tuples) => {
|
|
|
302
303
|
}
|
|
303
304
|
);
|
|
304
305
|
};
|
|
306
|
+
const appIdHandler = (tuples) => {
|
|
307
|
+
return tuples.reduce(
|
|
308
|
+
(appId, tuple) => {
|
|
309
|
+
const type = tuple[0];
|
|
310
|
+
const value = tuple[1];
|
|
311
|
+
switch (type) {
|
|
312
|
+
case 2:
|
|
313
|
+
appId.name = value;
|
|
314
|
+
break;
|
|
315
|
+
case 70:
|
|
316
|
+
appId.flags = value;
|
|
317
|
+
break;
|
|
318
|
+
default:
|
|
319
|
+
}
|
|
320
|
+
return appId;
|
|
321
|
+
},
|
|
322
|
+
{ type: "APPID" }
|
|
323
|
+
);
|
|
324
|
+
};
|
|
325
|
+
const blockRecordHandler = (tuples) => {
|
|
326
|
+
return tuples.reduce(
|
|
327
|
+
(blockRecord, tuple) => {
|
|
328
|
+
const type = tuple[0];
|
|
329
|
+
const value = tuple[1];
|
|
330
|
+
switch (type) {
|
|
331
|
+
case 2:
|
|
332
|
+
blockRecord.name = value;
|
|
333
|
+
break;
|
|
334
|
+
case 70:
|
|
335
|
+
blockRecord.flags = value;
|
|
336
|
+
break;
|
|
337
|
+
default:
|
|
338
|
+
}
|
|
339
|
+
return blockRecord;
|
|
340
|
+
},
|
|
341
|
+
{ type: "BLOCK_RECORD" }
|
|
342
|
+
);
|
|
343
|
+
};
|
|
344
|
+
const ucsHandler = (tuples) => {
|
|
345
|
+
return tuples.reduce(
|
|
346
|
+
(ucs, tuple) => {
|
|
347
|
+
const type = tuple[0];
|
|
348
|
+
const value = tuple[1];
|
|
349
|
+
switch (type) {
|
|
350
|
+
case 2:
|
|
351
|
+
ucs.name = value;
|
|
352
|
+
break;
|
|
353
|
+
case 70:
|
|
354
|
+
ucs.flags = value;
|
|
355
|
+
break;
|
|
356
|
+
default:
|
|
357
|
+
}
|
|
358
|
+
return ucs;
|
|
359
|
+
},
|
|
360
|
+
{ type: "UCS" }
|
|
361
|
+
);
|
|
362
|
+
};
|
|
363
|
+
const viewHandler = (tuples) => {
|
|
364
|
+
return tuples.reduce(
|
|
365
|
+
(view, tuple) => {
|
|
366
|
+
const type = tuple[0];
|
|
367
|
+
const value = tuple[1];
|
|
368
|
+
switch (type) {
|
|
369
|
+
case 2:
|
|
370
|
+
view.name = value;
|
|
371
|
+
break;
|
|
372
|
+
case 70:
|
|
373
|
+
view.flags = value;
|
|
374
|
+
break;
|
|
375
|
+
default:
|
|
376
|
+
}
|
|
377
|
+
return view;
|
|
378
|
+
},
|
|
379
|
+
{ type: "VIEW" }
|
|
380
|
+
);
|
|
381
|
+
};
|
|
305
382
|
const dimStyleHandler = (tuples) => {
|
|
306
383
|
return tuples.reduce(
|
|
307
384
|
(dimStyle, tuple) => {
|
|
308
385
|
const type = tuple[0];
|
|
309
386
|
const value = tuple[1];
|
|
310
387
|
switch (type) {
|
|
388
|
+
// NOSONAR
|
|
311
389
|
case 2:
|
|
312
390
|
dimStyle.name = value;
|
|
313
391
|
break;
|
|
@@ -558,30 +636,31 @@ function parseTables(tuples) {
|
|
|
558
636
|
tableTuples.push(tuple);
|
|
559
637
|
}
|
|
560
638
|
}
|
|
561
|
-
|
|
562
|
-
let layersTuples = [];
|
|
563
|
-
let vPortTuples = [];
|
|
564
|
-
let ltypeTuples = [];
|
|
565
|
-
let dimStyleTuples = [];
|
|
639
|
+
const groupsByName = {};
|
|
566
640
|
for (const group of tableGroups) {
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
ltypeTuples = group;
|
|
571
|
-
} else if (group[0]?.[1] === "LAYER") {
|
|
572
|
-
layersTuples = group;
|
|
573
|
-
} else if (group[0]?.[1] === "VPORT") {
|
|
574
|
-
vPortTuples = group;
|
|
575
|
-
} else if (group[0]?.[1] === "DIMSTYLE") {
|
|
576
|
-
dimStyleTuples = group;
|
|
577
|
-
}
|
|
641
|
+
const name = String(group[0]?.[1] ?? "");
|
|
642
|
+
if (!name) continue;
|
|
643
|
+
groupsByName[name] = group;
|
|
578
644
|
}
|
|
645
|
+
const stylesTuples = groupsByName.STYLE ?? [];
|
|
646
|
+
const layersTuples = groupsByName.LAYER ?? [];
|
|
647
|
+
const vPortTuples = groupsByName.VPORT ?? [];
|
|
648
|
+
const ltypeTuples = groupsByName.LTYPE ?? [];
|
|
649
|
+
const dimStyleTuples = groupsByName.DIMSTYLE ?? [];
|
|
650
|
+
const appIdTuples = groupsByName.APPID ?? [];
|
|
651
|
+
const blockRecordTuples = groupsByName.BLOCK_RECORD ?? [];
|
|
652
|
+
const ucsTuples = groupsByName.UCS ?? [];
|
|
653
|
+
const viewTuples = groupsByName.VIEW ?? [];
|
|
579
654
|
return {
|
|
580
655
|
layers: tableHandler(layersTuples, "LAYER", layerHandler),
|
|
581
656
|
styles: tableHandler(stylesTuples, "STYLE", styleHandler),
|
|
582
657
|
vports: tableHandler(vPortTuples, "VPORT", vPortHandler),
|
|
583
658
|
ltypes: tableHandler(ltypeTuples, "LTYPE", ltypeHandler),
|
|
584
|
-
dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler)
|
|
659
|
+
dimStyles: tableHandler(dimStyleTuples, "DIMSTYLE", dimStyleHandler),
|
|
660
|
+
appids: tableHandler(appIdTuples, "APPID", appIdHandler),
|
|
661
|
+
blockRecords: tableHandler(blockRecordTuples, "BLOCK_RECORD", blockRecordHandler),
|
|
662
|
+
ucs: tableHandler(ucsTuples, "UCS", ucsHandler),
|
|
663
|
+
views: tableHandler(viewTuples, "VIEW", viewHandler)
|
|
585
664
|
};
|
|
586
665
|
}
|
|
587
666
|
//# sourceMappingURL=tables.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/handlers/tables.ts"],
|
|
4
|
-
"sourcesContent": ["import type { DXFTuple, DimStyleInternal, LTypeElement, LTypeInternal, LayerInternal, StyleInternal, VPortInternal } from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 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)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (tuples: DXFTuple[]) => LTypeInternal | LayerInternal | StyleInternal | VPortInternal | DimStyleInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n let stylesTuples: DXFTuple[] = []\n let layersTuples: DXFTuple[] = []\n let vPortTuples: DXFTuple[] = []\n let ltypeTuples: DXFTuple[] = []\n let dimStyleTuples: DXFTuple[] = []\n for (const group of tableGroups) {\n if (group[0]?.[1] === 'STYLE') {\n stylesTuples = group\n } else if (group[0]?.[1] === 'LTYPE') {\n ltypeTuples = group\n } else if (group[0]?.[1] === 'LAYER') {\n layersTuples = group\n } else if (group[0]?.[1] === 'VPORT') {\n vPortTuples = group\n } else if (group[0]?.[1] === 'DIMSTYLE') {\n dimStyleTuples = group\n }\n }\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import type {\n AppIdInternal,\n BlockRecordInternal,\n DXFTuple,\n DimStyleInternal,\n LTypeElement,\n LTypeInternal,\n LayerInternal,\n StyleInternal,\n UcsInternal,\n VPortInternal,\n ViewInternal,\n} from '../types'\n\nimport logger from '../util/logger'\n\nconst ltypeHandler = (tuples: DXFTuple[]): LTypeInternal => {\n let element: LTypeElement | undefined\n let offset: { x: string | number; y: string | number } | undefined\n return tuples.reduce(\n (layer, tuple) => { // NOSONAR\n const type = tuple[0]\n const value = tuple[1]\n // https://documentation.help/AutoCAD-DXF/WS1a9193826455f5ff18cb41610ec0a2e719-7a4f.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 3:\n layer.description = value\n break\n case 70:\n // Standard flag values (bit-coded values):\n // 16 = If set, table entry is externally dependent on an xref\n // 32 = If both this bit and bit 16 are set, the externally dependent xref has been successfully resolved\n // 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)\n layer.flag = value\n break\n case 72:\n // Alignment code (value is always 65, the ASCII code for A):\n layer.alignment = value\n break\n case 73:\n layer.elementCount = Number.parseInt(String(value))\n break\n case 40:\n layer.patternLength = value\n break\n case 49:\n element = { length: value }\n layer.pattern.push(element)\n break\n case 74:\n // Complex linetype element type (one per element). Default is 0 (no embedded shape/text) (bit-coded values)\n // 1 = If set, code 50 specifies an absolute rotation; if not set, code 50 specifies a relative rotation\n // 2 = Embedded element is a text string\n // 4 = Embedded element is a shape\n if (element) {\n element.shape = value\n }\n break\n case 75:\n if (element) {\n element.shapeNumber = value\n }\n break\n case 340:\n if (element) {\n element.styleHandle = value\n }\n break\n case 46:\n if (element) {\n element.scales ??= []\n element.scales.push(value)\n }\n break\n case 50:\n if (element) {\n element.rotation = value\n }\n break\n case 44:\n offset = { x: value, y: 0 }\n if (element) {\n element.offset ??= []\n element.offset.push(offset)\n }\n break\n case 45:\n if (offset) {\n offset.y = value\n }\n break\n case 9:\n if (element) {\n element.text = value\n }\n break\n default:\n }\n return layer\n },\n { type: 'LTYPE', pattern: [] } as LTypeInternal,\n )\n}\n\nconst layerHandler = (tuples: DXFTuple[]): LayerInternal => {\n return tuples.reduce(\n (layer, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n // https://www.autodesk.com/techpubs/autocad/acad2000/dxf/layer_dxf_04.htm\n switch (type) {\n case 2:\n layer.name = value\n break\n case 6:\n layer.lineTypeName = value\n break\n case 62:\n layer.colorNumber = value\n break\n case 70:\n layer.flags = value\n break\n case 290:\n layer.plot = Number.parseInt(String(value)) !== 0\n break\n case 370:\n layer.lineWeightEnum = value\n break\n default:\n }\n return layer\n },\n { type: 'LAYER' } as LayerInternal,\n )\n}\n\nconst styleHandler = (tuples: DXFTuple[]): StyleInternal => {\n return tuples.reduce(\n (style, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) {\n case 2:\n style.name = value\n break\n case 6:\n style.lineTypeName = value\n break\n case 40:\n style.fixedTextHeight = value\n break\n case 41:\n style.widthFactor = value\n break\n case 50:\n style.obliqueAngle = value\n break\n case 71:\n style.flags = value\n break\n case 42:\n style.lastHeightUsed = value\n break\n case 3:\n style.primaryFontFileName = value\n break\n case 4:\n style.bigFontFileName = value\n break\n default:\n }\n return style\n },\n { type: 'STYLE' } as StyleInternal,\n )\n}\n\nconst vPortHandler = (tuples: DXFTuple[]): VPortInternal => {\n return tuples.reduce(\n (vport, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n vport.name = value\n break\n case 5:\n vport.handle = value\n break\n case 70:\n vport.flags = value\n break\n case 10:\n vport.lowerLeft.x = Number.parseFloat(String(value))\n break\n case 20:\n vport.lowerLeft.y = Number.parseFloat(String(value))\n break\n case 11:\n vport.upperRight.x = Number.parseFloat(String(value))\n break\n case 21:\n vport.upperRight.y = Number.parseFloat(String(value))\n break\n case 12:\n vport.center.x = Number.parseFloat(String(value))\n break\n case 22:\n vport.center.y = Number.parseFloat(String(value))\n break\n case 14:\n vport.snapSpacing.x = Number.parseFloat(String(value))\n break\n case 24:\n vport.snapSpacing.y = Number.parseFloat(String(value))\n break\n case 15:\n vport.gridSpacing.x = Number.parseFloat(String(value))\n break\n case 25:\n vport.gridSpacing.y = Number.parseFloat(String(value))\n break\n case 16:\n vport.direction.x = Number.parseFloat(String(value))\n break\n case 26:\n vport.direction.y = Number.parseFloat(String(value))\n break\n case 36:\n vport.direction.z = Number.parseFloat(String(value))\n break\n case 17:\n vport.target.x = Number.parseFloat(String(value))\n break\n case 27:\n vport.target.y = Number.parseFloat(String(value))\n break\n case 37:\n vport.target.z = Number.parseFloat(String(value))\n break\n case 45:\n vport.height = Number.parseFloat(String(value))\n break\n case 50:\n vport.snapAngle = Number.parseFloat(String(value))\n break\n case 51:\n vport.angle = Number.parseFloat(String(value))\n break\n case 110:\n vport.x = Number.parseFloat(String(value))\n break\n case 120:\n vport.y = Number.parseFloat(String(value))\n break\n case 130:\n vport.z = Number.parseFloat(String(value))\n break\n case 111:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 121:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 131:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 112:\n vport.xAxisX = Number.parseFloat(String(value))\n break\n case 122:\n vport.xAxisY = Number.parseFloat(String(value))\n break\n case 132:\n vport.xAxisZ = Number.parseFloat(String(value))\n break\n case 146:\n vport.elevation = Number.parseFloat(String(value))\n break\n default:\n }\n return vport\n },\n {\n type: 'VPORT',\n center: {},\n lowerLeft: {},\n upperRight: {},\n snap: {},\n snapSpacing: {},\n gridSpacing: {},\n direction: {},\n target: {},\n } as VPortInternal,\n )\n}\n\nconst appIdHandler = (tuples: DXFTuple[]): AppIdInternal => {\n return tuples.reduce(\n (appId, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n appId.name = value\n break\n case 70:\n appId.flags = value\n break\n default:\n }\n\n return appId\n },\n { type: 'APPID' } as AppIdInternal,\n )\n}\n\nconst blockRecordHandler = (tuples: DXFTuple[]): BlockRecordInternal => {\n return tuples.reduce(\n (blockRecord, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n blockRecord.name = value\n break\n case 70:\n blockRecord.flags = value\n break\n default:\n }\n\n return blockRecord\n },\n { type: 'BLOCK_RECORD' } as BlockRecordInternal,\n )\n}\n\nconst ucsHandler = (tuples: DXFTuple[]): UcsInternal => {\n return tuples.reduce(\n (ucs, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n ucs.name = value\n break\n case 70:\n ucs.flags = value\n break\n default:\n }\n\n return ucs\n },\n { type: 'UCS' } as UcsInternal,\n )\n}\n\nconst viewHandler = (tuples: DXFTuple[]): ViewInternal => {\n return tuples.reduce(\n (view, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n\n switch (type) {\n case 2:\n view.name = value\n break\n case 70:\n view.flags = value\n break\n default:\n }\n\n return view\n },\n { type: 'VIEW' } as ViewInternal,\n )\n}\n\nconst dimStyleHandler = (tuples: DXFTuple[]): DimStyleInternal => {\n return tuples.reduce(\n (dimStyle, tuple) => {\n const type = tuple[0]\n const value = tuple[1]\n switch (type) { // NOSONAR\n case 2:\n dimStyle.name = value\n break\n case 70:\n dimStyle.flags = value\n break\n case 3:\n dimStyle.dimPost = value\n break\n case 4:\n dimStyle.dimAPost = value\n break\n case 40:\n dimStyle.dimScale = Number.parseFloat(String(value))\n break\n case 41:\n dimStyle.dimAsz = Number.parseFloat(String(value))\n break\n case 42:\n dimStyle.dimExo = Number.parseFloat(String(value))\n break\n case 43:\n dimStyle.dimDli = Number.parseFloat(String(value))\n break\n case 44:\n dimStyle.dimExe = Number.parseFloat(String(value))\n break\n case 45:\n dimStyle.dimRnd = Number.parseFloat(String(value))\n break\n case 46:\n dimStyle.dimDle = Number.parseFloat(String(value))\n break\n case 47:\n dimStyle.dimTp = Number.parseFloat(String(value))\n break\n case 48:\n dimStyle.dimTm = Number.parseFloat(String(value))\n break\n case 140:\n dimStyle.dimTxt = Number.parseFloat(String(value))\n break\n case 141:\n dimStyle.dimCen = Number.parseFloat(String(value))\n break\n case 142:\n dimStyle.dimTsz = Number.parseFloat(String(value))\n break\n case 143:\n dimStyle.dimAltf = Number.parseFloat(String(value))\n break\n case 144:\n dimStyle.dimLfac = Number.parseFloat(String(value))\n break\n case 145:\n dimStyle.dimTvp = Number.parseFloat(String(value))\n break\n case 146:\n dimStyle.dimTfac = Number.parseFloat(String(value))\n break\n case 147:\n dimStyle.dimGap = Number.parseFloat(String(value))\n break\n case 148:\n dimStyle.dimAltRnd = Number.parseFloat(String(value))\n break\n case 71:\n dimStyle.dimTol = Number.parseInt(String(value))\n break\n case 72:\n dimStyle.dimLim = Number.parseInt(String(value))\n break\n case 73:\n dimStyle.dimTih = Number.parseInt(String(value))\n break\n case 74:\n dimStyle.dimToh = Number.parseInt(String(value))\n break\n case 75:\n dimStyle.dimSe1 = Number.parseInt(String(value))\n break\n case 76:\n dimStyle.dimSe2 = Number.parseInt(String(value))\n break\n case 77:\n dimStyle.dimTad = Number.parseInt(String(value))\n break\n case 78:\n dimStyle.dimZin = Number.parseInt(String(value))\n break\n case 79:\n dimStyle.dimAzin = Number.parseInt(String(value))\n break\n case 170:\n dimStyle.dimAlt = Number.parseInt(String(value))\n break\n case 171:\n dimStyle.dimAltd = Number.parseInt(String(value))\n break\n case 172:\n dimStyle.dimTofl = Number.parseInt(String(value))\n break\n case 173:\n dimStyle.dimSah = Number.parseInt(String(value))\n break\n case 174:\n dimStyle.dimTix = Number.parseInt(String(value))\n break\n case 175:\n dimStyle.dimSoxd = Number.parseInt(String(value))\n break\n case 176:\n dimStyle.dimClrd = Number.parseInt(String(value))\n break\n case 177:\n dimStyle.dimClre = Number.parseInt(String(value))\n break\n case 178:\n dimStyle.dimClrt = Number.parseInt(String(value))\n break\n case 179:\n dimStyle.dimAdec = Number.parseInt(String(value))\n break\n case 270:\n dimStyle.dimUnit = Number.parseInt(String(value))\n break\n case 271:\n dimStyle.dimDec = Number.parseInt(String(value))\n break\n case 272:\n dimStyle.dimTdec = Number.parseInt(String(value))\n break\n case 273:\n dimStyle.dimAltu = Number.parseInt(String(value))\n break\n case 274:\n dimStyle.dimAlttd = Number.parseInt(String(value))\n break\n case 275:\n dimStyle.dimAunit = Number.parseInt(String(value))\n break\n case 276:\n dimStyle.dimFrac = Number.parseInt(String(value))\n break\n case 277:\n dimStyle.dimLunit = Number.parseInt(String(value))\n break\n case 278:\n dimStyle.dimDsep = Number.parseInt(String(value))\n break\n case 279:\n dimStyle.dimTmove = Number.parseInt(String(value))\n break\n case 280:\n dimStyle.dimJust = Number.parseInt(String(value))\n break\n case 281:\n dimStyle.dimSd1 = Number.parseInt(String(value))\n break\n case 282:\n dimStyle.dimSd2 = Number.parseInt(String(value))\n break\n case 283:\n dimStyle.dimTolj = Number.parseInt(String(value))\n break\n case 284:\n dimStyle.dimTzin = Number.parseInt(String(value))\n break\n case 285:\n dimStyle.dimAltz = Number.parseInt(String(value))\n break\n case 286:\n dimStyle.dimAlttz = Number.parseInt(String(value))\n break\n case 287:\n dimStyle.dimFit = Number.parseInt(String(value))\n break\n case 288:\n dimStyle.dimUpt = Number.parseInt(String(value))\n break\n case 289:\n dimStyle.dimAtfit = Number.parseInt(String(value))\n break\n case 340:\n dimStyle.dimTxsty = value\n break\n case 341:\n dimStyle.dimLdrblk = value\n break\n case 342:\n dimStyle.dimBlk = value\n break\n case 343:\n dimStyle.dimBlk1 = value\n break\n case 344:\n dimStyle.dimBlk2 = value\n break\n case 371:\n dimStyle.dimLwd = Number.parseInt(String(value))\n break\n case 372:\n dimStyle.dimLwe = Number.parseInt(String(value))\n break\n default:\n }\n return dimStyle\n },\n { type: 'DIMSTYLE' } as DimStyleInternal,\n )\n}\n\nconst tableHandler = (\n tuples: DXFTuple[],\n tableType: string,\n handler: (\n tuples: DXFTuple[],\n ) =>\n | LTypeInternal\n | LayerInternal\n | StyleInternal\n | VPortInternal\n | DimStyleInternal\n | AppIdInternal\n | BlockRecordInternal\n | UcsInternal\n | ViewInternal,\n): Record<string, any> => {\n const tableRowsTuples: DXFTuple[][] = []\n\n let tableRowTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const type = tuple[0]\n const value = tuple[1]\n if ((type === 0 || type === 2) && value === tableType) {\n tableRowTuples = []\n tableRowsTuples.push(tableRowTuples)\n } else if (tableRowTuples) {\n tableRowTuples.push(tuple)\n }\n }\n\n return tableRowsTuples.reduce((acc, rowTuples) => {\n const tableRow = handler(rowTuples)\n if (tableRow.name) {\n acc[String(tableRow.name)] = tableRow\n } else {\n logger.warn('table row without name:', tableRow)\n }\n return acc\n }, {} as Record<string, any>)\n}\n\nexport default function parseTables(tuples: DXFTuple[]) {\n const tableGroups: DXFTuple[][] = []\n let tableTuples: DXFTuple[] | undefined\n for (const tuple of tuples) {\n const value = tuple[1]\n if (value === 'TABLE') {\n tableTuples = []\n tableGroups.push(tableTuples)\n } else if (value === 'ENDTAB') {\n if (tableTuples) {\n tableGroups.push(tableTuples)\n }\n } else if (tableTuples) {\n tableTuples.push(tuple)\n }\n }\n\n const groupsByName: Record<string, DXFTuple[]> = {}\n for (const group of tableGroups) {\n const name = String(group[0]?.[1] ?? '')\n if (!name) continue\n groupsByName[name] = group\n }\n\n const stylesTuples = groupsByName.STYLE ?? []\n const layersTuples = groupsByName.LAYER ?? []\n const vPortTuples = groupsByName.VPORT ?? []\n const ltypeTuples = groupsByName.LTYPE ?? []\n const dimStyleTuples = groupsByName.DIMSTYLE ?? []\n const appIdTuples = groupsByName.APPID ?? []\n const blockRecordTuples = groupsByName.BLOCK_RECORD ?? []\n const ucsTuples = groupsByName.UCS ?? []\n const viewTuples = groupsByName.VIEW ?? []\n\n return {\n layers: tableHandler(layersTuples, 'LAYER', layerHandler),\n styles: tableHandler(stylesTuples, 'STYLE', styleHandler),\n vports: tableHandler(vPortTuples, 'VPORT', vPortHandler),\n ltypes: tableHandler(ltypeTuples, 'LTYPE', ltypeHandler),\n dimStyles: tableHandler(dimStyleTuples, 'DIMSTYLE', dimStyleHandler),\n appids: tableHandler(appIdTuples, 'APPID', appIdHandler),\n blockRecords: tableHandler(blockRecordTuples, 'BLOCK_RECORD', blockRecordHandler),\n ucs: tableHandler(ucsTuples, 'UCS', ucsHandler),\n views: tableHandler(viewTuples, 'VIEW', viewHandler),\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["logger"]
|
|
7
7
|
}
|