明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1597|回复: 5

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

[复制链接]
发表于 2020-11-13 10:04:07 | 显示全部楼层 |阅读模式
想做个插件管理工具,特来咨询C#加载lsp、Vlx,fas,arx等插件的方法,希望大神提供案例或源码参考,谢谢~
发表于 2020-11-24 13:45:56 | 显示全部楼层
cad自带的appload不好吗?
 楼主| 发表于 2020-11-29 20:41:41 | 显示全部楼层
问号兄233 发表于 2020-11-24 13:45
cad自带的appload不好吗?

不好~~添加到启动组有时也会丢失~
发表于 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")



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

这个方法是可行的,我其实想知道用注册表如何操作
发表于 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>   
        [DllImport("acad.exe", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl, EntryPoint = "ads_queueexpr")]
        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}\")");

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 04:20 , Processed in 0.160923 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表