64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using System.Text;
|
|
using DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks;
|
|
using DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5;
|
|
|
|
namespace S7Explorer.Models
|
|
{
|
|
public class BlockItem : ProjectItem
|
|
{
|
|
public ProjectBlockInfo? BlockInfo { get; set; }
|
|
public S7Block? BlockData { get; set; }
|
|
public string BlockType { get; set; } = string.Empty;
|
|
public int BlockNumber { get; set; }
|
|
public string BlockComment { get; set; } = string.Empty;
|
|
public string BlockContent { get; set; } = string.Empty;
|
|
|
|
// Override to provide block-specific object for property grid
|
|
public override object? GetDetailsObject()
|
|
{
|
|
return BlockData;
|
|
}
|
|
|
|
// Override to provide the appropriate icon
|
|
public override string GetIcon()
|
|
{
|
|
return BlockType switch
|
|
{
|
|
"OB" => "OB",
|
|
"FC" => "FC",
|
|
"FB" => "FB",
|
|
"DB" => "DB",
|
|
"UDT" => "UDT",
|
|
"SFC" => "SFC",
|
|
"SFB" => "SFB",
|
|
_ => "Block"
|
|
};
|
|
}
|
|
|
|
// Generate export text for documentation
|
|
public override string GetExportText()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.AppendLine($"Block: {Name}");
|
|
sb.AppendLine($"Type: {BlockType}{BlockNumber}");
|
|
|
|
if (!string.IsNullOrEmpty(BlockComment))
|
|
sb.AppendLine($"Comment: {BlockComment}");
|
|
|
|
if (BlockData != null)
|
|
{
|
|
sb.AppendLine($"Author: {BlockData.Author}");
|
|
sb.AppendLine($"Family: {BlockData.Family}");
|
|
sb.AppendLine($"Version: {BlockData.Version}");
|
|
sb.AppendLine($"Last Modified: {BlockData.LastCodeChange}");
|
|
}
|
|
|
|
sb.AppendLine();
|
|
sb.AppendLine("// Block Content");
|
|
sb.AppendLine(BlockContent);
|
|
sb.AppendLine();
|
|
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
} |