明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1436|回复: 32

[提问] 用lisp如何实现把一个图元从模型空间复制到布局空间呀

[复制链接]
发表于 2023-4-3 09:11:19 | 显示全部楼层 |阅读模式
用lisp如何实现把一个图元从模型空间复制到布局空间呢?



注意是用lisp,而不是人工手工操作!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-4-3 13:56:36 | 显示全部楼层
或者试一试用commond命令的chspace?

点评

模型空间的确没法用这个命令,但是你先用lisp切换到布局呀。。。  发表于 2023-4-4 14:03
没看懂没看明白,这个命令不能在模型空间里使用  发表于 2023-4-4 08:48
这个命令可以实现!  发表于 2023-4-3 19:50

评分

参与人数 1明经币 +1 收起 理由
nyistjz + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-3 14:50:17 | 显示全部楼层
本帖最后由 vitalgg 于 2023-4-3 15:09 编辑
xiaomm250 发表于 2023-4-3 13:32
缺一个子函数

pickset:to-list

https://gitee.com/atlisp/atlisp- ... pickset/to-list.lsp

我提供的代码中,有:号的都是@lisp函数库中的函数。
https://gitee.com/atlisp/atlisp-lib

全部开源,实时可查源码
安装@lisp后在CAD命令行输入 (fun:src '函数名) 即可查看。





关注微信公众号 CAD应用云 。输入功能说明查函数。





将以下代码复制到 CAD命令行,直接安装 @lisp
  1. (progn(vl-load-com)(setq s strcat h "http" o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://atlisp.""org/@"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))




本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-3 10:09:24 | 显示全部楼层
复制的话就是新建 改原图元的410组码的值为 布局名。然后 entmake 即可。
移动的话不能用 entmod 这个。

  1. (defun c:lll ()
  2.   (setq ent (car (entsel "tolayer1")))
  3.   (entmake
  4.     (subst (cons 410 "布局1")(assoc 410 (entget ent)) (entget ent))))
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-4-3 11:35:48 | 显示全部楼层
vitalgg 发表于 2023-4-3 10:09
复制的话就是新建 改原图元的410组码的值为 布局名。然后 entmake 即可。
移动的话不能用 entmod 这个。
...

谢谢,有时间我自己试一试!
 楼主| 发表于 2023-4-3 13:06:49 | 显示全部楼层
vitalgg 发表于 2023-4-3 10:09
复制的话就是新建 改原图元的410组码的值为 布局名。然后 entmake 即可。
移动的话不能用 entmod 这个。
...

有办法把一个选择集都搞到布局里面吗?比如我选择了很多线、文字,然后他们都在一个选择集,
然后需要复制粘贴到布局里面
发表于 2023-4-3 13:12:01 | 显示全部楼层
本帖最后由 vitalgg 于 2023-4-3 13:15 编辑

  1. (defun c:lll ()
  2.   (foreach ent (pickset:to-list (ssget))
  3.     (entmake
  4.       (subst (cons 410 "布局1") (assoc 410 (entget ent)) (entget ent))
  5.     )
  6.   )
  7. )
  8. (defun c:lll ()
  9.   (mapcar
  10.     '(lambda (ent)
  11.        (entmake
  12.          (subst (cons 410 "布局1") (assoc 410 (entget ent)) (entget ent))
  13.        )
  14.      )
  15.     (pickset:to-list (ssget))
  16.   )
  17. )


选择集变图元列表。然后 foreach 或 mapcar

 楼主| 发表于 2023-4-3 13:32:17 | 显示全部楼层
vitalgg 发表于 2023-4-3 13:12
选择集变图元列表。然后 foreach 或 mapcar

缺一个子函数

pickset:to-list


看来还是我自己写吧
 楼主| 发表于 2023-4-3 13:33:31 | 显示全部楼层
vitalgg 发表于 2023-4-3 13:12
选择集变图元列表。然后 foreach 或 mapcar

看来你写的代码比较多,我还是自己搞一个循环之类的,虽然比较笨,但是程序相对容易理解之类的!
 楼主| 发表于 2023-4-3 16:02:25 | 显示全部楼层
vitalgg 发表于 2023-4-3 14:50
https://gitee.com/atlisp/atlisp- ... pickset/to-list.lsp

我提供的代码中,有:号的都是@lisp函数库 ...

你好,有办法获取所有的布局的名称吗?
比如有的名称叫“布局1”,有的可能叫“布局a”,
要复制到布局,首先得知道他们的名称
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 14:49 , Processed in 0.190714 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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