明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1867|回复: 7

如何实现许多个圆同时向内(向外)offset xmm

[复制链接]
发表于 2004-12-25 14:34:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2004-12-25 15:47:16 编辑

向龙哥求教:lisp程序 如何实现许多个圆同时向内或向外offset xmm
发表于 2004-12-25 14:49:00 | 显示全部楼层
(defun c:tT (/ C-RADIUS DIST DXF I OS SS)
(setq ss (ssget '((0 . "CIRCLE"))))
(setq dist (getdist "\n输入偏移距离:"))
(setq i 0 os (getvar "osmode"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
(repeat (sslength ss)
(setq DXF (ENTGET (ssname ss i)))
(entmAKE (subst (cons 40 (+ (CDR (ASSOC 40 DXF)) dist)) (assoc 40 DXF) DXF))
(setq i (1+ i))
)
(setvar "osmode" os)
(setvar "cmdecho" 1)
)
发表于 2004-12-25 15:24:00 | 显示全部楼层
  1. (defun c:test( / ss dist i ent)
  2.    (vl-load-com)
  3.    (setq ss (ssget '((0 . "CIRCLE"))))
  4.    (setq dist (getdist "\n输入偏移距离:"))
  5.    (setq i 0)
  6.    (repeat (sslength ss)
  7.        (setq ent (ssname ss i))
  8.        (if (> (cdr (assoc 40 (entget ent))) dist)
  9.            (vla-offset (vlax-ename->vla-object ent) (- dist))
  10.        )
  11.        (vla-offset (vlax-ename->vla-object ent) dist)
  12.        (setq i (1+ i))
  13.    )
  14.    (princ)
  15. )
发表于 2004-12-25 15:33:00 | 显示全部楼层
呵呵,好开心,这题我也能搞定了。不再开一个话题了,我想再请问大家对N个数按其大小排序,在哪可以找到呀。我以前好象见到过,现在找不到了,谁找到贴到这儿来让我看看好吗?
 楼主| 发表于 2004-12-25 16:04:00 | 显示全部楼层
向内 或 向外offset xmm,应有可选方向选项!!!
发表于 2004-12-25 19:15:00 | 显示全部楼层
本帖最后由 作者 于 2004-12-25 19:37:21 编辑

学习meflying的程序:
  1. ;;;多个圆同时向内或向外偏移(offset )定距
  2. (defun c:test028 (/ ss i ent)
  3.    (vl-load-com)
  4.    (setq  ss     (ssget '((0 . "CIRCLE")))
  5.   dist (ureal 1 "" "\n输入偏移距离" dist)
  6.   txt   (ukword 1 "1 2" "\n请选择偏移形式:1-向外/2-向内" txt)
  7.   i       -1
  8.    )
  9.    (while (setq ent (ssname ss (setq i (1+ i))))
  10.        (if  (= txt "1")
  11.            (vla-offset (vlax-ename->vla-object ent) dist)
  12.            (if (> (cdr (assoc 40 (entget ent))) dist)
  13.   (vla-offset (vlax-ename->vla-object ent) (- dist))
  14.            )
  15.        )
  16.    )
  17.    (princ)
  18. )
  19. (defun ureal (bit kwd msg def / inp)
  20.    (if def
  21.        (setq msg (strcat "\n" msg "<" (rtos def 2) ">: ")
  22.      bit (* 2 (fix (/ bit 2)))
  23.        )
  24.        (setq msg (strcat "\n" msg ": "))
  25.    )
  26.    (initget bit kwd)
  27.    (setq inp (getreal msg))
  28.    (if inp
  29.        inp
  30.        def
  31.    )
  32. )
  33. (defun ukword (bit kwd msg def / inp)
  34.    (if (and def (/= def ""))
  35.        (setq msg (strcat "\n" msg "<" def ">:")
  36.      bit (* 2 (fix (/ bit 2)))
  37.        )
  38.        (setq msg (strcat "\n" msg ":"))
  39.    )
  40.    (initget bit kwd)
  41.    (setq inp (getkword msg))
  42.    (if inp
  43.        inp
  44.        def
  45.    )
  46. )
 楼主| 发表于 2004-12-26 08:42:00 | 显示全部楼层
谢谢xyp1964,献上鲜花一支
发表于 2012-9-26 22:15:56 | 显示全部楼层
meflying 发表于 2004-12-25 15:24

版主你好,为了区别偏移的线和原来的线,能否将偏移的线改个颜色,或者改到指定图层,如当前层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-28 00:23 , Processed in 0.198706 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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