edata 发表于 2019-8-18 00:03:12

文本生成二维码lisp表

如果在DCL上显示二维码,如果不需要显示二维码中的图片,可以试试这个..使用方式,输入文本生成list表

复制list表替换lisp中的表

命令tt测试DCL显示的效果.

优点,存储的数据很小.因为只是保存的二维码的数据,也可以使用这个编码的表来生成CAD中的图形,
程序是C++MFC编译的Win32程序,应该大多数win系统可以直接运行
缺点,对于lisp来说,如果需要动态生成,这个就不实用了.
如果你只有二维码图片,可以使用在线的二维码识别网站识别出来,然后复制解码后的文本,再使用这个生成lisp表.




附件为exe程序

下面是测试的lisp代码,简单测试
(defun c:tt(/ file f dcl_id)
(setq file (vl-filename-mktemp "myapp.dcl"))
(setq f(open file "w"))
(write-line "mydlg:dialog {" f)
(write-line "    :image {" f)
(write-line "      height = 15 ;" f)
(write-line "      key = \"img\" ;" f)
(write-line "      width = 30 ;" f)
(write-line "    }" f)
(write-line "    ok_only;" f)
(write-line "}" f)
(close f)

(setq dcl_id(load_dialog file))
(print dcl_id)
(vl-file-delete file)
(setq lst(list
       (list1 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1)
       (list1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1)
       (list1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1)
       (list1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1)
       (list1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1)
       (list1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1)
       (list1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1)
       (list0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0)
       (list0 0 1 1 0 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 0 0 0)
       (list0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 1)
       (list0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1)
       (list1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1)
       (list0 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0)
       (list0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1)
       (list0 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0)
       (list0 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0)
       (list1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 1 1 0 1)
       (list1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1)
       (list1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 1)
       (list0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1)
       (list1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0)
       (list0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 1)
       (list0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0)
       (list0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0)
       (list0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1)
       (list0 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0)
       (list0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0)
       (list1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1)
       (list0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 1 0)
       (list0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 0 1 1 1 0 1)
       (list1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 1)
       (list1 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1)
       (list1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0)
       (list1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1)
       (list1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0)
       (list1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 1 1 0 0)
       (list1 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1)
       )
)
(new_dialog "mydlg" dcl_id)
(setq w(dimx_tile "img"))
(setq h(dimy_tile "img"))
(start_image "img")
(fill_image 0 0 w h -15)
(setq num (length(car lst)))
(setq sw(fix(/ w num)))
(setq j -1)
(foreach k lst   
    (setq j(1+ j))
    (setq i -1)
    (foreach n k
   (setq i(1+ i))
      (if (= n 1)(fill_image (* i sw) (* j sw) sw sw 0))
      )
    )   
(end_image)
(start_dialog)
)

edata 发表于 2019-8-18 13:35:07

言戲無軍 发表于 2019-8-18 11:05
win10提示特洛伊木马,好难

我也是win10,没有这样的提示,并且在http://www.virscan.org/language/zh-cn/在线扫描,没有一个会报毒的.
vc编译的程序,也没有加压缩,加壳之类的.理论上是不会报的.
你自行斟酌.

言戲無軍 发表于 2019-8-18 13:46:06

edata 发表于 2019-8-18 13:35
我也是win10,没有这样的提示,并且在http://www.virscan.org/language/zh-cn/在线扫描,没有一个会报毒的.
...

可能是win10没激活的原因,乱杀

ludaweb 发表于 2019-8-18 10:03:43


太厉害了,大神。
如果把数据从字符串转换成list数组这部分不是使用C++MFC,而是用lisp算法实现就好了,这样就能动态生成二维码了。

mokson 发表于 2019-8-18 07:58:35

表示深奥,只有叹服。

言戲無軍 发表于 2019-8-18 10:59:04

厉害的不行

言戲無軍 发表于 2019-8-18 11:05:26

win10提示特洛伊木马,好难

songyujie928 发表于 2019-8-18 14:48:04

很强大,体积很小

zixuan203344 发表于 2019-8-18 15:06:03

E大牛逼(爆破音)!

kozmosovia 发表于 2019-8-19 10:16:13

有二维码图片就可以直接用AX读取图片点阵颜色导出1 0列表。
页: [1] 2 3
查看完整版本: 文本生成二维码lisp表