• AutoCAD LISP多边形边为直径绘制圆


    AutoCAD LISP多边形边为直径绘制圆,代码如下。

    (defun :test()
      (setvar "cmdecho" 0)
      (setq pt1 (getpoint "\n起点:"))
      (command "pline" pt1)
      (setq pt2 (getpoint pt1 "\n第二点:"))
      (command pt2)
      (setq pt3 (getpoint pt2 "\n第三点:"))
      (command pt3)
      (setq pt4 (getpoint pt3 "\n第四点:"))
      (command pt4)
      (setq pt5 (getpoint pt4 "\n第五点:"))
      (command pt5 "c")
      (setq dist1-2 (distance pt1 pt2))
      (setq dist2-3 (distance pt2 pt3))
      (setq dist3-4 (distance pt3 pt3))
      (setq dist4-5 (distance pt4 pt5))
      (setq dist5-1 (distance pt5 pt1))
      (setq cc '())
      (setq cc (cons (list dist1-2 pt1 pt2) cc))
      (setq cc (cons (list dist2-3 pt2 pt3) cc))
      (setq cc (cons (list dist3-4 pt3 pt4) cc))
      (setq cc (cons (list dist4-5 pt4 pt5) cc))
      (setq cc (cons (list dist5-1 pt5 pt1) cc))
      (setq max_dd (max dist1-2 dist2-3 dist3-4 dist4-5 dist5-1))
      (setq min_dd (min dist1-2 dist2-3 dist3-4 dist4-5 dist5-1))
      (setq max_pt (assoc max_dd cc))
      (setq max_pt1 (cadr max_pt))
      (setq max_pt2 (caddr max_pt))
      (setq max_ptm (polar max_pt1 (angle max_pt1 max_pt2) (/ max_dd 2)))
      (setq min_pt (assoc min_dd cc))
      (setq min_pt1 (cadr min_pt))
      (setq min_pt2 (caddr min_pt))
      (command "arc" max_pt1 "e" max_ptm "a" 180)
      (command "arc" max_ptm "e" max_pt2 "a" 180)
      (command "arc" min_pt1 "e" min_pt2 "a" 180)
      (prin1)
      )

    代码完。

    按照顺时针和逆时针选取点,绘制的圆分别在多边形内部和外部,应该能让所绘制的圆全部在外部。

    作者:codee
    文章千古事,得失寸心知。


  • 相关阅读:
    Android(一)
    git
    UBuntu18.04 配置环境
    TensorRT Development document (Python)
    继续
    tensorRT C++ API
    tensorRT 与yolov3_tiny
    浅谈PHP进程管理
    nginx 平滑重启的实现方法
    fast-cgi & php-fpm 等的理解 (讨论试理解)
  • 原文地址:https://www.cnblogs.com/bimgoo/p/2502958.html
Copyright © 2020-2023  润新知