• AutoLISP手指图案


    AutoLISP手指图案,代码如下。

    (defun c:test()
      (setvar "cmdecho" 0)
      (setq os (getvar "osmode"))
      (setq oldlayer (getvar "clayer"))
      (setvar "osmode" 0)
      (setq cenpt (getpoint "圆心:"))
      (setq dia (getpoint "\n直径<96>:")) (if (null dia) (setq dia 96))
      (setq n (getint "\n手指头数目<4>:")) (if (null n) (setq n 4))
      (command "-layer" "m" "str" "c" 4 "" "")
      (command "circle" cenpt "d" dia)
      (setq ent (entlast))
      (setq r (* dia 0.5) x1 (/ r n) x2 (* x1 0.5))
      (setq k (- r x2) p0 cenpt)
      (setq i 1)
      (repeat (1- n)
        (setq ang (acos (/ x2 k)))
        (setq arcen (polar cenpt ang k))
        (setq p0 (polar cenpt 0 (* i x1)))
        (setq p1 (polar arcen 0 (/ x1 2)))
        (setq p2 (polar arcen pi (/ x1 2)))
        (command "arc" p1 "c" arcen p2)
        (if (= i 1) (command "line" cenpt p2 ""))
        (command "line" p0 p1 "")
        (command "arc" p0 "c" cenpt "a" -90)
        (setq i (1+ i) x2 (+ x2 x1))
        )
      (command "arc" p0 "e" (polar p0 0 x1) "a" -180)
      (command "array" (get_ss ent) "" "p" cenpt 2 "" "")
      (command "-layer" "m" "dim" "c" 1 "" "")
      (command "dim1" "ver" "" (list ent cenpt) "t" (strcat "%%c" "<>") (polar cenpt 0 (+ r 10)))
      (command "-group" "c" "*" "" ent (get_ss ent) "")
      (setvar "osmode" os)
      (setvar "clayer" oldlayer)
      (prin1)
      )
    (defun acos(val)
      (atan (/ (sqrt (- 1.0 (* val val))) val))
      )
    (defun get_ss(ref_en)
      (setq ss (ssadd))
      (while (setq en (entnext ref_en))
        (setq ss (ssadd en ss) ref_en en)
        )
      ss
      )

    代码完。

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


  • 相关阅读:
    c#向某网址Post信息,并得到Cookies
    调度自动化系统及调度数据网安全分析探讨
    C#winform中怎么将程序最小化到系统托盘
    电力配网自动化解决方案
    .NET (c#) 模拟 Cookie
    调整数组顺序使奇数位于偶数前面
    在字符串中删除特定的字符
    在O(1)时间内删除链表结点
    单链表逆置
    从尾到头输出链表
  • 原文地址:https://www.cnblogs.com/bimgoo/p/2502985.html
Copyright © 2020-2023  润新知