找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 419|回复: 0

[每日一码] 已知圆心,起始点、终止点,求bulge

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2021-1-14 12:33:34 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 marting 于 2021-1-14 12:35 编辑

  1. (defun PPC-Bulge ( pt1 pt2 cen / a )
  2.     (setq a (/ (rem (+ pi pi (- (angle cen pt2) (angle cen pt1))) (+ pi pi)) 4.0))
  3.     (if (LM:clockwise-p pt2 cen pt1) (setq a (- a (/ pi 2.0))))
  4.     (/ (sin a) (cos a))
  5. )

  6. ;; Clockwise-p  -  Lee Mac
  7. ;; Returns T if p1,p2,p3 are clockwise oriented

  8. (defun LM:clockwise-p ( p1 p2 p3 )
  9.     (<  (* (- (car  p2) (car  p1)) (- (cadr p3) (cadr p1)))
  10.         (* (- (cadr p2) (cadr p1)) (- (car  p3) (car  p1)))
  11.     )
  12. )


测试:
  1. (defun c:test ( / cen ocs pt1 pt2 )
  2.     (if (and (setq pt1 (getpoint "\nStart point: "))
  3.              (setq pt2 (getpoint "\nEnd point: " pt1))
  4.              (setq cen (getpoint "\nCenter: "))
  5.              (setq ocs (trans '(0 0 1) 1 0 t))
  6.         )
  7.         (entmake
  8.             (list
  9.                '(000 . "LWPOLYLINE")
  10.                '(100 . "AcDbEntity")
  11.                '(100 . "AcDbPolyline")
  12.                '(090 . 2)
  13.                '(070 . 0)
  14.                 (cons 038 (caddr (trans pt1 1 ocs)))
  15.                 (cons 010 (trans pt1 1 ocs))
  16.                 (cons 042 (PPC-Bulge pt1 pt2 cen))
  17.                 (cons 010 (trans pt2 1 ocs))
  18.                 (cons 210 ocs)
  19.             )
  20.         )
  21.     )
  22.     (princ)
  23. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-25 21:48 , Processed in 0.161027 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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