diff --git a/assets/demo-layouts/README.md b/assets/demo-layouts/README.md new file mode 100644 index 0000000..fcb92e2 --- /dev/null +++ b/assets/demo-layouts/README.md @@ -0,0 +1,43 @@ +# 시연용 평면 자산 (Demo Layouts) + +Sprint 1 시연 흐름(임포트 → 리뷰 → 시뮬레이션 → 결과)에서 결과 지표가 서로 다르게 나오도록 의도적으로 설계된 DXF 도면 모음입니다. + +테스트 픽스처가 아니라 **시연 시 직접 임포트해서 보여주기 위한 자산**입니다. 단위 테스트가 참조하는 도면은 `tests/dxf/` 에서 따로 관리합니다. + +## 평면 목록 + +| 파일 | 크기 | 의도 | 시연 강조 결과 지표 | +| --- | --- | --- | --- | +| `bottleneck_hall.dxf` | 30 × 20 m | 큰 단일 홀 + 1.0 m 단일 출구 | `DensitySummary.peakDensity` ↑↑, `highDensityDurationSeconds` ↑, `EvacuationTimingSummary.t90/t95` 길어짐, `ExitUsage` 단일 100 % | +| `multi_exit_concourse.dxf` | 30 × 20 m | 동일 홀 + 1.0 m 출구 3개 (E/N/S) | 동일 군중 시나리오 비교 시 t90·피크 밀도·고밀도 지속 시간 모두 감소, `ExitUsage` 가 3 출구로 분산 | +| `branched_corridor_office.dxf` | 36 × 20 m | 사무실: 6 룸 + 중앙 복도 + 비대칭 2 출구 | `ZoneCompletionMetric` 존별 차등 (원거리 룸 지연), `ExitUsage` 비대칭, 복도 셀의 `peakField` 시각화 임팩트 | + +## 시연 시나리오 가이드 + +`bottleneck_hall ↔ multi_exit_concourse` 는 **같은 홀 크기 · 같은 컬럼 배치**로 설계되어 있어, 동일 군중·동일 시나리오를 양쪽에 적용하면 출구 수만으로 결과가 어떻게 달라지는지 직접 비교할 수 있습니다. + +`branched_corridor_office` 는 **현실 평면**에서 어떤 셀이 위험 지점이 되는지 (밀도 필드 시각화) 를 보여주는 역할입니다. + +자세한 시연 흐름은 [docs/demo/시연 평면 가이드.md](../../docs/demo/시연%20평면%20가이드.md) 를 참고하세요. + +## 재생성 + +```bash +python assets/demo-layouts/generate_demo_layouts.py +``` + +DXF 는 결정적으로 재생성됩니다. 디퍼런셜 노이즈가 발생하면 `ezdxf` 버전 차이일 수 있습니다. + +## DXF 레이어 규약 + +생성기는 SafeCrowd DXF 임포터의 레이어 규약을 따릅니다. + +| 레이어 | 의미 | +| --- | --- | +| `WALLS` | 벽 라인 → Wall | +| `DOORS` | 내부 도어 라인 → Opening | +| `EXIT` | 외부 출구 라인 → Exit | +| `WINDOWS` | 창문 라인 (참고용) | +| `OBSTACLE` | 장애물 폴리곤 → Obstacle | +| `SPACE_*` | 닫힌 폴리라인 → Walkable Zone | +| `TEXT` | 라벨/타이틀 | diff --git a/assets/demo-layouts/bottleneck_hall.dxf b/assets/demo-layouts/bottleneck_hall.dxf new file mode 100644 index 0000000..ad35135 --- /dev/null +++ b/assets/demo-layouts/bottleneck_hall.dxf @@ -0,0 +1,3564 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1024 + 9 +$ACADMAINTVER + 70 +6 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$LASTSAVEDBY + 1 +ezdxf + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$EXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 +0 + 9 +$REGENMODE + 70 +1 + 9 +$FILLMODE + 70 +1 + 9 +$QTEXTMODE + 70 +0 + 9 +$MIRRTEXT + 70 +1 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 +1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 +256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 +0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 +0 + 9 +$DIMLIM + 70 +0 + 9 +$DIMTIH + 70 +0 + 9 +$DIMTOH + 70 +0 + 9 +$DIMSE1 + 70 +0 + 9 +$DIMSE2 + 70 +0 + 9 +$DIMTAD + 70 +1 + 9 +$DIMZIN + 70 +8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 +1 + 9 +$DIMSHO + 70 +1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 +0 + 9 +$DIMALTD + 70 +3 + 9 +$DIMALTF + 40 +0.03937007874 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 +1 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 +0 + 9 +$DIMSOXD + 70 +0 + 9 +$DIMSAH + 70 +0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +ISO-25 + 9 +$DIMCLRD + 70 +0 + 9 +$DIMCLRE + 70 +0 + 9 +$DIMCLRT + 70 +0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 +0 + 9 +$DIMSD1 + 70 +0 + 9 +$DIMSD2 + 70 +0 + 9 +$DIMTOLJ + 70 +0 + 9 +$DIMTZIN + 70 +8 + 9 +$DIMALTZ + 70 +0 + 9 +$DIMALTTZ + 70 +0 + 9 +$DIMUPT + 70 +0 + 9 +$DIMDEC + 70 +2 + 9 +$DIMTDEC + 70 +2 + 9 +$DIMALTU + 70 +2 + 9 +$DIMALTTD + 70 +3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 +0 + 9 +$DIMADEC + 70 +0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 +0 + 9 +$DIMDSEP + 70 +44 + 9 +$DIMATFIT + 70 +3 + 9 +$DIMFRAC + 70 +0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 +2 + 9 +$DIMLWD + 70 +-2 + 9 +$DIMLWE + 70 +-2 + 9 +$DIMTMOVE + 70 +0 + 9 +$DIMFXL + 40 +1.0 + 9 +$DIMFXLON + 70 +0 + 9 +$DIMJOGANG + 40 +0.785398163397 + 9 +$DIMTFILL + 70 +0 + 9 +$DIMTFILLCLR + 70 +0 + 9 +$DIMARCSYM + 70 +0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$DIMTXTDIRECTION + 70 +0 + 9 +$LUNITS + 70 +2 + 9 +$LUPREC + 70 +4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.0 + 9 +$AUNITS + 70 +0 + 9 +$AUPREC + 70 +2 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 +0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 +0 + 9 +$TDCREATE + 40 +2461164.6288888888 + 9 +$TDUCREATE + 40 +2458532.153996898 + 9 +$TDUPDATE + 40 +2461164.6288888888 + 9 +$TDUUPDATE + 40 +2458532.1544311 + 9 +$TDINDWG + 40 +0.0 + 9 +$TDUSRTIMER + 40 +0.0 + 9 +$USRTIMER + 70 +1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 +0 + 9 +$PDMODE + 70 +0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 +0 + 9 +$SPLINETYPE + 70 +6 + 9 +$SPLINESEGS + 70 +8 + 9 +$HANDSEED + 5 +46 + 9 +$SURFTAB1 + 70 +6 + 9 +$SURFTAB2 + 70 +6 + 9 +$SURFTYPE + 70 +6 + 9 +$SURFU + 70 +6 + 9 +$SURFV + 70 +6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 +0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 +0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 +0 + 9 +$USERI2 + 70 +0 + 9 +$USERI3 + 70 +0 + 9 +$USERI4 + 70 +0 + 9 +$USERI5 + 70 +0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 +1 + 9 +$SHADEDGE + 70 +3 + 9 +$SHADEDIF + 70 +70 + 9 +$TILEMODE + 70 +1 + 9 +$MAXACTVP + 70 +64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 +0 + 9 +$PEXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$PEXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +420.0 + 20 +297.0 + 9 +$UNITMODE + 70 +0 + 9 +$VISRETAIN + 70 +1 + 9 +$PLINEGEN + 70 +0 + 9 +$PSLTSCALE + 70 +1 + 9 +$TREEDEPTH + 70 +3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 +0 + 9 +$CMLSCALE + 40 +20.0 + 9 +$PROXYGRAPHICS + 70 +1 + 9 +$MEASUREMENT + 70 +1 + 9 +$CELWEIGHT +370 +-1 + 9 +$ENDCAPS +280 +0 + 9 +$JOINSTYLE +280 +0 + 9 +$LWDISPLAY +290 +0 + 9 +$INSUNITS + 70 +6 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 +1 + 9 +$CEPSNTYPE +380 +0 + 9 +$PSTYLEMODE +290 +1 + 9 +$FINGERPRINTGUID + 2 +{1A006C35-3BC2-4FF8-A7F7-77D267D4CE2C} + 9 +$VERSIONGUID + 2 +{88E53264-57ED-4EE5-8CEF-E47D01815AD0} + 9 +$EXTNAMES +290 +1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 +0 + 9 +$SORTENTS +280 +127 + 9 +$INDEXCTL +280 +0 + 9 +$HIDETEXT +280 +1 + 9 +$XCLIPFRAME +280 +1 + 9 +$HALOGAP +280 +0 + 9 +$OBSCOLOR + 70 +257 + 9 +$OBSLTYPE +280 +0 + 9 +$INTERSECTIONDISPLAY +280 +0 + 9 +$INTERSECTIONCOLOR + 70 +257 + 9 +$DIMASSOC +280 +2 + 9 +$PROJECTNAME + 1 + + 9 +$CAMERADISPLAY +290 +0 + 9 +$LENSLENGTH + 40 +50.0 + 9 +$CAMERAHEIGHT + 40 +0.0 + 9 +$STEPSPERSEC + 40 +24.0 + 9 +$STEPSIZE + 40 +100.0 + 9 +$3DDWFPREC + 40 +2.0 + 9 +$PSOLWIDTH + 40 +0.005 + 9 +$PSOLHEIGHT + 40 +0.08 + 9 +$LOFTANG1 + 40 +1.570796326795 + 9 +$LOFTANG2 + 40 +1.570796326795 + 9 +$LOFTMAG1 + 40 +0.0 + 9 +$LOFTMAG2 + 40 +0.0 + 9 +$LOFTPARAM + 70 +7 + 9 +$LOFTNORMALS +280 +1 + 9 +$LATITUDE + 40 +37.795 + 9 +$LONGITUDE + 40 +-122.394 + 9 +$NORTHDIRECTION + 40 +0.0 + 9 +$TIMEZONE + 70 +-8000 + 9 +$LIGHTGLYPHDISPLAY +280 +1 + 9 +$TILEMODELIGHTSYNCH +280 +1 + 9 +$CMATERIAL +347 +20 + 9 +$SOLIDHIST +280 +0 + 9 +$SHOWHIST +280 +1 + 9 +$DWFFRAME +280 +2 + 9 +$DGNFRAME +280 +2 + 9 +$REALWORLDSCALE +290 +1 + 9 +$INTERFERECOLOR + 62 +256 + 9 +$CSHADOW +280 +0 + 9 +$SHADOWPLANELOCATION + 40 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SUN + 2 +AcDbSun + 3 +SCENEOE + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 +1152 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MENTALRAYRENDERSETTINGS + 2 +AcDbMentalRayRenderSettings + 3 +SCENEOE + 90 +1024 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBDETAILVIEWSTYLE + 2 +AcDbDetailViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBSECTIONVIEWSTYLE + 2 +AcDbSectionViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +RASTERVARIABLES + 2 +AcDbRasterVariables + 3 +ISM + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +23 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +1000.0 + 41 +1.34 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +1000 + 73 +1 + 74 +3 + 75 +0 + 76 +0 + 77 +0 + 78 +0 +281 +0 + 65 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +LTYPE + 5 +24 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +26 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 +9 + 0 +LAYER + 5 +27 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +28 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Defpoints + 70 +0 + 62 +7 + 6 +Continuous +290 +0 +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +2F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WALLS + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +30 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DOORS + 70 +0 + 62 +3 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +31 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +EXIT + 70 +0 + 62 +1 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +32 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WINDOWS + 70 +0 + 62 +5 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TEXT + 70 +0 + 62 +2 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +34 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +OBSTACLE + 70 +0 + 62 +6 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +36 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_MAIN_HALL + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +APPID + 5 +2A +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +APPID + 5 +43 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +HATCHBACKGROUNDCOLOR + 70 +0 + 0 +APPID + 5 +44 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +EZDXF + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +4 +330 +0 +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +2B +330 +4 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 +0 + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +2.5 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 +148 +0.0 + 69 +0 + 70 +0 + 71 +0 + 72 +0 + 73 +0 + 74 +0 + 75 +0 + 76 +0 + 77 +1 + 78 +8 + 79 +3 +170 +0 +171 +3 +172 +1 +173 +0 +174 +0 +175 +0 +176 +0 +177 +0 +178 +0 +179 +2 +271 +2 +272 +2 +273 +2 +274 +3 +275 +0 +276 +0 +277 +2 +278 +44 +279 +0 +280 +0 +281 +0 +282 +0 +283 +0 +284 +8 +285 +0 +286 +0 +288 +0 +289 +3 +290 +0 +371 +-2 +372 +-2 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 +2 + 0 +BLOCK_RECORD + 5 +17 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +1A + 70 +0 +280 +1 +281 +0 + 0 +BLOCK_RECORD + 5 +1B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 +0 +280 +1 +281 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +18 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +19 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +MTEXT + 5 +35 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +0.2 + 20 +-1.6 + 30 +0.0 + 40 +0.34 + 71 +1 + 1 +BOTTLENECK HALL\P30x20m 단일 홀 / 1.0m 단일 출구 - 병목 시연 + 0 +LWPOLYLINE + 5 +37 +330 +17 +100 +AcDbEntity + 8 +SPACE_MAIN_HALL +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +0.05 + 20 +0.05 + 10 +29.95 + 20 +0.05 + 10 +29.95 + 20 +19.95 + 10 +0.05 + 20 +19.95 + 0 +MTEXT + 5 +38 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +13.6 + 20 +10.2 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +MAIN HALL\P600.0 m^2 + 0 +LINE + 5 +39 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +30.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +3A +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +20.0 + 30 +0.0 + 11 +30.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3B +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3C +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +30.0 + 20 +0.0 + 30 +0.0 + 11 +30.0 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3D +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +30.0 + 20 +10.5 + 30 +0.0 + 11 +30.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3E +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +30.0 + 20 +9.5 + 30 +0.0 + 11 +30.0 + 21 +10.5 + 31 +0.0 + 0 +LWPOLYLINE + 5 +3F +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +9.0 + 20 +9.0 + 10 +10.0 + 20 +9.0 + 10 +10.0 + 20 +11.0 + 10 +9.0 + 20 +11.0 + 0 +LWPOLYLINE + 5 +40 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +19.0 + 20 +9.0 + 10 +20.0 + 20 +9.0 + 10 +20.0 + 20 +11.0 + 10 +19.0 + 20 +11.0 + 0 +LWPOLYLINE + 5 +41 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.0 + 20 +4.0 + 10 +15.0 + 20 +4.0 + 10 +15.0 + 20 +6.0 + 10 +14.0 + 20 +6.0 + 0 +LWPOLYLINE + 5 +42 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.0 + 20 +14.0 + 10 +15.0 + 20 +14.0 + 10 +15.0 + 20 +16.0 + 10 +14.0 + 20 +16.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +A +330 +0 +100 +AcDbDictionary +281 +1 + 3 +ACAD_COLOR +350 +B + 3 +ACAD_GROUP +350 +C + 3 +ACAD_LAYOUT +350 +D + 3 +ACAD_MATERIAL +350 +E + 3 +ACAD_MLEADERSTYLE +350 +F + 3 +ACAD_MLINESTYLE +350 +10 + 3 +ACAD_PLOTSETTINGS +350 +11 + 3 +ACAD_PLOTSTYLENAME +350 +12 + 3 +ACAD_SCALELIST +350 +14 + 3 +ACAD_TABLESTYLE +350 +15 + 3 +ACAD_VISUALSTYLE +350 +16 + 3 +EZDXF_META +350 +2D + 0 +DICTIONARY + 5 +B +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +C +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +D +330 +A +100 +AcDbDictionary +281 +1 + 3 +Model +350 +1A + 3 +Layout1 +350 +1E + 0 +DICTIONARY + 5 +E +330 +A +100 +AcDbDictionary +281 +1 + 3 +ByBlock +350 +1F + 3 +ByLayer +350 +20 + 3 +Global +350 +21 + 0 +DICTIONARY + 5 +F +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +2C + 0 +DICTIONARY + 5 +10 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +22 + 0 +DICTIONARY + 5 +11 +330 +A +100 +AcDbDictionary +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +12 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +13 +100 +AcDbDictionaryWithDefault +340 +13 + 0 +ACDBPLACEHOLDER + 5 +13 +330 +12 + 0 +DICTIONARY + 5 +14 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +15 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +16 +330 +A +100 +AcDbDictionary +281 +1 + 0 +LAYOUT + 5 +1A +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1024 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +17 + 0 +LAYOUT + 5 +1E +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +0 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +1B + 0 +MATERIAL + 5 +1F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByBlock + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +20 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByLayer + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +21 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +Global + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MLINESTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMlineStyle + 2 +Standard + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +MLEADERSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +F +102 +} +330 +F +100 +AcDbMLeaderStyle +179 +2 +170 +2 +171 +1 +172 +0 + 90 +2 + 40 +0.0 + 41 +0.0 +173 +1 + 91 +-1056964608 + 92 +-2 +290 +1 + 42 +2.0 +291 +1 + 43 +8.0 + 3 +Standard + 44 +4.0 +300 + +342 +29 +174 +1 +175 +1 +176 +0 +178 +1 + 93 +-1056964608 + 45 +4.0 +292 +0 +297 +0 + 46 +4.0 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +294 +1 +141 +0.0 +177 +0 +142 +1.0 +295 +0 +296 +0 +143 +3.75 +271 +0 +272 +9 +273 +9 + 0 +DICTIONARY + 5 +2D +330 +A +100 +AcDbDictionary +280 +1 +281 +1 + 3 +CREATED_BY_EZDXF +350 +2E + 3 +WRITTEN_BY_EZDXF +350 +45 + 0 +DICTIONARYVAR + 5 +2E +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.026588+00:00 + 0 +DICTIONARYVAR + 5 +45 +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.028068+00:00 + 0 +ENDSEC + 0 +EOF diff --git a/assets/demo-layouts/branched_corridor_office.dxf b/assets/demo-layouts/branched_corridor_office.dxf new file mode 100644 index 0000000..a6d3df5 --- /dev/null +++ b/assets/demo-layouts/branched_corridor_office.dxf @@ -0,0 +1,4828 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1024 + 9 +$ACADMAINTVER + 70 +6 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$LASTSAVEDBY + 1 +ezdxf + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$EXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 +0 + 9 +$REGENMODE + 70 +1 + 9 +$FILLMODE + 70 +1 + 9 +$QTEXTMODE + 70 +0 + 9 +$MIRRTEXT + 70 +1 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 +1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 +256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 +0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 +0 + 9 +$DIMLIM + 70 +0 + 9 +$DIMTIH + 70 +0 + 9 +$DIMTOH + 70 +0 + 9 +$DIMSE1 + 70 +0 + 9 +$DIMSE2 + 70 +0 + 9 +$DIMTAD + 70 +1 + 9 +$DIMZIN + 70 +8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 +1 + 9 +$DIMSHO + 70 +1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 +0 + 9 +$DIMALTD + 70 +3 + 9 +$DIMALTF + 40 +0.03937007874 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 +1 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 +0 + 9 +$DIMSOXD + 70 +0 + 9 +$DIMSAH + 70 +0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +ISO-25 + 9 +$DIMCLRD + 70 +0 + 9 +$DIMCLRE + 70 +0 + 9 +$DIMCLRT + 70 +0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 +0 + 9 +$DIMSD1 + 70 +0 + 9 +$DIMSD2 + 70 +0 + 9 +$DIMTOLJ + 70 +0 + 9 +$DIMTZIN + 70 +8 + 9 +$DIMALTZ + 70 +0 + 9 +$DIMALTTZ + 70 +0 + 9 +$DIMUPT + 70 +0 + 9 +$DIMDEC + 70 +2 + 9 +$DIMTDEC + 70 +2 + 9 +$DIMALTU + 70 +2 + 9 +$DIMALTTD + 70 +3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 +0 + 9 +$DIMADEC + 70 +0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 +0 + 9 +$DIMDSEP + 70 +44 + 9 +$DIMATFIT + 70 +3 + 9 +$DIMFRAC + 70 +0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 +2 + 9 +$DIMLWD + 70 +-2 + 9 +$DIMLWE + 70 +-2 + 9 +$DIMTMOVE + 70 +0 + 9 +$DIMFXL + 40 +1.0 + 9 +$DIMFXLON + 70 +0 + 9 +$DIMJOGANG + 40 +0.785398163397 + 9 +$DIMTFILL + 70 +0 + 9 +$DIMTFILLCLR + 70 +0 + 9 +$DIMARCSYM + 70 +0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$DIMTXTDIRECTION + 70 +0 + 9 +$LUNITS + 70 +2 + 9 +$LUPREC + 70 +4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.0 + 9 +$AUNITS + 70 +0 + 9 +$AUPREC + 70 +2 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 +0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 +0 + 9 +$TDCREATE + 40 +2461164.6288888888 + 9 +$TDUCREATE + 40 +2458532.153996898 + 9 +$TDUPDATE + 40 +2461164.6288888888 + 9 +$TDUUPDATE + 40 +2458532.1544311 + 9 +$TDINDWG + 40 +0.0 + 9 +$TDUSRTIMER + 40 +0.0 + 9 +$USRTIMER + 70 +1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 +0 + 9 +$PDMODE + 70 +0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 +0 + 9 +$SPLINETYPE + 70 +6 + 9 +$SPLINESEGS + 70 +8 + 9 +$HANDSEED + 5 +78 + 9 +$SURFTAB1 + 70 +6 + 9 +$SURFTAB2 + 70 +6 + 9 +$SURFTYPE + 70 +6 + 9 +$SURFU + 70 +6 + 9 +$SURFV + 70 +6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 +0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 +0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 +0 + 9 +$USERI2 + 70 +0 + 9 +$USERI3 + 70 +0 + 9 +$USERI4 + 70 +0 + 9 +$USERI5 + 70 +0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 +1 + 9 +$SHADEDGE + 70 +3 + 9 +$SHADEDIF + 70 +70 + 9 +$TILEMODE + 70 +1 + 9 +$MAXACTVP + 70 +64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 +0 + 9 +$PEXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$PEXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +420.0 + 20 +297.0 + 9 +$UNITMODE + 70 +0 + 9 +$VISRETAIN + 70 +1 + 9 +$PLINEGEN + 70 +0 + 9 +$PSLTSCALE + 70 +1 + 9 +$TREEDEPTH + 70 +3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 +0 + 9 +$CMLSCALE + 40 +20.0 + 9 +$PROXYGRAPHICS + 70 +1 + 9 +$MEASUREMENT + 70 +1 + 9 +$CELWEIGHT +370 +-1 + 9 +$ENDCAPS +280 +0 + 9 +$JOINSTYLE +280 +0 + 9 +$LWDISPLAY +290 +0 + 9 +$INSUNITS + 70 +6 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 +1 + 9 +$CEPSNTYPE +380 +0 + 9 +$PSTYLEMODE +290 +1 + 9 +$FINGERPRINTGUID + 2 +{A84E9255-9B09-4199-AC19-FAA4150E4D05} + 9 +$VERSIONGUID + 2 +{0202422D-BEE3-487D-A012-1D4C95FBFC69} + 9 +$EXTNAMES +290 +1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 +0 + 9 +$SORTENTS +280 +127 + 9 +$INDEXCTL +280 +0 + 9 +$HIDETEXT +280 +1 + 9 +$XCLIPFRAME +280 +1 + 9 +$HALOGAP +280 +0 + 9 +$OBSCOLOR + 70 +257 + 9 +$OBSLTYPE +280 +0 + 9 +$INTERSECTIONDISPLAY +280 +0 + 9 +$INTERSECTIONCOLOR + 70 +257 + 9 +$DIMASSOC +280 +2 + 9 +$PROJECTNAME + 1 + + 9 +$CAMERADISPLAY +290 +0 + 9 +$LENSLENGTH + 40 +50.0 + 9 +$CAMERAHEIGHT + 40 +0.0 + 9 +$STEPSPERSEC + 40 +24.0 + 9 +$STEPSIZE + 40 +100.0 + 9 +$3DDWFPREC + 40 +2.0 + 9 +$PSOLWIDTH + 40 +0.005 + 9 +$PSOLHEIGHT + 40 +0.08 + 9 +$LOFTANG1 + 40 +1.570796326795 + 9 +$LOFTANG2 + 40 +1.570796326795 + 9 +$LOFTMAG1 + 40 +0.0 + 9 +$LOFTMAG2 + 40 +0.0 + 9 +$LOFTPARAM + 70 +7 + 9 +$LOFTNORMALS +280 +1 + 9 +$LATITUDE + 40 +37.795 + 9 +$LONGITUDE + 40 +-122.394 + 9 +$NORTHDIRECTION + 40 +0.0 + 9 +$TIMEZONE + 70 +-8000 + 9 +$LIGHTGLYPHDISPLAY +280 +1 + 9 +$TILEMODELIGHTSYNCH +280 +1 + 9 +$CMATERIAL +347 +20 + 9 +$SOLIDHIST +280 +0 + 9 +$SHOWHIST +280 +1 + 9 +$DWFFRAME +280 +2 + 9 +$DGNFRAME +280 +2 + 9 +$REALWORLDSCALE +290 +1 + 9 +$INTERFERECOLOR + 62 +256 + 9 +$CSHADOW +280 +0 + 9 +$SHADOWPLANELOCATION + 40 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SUN + 2 +AcDbSun + 3 +SCENEOE + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 +1152 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MENTALRAYRENDERSETTINGS + 2 +AcDbMentalRayRenderSettings + 3 +SCENEOE + 90 +1024 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBDETAILVIEWSTYLE + 2 +AcDbDetailViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBSECTIONVIEWSTYLE + 2 +AcDbSectionViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +RASTERVARIABLES + 2 +AcDbRasterVariables + 3 +ISM + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +23 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +1000.0 + 41 +1.34 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +1000 + 73 +1 + 74 +3 + 75 +0 + 76 +0 + 77 +0 + 78 +0 +281 +0 + 65 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +LTYPE + 5 +24 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +26 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 +17 + 0 +LAYER + 5 +27 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +28 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Defpoints + 70 +0 + 62 +7 + 6 +Continuous +290 +0 +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +2F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WALLS + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +30 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DOORS + 70 +0 + 62 +3 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +31 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +EXIT + 70 +0 + 62 +1 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +32 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WINDOWS + 70 +0 + 62 +5 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TEXT + 70 +0 + 62 +2 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +34 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +OBSTACLE + 70 +0 + 62 +6 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +36 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_WEST_LOBBY + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +39 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_CORRIDOR + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +3C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_OFFICE_A + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +3F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_OFFICE_B + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +42 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_MEETING_ROOM + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +45 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_OFFICE_C + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +48 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_OFFICE_D + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +4B +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_OFFICE_E + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +4E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_EAST_BAY + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +APPID + 5 +2A +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +APPID + 5 +75 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +HATCHBACKGROUNDCOLOR + 70 +0 + 0 +APPID + 5 +76 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +EZDXF + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +4 +330 +0 +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +2B +330 +4 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 +0 + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +2.5 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 +148 +0.0 + 69 +0 + 70 +0 + 71 +0 + 72 +0 + 73 +0 + 74 +0 + 75 +0 + 76 +0 + 77 +1 + 78 +8 + 79 +3 +170 +0 +171 +3 +172 +1 +173 +0 +174 +0 +175 +0 +176 +0 +177 +0 +178 +0 +179 +2 +271 +2 +272 +2 +273 +2 +274 +3 +275 +0 +276 +0 +277 +2 +278 +44 +279 +0 +280 +0 +281 +0 +282 +0 +283 +0 +284 +8 +285 +0 +286 +0 +288 +0 +289 +3 +290 +0 +371 +-2 +372 +-2 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 +2 + 0 +BLOCK_RECORD + 5 +17 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +1A + 70 +0 +280 +1 +281 +0 + 0 +BLOCK_RECORD + 5 +1B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 +0 +280 +1 +281 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +18 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +19 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +MTEXT + 5 +35 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +0.2 + 20 +-1.6 + 30 +0.0 + 40 +0.34 + 71 +1 + 1 +BRANCHED CORRIDOR OFFICE\P36x20m 사무실 / 6 룸 + 중앙 복도 / 비대칭 2 출구 - 현실 시연 + 0 +LWPOLYLINE + 5 +37 +330 +17 +100 +AcDbEntity + 8 +SPACE_WEST_LOBBY +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +0.05 + 20 +0.05 + 10 +7.95 + 20 +0.05 + 10 +7.95 + 20 +19.95 + 10 +0.05 + 20 +19.95 + 0 +MTEXT + 5 +38 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +2.6 + 20 +10.2 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +WEST LOBBY\P160.0 m^2 + 0 +LWPOLYLINE + 5 +3A +330 +17 +100 +AcDbEntity + 8 +SPACE_CORRIDOR +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +8.05 + 20 +9.05 + 10 +27.95 + 20 +9.05 + 10 +27.95 + 20 +10.95 + 10 +8.05 + 20 +10.95 + 0 +MTEXT + 5 +3B +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +16.6 + 20 +10.2 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +CORRIDOR\P40.0 m^2 + 0 +LWPOLYLINE + 5 +3D +330 +17 +100 +AcDbEntity + 8 +SPACE_OFFICE_A +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +8.05 + 20 +11.05 + 10 +13.95 + 20 +11.05 + 10 +13.95 + 20 +19.95 + 10 +8.05 + 20 +19.95 + 0 +MTEXT + 5 +3E +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +9.6 + 20 +15.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +OFFICE A\P54.0 m^2 + 0 +LWPOLYLINE + 5 +40 +330 +17 +100 +AcDbEntity + 8 +SPACE_OFFICE_B +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.05 + 20 +11.05 + 10 +20.95 + 20 +11.05 + 10 +20.95 + 20 +19.95 + 10 +14.05 + 20 +19.95 + 0 +MTEXT + 5 +41 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +16.1 + 20 +15.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +OFFICE B\P63.0 m^2 + 0 +LWPOLYLINE + 5 +43 +330 +17 +100 +AcDbEntity + 8 +SPACE_MEETING_ROOM +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +21.05 + 20 +11.05 + 10 +27.95 + 20 +11.05 + 10 +27.95 + 20 +19.95 + 10 +21.05 + 20 +19.95 + 0 +MTEXT + 5 +44 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +23.1 + 20 +15.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +MEETING ROOM\P63.0 m^2 + 0 +LWPOLYLINE + 5 +46 +330 +17 +100 +AcDbEntity + 8 +SPACE_OFFICE_C +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +8.05 + 20 +0.05 + 10 +13.95 + 20 +0.05 + 10 +13.95 + 20 +8.95 + 10 +8.05 + 20 +8.95 + 0 +MTEXT + 5 +47 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +9.6 + 20 +4.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +OFFICE C\P54.0 m^2 + 0 +LWPOLYLINE + 5 +49 +330 +17 +100 +AcDbEntity + 8 +SPACE_OFFICE_D +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.05 + 20 +0.05 + 10 +20.95 + 20 +0.05 + 10 +20.95 + 20 +8.95 + 10 +14.05 + 20 +8.95 + 0 +MTEXT + 5 +4A +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +16.1 + 20 +4.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +OFFICE D\P63.0 m^2 + 0 +LWPOLYLINE + 5 +4C +330 +17 +100 +AcDbEntity + 8 +SPACE_OFFICE_E +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +21.05 + 20 +0.05 + 10 +27.95 + 20 +0.05 + 10 +27.95 + 20 +8.95 + 10 +21.05 + 20 +8.95 + 0 +MTEXT + 5 +4D +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +23.1 + 20 +4.7 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +OFFICE E\P63.0 m^2 + 0 +LWPOLYLINE + 5 +4F +330 +17 +100 +AcDbEntity + 8 +SPACE_EAST_BAY +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +28.05 + 20 +0.05 + 10 +35.95 + 20 +0.05 + 10 +35.95 + 20 +19.95 + 10 +28.05 + 20 +19.95 + 0 +MTEXT + 5 +50 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +30.6 + 20 +10.2 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +EAST BAY\P160.0 m^2 + 0 +LINE + 5 +51 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +52 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +11.0 + 30 +0.0 + 11 +0.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +53 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +20.0 + 30 +0.0 + 11 +36.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +54 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +36.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +55 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +36.0 + 20 +0.0 + 30 +0.0 + 11 +36.0 + 21 +2.0 + 31 +0.0 + 0 +LINE + 5 +56 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +36.0 + 20 +4.0 + 30 +0.0 + 11 +36.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +57 +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +0.0 + 20 +9.0 + 30 +0.0 + 11 +0.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +58 +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +36.0 + 20 +2.0 + 30 +0.0 + 11 +36.0 + 21 +4.0 + 31 +0.0 + 0 +LINE + 5 +59 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +8.0 + 20 +0.0 + 30 +0.0 + 11 +8.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +5A +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +8.0 + 20 +11.0 + 30 +0.0 + 11 +8.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +5B +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +8.0 + 20 +9.0 + 30 +0.0 + 11 +8.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +5C +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +14.0 + 20 +11.0 + 30 +0.0 + 11 +14.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +5D +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +21.0 + 20 +11.0 + 30 +0.0 + 11 +21.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +5E +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +14.0 + 20 +0.0 + 30 +0.0 + 11 +14.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +5F +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +21.0 + 20 +0.0 + 30 +0.0 + 11 +21.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +60 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +8.0 + 20 +11.0 + 30 +0.0 + 11 +10.5 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +61 +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +10.5 + 20 +11.0 + 30 +0.0 + 11 +11.5 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +62 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +11.5 + 20 +11.0 + 30 +0.0 + 11 +17.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +63 +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +17.0 + 20 +11.0 + 30 +0.0 + 11 +18.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +64 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +18.0 + 20 +11.0 + 30 +0.0 + 11 +24.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +65 +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +24.0 + 20 +11.0 + 30 +0.0 + 11 +25.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +66 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +25.0 + 20 +11.0 + 30 +0.0 + 11 +28.0 + 21 +11.0 + 31 +0.0 + 0 +LINE + 5 +67 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +8.0 + 20 +9.0 + 30 +0.0 + 11 +10.5 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +68 +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +10.5 + 20 +9.0 + 30 +0.0 + 11 +11.5 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +69 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +11.5 + 20 +9.0 + 30 +0.0 + 11 +17.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6A +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +17.0 + 20 +9.0 + 30 +0.0 + 11 +18.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6B +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +18.0 + 20 +9.0 + 30 +0.0 + 11 +24.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6C +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +24.0 + 20 +9.0 + 30 +0.0 + 11 +25.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6D +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +25.0 + 20 +9.0 + 30 +0.0 + 11 +28.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6E +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +28.0 + 20 +0.0 + 30 +0.0 + 11 +28.0 + 21 +9.0 + 31 +0.0 + 0 +LINE + 5 +6F +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +28.0 + 20 +11.0 + 30 +0.0 + 11 +28.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +70 +330 +17 +100 +AcDbEntity + 8 +DOORS +100 +AcDbLine + 10 +28.0 + 20 +9.0 + 30 +0.0 + 11 +28.0 + 21 +11.0 + 31 +0.0 + 0 +LWPOLYLINE + 5 +71 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +2.0 + 20 +8.5 + 10 +5.5 + 20 +8.5 + 10 +5.5 + 20 +11.5 + 10 +2.0 + 20 +11.5 + 0 +LWPOLYLINE + 5 +72 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +13.0 + 20 +9.5 + 10 +13.5 + 20 +9.5 + 10 +13.5 + 20 +10.5 + 10 +13.0 + 20 +10.5 + 0 +LWPOLYLINE + 5 +73 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +20.0 + 20 +9.5 + 10 +20.5 + 20 +9.5 + 10 +20.5 + 20 +10.5 + 10 +20.0 + 20 +10.5 + 0 +LWPOLYLINE + 5 +74 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +32.0 + 20 +8.0 + 10 +34.5 + 20 +8.0 + 10 +34.5 + 20 +12.0 + 10 +32.0 + 20 +12.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +A +330 +0 +100 +AcDbDictionary +281 +1 + 3 +ACAD_COLOR +350 +B + 3 +ACAD_GROUP +350 +C + 3 +ACAD_LAYOUT +350 +D + 3 +ACAD_MATERIAL +350 +E + 3 +ACAD_MLEADERSTYLE +350 +F + 3 +ACAD_MLINESTYLE +350 +10 + 3 +ACAD_PLOTSETTINGS +350 +11 + 3 +ACAD_PLOTSTYLENAME +350 +12 + 3 +ACAD_SCALELIST +350 +14 + 3 +ACAD_TABLESTYLE +350 +15 + 3 +ACAD_VISUALSTYLE +350 +16 + 3 +EZDXF_META +350 +2D + 0 +DICTIONARY + 5 +B +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +C +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +D +330 +A +100 +AcDbDictionary +281 +1 + 3 +Model +350 +1A + 3 +Layout1 +350 +1E + 0 +DICTIONARY + 5 +E +330 +A +100 +AcDbDictionary +281 +1 + 3 +ByBlock +350 +1F + 3 +ByLayer +350 +20 + 3 +Global +350 +21 + 0 +DICTIONARY + 5 +F +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +2C + 0 +DICTIONARY + 5 +10 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +22 + 0 +DICTIONARY + 5 +11 +330 +A +100 +AcDbDictionary +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +12 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +13 +100 +AcDbDictionaryWithDefault +340 +13 + 0 +ACDBPLACEHOLDER + 5 +13 +330 +12 + 0 +DICTIONARY + 5 +14 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +15 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +16 +330 +A +100 +AcDbDictionary +281 +1 + 0 +LAYOUT + 5 +1A +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1024 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +17 + 0 +LAYOUT + 5 +1E +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +0 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +1B + 0 +MATERIAL + 5 +1F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByBlock + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +20 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByLayer + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +21 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +Global + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MLINESTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMlineStyle + 2 +Standard + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +MLEADERSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +F +102 +} +330 +F +100 +AcDbMLeaderStyle +179 +2 +170 +2 +171 +1 +172 +0 + 90 +2 + 40 +0.0 + 41 +0.0 +173 +1 + 91 +-1056964608 + 92 +-2 +290 +1 + 42 +2.0 +291 +1 + 43 +8.0 + 3 +Standard + 44 +4.0 +300 + +342 +29 +174 +1 +175 +1 +176 +0 +178 +1 + 93 +-1056964608 + 45 +4.0 +292 +0 +297 +0 + 46 +4.0 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +294 +1 +141 +0.0 +177 +0 +142 +1.0 +295 +0 +296 +0 +143 +3.75 +271 +0 +272 +9 +273 +9 + 0 +DICTIONARY + 5 +2D +330 +A +100 +AcDbDictionary +280 +1 +281 +1 + 3 +CREATED_BY_EZDXF +350 +2E + 3 +WRITTEN_BY_EZDXF +350 +77 + 0 +DICTIONARYVAR + 5 +2E +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.038377+00:00 + 0 +DICTIONARYVAR + 5 +77 +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.040889+00:00 + 0 +ENDSEC + 0 +EOF diff --git a/assets/demo-layouts/generate_demo_layouts.py b/assets/demo-layouts/generate_demo_layouts.py new file mode 100644 index 0000000..8d7d584 --- /dev/null +++ b/assets/demo-layouts/generate_demo_layouts.py @@ -0,0 +1,272 @@ +"""Generate Sprint 1 시연용 DXF 평면 자산. + +각 평면은 SafeCrowd DXF 임포터의 레이어 규약을 따른다. +- WALLS: 벽 라인 (Wall) +- DOORS: 내부 도어 라인 (Opening) +- EXIT: 외부 출구 라인 (Exit) +- WINDOWS: 창문 라인 (참고용) +- OBSTACLE: 장애물 폴리곤 (Obstacle) +- SPACE_*: 닫힌 폴리라인으로 정의되는 보행 가능 구역 (Walkable) +- TEXT: 라벨/타이틀 + +3종 평면은 시뮬레이션 결과 지표가 서로 다르게 나오도록 의도적으로 설계되었다. +README.md 의 "시연 강조 지표" 섹션을 참고하라. +""" + +from __future__ import annotations + +from pathlib import Path + +import ezdxf +from ezdxf import units + + +OUTPUT_DIR = Path(__file__).resolve().parent + + +def _ensure_layer(doc, name: str, color: int) -> None: + if name not in doc.layers: + doc.layers.add(name, color=color) + + +def _new_document(): + doc = ezdxf.new("R2010") + doc.units = units.M + + _ensure_layer(doc, "WALLS", 7) + _ensure_layer(doc, "DOORS", 3) + _ensure_layer(doc, "EXIT", 1) + _ensure_layer(doc, "WINDOWS", 5) + _ensure_layer(doc, "TEXT", 2) + _ensure_layer(doc, "OBSTACLE", 6) + + return doc, doc.modelspace() + + +def _add_space(doc, msp, name: str, x1: float, y1: float, x2: float, y2: float, color: int = 4) -> None: + layer = f"SPACE_{name.upper().replace(' ', '_')}" + _ensure_layer(doc, layer, color) + # 닫힌 폴리라인. 외부 벽과 미세하게 어긋나도록 안쪽으로 살짝 들여서 그린다. + inset = 0.05 + msp.add_lwpolyline( + [ + (x1 + inset, y1 + inset), + (x2 - inset, y1 + inset), + (x2 - inset, y2 - inset), + (x1 + inset, y2 - inset), + ], + close=True, + dxfattribs={"layer": layer}, + ) + + area = abs((x2 - x1) * (y2 - y1)) + msp.add_mtext( + f"{name.upper()}\\P{area:.1f} m^2", + dxfattribs={ + "layer": "TEXT", + "char_height": 0.28, + "insert": ((x1 + x2) / 2.0 - 1.4, (y1 + y2) / 2.0 + 0.2), + }, + ) + + +def _add_wall(msp, start, end) -> None: + msp.add_line(start, end, dxfattribs={"layer": "WALLS"}) + + +def _add_door(msp, start, end) -> None: + msp.add_line(start, end, dxfattribs={"layer": "DOORS"}) + + +def _add_exit(msp, start, end) -> None: + msp.add_line(start, end, dxfattribs={"layer": "EXIT"}) + + +def _add_obstacle(msp, x1, y1, x2, y2) -> None: + msp.add_lwpolyline( + [(x1, y1), (x2, y1), (x2, y2), (x1, y2)], + close=True, + dxfattribs={"layer": "OBSTACLE"}, + ) + + +def _add_title(msp, title: str, subtitle: str) -> None: + msp.add_mtext( + f"{title}\\P{subtitle}", + dxfattribs={"layer": "TEXT", "char_height": 0.34, "insert": (0.2, -1.6)}, + ) + + +# ---------------------------------------------------------------------------- +# 1. bottleneck_hall.dxf +# ---------------------------------------------------------------------------- +# 의도: 하나의 큰 홀 + 단일 좁은 출구. 출구 폭이 좁아 군중이 정체되며 +# 피크 밀도, 고밀도 지속 시간, t90/t95 가 길어진다. +def build_bottleneck_hall(path: Path) -> None: + doc, msp = _new_document() + + _add_title( + msp, + "BOTTLENECK HALL", + "30x20m 단일 홀 / 1.0m 단일 출구 - 병목 시연", + ) + + # 보행 가능 공간 + _add_space(doc, msp, "Main Hall", 0.0, 0.0, 30.0, 20.0) + + # 외벽 (동쪽 중앙에 1.0m 출구 갭) + _add_wall(msp, (0.0, 0.0), (30.0, 0.0)) # south + _add_wall(msp, (0.0, 20.0), (30.0, 20.0)) # north + _add_wall(msp, (0.0, 0.0), (0.0, 20.0)) # west + _add_wall(msp, (30.0, 0.0), (30.0, 9.5)) # east-south + _add_wall(msp, (30.0, 10.5), (30.0, 20.0)) # east-north + + # 단일 출구 + _add_exit(msp, (30.0, 9.5), (30.0, 10.5)) + + # 내부 컬럼 (군중 흐름에 약간의 분산/우회 효과) + _add_obstacle(msp, 9.0, 9.0, 10.0, 11.0) + _add_obstacle(msp, 19.0, 9.0, 20.0, 11.0) + _add_obstacle(msp, 14.0, 4.0, 15.0, 6.0) + _add_obstacle(msp, 14.0, 14.0, 15.0, 16.0) + + doc.saveas(path) + + +# ---------------------------------------------------------------------------- +# 2. multi_exit_concourse.dxf +# ---------------------------------------------------------------------------- +# 의도: bottleneck_hall 과 동일 크기·동일 컬럼 배치 + 출구 3개 (동/북/남). +# 동일 군중 시나리오로 비교했을 때 t90·피크 밀도·고밀도 지속이 모두 줄고, +# ExitUsage 가 3 출구로 분산된다. +def build_multi_exit_concourse(path: Path) -> None: + doc, msp = _new_document() + + _add_title( + msp, + "MULTI-EXIT CONCOURSE", + "30x20m 단일 홀 / 1.0m 출구 3개 (E/N/S) - 다출구 분산 시연", + ) + + _add_space(doc, msp, "Main Hall", 0.0, 0.0, 30.0, 20.0) + + # 외벽 (출구 갭 3개: 동쪽 중앙, 북쪽 중앙, 남쪽 중앙) + # 남 + _add_wall(msp, (0.0, 0.0), (14.5, 0.0)) + _add_wall(msp, (15.5, 0.0), (30.0, 0.0)) + # 북 + _add_wall(msp, (0.0, 20.0), (14.5, 20.0)) + _add_wall(msp, (15.5, 20.0), (30.0, 20.0)) + # 서 (출구 없음) + _add_wall(msp, (0.0, 0.0), (0.0, 20.0)) + # 동 + _add_wall(msp, (30.0, 0.0), (30.0, 9.5)) + _add_wall(msp, (30.0, 10.5), (30.0, 20.0)) + + # 출구 3개 + _add_exit(msp, (30.0, 9.5), (30.0, 10.5)) # 동쪽 + _add_exit(msp, (14.5, 20.0), (15.5, 20.0)) # 북쪽 + _add_exit(msp, (14.5, 0.0), (15.5, 0.0)) # 남쪽 + + # 동일 컬럼 배치 (병목 평면과 직접 비교가 가능하도록) + _add_obstacle(msp, 9.0, 9.0, 10.0, 11.0) + _add_obstacle(msp, 19.0, 9.0, 20.0, 11.0) + _add_obstacle(msp, 14.0, 4.0, 15.0, 6.0) + _add_obstacle(msp, 14.0, 14.0, 15.0, 16.0) + + doc.saveas(path) + + +# ---------------------------------------------------------------------------- +# 3. branched_corridor_office.dxf +# ---------------------------------------------------------------------------- +# 의도: 사무실 평면. 6개 룸이 중앙 복도에 모이고, 출구 2개가 비대칭으로 배치되어 +# ZoneCompletion 차등 / ExitUsage 비대칭 / 복도 셀 고밀도 지속이 발생한다. +def build_branched_corridor_office(path: Path) -> None: + doc, msp = _new_document() + + _add_title( + msp, + "BRANCHED CORRIDOR OFFICE", + "36x20m 사무실 / 6 룸 + 중앙 복도 / 비대칭 2 출구 - 현실 시연", + ) + + # 보행 가능 구역 + _add_space(doc, msp, "West Lobby", 0.0, 0.0, 8.0, 20.0) + _add_space(doc, msp, "Corridor", 8.0, 9.0, 28.0, 11.0) + _add_space(doc, msp, "Office A", 8.0, 11.0, 14.0, 20.0) + _add_space(doc, msp, "Office B", 14.0, 11.0, 21.0, 20.0) + _add_space(doc, msp, "Meeting Room", 21.0, 11.0, 28.0, 20.0) + _add_space(doc, msp, "Office C", 8.0, 0.0, 14.0, 9.0) + _add_space(doc, msp, "Office D", 14.0, 0.0, 21.0, 9.0) + _add_space(doc, msp, "Office E", 21.0, 0.0, 28.0, 9.0) + _add_space(doc, msp, "East Bay", 28.0, 0.0, 36.0, 20.0) + + # 외벽 (서쪽 중앙 2.0m 출구, 동쪽 남단 2.0m 출구) + # 서 + _add_wall(msp, (0.0, 0.0), (0.0, 9.0)) + _add_wall(msp, (0.0, 11.0), (0.0, 20.0)) + # 북 + _add_wall(msp, (0.0, 20.0), (36.0, 20.0)) + # 남 + _add_wall(msp, (0.0, 0.0), (36.0, 0.0)) + # 동측 외벽: (36,0)-(36,2) 솔리드, (36,2)-(36,4) 출구 갭, (36,4)-(36,20) 솔리드 + _add_wall(msp, (36.0, 0.0), (36.0, 2.0)) + _add_wall(msp, (36.0, 4.0), (36.0, 20.0)) + + # 출구 + _add_exit(msp, (0.0, 9.0), (0.0, 11.0)) # 서측 중앙 + _add_exit(msp, (36.0, 2.0), (36.0, 4.0)) # 동측 남단 + + # 내벽: 로비 ↔ 복도 (도어 (8,9)-(8,11) 개방) + _add_wall(msp, (8.0, 0.0), (8.0, 9.0)) + _add_wall(msp, (8.0, 11.0), (8.0, 20.0)) + _add_door(msp, (8.0, 9.0), (8.0, 11.0)) + + # 북측 룸 분리벽 + _add_wall(msp, (14.0, 11.0), (14.0, 20.0)) + _add_wall(msp, (21.0, 11.0), (21.0, 20.0)) + # 남측 룸 분리벽 + _add_wall(msp, (14.0, 0.0), (14.0, 9.0)) + _add_wall(msp, (21.0, 0.0), (21.0, 9.0)) + + # 복도 ↔ 북측 룸 (각 1m 도어) + _add_wall(msp, (8.0, 11.0), (10.5, 11.0)) + _add_door(msp, (10.5, 11.0), (11.5, 11.0)) + _add_wall(msp, (11.5, 11.0), (17.0, 11.0)) + _add_door(msp, (17.0, 11.0), (18.0, 11.0)) + _add_wall(msp, (18.0, 11.0), (24.0, 11.0)) + _add_door(msp, (24.0, 11.0), (25.0, 11.0)) + _add_wall(msp, (25.0, 11.0), (28.0, 11.0)) + + # 복도 ↔ 남측 룸 (각 1m 도어) + _add_wall(msp, (8.0, 9.0), (10.5, 9.0)) + _add_door(msp, (10.5, 9.0), (11.5, 9.0)) + _add_wall(msp, (11.5, 9.0), (17.0, 9.0)) + _add_door(msp, (17.0, 9.0), (18.0, 9.0)) + _add_wall(msp, (18.0, 9.0), (24.0, 9.0)) + _add_door(msp, (24.0, 9.0), (25.0, 9.0)) + _add_wall(msp, (25.0, 9.0), (28.0, 9.0)) + + # 복도 ↔ 동측 베이 (도어 (28,9)-(28,11) 개방) + _add_wall(msp, (28.0, 0.0), (28.0, 9.0)) + _add_wall(msp, (28.0, 11.0), (28.0, 20.0)) + _add_door(msp, (28.0, 9.0), (28.0, 11.0)) + + # 장애물 (로비 리셉션, 복도 컬럼, 동쪽 베이 가구) + _add_obstacle(msp, 2.0, 8.5, 5.5, 11.5) # 로비 중앙 리셉션 (출구 옆) + _add_obstacle(msp, 13.0, 9.5, 13.5, 10.5) # 복도 컬럼 + _add_obstacle(msp, 20.0, 9.5, 20.5, 10.5) # 복도 컬럼 + _add_obstacle(msp, 32.0, 8.0, 34.5, 12.0) # 동쪽 베이 가구섬 + + doc.saveas(path) + + +def main() -> None: + build_bottleneck_hall(OUTPUT_DIR / "bottleneck_hall.dxf") + build_multi_exit_concourse(OUTPUT_DIR / "multi_exit_concourse.dxf") + build_branched_corridor_office(OUTPUT_DIR / "branched_corridor_office.dxf") + + +if __name__ == "__main__": + main() diff --git a/assets/demo-layouts/multi_exit_concourse.dxf b/assets/demo-layouts/multi_exit_concourse.dxf new file mode 100644 index 0000000..e00b9bc --- /dev/null +++ b/assets/demo-layouts/multi_exit_concourse.dxf @@ -0,0 +1,3660 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1024 + 9 +$ACADMAINTVER + 70 +6 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$LASTSAVEDBY + 1 +ezdxf + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$EXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 +0 + 9 +$REGENMODE + 70 +1 + 9 +$FILLMODE + 70 +1 + 9 +$QTEXTMODE + 70 +0 + 9 +$MIRRTEXT + 70 +1 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 +1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 +256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 +0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 +0 + 9 +$DIMLIM + 70 +0 + 9 +$DIMTIH + 70 +0 + 9 +$DIMTOH + 70 +0 + 9 +$DIMSE1 + 70 +0 + 9 +$DIMSE2 + 70 +0 + 9 +$DIMTAD + 70 +1 + 9 +$DIMZIN + 70 +8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 +1 + 9 +$DIMSHO + 70 +1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 +0 + 9 +$DIMALTD + 70 +3 + 9 +$DIMALTF + 40 +0.03937007874 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 +1 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 +0 + 9 +$DIMSOXD + 70 +0 + 9 +$DIMSAH + 70 +0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +ISO-25 + 9 +$DIMCLRD + 70 +0 + 9 +$DIMCLRE + 70 +0 + 9 +$DIMCLRT + 70 +0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 +0 + 9 +$DIMSD1 + 70 +0 + 9 +$DIMSD2 + 70 +0 + 9 +$DIMTOLJ + 70 +0 + 9 +$DIMTZIN + 70 +8 + 9 +$DIMALTZ + 70 +0 + 9 +$DIMALTTZ + 70 +0 + 9 +$DIMUPT + 70 +0 + 9 +$DIMDEC + 70 +2 + 9 +$DIMTDEC + 70 +2 + 9 +$DIMALTU + 70 +2 + 9 +$DIMALTTD + 70 +3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 +0 + 9 +$DIMADEC + 70 +0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 +0 + 9 +$DIMDSEP + 70 +44 + 9 +$DIMATFIT + 70 +3 + 9 +$DIMFRAC + 70 +0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 +2 + 9 +$DIMLWD + 70 +-2 + 9 +$DIMLWE + 70 +-2 + 9 +$DIMTMOVE + 70 +0 + 9 +$DIMFXL + 40 +1.0 + 9 +$DIMFXLON + 70 +0 + 9 +$DIMJOGANG + 40 +0.785398163397 + 9 +$DIMTFILL + 70 +0 + 9 +$DIMTFILLCLR + 70 +0 + 9 +$DIMARCSYM + 70 +0 + 9 +$DIMLTYPE + 6 + + 9 +$DIMLTEX1 + 6 + + 9 +$DIMLTEX2 + 6 + + 9 +$DIMTXTDIRECTION + 70 +0 + 9 +$LUNITS + 70 +2 + 9 +$LUPREC + 70 +4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +10.0 + 9 +$AUNITS + 70 +0 + 9 +$AUPREC + 70 +2 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 +0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 +0 + 9 +$TDCREATE + 40 +2461164.6288888888 + 9 +$TDUCREATE + 40 +2458532.153996898 + 9 +$TDUPDATE + 40 +2461164.6288888888 + 9 +$TDUUPDATE + 40 +2458532.1544311 + 9 +$TDINDWG + 40 +0.0 + 9 +$TDUSRTIMER + 40 +0.0 + 9 +$USRTIMER + 70 +1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 +0 + 9 +$PDMODE + 70 +0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 +0 + 9 +$SPLINETYPE + 70 +6 + 9 +$SPLINESEGS + 70 +8 + 9 +$HANDSEED + 5 +4A + 9 +$SURFTAB1 + 70 +6 + 9 +$SURFTAB2 + 70 +6 + 9 +$SURFTYPE + 70 +6 + 9 +$SURFU + 70 +6 + 9 +$SURFV + 70 +6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 +0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 +0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 +0 + 9 +$USERI2 + 70 +0 + 9 +$USERI3 + 70 +0 + 9 +$USERI4 + 70 +0 + 9 +$USERI5 + 70 +0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 +1 + 9 +$SHADEDGE + 70 +3 + 9 +$SHADEDIF + 70 +70 + 9 +$TILEMODE + 70 +1 + 9 +$MAXACTVP + 70 +64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 +0 + 9 +$PEXTMIN + 10 +1e+20 + 20 +1e+20 + 30 +1e+20 + 9 +$PEXTMAX + 10 +-1e+20 + 20 +-1e+20 + 30 +-1e+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +420.0 + 20 +297.0 + 9 +$UNITMODE + 70 +0 + 9 +$VISRETAIN + 70 +1 + 9 +$PLINEGEN + 70 +0 + 9 +$PSLTSCALE + 70 +1 + 9 +$TREEDEPTH + 70 +3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 +0 + 9 +$CMLSCALE + 40 +20.0 + 9 +$PROXYGRAPHICS + 70 +1 + 9 +$MEASUREMENT + 70 +1 + 9 +$CELWEIGHT +370 +-1 + 9 +$ENDCAPS +280 +0 + 9 +$JOINSTYLE +280 +0 + 9 +$LWDISPLAY +290 +0 + 9 +$INSUNITS + 70 +6 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 +1 + 9 +$CEPSNTYPE +380 +0 + 9 +$PSTYLEMODE +290 +1 + 9 +$FINGERPRINTGUID + 2 +{5EAD314D-362F-4C95-928E-CEF2584EF955} + 9 +$VERSIONGUID + 2 +{A476D9A2-7A2C-44F8-8FDB-D5FC12008F0B} + 9 +$EXTNAMES +290 +1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 +0 + 9 +$SORTENTS +280 +127 + 9 +$INDEXCTL +280 +0 + 9 +$HIDETEXT +280 +1 + 9 +$XCLIPFRAME +280 +1 + 9 +$HALOGAP +280 +0 + 9 +$OBSCOLOR + 70 +257 + 9 +$OBSLTYPE +280 +0 + 9 +$INTERSECTIONDISPLAY +280 +0 + 9 +$INTERSECTIONCOLOR + 70 +257 + 9 +$DIMASSOC +280 +2 + 9 +$PROJECTNAME + 1 + + 9 +$CAMERADISPLAY +290 +0 + 9 +$LENSLENGTH + 40 +50.0 + 9 +$CAMERAHEIGHT + 40 +0.0 + 9 +$STEPSPERSEC + 40 +24.0 + 9 +$STEPSIZE + 40 +100.0 + 9 +$3DDWFPREC + 40 +2.0 + 9 +$PSOLWIDTH + 40 +0.005 + 9 +$PSOLHEIGHT + 40 +0.08 + 9 +$LOFTANG1 + 40 +1.570796326795 + 9 +$LOFTANG2 + 40 +1.570796326795 + 9 +$LOFTMAG1 + 40 +0.0 + 9 +$LOFTMAG2 + 40 +0.0 + 9 +$LOFTPARAM + 70 +7 + 9 +$LOFTNORMALS +280 +1 + 9 +$LATITUDE + 40 +37.795 + 9 +$LONGITUDE + 40 +-122.394 + 9 +$NORTHDIRECTION + 40 +0.0 + 9 +$TIMEZONE + 70 +-8000 + 9 +$LIGHTGLYPHDISPLAY +280 +1 + 9 +$TILEMODELIGHTSYNCH +280 +1 + 9 +$CMATERIAL +347 +20 + 9 +$SOLIDHIST +280 +0 + 9 +$SHOWHIST +280 +1 + 9 +$DWFFRAME +280 +2 + 9 +$DGNFRAME +280 +2 + 9 +$REALWORLDSCALE +290 +1 + 9 +$INTERFERECOLOR + 62 +256 + 9 +$CSHADOW +280 +0 + 9 +$SHADOWPLANELOCATION + 40 +0.0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SUN + 2 +AcDbSun + 3 +SCENEOE + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +VISUALSTYLE + 2 +AcDbVisualStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +SCALE + 2 +AcDbScale + 3 +ObjectDBX Classes + 90 +1153 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MLEADERSTYLE + 2 +AcDbMLeaderStyle + 3 +ACDB_MLEADERSTYLE_CLASS + 90 +4095 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +CELLSTYLEMAP + 2 +AcDbCellStyleMap + 3 +ObjectDBX Classes + 90 +1152 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +MENTALRAYRENDERSETTINGS + 2 +AcDbMentalRayRenderSettings + 3 +SCENEOE + 90 +1024 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBDETAILVIEWSTYLE + 2 +AcDbDetailViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBSECTIONVIEWSTYLE + 2 +AcDbSectionViewStyle + 3 +ObjectDBX Classes + 90 +1025 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +RASTERVARIABLES + 2 +AcDbRasterVariables + 3 +ISM + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 +0 + 91 +0 +280 +0 +281 +0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +VPORT + 5 +23 +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 +0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +0.0 + 22 +0.0 + 13 +0.0 + 23 +0.0 + 14 +0.5 + 24 +0.5 + 15 +0.5 + 25 +0.5 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +1000.0 + 41 +1.34 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 +0 + 72 +1000 + 73 +1 + 74 +3 + 75 +0 + 76 +0 + 77 +0 + 78 +0 +281 +0 + 65 +0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +LTYPE + 5 +24 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +25 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +LTYPE + 5 +26 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 +0 + 3 + + 72 +65 + 73 +0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 +9 + 0 +LAYER + 5 +27 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +28 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Defpoints + 70 +0 + 62 +7 + 6 +Continuous +290 +0 +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +2F +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WALLS + 70 +0 + 62 +7 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +30 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +DOORS + 70 +0 + 62 +3 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +31 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +EXIT + 70 +0 + 62 +1 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +32 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +WINDOWS + 70 +0 + 62 +5 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +33 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TEXT + 70 +0 + 62 +2 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +34 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +OBSTACLE + 70 +0 + 62 +6 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +LAYER + 5 +36 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SPACE_MAIN_HALL + 70 +0 + 62 +4 + 6 +Continuous +370 +-3 +390 +13 +347 +21 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 +1 + 0 +STYLE + 5 +29 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 +0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 +0 + 42 +2.5 + 3 +txt + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 +3 + 0 +APPID + 5 +2A +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 +0 + 0 +APPID + 5 +47 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +HATCHBACKGROUNDCOLOR + 70 +0 + 0 +APPID + 5 +48 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +EZDXF + 70 +0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +4 +330 +0 +100 +AcDbSymbolTable + 70 +1 +100 +AcDbDimStyleTable + 0 +DIMSTYLE +105 +2B +330 +4 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 +0 + 40 +1.0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 45 +0.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +2.5 +140 +2.5 +141 +2.5 +142 +0.0 +143 +0.03937007874 +144 +1.0 +145 +0.0 +146 +1.0 +147 +0.625 +148 +0.0 + 69 +0 + 70 +0 + 71 +0 + 72 +0 + 73 +0 + 74 +0 + 75 +0 + 76 +0 + 77 +1 + 78 +8 + 79 +3 +170 +0 +171 +3 +172 +1 +173 +0 +174 +0 +175 +0 +176 +0 +177 +0 +178 +0 +179 +2 +271 +2 +272 +2 +273 +2 +274 +3 +275 +0 +276 +0 +277 +2 +278 +44 +279 +0 +280 +0 +281 +0 +282 +0 +283 +0 +284 +8 +285 +0 +286 +0 +288 +0 +289 +3 +290 +0 +371 +-2 +372 +-2 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 +2 + 0 +BLOCK_RECORD + 5 +17 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +1A + 70 +0 +280 +1 +281 +0 + 0 +BLOCK_RECORD + 5 +1B +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +1E + 70 +0 +280 +1 +281 +0 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +18 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +19 +330 +17 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +1C +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 +0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +1D +330 +1B +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +MTEXT + 5 +35 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +0.2 + 20 +-1.6 + 30 +0.0 + 40 +0.34 + 71 +1 + 1 +MULTI-EXIT CONCOURSE\P30x20m 단일 홀 / 1.0m 출구 3개 (E/N/S) - 다출구 분산 시연 + 0 +LWPOLYLINE + 5 +37 +330 +17 +100 +AcDbEntity + 8 +SPACE_MAIN_HALL +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +0.05 + 20 +0.05 + 10 +29.95 + 20 +0.05 + 10 +29.95 + 20 +19.95 + 10 +0.05 + 20 +19.95 + 0 +MTEXT + 5 +38 +330 +17 +100 +AcDbEntity + 8 +TEXT +100 +AcDbMText + 10 +13.6 + 20 +10.2 + 30 +0.0 + 40 +0.28 + 71 +1 + 1 +MAIN HALL\P600.0 m^2 + 0 +LINE + 5 +39 +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +14.5 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +3A +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +15.5 + 20 +0.0 + 30 +0.0 + 11 +30.0 + 21 +0.0 + 31 +0.0 + 0 +LINE + 5 +3B +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +20.0 + 30 +0.0 + 11 +14.5 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3C +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +15.5 + 20 +20.0 + 30 +0.0 + 11 +30.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3D +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +0.0 + 20 +0.0 + 30 +0.0 + 11 +0.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +3E +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +30.0 + 20 +0.0 + 30 +0.0 + 11 +30.0 + 21 +9.5 + 31 +0.0 + 0 +LINE + 5 +3F +330 +17 +100 +AcDbEntity + 8 +WALLS +100 +AcDbLine + 10 +30.0 + 20 +10.5 + 30 +0.0 + 11 +30.0 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +40 +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +30.0 + 20 +9.5 + 30 +0.0 + 11 +30.0 + 21 +10.5 + 31 +0.0 + 0 +LINE + 5 +41 +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +14.5 + 20 +20.0 + 30 +0.0 + 11 +15.5 + 21 +20.0 + 31 +0.0 + 0 +LINE + 5 +42 +330 +17 +100 +AcDbEntity + 8 +EXIT +100 +AcDbLine + 10 +14.5 + 20 +0.0 + 30 +0.0 + 11 +15.5 + 21 +0.0 + 31 +0.0 + 0 +LWPOLYLINE + 5 +43 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +9.0 + 20 +9.0 + 10 +10.0 + 20 +9.0 + 10 +10.0 + 20 +11.0 + 10 +9.0 + 20 +11.0 + 0 +LWPOLYLINE + 5 +44 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +19.0 + 20 +9.0 + 10 +20.0 + 20 +9.0 + 10 +20.0 + 20 +11.0 + 10 +19.0 + 20 +11.0 + 0 +LWPOLYLINE + 5 +45 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.0 + 20 +4.0 + 10 +15.0 + 20 +4.0 + 10 +15.0 + 20 +6.0 + 10 +14.0 + 20 +6.0 + 0 +LWPOLYLINE + 5 +46 +330 +17 +100 +AcDbEntity + 8 +OBSTACLE +100 +AcDbPolyline + 90 +4 + 70 +1 + 10 +14.0 + 20 +14.0 + 10 +15.0 + 20 +14.0 + 10 +15.0 + 20 +16.0 + 10 +14.0 + 20 +16.0 + 0 +ENDSEC + 0 +SECTION + 2 +OBJECTS + 0 +DICTIONARY + 5 +A +330 +0 +100 +AcDbDictionary +281 +1 + 3 +ACAD_COLOR +350 +B + 3 +ACAD_GROUP +350 +C + 3 +ACAD_LAYOUT +350 +D + 3 +ACAD_MATERIAL +350 +E + 3 +ACAD_MLEADERSTYLE +350 +F + 3 +ACAD_MLINESTYLE +350 +10 + 3 +ACAD_PLOTSETTINGS +350 +11 + 3 +ACAD_PLOTSTYLENAME +350 +12 + 3 +ACAD_SCALELIST +350 +14 + 3 +ACAD_TABLESTYLE +350 +15 + 3 +ACAD_VISUALSTYLE +350 +16 + 3 +EZDXF_META +350 +2D + 0 +DICTIONARY + 5 +B +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +C +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +D +330 +A +100 +AcDbDictionary +281 +1 + 3 +Model +350 +1A + 3 +Layout1 +350 +1E + 0 +DICTIONARY + 5 +E +330 +A +100 +AcDbDictionary +281 +1 + 3 +ByBlock +350 +1F + 3 +ByLayer +350 +20 + 3 +Global +350 +21 + 0 +DICTIONARY + 5 +F +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +2C + 0 +DICTIONARY + 5 +10 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Standard +350 +22 + 0 +DICTIONARY + 5 +11 +330 +A +100 +AcDbDictionary +281 +1 + 0 +ACDBDICTIONARYWDFLT + 5 +12 +330 +A +100 +AcDbDictionary +281 +1 + 3 +Normal +350 +13 +100 +AcDbDictionaryWithDefault +340 +13 + 0 +ACDBPLACEHOLDER + 5 +13 +330 +12 + 0 +DICTIONARY + 5 +14 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +15 +330 +A +100 +AcDbDictionary +281 +1 + 0 +DICTIONARY + 5 +16 +330 +A +100 +AcDbDictionary +281 +1 + 0 +LAYOUT + 5 +1A +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +1024 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Model + 70 +1 + 71 +0 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +17 + 0 +LAYOUT + 5 +1E +330 +D +100 +AcDbPlotSettings + 1 + + 4 +A3 + 6 + + 40 +7.5 + 41 +20.0 + 42 +7.5 + 43 +20.0 + 44 +420.0 + 45 +297.0 + 46 +0.0 + 47 +0.0 + 48 +0.0 + 49 +0.0 +140 +0.0 +141 +0.0 +142 +1.0 +143 +1.0 + 70 +0 + 72 +1 + 73 +0 + 74 +5 + 7 + + 75 +16 + 76 +0 + 77 +2 + 78 +300 +147 +1.0 +148 +0.0 +149 +0.0 +100 +AcDbLayout + 1 +Layout1 + 70 +1 + 71 +1 + 10 +0.0 + 20 +0.0 + 11 +420.0 + 21 +297.0 + 12 +0.0 + 22 +0.0 + 32 +0.0 + 14 +1e+20 + 24 +1e+20 + 34 +1e+20 + 15 +-1e+20 + 25 +-1e+20 + 35 +-1e+20 +146 +0.0 + 13 +0.0 + 23 +0.0 + 33 +0.0 + 16 +1.0 + 26 +0.0 + 36 +0.0 + 17 +0.0 + 27 +1.0 + 37 +0.0 + 76 +1 +330 +1B + 0 +MATERIAL + 5 +1F +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByBlock + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +20 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +ByLayer + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MATERIAL + 5 +21 +102 +{ACAD_REACTORS +330 +E +102 +} +330 +E +100 +AcDbMaterial + 1 +Global + 2 + + 70 +0 + 40 +1.0 + 71 +1 + 41 +1.0 + 91 +-1023410177 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 44 +0.5 + 73 +0 + 45 +1.0 + 46 +1.0 + 77 +1 + 4 + + 78 +1 + 79 +1 +170 +1 + 48 +1.0 +171 +1 + 6 + +172 +1 +173 +1 +174 +1 +140 +1.0 +141 +1.0 +175 +1 + 7 + +176 +1 +177 +1 +178 +1 +143 +1.0 +179 +1 + 8 + +270 +1 +271 +1 +272 +1 +145 +1.0 +146 +1.0 +273 +1 + 9 + +274 +1 +275 +1 +276 +1 + 42 +1.0 + 72 +1 + 3 + + 73 +1 + 74 +1 + 75 +1 + 94 +63 + 0 +MLINESTYLE + 5 +22 +102 +{ACAD_REACTORS +330 +10 +102 +} +330 +10 +100 +AcDbMlineStyle + 2 +Standard + 70 +0 + 3 + + 62 +256 + 51 +90.0 + 52 +90.0 + 71 +2 + 49 +0.5 + 62 +256 + 6 +BYLAYER + 49 +-0.5 + 62 +256 + 6 +BYLAYER + 0 +MLEADERSTYLE + 5 +2C +102 +{ACAD_REACTORS +330 +F +102 +} +330 +F +100 +AcDbMLeaderStyle +179 +2 +170 +2 +171 +1 +172 +0 + 90 +2 + 40 +0.0 + 41 +0.0 +173 +1 + 91 +-1056964608 + 92 +-2 +290 +1 + 42 +2.0 +291 +1 + 43 +8.0 + 3 +Standard + 44 +4.0 +300 + +342 +29 +174 +1 +175 +1 +176 +0 +178 +1 + 93 +-1056964608 + 45 +4.0 +292 +0 +297 +0 + 46 +4.0 + 94 +-1056964608 + 47 +1.0 + 49 +1.0 +140 +1.0 +294 +1 +141 +0.0 +177 +0 +142 +1.0 +295 +0 +296 +0 +143 +3.75 +271 +0 +272 +9 +273 +9 + 0 +DICTIONARY + 5 +2D +330 +A +100 +AcDbDictionary +280 +1 +281 +1 + 3 +CREATED_BY_EZDXF +350 +2E + 3 +WRITTEN_BY_EZDXF +350 +49 + 0 +DICTIONARYVAR + 5 +2E +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.032460+00:00 + 0 +DICTIONARYVAR + 5 +49 +330 +2D +100 +DictionaryVariables +280 +0 + 1 +1.4.3 @ 2026-05-03T06:05:36.034367+00:00 + 0 +ENDSEC + 0 +EOF diff --git a/docs/README.md b/docs/README.md index c2333f3..3354460 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,6 +8,7 @@ - `process/`: GitHub Project, 이슈/PR 규칙 같은 협업 절차 - `product/`: 개요, 사용자 시나리오, 위험 정의, 백로그 같은 제품 요구와 범위 - `references/`: 외부 조사 자료와 튜토리얼. 기준 문서의 보조 근거로만 사용 +- `demo/`: 시연 시 사용하는 평면 자산과 시연 흐름 가이드 - `제출용/`: 학교 제출 산출물. 저장소 운영 기준 문서와 분리해 보관 - `UI.md`: 앱 화면 흐름, 기능 기준, Sprint별 UI 개선 체크리스트 @@ -22,6 +23,7 @@ - [product/고급 위험 모델.md](product/고급 위험 모델.md) - [product/Product Backlog.md](product/Product Backlog.md) - [product/Sprint 시연 계획.md]() +- [demo/시연 평면 가이드.md]() ## 유지 규칙 diff --git "a/docs/demo/\354\213\234\354\227\260 \355\217\211\353\251\264 \352\260\200\354\235\264\353\223\234.md" "b/docs/demo/\354\213\234\354\227\260 \355\217\211\353\251\264 \352\260\200\354\235\264\353\223\234.md" new file mode 100644 index 0000000..d1e71da --- /dev/null +++ "b/docs/demo/\354\213\234\354\227\260 \355\217\211\353\251\264 \352\260\200\354\235\264\353\223\234.md" @@ -0,0 +1,58 @@ +# 시연 평면 가이드 + +Sprint 1 시연에서 사용할 도면 자산과 각 도면이 강조하는 결과 지표를 정리합니다. +도면 파일은 [`assets/demo-layouts/`](../../assets/demo-layouts/) 에 있습니다. + +## 시연 흐름 요약 + +1. 새 프로젝트 생성 → DXF 임포트 +2. 임포트 리뷰 (검증 이슈 확인) +3. 시나리오 작성 (군중 배치 / 목표 시간) +4. 시뮬레이션 실행 +5. 결과 화면에서 지표 확인 (대피 시간, 피크 밀도, 출구 사용, 존 완료, 리플레이) + +각 평면마다 같은 군중 인원·같은 목표 시간을 적용해 시연하면 결과 지표 차이를 비교 가능합니다. + +## 평면별 시연 메시지 + +### 1. `bottleneck_hall.dxf` — 병목 시연 + +- **구조**: 30 × 20 m 단일 홀, 동측 중앙 1.0 m 단일 출구. 내부에 컬럼 4개. +- **메시지**: "출구 폭이 좁으면 동일 인원이라도 대피 시간이 어떻게 늘어나는가." +- **강조 지표**: + - `DensitySummary.peakDensityPeoplePerSquareMeter` 가 매우 높게 측정됨 + - `DensitySummary.highDensityDurationSeconds` 가 길어짐 + - `EvacuationTimingSummary.t90Seconds`, `t95Seconds` 가 길어지고, 목표 시간 대비 `marginSeconds` 가 감소/음수 + - `ExitUsageMetric` 은 단일 출구 100 % + - `peakCell` 위치가 출구 직전 영역에 형성됨 +- **보여줄 화면**: 결과 화면의 밀도 히트맵, 진행률 그래프, 타이밍 카드 + +### 2. `multi_exit_concourse.dxf` — 다출구 분산 시연 + +- **구조**: `bottleneck_hall` 과 동일한 30 × 20 m 홀, 동일한 컬럼 배치. 다만 출구가 동/북/남 3개 (각 1.0 m) 로 분산. +- **메시지**: "출구를 추가했을 때 같은 군중이 어떻게 빠르게 빠지는가." +- **강조 지표** (`bottleneck_hall` 결과와 직접 비교 슬라이드): + - `t90`, `peakDensity`, `highDensityDuration` 모두 감소 + - `marginSeconds` 가 양수 / 더 큰 폭 + - `ExitUsageMetric` 이 3 출구로 분산 (예: 30 / 35 / 35 등) +- **보여줄 화면**: 두 평면의 결과를 나란히 띄워 동일 인원·동일 시나리오에서의 차이 강조 + +### 3. `branched_corridor_office.dxf` — 현실 평면 시연 + +- **구조**: 36 × 20 m 사무실. 서측 로비 → 중앙 복도 → 6개 룸 (북 3 / 남 3) + 동측 베이. 출구 2개 (서측 중앙, 동측 남단) 로 비대칭. +- **메시지**: "현실 평면에서 어디가 위험 지점이고, 어느 출구가 과부하되는가." +- **강조 지표**: + - `ZoneCompletionMetric` 의 `lastCompletionTimeSeconds` 가 룸별로 차등 — 서측에 가까운 룸은 빨리 완료, 원거리 룸 지연 + - `ExitUsageMetric` 이 비대칭 — 서측 출구로 군중 편중, 동측 출구는 동측 베이/원거리 룸 위주 + - `DensitySummary.peakField` 의 피크 셀이 복도 중앙 또는 로비 출구 직전에 형성 +- **보여줄 화면**: 존별 완료 시간 표, 출구 사용 막대그래프, 복도/로비 영역의 밀도 히트맵, 리플레이로 군중이 복도를 통해 모이는 흐름 + +## 시연 셋업 권장값 (참고) + +| 항목 | 권장 | +| --- | --- | +| 군중 배치 | 평면별 보행 가능 면적의 1.0 ~ 1.5 인/m² 정도, 모든 평면 동일 인원 | +| 목표 대피 시간 | bottleneck_hall 기준 마진이 거의 0 이 되도록 잡고 같은 값을 다른 평면에도 사용 | +| 시뮬레이션 시간 | 충분히 끝까지 진행되도록 여유 있게 | + +권장값은 시뮬레이션 파라미터 튜닝 결과에 따라 조정될 수 있습니다. diff --git a/tests/DxfImportServiceTests.cpp b/tests/DxfImportServiceTests.cpp index ced9d8e..1c8f868 100644 --- a/tests/DxfImportServiceTests.cpp +++ b/tests/DxfImportServiceTests.cpp @@ -707,6 +707,54 @@ SC_TEST(DxfImportServiceDoesNotInferConnectionsAcrossWallSeam) { std::filesystem::remove(sourcePath); } +namespace { + +void expectDemoLayoutImports(const char* fileName, std::size_t minWalkableZones, std::size_t minExitConnections) { + const auto sourcePath = std::filesystem::path(__FILE__).parent_path().parent_path() + / "assets" / "demo-layouts" / fileName; + + safecrowd::domain::DxfImportService importer; + safecrowd::domain::ImportRequest request; + request.sourcePath = sourcePath; + request.requestedFormat = safecrowd::domain::ImportedFileFormat::Dxf; + + const auto result = importer.importFile(request); + + SC_EXPECT_TRUE(result.layout.has_value()); + SC_EXPECT_TRUE(!safecrowd::domain::hasBlockingImportIssue(result.issues)); + + if (result.layout.has_value()) { + std::size_t walkableCount = 0; + std::size_t exitConnectionCount = 0; + for (const auto& zone : result.layout->zones) { + if (zone.kind == safecrowd::domain::ZoneKind::Room) { + ++walkableCount; + } + } + for (const auto& connection : result.layout->connections) { + if (connection.kind == safecrowd::domain::ConnectionKind::Exit) { + ++exitConnectionCount; + } + } + SC_EXPECT_TRUE(walkableCount >= minWalkableZones); + SC_EXPECT_TRUE(exitConnectionCount >= minExitConnections); + } +} + +} // namespace + +SC_TEST(DxfImportServiceImportsBottleneckHallDemoLayout) { + expectDemoLayoutImports("bottleneck_hall.dxf", /*minWalkableZones=*/1, /*minExitConnections=*/1); +} + +SC_TEST(DxfImportServiceImportsMultiExitConcourseDemoLayout) { + expectDemoLayoutImports("multi_exit_concourse.dxf", /*minWalkableZones=*/1, /*minExitConnections=*/3); +} + +SC_TEST(DxfImportServiceImportsBranchedCorridorOfficeDemoLayout) { + expectDemoLayoutImports("branched_corridor_office.dxf", /*minWalkableZones=*/7, /*minExitConnections=*/2); +} + SC_TEST(DxfImportServiceReportsBlockingIssuesForReviewDemoFixture) { const auto sourcePath = std::filesystem::path(__FILE__).parent_path() / "dxf" / "blocking_review_demo.dxf"; diff --git a/tests/ImportContractsTests.cpp b/tests/ImportContractsTests.cpp index 2292197..4a8d12b 100644 --- a/tests/ImportContractsTests.cpp +++ b/tests/ImportContractsTests.cpp @@ -221,13 +221,13 @@ SC_TEST(ImportOrchestratorUsesAFileBasedDomainEntryPoint) { FakeImportOrchestrator orchestrator; safecrowd::domain::ImportRequest request; - request.sourcePath = std::filesystem::path("tests/dxf/home_plan.dxf"); + request.sourcePath = std::filesystem::path("tests/dxf/office_suite.dxf"); request.requestedFormat = safecrowd::domain::ImportedFileFormat::Dxf; request.preserveRawModel = false; const auto result = orchestrator.importFile(request); - SC_EXPECT_EQ(orchestrator.lastRequest.sourcePath.generic_string(), std::string("tests/dxf/home_plan.dxf")); + SC_EXPECT_EQ(orchestrator.lastRequest.sourcePath.generic_string(), std::string("tests/dxf/office_suite.dxf")); SC_EXPECT_EQ(orchestrator.lastRequest.requestedFormat, safecrowd::domain::ImportedFileFormat::Dxf); SC_EXPECT_TRUE(!orchestrator.lastRequest.preserveRawModel); SC_EXPECT_TRUE(result.layout.has_value()); diff --git a/tests/dxf/README.md b/tests/dxf/README.md index d3ae3f8..73763ad 100644 --- a/tests/dxf/README.md +++ b/tests/dxf/README.md @@ -1,6 +1,7 @@ -# Building DXF Fixtures +# Test DXF Fixtures -DXF import 테스트용 건물/층 평면 샘플 모음입니다. +DXF 임포트 테스트용 건물/층 평면 샘플 모음입니다. +시연용 평면 자산은 `assets/demo-layouts/` 에서 별도로 관리합니다. 이 폴더에는 성격이 다른 두 종류의 샘플이 있습니다. @@ -15,6 +16,7 @@ DXF import 테스트용 건물/층 평면 샘플 모음입니다. | `home_plan.dxf` | generated | compact residential floor plan with `SPACE_*`, `WALLS`, `DOORS`, `EXIT`, `WINDOWS`, `OBSTACLE` layers | local generator | | `office_suite.dxf` | generated | small office suite floor plan with lobby, meeting room, open office, kitchenette, storage, and exits | local generator | | `evacuation_complex_large.dxf` | generated | large multi-wing building for evacuation simulation with concourse, assembly spaces, service wings, obstacles, and 8 perimeter exits | local generator | +| `blocking_review_demo.dxf` | generated | 의도적으로 차단 이슈를 발생시키는 작은 평면 (`tests/DxfImportServiceTests.cpp` 차단 이슈 검출 검증) | local generator | ## Provenance @@ -28,3 +30,4 @@ DXF import 테스트용 건물/층 평면 샘플 모음입니다. - `apartment_floor_plan.dxf`는 외부 공개 MIT 저장소에서 가져온 실제 건물 평면입니다. - `home_plan.dxf`, `office_suite.dxf`, `evacuation_complex_large.dxf`는 SafeCrowd import 테스트에 맞게 로컬에서 생성한 건물 평면 샘플입니다. - 생성본도 `ezdxf`로 다시 열어 검증했습니다. +- 시연 자산이 필요하면 `assets/demo-layouts/` 를 참조하세요.