AutoCAD有一种通过其API更改系统变量的漂亮方法
Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable(string, object)
字符串是系统变量名称 - 在我的例子中是"WIPEOUTFRAME">
对象是设置 - 我想将其设置为 0。
我已经将该方法用于其他系统变量并且它有效,但不适用于这个。
相反,我在运行时收到 eInvalidInput 错误。
我已经验证了WIPEOUTFRAME是正确的(我可以通过autoCAD中的命令行进行设置),并且验证了该值是否为0。
我还使用了 GetSystemVariable(string) 方法,该方法将设置作为对象返回,以验证程序理解 WIPEOUTFRAME,以及它可以返回值 0。 确实如此。 另外,我已经确认了它返回的对象类型:INT16。
我还将 GetSystemVariable 返回的对象传递给 SetSystemVariable,它可以工作!即使我确保 WIPEOUTFRAME 的值为 0。 这是我唯一一次让该方法起作用。 但是,当然,我想将值从 1 更改为 0,因此虽然它确认该方法可以工作,但传递相同的对象并不能帮助我更改值。
我尝试将值 0 作为对象、int16 对象、简单的 0、字符串等传递给参数......没有成功。
这可能是 API 中的错误,或者任何人都可以告诉我我错过了什么?
已解决 - 如果不锁定应用程序并创建事务,API 将不接受输入。