明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2006|回复: 9

如何获得分堆分组后包围盒的四个角点,然后用直线连接起来

[复制链接]
发表于 2024-1-26 11:09:05 | 显示全部楼层 |阅读模式
70明经币
本帖最后由 haoxuan 于 2024-2-8 15:37 编辑

[url=【K:RtnBox4SSGroup】矩形分堆/方框分堆 http://bbs.mjtd.com/forum.php?mo ... 448&fromuid=7332155 (出处: 明经CAD社区)]【K:RtnBox4SSGroup】矩形分堆/方框分堆 http://bbs.mjtd.com/forum.php?mo ... 448&fromuid=7332155 (出处: 明经CAD社区)[/url]

如何取出分堆分组后包围盒的四个角点,然后赋予变量P1、P2、P3、P4
发表于 2024-1-26 11:09:06 | 显示全部楼层
  1. (setq lst (K:RtnBox4SSGroup(ssget) 5))
  2. (foreach pts lst
  3.         (setq
  4.                 zx(car pts)
  5.                 ys(cadr pts)
  6.                 zs(list (car zx)(cadr ys))
  7.                 yx(list (car ys)(cadr zx))
  8.         )
  9.         (entmake (list '(0 . "line") (cons 10 zx) (cons 11 zs)))
  10.         (entmake (list '(0 . "line") (cons 10 zs) (cons 11 ys)))
  11.         (entmake (list '(0 . "line") (cons 10 ys) (cons 11 yx)))
  12.         (entmake (list '(0 . "line") (cons 10 zx) (cons 11 yx)))
  13. )

点评

神光大侠牛逼,这么简略的代码  发表于 2024-7-3 23:10
回复

使用道具 举报

 楼主| 发表于 2024-3-5 14:38:41 | 显示全部楼层
谁知道啊谁知道啊谁知道啊谁知道啊
回复

使用道具 举报

发表于 2024-3-11 11:09:07 | 显示全部楼层
本帖最后由 d1742647821 于 2024-3-11 11:11 编辑

powered by IFoxCAD
https://gitee.com/inspirefunction/ifoxcad
https://www.kdocs.cn/l/cc6ZXSa0vMgD


  1. var r1 = Env.Editor.GetSelection();
  2. if (r1.Status != PromptStatus.OK)
  3.     return;
  4. using var tr = new DBTrans();
  5. var entList = r1.Value.GetEntities<Entity>().Select(e =>
  6. {
  7.     var bi = e.GetBoundingBoxEx();
  8.     if (bi.HasValue)
  9.         return bi.Value;
  10.     var e3d = new Extents3d();
  11.     foreach (var stretchPoint in e.GetStretchPoints())
  12.     {
  13.         e3d.AddPoint(stretchPoint);
  14.     }
  15.     return new BoundingInfo(e3d);
  16. }).ToList();
  17. var boxGroup = entList.Friends((e1, e2) =>
  18. {
  19.     var vec = e1.MidCenter.GetVectorTo(e2.MidCenter);
  20.     return vec.X < (e1.Width * 0.5 + e2.Width * 0.5) &&
  21.            vec.Y < (e1.Height * 0.5 + e2.Height * 0.5);
  22. });
  23. foreach (var list in boxGroup)
  24. {
  25.     var e3d = new Extents3d();
  26.     foreach (var info in list)
  27.     {
  28.         e3d.AddExtents(info.Extents3d);
  29.     }
  30.     tr.CurrentSpace.AddEntity(e3d.GetRecPoint2ds().ToPolyline(0, true));
  31. }

回复

使用道具 举报

发表于 2024-3-15 17:16:42 | 显示全部楼层
能把要求再写清楚点吗?
回复

使用道具 举报

发表于 2024-4-6 13:52:44 | 显示全部楼层
  1. (setq lst (K:RtnBox4SSGroup(ssget) 6))

  2. (foreach pp lst

  3.         ;;赋值P1~4
  4.         (setq p1(car  pp) p3(cadr pp))
  5.         (setq p2(list (car p3) (cadr p1)))
  6.         (setq p4(list (car p1) (cadr p3)))
  7.         (setq 4pt(list p1 p2 p3 p4))
  8.        
  9.         ;;测试
  10.         (foreach p 4pt (getpoint p))

  11. )
回复

使用道具 举报

发表于 2024-7-3 17:52:13 | 显示全部楼层

感谢分享,如何把分后的每个对象进行移动到指定点呢,(command pts "" zx pt)好像不对,请大神解答
回复

使用道具 举报

发表于 2024-7-3 23:13:03 | 显示全部楼层
muai2010 发表于 2024-7-3 17:52
感谢分享,如何把分后的每个对象进行移动到指定点呢,(command pts "" zx pt)好像不对,请大神解答

点的集合,又不是对象
回复

使用道具 举报

发表于 2024-7-3 23:22:26 | 显示全部楼层
czb203 发表于 2024-7-3 23:13
点的集合,又不是对象

嗯,就是想知道怎么把对象提取出来移动,试了好久还在试
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 04:39 , Processed in 0.160651 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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