AVEVA Marine C#直接调用tribon时代的py宏命令

 

 

public static void 增加PY菜单()
{
    var cbm = CommandBarManager.Instance;
    var pycmd = "PYCMD";
    if (cbm.RootTools.Contains(pycmd)) return;
    if (cbm.MenuBar.Tools.Contains(pycmd)) return;
    cbm.AllowCustomization = true;
    cbm.BeginUpdate();
    var mtMain = cbm.RootTools.AddMenuTool(pycmd, pycmd, null);
    var mb = (MenuTool)cbm.MenuBar.Tools.AddTool(pycmd);
    var pyScrPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "PyScript");
    var scrfns = Directory.GetFiles(pyScrPath, "*.py").ToList();
    var cmds = scrfns.Select(c => Path.GetFileNameWithoutExtension(c)).ToList();
    foreach (var cmd in cmds)
    {
        var bt = cbm.RootTools.AddButtonTool(cmd, cmd, null);
        bt.ToolClick += (s, e) =>
        {
            var fn = scrfns.FirstOrDefault(c => Path.GetFileNameWithoutExtension(c) == cmd);
            if (fn == null) return;
            try
            {
                MarPythonEngine pyEngine = new MarPythonEngine();
                pyEngine.RunPythonScript(fn);
            }
            catch (Exception ex) { ex.Message.Print2MessageBox(); }
        };
        mb.Tools.AddTool(bt.Key);
    }
    cbm.SaveLayout();
    cbm.EndUpdate(true);
}

 

posted @ 2025-05-05 10:27  南胜NanSheng  阅读(172)  评论(0)    收藏  举报