乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 26|回复: 8

[编程交流] 选择设定值-低

[复制链接]

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:55:42 | 显示全部楼层 |阅读模式
对于选择集(任何类型的实体),我想确定Y轴上具有最低值的实体上的点-如何确定?这个点应该位于我选择集中的一个实体上。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:10:00 | 显示全部楼层
从Autocad帮助
 
  1. (vl-sort
  2.       '((1 3)
  3.         (2 2)
  4.         (3 1))
  5.       (function
  6.             (lambda (e1 e2)
  7.                   (< (cadr e1) (cadr e2)))))

 
其中(cadr e1)(cadr e2)是列表的第二个元素

  1. (setq ptlist '((259.81 1836.12 0.0)
  2.               (201.542 1955.57 0.0)
  3.               (395.77 1949.59 0.0)
  4.               [color=blue](226.194 1754.74 0.0)[/color]
  5.               (187.348 1939.14 0.0)))
  1. ([color=blue]car [/color](vl-sort  ptlist
  2.       (function
  3.             (lambda (e1 e2)
  4.                   (< (cadr e1) (cadr e2))))))

 
  1. [color=blue](226.194 1754.74 0.0)[/color]
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:14:33 | 显示全部楼层
由于实体的最低点可能存储在或不存储在其关联列表中(即圆形项目的最低象限),因此我要做的是创建一个包含要检查的项目的选择集,然后解析所述集,并应用Lee Mac的边界框例程。从中提取要排序的Y坐标列表。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:19:21 | 显示全部楼层
哦,是的。。MSasu所说的,然后使用vl排序。。。。就是这样。
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:31:53 | 显示全部楼层
在谷歌上找到的东西和添加的东西。。。。似乎有效。。。
  1. (defun c:GBB () (c:GetBoundingBox))
  2. (defun c:GetBoundingBox    (/ ss v mn mx lxs lys lxd lyd)
  3. (vl-load-com)
  4. (princ "\rGET BOUNDING BOX \n")
  5. (setq ss (ssget))
  6. (setq i 0)
  7. (repeat (sslength ss)
  8.    (vlax-method-applicable-p
  9.      (setq v (vlax-ename->vla-object (ssname ss i)))
  10.      'getboundingbox
  11.    ) ;_ end of vlax-method-applicable-p
  12.    (vla-getboundingbox v 'mn 'mx)
  13.    (setq p (mapcar 'vlax-safearray->list (list mn mx)))
  14.    (setq xs (car (car p)))
  15.    (setq ys (cadr (car p)))
  16.    (setq xd (car (cadr p)))
  17.    (setq yd (cadr (cadr p)))
  18.    (setq lxs (cons xs lxs))
  19.    (setq lys (cons ys lys))
  20.    (setq lxd (cons xd lxd))
  21.    (setq lyd (cons yd lyd))
  22.    (setq mxs (apply 'min lxs))
  23.    (setq mys (apply 'min lys))
  24.    (setq mxd (apply 'max lxd))
  25.    (setq myd (apply 'max lyd))
  26.    (setq ps (list mxs mys))
  27.    (setq pd (list mxd myd))
  28.    (setq i (1+ i))
  29. ) ;_ end of repeat
  30. (command "rectangle" ps pd)
  31. (princ)
  32. ) ;_ end of defun
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 08:38:28 | 显示全部楼层
您可以通过一次排序来提高速度,而不是对每个项目进行排序:
  1. ...
  2. (setq lxd (cons xd lxd))
  3. (setq lyd (cons yd lyd))
  4. (setq i (1+ i))
  5. ) ;_ end of repeat
  6. [color=blue] (setq mxs (apply 'min lxs))[/color]
  7. [color=blue] (setq mys (apply 'min lys))[/color]
  8. [color=blue] (setq mxd (apply 'max lxd))[/color]
  9. [color=blue] (setq myd (apply 'max lyd))[/color]
  10. [color=blue] (setq ps (list mxs mys))[/color]
  11. [color=blue] (setq pd (list mxd myd))[/color]
  12. (command "rectangle" ps pd)
  13. (princ)
  14. ) ;_ end of defun Reply Reply With Quote
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:48:01 | 显示全部楼层
内部重复
 
  1. (defun c:demo ( / ss mn mx e _lowY)
  2. (if (setq ss (ssget ))
  3. (progn   
  4. (repeat (sslength ss)
  5.       (cond ((and
  6.              (not (vl-catch-all-error-p
  7.                   (vl-catch-all-apply
  8.                         'vla-getboundingbox
  9.                         (list (vlax-ename->vla-object
  10.                                     (setq e (ssname ss 0)))
  11.                               'mn 'mx))))
  12.              (setq mn (vlax-safearray->list mn))
  13.              (setq _lowY (if (or (null _lowY)
  14.                             (< (cadr mn )(Cadar _lowY))) (list mn  e)
  15.                              _lowY))
  16.              )
  17.               )
  18.              )
  19.      (ssdel e ss)
  20.      )(sssetfirst nil (ssadd (cadr _lowY)))
  21.    )
  22.    )
  23.           (princ)
  24.      )

 
但那只是我
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:55:18 | 显示全部楼层
很好,Pbe
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:56:44 | 显示全部楼层
 
谢谢brams,
 
代码实际上没有任何意义,尤其是当提示选择对象时,因为你实际上可以看到Y值最低的对象,那么告诉我们,rouitne的主要功能是什么?当然还有比这更重要的事吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:25 , Processed in 0.537080 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表