明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2854|回复: 6

[已解答] 偏移图层

[复制链接]
发表于 2014-6-12 09:03 | 显示全部楼层 |阅读模式
  这是论坛里边大神们的程序  请高手帮我改下  谢谢
把选择(setq kd0 (getkword "\n[向外偏移W/向内偏移N/双向偏移S]<W>")) 这里改成  1 2 3
还有希望能加入偏移到当前图层  谢谢


谢谢
  1. ;;批量偏移 By Gu_xl 2013.04.01
  2. (defun c:py (/ CLOCKWISEP OFFSET KD SS N EN kd0)
  3.   (defun CLOCKWISEP (en / lw minp MaxP lst)
  4.     (setq lw (vlax-ename->vla-object en))
  5.     (vla-GetBoundingBox lw 'MinP 'MaxP)
  6.     (setq
  7.       minp (vlax-safearray->list minp)
  8.       MaxP (vlax-safearray->list MaxP)
  9.       lst  (mapcar
  10.              (function
  11.                (lambda (x)
  12.                  (vlax-curve-getParamAtPoint
  13.                    lw
  14.                    (vlax-curve-getClosestPointTo lw x)
  15.                    )
  16.                  )
  17.                )
  18.              (list minp
  19.                    (list (car minp) (cadr MaxP))
  20.                    MaxP
  21.                    (list (car MaxP) (cadr minp))
  22.                    )
  23.              )
  24.       )
  25.     (if (or
  26.           (<= (car lst) (cadr lst) (caddr lst) (cadddr lst))
  27.           (<= (cadr lst) (caddr lst) (cadddr lst) (car lst))
  28.           (<= (caddr lst) (cadddr lst) (car lst) (cadr lst))
  29.           (<= (cadddr lst) (car lst) (cadr lst) (caddr lst))
  30.           )
  31.       t
  32.       )
  33.     )
  34.   (initget 7 "W N S  ")
  35.   (setq kd0 (getkword "\n[向外偏移W/向内偏移N/双向偏移S]<W>"))
  36.   (if (= "" kd0)
  37.     (setq kd0 "W")
  38.     )
  39.   (initget 6)
  40.   (setq offset (getreal "\n[输入偏移距离]<0.5>"))
  41.   (if (null offset)
  42.     (setq offset 0.5)
  43.     )
  44.   (initget 7 "Y N  ")
  45.   (setq kd (getkword "\n[删除源对象<Y>/不删除源对象<N>]<N>:"))
  46.   (if (= kd "")
  47.     (setq kd "N")
  48.     )
  49.   (while (setq ss (ssget '((0 . "*polyline,arc,circle"))))
  50.     (repeat (setq n (sslength ss))
  51.       (setq en (ssname ss (setq n (1- n))))
  52.       (cond
  53.         ((or (= "ARC" (cdr (assoc 0 (entget en))))
  54.              (= "CIRCLE" (cdr (assoc 0 (entget en))))
  55.              )
  56.          (cond ((= kd0 "W")
  57.                 (vla-offset (vlax-ename->vla-object en) offset)
  58.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  59.                 )
  60.                ((= kd0 "N")
  61.                 (vla-offset (vlax-ename->vla-object en) (- offset))
  62.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  63.                 )
  64.                (t
  65.                 (vla-offset (vlax-ename->vla-object en) offset)
  66.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  67.                 (vla-offset (vlax-ename->vla-object en) (- offset))
  68.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  69.                 )
  70.                )
  71.          )
  72.         (t
  73.          (cond ((= kd0 "W")
  74.                 (if (CLOCKWISEP en)
  75.                   (vla-offset (vlax-ename->vla-object en) (- offset))
  76.                   (vla-offset (vlax-ename->vla-object en) offset)
  77.                   )
  78.                   (vla-put-Color (vlax-ename->vla-object (entlast)) 4)
  79.                 )
  80.                ((= kd0 "N")
  81.                 (if (CLOCKWISEP en)
  82.                   (vla-offset (vlax-ename->vla-object en) offset)
  83.                   (vla-offset (vlax-ename->vla-object en) (- offset))
  84.                   )
  85.                   (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  86.                 )
  87.                (t
  88.                 (vla-offset (vlax-ename->vla-object en) offset)
  89.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 1)
  90.                 (vla-offset (vlax-ename->vla-object en) (- offset))
  91.                 (vla-put-Color (vlax-ename->vla-object (entlast)) 4)
  92.                 )
  93.                )
  94.          )
  95.         )
  96.       (if (= kd "Y")
  97.         (entdel en)
  98.         )
  99.       )
  100.     )
  101.   (princ)
  102.   )

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · 学习|主题: 95, 订阅: 7
发表于 2014-6-12 09:21 | 显示全部楼层
,谢谢分享,看看
发表于 2014-7-7 20:51 | 显示全部楼层
(setq kd0 (getkword "\n[向外偏移1/向内偏移2/双向偏移3]<W>")) wns
(if (= kd0 1)(setq kd0 W))
(if (= kd0 2)(setq kd0 N))
(if (=kd0 3)(setq kd0 S))
发表于 2014-7-8 00:13 | 显示全部楼层
首先,你只需要将
(cond ((= kd0 "W")
                (progn )
                )
               ((= kd0 "N")
                           (progn )
                )
                                ((= kd0" S")
                                (progn )
                )
)
里面的WNS修改成你需要的123即可~

其次你会用 vla-put-Color,那我想vla-put-layer也应该难不倒ni~
发表于 2019-6-4 10:15 | 显示全部楼层
请问一下,你这个怎么修改的呀
发表于 2020-9-17 16:09 | 显示全部楼层
顶起来,学习学习,谢谢楼主分享以及各位大神的评论
发表于 2020-9-18 07:34 | 显示全部楼层
俺用的偏移到当前层 ,要是能偏移到指定层更好,偏移的距离根据材料厚度是固定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-4 18:48 , Processed in 3.553753 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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