运行 用 C# 解封
Running Decap with C#
在办公室,我们有一个 fileWatcher,可以将点云转换为 .laz 文件。
我们刚开始使用 Revit,但得出的结论是无法在 Revit 中导入 .laz。
所以我用谷歌搜索并找到了一个解决方案,除了它是用 python 编写的,而我们的观察者是在 c# 中。
在 python 脚本下方。
<location>/decap.exe –importWithLicence E:\decap text\Building 1\ Building 1
有没有办法将此 python 脚本转换为 C# 或者是否有其他方法。
请告诉我。
我在 C# 中实现了 Revit 加载项 import a LandXML surface 到 TopographySurface
。 LAS
文件格式与 LandXML 一样简单易读,因此应该可以满足您的需求。事实上,我也有兴趣为自己实现这样的东西,所以也许如果您可以共享一个简单的 LAZ
示例文件或两个,我也可以看一下。谢谢。
我看到 decap.exe
是 Autodesk 产品,与 Python 无关。你到底想达到什么目的?只生成地形表面,或者除此之外的其他东西?
我的第一个回答是询问您想要实现什么,并提出了一种可能的替代方法。要更直接地回答您的问题,您可以轻松启动 decap.exe
命令行并直接在 .NET 和 C# 中为其指定参数。只需按照其他地方的说明使用命令行,例如 Run Command Prompt Commands.
感谢杰里米的回复。经过更多搜索后,我得出了相同的结论。您将在下面找到适合我的代码。
//Process Info
var cmdInfo = new ProcessStartInfo
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
FileName = "cmd.exe",
};
//Process
var cmd = new Process();
cmd.StartInfo = cmdInfo;
cmd.Start();
var outStream = cmd.StandardOutput;
var inStream = cmd.StandardInput;
//Command Line for DeCap
inStream.WriteLine("cd C:\Program Files\Autodesk\Autodesk Recap");
var run = true;
var cmdTask = Task.Run(() =>
{
while (run)
{
try
{
Console.WriteLine(outstream.ReadLine());
}
catch { }
Thread.Sleep(20);
if (outStream.ReadLine().Contains("[R]"))
{
_logger.LogInformation(@"File Converted: {0}\{1}", _LAZProcessed, LAZFile.Name);
run = false;
}
}
});
inStream.WriteLine("{0}decap.exe{0} --importWithLicense {0}{1} 0} {0}{2}{0} {0}{3}{0}", '"', _LAZProcessed, LAZFile.Name, LAZFile.FullName);
while (!cmdTask.IsCompleted)
Thread.Sleep(1000);
在办公室,我们有一个 fileWatcher,可以将点云转换为 .laz 文件。
我们刚开始使用 Revit,但得出的结论是无法在 Revit 中导入 .laz。
所以我用谷歌搜索并找到了一个解决方案,除了它是用 python 编写的,而我们的观察者是在 c# 中。
在 python 脚本下方。
<location>/decap.exe –importWithLicence E:\decap text\Building 1\ Building 1
有没有办法将此 python 脚本转换为 C# 或者是否有其他方法。
请告诉我。
我在 C# 中实现了 Revit 加载项 import a LandXML surface 到 TopographySurface
。 LAS
文件格式与 LandXML 一样简单易读,因此应该可以满足您的需求。事实上,我也有兴趣为自己实现这样的东西,所以也许如果您可以共享一个简单的 LAZ
示例文件或两个,我也可以看一下。谢谢。
我看到 decap.exe
是 Autodesk 产品,与 Python 无关。你到底想达到什么目的?只生成地形表面,或者除此之外的其他东西?
我的第一个回答是询问您想要实现什么,并提出了一种可能的替代方法。要更直接地回答您的问题,您可以轻松启动 decap.exe
命令行并直接在 .NET 和 C# 中为其指定参数。只需按照其他地方的说明使用命令行,例如 Run Command Prompt Commands.
感谢杰里米的回复。经过更多搜索后,我得出了相同的结论。您将在下面找到适合我的代码。
//Process Info
var cmdInfo = new ProcessStartInfo
{
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
FileName = "cmd.exe",
};
//Process
var cmd = new Process();
cmd.StartInfo = cmdInfo;
cmd.Start();
var outStream = cmd.StandardOutput;
var inStream = cmd.StandardInput;
//Command Line for DeCap
inStream.WriteLine("cd C:\Program Files\Autodesk\Autodesk Recap");
var run = true;
var cmdTask = Task.Run(() =>
{
while (run)
{
try
{
Console.WriteLine(outstream.ReadLine());
}
catch { }
Thread.Sleep(20);
if (outStream.ReadLine().Contains("[R]"))
{
_logger.LogInformation(@"File Converted: {0}\{1}", _LAZProcessed, LAZFile.Name);
run = false;
}
}
});
inStream.WriteLine("{0}decap.exe{0} --importWithLicense {0}{1} 0} {0}{2}{0} {0}{3}{0}", '"', _LAZProcessed, LAZFile.Name, LAZFile.FullName);
while (!cmdTask.IsCompleted)
Thread.Sleep(1000);