乐筑天下

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

[编程交流] 选框倒角和圆角

[复制链接]

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-5 23:49:17 | 显示全部楼层 |阅读模式
  1. (defun c:fr()
  2. (setq cm (getvar "cmdecho"))
  3. (setvar "cmdecho" 0)
  4. (setvar "osmode" 0)
  5. (setq rr (getreal "\nPlease enter the radius: ") aa nil)
  6. (while (setq en (ssget '((0 . "LINE"))))
  7. (setq n (sslength en) i 1 a 0 )
  8. (command "fillet" "r" rr "")
  9. (while n
  10.    (if (= i (- n 1))(setq en2 (entget (handent cc)) aa 0)
  11.   (setq en2 (entget (ssname en a))))
  12.    (setq p1 (cdr (assoc 10 en2)) p2 (cdr (assoc 11 en2)) cc (cdr (assoc 5 en2)) i (+ a 1) ii 1)
  13.   (while ii
  14.      (if (= i n)(setq ii nil n nil)
  15.        (progn
  16.         (setq en3 (entget (ssname en i)))
  17.         (setq pp1 (cdr (assoc 10 en3)) pp2 (cdr (assoc 11 en3)) bb (cdr (assoc 5 en3)))
  18.         (setq d (distance p1 pp2) d1 (distance p1 pp1) d2 (distance p2 pp2) d1 (distance p2
  19. pp1) )
  20.         (if (or (= d 0.0)(= d1 0.0)(= d2 0.0)(= d3 0.0))
  21.          (progn
  22.           (setq pp3 (polar pp1 (angle pp1 pp2) (/ (distance pp1 pp2) 2.0)))
  23.           (setq p5 (polar p1 (angle p1 p2) (/ (distance p1 p2) 2.0)))
  24.           (command "fillet" pp3 p5)
  25.           (setq  a i ii nil )
  26.          )
  27.          (setq i (+ i 1))
  28.        )   ;-if d 0.0
  29.      ))
  30.    )   ;-ii
  31.    (if (and (/= n nil)(= i (- n 1)))(setq a 0 i 1))
  32.     (if (and (= aa 0)(= i (- n 1)))(setq n nil))
  33.    )  ;-n
  34. )
  35. (setvar "cmdecho" 1)
  36. (setvar "osmode" 15359)
  37. (princ)
  38. )

 
这个lisp可以选框圆角,但不支持pline!
 
谁可以帮助添加倒角功能,并支持pline
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-5 23:56:26 | 显示全部楼层
  1. (defun c:ffr (/ newrad ss pts i ee)
  2.   (setq newrad (getreal "\nPlease enter the fillet  radius:"))
  3.   (setvar "FilletRad" newrad)
  4.   (setq ss (ssget '(( 0 . "LINE,ARC,LWPOLYLINE"))))
  5.   (setq pts (acet-geom-ss-extents ss nil))     ; ET func
  6.   (SetVar "PeditAccept" 1)
  7.   (command "Pedit" "M" ss "" "J" "" "")
  8.   (setq ss (ssget "C" (car pts) (cadr pts) '(( 0 . "LWPOLYLINE")))
  9.          i  0
  10.   )
  11.   
  12.   (while (setq ee (ssname ss i))
  13.     (command "Fillet" "P" ee)
  14.     (setq i (1+ i))
  15.   )
  16. )

 
该lisp可以支持Pline,但需要ET工具
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:06:43 | 显示全部楼层
如果您没有安装ET,我怀疑您没有,请查看(vla getboundingbox)函数以获取每个“直线、圆弧、LWPOLYLINE”实体的数据,并使用获得的点的最小值和最大值-与(acet geom ss extents)函数相同,但需要更多的键入过程。。。
 
对于倒角-将直线(命令“Fillet”“P”ee)更改为(命令“chamfer”“P”ee),并在前面指定倒角距离。。。
 
看看我在AUGI发布的这些旧代码-但我现在懒得搜索它们。。。
 
  1. (defun mintfillet ( ss / *error* ape osm tang smallang member-fuzz AssocOn _reml mid frad i ent p1 p2 ptlst linlst aptlst1 aptlst2 arcchk intptlst a1 a2 aa1 aa2 asss1 asss2 ass1 ass2 r rlst maxrad ss2lin ptt1 ptt2 )
  2. (defun *error* ( msg )
  3.    (if ape (setvar 'aperture ape))
  4.    (if osm (setvar 'osmode osm))
  5.    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  6. )
  7. (defun tang ( a )
  8.    (/ (sin a) (cos a))
  9. )
  10. (defun smallang ( p1 po p2 / sa )
  11.    (if (< (angle po p1) (angle po p2))
  12.      (if (>= (setq sa (+ (- (angle po p1) (angle po p2)) pi pi)) pi)
  13.        (setq sa (- (* 2.0 pi) sa))
  14.      )
  15.      (if (>= (setq sa (+ (- (angle po p2) (angle po p1)) pi pi)) pi)
  16.        (setq sa (- (* 2.0 pi) sa))
  17.      )
  18.    )
  19.    (if (equal (angle po p1) (angle po p2) 1e- (setq sa 0.0))
  20.    sa
  21. )
  22. (defun member-fuzz ( expr lst fuzz )
  23.    (while (and lst (not (equal (car lst) expr fuzz)))
  24.      (setq lst (cdr lst))
  25.    )
  26.    lst
  27. )
  28. (defun AssocOn ( SearchTerm Lst func fuzz )
  29.    (car
  30.      (vl-member-if
  31.        (function
  32.          (lambda (pair) (equal SearchTerm (apply func (list pair)) fuzz))
  33.        )
  34.        lst
  35.      )
  36.    )
  37. )
  38. (defun _reml ( l1 l2 / a n ls )
  39.    (while
  40.      (setq n nil
  41.            a (car l2)
  42.      )
  43.      (while (and l1 (null n))
  44.        (if (equal a (car l1) 1e-6)
  45.          (setq l1 (cdr l1)
  46.                n t
  47.          )
  48.          (setq ls (append ls (list (car l1)))
  49.                l1 (cdr l1)
  50.          )
  51.        )
  52.      )
  53.      (setq l2 (cdr l2))
  54.    )
  55.    (append ls l1)
  56. )
  57. (defun mid ( p1 p2 )
  58.    (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2)
  59. )
  60. (setq ape (getvar 'aperture))
  61. (setq osm (getvar 'osmode))
  62. (setvar 'aperture 1)
  63. (setvar 'osmode 0)
  64. (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  65. (setq i -1)
  66. (while (setq ent (ssname ss (setq i (1+ i))))
  67.    (setq
  68.          p1 (trans (vlax-curve-getStartPoint ent) 0 1)
  69.          p2 (trans (vlax-curve-getEndPoint ent) 0 1)
  70.    )
  71.    (if (= (cdr (assoc 0 (entget ent))) "LINE")
  72.      (setq ptlst (append (list p1 p2) ptlst) linlst (cons (list p1 p2) linlst))
  73.      (progn
  74.        (setq aptlst1 (cons p1 aptlst1) aptlst2 (cons p2 aptlst2) arcchk T)
  75.        (entdel ent)
  76.      )
  77.    )
  78. )
  79. (setq intptlst (_reml ptlst (acet-list-remove-duplicates ptlst 1e-6)))
  80. (if (not arcchk)
  81.    (progn
  82.      (foreach lin linlst
  83.        (cond
  84.          ( (and (member-fuzz (car lin) intptlst 1e-6) (member-fuzz (cadr lin) intptlst 1e-6))
  85.            (if (setq asss1 (assocon (car lin) (vl-remove lin linlst) 'car 1e-6))
  86.                (setq aa1 (/ (smallang (cadr asss1) (car lin) (cadr lin)) 2.0))
  87.            )
  88.            (if (setq asss1 (assocon (car lin) (vl-remove lin linlst) 'cadr 1e-6))
  89.                (setq aa1 (/ (smallang (car asss1) (car lin) (cadr lin)) 2.0))
  90.            )
  91.            (if (setq asss2 (assocon (cadr lin) (vl-remove lin linlst) 'car 1e-6))
  92.                (setq aa2 (/ (smallang (cadr asss2) (cadr lin) (car lin)) 2.0))
  93.            )
  94.            (if (setq asss2 (assocon (cadr lin) (vl-remove lin linlst) 'cadr 1e-6))
  95.                (setq aa2 (/ (smallang (car asss2) (cadr lin) (car lin)) 2.0))
  96.            )
  97.            (setq r (/ (* (distance (car lin) (cadr lin)) (tang aa1) (tang aa2)) (+ (tang aa1) (tang aa2))))
  98.            (setq rlst (cons r rlst))
  99.          )
  100.          ( (and (member-fuzz (car lin) intptlst 1e-6) (not (member-fuzz (cadr lin) intptlst 1e-6)))
  101.            (if (setq ass1 (assocon (car lin) (vl-remove lin linlst) 'car 1e-6))
  102.                (setq a1 (/ (smallang (cadr ass1) (car lin) (cadr lin)) 2.0))
  103.            )
  104.            (if (setq ass1 (assocon (car lin) (vl-remove lin linlst) 'cadr 1e-6))
  105.                (setq a1 (/ (smallang (car ass1) (car lin) (cadr lin)) 2.0))
  106.            )
  107.            (setq r (* (distance (car lin) (cadr lin)) (tang a1)))
  108.            (setq rlst (cons r rlst))
  109.          )
  110.          ( (and (not (member-fuzz (car lin) intptlst 1e-6)) (member-fuzz (cadr lin) intptlst 1e-6))
  111.            (if (setq ass2 (assocon (cadr lin) (vl-remove lin linlst) 'car 1e-6))
  112.                (setq a2 (/ (smallang (cadr ass2) (cadr lin) (car lin)) 2.0))
  113.            )
  114.            (if (setq ass2 (assocon (cadr lin) (vl-remove lin linlst) 'cadr 1e-6))
  115.                (setq a2 (/ (smallang (car ass2) (cadr lin) (car lin)) 2.0))
  116.            )
  117.            (setq r (* (distance (car lin) (cadr lin)) (tang a2)))
  118.            (setq rlst (cons r rlst))
  119.          )
  120.        )
  121.      )
  122.      (setq maxrad (car (vl-sort rlst '<)))
  123.    )
  124.    (setq maxrad 0.0)
  125. )
  126. (setq frad (getdist (strcat "\nPick radius for fillet <0.0-" (rtos maxrad) "> : ")))
  127. (if frad (setvar 'filletrad frad))
  128. (if arcchk
  129.    (mapcar '(lambda ( a b )
  130.               (command "_.zoom" "w" a b)
  131.               (command "_.fillet" (osnap a "_nea") (osnap b "_nea"))
  132.               (command "_.zoom" "p")
  133.             ) aptlst1 aptlst2)
  134.    (if (/= frad 0.0)
  135.      (foreach pt intptlst
  136.        (setq ss2lin (ssget "_C" pt pt))
  137.        (setq ptt1 (mid (mid (trans (vlax-curve-getstartpoint (ssname ss2lin 0)) 0 1) (trans (vlax-curve-getendpoint (ssname ss2lin 0)) 0 1)) pt))
  138.        (setq ptt2 (mid (mid (trans (vlax-curve-getstartpoint (ssname ss2lin 1)) 0 1) (trans (vlax-curve-getendpoint (ssname ss2lin 1)) 0 1)) pt))
  139.        (command "_.fillet" (list (ssname ss2lin 0) ptt1) (list (ssname ss2lin 1) ptt2))
  140.      )
  141.    )
  142. )
  143. (*error* nil)
  144. (princ)
  145. )
  146. (defun c:mif ( / mintfillet )
  147. (vl-load-com)
  148. (prompt "\nSelect lines touching each other to apply fillet, or select lines and arcs previously filleted to modify existing fillet")
  149. (while (not (ssget "_:L" '((0 . "LINE,ARC")))))
  150. (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "(mintfillet (ssget "_P"))" "\n" "0.0" "\n" "(mintfillet (ssget "_P"))" "\n"))
  151. (princ)
  152. )
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-6 00:10:47 | 显示全部楼层
他们在这里-不得不睡觉,你很懒。。。
 
  1. (defun c:mcha ( / *error* mid AssocOn ss i ent p1 p2 lin linn lins flins ptlst1 pt1 pt11 ptlst2 pt2 pt22 chpts chamfers )
  2. (vl-load-com)
  3. (defun *error* ( msg )
  4.    (if chma (setvar 'chamfera chma))
  5.    (if chmb (setvar 'chamferb chmb))
  6.    (if chmm (setvar 'chammode chmm))
  7.    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  8. )
  9. (defun mid ( p1 p2 )
  10.    (mapcar '(lambda ( a b ) (/ (+ a b) 2.0)) p1 p2)
  11. )
  12. (defun AssocOn ( SearchTerm Lst func fuzz )
  13.    (car
  14.      (vl-member-if
  15.        (function
  16.          (lambda (pair) (equal SearchTerm (apply func (list pair)) fuzz))
  17.        )
  18.        lst
  19.      )
  20.    )
  21. )
  22. (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  23. (mapcar 'set '(chma chmb chmm) (mapcar 'getvar '(chamfera chamferb chammode)))
  24. (mapcar 'setvar '(chamfera chamferb chammode) '(0 0 0))
  25. (prompt "\nSelect line entities")
  26. (while (not (setq ss (ssget "_:L" '((0 . "LINE"))))))
  27. (setq i -1)
  28. (while (setq ent (ssname ss (setq i (1+ i))))
  29.    (setq p1 (trans (vlax-curve-getstartpoint ent) 0 1))
  30.    (setq p2 (trans (vlax-curve-getendpoint ent) 0 1))
  31.    (setq lin (list p1 p2))
  32.    (setq lins (cons lin lins))
  33. )
  34. (setq flins (apply 'append lins))
  35. (foreach lin lins
  36.    (setq ptlst1 (vl-sort flins '(lambda ( a b ) (< (distance (car lin) a) (distance (car lin) b)))))
  37.    (if (equal (cadr ptlst1) (cadr lin) 1e- (setq pt1 (caddr ptlst1)) (setq pt1 (cadr ptlst1)))
  38.    (if (setq linn (assocon pt1 lins 'car 1e-) (setq pt11 (mid (car linn) (cadr linn))))
  39.    (if (setq linn (assocon pt1 lins 'cadr 1e-) (setq pt11 (mid (car linn) (cadr linn))))
  40.    (setq ptlst2 (vl-sort flins '(lambda ( a b ) (< (distance (cadr lin) a) (distance (cadr lin) b)))))
  41.    (if (equal (cadr ptlst2) (car lin) 1e- (setq pt2 (caddr ptlst2)) (setq pt2 (cadr ptlst2)))
  42.    (if (setq linn (assocon pt2 lins 'car 1e-) (setq pt22 (mid (car linn) (cadr linn))))
  43.    (if (setq linn (assocon pt2 lins 'cadr 1e-) (setq pt22 (mid (car linn) (cadr linn))))
  44.     (setq chpts (list pt11 (mid (car lin) (cadr lin))) chamfers (cons chpts  chamfers) chpts (list pt22 (mid (car lin) (cadr lin))) chamfers (cons  chpts chamfers))
  45. )
  46. (foreach chpts chamfers
  47.    (command "_.chamfer" (car chpts) (cadr chpts))
  48. )
  49. (*error* nil)
  50. (princ)
  51. )
  1. (defun LM:ssboundingbox ( s / a b i m n o )
  2. ;; Selection Set Bounding Box  -  Lee Mac
  3.    (repeat (setq i (sslength s))
  4.        (if
  5.            (and
  6.                (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
  7.                (vlax-method-applicable-p o 'getboundingbox)
  8.                (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
  9.            )
  10.            (setq m (cons (vlax-safearray->list a) m)
  11.                  n (cons (vlax-safearray->list b) n)
  12.            )
  13.        )
  14.    )
  15.    (if (and m n)
  16.        (mapcar '(lambda ( a b ) (apply 'mapcar (cons a b))) '(min max) (list m n))
  17.    )
  18. )
HTH,M.R。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:13:42 | 显示全部楼层
 
哈啊哈!有点懒。。。,非常感谢你!马尔科·里巴,你是万里挑一,没有你我做不到
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:23:03 | 显示全部楼层
对不起flyfox1047,我不是故意不礼貌的,我只是想看看当我在床上睡觉的时候你会发什么帖子。。。
然而,由于使用的函数(最小值)和(最大值)非常有限,李的sub对于大量对象不是很可靠。。。
 
  1. (defun MR:ssboundingbox ( s / a b i m n o xmin ymin zmin pmin xmax ymax zmax pmax ) (vl-load-com)
  2. ;; Selection Set Bounding Box  -  Marko Ribar
  3. (repeat (setq i (sslength s))
  4.    (if
  5.      (and
  6.        (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
  7.        (vlax-method-applicable-p o 'getboundingbox)
  8.        (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
  9.      )
  10.      (setq m (cons (vlax-safearray->list a) m)
  11.            n (cons (vlax-safearray->list b) n)
  12.      )
  13.    )
  14. )
  15. (if (and m n)
  16.    (progn
  17.      (setq xmin (caar (vl-sort m '(lambda ( a b ) (< (car a) (car b)))))
  18.            ymin (cadar (vl-sort m '(lambda ( a b ) (< (cadr a) (cadr b)))))
  19.            zmin (caddar (vl-sort m '(lambda ( a b ) (< (caddr a) (caddr b)))))
  20.            pmin (list xmin ymin zmin)
  21.      )
  22.      (setq xmax (caar (vl-sort n '(lambda ( a b ) (> (car a) (car b)))))
  23.            ymax (cadar (vl-sort n '(lambda ( a b ) (> (cadr a) (cadr b)))))
  24.            zmax (caddar (vl-sort n '(lambda ( a b ) (> (caddr a) (caddr b)))))
  25.            pmax (list xmax ymax zmax)
  26.      )
  27.      (list pmin pmax)
  28.    )
  29. )
  30. )
  31. (defun c:ffr ( / *error* pea fira newrad ss pts i ee )
  32. (defun *error* ( msg )
  33.    (if pea (setvar 'peditaccept pea))
  34.    (if fira (setvar 'filletrad fira))
  35.    (if msg (prompt msg))
  36.    (princ)
  37. )
  38. (setq pea (getvar 'peditaccept))
  39. (setq fira (getvar 'filletrad))
  40. (if (setq newrad (getdist (strcat "\nPlease enter the fillet radius <" (rtos (getvar 'filletrad)) ">: "))) (abs newrad))
  41. (if (null newrad) (setq newrad (getvar 'filletrad)))
  42. (setvar 'filletrad newrad)
  43. (setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE"))))
  44. (setq pts (MR:ssboundingbox ss))
  45. (setvar 'peditaccept 1)
  46. (command "_.pedit" "_m" ss "" "_j" "" "")
  47. (setq ss (ssget "_c" (car pts) (cadr pts) '((0 . "LWPOLYLINE")))
  48.        i -1
  49. )
  50. (while (setq ee (ssname ss (setq i (1+ i))))
  51.    (command "_.fillet" "_p" ee)
  52. )
  53. (*error* nil)
  54. (princ)
  55. )

 
这是在我的机器上选择5760行的结果。。。
正如你所见,我建议你使用我的版本,它更强大,但不会失败:
 
  1. (defun MR:ssboundingbox ( s / a b i m n o xmin ymin zmin pmin xmax ymax zmax pmax ) (vl-load-com)
  2. ;; Selection Set Bounding Box  -  Marko Ribar
  3. (repeat (setq i (sslength s))
  4.    (if
  5.      (and
  6.        (setq o (vlax-ename->vla-object (ssname s (setq i (1- i)))))
  7.        (vlax-method-applicable-p o 'getboundingbox)
  8.        (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-getboundingbox (list o 'a 'b))))
  9.      )
  10.      (setq m (cons (vlax-safearray->list a) m)
  11.            n (cons (vlax-safearray->list b) n)
  12.      )
  13.    )
  14. )
  15. (if (and m n)
  16.    (progn
  17.      (setq xmin (caar (vl-sort m '(lambda ( a b ) (< (car a) (car b)))))
  18.            ymin (cadar (vl-sort m '(lambda ( a b ) (< (cadr a) (cadr b)))))
  19.            zmin (caddar (vl-sort m '(lambda ( a b ) (< (caddr a) (caddr b)))))
  20.            pmin (list xmin ymin zmin)
  21.      )
  22.      (setq xmax (caar (vl-sort n '(lambda ( a b ) (> (car a) (car b)))))
  23.            ymax (cadar (vl-sort n '(lambda ( a b ) (> (cadr a) (cadr b)))))
  24.            zmax (caddar (vl-sort n '(lambda ( a b ) (> (caddr a) (caddr b)))))
  25.            pmax (list xmax ymax zmax)
  26.      )
  27.      (list pmin pmax)
  28.    )
  29. )
  30. )
  31. (defun c:cdi ( / *error* pea chaa chab newdst1 newdst2 ss pts i ee )
  32. (defun *error* ( msg )
  33.    (if pea (setvar 'peditaccept pea))
  34.    (if chaa (setvar 'chamfera chaa))
  35.    (if chab (setvar 'chamferb chab))
  36.    (if msg (prompt msg))
  37.    (princ)
  38. )
  39. (setq pea (getvar 'peditaccept))
  40. (setq chaa (getvar 'chamfera))
  41. (setq chab (getvar 'chamferb))
  42. (if (setq newdst1 (getdist (strcat "\nPlease enter the first chamfer distance <" (rtos (getvar 'chamfera)) ">: "))) (abs newdst1))
  43. (if (null newdst1) (setq newdst1 (getvar 'chamfera)))
  44. (setvar 'chamfera newdst1)
  45. (if (setq newdst2 (getdist (strcat "\nPlease enter the second chamfer distance <" (rtos (getvar 'chamfera)) ">: "))) (abs newdst2))
  46. (if (null newdst2) (setq newdst2 (getvar 'chamfera)))
  47. (setvar 'chamferb newdst2)
  48. (setq ss (ssget '((0 . "LINE,ARC,LWPOLYLINE"))))
  49. (setq pts (MR:ssboundingbox ss))
  50. (setvar 'peditaccept 1)
  51. (command "_.pedit" "_m" ss "" "_j" "" "")
  52. (setq ss (ssget "_c" (car pts) (cadr pts) '((0 . "LWPOLYLINE")))
  53.        i -1
  54. )
  55. (while (setq ee (ssname ss (setq i (1+ i))))
  56.    (command "_.chamfer" "_p" ee)
  57. )
  58. (*error* nil)
  59. (princ)
  60. )

 
我用我的版本更新了我以前的帖子。。。
你,马尔科·里巴尔(没有你我做不到!)
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-6 00:29:34 | 显示全部楼层
 
非常感谢。M、 你的版本很好!
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 00:31:59 | 显示全部楼层
 
重复对大量点进行排序效率极低,完全没有必要,因为我们只寻找最小值/最大值。
 
 
可以通过以下方式编写代码来绕过参数限制:
  1. Command: (setq ss (ssget))
  2. Select objects: Specify opposite corner: 5760 found
  3. Select objects:
  4. <Selection set: 1b1>
  5. Command: (setq bb (lm:ssboundingbox ss))
  6. ; error: Exception occurred: 0xC0000005 (Access Violation)
  7. ; warning: unwind skipped on exception
  8. ; error: Exception occurred: 0xC0000005 (Access Violation)
  9. Command: (setq bb (mr:ssboundingbox ss))
  10. ((2.5446 -70.7315 0.0) (141.877 62.9086 0.0))
回复

使用道具 举报

34

主题

174

帖子

60

银币

后起之秀

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

铜币
257
发表于 2022-7-6 00:40:17 | 显示全部楼层
李,谢谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:44:15 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 22:13 , Processed in 0.707042 second(s), 72 queries .

© 2020-2025 乐筑天下

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