找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 460|回复: 1

[求助] [求助]:下面的这个应该怎么用,谢谢~!

[复制链接]
发表于 2007-3-11 21:46:22 | 显示全部楼层 |阅读模式

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

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

×
;;;批量偏移
;;;ago9999,梨胡鸟编写(QQ17137646)
(defun c:py (/ en offd pt py_fs offd dx_ss dx_ss dx_n pt pt0 n)
  (command "undo" "be")                        ; 定义返回点
  (setvar "cmdecho" 0)                        ; 关闭命令提示

  (if (or (= py_fs0 nil) (eq py_fs0 ""))
    (setq py_fs0 "Z")
  )
  (princ "\n请输入偏移方式[正向(Z)/反向(F)/双向(S)/通过(T)]<")
  (princ py_fs0)                        ;输入偏移方式
  (princ ">:")
  (setq py_fs (getstring))
  (if (or (= py_fs nil) (eq py_fs ""))
    (setq py_fs py_fs0)
    (setq py_fs0 py_fs)
  )

  (if (or (eq py_fs "t") (eq py_fs "T"))
    (princ "\n采用通过点偏移方式")
    (progn
      (if (= offd0 nil)
        (setq offd0 "0")
      )
      (princ "\n请输入偏移距离(")
      (princ offd0)
      (princ ")")                        ;输入偏移距离
      (setq offd (getdist))
      (if (= offd nil)
        (setq offd offd0)
        (setq offd0 offd)
      )
    )
  )

  (princ "\n请选择线段,弧,圆,多段线:")
  (setq dx_ss (ssget))
  (if (or (eq py_fs "s") (eq py_fs "S"))
    (setq pt (list 0 0))
    (setq pt (getpoint "\n请选择基点"))
  )                                        ;输入偏移基点

  (setq n 0)
  (while (< n (sslength dx_ss))
    (setq dx_n (ssname dx_ss n))
    (if
      (or (eq py_fs "t") (eq py_fs "T"))
       (command "OFFSET" "t" dx_n pt "")
       (progn
         (cond
           ((or        (eq "LINE" (cdr (assoc '0 (entget dx_n))))
                (eq "LWPOLYLINE" (cdr (assoc '0 (entget dx_n))))
            )
            (command "OFFSET" offd dx_n pt "") ;正向偏移
            (setq ptst (cdr (assoc '10 (entget dx_n))))
            (setq pten (cdr (assoc '10 (entget (entlast)))))

            (if        (or (eq py_fs "f") (eq py_fs "F")) ;正向偏移删除
              (command "ERASE" "l" "")
            )
            (if        (or (eq py_fs "f")
                    (eq py_fs "F")
                    (eq py_fs "s")
                    (eq py_fs "S")
                )                        ;反向偏移
              (progn
                (setq pt0 (list        (- (* 2 (nth 0 ptst)) (nth 0 pten))
                                (- (* 2 (nth 1 ptst)) (nth 1 pten))
                          )
                )
                (command "OFFSET" offd dx_n pt0 "")
              )
            )
           )
           ((or        (eq "ARC" (cdr (assoc '0 (entget dx_n))))
                (eq "CIRCLE" (cdr (assoc '0 (entget dx_n))))
            )
            (command "OFFSET" offd dx_n pt "") ;正向偏移
            (setq rst (cdr (assoc '40 (entget dx_n))))
            (setq ren (cdr (assoc '40 (entget (entlast)))))

            (if        (or (eq py_fs "s") (eq py_fs "S")) ;正向偏移复制
              (command "copy" "l" "" "0,0,0" "0,0,0")
            )
            (if        (or (eq py_fs "f")
                    (eq py_fs "F")
                    (eq py_fs "s")
                    (eq py_fs "S")
                )                        ;反向偏移
              (progn
                (setq r0 (- (* 2 rst) ren))
                (if (<= r0 0)
                  (command "ERASE" "l" "") ;正向偏移删除
                  (progn
                    (setq dx_n0 (entget (entlast)))
                    (setq dx_n0
                           (subst (cons '40 r0) (assoc '40 dx_n0) dx_n0)
                    )
                    (entmod dx_n0)
                  )                        ;正向偏移更改
                )
              )
            )
           )
         )

       )
    )
    (setq n (1+ n))
  )
  (command "undo" "e")                        ; 定义返点
  (setvar "cmdecho" 1)                        ; 打开命令提示
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-3-11 22:49:17 | 显示全部楼层
谢谢楼上的程序。。。。。
至于怎么用,你不是开玩笑吧。。。。。
"appload"加载你贴的格式为lsp的文件啊。。。
然后在CAD命令行上输入"py"
然后按提示选择“线段,弧,圆,多段线”当中一个进行偏移。。
我实在是太热心了。。。。
怎么没人给我加分啊。。。哈哈。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 17:32 , Processed in 0.254716 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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