mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-13 22:48:33 +00:00
Added LinearExtrudedObject, Text3D
This commit is contained in:
parent
a3435a24e7
commit
b5d2160006
@ -40,6 +40,7 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Transforms\LinearExtrudedObject.cs" />
|
||||
<Compile Include="Scripting\BlockFormatter.cs" />
|
||||
<Compile Include="Scripting\BlockStatementObject.cs" />
|
||||
<Compile Include="Booleans\Difference.cs" />
|
||||
|
||||
@ -20,20 +20,20 @@ namespace OSCADSharp
|
||||
/// The generated text will have approximately an ascent of the given value (height above the baseline). Default is 10.
|
||||
/// Note that specific fonts will vary somewhat and may not fill the size specified exactly, usually slightly smaller.
|
||||
/// </summary>
|
||||
public uint Size { get; set; }
|
||||
public uint? Size { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// The name of the font that should be used. This is not the name of the font file,
|
||||
/// but the logical font name (internally handled by the fontconfig library). This can also include a style parameter, see below.
|
||||
/// A list of installed fonts & styles can be obtained using the font list dialog (Help -> Font List).
|
||||
/// </summary>
|
||||
public string Font { get; set; }
|
||||
public string Font { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// The horizontal alignment for the text. Possible values are "left", "center" and "right". Default is "left".
|
||||
/// </summary>
|
||||
/// TODO: Implement alignments
|
||||
public string HorizontalAlignment { get; set; }
|
||||
//public string HorizontalAlignment { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The vertical alignment for the text. Possible values are "top", "center", "baseline" and "bottom". Default is "baseline".
|
||||
@ -44,7 +44,7 @@ namespace OSCADSharp
|
||||
/// <summary>
|
||||
/// Factor to increase/decrease the character spacing. The default value of 1 will result in the normal spacing for the font, giving a value greater than 1 will cause the letters to be spaced further apart.
|
||||
/// </summary>
|
||||
public uint Spacing { get; set; }
|
||||
public uint? Spacing { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Direction of the text flow. Possible values are "ltr" (left-to-right), "rtl" (right-to-left), "ttb" (top-to-bottom) and "btt" (bottom-to-top). Default is "ltr".
|
||||
@ -55,22 +55,38 @@ namespace OSCADSharp
|
||||
/// The language of the text. Default is "en".
|
||||
/// </summary>
|
||||
public string Language { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Used for subdividing the curved path segments provided by freetype
|
||||
/// ($fn in OpenSCAD)
|
||||
/// </summary>
|
||||
public int Resolution { get; set; } = 0;
|
||||
/// TODO: Implement Resolution
|
||||
// public int? Resolution { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// The script of the text. Default is "latin".
|
||||
/// </summary>
|
||||
/// TODO: Implement Script
|
||||
// public string Script { get; set; }
|
||||
|
||||
public override OSCADObject Clone()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
return new Text3D()
|
||||
{
|
||||
Text = this.Text,
|
||||
Size = this.Size,
|
||||
Font = this.Font,
|
||||
Spacing = this.Spacing,
|
||||
TextDirection = this.TextDirection,
|
||||
Language = this.Language
|
||||
};
|
||||
}
|
||||
|
||||
private void appendValueIfExists(string name, string value, StringBuilder sb)
|
||||
private void appendIfValueNotNullOrEmpty(string name, string value, StringBuilder sb)
|
||||
{
|
||||
if(!String.IsNullOrEmpty(value))
|
||||
{
|
||||
sb.Append(", ");
|
||||
sb.Append(name);
|
||||
sb.Append("=");
|
||||
sb.Append(value);
|
||||
@ -85,10 +101,15 @@ namespace OSCADSharp
|
||||
sb.Append(this.Text);
|
||||
sb.Append("\"");
|
||||
|
||||
appendValueIfExists("font", this.Font, sb);
|
||||
appendIfValueNotNullOrEmpty("size", this.Size?.ToString(), sb);
|
||||
appendIfValueNotNullOrEmpty("font", this.Font, sb);
|
||||
appendIfValueNotNullOrEmpty("spacing", this.Spacing?.ToString(), sb);
|
||||
appendIfValueNotNullOrEmpty("direction", this.TextDirection?.ToString(), sb);
|
||||
appendIfValueNotNullOrEmpty("language", this.Language?.ToString(), sb);
|
||||
|
||||
sb.Append(");");
|
||||
|
||||
return base.ToString();
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
50
OSCADSharp/OSCADSharp/Transforms/LinearExtrudedObject.cs
Normal file
50
OSCADSharp/OSCADSharp/Transforms/LinearExtrudedObject.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using OSCADSharp.Scripting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace OSCADSharp.Transforms
|
||||
{
|
||||
/// <summary>
|
||||
/// Linear Extrusion is a modeling operation that takes a 2D polygon as input and extends it in the third dimension. This way a 3D shape is created.
|
||||
///
|
||||
/// This is a limited subset of the capabilities
|
||||
/// </summary>
|
||||
internal class LinearExtrudedObject : OSCADObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Height to extrude to
|
||||
/// </summary>
|
||||
public double Height { get; set; } = 1.0;
|
||||
private OSCADObject obj;
|
||||
|
||||
//TODO: Possibly implement everything else?
|
||||
//linear_extrude(height = fanwidth, center = true, convexity = 10, twist = -fanrot, slices = 20, scale = 1.0) {...}
|
||||
|
||||
/// <summary>
|
||||
/// An object that will be extruded from 2d to 3d
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <param name="height"></param>
|
||||
public LinearExtrudedObject(OSCADObject obj, double height)
|
||||
{
|
||||
this.obj = obj;
|
||||
this.Height = height;
|
||||
}
|
||||
|
||||
|
||||
public override OSCADObject Clone()
|
||||
{
|
||||
return new LinearExtrudedObject(this.obj, this.Height);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string extrudeCommand = String.Format("linear_extrude(height = {0})", this.Height.ToString());
|
||||
var formatter = new BlockFormatter(extrudeCommand, this.obj.ToString());
|
||||
return formatter.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user