明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1796|回复: 3

圆弧的批量缩短或伸长,跟进上次线段的。

[复制链接]
发表于 2012-4-6 09:38 | 显示全部楼层 |阅读模式
圆弧的批量缩短或伸长,顺便还有弧变圆。
(defun c:hll()
(setvar "osmode" 0)
(setq w (getstring "\n请选择项[缩短(SD)/总长(ZC)/伸长(SC)]: "))
(if (or (= w "sd") (= w "SD"))
(progn
(setq d (getreal "\n输入每边缩短值: "))
(setq ss(ssget '((0 . "ARC"))))
(setq len(sslength ss))
(setq i -1)
(repeat len
  (setq i (1+ i))
(setq en1(ssname ss i))
(setq e1 (entget en1))
(setq o (cdr (assoc 10 e1))
       r (cdr (assoc 40 e1))
       p0 (cdr (assoc 50 e1))
       pn (cdr (assoc 51 e1))
       hd0 (- pn p0)
       zdhd (+ p0 (/ hd0 2.0)))
(if (>= d (* (/ (abs (/ hd0 2.0)) pi) pi r)) (exit))
(setq ds (atof (angtos hd0 0 4))
       zc (* 2 pi r (/ ds 360)))
(setq xds (/ (* d 360) (* 2 pi r)))
(setq xhd (* pi (/ xds 180)))
(setq e1 (subst (cons 50 (+ p0 xhd)) (assoc 50 e1) e1))
(setq e1 (subst (cons 51 (- pn xhd)) (assoc 51 e1) e1))
(entmod e1))
))
(if (or (= w "sc") (= w "SC"))
  (progn
(setq d (getreal "\n输入每边伸长值: "))
(setq ss(ssget '((0 . "ARC"))))
(setq len(sslength ss))
(setq i -1)
(repeat len
  (setq i (1+ i))
(setq en1(ssname ss i))
(setq e1 (entget en1))
(setq o (cdr (assoc 10 e1))
       r (cdr (assoc 40 e1))
       p0 (cdr (assoc 50 e1))
       pn (cdr (assoc 51 e1))
       hd0 (- pn p0)
       zdhd (+ p0 (/ hd0 2.0)))
(setq ds (atof (angtos hd0 0 4))
       zc (* 2 pi r (/ ds 360)))
(setq xds (/ (* d 360) (* 2 pi r)))
(setq xhd (* pi (/ xds 180)))
(setq e1 (subst (cons 50 (- p0 xhd)) (assoc 50 e1) e1))
(setq e1 (subst (cons 51 (+ pn xhd)) (assoc 51 e1) e1))
(entmod e1))
  ))
(if (or (= w "zc") (= w "ZC"))
  (progn
(setq d (getreal "\n输入总弧长值: "))
(setq ss(ssget '((0 . "ARC"))))
(setq len(sslength ss))
(setq i -1)
(repeat len
  (setq i (1+ i))
(setq en1(ssname ss i))
(setq e1 (entget en1))
(setq o (cdr (assoc 10 e1))
       r (cdr (assoc 40 e1))
       p0 (cdr (assoc 50 e1))
       pn (cdr (assoc 51 e1))
       hd0 (- pn p0)
       zdhd (+ p0 (/ hd0 2.0)))
(if (>= d (* 2 pi r)) (exit))
(setq ds (atof (angtos hd0 0 4))
       zc (* 2 pi r (/ ds 360)))
(setq xds (/ (* d 360) (* 2 pi r)))
(setq xhd (* pi (/ xds 180)))
(setq e1 (subst (cons 50 (- zdhd (/ xhd 2.0))) (assoc 50 e1) e1))
(setq e1 (subst (cons 51 (+ zdhd (/ xhd 2.0))) (assoc 51 e1) e1))
(entmod e1))
))
(setvar "osmode" 3)
(princ)
)

(defun c:hby()
(setq ss(ssget '((0 . "ARC"))))
(setq len(sslength ss))
(setq i -1)
(repeat len
  (setq i (1+ i))
(setq en1(ssname ss i))
(setq e1 (entget en1))
(setq o (cdr (assoc 10 e1))
       r (cdr (assoc 40 e1))
       p0 (cdr (assoc 50 e1))
       pn (cdr (assoc 51 e1)))
(command "circle" o r ))
(command "erase" ss "")
(princ)
)

点评

SO GOOD!!!!  发表于 2015-5-6 18:01
 楼主| 发表于 2012-4-7 09:24 | 显示全部楼层
,怎么没有人,给点评点?求指导
 楼主| 发表于 2012-4-7 12:30 | 显示全部楼层
上个动画试试

本帖子中包含更多资源

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

x
发表于 2014-11-20 21:54 | 显示全部楼层
感谢!非常好用的程序!!帅!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-16 23:32 , Processed in 0.174906 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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