运行 用 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 surfaceTopographySurfaceLAS 文件格式与 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);