很多时候,我们在服务甲方的时候,需要将建模或者求解的结果发给甲方审核,但是又不想让对方知道我们的具体操作代码,这个时候就可以采用加密宏来实现,通过该操作,可以最大程度上对我们的知识产权进行保护,且目前为止水哥还没发现方法可以对其进行还原。
加密后的效果主要有两个方面:
1、用户在使用过程中,必须提前输入我们加密宏的密码,否则即使有宏文件也无法进行调用。
2、宏文件用户打开后看到的是一堆乱码。
加密操作要注意两个方面:
1、宏文件一旦进行加密后,将不可逆,也即无法还原为正常代码,所以操作之前,一定要备份好源代码。
2、为了防止用户通过Log文件的方式进行查看源代码,在加密时一定要通过/Nopr和/Gopr来禁止将宏文件的代码写入到Log文件中。
APDL加密宏的命令如下:
/ENCRYPT, Key
, Fname
, Ext
其中,Key为加密密码,Fname为宏文件名称,Ext为宏文件后缀名
下面以一个创建壳单元为例,来演示具体的操作流程。
一、正常流程如下(通过*Create和*End命令来创建宏文件):
!创建宏文件
*Create,CreateShell,mac
/prep7
allsel,all
!获取当前模型最大的材料、类型、截面编号
*get,matmax,mat,0,num,max
*get,typemax,type,0,num,max
*get,Secmax,secp,0,num,max
!创建新的单元属性
mp,ex,matmax+1,2.0e5
et,typemax+1,shell181
sectype,secmax+1,shell
secdata,100
!获取最大节点编号
*get,nodemax,node,0,num,max
!创建四个节点
N,nodemax+1,100,100
N,nodemax+2,200,100
N,nodemax+3,200,200
N,nodemax+4,100,200
!创建单元
Type,typemax+1
Mat,matmax+1
Secnum,secmax+1
E,nodemax+1,nodemax+2,nodemax+3,nodemax+4
*END
运行完上述代码后,即可在软件工作目录下看到一个名为CreateShell.mac的宏文件,通过本文编辑器打开即可看到源代码,如下所示:
二、改为加密方式创建流程如下:
文件名称为CreateShell_Jiami,文件密码为Logepi
/Encrypt,Logepi,CreateShell_Jiami,mac
/Nopr
/prep7
allsel,all
*get,matmax,mat,0,num,max
*get,typemax,type,0,num,max
*get,Secmax,secp,0,num,max
mp,ex,matmax+1,2.0e5
et,typemax+1,shell181
sectype,secmax+1,shell
secdata,100
*get,nodemax,node,0,num,max
N,nodemax+1,100,100
N,nodemax+2,200,100
N,nodemax+3,200,200
N,nodemax+4,100,200
Type,typemax+1
Mat,matmax+1
Secnum,secmax+1
E,nodemax+1,nodemax+2,nodemax+3,nodemax+4
/Gopr
/Encrypt
运行完上述代码后,即可在软件工作目录下看到一个名为CreateShell_Jiami的宏文件,通过本文编辑器打开,发现是乱码,如下所示:
将生成的CreateShell_Jiami文件发给客户,用告知其使用方法或者直接体现在我们最终的命令流里面即可,这样就可以对我们的一些操作进行保护。
三、加密宏的使用方法
使用加密宏的时候,需要用/Decrypt提前声明密码,用法流程如下:
finish
/clear
/prep7
!声明密码
/Decrypt,password,Logepi
!使用宏文件
CreateShell_Jiami
finish
打开软件的log文件,拉到最后几行,没有发现源代码,通过这种操作就对我们的宏文件进行了保护。
四、WB当中使用加密宏文件方法
方法与在经典中使用的方法类似,只需在求解阶段插入Command,命令流中声明密码即可,如下所示:
在WB界面拖入一个APDL,来进行实时查看命令流运行效果,从下面截图可见,加密的宏文件已经运行。
更多即时资讯,欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院
暂无评论内容