找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 383|回复: 6

[已解决] 如何自动获取多个子表内的最大值或求差?【已解决】

[复制链接]

已领礼包: 201个

财富等级: 日进斗金

发表于 2020-11-26 10:54:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 a117034423 于 2020-11-30 09:36 编辑

通过entget获得了一下数据,我想提取一下矩形的长宽用于定义
((-1 . <图元名: 7ffff605a40>) (0 . "LWPOLYLINE") (330 . <图元名: 7ffff6039f0>) (5 .
"25C") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbPolyline") (90 . 4) (70 . 1) (43 . 0.0) (38 . 500.0) (39 . 0.0) (10 1000.0
1000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 3000.0 1000.0) (40 . 0.0)
(41 . 0.0) (42 . 0.0) (91 . 0) (10 3000.0 5000.0) (40 . 0.0) (41 . 0.0) (42 .
0.0) (91 . 0) (10 1000.0 5000.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210
0.0 0.0 1.0))
用VL函数求得了 矩形四点的坐标表
(setq mod1 (vl-remove nil (mapcar  '(lambda (x) (if (= (car x) 10) (cdr
x))) (entget (car (entsel))))))
坐标表如下
((1000.0 1000.0) (3000.0 1000.0) (3000.0 5000.0) (1000.0 5000.0))
问题是,如何分别提取出表内X\Y坐标的最大值?
或者直接求出XY 坐标(最大值-最小值)的结果
暂时能想到的是 car cdr 但是如果不是矩形是多边形如何别求边长并定义变量
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2020-11-26 18:33:14 | 显示全部楼层
看你是怎么定义的长宽了

固定下顶点从左下开始,然后前两点长度是长,第二、第三点长度是宽

论坛有现成代码,去开源函数库看看

(XD::PNTS:MinY->MaxX)点表按Y最小,Y相等情况再按X最大排序
2 个回复 - 945 次查看

2013-10-23 12:39 - XDSoft - 开源函数库

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-11-26 18:40:34 | 显示全部楼层
Lisphk 发表于 2020-11-26 18:33
看你是怎么定义的长宽了

固定下顶点从左下开始,然后前两点长度是长,第二、第三点长度是宽

代码在这里,大神,现在点计算还有点问题,但是我写的可能是太基础了,麻烦您指导啦
  1. (defun c:dss ()
  2.   (setvar "cmdecho" 0)
  3.       (setq osm (getvar "osmode"))
  4.       (setvar "osmode" 0)
  5.   (princ "<选择要拾取参数的板:>")
  6.   (setq mod1 (vl-remove nil (mapcar  '(lambda (x) (if (= (car x) 10) (cdr x))) (entget (car (entsel))))))
  7.   (setq w1 (abs (caar mod1))) ;求点1X坐标
  8.   (setq w2 (abs (caadr mod1)))
  9.   (setq w3 (abs (caaddr mod1)))
  10.   (setq w4 (abs (caar (cdddr mod1))))
  11.     (setq ww (abs (- (max w1 w2 w3 w4) (min  w1 w2 w3 w4)))) ;求板X向长度
  12.   (setq l1 (abs (cadar mod1))) ;求点1Y坐标
  13.   (setq l2 (abs (cadadr mod1)))
  14.   (setq l3 (abs (cadr (caddr mod1))))
  15.   (setq l4 (abs (cadr (cadddr mod1))))
  16.     (setq ll (abs (- (max l1 l2 l3 l4) (min  l1 l2 l3 l4)))) ;求板Y向长度
  17.   (setq str1 (strcat"板X向长度为:" "<" (rtos ww) ">"))
  18.   (setq str2 (strcat"板Y向长度为:" "<" (rtos ll) ">"))
  19.   (print str1)
  20.   (print str2)
  21.    (setvar "osmode" osm)
  22.    (setvar "cmdecho" 1)
  23.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3729个

财富等级: 富可敌国

发表于 2020-11-26 22:17:23 | 显示全部楼层
本帖最后由 dnbcgrass 于 2020-11-26 22:23 编辑

[code]<blockquote>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3729个

财富等级: 富可敌国

发表于 2020-11-26 22:23:42 | 显示全部楼层

  1. (setq mod1 (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget (car (entsel)))))
  2. (setq ptmin (apply 'mapcar (cons 'min mod1)))
  3. (setq ptmax (apply 'mapcar (cons 'max mod1)))
  4. (setq dxy (mapcar '- ptmax ptmin))
  5. (setq str1 (strcat"板X向长度为:" "<" (rtos (car  dxy)) ">"))
  6. (setq str2 (strcat"板Y向长度为:" "<" (rtos (cadr dxy)) ">"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

发表于 2020-11-27 00:12:57 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 201个

财富等级: 日进斗金

 楼主| 发表于 2020-11-27 07:57:50 | 显示全部楼层

谢谢谢谢 这就测试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-25 16:22 , Processed in 0.160800 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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