cxjcqu 发表于 2020-11-13 10:04:07

C#如何加载lsp、Vlx,fas,arx等插件?

想做个插件管理工具,特来咨询C#加载lsp、Vlx,fas,arx等插件的方法,希望大神提供案例或源码参考,谢谢~

问号兄233 发表于 2020-11-24 13:45:56

cad自带的appload不好吗?

cxjcqu 发表于 2020-11-29 20:41:41

问号兄233 发表于 2020-11-24 13:45
cad自带的appload不好吗?

不好~:lol~添加到启动组有时也会丢失~

print1985 发表于 2021-1-11 18:34:34

本帖最后由 print1985 于 2021-1-11 18:37 编辑

cxjcqu 发表于 2020-11-29 20:41
不好~~添加到启动组有时也会丢失~
在cad安装目录Support文件夹内acad2020.lsp(对应你自己的cad版本)加入(Load "xxxx.lsp")。
同时把你的 xxxx.lsp 文件放到Support文件夹内。arx、vlx、fas也一样。

dll自动加载,acad2020.lsp内添加:
(command "netload" "D:\\Program Files\\Autodesk\\AutoCAD 2020\\Support\\ xxxx.dll")
对应你dll的路径,注意路径是双斜杠
比如:
(Load "A.lsp")
(Load "B.arx")
(Load "C.vlx")
(Load "D.fas")
(command "netload" "D:\\Program Files\\Autodesk\\AutoCAD 2020\\Support\\ E.dll")



cxjcqu 发表于 2021-1-11 23:49:16

print1985 发表于 2021-1-11 18:34
在cad安装目录Support文件夹内acad2020.lsp(对应你自己的cad版本)加入(Load "xxxx.lsp")。
同时把你的 ...

这个方法是可行的,我其实想知道用注册表如何操作;P

你有种再说一遍 发表于 2021-1-25 14:10:15

    public partial class CSendSynchronization
    {
#if AC2006 || AC2007 || AC2008 || AC2009 || AC20081 || AC2011 || AC2012
      /// <summary>
      /// 发送命令
      /// </summary>
      /// <param name="strExpr"></param>
      /// <returns></returns>   
      
      private static extern int Ads_queueexpr(string strExpr);//非同步,这个在08/12发送lisp不会出错,但是发送bo命令出错了..
      /// <summary>
      /// 发送命令,设置CommandFlags.Session可以同步,
      /// 发送lisp也可以,但是非同步,在自动执行函数上面会非同步
      /// </summary>
      /// <param name="str"></param>
      public static void SendString(string str)
      {
            try
            {
                Ads_queueexpr(str + "\n");
            }
            catch (Exception ee)
            {
                //自执行发送lisp都是在最后的(异步执行)   
                var ed = Acap.DocumentManager.MdiActiveDocument.Editor;
                ed.WriteMessage(Environment.NewLine + "发送命令失败,导致加载失败!");
                ed.WriteMessage(Environment.NewLine + "" + ee.Message + Environment.NewLine);
            }
      }
#else
      /// <summary>
      /// 发送命令
      /// </summary>
      /// <param name="str">发送lisp加载命令</param>
      /// <returns></returns>
      public static void SendString(string str)
      {
            Document dc = Acap.DocumentManager.MdiActiveDocument;
            string commands = str + "\n";
            try
            {
                dc.SendStringToExecute(commands, false, false, false);//08所有都flase会有问题,出现报错
            }
            catch (System.Exception ee)
            {
                //自执行发送lisp都是在最后的(异步执行)   
                var ed = dc.Editor;
                ed.WriteMessage(ee.Message);
                ed.WriteMessage(Environment.NewLine + "发送命令失败,导致加载失败!");
                ed.WriteMessage(Environment.NewLine + ee.Message);
            }
      }
#endif
    }




调用时候 SendString($"(load \"{fe}\")");

页: [1]
查看完整版本: C#如何加载lsp、Vlx,fas,arx等插件?