明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1046|回复: 4

[提问] 求弧形最大的长和宽怎么完成

[复制链接]
发表于 2016-4-16 03:08:09 | 显示全部楼层 |阅读模式
求弧形最大的长和宽怎么完成


该贴已经同步到 happy訫誶的微博

本帖子中包含更多资源

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

x

点评

应该是求扇形最大的长和宽。  发表于 2016-4-16 11:02
发表于 2016-4-16 10:43:50 | 显示全部楼层
论坛找“最小包围盒”,会有惊喜
发表于 2016-4-17 00:40:13 | 显示全部楼层
  1. (defun MJ:GetssBox (ss / i l1 l2 ll ur)
  2.   (repeat (setq i (sslength ss))
  3.     (vla-getboundingbox
  4.       (vlax-ename->vla-object (ssname ss (setq i (1- i))))
  5.       'll
  6.       'ur
  7.     )
  8.     (setq l1 (cons (vlax-safearray->list ll) l1)
  9.           l2 (cons (vlax-safearray->list ur) l2)
  10.     )
  11.   )
  12.   (mapcar '(lambda (a b) (apply 'mapcar (cons a b)))
  13.           '(min max)
  14.           (list l1 l2)
  15.   )
  16. )

  17. (if (setq ss (ssget))
  18.         (progn
  19.                 (setq pts (MJ:GetssBox ss))
  20.                 (command "RECTANG" "non" (car pts) "non" (cadr pts))
  21.         )
  22. )
发表于 2016-4-17 14:00:20 | 显示全部楼层

根据圆弧作外接矩形

本帖最后由 llsheng_73 于 2016-4-17 14:11 编辑

  1. (defun c:RecofArc(/ e f a b c d r)
  2.   (if(and(setq e(entsel"选择弧"))
  3.   (setq e(vlax-ename->vla-object(car e)))
  4.   (=(vlax-get-property e'ObjectName)"AcDbArc"))
  5.     (progn
  6.       (if(<(setq r(vla-get-Radius e))
  7.   (setq a(vlax-curve-getStartPoint e);起点
  8.         b(vlax-curve-getendPoint e);止点
  9.         c(vlax-curve-getpointatparam e(*(+(vlax-curve-getstartparam e)(vlax-curve-getendparam e))0.5));弧顶(弧线中点)
  10.         e(angle a b)
  11.         d(mapcar'*(mapcar'+ a b)'(0.5 0.5 0.5));玄的中点
  12.         f(angle d c)
  13.         c(distance d c)));弓高
  14. (setq a(polar d e r)b(polar d(+ pi e)r)))
  15.       (entmake(append'((0 . "LWPOLYLINE")(100 . "AcDbEntity")(100 . "AcDbPolyline")(90 . 4)(70 . 1))
  16.        (mapcar'(lambda(x)(cons 10 x))(list a b(polar b f c)(polar a f c)))))))
  17. )

对于圆弧,其外接最小矩形的宽为玄高,当玄高小半径时(劣弧),其宽为玄长,否则以直径为宽
发表于 2016-4-17 15:42:04 | 显示全部楼层
  1. [size=14px];; tt(选择集最小外框)[/size](defun c:tt ()
  2.   (if (setq ss (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE"))))
  3.     (xyp-rectang (xyp-9pt ss 1) (xyp-9pt ss 9))
  4.   )
  5.   (princ)
  6. [size=14px])[/size]

本帖子中包含更多资源

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

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-6 07:20 , Processed in 0.186796 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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