明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: lengxiaxi

[讨论] 图纸合并源码--待改善

[复制链接]
 楼主| 发表于 2023-3-10 11:07:00 | 显示全部楼层
  1. (defun c:hbtz (/ tzml filelst i x y pmax pmin zx ys dx dy cdy dwg fn fd)
  2.   (vl-load-com)
  3.   (defun browseforfolder (msg / shfolder path catchit)
  4.     (setq shfolder (vlax-invoke-method (vlax-create-object "Shell.Application")
  5.                                        'browseforfolder
  6.                                        (vlax-get-property
  7.                                                           (vlax-get-acad-object)
  8.                                                           'hwnd
  9.                                        ) msg 1
  10.                    )
  11.           catchit (vl-catch-all-apply '(lambda ()
  12.                                          (setq shfolder
  13.                                                (vlax-get-property shfolder
  14.                                                                   'self
  15.                                                )
  16.                                                path
  17.                                                (vlax-get-property shfolder
  18.                                                                   'path
  19.                                                )
  20.                                          )
  21.                                        )
  22.                   )
  23.     )
  24.     (if (vl-catch-all-error-p catchit)
  25.       nil
  26.       path
  27.     )
  28.   )
  29.   (setq tzml (browseforfolder "选择文件路径"))
  30.   (if (/= (substr tzml (strlen tzml)) "\")
  31.     (setq tzml (strcat tzml "\"))
  32.   )
  33.   (setq filelst (vl-directory-files tzml "*.dwg" 1))
  34.   (setq filelst (acad_strlsort filelst)
  35.         i -1
  36.         x 0
  37.         y 0
  38.         cdy 0
  39.   )
  40.   (setq fn (getint "\n[每行文件数量]<1>:"))
  41.   (if (not fn)
  42.     (setq fn 1)
  43.   )
  44.   (setq fd (getreal "\n[文件间距]<100>:"))
  45.   (if (not fd)
  46.     (setq fd 100)
  47.   )
  48.   (setvar "osmode" 0)
  49.   (setvar "attreq" 0)
  50.   (setvar "cmdecho" 0)
  51.   (command "ucs" "")
  52.   (while (setq dwg (nth (setq i (1+ i))
  53.                         filelst
  54.                    )
  55.          )
  56.     (prompt (strcat "\n" dwg))
  57.     (command "insert" (strcat tzml dwg) (list 0 0) "" "" "")
  58.     (vla-getboundingbox (vlax-ename->vla-object (entlast)) 'mi 'ma)
  59.     (setq pmax (vlax-safearray->list ma)
  60.           pmin (vlax-safearray->list mi)
  61.     )
  62.     (setq zx (list (car pmin) (cadr pmin))
  63.           ys (list (car pmax) (cadr pmax))
  64.     )
  65.     (setq dwg (entlast))
  66.     (command "rectangle" pmin pmax)
  67.     (command "change" (entlast) "" "P" "C" "1" "")
  68.     (command "move" dwg (entlast) "" (list (car zx) (cadr ys))
  69.              (list x y)
  70.     )
  71.     (setq dy (- (cadr ys) (cadr zx))
  72.           dx (- (car ys) (car zx))
  73.     )
  74.     (if (> dy cdy)
  75.       (setq cdy dy)
  76.     )
  77.     (if (= (rem (1+ i) fn) 0)
  78.       (setq x 0
  79.             y (- y cdy fd)
  80.             cdy 0
  81.       )
  82.       (setq x (+ x dx fd))
  83.     )
  84.   )
  85.   (princ)
  86. )



这段代码,如何加入(command "_explode" "all" ""),使得插入前,分解每一个图块和标注样式;最好是重命名块和标注样式(随机名字也可以)
发表于 2024-4-23 08:25:31 | 显示全部楼层
感谢分享,也遇见这个问题了~
存档备用学习~
发表于 2024-4-23 08:56:18 | 显示全部楼层
合并后的效果应该是这样的。


本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-10 10:33 , Processed in 0.145244 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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