velasquez 发表于 2022-7-14 07:50:57

没有使用PromptEntityOptions选择任何内容


**** Hidden Message *****

kdub 发表于 2022-7-15 00:10:19

我正在使用这段代码进行测试,我没有写它。
要进行测试,请加载代码并单击图形的空白区域。
请注意提示“未选择任何内容”。
我需要翻译或不向用户显示此内容。
谢谢

      static public void UpdateTableFromSpreadsheet()
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor ed = doc.Editor;
            PromptEntityOptions opt = new PromptEntityOptions("\nSelect table to update: ");
            opt.SetRejectMessage("\nEntity is not a table.");
            opt.AddAllowedClass(typeof(Table), false);
            PromptEntityResult per = ed.GetEntity(opt);
            if (per.Status != PromptStatus.OK)
            {
                return;
            }
            Transaction tr = db.TransactionManager.StartTransaction();
      
      }

velasquez 发表于 2022-7-15 08:31:22


可能需要探索,NoneOremptySel int PromptedOptions有一个内部函数process

kdub 发表于 2022-7-15 22:31:29


不起作用,我认为可以捕获SystemVariableChanged或SystemVariableChanging并否决它。
我看到的唯一其他选项是通过p/调用acedEntSel来滚动您自己的选项

gile 发表于 2022-7-15 23:22:45

也许玩NOMUTT系统?

velasquez 发表于 2022-7-16 02:49:06


在运行命令之前,我将NOMUTT变量设置为1,但它不起作用。
有没有类似于 C# 中的 ERRNO sysvar 变量?
错误代码参考(自动LISP)
(getvar 'ERRNO)
7 -> 对象选择:选取失败
52 ->实体选择:空响应

kdub 发表于 2022-7-16 04:41:13

在我看来,消息起源于
protected internal sealed override unsafe PromptResult DoIt() . . .

private protected unsafe int ProcessForNoneOrEmptySel(int retcode)

,然后进一步深入兔子洞。
太深了,而且由于访问限制,可能不够有成效,我无法遵循......
问候

velasquez 发表于 2022-7-16 09:17:46

再次感谢大家的帮助。
我仍在使用C#学习AutoCAD API,很高兴能得到像您这样的人的帮助。
页: [1]
查看完整版本: 没有使用PromptEntityOptions选择任何内容