明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4569|回复: 13

[求助]如何获得选择集的最大,最小x和y坐标

  [复制链接]
发表于 2008-3-1 23:07:00 | 显示全部楼层 |阅读模式
各位,如果选择一堆图元后,怎么取得它的最大,最小x和y坐标值,谢谢
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-3-2 23:02:00 | 显示全部楼层
  1. (defun C:wx()
  2. (vl-load-com)
  3. (command "undo" "be")
  4. (setvar "cmdecho" 0)
  5. (command "ucs" "w")
  6. (princ "\n请选择物体:")
  7. (while(null(setq en (ssget))))
  8. (setq minx0 1e6 miny0 1e6 maxx0 -1e6 maxy0 -1e6)
  9. (setq i 0)
  10. (repeat (sslength en)
  11.   (setq end (ssname en i))
  12.   (setq end_data (entget end))
  13.   (Min_Max)
  14.   (setq i(1+ i))
  15. )
  16. (setq pmin (list minx0 miny0)
  17.        pmax (list maxx0 maxy0))
  18. (command ".rectang" "non" pmin "non" pmax)
  19. (command "undo" "e")
  20. (princ)
  21. )
  22. ;;;子程序,求选集是大外形坐标
  23. (defun Min_Max()
  24. (vla-getboundingbox(vlax-ename->vla-object end) 'minp 'maxp)
  25. (setq minp (vlax-safearray->list minp)
  26.        maxp (vlax-safearray->list maxp))
  27. (setq minx (car minp)
  28.        maxx (car maxp)
  29.        miny (cadr minp)
  30.        maxy (cadr maxp))
  31. (if (> minx0 minx) (setq minx0 minx))
  32. (if (> miny0 miny) (setq miny0 miny))
  33. (if (< maxx0 maxx) (setq maxx0 maxx))
  34. (if (< maxy0 maxy) (setq maxy0 maxy))
  35. )
程序对SPLINE线有误差。
回复 支持 1 反对 0

使用道具 举报

发表于 2024-7-22 15:40:36 | 显示全部楼层
ZZXXQQ 发表于 2008-3-2 23:02
程序对SPLINE线有误差。

感谢分享,用这个子程序成功解决了快速建块默认捕捉点问题。
发表于 2008-3-2 07:24:00 | 显示全部楼层
求每个图元的最大最小坐标,通过比较得到整个选择集的最大最小坐标。需要用到AX方法。
发表于 2008-3-2 08:22:00 | 显示全部楼层
我也很想知道,楼上的能不能说得明白点!多义线的最大最小坐标如何求得?当有圆弧的时候!42组码的凸度始终不明白是如何算的?还望指教.
 楼主| 发表于 2008-3-2 12:29:00 | 显示全部楼层
管理员,你大慈大悲帮帮俺吧,俺还是菜鸟,你说的ax得太深奥了,俺不明白,请多多指教呀
发表于 2008-3-2 14:16:00 | 显示全部楼层
试试这个 ET 内的acet函数
(acet-geom-ss-extents 一堆图元集 T)
 楼主| 发表于 2008-3-3 18:34:00 | 显示全部楼层
谢谢zzxxqq斑竹,我先调试下,不懂再来问您
 楼主| 发表于 2008-3-3 18:41:00 | 显示全部楼层
我的本意是要做一个简单的阵列程序,因为工作中经常用到,所以想简化,直接选择对象(可以选择单个图元,也可多选),再输入物体间的间距,(比如说输入2,则行和列都为2),这样的话对排版方便多了
发表于 2008-3-4 20:48:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2008-3-4 21:20:00 | 显示全部楼层

这个函数似乎也行

(vl-sort '((1 3) (2 2) (3 1))
             (function (lambda (e1 e2)
                         (< (cadr e1) (cadr e2)) ) ) )

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

本版积分规则

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

GMT+8, 2024-11-25 11:31 , Processed in 0.168663 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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