Skip to content

Latest commit

ย 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

jDwgParser

Java๋กœ ๊ตฌํ˜„ํ•œ AutoCAD DWG ํŒŒ์ผ ํŒŒ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.

OpenDesign Specification v5.4.1์„ ๊ธฐ๋ฐ˜์œผ๋กœ R13๋ถ€ํ„ฐ R2018๊นŒ์ง€์˜ DWG ํŒŒ์ผ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

src/
โ”œโ”€โ”€ io/dwg/
โ”‚   โ”œโ”€โ”€ core/          # ์ €์ˆ˜์ค€ I/O, ๋ฒ„์ „ ๊ฐ์ง€, ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ io/        # BitStream ์ฝ๊ธฐ/์“ฐ๊ธฐ
โ”‚   โ”‚   โ”œโ”€โ”€ type/      # DwgHandle, Point3D ๋“ฑ
โ”‚   โ”‚   โ”œโ”€โ”€ util/      # LZ77, CRC, ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ
โ”‚   โ”‚   โ””โ”€โ”€ version/   # DwgVersion, ๋ฒ„์ „ ๊ฐ์ง€
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ format/        # ๋ฒ„์ „๋ณ„ ํŒŒ์ผ ๊ตฌ์กฐ ํ•ธ๋“ค๋Ÿฌ
โ”‚   โ”‚   โ”œโ”€โ”€ common/    # ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค
โ”‚   โ”‚   โ”œโ”€โ”€ r13/       # R13-R15 ๊ตฌํ˜„
โ”‚   โ”‚   โ”œโ”€โ”€ r2004/     # R2004 ๊ตฌํ˜„
โ”‚   โ”‚   โ””โ”€โ”€ r2007/     # R2007-R2010 ๊ตฌํ˜„
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ sections/      # ์„น์…˜ ํŒŒ์„œ/๋ผ์ดํ„ฐ
โ”‚   โ”‚   โ”œโ”€โ”€ header/    # Header ๋ณ€์ˆ˜
โ”‚   โ”‚   โ”œโ”€โ”€ classes/   # ํด๋ž˜์Šค ์ •์˜
โ”‚   โ”‚   โ”œโ”€โ”€ handles/   # ํ•ธ๋“ค ๋งต
โ”‚   โ”‚   โ””โ”€โ”€ objects/   # ์—”ํ‹ฐํ‹ฐ/๊ฐ์ฒด
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ entities/      # ๋„๋ฉ”์ธ ๋ชจ๋ธ (์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ)
โ”‚   โ”‚   โ”œโ”€โ”€ concrete/  # Line, Circle, Arc, Text ๋“ฑ
โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ api/           # ๊ณ ์ˆ˜์ค€ ๊ณต๊ฐœ API
โ”‚   โ”‚   โ”œโ”€โ”€ DwgReader
โ”‚   โ”‚   โ”œโ”€โ”€ DwgWriter
โ”‚   โ”‚   โ””โ”€โ”€ DwgDocument
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ test/          # ํ…Œ์ŠคํŠธ
โ”‚       โ””โ”€โ”€ DwgParsingStageTest

์•„ํ‚คํ…์ฒ˜

๋ชจ๋“ˆ ๊ณ„์ธต๋„

dwg-core โ†’ dwg-format โ†’ dwg-sections โ†’ dwg-entities โ†’ dwg-api
๋ชจ๋“ˆ ์ฑ…์ž„
dwg-core ๋น„ํŠธ์ŠคํŠธ๋ฆผ I/O, ํƒ€์ž…, LZ77/CRC
dwg-format ๋ฒ„์ „๋ณ„ ํŒŒ์ผ ๊ตฌ์กฐ (R13~R2018)
dwg-sections ์„น์…˜ ํŒŒ์„œ/๋ผ์ดํ„ฐ
dwg-entities ์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ (์—”ํ‹ฐํ‹ฐ+๋น„์—”ํ‹ฐํ‹ฐ)
dwg-api ๊ณต๊ฐœ API (DwgReader, DwgWriter)

์ฃผ์š” ํŒจํ„ด

  • Strategy: DwgFileStructureHandler โ€” ๋ฒ„์ „๋ณ„ ํŒŒ์‹ฑ ์ „๋žต
  • Factory: DwgFileStructureHandlerFactory โ€” ๋ฒ„์ „์— ๋งž๋Š” ํ•ธ๋“ค๋Ÿฌ ์„ ํƒ
  • Registry: SectionParserRegistry โ€” ์„น์…˜ ์ด๋ฆ„ โ†’ ํŒŒ์„œ ๋งคํ•‘
  • Builder: DwgReader, DwgDocument โ€” Fluent API

