protected void readHatch(Hatch hatch, CadHatchTemplate template) { //while (this._reader.LastDxfCode != DxfCode.Start) //{ // this._reader.ReadNext(); //} //this.readMapped<Hatch>(template.CadObject, template); }
protected CadEntityTemplate readEntity() { CadEntityTemplate template = null; switch (this._reader.LastValueAsString) { case DxfFileToken.EntityAttribute: template = new DwgTextEntityTemplate(new AttributeEntity()); break; case DxfFileToken.EntityAttributeDefinition: template = new DwgTextEntityTemplate(new AttributeDefinition()); break; case DxfFileToken.EntityArc: template = new CadEntityTemplate(new Arc()); break; case DxfFileToken.EntityCircle: template = new CadEntityTemplate(new Circle()); break; case DxfFileToken.EntityEllipse: template = new CadEntityTemplate(new Ellipse()); break; case DxfFileToken.EntityLine: template = new CadEntityTemplate(new Line()); break; //case DxfFileToken.EntityLwPolyline: // //template = new CadEntityTemplate(new Line()); // break; case DxfFileToken.EntityHatch: template = new CadHatchTemplate(new Hatch()); break; case DxfFileToken.EntityInsert: template = new DwgInsertTemplate(new Insert()); break; case DxfFileToken.EntityMText: template = new DwgTextEntityTemplate(new MText()); break; case DxfFileToken.EntityMLine: template = new CadMLineTemplate(new MLine()); break; case DxfFileToken.EntityPoint: template = new CadEntityTemplate(new Point()); break; case DxfFileToken.EntityPolyline: template = new CadPolyLineTemplate(); break; case DxfFileToken.EntityRay: template = new CadEntityTemplate(new Ray()); break; case DxfFileToken.EntitySolid: template = new CadEntityTemplate(new Solid()); break; case DxfFileToken.EntityText: template = new CadEntityTemplate(new TextEntity()); break; case DxfFileToken.EntityVertex: template = new CadEntityTemplate(new Vertex2D()); break; case DxfFileToken.EntityViewport: template = new DwgViewportTemplate(new Viewport()); break; case DxfFileToken.EntityXline: template = new CadEntityTemplate(new XLine()); break; default: this._notification?.Invoke(null, new NotificationEventArgs($"Entity not implemented: {this._reader.LastValueAsString}")); do { this._reader.ReadNext(); }while (this._reader.LastDxfCode != DxfCode.Start); return(null); } //Jump the 0 marker this._reader.ReadNext(); this.readCommonObjectData(template); while (this._reader.LastDxfCode == DxfCode.Subclass) { switch (this._reader.LastValueAsString) { case DxfSubclassMarker.Attribute: this.readMapped <AttributeEntity>(template.CadObject, template); break; case DxfSubclassMarker.AttributeDefinition: this.readMapped <AttributeDefinition>(template.CadObject, template); break; case DxfSubclassMarker.Arc: this.readMapped <Arc>(template.CadObject, template); break; case DxfSubclassMarker.Circle: this.readMapped <Circle>(template.CadObject, template); break; case DxfSubclassMarker.Ellipse: this.readMapped <Ellipse>(template.CadObject, template); break; case DxfSubclassMarker.Entity: this.readMapped <Entity>(template.CadObject, template); break; //case DxfSubclassMarker.Hatch: // this.readHatch((Hatch)template.CadObject, (CadHatchTemplate)template); // break; case DxfSubclassMarker.Insert: this.readMapped <Insert>(template.CadObject, template); break; case DxfSubclassMarker.Line: this.readMapped <Line>(template.CadObject, template); break; case DxfSubclassMarker.MLine: this.readMapped <MLine>(template.CadObject, template); break; case DxfSubclassMarker.MText: this.readMapped <MText>(template.CadObject, template); break; case DxfSubclassMarker.Point: this.readMapped <Point>(template.CadObject, template); break; //case DxfSubclassMarker.PolyfaceMesh: // this.readMapped<PolyLine2D>(template.CadObject, template); // break; case DxfSubclassMarker.Polyline: (template as CadPolyLineTemplate).SetPolyLineObject(new Polyline2D()); this.readMapped <Polyline2D>(template.CadObject, template); break; case DxfSubclassMarker.Polyline3d: (template as CadPolyLineTemplate).SetPolyLineObject(new Polyline3D()); this.readMapped <Polyline3D>(template.CadObject, template); break; case DxfSubclassMarker.Polyline3dVertex: this.readMapped <Vertex3D>(template.CadObject, template); break; case DxfSubclassMarker.Ray: this.readMapped <Ray>(template.CadObject, template); break; case DxfSubclassMarker.Text: this.readMapped <TextEntity>(template.CadObject, template); break; case DxfSubclassMarker.Trace: this.readMapped <Solid>(template.CadObject, template); break; case DxfSubclassMarker.Vertex: this.readMapped <Vertex>(template.CadObject, template); break; case DxfSubclassMarker.Viewport: this.readMapped <Viewport>(template.CadObject, template); break; case DxfSubclassMarker.XLine: this.readMapped <XLine>(template.CadObject, template); break; default: this._notification?.Invoke(null, new NotificationEventArgs($"Unhandeled dxf entity subclass {this._reader.LastValueAsString}")); while (this._reader.LastDxfCode != DxfCode.Start) { this._reader.ReadNext(); } break; } } return(template); }