我一直试图弄乱AutoCAD LT命令行,希望将其与C#程序链接。我专注于命令行,因为在为LT版本进行编码方面存在很大的局限性。在我的任务中,我弄清楚了如何将命令记录到日志文件(另存为.txt文件)中。
日志文件:
Command: _dimlinear
Specify first extension line origin or select object:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle/Horizontal/Vertical/Rotated]:
Dimension text = 712.75
Command: DIMLINEAR
Specify first extension line origin or <select object>:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle/Horizontal/Vertical/Rotated]:
Dimension text = 628.70
我试图仅提取以“ Dimension text =”开头的行中的数字。如何使用C#实现呢?
答案 0 :(得分:0)
FileInfo fi = new FileInfo("FILE LOCATION");
StreamReader reader = new StreamReader( fi.ToString() );
String Line = "";
while ( ( Line = reader.ReadLine() ) != null )
{
if ( !Line.Contains("Dimension text") {
continue;
}
String Property = Line.Split( '=' )[0];
String Value = Line.Substring( Property.Length + 1, Line.Length - Property.Length - 1 );
Console.WriteLine( Value ); // This line will print value of Dimension text
}
希望这对您有用。
答案 1 :(得分:0)
您可以使用File.ReadLines和LINQ来查询文件并拆分感兴趣的行,以选择尺寸。我不确定如果文件很大,它将如何执行,但是应该可以很好地工作。
var logFile = File.ReadLines("your_file_path")
var dimensions = (from entry in logFile
where entry.StartsWith("Dimension text")
let parts = entry.Split(' ')
select decimal.Parse(parts.Last())).ToList();
答案 2 :(得分:0)
您可以使用正则表达式。
var input = @"Command: _dimlinear
Specify first extension line origin or select object:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle/Horizontal/Vertical/Rotated]:
Dimension text = 712.75
Command: DIMLINEAR
Specify first extension line origin or <select object>:
Specify second extension line origin:
Specify dimension line location or
[Mtext/Text/Angle/Horizontal/Vertical/Rotated]:
Dimension text = 628.70
Dimension text = 628";
var regex = new Regex( @"Dimension text = (\d+(\.\d*)?)" );
foreach( Match match in regex.Matches( input ) ) {
var num = decimal.Parse( match.Groups[ 1 ].Value );
Console.WriteLine( "Num: " + num );
}
答案 3 :(得分:0)
您可以使用Linq和Regex来实现。
712.75
628.70
OP中给定示例的输出
struct
答案 4 :(得分:0)
我对@AnuViswan发布的答案做了微小的更改,以获取所有条目:
using namespace