๊ตฌํ˜„ ๋‹จ๊ณ„ ๋ฐ ์™„๋ฃŒ ์ƒํƒœ

โœ… Phase 2-9 ์™„๋ฃŒ (v0.1.0)

Phase 2: ๊ธฐ์ดˆ ๊ตฌํ˜„ โœ“

  • BitStream I/O (์ฝ๊ธฐ/์“ฐ๊ธฐ), DWG ํƒ€์ž…, ๋ฒ„์ „ ๊ฐ์ง€, LZ77/CRC

Phase 4: R2000 ์ง€์› โœ“

  • R2000 HeaderVariables, ์„น์…˜ ํŒŒ์‹ฑ (22๊ฐœ ์ƒ˜ํ”Œ ํŒŒ์ผ 100% ํ†ต๊ณผ)

Phase 5: R2004 ์—”ํ‹ฐํ‹ฐ ํ•ด์„ โœ“

  • Objects ์„น์…˜ ๋น„ํŠธ ๋‹จ์œ„ ํŒŒ์‹ฑ, 64๊ฐœ ์—”ํ‹ฐํ‹ฐ ๋ฆฌ๋” ๊ตฌํ˜„

Phase 6A: R2007/R2010/R2013/R2018 ๊ธฐ์ดˆ โœ“

  • R2007 Reed-Solomon ํ—ค๋”, PageMap/SectionMap ์ถ”์ถœ
  • R2010+ ํŒŒ์ผ ๊ตฌ์กฐ ์ธ์‹

Phase 6B: Objects ์„น์…˜ ์ถ”์ถœ โœ“

  • R2007 RS(255,239) ๋ณตํ˜ธํ™” ๋ฐ LZ77 ํ•ด์ œ
  • Objects ์„น์…˜ 197KB+ ์ถ”์ถœ (18๊ฐœ ์ƒ˜ํ”Œ 100%)

Phase 7: ์™„์ „ ํ†ตํ•ฉ ๋ฐ ๊ฒ€์ฆ โœ“

  • Handles ์˜คํ”„์…‹ ๊ณ„์‚ฐ ์ˆ˜์ • (blockCount 8๋ฐ”์ดํŠธ ์ •๋ ฌ)
  • ์ˆœ์ฐจ ํŒŒ์‹ฑ ํด๋ฐฑ ๊ตฌํ˜„
  • 4,816 ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ (+42% ๊ฐœ์„ )

Phase 8: ์—”ํ‹ฐํ‹ฐ ํƒ€์ž… ํ™•์žฅ โœ“

  • 74๊ฐœ ์—”ํ‹ฐํ‹ฐ ํƒ€์ž… ๊ตฌํ˜„ (์™„์ „ ์ปค๋ฒ„๋ฆฌ์ง€)
  • 19๊ฐœ ์‹ ๊ทœ ํƒ€์ž… ์ถ”๊ฐ€ (MLINE, MTEXT, WIPEOUT, IMAGE ๋“ฑ)

Phase 9 Tier 1: R2004 LZ77 ์ˆ˜์ • โœ“

  • R2004 ์ „์šฉ LZ77 ๋””์ปดํ”„๋ ˆ์„œ ๊ตฌํ˜„ (+42% ๊ฐœ์„ , 645๊ฐœ ์ถ”๊ฐ€ ์—”ํ‹ฐํ‹ฐ)

Phase 9 Tier 3: R2010+ ๋ผ์šฐํŒ… ์ˆ˜์ • โœ“

  • ์•„ํ‚คํ…์ฒ˜ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ: R2010/R2013/R2018์€ R2004 ํŒŒ์ผ ๊ตฌ์กฐ ์‚ฌ์šฉ
  • R2007 ํ•ธ๋“ค๋Ÿฌ ๋Œ€์‹  R2004 ํ•ธ๋“ค๋Ÿฌ๋กœ ๋ผ์šฐํŒ… ๋ณ€๊ฒฝ
  • Reed-Solomon ๋””์ฝ”๋” ๋‹จ์ˆœํ™” (deinterleave๋งŒ, BM ์—๋Ÿฌ์ •์ • ์ œ๊ฑฐ)
  • ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ 6,825 โ†’ 12,756 (+87%)

