yangyangyixia 发表于 2025-1-28 11:37:47

批量裁剪视口

本帖最后由 yangyangyixia 于 2025-1-28 15:49 编辑

论坛上没找到这个功能,拼凑出一个能用版本,菜鸟一个,大神看到不合适的地方指出来。
图元排序功能参考了 fsxm的扩展 自贡黄明儒 2013年9月9日


批量裁剪视口,使用时切换到需要操作的布局里面,提前布置好视口和裁剪框。


裁剪前:


裁剪后:



测试图纸:













vlisp2012 发表于 2025-1-28 15:16:53

楼主过年好,。我测试一下。多谢分享!!!

vlisp2012 发表于 2025-1-28 15:22:27

CAD2023测试不成功,只剩下4的视口,其余的视口消失了!

yangyangyixia 发表于 2025-1-28 15:47:05

vlisp2012 发表于 2025-1-28 15:22
CAD2023测试不成功,只剩下4的视口,其余的视口消失了!

cad2007/2018我都测试了没问题,你再试试?裁剪完的图纸你发上来我看看

vlisp2012 发表于 2025-1-28 17:00:06

这个附件式是我运行后保存的。请楼主查看。
消失的物体都在def图层,就是不显示,但是可以选择。

yangyangyixia 发表于 2025-1-28 17:30:17

本帖最后由 yangyangyixia 于 2025-1-28 17:32 编辑

vlisp2012 发表于 2025-1-28 17:00
这个附件式是我运行后保存的。请楼主查看。
消失的物体都在def图层,就是不显示,但是可以选择。
没看懂,这不是裁剪成功了吗,这就是视口裁剪后的样子,你的图中红线就是视口线

xyp1964 发表于 2025-1-30 10:34:45

;; 没必要需要排序
(defun c:tt ()
"视口修剪"
(defun mimx (s1 / p1 p9)
    (vla-getboundingbox (vlax-ename->vla-object s1) 'p1 'p9)
    (list (vlax-safearray->list p1) (vlax-safearray->list p9))
)
(setq i -1)
(if (setq ss (ssget '((0 . "*poly*"))))
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (setq a(mimx s1)
            p1 (car a)
            p9 (cadr a)
      )
      (vla-put-Closed (vlax-ename->vla-object s1) :vlax-true)
      (if (and (setq ss1 (ssget "c" p1 p9 '((0 . "VIEWPORT"))))
               (= (sslength ss1) 1)
          )
      (command "_vpclip" (ssname ss1 0) s1)
      )
    )
)
(princ)
)



yangyangyixia 发表于 2025-1-30 15:51:51

本帖最后由 yangyangyixia 于 2025-1-30 16:11 编辑

xyp1964 发表于 2025-1-30 10:34
;; 没必要需要排序
这个只是我在做的其他插件中一部分,我需要给每个视口排序,提取他们的旋转方向。


大佬,有时候视口不一定全部在裁剪线框内,有可能比它稍微大一点。

xyp1964 发表于 2025-1-31 11:07:23

yangyangyixia 发表于 2025-1-30 15:51
这个只是我在做的其他插件中一部分,我需要给每个视口排序,提取他们的旋转方向。




只针对提供的文件和标题:排序多余
页: [1]
查看完整版本: 批量裁剪视口