DXF: split entities by layers according to their line styles.
parent
d88149e705
commit
f88cb1195b
|
@ -43,12 +43,30 @@ public:
|
||||||
|
|
||||||
virtual void writeLayers() {
|
virtual void writeLayers() {
|
||||||
DRW_Layer layer;
|
DRW_Layer layer;
|
||||||
layer.name = "entities";
|
|
||||||
dxf->writeLayer(&layer);
|
|
||||||
layer.name = "dimensions";
|
layer.name = "dimensions";
|
||||||
dxf->writeLayer(&layer);
|
dxf->writeLayer(&layer);
|
||||||
layer.name = "text";
|
layer.name = "text";
|
||||||
dxf->writeLayer(&layer);
|
dxf->writeLayer(&layer);
|
||||||
|
|
||||||
|
for(int i = 0; i < SK.style.n; i++) {
|
||||||
|
Style *s = &SK.style.elem[i];
|
||||||
|
|
||||||
|
// check for using
|
||||||
|
bool used = false;
|
||||||
|
for(DxfFileWriter::BezierPath &path : writer->paths) {
|
||||||
|
for(SBezier *sb : path.beziers) {
|
||||||
|
if(sb->auxA != s->h.v) continue;
|
||||||
|
used = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(used) break;
|
||||||
|
}
|
||||||
|
if(!used) continue;
|
||||||
|
|
||||||
|
layer.name = s->DescriptionString();
|
||||||
|
dxf->writeLayer(&layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *lineTypeName(int stippleType) {
|
const char *lineTypeName(int stippleType) {
|
||||||
|
@ -231,7 +249,7 @@ public:
|
||||||
hStyle hs = { (uint32_t)sb.auxA };
|
hStyle hs = { (uint32_t)sb.auxA };
|
||||||
Style *s = Style::Get(hs);
|
Style *s = Style::Get(hs);
|
||||||
entity->color24 = currentColor;
|
entity->color24 = currentColor;
|
||||||
entity->layer = "entities";
|
entity->layer = s->DescriptionString();
|
||||||
entity->lineType = lineTypeName(s->stippleType);
|
entity->lineType = lineTypeName(s->stippleType);
|
||||||
entity->ltypeScale = Style::StippleScaleMm(s->h);
|
entity->ltypeScale = Style::StippleScaleMm(s->h);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue