public void Set(DXFStructure dxf, ARC item, float ScaleX = 1, float ScaleY = 1) { var goLayer = GoView.Content.GetLayer(item.C8); if (goLayer != null) { lr.material = goLayer.LayerMaterial; ZoomAdjust = goLayer.ZoomAdjust; } float R = (float)item.C40; Diameter = R * 2; float nd = 0;//绘制的角度总数 if (item.C51 > item.C50) nd = (float)(item.C51 - item.C50); else nd = (float)(item.C51 + 360 - item.C50); //计算一个圆弧需要多少线条 float ndB=nd / 360;//圆弧占用圆的比例 int resolution = (int)(item.C40 / OptimizingLevel * ndB); if (resolution > (int)(MaxResolution * ndB)) resolution = (int)(MaxResolution * ndB); if (resolution < (int)(MinResolution * ndB)) resolution = (int)(MinResolution * ndB); lr.SetVertexCount(resolution + 1); for (int i = 0; i < resolution; i++) { var ii = (float)(i * nd / (float)resolution); ii += (float)item.C50; if (ii > 360) ii -= 360; lr.SetPosition(i, new Vector3((R * Mathf.Cos(2 * Mathf.PI / 360 * ii) + (float)item.C10) * ScaleX, (R * Mathf.Sin(2 * Mathf.PI / 360 * ii) + (float)item.C20) * ScaleY, 0)); } lr.SetPosition(resolution, new Vector3((R * Mathf.Cos(2 * Mathf.PI / 360 * (float)item.C51) + (float)item.C10) * ScaleX, (R * Mathf.Sin(2 * Mathf.PI / 360 * (float)item.C51) + (float)item.C20) * ScaleY, 0)); this.gameObject.isStatic = true; }
protected override Property ReadSonClass(Property prop) { if (prop.Code == 0 && prop.Value != "ENDBLK") { switch (prop.Value) { //case "C3DFACE": //case "C3DSOLID": //case "ACAD_PROXY_ENTITY": case "ARC": var arc = new ARC(DXFData, prop); ARCList.Add(arc); return(arc.ReadProperties()); //case "ATTDEF": //case "ATTRIB": //case "BODY": case "CIRCLE": var circle = new CIRCLE(DXFData, prop); CIRCLEList.Add(circle); return(circle.ReadProperties()); //case "DIMENSION": case "ELLIPSE": var ellipes = new ELLIPSE(DXFData, prop); ELLIPSEList.Add(ellipes); return(ellipes.ReadProperties()); //case "HATCH": //case "HELIX": //case "IMAGE": case "INSERT": var insert = new INSERT(DXFData, prop); INSERTList.Add(insert); return(insert.ReadProperties()); //case "LEADER": //case "LIGHT": case "LINE": var line = new LINE(DXFData, prop); LINEList.Add(line); return(line.ReadProperties()); case "LWPOLYLINE": var lwpolyline = new LWPOLYLINE(DXFData, prop); LWPOLYLINEList.Add(lwpolyline); return(lwpolyline.ReadProperties()); //case "MESH": //case "MLINE": //case "MLEADERSTYLE": //case "MLEADER": //case "MTEXT": //case "OLEFRAME": //case "OLE2FRAME": //case "POINT": //case "POLYLINE": //case "RAY": //case "REGION": //case "SECTION": //case "SEQEND": //case "SHAPE": //case "SOLID": //case "SPLINE": //case "SUN": //case "SURFACE": //case "TABLE": case "TEXT": var text = new TEXT(DXFData, prop); TEXTList.Add(text); return(text.ReadProperties()); //case "TOLERANCE": //case "TRACE": //case "UNDERLAY": //case "VERTEX": //case "VIEWPORT": //case "WIPEOUT": //case "XLINE": default: return(CreateSonClass(new ENTITIE(DXFData, prop))); } } else { return(base.ReadSonClass(prop)); } }
protected override Property ReadSonClass(Property prop) { if (prop.Code == 0 && prop.Value != "ENDSEC") { switch (prop.Value) { //case "C3DFACE": //case "C3DSOLID": //case "ACAD_PROXY_ENTITY": case "ARC": var arc = new ARC(DXFData, prop); ARCList.Add(arc); return arc.ReadProperties(); //case "ATTDEF": //case "ATTRIB": //case "BODY": case "CIRCLE": var circle = new CIRCLE(DXFData, prop); CIRCLEList.Add(circle); return circle.ReadProperties(); //case "DIMENSION": case "ELLIPSE": var ellipes = new ELLIPSE(DXFData, prop); ELLIPSEList.Add(ellipes); return ellipes.ReadProperties(); //case "HATCH": //case "HELIX": //case "IMAGE": case "INSERT": var insert = new INSERT(DXFData, prop); INSERTList.Add(insert); return insert.ReadProperties(); //case "LEADER": //case "LIGHT": case "LINE": var line = new LINE(DXFData, prop); LINEList.Add(line); return line.ReadProperties(); case "LWPOLYLINE": var lwpolyline = new LWPOLYLINE(DXFData, prop); LWPOLYLINEList.Add(lwpolyline); return lwpolyline.ReadProperties(); //case "MESH": //case "MLINE": //case "MLEADERSTYLE": //case "MLEADER": //case "MTEXT": //case "OLEFRAME": //case "OLE2FRAME": //case "POINT": //case "POLYLINE": //case "RAY": //case "REGION": //case "SECTION": //case "SEQEND": //case "SHAPE": //case "SOLID": //case "SPLINE": //case "SUN": //case "SURFACE": //case "TABLE": case "TEXT": var text = new TEXT(DXFData, prop); TEXTList.Add(text); return text.ReadProperties(); //case "TOLERANCE": //case "TRACE": //case "UNDERLAY": //case "VERTEX": //case "VIEWPORT": //case "WIPEOUT": //case "XLINE": default: return CreateSonClass(new ENTITIE(DXFData, prop)); } } else { return base.ReadSonClass(prop); } }