Skip to content

Commit

Permalink
fix(block): append inserts withouth attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
aichingert committed Jul 15, 2024
1 parent 898a26b commit 9151c1a
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 23 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*.dll
*.so
*.dylib
*.idea

# Test binary, built with `go test -c`
*.test
Expand Down
7 changes: 4 additions & 3 deletions pkg/parser/entities.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,17 +255,17 @@ func ParseInsert(r *Reader, entities entity.Entities) error {
return r.Err()
}

Att:
for insert.AttributesFollow == 1 && r.ScanDxfLine() {
switch r.DxfLine().Line {
case "ATTRIB":
if ParseAttrib(r, insert) != nil {
return r.Err()
}
case "SEQEND":
// marks end of insert
// marks end of attributes
ParseAcDbEntity(r, insert.Entity)
entities.AppendInsert(insert)
return r.Err()
break Att
default:
log.Fatal("[INSERT(", Line, ")] invalid subclass marker ", r.DxfLine().Line)
}
Expand All @@ -275,6 +275,7 @@ func ParseInsert(r *Reader, entities entity.Entities) error {
}
}

entities.AppendInsert(insert)
return r.Err()
}

Expand Down
21 changes: 11 additions & 10 deletions pkg/parser/parser.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package parser

import (
"log"

"github.com/aichingert/dxf/pkg/drawing"
)
import "github.com/aichingert/dxf/pkg/drawing"

var (
Handle uint64 = 0
Expand Down Expand Up @@ -44,14 +40,19 @@ func FromFile(filename string) (*drawing.Dxf, error) {
switch section.Line {
case "HEADER":
Wrap(ParseHeader, reader, dxf)
/*
case "TABLES":
Wrap(ParseTables, reader, dxf)
*/
case "BLOCKS":
Wrap(ParseBlocks, reader, dxf)
case "ENTITIES":
if err := ParseEntities(reader, dxf.EntitiesData); err != nil {
return dxf, err
}
/*
case "ENTITIES":
if err := ParseEntities(reader, dxf.EntitiesData); err != nil {
return dxf, err
}
*/
default:
log.Println("WARNING: section not implemented: ", section)
reader.SkipToLabel("ENDSEC")
}
case "EOF":
Expand Down
13 changes: 3 additions & 10 deletions pkg/parser/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,17 +252,10 @@ func (r *Reader) Err() error {
}

func (r *Reader) SkipToLabel(label string) error {
for {
line, err := r.ConsumeDxfLine()

if err != nil {
return err
}

if line.Line == label {
return nil
}
for r.ScanDxfLine() && r.DxfLine().Line != label {
}

return r.Err()
}

func (r *Reader) PeekCode() (uint16, error) {
Expand Down
60 changes: 60 additions & 0 deletions pkg/parser/table.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package parser

import (
"log"

"github.com/aichingert/dxf/pkg/drawing"
_ "github.com/aichingert/dxf/pkg/entity"
)

func ParseTables(r *Reader, dxf *drawing.Dxf) error {
for r.ScanDxfLine() {
switch r.DxfLine().Line {
case "TABLE":
Wrap(parseTable, r, dxf)
case "ENDSEC":
return r.Err()
default:
log.Println("Table(", Line, "): ", r.DxfLine().Line)
return r.Err()
}

if WrappedErr != nil {
return WrappedErr
}
}

return r.Err()
}

func parseTable(r *Reader, dxf *drawing.Dxf) error {

for r.ScanDxfLine() {
switch r.DxfLine().Line {
case "VPORT":
fallthrough
case "LTYPE":
fallthrough
case "LAYER":
fallthrough
case "STYLE":
fallthrough
case "VIEW":
fallthrough
case "UCS":
fallthrough
case "APPID":
fallthrough
case "DIMSTYLE":
r.SkipToLabel("ENDTAB")
return r.Err()

log.Fatal(r.DxfLine())
default:
log.Fatal(Line, r.DxfLine())
}

}

return r.Err()
}

0 comments on commit 9151c1a

Please sign in to comment.