明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1117|回复: 1

【K:GetPaperType】计算纸张类型和加长比

[复制链接]
发表于 2023-3-14 22:03:53 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2023-3-16 01:23 编辑

算是优化这个帖子的算法:http://bbs.mjtd.com/thread-186349-1-1.html

计算纸张类型和加长比(以1/4为基数,1/8为四舍五入范围)

实际的感觉大概是这样:



加载后使用:
  1. (K:GetPaperType 210.0 335.0)

结果输出:
  1. A4+1/4


  1. ;计算纸张类型和加长比
  2. (defun K:GetPaperType (Num1 Num2 / Lenght Width PaperType PaperExt Round FVar)
  3.   (setq Lenght (max Num1 Num2));矩形长度
  4.   (setq Width (min Num1 Num2));矩形宽度
  5.   (setq PaperType
  6.       (/
  7.         (log (/ 1000000.0 (sqrt 2.0) (expt Width 2)))
  8.         (log 2.0)
  9.       )
  10.   );A几的纸张
  11.   (setq PaperExt (- Lenght (* (sqrt 2.0) Width) ));加长部分的长度
  12.   (setq Round (/ (* (sqrt 2) Width) 4.0));设置舍入容差
  13.   (Setq FVar (/ (fix (/ (+ PaperExt (* Round 0.5)) Round)) 4.0) );四舍五入加长部分的占比
  14.   (strcat "A" (rtos PaperType 2 0) "+" (rtos FVar 5 4))
  15. )


应用实例:
假设我们获取了打印机自定义纸张的列表如下:
  1. (setq CustomPaperLst
  2.   '(
  3.     "UserDefinedMetric (210.00 x 297.00毫米)"
  4.     "UserDefinedMetric (297.00 x 420.00毫米)"
  5.     "UserDefinedMetric (420.00 x 594.00毫米)"
  6.     "UserDefinedMetric (594.00 x 841.00毫米)"
  7.     "UserDefinedMetric (841.00 x 1189.00毫米)"
  8.     "UserDefinedMetric (80.00 x 80.00毫米)"
  9.   )
  10. )

配合这个函数:
  1. ;从字符串中逐个提取数字成表
  2. (defun K:Str2NumLst (str)
  3.   (read
  4.     (vl-list->string
  5.       (append
  6.         '(40) ;"("
  7.         (mapcar
  8.           '(lambda (xx) (if (or (= 46 xx) (<= 48 xx 57)) xx 32))
  9.           (vl-string->list str)
  10.         )
  11.         '(41) ;")"
  12.       )
  13.     )
  14.   )
  15. )


然后这样使用,我们就可以得到打印机纸张对应的纸张类型:
  1. (mapcar
  2.     '(lambda (XX)
  3.       (K:GetPaperType (car (K:Str2NumLst XX)) (cadr (K:Str2NumLst XX)))
  4.     )
  5.     CustomPaperLst
  6. )



这是最终输出的结果:
  1. ("A4+0" "A3+0" "A2+0" "A1+0" "A0+0" "A7+0")




利用这个列表,也许我们可以和批量打印结合在一起,自动推荐纸张大小:
  1. (vl-position (strcase "A4+0" ) (mapcar 'strcase '("A4+0" "A3+0" "A2+0" "A1+0" "A0+0" "A7+0")))

  





本帖子中包含更多资源

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

x

评分

参与人数 1金钱 +10 收起 理由
bloodtempt + 10 很给力!

查看全部评分

发表于 2024-2-23 11:47:54 | 显示全部楼层
能自动选择嘛?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-24 03:45 , Processed in 0.196995 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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