๐Ÿ“Š ์ตœ์ข… ์„ฑ๊ณผ

๋ฉ”ํŠธ๋ฆญ ๋‹ฌ์„ฑ
์ƒ˜ํ”Œ ํŒŒ์ผ ํ†ต๊ณผ์œจ 130/141 (92.2%)
์—”ํ‹ฐํ‹ฐ ํƒ€์ž… ์ปค๋ฒ„๋ฆฌ์ง€ 74/74 (100%)
์ด ์ถ”์ถœ ์—”ํ‹ฐํ‹ฐ 12,756๊ฐœ
R2007+ ํŒŒ์ผ ์„ฑ๊ณต๋ฅ  28/28 (100%)
๋ˆ„์  ๊ฐœ์„ ์œจ (Phase 1 ๋Œ€๋น„) +165%

๐ŸŽฏ Phase 10 (๊ณ„ํš)

  • ์„ฑ๋Šฅ ์ตœ์ ํ™” (์ผ๋ถ€ R2018 ํŒŒ์ผ ์ˆœ์ฐจ ํŒŒ์‹ฑ ํด๋ฐฑ)
  • R13/R14 ์™„์ „ ์ง€์›
  • ๋ณด์กฐ ์„น์…˜ ํŒŒ์„œ ํ™•์žฅ (AppInfo, Preview, XData)
  • ์“ฐ๊ธฐ ๊ธฐ๋Šฅ (Phase 3)

๋นŒ๋“œ ๋ฐ ์‹คํ–‰

์š”๊ตฌ์‚ฌํ•ญ

  • Java 16+
  • Maven 3.6+

๋นŒ๋“œ

mvn clean compile

ํ…Œ์ŠคํŠธ (๋‹จ๊ณ„๋ณ„ ํŒŒ์‹ฑ ํ…Œ์ŠคํŠธ)

# Windows
run_test.bat path/to/sample.dwg

# macOS/Linux
./run_test.sh path/to/sample.dwg

