说明:最近在对SolidWorks进行二次开发。
年前我们把SolidWorks从2018版升级到了2020版,然后我之前基于VBA做的宏插件使用起来体验越来越差,出图的时候经常卡顿,效率很是低下。
刚好最近该忙的都忙得差不多了,就写上一款基于VB.NET的插件,直接生成.dll文件注入SolidWorks
插件注册的时候需要利用命令行使用regasm.exe注册,所以每次给别人用都需要自己上手去帮别人注册,干脆再写一个傻瓜式的批处理,谁都可以用

先贴上代码:

@echo off
echo 1、注册插件
echo 2、注销插件
set /p i=输入数字后回车:
if %i%==1 goto Login
if %i%==2 goto Logout
:Login 
 cd /d %cd%\
 if exist C:\Windows\Microsoft.NET\Framework64\ (
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /codebase SWPlugins.dll
)  else (
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase SWPlugins.dll
)
goto end 
:Logout
cd /d %cd%\ 
if exist C:\Windows\Microsoft.NET\Framework64\ (
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /U /codebase SWPlugins.dll
)  else (
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U /codebase SWPlugins.dll
)
:end 
pause

代码分成三个部分:

第一部分:

@echo off
echo 1、注册插件
echo 2、注销插件
set /p i=输入数字后回车:

这一部分是给用户的提示内容:

  • @的意思是关闭紧跟其后的一条命令的回显
  • echo off的意思是关闭其他所有命令(不包括本身这条命令)的回显
    (echo on则是显示下一条命令本身的回显)
  • echo的意思就是把这条命令后的内容显示到控制台上
  • set /p i=输入数字后回车:的意思就是设置一个外部读取的变量i,然后在控制台显示 输入数字后回车:,再接受用户输入的内容,以回车表示结束,赋值给变量i

这样在控制台界面显示的结果就是:

第二部分:

if %i%==1 goto Login
if %i%==2 goto Logout
:Login 
 cd /d %cd%\
 if exist C:\Windows\Microsoft.NET\Framework64\ (
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /codebase SWPlugins.dll
)  else (
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /codebase SWPlugins.dll
)
goto end 
:Logout
cd /d %cd%\ 
if exist C:\Windows\Microsoft.NET\Framework64\ (
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regasm.exe /U /codebase SWPlugins.dll
)  else (
C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe /U /codebase SWPlugins.dll
)
:end 

这一部分是根据用户的输入内容选择要运行的函数:

  • 用户如果输入1就跳转到Login
  • 用户如果输入2就跳转到Logout
  • 另外,如果输入1运行完Login之后跳转到end,就不再运行Logout的内容
  • cd /d %cd%\意思就是直接切换到该.bat文件所在的文件夹
  • if exist判断紧跟在他后面的C:\Windows\Microsoft.NET\Framework64\文件夹是否存在,如果存在,说明该PC是64位的,就调用C:\Windows\Microsoft.NET\Framework64\v4.0.30319\文件夹下的regasm.exe进行注册,如果不存在就调用C:\Windows\Microsoft.NET\Framework\v4.0.30319\文件夹下的regasm.exe进行注册
  • Logout中的/U是注销的意思

第三部分:

pause 

pause的意思是暂停批处理,以便于用户查看批处理结果,如果不加上命令运行完毕就直接退出了

一些补充:

有个别电脑不能直接注册,必须把.dll文件放到system32文件夹下才行,这时候需要加上两句代码

copy SWPlugins.dll %SystemRoot%\system32
copy solidworkstools.dll %SystemRoot%\system32

把文件复制到system32文件夹下