说明:最近在对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
文件夹下