xiaomm250
发表于 2023-4-3 16:12:21
vitalgg 发表于 2023-4-3 13:12
选择集变图元列表。然后 foreach 或 mapcar
还有一个问题,比如有
布局1
布局2
布局3
布局4
布局5
布局6
布局7
布局8
布局9
布局10
布局11
布局12
布局13
布局14
布局15
布局16
布局17
布局18
布局19
布局20
这样二十个布局,
我需要删除相同位置的相同图元。
就像一堆纸,我想实现在第一张纸上盖章,然后下面的所有的纸上都盖上这个章,
但是在盖章之前,我需要批量操作,把盖章的位置都擦干净!(把所有的纸上的对应位置都擦干净)
vitalgg
发表于 2023-4-3 17:47:50
xiaomm250 发表于 2023-4-3 16:02
你好,有办法获取所有的布局的名称吗?
比如有的名称叫“布局1”,有的可能叫“布局a”,
要复制到布局 ...
vitalgg
发表于 2023-4-3 17:58:46
xiaomm250 发表于 2023-4-3 16:12
还有一个问题,比如有
布局1
布局2
(ssget "x" (list '(0 . "图元类型")'(410 . "布局名") '(-4 . ">,>,*") '(10X1 Y1 Z1)'(-4 . “<,<,*")'(10X2 Y2 Z2)))
上面只是个选择示例。只有 "x" 参数可以无视实际是否显示屏幕区域上。
其它需要先把要删除的布局和图元显示到屏幕上,然后用 ssget 选中并删除。
nyistjz
发表于 2023-4-3 19:49:09
Klein 发表于 2023-4-3 13:56
或者试一试用commond命令的chspace?
正解!
gaics
发表于 2023-4-4 07:57:38
本帖最后由 gaics 于 2023-4-4 07:59 编辑
xiaomm250 发表于 2023-4-3 16:02
你好,有办法获取所有的布局的名称吗?
比如有的名称叫“布局1”,有的可能叫“布局a”,
要复制到布局 ...
(getvar "CTAB")或者(layoutlist)
xiaomm250
发表于 2023-4-4 08:45:15
gaics 发表于 2023-4-4 07:57
(getvar "CTAB")或者(layoutlist)
(layoutlist)
这个不错,居然那么容易就获取得到所有的布局名称,缺点是布局名排序有问题
xiaomm250
发表于 2023-4-4 08:47:54
vitalgg 发表于 2023-4-3 17:58
(ssget "x" (list '(0 . "图元类型")'(410 . "布局名") '(-4 . ">,>,*") '(10X1 Y1 Z1)'(-4 . “
用CP行不?是这个CP不行吗?
vitalgg
发表于 2023-4-4 09:07:16
xiaomm250 发表于 2023-4-4 08:47
用CP行不?是这个CP不行吗?
CP 只能选中屏幕上显示的图元,显示区域以外的选不上。
@lisp函数 (layout:list) 可以按显示顺序列表。注意冒号。
xiaomm250
发表于 2023-4-4 10:49:27
vitalgg 发表于 2023-4-4 09:07
CP 只能选中屏幕上显示的图元,显示区域以外的选不上。
@lisp函数 (layout:list) 可以按显示顺序列表。 ...
(defun layout:list (/ a lst)
"按照当前屏幕显示的顺序返回所有布局名称"
"布局名列表"
(vlax-for a *layouts* (setq lst (cons (list (vla-get-taborder a)
(vla-get-name a))
lst)))
(cdr (mapcar (quote cadr)
(vl-sort lst (quote (lambda (x y)
(< (car x)
(car y))))))))你的这个简直就是宝库,我从那儿把你代码复制粘贴过来了。
https://gitee.com/atlisp/atlisp-lib/blob/main/src/layout/list.lsp
xiaomm250
发表于 2023-4-4 11:03:15
vitalgg 发表于 2023-4-4 09:07
CP 只能选中屏幕上显示的图元,显示区域以外的选不上。
@lisp函数 (layout:list) 可以按显示顺序列表。 ...
你的*layouts*又是什么东西?我总感觉你这代码不对,
你有你这lst似乎缺乏初值,还有vla-get-taborder,我怎么找不到相关的帮助?
明经的chm帮助文件,我搜索了,但是找不到!