明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5039|回复: 16

[提问] 寻求大师帮忙编个双向偏移有交点自动剪裁LSP

[复制链接]
发表于 2016-5-12 21:37:07 | 显示全部楼层 |阅读模式
请教下各位大师,现在有个棘手的问题,手动偏移浪费时间太多,想请下论坛里的大师帮忙解决下我的问题,
例如我画一个矩形,通过一个命令设置偏移值自动生成二边的偏移线,如有交叉线自动双边偏移后的线自动剪裁。例图中的效果。钱不是问题,如有大师能帮忙,请联系我。

本帖子中包含更多资源

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

x
发表于 2016-5-13 16:03:06 | 显示全部楼层
  1. ;;单线变双线 By Gu_xl 需加载XLRX_API支持
  2. (defun c:MakeDblLine
  3.        (/ W SCALE D SS PTS LST LST0 NEW CURVES ERASED CP LST1 Doc)
  4.   (setq w (getdist "\n宽度<10.0>:"))
  5.   (if (null w)
  6.     (setq w 10.0)
  7.   )
  8.   (setq scale (getreal "\n容差比<1.0>"))
  9.   (if (null scale)
  10.     (setq scale 1.0)
  11.   )
  12.   (setq d (* 0.5 w))
  13.   (if (setq ss (ssget '((0 . "*line,circle,arc,ellipse"))))
  14.     (progn
  15.       (vla-StartUndoMark
  16.         (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  17.       )
  18.       (setq ss (xlrx-curve-pjion ss))
  19.       (setq pts (XLRX-Curve-Inters ss))
  20.       (setq ss (XLRX-PickSet->List ss))
  21.       (setq lst
  22.              (apply
  23.                'append
  24.                (mapcar
  25.                  '(lambda (x / a1 a2 p)
  26.                     (append
  27.                       (xlrx-curve-getoffsetcurves x d)
  28.                       (xlrx-curve-getoffsetcurves x (- d))
  29.                       (if (not (xlrx-curve-isclosed x))
  30.                         (progn
  31.                           (setq        a1 (+ (* pi 0.5)
  32.                                       (angle '(0 0 0)
  33.                                              (XLRX-Curve-getfirstDeriv
  34.                                                x
  35.                                                (XLRX-Curve-getStartParam x)
  36.                                              )
  37.                                       )
  38.                                    )
  39.                                 a2 (+ (* pi 0.5)
  40.                                       (angle '(0 0 0)
  41.                                              (XLRX-Curve-getfirstDeriv
  42.                                                x
  43.                                                (XLRX-Curve-getEndParam x)
  44.                                              )
  45.                                       )
  46.                                    )
  47.                           )
  48.                           (list
  49.                             (xlrx-make-line
  50.                               (polar (setq p (XLRX-Curve-getStartPoint x))
  51.                                      a1
  52.                                      d
  53.                               )
  54.                               (polar p a1 (- d))
  55.                             )
  56.                             (xlrx-make-line
  57.                               (polar (setq p (XLRX-Curve-getEndPoint x)) a2 d)
  58.                               (polar p a2 (- d))
  59.                             )
  60.                           )

  61.                         )
  62.                       )
  63.                     )

  64.                   )
  65.                  ss
  66.                )
  67.              )
  68.       )
  69.       (foreach en lst
  70.         (setq lst0 (vl-remove en lst))
  71.         (setq new (xlrx-copy en))
  72.         (if (setq curves (XLRX-Curve-BreakCurve new lst0 t))
  73.           (progn
  74.             (setq curves (XLRX-PickSet->List curves))
  75.             (setq erased nil)
  76.             (foreach ent curves
  77.               (setq cp (xlrx-curve-midpoint ent))
  78.               (if (not
  79.                     (vl-some '(lambda (x)
  80.                                 (if (< (distance cp x) (* w scale))
  81.                                   (progn
  82.                                     (if        (not erased)
  83.                                       (progn
  84.                                         (entdel ent)
  85.                                         (setq erased t)
  86.                                       )
  87.                                       (progn
  88.                                         (setq erased nil)
  89.                                         (setq lst1 (cons ent lst1))
  90.                                       )
  91.                                     )
  92.                                   )
  93.                                 )
  94.                               )
  95.                              pts
  96.                     )
  97.                   )
  98.                 (setq lst1   (cons ent lst1)
  99.                       erased nil
  100.                 )
  101.               )
  102.             )
  103.           )
  104.           (setq lst1 (cons new lst1))
  105.         )
  106.       )
  107.       (xlrx-delete lst)
  108.       (xlrx-curve-pjion lst1)
  109.       (if (= 8 (logand 8 (getvar 'UNDOCTL)))
  110.         (vla-EndUndoMark Doc)
  111.       )
  112.     )
  113.   )
  114.   (princ)
  115. )
回复 支持 1 反对 0

使用道具 举报

发表于 2016-5-13 10:01:00 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

发表于 2017-11-24 16:58:41 | 显示全部楼层

您好,我下载加载后,敲命令tt后没什么反应
发表于 2016-5-13 08:41:15 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2016-5-13 10:46:15 | 显示全部楼层
院长已搞定,剩下就剩钱的问题了
发表于 2016-5-13 11:33:24 | 显示全部楼层
源泉建筑的轴线变墙可以实现吧
发表于 2016-5-13 13:55:43 | 显示全部楼层
本帖最后由 xyp1964 于 2024-4-12 21:59 编辑



本帖子中包含更多资源

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

x
 楼主| 发表于 2016-5-13 17:30:54 | 显示全部楼层
xyp1964 发表于 2016-5-13 13:55

非常感谢!
 楼主| 发表于 2016-5-13 17:49:21 | 显示全部楼层
Gu_xl 发表于 2016-5-13 16:03

非常感谢二位大神!
发表于 2016-5-13 23:07:49 | 显示全部楼层
院长伪源码都收币了啊

点评

都是虚拟玩意  发表于 2020-2-2 11:06
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 20:39 , Processed in 0.192592 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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