乐筑天下

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

[编程交流] 共享数字维度

[复制链接]

26

主题

145

帖子

122

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 22:17:46 | 显示全部楼层 |阅读模式
代码
231752v7nn66n87rz40rz4.png


  1. ;;bbs.mjtd.com
  2. ;;Author:SunSpring
  3. (vl-load-com)
  4. (setq *number* 1)
  5. (defun makeleader (lst)
  6. (if (> (length lst) 1)
  7.    (entmakex (append
  8.             (list '(0 . "LEADER") '(100 . "AcDbEntity") '(100 . "AcDbLeader"))
  9.             (mapcar '(lambda (pt) (cons 10 pt)) lst)
  10.           )
  11.    )
  12. )
  13. )
  14. (defun entlist (ss / enlst ent lst n x)
  15. (cond
  16.    ((= (type ss) 'pickset)
  17.      (repeat (setq n (sslength ss))
  18.        (setq ent (ssname ss (setq n (1- n))))
  19.        (setq lst (cons ent lst))
  20.      )
  21.      lst
  22.    )
  23.    ((= (type ss) 'list)
  24.      (setq enlst (ssadd))
  25.      (foreach x ss
  26.        (if (= (type x) 'ename)
  27.          (ssadd x enlst)
  28.        )
  29.      )
  30.      enlst
  31.    )
  32. )
  33. )
  34. (defun delgrp (entgrp)
  35. (if (= (type entgrp) 'ename)
  36.    (setq entgrp (ssadd entgrp))
  37. )
  38. (if entgrp
  39.    (mapcar 'entdel (entlist entgrp))
  40.    ;(mapcar 'vla-delete (vobjlist entgrp))
  41. )
  42. )
  43. (defun lt:ss-entnext (en / ss)
  44. (if en
  45.    (progn
  46.      (setq ss (ssadd))
  47.      (while (setq en (entnext en))
  48.        (if (not (member (cdr (assoc 0 (entget en)))
  49.                         '("ATTRIB" "VERTEX" "SEQEND")
  50.                 )
  51.            )
  52.          (ssadd en ss)
  53.        )
  54.      )
  55.      (if (zerop (sslength ss)) (setq ss nil))
  56.      ss
  57.    )
  58.    (ssget "_x")
  59. )
  60. )
  61. (defun maketext (locationpoint textheight text rowtype)
  62. (entmakex (list '(0 . "TEXT")
  63.                 '(100 . "AcDbText")
  64.                  (cons 40 textheight)
  65.                 '(41 . 0.
  66.                  (cons 1 text)
  67.                  (cons 72 rowtype)
  68.                 '(10 0.0 0.0 0.0)
  69.                  (cons 11 (trans locationpoint 1 0))
  70.                 '(73 . 2)
  71.           )
  72. )
  73. )
  74. (defun makeline (start_point end_point)
  75. (entmakex (list '(0 . "line")
  76.                 (cons 10 (trans start_point 1 0))
  77.                 (cons 11 (trans end_point 1 0))
  78.           )
  79. )
  80. )
  81. (defun getmidpoint (p1 p2)
  82. (mapcar '(lambda (x) (/ x 2)) (mapcar '+ p1 p2))
  83. )
  84. (defun c:cba ( / #errexit $orr ang bpt ent gr lastent n num number pp1 pp2 pp3 pp4 pt1 pt2 sxlen textheight textline zxlen)
  85. (defun #errexit (s)
  86.    (delgrp (lt:ss-entnext lastent))
  87.    (setq *error* $orr)
  88. )
  89. (setq $orr *error*)
  90. (setq *error* #errexit)
  91. (setq lastent (entlast))
  92. (princ "\nPlease input the starting number :<")
  93. (princ *number*)
  94. (if (setq number (getint ">:"))
  95.    (setq *number* number)
  96. )
  97. (while (setq pt1 (getpoint "\nSpecify the starting point : "))
  98.    ;(titleplace pt1)
  99.    (cond
  100.      ((= (getvar "textsize") 3.5)
  101.        (setq textheight (* (getvar "dimscale") 5))
  102.      )
  103.      ((= (getvar "textsize") 5)
  104.        (setq textheight (* (getvar "dimscale") 7))
  105.      )
  106.    )
  107.    (setq textline (* 2 textheight))
  108.    (setq zxlen (* 0.25 textline))
  109.    (setq sxlen (* 2 textheight))
  110.    (setq local (* 0.7 textheight))
  111.    (setq lastent (entlast))
  112.    (if (setq pt2 (getpoint pt1 "\nSpecify the end point: "))
  113.      (progn
  114.        (setq ent (makeleader (list pt1 pt2)))
  115.        (vla-put-ArrowheadType (*en2obj* ent) acArrowDotSmall)
  116.      )
  117.       (exit)
  118.    )
  119.    (while (= (car (setq gr (grread nil 5 0))) 5)
  120.      (delgrp (lt:ss-entnext ent))
  121.      (setq num (/ (distance pt2 (cadr gr)) 10))
  122.      (cond
  123.        (
  124.          (or
  125.            (and
  126.              (> (angle pt2 (cadr gr)) 0)
  127.              (< (angle pt2 (cadr gr)) (* 0.25 pi))
  128.            )
  129.            (and
  130.              (> (angle pt2 (cadr gr)) (* 1.75 pi))
  131.              (< (angle pt2 (cadr gr)) (* 2.00 pi))
  132.            )
  133.          )
  134.          (setq ang 0)
  135.        )
  136.        (
  137.          (and
  138.            (> (angle pt2 (cadr gr)) (* 0.25 pi))
  139.            (< (angle pt2 (cadr gr)) (* 0.75 pi))
  140.          )
  141.          (setq ang (* 0.5 pi))
  142.        )
  143.        (
  144.          (and
  145.            (> (angle pt2 (cadr gr)) (* 0.75 pi))
  146.            (< (angle pt2 (cadr gr)) (* 1.25 pi))
  147.          )
  148.          (setq ang pi)
  149.        )
  150.        (
  151.          (and
  152.            (> (angle pt2 (cadr gr)) (* 1.25 pi))
  153.            (< (angle pt2 (cadr gr)) (* 1.75 pi))
  154.          )
  155.          (setq ang (* 1.5 pi))
  156.        )
  157.      )
  158.      (setq n *number*)
  159.      (if (> num 0)
  160.        (cond
  161.          ((= ang 0)
  162.            (cond
  163.              ((and (> (angle pt1 pt2) 0) (< (angle pt1 pt2) pi))
  164.                (setq pp1 (polar pt2 ang textline))
  165.                (makeline pt2 pp1)
  166.                (setq bpt (polar (getmidpoint pt2 pp1) (+ ang (* 0.5 pi)) local))
  167.                (maketext bpt textheight (itoa n) 1)
  168.                (repeat (fix num)
  169.                  (setq pp2 (polar pp1 (- ang (* 0.25 pi)) zxlen))
  170.                  (makeline pp1 pp2)
  171.                  (setq pp3 (polar pp2 (+ ang (* 0.25 pi)) zxlen))
  172.                  (makeline pp2 pp3)
  173.                  (setq pp4 (polar pp3 ang textline))
  174.                  (makeline pp3 pp4)
  175.                  (setq bpt (polar (getmidpoint pp3 pp4) (+ ang (* 0.5 pi)) local))
  176.                  (maketext bpt textheight (itoa (setq n (1+ n))) 1)
  177.                  (setq pp1 pp4)
  178.                )
  179.              )
  180.              (t
  181.                (setq n (+ n (fix num)))
  182.                (setq pp1 (polar pt2 ang textline))
  183.                (makeline pt2 pp1)
  184.                (setq bpt (polar (getmidpoint pt2 pp1) (+ ang (* 0.5 pi)) local))
  185.                (maketext bpt textheight (itoa n) 1)
  186.                (repeat (fix num)
  187.                  (setq pp2 (polar pp1 (- ang (* 0.25 pi)) zxlen))
  188.                  (makeline pp1 pp2)
  189.                  (setq pp3 (polar pp2 (+ ang (* 0.25 pi)) zxlen))
  190.                  (makeline pp2 pp3)
  191.                  (setq pp4 (polar pp3 ang textline))
  192.                  (makeline pp3 pp4)
  193.                  (setq bpt (polar (getmidpoint pp3 pp4) (+ ang (* 0.5 pi)) local))
  194.                  (maketext bpt textheight (itoa (setq n (1- n))) 1)
  195.                  (setq pp1 pp4)
  196.                )
  197.              )
  198.            )
  199.          )
  200.          ((= ang (* 0.5 pi))
  201.            (cond
  202.              ((and (> (angle pt1 pt2) (* 0.5 pi)) (< (angle pt1 pt2) (* 1.5 pi)))
  203.                (setq pp1 (polar pt2 pi textline))
  204.                (makeline pt2 pp1)
  205.                (setq bpt (polar (getmidpoint pt2 pp1) (* 0.5 pi) local))
  206.                (maketext bpt textheight (itoa n) 1)
  207.                (setq pp1 pt2)
  208.                (repeat (fix num)
  209.                  (setq pp2 (polar pp1 ang sxlen))
  210.                  (makeline pp1 pp2)
  211.                  (setq pp3 (polar pp2 pi textline))
  212.                  (makeline pp2 pp3)
  213.                  (setq bpt (polar (getmidpoint pp2 pp3) (* 0.5 pi) local))
  214.                  (maketext bpt textheight (itoa (setq n (1+ n))) 1)
  215.                  (setq pp1 pp2)
  216.                )
  217.              )
  218.              (t
  219.                (setq n (+ n (fix num)))
  220.                (setq pp1 (polar pt2 0 textline))
  221.                (makeline pt2 pp1)
  222.                (setq bpt (polar (getmidpoint pt2 pp1) (* 0.5 pi) local))
  223.                (maketext bpt textheight (itoa n) 1)
  224.                (setq pp1 pt2)
  225.                (repeat (fix num)
  226.                  (setq pp2 (polar pp1 ang sxlen))
  227.                  (makeline pp1 pp2)
  228.                  (setq pp3 (polar pp2 0 textline))
  229.                  (makeline pp2 pp3)
  230.                  (setq bpt (polar (getmidpoint pp2 pp3) (* 0.5 pi) local))
  231.                  (maketext bpt textheight (itoa (setq n (1- n))) 1)
  232.                  (setq pp1 pp2)
  233.                )
  234.              )
  235.            )
  236.          )
  237.          ((= ang pi)
  238.            (cond
  239.              ((and (> (angle pt1 pt2) 0) (< (angle pt1 pt2) pi))
  240.                (setq n (+ n (fix num)))
  241.                (setq pp1 (polar pt2 ang textline))
  242.                (makeline pt2 pp1)
  243.                (setq bpt (polar (getmidpoint pt2 pp1) (- ang (* 0.5 pi)) local))
  244.                (maketext bpt textheight (itoa n) 1)
  245.                (repeat (fix num)
  246.                  (setq pp2 (polar pp1 (+ ang (* 0.25 pi)) zxlen))
  247.                  (makeline pp1 pp2)
  248.                  (setq pp3 (polar pp2 (- ang (* 0.25 pi)) zxlen))
  249.                  (makeline pp2 pp3)
  250.                  (setq pp4 (polar pp3 ang textline))
  251.                  (makeline pp3 pp4)
  252.                  (setq bpt (polar (getmidpoint pp3 pp4) (- ang (* 0.5 pi)) local))
  253.                  (maketext bpt textheight (itoa (setq n (1- n))) 1)
  254.                  (setq pp1 pp4)
  255.                )
  256.              )
  257.              (t
  258.                (setq pp1 (polar pt2 ang textline))
  259.                (makeline pt2 pp1)
  260.                (setq bpt (polar (getmidpoint pt2 pp1) (- ang (* 0.5 pi)) local))
  261.                (maketext bpt textheight (itoa n) 1)
  262.                (repeat (fix num)
  263.                  (setq pp2 (polar pp1 (+ ang (* 0.25 pi)) zxlen))
  264.                  (makeline pp1 pp2)
  265.                  (setq pp3 (polar pp2 (- ang (* 0.25 pi)) zxlen))
  266.                  (makeline pp2 pp3)
  267.                  (setq pp4 (polar pp3 ang textline))
  268.                  (makeline pp3 pp4)
  269.                  (setq bpt (polar (getmidpoint pp3 pp4) (- ang (* 0.5 pi)) local))
  270.                  (maketext bpt textheight (itoa (setq n (1+ n))) 1)
  271.                  (setq pp1 pp4)
  272.                )
  273.              )
  274.            )
  275.          )
  276.          ((= ang (* 1.5 pi))
  277.            (cond
  278.              ((and (> (angle pt1 pt2) (* 0.5 pi)) (< (angle pt1 pt2) (* 1.5 pi)))
  279.                (setq n (+ n (fix num)))
  280.                (setq pp1 (polar pt2 pi textline))
  281.                (makeline pt2 pp1)
  282.                (setq bpt (polar (getmidpoint pt2 pp1) (* 0.5 pi) local))
  283.                (maketext bpt textheight (itoa n) 1)
  284.                (setq pp1 pt2)
  285.                (repeat (fix num)
  286.                  (setq pp2 (polar pp1 ang sxlen))
  287.                  (makeline pp1 pp2)
  288.                  (setq pp3 (polar pp2 pi textline))
  289.                  (makeline pp2 pp3)
  290.                  (setq bpt (polar (getmidpoint pp2 pp3) (* 0.5 pi) local))
  291.                  (maketext bpt textheight (itoa (setq n (1- n))) 1)
  292.                  (setq pp1 pp2)
  293.                )
  294.              )
  295.              (t
  296.                (setq pp1 (polar pt2 0 textline))
  297.                (makeline pt2 pp1)
  298.                (setq bpt (polar (getmidpoint pt2 pp1) (* 0.5 pi) local))
  299.                (maketext bpt textheight (itoa n) 1)
  300.                (setq pp1 pt2)
  301.                (repeat (fix num)
  302.                  (setq pp2 (polar pp1 ang sxlen))
  303.                  (makeline pp1 pp2)
  304.                  (setq pp3 (polar pp2 0 textline))
  305.                  (makeline pp2 pp3)
  306.                  (setq bpt (polar (getmidpoint pp2 pp3) (* 0.5 pi) local))
  307.                  (maketext bpt textheight (itoa (setq n (1+ n))) 1)
  308.                  (setq pp1 pp2)
  309.                )
  310.              )
  311.            )
  312.          )
  313.        )
  314.      )
  315.    )
  316.    (setq *number* (1+ n))
  317. )
  318. (princ)
  319. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 06:19 , Processed in 0.503320 second(s), 57 queries .

© 2020-2025 乐筑天下

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