# ์ง์ ‘ ์‹คํ–‰
mvn compile
java -cp target/classes:target/dependency/* \
  io.dwg.test.DwgParsingStageTest path/to/sample.dwg

์ž์„ธํ•œ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ๋Š” TESTING.md ์ฐธ์กฐ.

Phase 9 Tier 3 ํ•ต์‹ฌ ๋ฐœ๊ฒฌ์‚ฌํ•ญ

์•„ํ‚คํ…์ฒ˜ ๋ฒ„๊ทธ (R2010+ ํŒŒ์ผ ๋ผ์šฐํŒ…)

๋ฌธ์ œ: R2010, R2013, R2018 ํŒŒ์ผ์ด 0๊ฐœ ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ (์™„์ „ ์‹คํŒจ)

๊ทผ๋ณธ ์›์ธ: libredwg๋ฅผ ์ฐธ๊ณ ํ•œ ๊ฒฐ๊ณผ, ํŒŒ์ผ ๊ตฌ์กฐ ๋ผ์šฐํŒ…์—์„œ ์ค‘๋Œ€ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ฐจ์ด ๋ฐœ๊ฒฌ

// libredwg/src/decode.c:222-226
VERSIONS (R_2007a, R_2007)  { return decode_R2007 (dat, dwg); }
SINCE (R_2010b)             { return decode_R2004 (dat, dwg); }

๋ฐœ๊ฒฌ: R2010, R2013, R2018์€ R2004 ํŒŒ์ผ ๊ตฌ์กฐ ์‚ฌ์šฉ

  • R2007์€ ์œ ์ผํ•˜๊ฒŒ Reed-Solomon(255,239) ํ—ค๋” ์•”ํ˜ธํ™” ์‚ฌ์šฉ
  • R2010+๋Š” R2004 ๋ฐฉ์‹ (XOR ์•”ํ˜ธํ™” + LZ77)

ํ•ด๊ฒฐ: ํŒŒ์ผ ๋ผ์šฐํŒ… ๋ณ€๊ฒฝ

// Before: R2010/R2013/R2018 โ†’ R2007FileStructureHandler (XOR ๊ตฌ์กฐ๋กœ RS ์ฝ์œผ๋ ค๋‹ค ์‹คํŒจ)
// After: R2010/R2013/R2018 โ†’ R2004FileStructureHandler (์˜ฌ๋ฐ”๋ฅธ ๊ตฌ์กฐ)

case R2004: case R2010: case R2013: case R2018:
    return new R2004FileStructureHandler();
case R2007:
    return new R2007FileStructureHandler();

๋ณด๋„ˆ์Šค ๋ฐœ๊ฒฌ: Reed-Solomon ๋””์ฝ”๋” ๋‹จ์ˆœํ™”

  • libredwg๋Š” RS ์—๋Ÿฌ ์ •์ • ํ˜ธ์ถœ์„ ์ฃผ์„ ์ฒ˜๋ฆฌ
  • ๋””์ฝ”๋”๋ฅผ deinterleave ์ „์šฉ์œผ๋กœ ๋‹จ์ˆœํ™”
  • ์ด์ „ Berlekamp-Massey ์—๋Ÿฌ ์ •์ • ์ œ๊ฑฐ

๊ฒฐ๊ณผ:

  • R2010+ ์„ฑ๊ณต๋ฅ : 7% โ†’ 100%
  • ์ถ”์ถœ ์—”ํ‹ฐํ‹ฐ: 6,825 โ†’ 12,756 (+87%)

ํ•ต์‹ฌ ๊ตํ›ˆ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฒ„๊ทธ๋กœ ๋ณด์ด๋Š” ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•  ๋•Œ๋Š” ๋จผ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ์„ ๋ฐ›๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด ๊ฒฝ์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๋Š” ์ •์ƒ์ด์—ˆ์ง€๋งŒ ์ž˜๋ชป๋œ ํŒŒ์ผ ๊ตฌ์กฐ๋กœ ๋ผ์šฐํŒ…๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

import io.dwg.api.DwgReader;
import io.dwg.api.DwgDocument;
import io.dwg.entities.DwgEntity;
import java.nio.file.Paths;

// DWG ํŒŒ์ผ ์ฝ๊ธฐ
DwgDocument doc = DwgReader.defaultReader()
    .open(Paths.get("drawing.dwg"));

// ๋ฌธ์„œ ์ •๋ณด
System.out.println("๋ฒ„์ „: " + doc.version());
System.out.println("๊ฐ์ฒด ์ˆ˜: " + doc.objectMap().size());

// ๋ ˆ์ด์–ด ์กฐํšŒ
doc.layer("0")
    .ifPresent(layer -> System.out.println("0 ๋ ˆ์ด์–ด ์ƒ‰์ƒ: " + layer.color()));

// ์—”ํ‹ฐํ‹ฐ ์กฐํšŒ
List<DwgEntity> entities = doc.entities();
for (DwgEntity e : entities) {
    System.out.println(e.objectType() + " at handle 0x" + Long.toHexString(e.handle()));
}

v0.1.0 ๋ฒ„์ „ ์ง€์› ํ˜„ํ™ฉ

๋ฒ„์ „ ์ฝ๊ธฐ ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ ํŒŒ์ผ ์„ฑ๊ณต๋ฅ  ์ตœ๋Œ€ ์—”ํ‹ฐํ‹ฐ/ํŒŒ์ผ
R13 ๐ŸŸก ๊ธฐ๋ณธ ๐ŸŸก ํด๋ฐฑ ์ผ๋ถ€ -
R14 ๐ŸŸก ๊ธฐ๋ณธ ๐ŸŸก ํด๋ฐฑ ์ผ๋ถ€ -
R2000 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 500+
R2004 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 2,500+
R2007 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 600+
R2010 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 300+
R2013 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 500+
R2018 ๐ŸŸข ์™„์„ฑ ๐ŸŸข ์™„์„ฑ 100% 400+

๋ฒ”๋ก€: ๐ŸŸข ์™„์„ฑ / ๐ŸŸก ๊ธฐ๋ณธ/ํด๋ฐฑ / โŒ ๋ฏธ๊ตฌํ˜„

์ง€์› ์—”ํ‹ฐํ‹ฐ ํƒ€์ž… (74๊ฐœ)

๊ธฐํ•˜ํ•™ ์—”ํ‹ฐํ‹ฐ (30๊ฐœ)

  • 2D: LINE, CIRCLE, ARC, POLYLINE, LWPOLYLINE, SPLINE, ELLIPSE, TEXT, MTEXT
  • 3D: 3DFACE, 3DPOLYLINE, REGION, SOLID, TRACE, SHAPE, MULTILEADER, ARC_DIMENSION
  • ํŠน์ˆ˜: HATCH, IMAGE, UNDERLAY, WIPEOUT, SURFACE, MESH, MLINE

๊ฐ์ฒด ๋ฐ ์ œ์–ด (44๊ฐœ)

  • LAYER, LINETYPE, STYLE, DIMSTYLE, APPID, UCS, VIEW, VPORT
  • ์ œ์–ด ๊ฐ์ฒด: BLOCK_CONTROL, ENDBLK, INSERT
  • ์†์„ฑ: XREF, ATTRIB, ATTDEF
  • ํ…Œ์ด๋ธ”: TABLE, SCALE_LIST, TABLESTYLE, CELLSTYLE, PLOTSTYLE
  • ๋ฐ์ดํ„ฐ: DICTIONARY, DICTIONARYVAR, LAYOUT, MATERIAL, DATASOURCE
  • ๊ธฐํƒ€: TOLERANCE, LEADER, OLE2FRAME, PROXY, PERSSUBENTMANAGER

๋‹จ๊ณ„๋ณ„ ํŒŒ์‹ฑ ํ๋ฆ„

[ํŒŒ์ผ ์ฝ๊ธฐ] โ†’ [๋ฒ„์ „ ๊ฐ์ง€] โ†’ [ํ—ค๋” ํŒŒ์‹ฑ] โ†’ [์„น์…˜ ์ถ”์ถœ] 
    โ†“              โ†“               โ†“            โ†“
 1๋‹จ๊ณ„         2๋‹จ๊ณ„          3๋‹จ๊ณ„        4๋‹จ๊ณ„

[์„น์…˜ ํŒŒ์‹ฑ] โ†’ [๊ฐ์ฒด ์ƒ์„ฑ] โ†’ [DwgDocument] โ†’ [API ์‚ฌ์šฉ]
    โ†“              โ†“            โ†“            โ†“
  5๋‹จ๊ณ„         5๋‹จ๊ณ„        6๋‹จ๊ณ„        ์ตœ์ข…

๊ฐ ๋‹จ๊ณ„๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค (DwgParsingStageTest ์ฐธ๊ณ ).

์ฃผ์š” ํด๋ž˜์Šค

API ๊ณ„์ธต

  • DwgReader โ€” ํŒŒ์ผ ์ฝ๊ธฐ
  • DwgWriter โ€” ํŒŒ์ผ ์“ฐ๊ธฐ
  • DwgDocument โ€” ํŒŒ์‹ฑ๋œ ๋ฌธ์„œ

ํ•ต์‹ฌ ๋„๋ฉ”์ธ

  • DwgObject โ€” ๋ชจ๋“  ๊ฐ์ฒด์˜ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค
  • DwgEntity โ€” ๋„ํ˜• ์—”ํ‹ฐํ‹ฐ
  • DwgVersion โ€” ๋ฒ„์ „ ์—ด๊ฑฐ ๋ฐ ๋ฒ„์ „ ๋น„๊ต
  • HeaderVariables โ€” ํ—ค๋” ๋ณ€์ˆ˜ (500+๊ฐœ)
  • HandleRegistry โ€” ํ•ธ๋“ค โ†’ ์˜คํ”„์…‹ ๋งคํ•‘

์ €์ˆ˜์ค€ I/O

  • BitStreamReader โ€” ๋น„ํŠธ ๋‹จ์œ„ ์ฝ๊ธฐ
  • BitStreamWriter โ€” ๋น„ํŠธ ๋‹จ์œ„ ์“ฐ๊ธฐ
  • ByteBufferBitInput โ€” ๋ฒ„ํผ ๊ธฐ๋ฐ˜ ์ž…๋ ฅ
  • ByteBufferBitOutput โ€” ๋ฒ„ํผ ๊ธฐ๋ฐ˜ ์ถœ๋ ฅ

๋ผ์ด์„ ์Šค

MIT License

์ฐธ๊ณ  ์ž๋ฃŒ

  • OpenDesign Specification โ€” ๊ณต์‹ ์ŠคํŽ™
  • AutoCAD DWG ํฌ๋งท ์œ„ํ‚ค
  • Autodesk ๊ณต์‹ ๋ฌธ์„œ

๊ธฐ์—ฌ

์ด์Šˆ ๋ฐ PR์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํŒ€

  • Initial design: ebandal
  • Contributors: ์ปค๋ฎค๋‹ˆํ‹ฐ (ํ˜„์žฌ)

About

Read DWG file format

Resources

Stars

8 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages