明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 指尖

直线偏移且删除原直线

[复制链接]
发表于 7 天前 | 显示全部楼层
我东拼西凑的,也整了一个,望大家指导

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层

(defun c:ooi (/ ENT EYNS OSMOD P1 P2 SS)
  (defun *error* (msg)
    (if        osmod
      (progn (setvar "osmode" osmod))
    )
    (princ)
  )
  (defun ss->lst (ss)
    (vl-remove-if-not
      '(lambda (x) (= (type x) 'ENAME))
      (apply 'append (ssnamex ss))
    )
  )
  (defun oop- (lit / DD ENT2 EYNS PD X ENT)
    (setq eyns (getenv "offset-del"))
    (setq dd (abs (getvar 'offsetdist)))
    (or        (zerop dd)
        (foreach ENT lit
          (setq        x    (vlax-ename->vla-object ENT)
                ent2 (entlast)
          )
          (setq        pd (vl-catch-all-error-p
                     (vl-catch-all-apply 'vla-offset (list X dd))
                   )
          )
          (setq        pd (vl-catch-all-error-p
                     (vl-catch-all-apply 'vla-offset (list X (* -1 dd)))
                   )
          )
          (or pd (and (= eyns "删除源对像") (vla-delete x)))
          (vlax-release-object x)
        )
    )
    (gc)
    (prin1)
    t
  )

  (princ "\n 双边偏移对像:")
  (or (getenv "offset-del")
      (setenv "offset-del" "保留源对像")
  )
  (setq osmod (getvar "osmode"))
  (while
    (progn
      (setq eyns (getenv "offset-del"))
      (setvar 'errno 0)
      (setvar "osmode" 512)
      (initget 128)
      (setq p1
             (getpoint
               (strcat
                 "\n双边偏移距离: "
                 (rtos (* (abs (getvar 'OFFSETDIST)) 2) 2)
                 " mm "
                 eyns
                 "”
选择对象:     或:
输入数字:偏移距离
输入字母:删除源对像
[删除(E)]"     )
             )
      )
      (setvar "osmode" osmod)
      (cond
        ((= 7 (getvar 'errno)) nil)
        ((= p1 nil) nil)
        ((= (type p1) 'list)
         (cond
           ((setq ent (nentselp p1)) (oop- (list (car ent))))
           ((and (setq p2 (getcorner p1)) (setq ss (ssget "c" p1 p2)))
            (oop- (ss->lst ss))
           )
         )
        )
        ((= p1 "u") (vl-cmdf "undo" "1"))
        ((and (= (type p1) 'str) (= (type (distof p1)) 'REAL))
         (setvar 'OFFSETDIST (/ (distof p1) 2))
        )
        ((and (= (type p1) 'str) (= eyns "删除源对像"))
         (setenv "offset-del" "保留源对像")
        )
        ((and (= (type p1) 'str) (= eyns "保留源对像"))
         (setenv "offset-del" "删除源对像")
        )
        (t nil)
      )
    )
  )
  (gc)
  (prin1)
)
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-26 17:20 , Processed in 0.146013 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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