明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1208|回复: 4

[源码] 删除重叠块的程序(最新版)。

[复制链接]
发表于 2015-12-10 21:37:59 | 显示全部楼层 |阅读模式
本帖最后由 6224jjyy 于 2018-5-10 19:56 编辑

(defun c:KK (/ pt ss ss1 ss_m ent name1 name2 name3)
  (setq p1 (getpoint "\n请输入第一角:"))
  (setq p2 (getcorner p1 "\n请输入第二角:"))
  (setq ss (ssget "w" p1 p2 '((0 . "INSERT"))))
  (setq ss_m (ssadd))
  (while (and ss (> (sslength ss) 1))
    (setq ent (ssname ss 0))
    (setq pt (cdr (assoc 10 (entget ent)))
    name1 (cdr (assoc 2 (entget ent)))
    name2 (cdr (assoc 41 (entget ent)))
    name3 (cdr (assoc 50 (entget ent)))
    ss1 (ssget "w" p1 p2 (list (cons 0 "INSERT")(cons 10 pt)
        (cons 2 name1)(cons 41 name2)(cons 50 name3)))
    )
    (if (and ss1 (> (sslength ss1) 1))
      (progn
      (ssdel (ssname ss1 0) ss1)
      (command "select" ss_m ss1 "")
      (setq ss_m (ssget "P"))
      )
    )
    (command "select" ss "r" ent "")
    (setq ss (ssget "P"))
  )
  (sssetfirst nil ss_m)
  (if (> (sslength ss_m) 0)
    (progn
    (setq p0 (getpoint p2 "\n移动至..."))
    (sssetfirst nil)
    (setq i 0)
      (repeat (sslength ss_m)
      (setq s1 (ssname ss_m i))
      (setq p10 (cdr (assoc 10 (entget s1))))
      (command "move" s1 "" p10 p0)
      (command "line" p10 p0 "")
      (setq p0 (polar p0 0 800))
      (setq i (1+ i))
      )
    )
  )

 楼主| 发表于 2015-12-10 21:53:19 | 显示全部楼层
研究了大半天。。实在是弄不明白了,特此来求助。。
发表于 2015-12-10 22:52:59 | 显示全部楼层
  1. ;; tt(重复图块移位) 2015-12-10
  2. (defun c:tt ()
  3.   (defun dxf (code s1) (cdr (assoc code (entget s1))))
  4.   (setvar "osmode" 0)
  5.   (if (and (setq p1 (getpoint "\n请输入第一角: "))
  6.            (setq p2 (getcorner p1 "\n请输入第二角: "))
  7.            (setq ss (ssget "w" p1 p2 '((0 . "INSERT"))))
  8.       )
  9.     (progn
  10.       (setq i         -1
  11.             ss-m (ssadd)
  12.       )
  13.       (while (setq s1 (ssname ss (setq i (1+ i))))
  14.         (if (not (ssmemb s1 ss-m))
  15.           (progn
  16.             (setq lst (list '(0 . "INSERT")
  17.                             (cons 10 (DXF 10 s1))
  18.                             (cons 2 (DXF 2 s1))
  19.                             (cons 41 (DXF 41 s1))
  20.                             (cons 50 (DXF 50 s1))
  21.                       )
  22.                   ss1 (ssget "w" p1 p2 lst)
  23.             )
  24.             (if        (> (sslength ss1) 1)
  25.               (progn
  26.                 (setq ss1 (ssdel s1 ss1))
  27.                 (command "select" ss1 ss-m "")
  28.                 (setq ss-m (ssget "P"))
  29.               )
  30.             )
  31.           )
  32.         )
  33.       )
  34.       (if (> (sslength ss-m) 0)
  35.         (progn
  36.           (setq        p0 (getpoint p2 "\n移动至...")
  37.                 i  0
  38.           )
  39.           (repeat (sslength ss-m)
  40.             (setq s1 (ssname ss-m i))
  41.             (setq p10 (cdr (assoc 10 (entget s1))))
  42.             (command "move" s1 "" p10 p0)
  43.             (command "line" p10 p0 "")
  44.             (setq i (1+ i))
  45.           )
  46.         )
  47.       )
  48.     )
  49.   )
  50.   (princ)
  51. )
 楼主| 发表于 2015-12-10 23:24:08 | 显示全部楼层
xyp1964 发表于 2015-12-10 22:52

非常感谢。。我先保存了,明天再研究
 楼主| 发表于 2015-12-11 22:58:47 | 显示全部楼层
本帖最后由 6224jjyy 于 2015-12-12 09:30 编辑
xyp1964 发表于 2015-12-10 22:52
我代码的错误找到了,你再帮看看,我修改后的代码,有什么问题吗?

还有,你的代码,写在一个框里,怎么做到的?

点评

有没问题自己找  发表于 2015-12-12 23:21
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-21 01:12 , Processed in 0.163033 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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