乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 96|回复: 7

[编程交流] 删除所有布局的对象

[复制链接]

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-5 16:40:46 | 显示全部楼层 |阅读模式
我想用Lisp程序来做例行公事。
174048or8m8mpkyxy82za9.jpg
 
从照片中,我想删除区域A和区域B中的对象,用于图形中的其他布局。
 
我有几十张画来做同样的事情。
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-5 16:52:37 | 显示全部楼层
我在网上发现了一个Lisp程序的单词(不记得在哪里)
  1. (defun C:F4 ( / current_layout doc plotabs plottablist len K ss2)
  2. (setq current_layout (getvar "ctab"))
  3. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  4. (vlax-for lay (vla-get-Layouts doc)
  5.   (setq plotabs (cons (vla-get-name lay) plotabs))
  6. )
  7. (setq plottablist (acad_strlsort plotabs))
  8. (setq len (length plottablist))
  9. (setvar "osmode" 0)
  10. (setq K 0)
  11. (repeat len
  12.   (setq name (nth K plottablist))
  13.   (if (and (/= name "Model") (/= name current_layout))
  14.         (progn
  15.         (setvar "ctab" name)
  16.         (command "zoom" "E") ;put what you want to here as many lines as you want like (command "erase" "W" 0,0 50,35 "")
  17.         (command "erase" "W" '(250 76) '(422 17) "")
  18.         (command "erase" "W" '(666 70) '(686 60) "")
  19.         ) ;end progn
  20. ) ; end if
  21. (setq K (+ K 1))
  22. (setq ss2 '())
  23. ) ; end repeat
  24. (setvar "ctab" current_layout)
  25. (princ)
  26. );defun

 
我不想在擦除对象期间切换每个布局。
 
知道如何修改这个lisp吗?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:05:25 | 显示全部楼层
如果你想做100,那么使用脚本
 
打开dwg1(加载“F4.lsp”)F4关闭y
打开dwg2(加载“F4.lsp”)F4关闭y
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-5 17:14:14 | 显示全部楼层
它适用于AutoCAD 2013。
 
但是,在AutoCAD 2015中,它将在命令F4后停止。
 
这是我的剧本:
打开dwg1(加载“F4.lsp”)F4 \u qsave \u close
打开dwg2(加载“F4.lsp”)F4 \u qsave \u close
.
.
.
打开dwg100(加载“F4.lsp”)F4 \u qsave \u close
 
我更新的lisp:
  1. (vl-load-com)
  2. (defun ss-union ( s1 s2 / si )
  3.    (cond
  4.        (   (null s1) s2)
  5.        (   (null s2) s1)
  6.        (   (< (sslength s1) (sslength s2))
  7.            (repeat (setq si (sslength s1))
  8.                (ssadd (ssname s1 (setq si (1- si))) s2)
  9.            )
  10.            s2
  11.        )
  12.        (   t
  13.            (repeat (setq si (sslength s2))
  14.                (ssadd (ssname s2 (setq si (1- si))) s1)
  15.            )
  16.            s1
  17.        )
  18.    )
  19. )
  20. (defun C:E1 ( / current_layout doc plotabs plottablist len K ss2 BBP ssg ss ssw1 ssw2)
  21. ; (setq current_layout (getvar "ctab"))
  22. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  23. (vlax-for lay (vla-get-Layouts doc)
  24.   (setq plotabs (cons (vla-get-name lay) plotabs))
  25. )
  26. (setq plottablist (acad_strlsort plotabs))
  27. (setq len (length plottablist))
  28. ; (setvar "osmode" 0)
  29. (setq K 0)
  30. (repeat len
  31.   (setq name (nth K plottablist))
  32.   (if (/= name "Model")
  33.         (progn
  34.                 (setvar "ctab" name)
  35.                 (command "zoom" "E")
  36.                 (if (setq ssg (ssget "X" (list '(2 . "Drawing Frame") (cons 410 (getvar "ctab")))))
  37.                         (progn
  38.                                 (setq BBP (cdr (assoc 10 (entget (ssname ssg 0)))))
  39.                                 (setq BBP (list (car BBP) (cadr BBP)))
  40.                                 (setq wp1 (list (+ (car BBP) 254) (+ (cadr BBP) 65)))
  41.                                 (setq wp2 (list (+ (car BBP) 420) (+ (cadr BBP) 20)))
  42.                                 (setq wp3 (list (+ (car BBP) 665) (+ (cadr BBP) 70)))
  43.                                 (setq wp4 (list (+ (car BBP) 684) (+ (cadr BBP) 62)))
  44.                         )
  45.                 )
  46.                 ; (command "zoom" "E") ;put what you want to here as many lines as you want like (command "erase" "W" 0,0 50,35 "")
  47.                 (if (setq ssw1 (ssget "_W" wp1 wp2))
  48.                         (setq ss (ss-union ss ssw1))
  49.                 )
  50.                 (if (setq ssw2 (ssget "_W" wp3 wp4))
  51.                         (setq ss (ss-union ss ssw2))
  52.                 )
  53.                 (if ss
  54.                         (progn
  55.                                 (command "_erase" ss "")
  56.                                 ; (command "pasteclip" '(0 0 0))
  57.                         )
  58.                 )
  59.         ) ;end progn
  60. ) ; end if
  61. (setq K (+ K 1))
  62. (setq ss2 '())
  63. ) ; end repeat
  64. ; (command "_qsave")
  65. ; (setvar "ctab" current_layout)
  66. (princ)
  67. );defun
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:17:03 | 显示全部楼层
只是一个猜测(setq ss2’())它没有在任何地方使用。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:24:58 | 显示全部楼层
Ronjonp在这里做了类似的事情,但它从每个布局中删除了窗口。
然而,cadplayer在那里发布了一个版本来修改选定的布局(使用LM的列表框),但您需要在那里注册。
 
  1. ; https://www.theswamp.org/index.php?topic=51868.msg569126#msg569126
  2. (defun c:usewithcaution        (/ p1 p2 ss)
  3. (vl-load-com)
  4. (if (and (= 0 (getvar 'tilemode))
  5.    (setq p1 (getpoint "\nSpecify first corner point: "))
  6.    (setq p2 (getcorner p1 "\nSpecify other corner point: "))
  7. )
  8. (foreach tab (layoutlist)
  9.    (setvar 'ctab tab)
  10.    (and (= 1 (getvar 'cvport)) (vlax-invoke (vlax-get-acad-object) 'zoomwindow p1 p2))
  11.    (if (setq ss (ssget "W" p1 p2 (list (cons 410 tab))))
  12.      (mapcar 'entdel (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))
  13.    )
  14. )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:32:27 | 显示全部楼层
也可以在脚本中尝试(命令“F4”)或(c:F4)
回复

使用道具 举报

6

主题

18

帖子

15

银币

初来乍到

Rank: 1

铜币
28
发表于 2022-7-5 17:48:49 | 显示全部楼层
 
运行多个图形后,停止“恢复缓存的视口-重新生成布局”
 
脚本适用于2013年和2014年版本。所以,我并不是在试图解决2015年停止的原因。谢谢你,比格尔。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-20 15:30 , Processed in 0.565004 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表