本文整理汇总了C#中netDxf.DxfDocument.AddEntity方法的典型用法代码示例。如果您正苦于以下问题:C# DxfDocument.AddEntity方法的具体用法?C# DxfDocument.AddEntity怎么用?C# DxfDocument.AddEntity使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类netDxf.DxfDocument
的用法示例。
在下文中一共展示了DxfDocument.AddEntity方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ModifyingXData
public static void ModifyingXData()
{
Line line = new Line(Vector2.Zero, Vector2.UnitX);
ApplicationRegistry appReg = new ApplicationRegistry("netDxf");
XData xdata = new XData(appReg);
xdata.XDataRecord.Add(new XDataRecord(XDataCode.String, "Length"));
line.XData.Add(xdata);
DxfDocument doc = new DxfDocument();
doc.AddEntity(line);
// modifying existing extended data
line.XData[appReg.Name].XDataRecord.Add(new XDataRecord(XDataCode.Real, Vector3.Distance(line.StartPoint, line.EndPoint)));
// adding new extended data entry to an existing entity
ApplicationRegistry appReg2 = new ApplicationRegistry("newXData");
XData xdata2 = new XData(appReg2);
xdata2.XDataRecord.Add(new XDataRecord(XDataCode.String, "XData entries"));
line.XData.Add(xdata2);
Debug.Assert(ReferenceEquals(line.XData[appReg2.Name].ApplicationRegistry, doc.ApplicationRegistries[appReg2.Name]));
// deleting existing extended data
line.XData.Remove(appReg.Name);
// we can also change the name of the application registry name
doc.ApplicationRegistries["newXData"].Name = "netDxfRenamed";
doc.Save("xData.dxf");
doc = DxfDocument.Load("xData.dxf");
}
示例2: Draw
public static void Draw(DxfDocument dxf, Location location)
{
Vector3f v1 = new Vector3f(location.X - 2.0f, location.Y + 4.0f, location.Z);
Vector3f v2 = new Vector3f(location.X + 2.0f, location.Y + 4.0f, location.Z);
Vector3f v0=new Vector3f(location.X,location.Y,location.Z);
Layer layer = new Layer("line");
Line line10 = new Line(v0, v1);
line10.Layer = layer;
dxf.AddEntity(line10);
Line line20 = new Line(v0, v2);
line20.Layer = layer;
dxf.AddEntity(line20);
}
示例3: Draw
/// <summary>
/// 绘制风扇
/// </summary>
/// <param name="dxf"></param>
/// <param name="startPoint">风扇起点,如果为横置,由左向右;如果为竖置,由下到上</param>
/// <param name="endPoint">风扇终点,如果为横置,由左向右;如果为竖置,由下到上</param>
/// <param name="pointerLocation">箭头位置,默认=0为无,=1代表箭头在中间,=2代表箭头在底部</param>
public static void Draw(DxfDocument dxf, Vector3f startPoint, Vector3f endPoint,int pointerLocation=0)
{
Layer layer = new Layer("line");
Line line = new Line(startPoint, endPoint);
line.Layer = layer;
dxf.AddEntity(line);
//如果为横置
if (startPoint.Y == endPoint.Y)
{
float segment = (endPoint.X - startPoint.X) / 4;
Slash.Draw(dxf, new Location(startPoint.X + segment, startPoint.Y, startPoint.Z));
Slash.Draw(dxf, new Location(startPoint.X + 2 * segment, startPoint.Y, startPoint.Z));
Slash.Draw(dxf, new Location(startPoint.X + 3 * segment, startPoint.Y, startPoint.Z));
}
//如果为竖置
else if (startPoint.X == endPoint.X)
{
float segment = (endPoint.Y - startPoint.Y) / 5;
Slash.Draw(dxf, new Location(startPoint.X, startPoint.Y + segment, startPoint.Z));
Slash.Draw(dxf, new Location(startPoint.X, startPoint.Y + 2 * segment, startPoint.Z));
Slash.Draw(dxf, new Location(startPoint.X, startPoint.Y + 3 * segment, startPoint.Z));
Slash.Draw(dxf, new Location(startPoint.X, startPoint.Y + 4 * segment, startPoint.Z));
if (pointerLocation == 1)
{
LinePointer.Draw(dxf,new Location(startPoint.X,(startPoint.Y+endPoint.Y)/2,startPoint.Z));
}
else if(pointerLocation==2)
{
LinePointer.Draw(dxf, new Location(startPoint.X, startPoint.Y, startPoint.Z));
}
}
}
示例4: Draw
public static void Draw(DxfDocument dxf, Location location,List<string> configurations)
{
Vector3f confStrVector3f = new Vector3f(location.X + 5.0f, location.Y - 5.0f, location.Z);
TextStyle style = new TextStyle("True type font", "Arial.ttf");
Text text1 = new Text("CONFIGURATION: NOTE: Assembly drawing for overall dimesions, actual door size and handle position may vary",
confStrVector3f, 2.0f, style);
Layer layer = new Layer("text");
text1.Layer = layer;
//text1.Layer.Color.Index = 8;
text1.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(text1);
for (int i = 0; i < configurations.Count(); i++)
{
Vector3f confVector3f = new Vector3f(location.X+10.0f, location.Y - 5.0f * (i + 2), location.Z);
Text text = new Text(configurations[i], confVector3f, 2.0f, style);
text.Layer = layer;
//text.Layer.Color.Index = 8;
text.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(text);
}
}
示例5: Draw
/// <summary>
/// 风向绘制
/// </summary>
/// <param name="dxf"></param>
/// <param name="location"></param>
/// <param name="isRight"></param>
public static void Draw(DxfDocument dxf, Location location, bool isRight)
{
float factor = 0.5f;
Vector3f v1 = new Vector3f();
Vector3f v2 = new Vector3f();
Vector3f v3 = new Vector3f();
Vector3f v4 = new Vector3f();
Vector3f v5 = new Vector3f();
Vector3f v6 = new Vector3f();
Vector3f v7 = new Vector3f();
if (isRight)
{
v1 = new Vector3f(10*factor + location.X, location.Y, location.Z);
v2 = new Vector3f(location.X, location.Y + 10 * factor, location.Z);
v3 = new Vector3f(location.X + 10 * factor, location.Y + 10 * factor, location.Z);
v4 = new Vector3f(location.X + 20 * factor, location.Y + 15 * factor, location.Z);
v5 = new Vector3f(location.X, location.Y + 20 * factor, location.Z);
v6 = new Vector3f(location.X + 10 * factor, location.Y + 20 * factor, location.Z);
v7 = new Vector3f(location.X + 10 * factor, location.Y + 30 * factor, location.Z);
}
else
{
v1 = new Vector3f(10 * factor + location.X, location.Y, location.Z);
v2 = new Vector3f(location.X + 20 * factor, location.Y + 10 * factor, location.Z);
v3 = new Vector3f(location.X + 10 * factor, location.Y + 10 * factor, location.Z);
v4 = new Vector3f(location.X, location.Y + 15 * factor, location.Z);
v5 = new Vector3f(location.X + 20 * factor, location.Y + 20 * factor, location.Z);
v6 = new Vector3f(location.X + 10 * factor, location.Y + 20 * factor, location.Z);
v7 = new Vector3f(location.X + 10 * factor, location.Y + 30 * factor, location.Z);
}
Layer layer = new Layer("line");
Line line23 = new Line(v2, v3);
line23.Layer = layer;
dxf.AddEntity(line23);
Line line56 = new Line(v5, v6);
line56.Layer = layer;
dxf.AddEntity(line56);
Line line14 = new Line(v1, v4);
line14.Layer = layer;
dxf.AddEntity(line14);
Line line74 = new Line(v7, v4);
line74.Layer = layer;
dxf.AddEntity(line74);
Line line25 = new Line(v2, v5);
line25.Layer = layer;
dxf.AddEntity(line25);
Line line71 = new Line(v7, v1);
line71.Layer = layer;
dxf.AddEntity(line71);
}
示例6: SolidEntity
private static void SolidEntity()
{
// The solid vertexes are expressed in OCS (object coordinate system)
// Now they are stored as Vector2 to force all vertexes to lay on a plane, this is similar as how the LwPolyline works.
// The Z coordinate is controlled by the elevation property of the Solid.
Vector2 a = new Vector2(-1, -1);
Vector2 b = new Vector2(1, -1);
Vector2 c = new Vector2(-1, 1);
Vector2 d = new Vector2(1, 1);
Solid solid = new Solid(a, b, c, d);
solid.Normal = new Vector3(1, 1, 0);
solid.Elevation = 2;
DxfDocument doc = new DxfDocument();
doc.AddEntity(solid);
doc.Save("SolidEntity.dxf");
}
示例7: doDXF
static void doDXF(List<Polyline3dVertex> vertexes, double[] x)
{
// create a dxf for those who want to "see" the calibration
DxfDocument dxf = new DxfDocument();
Polyline3d polyline = new Polyline3d(vertexes, true);
polyline.Layer = new Layer("polyline3d");
polyline.Layer.Color.Index = 24;
dxf.AddEntity(polyline);
var pnt = new Point(new Vector3f(-(float) x[0], -(float) x[1], -(float) x[2]));
pnt.Layer = new Layer("new offset");
pnt.Layer.Color.Index = 21;
dxf.AddEntity(pnt);
dxf.Save("magoffset.dxf", DxfVersion.AutoCad2000);
log.Info("dxf Done " + DateTime.Now);
}
示例8: Draw
/// <summary>
/// 绘制左下角区域的Section块
/// </summary>
/// <param name="dxf"></param>
/// <param name="location"></param>
/// <param name="configurations"></param>
public static void Draw(DxfDocument dxf, Location location,SectionEntity sectionEntity)
{
float factor=0.6f;
Vector3f v1 = new Vector3f(location.X, location.Y + 40.0f*factor, location.Z);
Vector3f v2 = new Vector3f(location.X + 50.0f * factor, location.Y + 40.0f * factor, location.Z);
Vector3f v3 = new Vector3f(location.X + 90.0f * factor, location.Y + 40.0f * factor, location.Z);
Vector3f v4 = new Vector3f(location.X + 140.0f * factor, location.Y + 40.0f * factor, location.Z);
Vector3f v5 = new Vector3f(location.X, location.Y + 50.0f * factor, location.Z);
Vector3f v6 = new Vector3f(location.X + 140.0f * factor, location.Y + 50.0f * factor, location.Z);
Vector3f v7 = new Vector3f(location.X, location.Y + 60.0f * factor, location.Z);
Vector3f v8 = new Vector3f(location.X + 140.0f * factor, location.Y + 60.0f * factor, location.Z);
Vector3f v9 = new Vector3f(location.X, location.Y + 70.0f * factor, location.Z);
Vector3f v10 = new Vector3f(location.X + 50.0f * factor, location.Y + 70.0f * factor, location.Z);
Vector3f v11 = new Vector3f(location.X + 90.0f * factor, location.Y + 70.0f * factor, location.Z);
Vector3f v12 = new Vector3f(location.X + 140.0f * factor, location.Y + 70.0f * factor, location.Z);
Layer layer = new Layer("line");
//横向四道
Line line14 = new Line(v1, v4);
line14.Layer = layer;
dxf.AddEntity(line14);
Line line56 = new Line(v5, v6);
line56.Layer = layer;
dxf.AddEntity(line56);
Line line78 = new Line(v7, v8);
line78.Layer = layer;
dxf.AddEntity(line78);
Line line912 = new Line(v9, v12);
line912.Layer = layer;
dxf.AddEntity(line912);
//纵向四道
Line line91 = new Line(v9, v1);
line91.Layer = layer;
dxf.AddEntity(line91);
Line line210 = new Line(v2, v10);
line210.Layer = layer;
dxf.AddEntity(line210);
Line line311 = new Line(v3, v11);
line311.Layer = layer;
dxf.AddEntity(line311);
Line line412 = new Line(v4, v12);
line412.Layer = layer;
dxf.AddEntity(line412);
TextStyle style = new TextStyle("True type font", "Arial.ttf");
Vector3f vt1 = new Vector3f(v1.X+1.0f, v1.Y+2.5f, v1.Z);
Text t1 = new Text("COIL", vt1, 2.0f, style);
t1.Layer = layer;
t1.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t1);
Vector3f vt2 = new Vector3f(v2.X + 1.0f, v2.Y + 2.5f, v2.Z);
Text t2 = new Text("CLF", vt2, 2.0f, style);
t2.Layer = layer;
t2.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t2);
Vector3f vt3 = new Vector3f(v3.X + 1.0f, v3.Y + 2.5f, v3.Z);
Text t3 = new Text(sectionEntity.CoolValue, vt3, 2.0f, style);
t3.Layer = layer;
t3.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t3);
Vector3f vt4 = new Vector3f(v5.X + 1.0f, v5.Y + 2.5f, v5.Z);
Text t4 = new Text("FILTER", vt4, 2.0f, style);
t4.Layer = layer;
t4.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t4);
Vector3f vt5 = new Vector3f(v2.X + 1.0f, v5.Y + 2.5f, v5.Z);
Text t5 = new Text("FTA", vt5, 2.0f, style);
t5.Layer = layer;
t5.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t5);
Vector3f vt6 = new Vector3f(v3.X + 1.0f, v5.Y + 2.5f, v5.Z);
Text t6 = new Text(sectionEntity.FilterValue, vt6, 2.0f, style);
t6.Layer = layer;
t6.Alignment = TextAlignment.TopLeft;
dxf.AddEntity(t6);
Vector3f vt7 = new Vector3f(v7.X + 1.0f, v7.Y + 2.5f, v7.Z);
Text t7 = new Text("SECTION", vt7, 2.0f, style);
//.........这里部分代码省略.........
示例9: DrawRectangleInternal
private void DrawRectangleInternal(DxfDocument doc, Layer layer, bool isFilled, bool isStroked, Test2d.BaseStyle style, ref Test2d.Rect2 rect)
{
double x = rect.X;
double y = rect.Y;
double w = rect.Width;
double h = rect.Height;
var dxfLine1 = CreateLine(x, y, x + w, y);
var dxfLine2 = CreateLine(x + w, y, x + w, y + h);
var dxfLine3 = CreateLine(x + w, y + h, x, y + h);
var dxfLine4 = CreateLine(x, y + h, x, y);
if (isFilled)
{
var fill = GetColor(style.Fill);
var fillTransparency = GetTransparency(style.Fill);
var bounds =
new List<HatchBoundaryPath>
{
new HatchBoundaryPath(
new List<EntityObject>
{
(Line)dxfLine1.Clone(),
(Line)dxfLine2.Clone(),
(Line)dxfLine3.Clone(),
(Line)dxfLine4.Clone()
})
};
var hatch = new Hatch(HatchPattern.Solid, bounds, false);
hatch.Layer = layer;
hatch.Color = fill;
hatch.Transparency.Value = fillTransparency;
doc.AddEntity(hatch);
}
if (isStroked)
{
var stroke = GetColor(style.Stroke);
var strokeTansparency = GetTransparency(style.Stroke);
var lineweight = ThicknessToLineweight(style.Thickness);
dxfLine1.Layer = layer;
dxfLine1.Color = stroke;
dxfLine1.Transparency.Value = strokeTansparency;
dxfLine1.Lineweight.Value = lineweight;
dxfLine2.Layer = layer;
dxfLine2.Color = stroke;
dxfLine2.Transparency.Value = strokeTansparency;
dxfLine2.Lineweight.Value = lineweight;
dxfLine3.Layer = layer;
dxfLine3.Color = stroke;
dxfLine3.Transparency.Value = strokeTansparency;
dxfLine3.Lineweight.Value = lineweight;
dxfLine4.Layer = layer;
dxfLine4.Color = stroke;
dxfLine4.Transparency.Value = strokeTansparency;
dxfLine4.Lineweight.Value = lineweight;
doc.AddEntity(dxfLine1);
doc.AddEntity(dxfLine2);
doc.AddEntity(dxfLine3);
doc.AddEntity(dxfLine4);
}
}
示例10: ModifyingGroups
public static void ModifyingGroups()
{
Line line1 = new Line(new Vector2(0, 0), new Vector2(100, 100));
line1.Color = AciColor.Red;
Line line2 = new Line(new Vector2(100, 0), new Vector2(200, 100));
line2.Color = AciColor.Yellow;
Line line3 = new Line(new Vector2(200, 0), new Vector2(300, 100));
line3.Color = AciColor.Magenta;
DxfDocument doc = new DxfDocument();
Block blk = new Block("MyBlock");
blk.Entities.Add(line1);
Insert ins = new Insert(blk);
doc.AddEntity(ins);
doc.AddEntity(line2);
Layout layout = new Layout("Layout1");
doc.Layouts.Add(layout);
doc.ActiveLayout = layout.Name;
doc.AddEntity(line3);
// group
Group group = new Group("MyGroup");
doc.Groups.Add(group);
// the Add method will also add the entities contained in a group to the document (in the active layout).
doc.Groups.Add(group);
// when the group belongs to a document, all entities must belong to the same document.
// even if it does not sound very useful, a group can contain entities that belongs to different layouts and even blocks.
group.Entities.Add(line1);
group.Entities.Add(line2);
group.Entities.Add(line3);
Line line4 = new Line(new Vector2(300, 0), new Vector2(400, 100));
line4.Color = AciColor.Blue;
// if a new entity, that does not belong to any document, is added to the group, it will be added to the group document active layout.
doc.ActiveLayout = Layout.ModelSpaceName;
group.Entities.Add(line4);
Line line5 = new Line(new Vector2(400, 0), new Vector2(500, 100));
line5.Color = AciColor.Green;
DxfDocument doc2 = new DxfDocument();
doc2.AddEntity(line5);
// this is illegal, line5 belongs to another document.
//group.Entities.Add(line5);
// you need to clone the entity before adding it to the group. This is also the common practice to copy entities between documents.
group.Entities.Add((EntityObject) line5.Clone());
// remember removing a group only deletes it from the collection not the entities
//doc.Groups.Remove(group);
doc.Save("group.dxf");
doc = DxfDocument.Load("group.dxf");
}
示例11: ModifyingDimensionGeometryAndStyle
public static void ModifyingDimensionGeometryAndStyle()
{
DimensionStyle style = new DimensionStyle("MyStyle");
Vector3 p1 = new Vector3(-2.5, 0, 0);
Vector3 p2 = new Vector3(2.5, 0, 0);
LinearDimension dim = new LinearDimension(p1, p2, 4, 0, style);
// This is illegal. Trying to rebuild the dimension block before it has been added to a document will throw an exception
//dim.RebuildBlock();
DxfDocument doc = new DxfDocument();
doc.AddEntity(dim);
// modifying the dimension style
dim.Style.DIMBLK = DimensionArrowhead.ArchitecturalTick;
// if we make any change to the dimension style, we need to manually call the RebuildBlock method to reflect the new changes
// since we will also modify the geometry of the dimension we will rebuild the block latter
//dim.RebuildBlock();
// the same kind of procedure needs to be done when modifying the geometry of a dimension
dim.FirstReferencePoint = new Vector3(-5.0, 0, 0);
dim.SecondReferencePoint = new Vector3(5.0, 0, 0);
// now that all necessary changes has been made, we will rebuild the block.
// this is an expensive operation, use it only when need it.
dim.Style.DIMBLK = DimensionArrowhead.Box;
dim.Style.DIMBLK = DimensionArrowhead.ArchitecturalTick;
Debug.Assert(ReferenceEquals(dim.Style.DIMBLK, doc.Blocks[dim.Style.DIMBLK.Name]), "References are not equal.");
Debug.Assert(ReferenceEquals(style.DIMBLK, doc.Blocks[style.DIMBLK.Name]), "References are not equal.");
//dim.Style.DIMBLK = null;
// VERY IMPORTANT: If any change is made to the dimension geometry and/or its style, we need to rebuild the drawing representation
// so the dimension block will reflect the new changes. This is only necessary for dimension that already belongs to a document.
// This process is automatically called when a new dimension is added to a document.
dim.Update();
Debug.Assert(ReferenceEquals(dim.Block, doc.Blocks[dim.Block.Name]));
doc.Save("dimension.dxf");
Test("dimension.dxf");
}
示例12: ModifyingMLineStyles
public static void ModifyingMLineStyles()
{
DxfDocument doc = new DxfDocument(DxfVersion.AutoCad2010);
doc.DrawingVariables.LtScale = 10;
List<Vector2> vertexes = new List<Vector2>
{
new Vector2(0, 0),
new Vector2(0, 150),
new Vector2(150, 150),
new Vector2(150, 0)
};
MLine mline = new MLine(vertexes);
mline.Scale = 20;
mline.Justification = MLineJustification.Zero;
MLineStyle style = new MLineStyle("MyStyle", "Personalized style.");
style.Elements.Add(new MLineStyleElement(0.25));
style.Elements.Add(new MLineStyleElement(-0.25));
// if we add new elements directly to the list we need to sort the list,
style.Elements.Sort();
style.Flags = MLineStyleFlags.EndInnerArcsCap | MLineStyleFlags.EndRoundCap | MLineStyleFlags.StartInnerArcsCap | MLineStyleFlags.StartRoundCap;
// AutoCad2000 dxf version does not support true colors for MLineStyle elements
style.Elements[0].Color = new AciColor(180, 230, 147);
doc.AddEntity(mline);
// change the multi line style after it has been added to the document
mline.Style = style;
Debug.Assert(ReferenceEquals(mline.Style, doc.MlineStyles[mline.Style.Name]), "Reference not equals.");
// VERY IMPORTANT: We have modified the MLine after setting its vertexes so we need to manually call this method.
// It is also necessary when manually editing the vertex distances.
mline.Update();
// the line type will be automatically added to the document
foreach (MLineStyleElement e in style.Elements)
{
// making changes after the MLineStyle has been added to the document
e.LineType = LineType.Dashed;
Debug.Assert(ReferenceEquals(e.LineType, doc.LineTypes[e.LineType.Name]), "Reference not equals.");
}
MLine copy = (MLine) mline.Clone();
copy.Scale = 100;
doc.AddEntity(copy);
// once the entity has been added to the document, changing its style requires that the new style is also present in the document.
copy.Style = doc.MlineStyles["standard"];
// VERY IMPORTANT: We have modified the MLine after setting its vertexes so we need to manually call this method.
// It is also necessary when manually editing the vertex distances.
copy.Update();
doc.Save("ModifyingMLineStyle.dxf");
Test("ModifyingMLineStyle.dxf");
}
示例13: ModifyingBlockProperties
public static void ModifyingBlockProperties()
{
DxfDocument doc = new DxfDocument();
doc.DrawingVariables.InsUnits = DrawingUnits.Centimeters;
Line existingLine = new Line(new Vector2(-10, 10), new Vector2(10, -10));
doc.AddEntity(existingLine);
AttributeDefinition attDef4 = new AttributeDefinition("MyAttribute4");
attDef4.Value = "MyValue4";
attDef4.Alignment = TextAlignment.TopCenter;
Block block = new Block("MyBlock", null, new List<AttributeDefinition>{attDef4});
block.Record.Units = DrawingUnits.Millimeters;
// this is incorrect we cannot add an entity that belongs to a document when the block does not belong to anyone.
//block.Entities.Add(existingLine);
doc.Blocks.Add(block);
// when the block and the entity that is being added belong to the same document, the entity will be removed from its current layout and added to the block
// you cannot add an entity that belongs to a different document or block. Clone it instead.
block.Entities.Add(existingLine);
// now we can modify the block properties even if it has been already added to the document
Line line = new Line(new Vector2(-10, -10), new Vector2(10, 10));
// when new entities that do not belong to anyone are added to an existing block, they will also be added to the document
block.Entities.Add(line);
DxfDocument doc2 = new DxfDocument();
Circle circle = new Circle(Vector2.Zero, 5);
doc2.AddEntity(circle);
// this is incorrect the circle already belongs to another document
//block.Entities.Add(circle);
// we need to clone it first
Circle circle2 = (Circle) circle.Clone();
circle2.Radius = 2.5;
block.Entities.Add(circle2);
//you could also remove circle2 from doc2 and add it to the block
doc2.RemoveEntity(circle);
block.Entities.Add(circle);
AttributeDefinition attDef = new AttributeDefinition("MyAttribute1");
attDef.Value = "MyValue1";
block.AttributeDefinitions.Add(attDef);
// the same that is applicable to entities is also true to attribute definitions
AttributeDefinition attDef2 = new AttributeDefinition("MyAttribute2");
attDef2.Value = "MyValue2";
attDef2.Alignment = TextAlignment.BaselineRight;
block.AttributeDefinitions.Add(attDef2);
Insert ins = new Insert(block);
doc.AddEntity(ins);
// if the insert has been added to a document, any new attribute definitions added to the block will not be reflected in the insert
// this mimics the behavior in AutoCad
AttributeDefinition attDef3 = new AttributeDefinition("MyAttribute3");
attDef3.Value = "MyValue3";
attDef3.Alignment = TextAlignment.TopCenter;
block.AttributeDefinitions.Add(attDef3);
ins.Rotation = 30;
// to update the insert attributes call the method Sync, this method will also call the method TransformAttributes
ins.Sync();
// the ins2 will have all three attributes
Insert ins2 = new Insert(block, new Vector2(20,0));
doc.AddEntity(ins2);
doc.Save("Test.dxf");
block.Name = "MyBlockRenamed";
doc.Save("BlockRename.dxf");
doc = Test("BlockRename.dxf");
}
示例14: ModifyingDocumentEntities
public static void ModifyingDocumentEntities()
{
Layer layer1 = new Layer("layer1");
Layer layer2 = new Layer("layer2");
Layer layer3 = new Layer("layer3");
LineType lineType1 = LineType.Dot;
LineType lineType2 = LineType.Dashed;
Line line = new Line(Vector2.Zero, Vector2.UnitX);
line.Layer = layer1;
line.LineType = lineType1;
DxfDocument doc = new DxfDocument();
doc.AddEntity(line);
// if the layer does not exist in the document it will be added automatically
line.Layer = layer2;
Debug.Assert(ReferenceEquals(line.Layer, doc.Layers[line.Layer.Name]), "References are not equal.");
// you can always add it first
doc.Layers.Add(layer3);
// layer3 is defined in the document
line.Layer = layer3;
Debug.Assert(ReferenceEquals(line.Layer, doc.Layers[line.Layer.Name]), "References are not equal.");
// same thing is applicable to line types
line.LineType = lineType2;
Debug.Assert(ReferenceEquals(line.LineType, doc.LineTypes[line.LineType.Name]), "References are not equal.");
doc.Save("entity.dxf");
// it is also possible to rename table objects
layer1.Name = "New layer1 name";
lineType1.Name = "DotDot";
// this operation is illegal, you cannot rename reserved table objects.
//doc.Layers[Layer.DefaultName].Name = "NewName";
doc.Save("test.dxf");
}
示例15: NestedBlock
private static void NestedBlock()
{
Block blockMM = new Block("BlockMM");
blockMM.Record.Units = DrawingUnits.Millimeters;
AttributeDefinition attDefMM = new AttributeDefinition("MyAttributeMM");
attDefMM.Height = 1.0;
attDefMM.Value = "This is block mm";
blockMM.AttributeDefinitions.Add(attDefMM);
Line line1MM = new Line(Vector2.Zero, Vector2.UnitX);
blockMM.Entities.Add(line1MM);
Insert insMM = new Insert(blockMM);
insMM.TransformAttributes();
Block blockCM = new Block("BlockCM");
blockCM.Record.Units = DrawingUnits.Centimeters;
AttributeDefinition attDefCM = new AttributeDefinition("MyAttributeCM");
attDefCM.Height = 1.0;
attDefCM.Value = "This is block cm";
blockCM.AttributeDefinitions.Add(attDefCM);
Line line1CM = new Line(Vector2.Zero, Vector2.UnitY);
blockCM.Entities.Add(line1CM);
blockCM.Entities.Add(insMM);
Insert insCM = new Insert(blockCM);
DxfDocument doc = new DxfDocument();
doc.DrawingVariables.InsUnits = DrawingUnits.Meters;
//doc.AddEntity(insMM);
doc.AddEntity(insCM);
doc.Save("test.dxf");
}