Autodesk Revit 房间名称拼写检查

问题描述 投票:0回答:1

我正在尝试使用 LanguageTool API 在 Autodesk Revit 中实现房间名称的拼写检查。但是,当我运行脚本时,Revit 就会冻结。看来问题是在执行以下部分代码时开始的。

问题:

为什么当我运行此脚本时 Revit 冻结? 有没有更好的方法在 Revit 中对房间名称实施拼写检查? 关于让 Hunspell 使用 de_CH 语言环境有什么建议吗?

我感谢任何帮助或建议!

private async Task<(bool isCorrect, List<string> suggestions)> CheckSpelling(string word)
{
    string url = $"https://api.languagetool.org/v2/check?text={word}&language=de-CH";

    using (HttpClient client = new HttpClient())
    {
        HttpResponseMessage response = await client.GetAsync(url);
        response.EnsureSuccessStatusCode();

        string responseBody = await response.Content.ReadAsStringAsync();
        JObject json = JObject.Parse(responseBody);

        var matches = json["matches"];
        if (matches != null && matches.HasValues)
        {
            List<string> suggestions = new List<string>();
            foreach (var match in matches)
            {
                var replacements = match["replacements"];
                if (replacements != null && replacements.HasValues)
                {
                    suggestions.AddRange(replacements.Select(r => r["value"].ToString()));
                }
            }
            return (false, suggestions);
        }
        else
        {
            return (true, new List<string>());
        }
    }
}
c# revit-api
1个回答
0
投票

这在很大程度上取决于您尝试运行此方法的上下文。请注意 Revit API 的以下基本原则:

  • Revit API 是单线程的,只能在有效的 Revit API 上下文中使用。此类上下文仅由 Revit API 事件处理程序提供。因此,您的加载项需要订阅某些 Revit API 事件。在处理程序中,您可以访问 Revit API 功能。

您在上面分享的代码并未明确使用任何 Revit API 功能,afaict。

但是,

async
可能会也可能不会破坏执行上下文。如果没有更多背景,我无法判断。

© www.soinside.com 2019 - 2024. All rights reserved.