明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 372|回复: 9

[提问] 相同的实体,如果旋转了,就选不上了……

[复制链接]
发表于 2021-4-2 07:35 | 显示全部楼层 |阅读模式
80明经币
请高手帮忙看下,这个可以修改吗?
相同的实体,如果旋转了,就选不上了……
原贴出自:http://bbs.mjtd.com/thread-90258-1-1.html

;;;函数功能:选择除了位置不一样,其他都完全一样的的实体

(defun c:tt  (/ en enl filter ss)
  (setq en (car (entsel "\n 选择图元: ")))
  (if en
    (progn
      (setq enl (entget en))
      (setq filter
             (vl-remove-if-not
               '(lambda        (X)
                  (or
                    (= 0 (car x))
                    (= 8 (car x))
                    (= 62 (car x))
                    (= 6 (car x))
                    (= 370 (car x))
                    (= 48 (car x))
                    (= 100 (car x))
                    (= 67 (car x))
                    (= 60 (car x))
                    )
                  )
               enl
               )
            )
      (setq ss (ssget "x" filter))
      (setq ss (GXL-SEL-SS->LIST ss)
            ss (mapcar '(lambda (X) (list x (gxl-dxf x 10))) ss)
            )
      (mapcar '(lambda (x)
                 (vla-move (vlax-ename->vla-object (car x))
                           (vlax-3d-point (cadr x))
                           (vlax-3d-point '(0 0 0))))
              ss)
      (setq filter
             (vl-remove-if
               '(lambda        (X)
                  (or
                    (= -1 (car x))
                    (= 5 (car x))
                    (= 330 (car x))
                    (= 360 (car x))
                    (= 370 (car x))
                    (= 347 (car x))
                    (= 390 (car x))
                    )
                  )
               (entget en)
               )
            )
      (setq el (entget (caar ss)))
      (setq ss1 (ssget "x" filter))
      (mapcar '(lambda (x)
                 (vla-move (vlax-ename->vla-object (car x))
                           (vlax-3d-point '(0 0 0))
                           (vlax-3d-point (cadr x))))
              ss)
      (princ)
      (SSSETFIRST nil ss1)
      )
    )
  (princ)
  )
(defun gxl-Sel-SS->List         (ss / i s)
  (if ss
    (repeat (setq i (sslength ss))
      (setq s (cons (ssname ss (setq i (1- i))) s))
      )
    )
  )
(defun gxl-dxf        (ent i)
  (cond        ((= (type ent) 'ename)
         (cdr (assoc i (entget ent)))
         )
        ((= (type ent) 'list)
         (cdr (assoc i ent))
         )
        ) ;_ if
  )


发表于 2021-4-2 10:21 | 显示全部楼层
      啥意思?
回复

使用道具 举报

 楼主| 发表于 2021-4-2 11:03 | 显示全部楼层

您好!
是这样的:
一个图元被复制到其它多个地方,如果选择其中一个,其它的都能选中。
现在的问题是:如果图元旋转了一定角度,就选不上了
回复

使用道具 举报

发表于 2021-4-2 13:24 | 显示全部楼层
他是把对象组码10的点坐标移动到原点再比较其他各个组码,角度不同肯定就认为是不同的对象。
回复

使用道具 举报

发表于 2021-4-2 13:33 | 显示全部楼层
根据图元类型长度面积过滤一下就可以了
回复

使用道具 举报

发表于 2021-4-2 21:46 | 显示全部楼层
不同角度选择可能有些难。。。
关于角度,不同类型的图元没有固定组码;
比如直线根本没有组码表示角度,只能根据起点和终点计算
又比如矩形、椭圆等,角度又该怎么判断?
回复

使用道具 举报

发表于 2021-4-3 21:41 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTEyNzc0fDNmOGYwZDE5MGNhYjc2NTZhZDMwYzIxODNlYjA4ZGE2fDE2MTg1NzExODg%3D&request=yes&_f=.gif加上角度判断也是可以实现的

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2021-4-4 12:33 | 显示全部楼层
guosheyang 发表于 2021-4-3 21:41
http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTEyNzc0fDNmOGYwZDE5MGNhYjc2NTZhZDMwYzIxODNlYjA4ZGE2fDE2MTg1NzExODg%3D&request=yes&_f=.gif加上角度判断也是可以实现的

看起来很棒!如果这个图片中的所有图元都适用的话就很6了

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2021-4-4 14:31 | 显示全部楼层
print1985 发表于 2021-4-4 12:33
看起来很棒!如果这个图片中的所有图元都适用的话就很6了

http://bbs.mjtd.com/forum.php?mo ... hlight=%D1%A1%D4%F1

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-4-4 15:57 | 显示全部楼层
非常感谢!我传个测试文件,大家帮忙看下...

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2021-4-16 19:06 , Processed in 0.461656 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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