明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: ludaweb

在秋枫发布的源码基础上修改的批量打印程序v3.6.1(2024-03-17更新)

    [复制链接]
发表于 2019-1-25 09:03 | 显示全部楼层
本帖最后由 tooo 于 2019-1-25 09:04 编辑
e2002 发表于 2019-1-24 19:34
关键是 排序规则和排序算法。因为最近刚写了BatchLayouts程序,就这个问题和 qf 讨论过。
按左右,上下 ...

感谢版主回复。
找了一下秋版源码,图框排序应该是这一段:

;;对图框排序
  (defun OrderFrames (bdlist / vscoor)
    (defun vscoor (n)      ; 屏幕视觉坐标,允许误差啦~大致相同就相同了。
      (fix (/ n (/ (getvar "viewsize") 100.0)))
    )
    ;; main orderframes
    (if  (= (getvalue 'PlotOrder) "LeftToRightRadio")
      (setq bdlist (vl-sort bdlist
          '(lambda (f1 f2 / rt x1 y1 x2 y2 vs)
          ; x1, y1对应于第一组的图框中心点的坐标
             (setq y1 (vscoor (cadar f1)))
             (setq y2 (vscoor (cadar f2)))
             (setq x1 (vscoor (caar f1)))
             (setq x2 (vscoor (caar f2)))
             (setq rt (> y1 y2))
          ;优先Y坐标比较,大的话在前
             (if (and (null rt) (= y1 y2))
          ;Y坐标相同时,比较X坐标,小的话在前
         (setq rt (< x1 x2))
             )
             rt
           )
       )
      )
    )
    (if  (= (getvalue 'PlotOrder) "TopToBottomRadio")
      (setq bdlist (vl-sort bdlist
          '(lambda (f1 f2 / rt)
             (setq y1 (vscoor (cadar f1)))
             (setq y2 (vscoor (cadar f2)))
             (setq x1 (vscoor (caar f1)))
             (setq x2 (vscoor (caar f2)))
             (setq rt (< x1 x2))
          ;优先X坐标比较,小的话在前
             (if (and (null rt) (= x1 x2))
          ;当X坐标相同时,比较Y坐标,大的话在前
         (setq rt (> y1 y2))
             )
             rt
           )
       )
      )
    )
    (if  (= (getvalue 'ReverseOrder) "1")
      (setq bdlist (reverse bdlist))
    )
    bdlist
  )

如何对bdlist执行两次vl-sort呢?是在前两个 if 语句后完整重复同样代码一次,还是在各个 if 语句后各自重复,又或是其它,求指教。
发表于 2019-1-26 14:13 | 显示全部楼层
佩服,终于等到更新,很实用,非常感谢
发表于 2019-1-26 15:13 | 显示全部楼层
能自动对应纸张大小就完美了!

点评

下一步的改机计划包括这个自动适配pagesetup。 国标GB50001-2017中就这些有限数量的图纸幅面,实际由于有竖向,总数是横向的约2倍(A4的只有竖向)。  发表于 2019-1-26 19:20
发表于 2019-1-26 19:31 | 显示全部楼层
本帖最后由 e2002 于 2019-1-26 19:33 编辑
tooo 发表于 2019-1-25 09:03
感谢版主回复。
找了一下秋版源码,图框排序应该是这一段:




  1. ;; 边界列表的2次排序函数
  2.   (defun _lkpt_Layout_CreateByTitleBlocks_Sort ( / i1 sym1 i2 sym2 l_sort u v lReturn)
  3.     (cond
  4.       ( (= sSort "1") (setq i1 1 sym1 '> i2 0 sym2 '<) );;左到右,上到下
  5.       ( (= sSort "2") (setq i1 1 sym1 '< i2 0 sym2 '<) );;左到右,下到上
  6.       ( (= sSort "3") (setq i1 1 sym1 '> i2 0 sym2 '>) );;右到左,上到下
  7.       ( (= sSort "4") (setq i1 1 sym1 '< i2 0 sym2 '>) );;右到左,下到上
  8.       ( (= sSort "5") (setq i1 0 sym1 '< i2 1 sym2 '>) );;上到下,左到右
  9.       ( (= sSort "6") (setq i1 0 sym1 '> i2 1 sym2 '>) );;上到下,右到左
  10.       ( (= sSort "7") (setq i1 0 sym1 '< i2 1 sym2 '<) );;下到上,左到右
  11.       ( (= sSort "8") (setq i1 0 sym1 '> i2 1 sym2 '<) );;下到上,右到左
  12.     )
  13. ;; 第一次排序
  14.     (setq l_sort (vl-sort lBoundarys '(lambda (u v) ((vl-symbol-value sym1) (nth i1 (car u)) (nth i1 (car v))))))
  15. ;; 第二次排序,考虑 rFuzzy
  16.     (setq l_sort (vl-sort l_sort '(lambda (u v) (if (< (abs (- (nth i1 (car u)) (nth i1 (car v)))) rFuzzy)
  17.                                                   ((vl-symbol-value sym2) (nth i2 (car u)) (nth i2 (car v)))
  18.                                                   nil
  19.                                                 )
  20.                                   )
  21.                  )
  22.     )
  23.     (setq lReturn l_sort)
  24.   );end defun _lkpt_Layout_CreateByTitleBlocks_Sort



本帖子中包含更多资源

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

x
发表于 2019-1-27 13:58 | 显示全部楼层
下载最新版(修改日期2019.01.27),图块自匹配勾选后,无法预览,也无法打印,是什么原因呐?
发表于 2019-1-27 14:28 | 显示全部楼层
大神 一直在使用您的程序 收益良多    非常感谢又更新了      这次更新的图块自匹配功能碰到一个问题,图块设置好后,无法打出PDF,点击确定了就直接退出了,CAD平面显示第一张图满布状态。

本帖子中包含更多资源

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

x
回复 支持 2 反对 0

使用道具 举报

发表于 2019-1-27 14:31 | 显示全部楼层
zh0n9wen 发表于 2019-1-27 13:58
下载最新版(修改日期2019.01.27),图块自匹配勾选后,无法预览,也无法打印,是什么原因呐?

遇到相同问题了
发表于 2019-1-28 08:59 | 显示全部楼层
右手边 发表于 2019-1-27 14:28
大神 一直在使用您的程序 收益良多    非常感谢又更新了      这次更新的图块自匹配功能碰到一个问题 ...

跟我情况一样,静待楼主解决问题
发表于 2019-1-28 10:58 | 显示全部楼层
楼主,麻烦看一下,一开始设置的时候是好的额,不知道怎么回事,用了两次后就出现这个对话框了。

本帖子中包含更多资源

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

x
发表于 2019-1-28 17:18 | 显示全部楼层
fs7jpw 发表于 2019-1-28 10:58
楼主,麻烦看一下,一开始设置的时候是好的额,不知道怎么回事,用了两次后就出现这个对话框了。

估计是你预设的种类太多了  对话框放不下了  你减少种类试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 09:03 , Processed in 0.175279 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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