C#如何加载lsp、Vlx,fas,arx等插件?
想做个插件管理工具,特来咨询C#加载lsp、Vlx,fas,arx等插件的方法,希望大神提供案例或源码参考,谢谢~cad自带的appload不好吗? 问号兄233 发表于 2020-11-24 13:45
cad自带的appload不好吗?
不好~:lol~添加到启动组有时也会丢失~ 本帖最后由 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")
print1985 发表于 2021-1-11 18:34
在cad安装目录Support文件夹内acad2020.lsp(对应你自己的cad版本)加入(Load "xxxx.lsp")。
同时把你的 ...
这个方法是可行的,我其实想知道用注册表如何操作;P 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]