明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2632|回复: 14

[提问] cad图形复制平移与原图重叠了,求大神们帮忙想想处理方式,图大我发一部分上来

[复制链接]
发表于 2017-10-16 16:01 | 显示全部楼层 |阅读模式
2明经币
cad图形整体复制平移了,造成与原图重叠严重,求大神帮忙,图大,我弄一小块给大家看下,求帮忙!!!

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2017-10-16 16:44 | 显示全部楼层
ET工具overkill
论坛里有消重工具,可以搜索一下
回复

使用道具 举报

 楼主| 发表于 2017-10-16 17:01 | 显示全部楼层
感谢,overkill处理不了,我看看其他消重能不能处理这种重复
回复

使用道具 举报

发表于 2017-10-17 09:49 | 显示全部楼层
高版本有CAD删重复功能的,超级强大。
回复

使用道具 举报

发表于 2017-10-17 10:49 | 显示全部楼层
路过,学习了
回复

使用道具 举报

发表于 2017-10-17 14:46 | 显示全部楼层
本帖最后由 Gu_xl 于 2017-10-17 14:48 编辑

  1. ;; 删除重复移动对象 By Gu_xl 2017.10.17
  2. (defun C:DUMPENT (/         BLOCKS        DXF41  DXF411 DXF42  DXF421 DXF43
  3.                   DXF431 DXF50        DXF501 DXF7   DXF71  E2            EL
  4.                   EN         ENAME        I      K      LEN    LEN1   LINES
  5.                   N         NAME        NAME1  NN     P0     P1            POLYS
  6.                   PP0         PP1        SS     TEXTS  VEC    VEC1   VEC2
  7.                  )
  8.   (if (setq ss (ssget))
  9.     (progn
  10.       (setq nn 0)
  11.       (if (and
  12.             (setq p0 (getpoint "\n基准点:"))
  13.             (setq p1 (getpoint "\n平移点:"))
  14.           )
  15.         (progn
  16.           (setq vec (mapcar '- p1 p0))
  17.           (setq        lines nil
  18.                 polys nil
  19.                 blocks nil
  20.                 texts nil
  21.           )
  22.           (repeat (setq n (sslength ss))
  23.             (setq en (ssname ss (setq n (1- n))))
  24.             (setq el        (entget en)
  25.                   ename        (cdr (assoc 0 el))
  26.             )
  27.             (cond
  28.               ((= "LINE" ename) (setq lines (cons en lines)))
  29.               ((or (WCMATCH ename "*POLYLINE") (= "ARC" ename))
  30.                (setq polys (cons en polys))
  31.               )
  32.               ((= "INSERT" ename) (setq blocks (cons en blocks)))
  33.               ((WCMATCH ename "*TEXT") (setq texts (cons en texts)))
  34.             )
  35.           )
  36.           (if lines
  37.             (progn
  38.               (setq i 0)
  39.               (foreach e1 lines
  40.                 (if (not (vlax-erased-p e1))
  41.                   (progn
  42.                     (setq k 0)
  43.                     (setq p0 (vlax-curve-getStartPoint e1))
  44.                     (setq pp0 (vlax-curve-getEndPoint e1))
  45.                     (while (< k (length lines))
  46.                       (setq e2 (nth k lines))
  47.                       (setq p1 (vlax-curve-getStartPoint e2))
  48.                       (setq vec1 (mapcar '- p1 p0))
  49.                       (setq pp1 (vlax-curve-getEndPoint e2))
  50.                       (setq vec2 (mapcar '- pp1 pp0))
  51.                       (if (and
  52.                             (equal vec vec1 1e-3)
  53.                             (equal vec vec2 1e-3)
  54.                           )
  55.                         (progn
  56.                           (entdel e2)
  57.                           (setq nn (1+ nn))
  58.                           (setq lines (vl-remove e2 lines))
  59.                         )
  60.                         (progn
  61.                           (setq k (1+ k))
  62.                         )
  63.                       )
  64.                     )
  65.                   )
  66.                 )

  67.               )
  68.             )
  69.           )
  70.           (if polys
  71.             (progn
  72.               (setq i 0)
  73.               (foreach e1 polys
  74.                 (if (not (vlax-erased-p e1))
  75.                   (progn
  76.                     (setq k 0)
  77.                     (setq p0 (vlax-curve-getStartPoint e1))
  78.                     (setq pp0 (vlax-curve-getEndPoint e1))
  79.                     (setq len (vlax-curve-getDistAtParam
  80.                                 e1
  81.                                 (vlax-curve-getEndParam e1)
  82.                               )
  83.                     )
  84.                     (while (< k (length polys))
  85.                       (setq e2 (nth k polys))
  86.                       (setq p1 (vlax-curve-getStartPoint e2))
  87.                       (setq vec1 (mapcar '- p1 p0))
  88.                       (setq pp1 (vlax-curve-getEndPoint e2))
  89.                       (setq vec2 (mapcar '- pp1 pp0))
  90.                       (setq len1 (vlax-curve-getDistAtParam
  91.                                    e2
  92.                                    (vlax-curve-getEndParam e2)
  93.                                  )
  94.                       )
  95.                       (if (and
  96.                             (equal vec vec1 1e-3)
  97.                             (equal vec vec2 1e-3)
  98.                             (equal len len1 1e-3)
  99.                           )
  100.                         (progn
  101.                           (entdel e2)
  102.                           (setq nn (1+ nn))
  103.                           (setq polys (vl-remove e2 polys))
  104.                         )
  105.                         (progn
  106.                           (setq k (1+ k))
  107.                         )
  108.                       )
  109.                     )
  110.                   )
  111.                 )
  112.               )
  113.             )
  114.           )
  115.           (if blocks
  116.             (progn
  117.               (setq i 0)
  118.               (foreach e1 blocks
  119.                 (if (not (vlax-erased-p e1))
  120.                   (progn
  121.                     (setq k  0
  122.                           el (entget e1)
  123.                     )
  124.                     (setq p0        (cdr (assoc 10 el))
  125.                           name        (cdr (assoc 2 el))
  126.                           dxf41        (cdr (assoc 41 el))
  127.                           dxf42        (cdr (assoc 42 el))
  128.                           dxf43        (cdr (assoc 43 el))
  129.                           dxf50        (cdr (assoc 50 el))
  130.                     )

  131.                     (while (< k (length blocks))
  132.                       (setq e2 (nth k blocks)
  133.                             el (entget e2)
  134.                       )
  135.                       (setq p1           (cdr (assoc 10 el))
  136.                             name1  (cdr (assoc 2 el))
  137.                             dxf411 (cdr (assoc 41 el))
  138.                             dxf421 (cdr (assoc 42 el))
  139.                             dxf431 (cdr (assoc 43 el))
  140.                             dxf501 (cdr (assoc 50 el))
  141.                       )
  142.                       (setq vec1 (mapcar '- p1 p0))
  143.                       (if (and
  144.                             (equal vec vec1 1e-3)
  145.                             (= name name1)
  146.                             (equal dxf41 dxf411 1e-3)
  147.                             (equal dxf42 dxf421 1e-3)
  148.                             (equal dxf43 dxf431 1e-3)
  149.                             (equal dxf50 dxf501 1e-3)
  150.                           )
  151.                         (progn
  152.                           (entdel e2)
  153.                           (setq nn (1+ nn))
  154.                           (setq blocks (vl-remove e2 blocks))
  155.                         )
  156.                         (progn
  157.                           (setq k (1+ k))
  158.                         )
  159.                       )
  160.                     )
  161.                   )
  162.                 )
  163.               )
  164.             )
  165.           )
  166.           (if texts
  167.             (progn
  168.               (setq i 0)
  169.               (foreach e1 texts
  170.                 (if (not (vlax-erased-p e1))
  171.                   (progn
  172.                     (setq k  0
  173.                           el (entget e1)
  174.                     )
  175.                     (setq p0        (cdr (assoc 10 el))
  176.                           name        (cdr (assoc 1 el))
  177.                           dxf7        (cdr (assoc 7 el))
  178.                           dxf50        (cdr (assoc 50 el))
  179.                     )

  180.                     (while (< k (length texts))
  181.                       (setq e2 (nth k texts)
  182.                             el (entget e2)
  183.                       )
  184.                       (setq p1           (cdr (assoc 10 el))
  185.                             name1  (cdr (assoc 1 el))
  186.                             dxf71  (cdr (assoc 7 el))
  187.                             dxf501 (cdr (assoc 50 el))
  188.                       )
  189.                       (setq vec1 (mapcar '- p1 p0))
  190.                       (if (and
  191.                             (equal vec vec1 1e-3)
  192.                             (= name name1)
  193.                             (= dxf7 dxf71)
  194.                             (equal dxf50 dxf501 1e-3)
  195.                           )
  196.                         (progn
  197.                           (entdel e2)
  198.                           (setq nn (1+ nn))
  199.                           (setq texts (vl-remove e2 texts))
  200.                         )
  201.                         (progn
  202.                           (setq k (1+ k))
  203.                         )
  204.                       )
  205.                     )
  206.                   )
  207.                 )
  208.               )
  209.             )
  210.           )
  211.         )
  212.       )
  213.     )
  214.   )
  215.   (princ (strcat "\n共删除了 " (itoa nn) " 个对象..."))
  216.   (princ)
  217. )

评分

参与人数 1明经币 +1 收起 理由
vectra + 1 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2017-10-17 16:22 | 显示全部楼层
感谢 G版 分享程序!!!!
回复

使用道具 举报

发表于 2017-10-17 20:41 | 显示全部楼层
效果棒,只是图大点速度稍微慢。对尺寸,填充那些不行。最好是常用物体都支持
回复

使用道具 举报

发表于 2017-10-18 11:36 | 显示全部楼层
本帖最后由 Gu_xl 于 2017-10-18 11:40 编辑
lz123456 发表于 2017-10-17 20:41
效果棒,只是图大点速度稍微慢。对尺寸,填充那些不行。最好是常用物体都支持

代码只是顺手而写,其他对象根据代码类似添加处理即可!效率没办法改进,可以在使用时一次性少选一些对象即可提高速度!如果说改成arx来实现,那效率绝对岗岗的!有空我会写到XLRX中去!
回复

使用道具 举报

发表于 2017-10-19 20:22 | 显示全部楼层
感谢 G版 分享程序!!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 02:39 , Processed in 0.325668 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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