private static InsertTransform <T> Flatten <T>(Insert insert, T x, netDxf.Units.DrawingUnits baseUnits, bool skipScale, bool skipPos) where T : netDxf.DxfObject { var blockRecordUnits = insert.Block.Record.Units; var unitFactorScale = skipScale ? 1 : (float)netDxf.Units.UnitHelper.ConversionFactor(blockRecordUnits, baseUnits); var scale = skipScale ? new System.Numerics.Vector2(1, 1) : insert.Scale.ToGeometryVector(); var pos = skipPos ? new System.Numerics.Vector2(0, 0) : insert.Position.ToGeometryVector(); return(new InsertTransform <T>() { Value = x, Transform = v => (v * scale * unitFactorScale) + pos, Debug_TransformStr = string.Format("(({0}) * s{1} * {3}) + p{2}", "POS", scale, pos, unitFactorScale), InsertLevels = new List <Insert>() { insert }, Inner = null, }); }
private static InsertData GetInsertItems(Insert insert, netDxf.Units.DrawingUnits baseUnits) { if (insert.Block.Name.StartsWith("tutcod")) { #pragma warning disable CS0219 // Variable is assigned but its value is never used var breakdance = true; #pragma warning restore CS0219 // Variable is assigned but its value is never used } var all = insert.Block.Entities; var unitsOfContent = insert.Block.Record.Units; var inserts = all.Where(x => x.CodeName == "INSERT").Cast <Insert>().ToList(); var insertsData = inserts.Select(x => GetInsertItems(x, unitsOfContent)).ToList(); var attrs = insert.Attributes.ToList(); var attrDefs = all.Where(x => x.CodeName == "ATTDEF").Cast <AttributeDefinition>().Where(x => x.Flags == AttributeFlags.Constant).ToList(); var texts = all.Where(x => x.CodeName == "TEXT").Cast <Text>().ToList(); var mtexts = all.Where(x => x.CodeName == "MTEXT").Cast <MText>().ToList(); var lines = all.Where(x => x.CodeName == "LINE").Cast <netDxf.Entities.Line>().ToList(); var circles = all.Where(x => x.CodeName == "CIRCLE").Cast <netDxf.Entities.Circle>().ToList(); // Default Units is Inches if (baseUnits == netDxf.Units.DrawingUnits.Unitless) { baseUnits = netDxf.Units.DrawingUnits.Inches; } return(new InsertData() { BaseUnits = baseUnits, Insert = insert, Inserts = insertsData, Attributes = attrs, AttributeDefinitions = attrDefs, Texts = texts, MTexts = mtexts, Lines = lines, Circles = circles, }); }
private static InsertTransform <T> Flatten <T>(Insert insert, InsertTransform <T> inner, netDxf.Units.DrawingUnits baseUnits) where T : netDxf.DxfObject { var blockRecordUnits = insert.Block.Record.Units; var unitFactorScale = (float)netDxf.Units.UnitHelper.ConversionFactor(blockRecordUnits, baseUnits); var scale = insert.Scale.ToGeometryVector(); var pos = insert.Position.ToGeometryVector(); return(new InsertTransform <T>() { Value = inner.Value, Transform = v => (inner.Transform(v) * scale * unitFactorScale) + pos, Debug_TransformStr = string.Format("(({0}) * s{1} * {3}) + p{2}", inner.Debug_TransformStr, scale, pos, unitFactorScale), InsertLevels = new Insert[] { insert }.Concat(inner.InsertLevels).ToList(), Inner = inner, }); }