找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 422|回复: 0

[每日一码] 多段线生成缓冲区

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2025-1-10 09:52:15 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2025-1-10 10:02 编辑

  • 生成多多段线的BOX,
  • 批量
  • 灵活设置上下左右偏移距离
  • 灵活设置封口方式


Video_2025-01-10_095722.gif

  1. (defun c:xdtb_pl2box ( / ents ss tf tf1 val)
  2.   (defun _prompt1 ()
  3.     (xdrx_prompt
  4.       (xdrx-string-formatex
  5.         (xdrx-string-multilanguage
  6.           "\n** Offset 当前设置:上偏(%.1f) | 下偏(%.1f) | 左偏(%.1f) | 右偏(%.1f) | 封端(%s)   **"
  7.           "\n** Offset Current settings:[ Up(%.1f) | Down(%.1f) | Left(%.1f) | Right(%.1f) | Close(%s) ]  **"
  8.         )
  9.         #xd-var-global-offset-up-distance
  10.         #xd-var-global-offset-down-distance
  11.         #xd-var-global-offset-left-distance
  12.         #xd-var-global-offset-right-distance
  13.         #xd-var-global-offset-close-mode
  14.       )
  15.     )
  16.     t
  17.   )
  18.   (if (not #xd-var-global-offset-up-distance)
  19.     (setq #xd-var-global-offset-up-distance 10.0)
  20.   )
  21.   (if (not #xd-var-global-offset-down-distance)
  22.     (setq #xd-var-global-offset-down-distance 10.0)
  23.   )
  24.   (if (not #xd-var-global-offset-left-distance)
  25.     (setq #xd-var-global-offset-left-distance 0.0)
  26.   )
  27.   (if (not #xd-var-global-offset-right-distance)
  28.     (setq #xd-var-global-offset-right-distance 0.0)
  29.   )
  30.   (if (not #xd-var-global-offset-close-mode)
  31.     (setq #xd-var-global-offset-close-mode "Chamfer")
  32.   )
  33.   (xdrx-begin)
  34.   (_prompt1)
  35.   (setq tf t)
  36.   (while
  37.     (and
  38.       tf
  39.       (_prompt1)
  40.       (xdrx_initssget
  41.         (xdrx-string-multilanguage
  42.           "选取要偏移的多段线[上偏(0)/下偏(1)/左偏(2)/右偏(3)/封端(4)]<退出>:"
  43.           "Select the polyline to be offset [ Up(0)/Down(1)/Left(2)/Right(3)/CloseMode(4) ]<Exit>:"
  44.         )
  45.         "0 1 2 3 4"
  46.         ""
  47.         ""
  48.         ""
  49.       )
  50.       (setq ss (xdrx_ssget
  51.                  '((-4 . "<or")
  52.                    (0 . "line")
  53.                    (-4 . "<and")
  54.                    (0 . "*polyline")
  55.                    (-4 . "<not")
  56.                    (-4 . "&=")
  57.                    (70 . 1)
  58.                    (-4 . "not>")
  59.                    (-4 . "and>")
  60.                    (-4 . "or>")
  61.                   )
  62.                )
  63.       )
  64.      
  65.     )
  66.      (setq tf1 (type ss))
  67.      (cond
  68.        ((= tf1 'STR)
  69.         (cond
  70.           ((= ss "0")
  71.            (if (setq val
  72.                       (getreal (xdrx-string-formatex
  73.                                  (xdrx-string-multilanguage
  74.                                    "\n上偏距离<%.1f>"
  75.                                    "\nUp Offset<%.1f>"
  76.                                  )
  77.                                  #xd-var-global-offset-up-distance
  78.                                )
  79.                       )
  80.                )
  81.              (setq #xd-var-global-offset-up-distance val)
  82.            )
  83.           )
  84.           ((= ss "1")
  85.            (if (setq val
  86.                       (getreal (xdrx-string-formatex
  87.                                  (xdrx-string-multilanguage
  88.                                    "\n下偏距离<%.1f>"
  89.                                    "\nDown Offset<%.1f>"
  90.                                  )
  91.                                  #xd-var-global-offset-down-distance
  92.                                )
  93.                       )
  94.                )
  95.              (setq #xd-var-global-offset-down-distance val)
  96.            )
  97.           )
  98.           ((= ss "2")
  99.            (if (setq val
  100.                       (getreal (xdrx-string-formatex
  101.                                  (xdrx-string-multilanguage
  102.                                    "\n左偏距离<%.1f>"
  103.                                    "\nLeft Offset<%.1f>"
  104.                                  )
  105.                                  #xd-var-global-offset-Left-distance
  106.                                )
  107.                       )
  108.                )
  109.              (setq #xd-var-global-offset-Left-distance val)
  110.            )
  111.           )
  112.           ((= ss "3")
  113.            (if (setq val
  114.                       (getreal (xdrx-string-formatex
  115.                                  (xdrx-string-multilanguage
  116.                                    "\n右偏距离<%.1f>"
  117.                                    "\nRight Offset<%.1f>"
  118.                                  )
  119.                                  #xd-var-global-offset-Right-distance
  120.                                )
  121.                       )
  122.                )
  123.              (setq #xd-var-global-offset-Right-distance val)
  124.            )
  125.           )
  126.           ((= ss "4")
  127.            (xdrx-initget "0 1")
  128.            (if (setq val
  129.                       (getint
  130.                         (xdrx-string-formatex
  131.                           (xdrx-string-multilanguage
  132.                             "\n封口方式[Charmfer(0)/Fillet(1)]<%d>:"
  133.                             "\nClose Modet[Charmfer(0)/Fillet(1)]<%d>:"
  134.                           )
  135.                           (if
  136.                             (= (strcase #xd-var-global-offset-close-mode)
  137.                                "CHARMFER"
  138.                             )
  139.                              0
  140.                              1
  141.                           )
  142.                         )
  143.                       )
  144.                )
  145.              (setq #xd-var-global-offset-close-mode
  146.                     (if        (= val 0)
  147.                       "Charmfer"
  148.                       "Fillet"
  149.                     )
  150.              )
  151.            )
  152.           )
  153.         )
  154.        )
  155.        ((= tf1 'PICKSET)
  156.         (if (= (strcase #xd-var-global-offset-close-mode) "CHARMFER")
  157.           (xdrx-setvar "boxfillet" 1)
  158.           (xdrx-setvar "boxfillet" 0))
  159.         (setq ents (xdrx-getproperty
  160.                      ss
  161.                      "tobox"
  162.                      #xd-var-global-offset-down-distance
  163.                      #xd-var-global-offset-Up-distance
  164.                      #xd-var-global-offset-Left-distance
  165.                      #xd-var-global-offset-Right-distance
  166.                     )
  167.         )
  168.         (xdrx-entity-make ents)
  169.         (setq tf nil)
  170.        )
  171.      )
  172.   )
  173.   (xdrx-end)
  174.   (princ)
  175. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-28 09:33 , Processed in 0.396179 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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