gpt4 book ai didi

c# - Autocad .NET - 扩展命令行

转载 作者:行者123 更新时间:2023-12-04 11:39:28 26 4
gpt4 key购买 nike

我正在开发一个 Autocad .NET 插件( .dll 通过 NETLOAD 加载),并且我经常使用 Document.Editor对象来获取用户输入,如字符串、数字、点和实体。
我希望我的一些提示显示几个选项供用户选择(与原生 -DWGUNITS 命令完全一样)。
显示提示和选项非常好(我用 Editor.GetInteger 来做,传递带有选项的多行消息,有时还有一两个关键字)。
但我不知道如何展开命令栏 使其显示所有选项(否则用户必须手动展开它才能看到列表)
所以,这是我目前的命令(蓝色的私有(private)内容):
选项仅限于这三行(更改 CLIPROMPTLINES 似乎不是最好的选择,但如果您知道如何使用 .NET 来做,这是一个好的开始)。
This image represents my command
.
这就是我想要的:
This image shows the intended behavior

最佳答案

很简单,这个选项在 Autodesk.Autocad.ApplicationServices.Application.DisplayTextScreen :

using Autodesk.Autocad.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;

private int AskUser(IEnumerable<string> userOptions)
{

Document document= Application.DocumentManager.MdiActiveDocument;
Editor editor = document.Editor;

//Autocad's setting before you change
bool originalSetting = CadApp.DisplayTextScreen;

string message = "Available options:\n";
message += string.join("\n",
userOptions.Select((opt,i)=>i.ToString() + ": " + opt));
message += "\nChoose an option"

PromptIntegerOptions promptOptions = new PromptIntegerOptions(message);
promptOptions.LowerLimit = 0;
promptOptions.UpperLimit = userOptions.Count - 1;

//display full command bar
Application.DisplayTextScreen = true;
var result = editor.GetInteger(promptOptions);

int selection;
if (result.Status == PromptStatus.OK)
selection = result.Value;
else
selection = -1;

//restore original setting
Application.DisplayTextScreen = originalSetting;

return selection;
}

关于c# - Autocad .NET - 扩展命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68006324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com