明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1228|回复: 9

[提问] 从块参照内复制图形到指定020划线层

[复制链接]
发表于 2025-8-6 20:23:55 | 显示全部楼层 |阅读模式
50明经币
这是我请社区的的一个老师给编辑的一个小代码,但是考虑不到。所以功能不够完美,最近用的比较多 ,所以就想请社区的那为老师给优化一下代码,本人纯小白。
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

你现在的代码根本没有处理块内图形。 新写了一个,最后不需要复制了再删除,直接用移动才好。 块会自动被分解到底。 没有测试
回复

使用道具 举报

发表于 2025-8-6 20:23:56 | 显示全部楼层
本帖最后由 kozmosovia 于 2025-8-7 11:06 编辑

你现在的代码根本没有处理块内图形。
新写了一个,最后不需要复制了再删除,直接用移动才好。
块会自动被分解到底。
没有测试
  1. (defun c:sx (/ _copy chklay *ERROR*_BAK IDX OBJ SS SSX T-*ERROR*)
  2.   (defun T-*error* (msg)
  3.     (and ssx (vl-cmdf "_.erase" ssx "")) ;删除图元
  4.     (setq *error* *error*_bak)
  5.     (princ)
  6.   )
  7.   (defun chklay  (layname col /)
  8.     (if  (null (tblsearch "layer" layname))
  9.       (vl-cmdf "-layer" "n" layname "c" col layname "")
  10.     )
  11.   )
  12.   (Defun _copy (ss / IDX OBJ RTN)
  13.     (setq idx -1)
  14.     (repeat (sslength ss)
  15.       (and (setq obj (vl-remove-if
  16.            (function
  17.        (lambda (x)
  18.          (member (car x) (list -1 5 62 420 421))
  19.        )
  20.            )
  21.            (entget (ssname ss (setq idx (1+ idx))))
  22.          )
  23.      obj (entmakex (subst (cons 8 "020划线") (assoc 8 obj) obj))
  24.      )
  25.      (if (= (cdr (assoc 0 (entget obj))) "INSERT")
  26.        (setq obj (vl-cmdf "_.explode" obj)
  27.        rtn (append rtn (_copy (ssget "_p")))
  28.        )
  29.        (setq rtn (cons obj rtn))
  30.      )
  31.       )
  32.     )
  33.     rtn
  34.   )
  35.   (setq  *error*_bak
  36.    *error*
  37.   *error*  T-*error*
  38.   )
  39.   (chklay "020划线" "250")
  40.   (and (setq ss (ssget))
  41.        (setq ss (_Copy ss))
  42.        (setq ssx (ssadd))
  43.        (progn (foreach abc ss (ssadd abc ssx))
  44.         (vl-cmdf "_.Move" ssx "" pause pause "") ;复制
  45.        )
  46.   )
  47.   (princ)
  48. )



回复

使用道具 举报

发表于 2025-8-7 09:52:42 | 显示全部楼层
本帖最后由 pyj643921 于 2025-8-13 08:02 编辑

最好上传个文件
按自己理解写了一个




本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2025-8-7 14:57:43 | 显示全部楼层
本帖最后由 孙玉坤 于 2025-8-7 15:01 编辑
kozmosovia 发表于 2025-8-7 10:05
你现在的代码根本没有处理块内图形。
新写了一个,最后不需要复制了再删除,直接用移动才好。
块会自动被 ...

就是想要的真功能 ,我用了一下 现在的代码就是能复制出图形到指定层 ,但在原图也多复制了一份图形
复制有线宽的图形,  也一起把线宽改为o

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-8-7 22:21:58 | 显示全部楼层
没看懂啥意思


本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2025-8-9 23:39:09 | 显示全部楼层
本帖最后由 孙玉坤 于 2025-8-11 00:45 编辑
kozmosovia 发表于 2025-8-6 20:23
你现在的代码根本没有处理块内图形。
新写了一个,最后不需要复制了再删除,直接用移动才好。
块会自动被 ...

这段代码能实现想要的效果,就是多复制了一份块本层的图型,是线宽的不能炸开我0宽   大师有时间帮我优化一下
回复

使用道具 举报

 楼主| 发表于 2025-8-12 15:08:21 | 显示全部楼层
pyj643921 发表于 2025-8-7 09:52
最好上传个文件
按自己理解写了一个

大师能添加捕捉点就完美了
回复

使用道具 举报

发表于 2025-8-12 15:51:32 | 显示全部楼层
孙玉坤 发表于 2025-8-12 15:08
大师能添加捕捉点就完美了

本身就可以捕捉的,可能你没开捕捉吧
回复

使用道具 举报

 楼主| 发表于 2025-8-12 16:22:30 | 显示全部楼层
pyj643921 发表于 2025-8-12 15:51
本身就可以捕捉的,可能你没开捕捉吧

我怪我没有表达清楚,复制后可以捕捉,  就是原图块不能捕捉移动点,会自动捕捉块中心点
回复

使用道具 举报

发表于 2025-8-13 08:02:55 | 显示全部楼层
孙玉坤 发表于 2025-8-12 16:22
我怪我没有表达清楚,复制后可以捕捉,  就是原图块不能捕捉移动点,会自动捕捉块中心点

已更新代码,重新下载就可以了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-12 04:09 , Processed in 0.173995 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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