本帖最后由 baitang36 于 2023-12-5 10:20 编辑
因为使用了AutoCAD的保留函数,本程序只适用于autocad,中望和浩辰暂不支持。
在syz-compress.fas中定义了两个函数:
syz-compress的功能是压缩二进制字符串,用法:(syz-compress "1234123413423421234")
syz-decompress的功能是解压缩字符串,用法:(syz-decompress "压缩字符串")
加载syz-compress.fas后,在命令行输入(syz-decompress(syz-compress "123412341234"))返回字符串"123412341234",说明加载成功。
syz-yasuo.lsp是使用syz-compress.fas的例子程序,可以实现压缩和解压缩文件。
压缩文件的函数是syz-yasuo,用法:(syz-yasuo "c:/00/1.dwg" "c:/00/1.zwg") 把1.dwg压缩成1.zwg
解压缩文件的函数是syz-jyasuo,用法:(syz-jyasuo "c:/00/1.zwg" "c:/00/2.dwg") 把1.zwg解压缩成2.zwg
syz-compress.fas是用保留函数调用windows api实现的,用了标准的LZ算法,压缩率一般,速度挺快的,压缩一个500兆的dwg用时5秒左右。
syz-compress.fas源码暂不公开,想学习lsp调用系统api者联系qq5520971(不免费)。
syz-yasuo.lsp的源码如下:
- (load "c:/00/trf_9.fas")
- (load "c:/00/syz-compress.fas")
- (tranf "_read-nb")
- (tranf "_write-nb-str")
- (defun syz-yasuo (fname1 fname2 / f1 f2 str1 str2)
- (setq f1 (open fname1 "r"))
- (setq f2 (open fname2 "w"))
- (setq str1 (_read-nb 640000000 f1))
- (setq str2 (syz-compress str1))
- (_write-nb-str str2 f2)
- (close f2)
- (close f1)
- )
- (defun syz-jyasuo (fname1 fname2 / f1 f2 str1 str2)
- (setq f1 (open fname1 "r"))
- (setq f2 (open fname2 "w"))
- (setq str1 (_read-nb 640000000 f1))
- (setq str2 (syz-decompress str1))
- (_write-nb-str str2 f2)
- (close f2)
- (close f1)
- )
|