Added "Name" as an optional identifier for OSCADObjects

This commit is contained in:
Michael Smith 2016-02-21 16:30:59 -08:00
parent 135ab5072a
commit 847652a9c7
13 changed files with 52 additions and 9 deletions

View File

@ -16,7 +16,7 @@ namespace OSCADSharp
/// </summary>
public abstract class OSCADObject
{
#region Fields
#region Attributes
private uint id = Ids.Get();
/// <summary>
@ -24,6 +24,11 @@ namespace OSCADSharp
/// these values auto-increment
/// </summary>
public uint Id { get { return this.id; } }
/// <summary>
/// Name of this OSCADObject
/// </summary>
public string Name { get; set; } = null;
#endregion
#region Transforms
@ -288,6 +293,16 @@ namespace OSCADSharp
return allChildren;
}
/// <summary>
/// Retrieves children that match the filtering predicate
/// </summary>
/// <param name="predicate">An expression like Linq's .Where() clause</param>
/// <returns></returns>
public IEnumerable<OSCADObject> Children(Func<OSCADObject, bool> predicate)
{
return this.Children().Where(predicate);
}
/// <summary>
/// Copies the transforms that have been applied to another OSCADObject, and applies
/// the same transforms to this object. (Only pure transforms, like Translate, Rotate, Scale, Color)

View File

@ -42,7 +42,10 @@ namespace OSCADSharp.Scripting
childClones.Add(child.Clone());
}
return new MultiBlockStatementObject(this.outerStatement, childClones);
return new MultiBlockStatementObject(this.outerStatement, childClones)
{
Name = this.Name
};
}
public override Vector3 Position()

View File

@ -82,6 +82,7 @@ namespace OSCADSharp.Solids
{
return new Cube()
{
Name = this.Name,
Size = this.Size,
Center = this.Center
};

View File

@ -138,6 +138,7 @@ namespace OSCADSharp.Solids
{
return new Cylinder()
{
Name = this.Name,
Height = this.Height,
Radius1 = this.Radius1,
Radius2 = this.Radius2,

View File

@ -83,6 +83,7 @@ namespace OSCADSharp.Solids
{
return new Sphere()
{
Name = this.Name,
Resolution = this.Resolution,
MinimumAngle = this.MinimumAngle,
MinimumFragmentSize = this.MinimumFragmentSize,

View File

@ -80,6 +80,7 @@ namespace OSCADSharp.Solids
{
return new Text3D()
{
Name = this.Name,
Text = this.Text,
Size = this.Size,
Font = this.Font,

View File

@ -44,7 +44,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new ColoredObject(this.obj.Clone(), this.ColorName, this.Opacity);
return new ColoredObject(this.obj.Clone(), this.ColorName, this.Opacity)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)

View File

@ -39,7 +39,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new LinearExtrudedObject(this.obj.Clone(), this.Height);
return new LinearExtrudedObject(this.obj.Clone(), this.Height)
{
Name = this.Name
};
}
public override string ToString()

View File

@ -43,7 +43,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new MirroredObject(this.obj.Clone(), this.Normal);
return new MirroredObject(this.obj.Clone(), this.Normal)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)

View File

@ -42,7 +42,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new ResizedObject(this.obj.Clone(), this.Size);
return new ResizedObject(this.obj.Clone(), this.Size)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)

View File

@ -42,7 +42,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new RotatedObject(this.obj.Clone(), this.Angle);
return new RotatedObject(this.obj.Clone(), this.Angle)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)

View File

@ -42,7 +42,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new ScaledObject(this.obj.Clone(), this.ScaleFactor);
return new ScaledObject(this.obj.Clone(), this.ScaleFactor)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)

View File

@ -39,7 +39,10 @@ namespace OSCADSharp.Transforms
public override OSCADObject Clone()
{
return new TranslatedObject(this.obj.Clone(), this.Vector);
return new TranslatedObject(this.obj.Clone(), this.Vector)
{
Name = this.Name
};
}
public OSCADObject MimicObject(OSCADObject obj)