明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1502|回复: 7

[经验] 【原创】用纯lisp实现压缩和解压缩

  [复制链接]
发表于 2023-12-5 09:53:17 | 显示全部楼层 |阅读模式
本帖最后由 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的源码如下:
  1. (load "c:/00/trf_9.fas")
  2. (load "c:/00/syz-compress.fas")
  3. (tranf "_read-nb")
  4. (tranf "_write-nb-str")
  5. (defun syz-yasuo (fname1 fname2 / f1 f2 str1 str2)
  6.   (setq f1 (open fname1 "r"))
  7.   (setq f2 (open fname2 "w"))
  8.   (setq str1 (_read-nb 640000000 f1))
  9.   (setq str2 (syz-compress str1))
  10.   (_write-nb-str str2 f2)
  11.   (close f2)
  12.   (close f1)
  13. )
  14. (defun syz-jyasuo (fname1 fname2 / f1 f2 str1 str2)
  15.   (setq f1 (open fname1 "r"))
  16.   (setq f2 (open fname2 "w"))
  17.   (setq str1 (_read-nb 640000000 f1))
  18.   (setq str2 (syz-decompress str1))
  19.   (_write-nb-str str2 f2)
  20.   (close f2)
  21.   (close f1)
  22. )




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 5明经币 +5 收起 理由
Bao_lai + 1 很给力!
guosheyang + 1 赞一个!
ssyfeng + 1 赞一个!
1028695446 + 1 很给力!
飞雪神光 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-12-5 12:32:44 | 显示全部楼层
厉害,学习了!

评分

参与人数 1明经币 +1 收起 理由
baitang36 + 1 神马都是浮云

查看全部评分

发表于 2023-12-5 13:30:24 | 显示全部楼层
感谢大佬分享~

评分

参与人数 1明经币 +1 收起 理由
baitang36 + 1 神马都是浮云

查看全部评分

发表于 2023-12-5 16:22:30 来自手机 | 显示全部楼层
玩出新花样~
发表于 2023-12-5 16:25:25 | 显示全部楼层
感谢楼主分享!
 楼主| 发表于 2023-12-6 09:00:42 | 显示全部楼层
无币的朋友在这里下载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-12-6 09:00:57 | 显示全部楼层
感谢楼主分享!
发表于 2024-10-13 12:56:29 | 显示全部楼层
把压缩包解压到某路径,怎讲处理呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 04:47 , Processed in 0.156022 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表