乐筑天下

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

[编程交流] 最低y值-坐标fo

[复制链接]

28

主题

76

帖子

48

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-6 08:30:47 | 显示全部楼层 |阅读模式
你好
如何确定多段线的较小(和较大)值,Y或X?我是指多段线上的Y坐标,其中Y对于整个多段线具有最小值?
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 08:34:54 | 显示全部楼层
看看最小和最大函数
另外,我想有一个帖子是关于这一点,回来一段时间,尝试搜索它
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:38:35 | 显示全部楼层
这将使一个点位于选定多段线的最低坐标点,该多段线具有最小的Y值,此外,它将显示该点所在点的坐标。
 
  1. (vl-load-com)
  2. (defun c:test (/ ss Coords l i p p1 pt)
  3. ; Tharwat 15. 06. 2011
  4. (if (eq (getvar 'pdmode) 0)
  5.    (setvar 'pdmode 3)
  6. )
  7. (if
  8.    (setq ss (ssget "_+.:L" '((0 . "*POLYLINE"))))
  9.     (progn
  10.       (setq Coords (vlax-get (vlax-ename->vla-object (ssname ss 0))
  11.                              'Coordinates
  12.                    )
  13.       )
  14.       (setq l (/ (length Coords) 2))
  15.       (setq i 0
  16.             p (cons 10 (list (car Coords) (cadr Coords)))
  17.       )
  18.       (repeat l
  19.         (setq
  20.           p1 (cons 10
  21.                    (list (nth i Coords) (nth (setq i (1+ i)) Coords))
  22.              )
  23.         )
  24.         (if (< (caddr p1) (caddr p))
  25.           (setq p p1)
  26.         )
  27.         (setq i (1+ i))
  28.       )
  29.       (print p)
  30.       (entmakex (list (cons 0 "POINT") p))
  31.     )
  32.     (princ)
  33. )
  34. (princ)
  35. )
Tharwat
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:40:54 | 显示全部楼层
???
 
*咳嗽*GetBoundingBox*咳嗽*
 
  1. (defun c:GBB () (c:GetBoundingBox))
  2. (defun c:GetBoundingBox (/ ss v mn mx)
  3. (vl-load-com)
  4. (princ "\rGET BOUNDING BOX \n")
  5. (if (and (setq ss (ssget ":S:E" ))
  6.           (vlax-method-applicable-p
  7.             (setq v (vlax-ename->vla-object (ssname ss 0)))
  8.             'getboundingbox))
  9.     (progn
  10.       (vla-getboundingbox v 'mn 'mx)
  11.       (princ (mapcar 'vlax-safearray->list (list mn mx))))
  12.     (cond (ss (prompt "\n** GetBoundingBox method not available ** "))
  13.           ((prompt "\n** Nothing selected ** "))))
  14. (princ))

 
未经测试-从内存中快速写入我的MacBook。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:44:44 | 显示全部楼层
你好,Renderman。
 
(min max)是函数,您已经将其用作变量。这可能吗?
 
  1. (/ ss v [color=blue][b]min max[/b][/color])

 
当做
 
塔瓦特
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 08:49:22 | 显示全部楼层
 
当我开始工作进行测试时,我也注意到了这一点(顺便说一句,代码可以工作)。
 
可悲的是,这是我在论坛文本框中输入代码时的一个拼写错误。代码已更正。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:51:00 | 显示全部楼层
别担心,伙计。
 
顺致敬意,
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:54:08 | 显示全部楼层
下面是我为求曲线的最大/最小点而编写的一些旧代码:
 
  1. (defun LM:CurveMinMax
  2. ( obj fuzz / _GetBoundingBoxWithOffset _GroupByNum _FlattenPoint a acdoc acspc lst obj tmp )
  3. (defun _GetBoundingBoxWithOffset ( obj o / ll ur )
  4.    (
  5.      (lambda ( a )
  6.        (mapcar
  7.          (function
  8.            (lambda ( b )
  9.              (mapcar
  10.                (function
  11.                  (lambda ( c ) ((eval c) a))
  12.                )
  13.                b
  14.              )
  15.            )
  16.          )
  17.         '(
  18.            (
  19.              (lambda ( x ) (- (caar  x) o))
  20.              (lambda ( x ) (- (cadar x) o))
  21.            )
  22.            (
  23.              (lambda ( x ) (+ (caadr x) o))
  24.              (lambda ( x ) (- (cadar x) o))
  25.            )
  26.            (
  27.              (lambda ( x ) (+ (caadr  x) o))
  28.              (lambda ( x ) (+ (cadadr x) o))
  29.            )
  30.            (
  31.              (lambda ( x ) (- (caar   x) o))
  32.              (lambda ( x ) (+ (cadadr x) o))
  33.            )
  34.          )
  35.        )
  36.      )
  37.      (mapcar 'vlax-safearray->list
  38.        (progn (vla-getboundingbox obj 'll 'ur) (list ll ur))
  39.      )
  40.    )
  41. )
  42. (defun _GroupByNum ( l n / r)
  43.    (if l
  44.      (cons
  45.        (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r))
  46.        (_GroupByNum l n)
  47.      )
  48.    )
  49. )
  50. (defun _FlattenPoint ( p )
  51.    (list (car p) (cadr p) 0.0)
  52. )
  53.    
  54. (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
  55.        acspc (vlax-get-property acdoc (if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace))
  56. )  
  57. (cond
  58.    ( (not (vlax-method-applicable-p obj 'GetBoundingBox))
  59.    )
  60.    ( t
  61.      (setq tmp
  62.        (mapcar
  63.          (function
  64.            (lambda ( x )
  65.              (apply 'vla-addline (cons acspc (mapcar 'vlax-3D-point x)))
  66.            )
  67.          )
  68.          (_GroupByNum (mapcar '_FlattenPoint (_GetBoundingBoxWithOffset obj (- fuzz))) 2)
  69.        )
  70.      )
  71.      (setq lst
  72.        (mapcar
  73.          (function
  74.            (lambda ( x )
  75.              (car (_GroupByNum (vlax-invoke obj 'Intersectwith x acExtendOtherEntity) 3))
  76.            )
  77.          )
  78.          tmp
  79.        )
  80.      )
  81.      (mapcar 'vla-delete tmp)
  82.      lst
  83.    )
  84. )
  85. )
  86. ;; Test Function
  87. (defun c:test( / e m )
  88. (if
  89.    (and
  90.      (setq e (car (entsel)))
  91.      (setq m (LM:CurveMinMax (vlax-ename->vla-object e) 1e-)
  92.      (apply 'and m)
  93.    )
  94.    (foreach x m
  95.      (entmakex (list (cons 0 "POINT") (cons 10 x)))
  96.    )
  97. )
  98. (princ)
  99. )
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 08:57:14 | 显示全部楼层
这是“可能的”,因为你可以在Lisp中重新定义任何东西——而且因为它们是局部变量,它们不会影响defun之外的任何东西——所以最小和最大函数在其他地方不会被删除。尽管不建议这样做,并且会在VLIDE中产生警告消息(类似于重新定义的受保护符号)。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:00:30 | 显示全部楼层
 
非常感谢。
 
我曾经面对过这条让我恐慌了很长时间的信息,在搜索了这条信息之后,我意识到了它的主要问题,我怀疑我可能会忘记这些记忆和我得到的完美教训。
 
当做
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 07:30 , Processed in 0.445870 second(s), 73 queries .

© 2020-2025 乐筑天下

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