Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何在浏览器中打开AutoCAD并且传参给插件 #47

Open
topcss opened this issue Oct 9, 2019 · 0 comments
Open

如何在浏览器中打开AutoCAD并且传参给插件 #47

topcss opened this issue Oct 9, 2019 · 0 comments
Labels

Comments

@topcss
Copy link
Owner

topcss commented Oct 9, 2019

如何在浏览器中打开AutoCAD并且传参给插件

一、问题拆解

1.在浏览器中打开exe并且传参
2.在插件中如何接受acad.exe的参数

二、实例代码

实现思路:先在注册表中新增一个协议,让浏览器可以识别它,并打开cad软件。然后,在CAD插件中去接受并解析参数。

1)创建一个 opencad 的协议

把下面的代码保存为 opencad.reg 文件,然后用管理员模式打开 cmd ,在 opencad.reg 文件的目录中执行命令 reg import opencad.reg ,如果提示 操作成功完成。 则注册成功。注意:一定要用管理员模式打开 cmd 命令行,否则会出现错误: 访问注册表时出错。的错误。

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\opencad]
"URL Protocol"="D:\\Program Files\\Autodesk\\AutoCAD 2015\\acad.exe"
 
[HKEY_CLASSES_ROOT\opencad\DefaultIcon]
@="D:\\Program Files\\Autodesk\\AutoCAD 2015\\acad.exe"
 
[HKEY_CLASSES_ROOT\opencad\shell]
 
[HKEY_CLASSES_ROOT\opencad\shell\open]
 
[HKEY_CLASSES_ROOT\opencad\shell\open\command]
@="\"D:\\Program Files\\Autodesk\\AutoCAD 2015\\acad.exe\" \"%1\" "

2)创建一个 html 网页文件测试协议

把下面的代码保存为 test.html 文件,然后在浏览器中打开它。然后在网页中点击 测试打开Cad 超链接打开 cad 软件。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <a href="opencad://JACK=1&SOPHIE=2">测试打开Cad</a>
</body>
</html>

3)通过 Environment.GetCommandLineArgs() 获取参数

这一步,需要预备一些 AutoCAD.NET 二次开发的知识,不细讲了。如果你需要看这篇文章,那么你一看就明白。

[CommandMethod("Args")]
public void GetAcadArguments()
{ 
    Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

    int i = 0;
    foreach (string arg in Environment.GetCommandLineArgs())
    {
        ed.WriteMessage("\n Arg{0}=\"{1}\"", i++, arg);
    }
}

三、参考文献

[1] 实现浏览器中点击链接启动本地程序 XXX:// 参数
[2] AutoCAD.net 插件中获取AutoCAD 启动命令行的参数
[3] 注册表REG文件编写大全

@topcss topcss added the 🔪C# label Oct 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant