乐筑天下

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

[编程交流] 最大X和负X

[复制链接]

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:08:29 | 显示全部楼层 |阅读模式
可以从多段线中找到最大x和负x吗?
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 06:16:00 | 显示全部楼层
如果我一天没有学到新的东西(或两件事),我觉得我好像浪费了我清醒的时间,那么告诉我什么是“max x”和“负x”,你通过获得这些信息将实现什么?
 
这些多段线坐标是您试图通过一些lisp代码检索的吗?
 
这可能与多段线顶点有关吗?
回复

使用道具 举报

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:21:44 | 显示全部楼层
070833m95s58c7c1gfec1j.jpg 我想在lisp中用max et min xy进行重角。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 06:31:17 | 显示全部楼层
我们似乎被困住了。让我们给这个线程一个“凹凸”,看看会发生什么。
回复

使用道具 举报

2

主题

389

帖子

387

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 06:35:12 | 显示全部楼层
这可能需要在LISP论坛上,不是吗?我不清楚你是如何从多段线输入信息的。我可以告诉你,这里的“min”应该是最小值(而不是负),与max对应的是最大值。在所示的两种情况下,这些值似乎是相反的。也许还需要更多的解释。
回复

使用道具 举报

3

主题

961

帖子

959

银币

初来乍到

Rank: 1

铜币
14
发表于 2022-7-6 06:39:10 | 显示全部楼层
 
对我来说很合适。负数小于正数。
 
我知道在我使用的一些CAD程序中,它们将返回不规则几何体将适合的边界框x、y(和z)。但我不知道检索这些信息的代码。
 
顺便说一句,如果没有你的照片,我绝对不知道你在追求什么。
回复

使用道具 举报

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:45:38 | 显示全部楼层
我想我找到了我想要的,但代码是在1998年创建的。
 
  1. (defun C:BoundPoly (ss Cwd / Lst ssl ename entl cnt elast la pt1 pt2 vlist
  2. cen dia vlist1 vlist2 p11 p12 p21 p22 ename1 ename2 PolySS  ss1 en flag OS )
  3. (if (= (type ss) 'ENAME)
  4. (progn
  5. (setq ss1 (ssadd))
  6. (ssadd ss ss1)
  7. (setq ss ss1)
  8. ))
  9. (setq OS (getvar "OSMODE"))
  10. (setvar "OSMODE" 0)
  11. (setq PolySS nil)
  12. (if ss
  13. (progn
  14. (LA_mk_c_lyr "0" "")
  15. (setq
  16. ssl (sslength ss)
  17. PolySS (ssadd)
  18. cnt 0
  19. )
  20. (repeat ssl
  21. (setq
  22.   ename (ssname ss cnt)
  23.   entl (entget ename)
  24.   en (LI_item 0 entl)
  25.   cnt (1+ cnt)
  26. )
  27. (cond
  28.   ((= en "CIRCLE")
  29.    (setq
  30.     dia (* 2.0 (LI_item 40 entl))
  31.     Cen (LI_item 10 entl)
  32.    )
  33.    (command "._Donut" dia dia Cen "")
  34.    (ssadd (entlast) PolySS)
  35.   )
  36.   ((member en (list "LINE" "POLYLINE"))
  37.    (if (= en "LINE")
  38.     (setq flag 0     vlist (list (LI_item 10 entl) (LI_item 11 entl)))
  39.     (setq flag (LI_item 70 entl)  vlist (PL_plist ename))
  40.    )
  41.    (if (zerop (logand flag 1))   ; Open polyline or line
  42.    (progn
  43.     (LA_mk_c_lyr "0" "")
  44.     (command "._Mline" "_Justification" "_Zero" "_Scale" Cwd)
  45.     (foreach pt vlist (command pt))
  46.     (command "")
  47.       (setq elast (MI_xentlast))
  48.       (command "._Explode" (entlast))
  49.     (setq
  50.      ss1 (MI_after elast)
  51.      ss1 (PL_PlJoin ss1 nil)
  52.     )
  53.      (if (and ss1 (= (sslength ss1) 2))
  54.     (progn
  55.      (command "._Change" ss1 "" "_Properties" "_Layer" "0" "")
  56.      (setq
  57.       vlist1 ( PL_plist (ssname ss1 0) )
  58.       vlist2 ( PL_plist (ssname ss1 1) )
  59.       p11 (nth 0 vlist1)
  60.       p12 (nth (1- (length vlist1) ) vlist1)
  61.       p21 (nth 0 vlist2)
  62.       p22 (nth (1- (length vlist2) ) vlist2)
  63.      )
  64.      (command "._Line" p11 p21 "")
  65.      (setq ename1 (entlast))
  66.      (command "._Line" p12 p22 "")
  67.      (setq ename2 (entlast))
  68.      (command
  69.       "._Pedit" (ssname ss1 0) "_Join" (ssname ss1 1) ename1 ename2 "" "_X"
  70.       "._Pedit" (entlast) "_Close" "_X"
  71.      )
  72.      (ssadd (entlast) PolySS)
  73.     ))
  74.    )
  75.    (progn
  76.     (command "._Copy" ename "" (list 0.0 0.0 0.0) "")
  77.     (ssadd (entlast) PolySS)
  78.    ))
  79.   )
  80. )
  81. )
  82. ))
  83. (setvar "OSMODE" OS)
  84. PolySS
  85. )
回复

使用道具 举报

8

主题

22

帖子

14

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 06:50:35 | 显示全部楼层
不起作用
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:01:52 | 显示全部楼层
对于直段LW多段线:
  1. (defun c:bbpoly ( / e l )
  2.    (if (setq e (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))
  3.        (progn
  4.            (setq l (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget (ssname e 0))))
  5.                  l (mapcar '(lambda ( x ) (apply 'mapcar (cons x l))) '(min max))
  6.            )
  7.            (entmake
  8.                (list
  9.                   '(000 . "LWPOLYLINE")
  10.                   '(100 . "AcDbEntity")
  11.                   '(100 . "AcDbPolyline")
  12.                   '(090 . 4)
  13.                   '(070 . 1)
  14.                    (cons 10 (car l))
  15.                    (list 10 (caadr l) (cadar l))
  16.                    (cons 10 (cadr l))
  17.                    (list 10 (caar l) (cadadr l))
  18.                )
  19.            )
  20.        )
  21.    )
  22.    (princ)
  23. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:07:58 | 显示全部楼层
对于多条直线分段LWD多段线:
  1. (defun c:bbpoly ( / i l s )
  2.    (if (setq s (ssget '((0 . "LWPOLYLINE"))))
  3.        (progn
  4.            (repeat (setq i (sslength s))
  5.                (setq l
  6.                    (cons
  7.                        (mapcar 'cdr
  8.                            (vl-remove-if-not
  9.                                (function
  10.                                    (lambda ( x ) (= 10 (car x)))
  11.                                )
  12.                                (entget (ssname s (setq i (1- i))))
  13.                            )
  14.                        )
  15.                        l
  16.                    )
  17.                )
  18.            )
  19.            (setq l (apply 'append l)
  20.                  l (mapcar '(lambda ( x ) (apply 'mapcar (cons x l))) '(min max))
  21.            )
  22.            (entmake
  23.                (list
  24.                   '(000 . "LWPOLYLINE")
  25.                   '(100 . "AcDbEntity")
  26.                   '(100 . "AcDbPolyline")
  27.                   '(090 . 4)
  28.                   '(070 . 1)
  29.                    (cons 10 (car l))
  30.                    (list 10 (caadr l) (cadar l))
  31.                    (cons 10 (cadr l))
  32.                    (list 10 (caar l) (cadadr l))
  33.                )
  34.            )
  35.        )
  36.    )
  37.    (princ)
  38. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 18:51 , Processed in 0.790553 second(s), 74 queries .

© 2020-2025 乐筑天下

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