查看单个帖子
旧 2009-04-28, 01:57 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】打断

打断
www.dimcax.com
打断
请问打断一个圆要用什么方法最好,打断还是更新列表好?我写了个打断的,主要是选择那边 (command "rotate" enname "" cen sjd)的问题,也就是一开始的时候选择集是一个圆,但打断成两段之后再选择就不能两段都选择到了。不知各位有什么好的方法和经验?
;;;打断圆
(defun c:xxl()
(setvar "osmode" 0)
(setvar "filedia" 1)
(setq len (getreal "\n 请输入桥位的宽度<5>:"))
(if (= len nil) (setq len 5))
(setq en (ssget))
(setq num (sslength en))
(setq n 0)
(repeat num
(setq enname (ssname en n))
(setq enname_x (entget enname))
(setq cen (cdr (assoc 10 enname_x)))
(setq rad (cdr (assoc 40 enname_x)))
(cond ((< rad 10) (setq x 0))
((< rad 30) (setq x 1))
((< rad 60) (setq x 2))
((< rad 90) (setq x 3))
((> rad 90) (setq x (fix (/ rad 30)))))
(setq pt1 (polar cen 0 rad))
(setq jd (/ (* (* pi 2) len) (* pi rad 2)))
(setq pt2 (polar cen jd rad))
(setq sjd (/ 360 x))
(repeat x
(command "break" pt1 pt2)
(command "rotate" enname "" cen sjd)
)
(setq n (+ 1 n))
)
(setvar "cmdecho" 1)
(prinl)
)
勤能补拙

要的效果如下:
勤能补拙

图片:

效果如下:
勤能补拙

不太清楚

顶一下,懂的帮忙看一下,不懂的也过来学学
勤能补拙

本人已自个解决,方法就是设pt1和pt2,然后循环角度单个打断(不是旋转圆圈)
勤能补拙

没明白

谁明白,出来讲一下啊,我也遇到了这个问题,还有怎么编程啊

图片:

我把你的程序改了一下:
(defun c:xxl(/ len en num n enname enname_x cen rad a b c jd x sjd i pt1 pt2 pt3 pt4 )
(setvar "osmode" 0)
(setvar "filedia" 1)
(setq len (getreal "\n 请输入桥位的宽度<5>:"))
(if (= len nil) (setq len 5))
(setq en (ssget))
(setq num (sslength en))
(setq n 0)
(repeat num
(setq enname (ssname en n))
(setq enname_x (entget enname))
(setq cen (cdr (assoc 10 enname_x)))
(setq rad (cdr (assoc 40 enname_x)))
(setq a (* rad rad) b (/ len 2.0) c (sqrt (- a b)) jd (atan (/ b c)))
(if (< rad 30)(setq x 1)(if (< rad 60)(setq x 2)(if (< rad 90)(setq x 3)(if (> rad 90)(setq x (fix (/ rad 30)))))))
(setq sjd (/ 360 x))
(setq pt1 (polar cen (- 0 jd) rad) pt2 (polar cen (+ 0 jd) rad) i 1)
(command "break" pt1 pt2)
(repeat (- x 1)
(setq pt3 (polar cen (- (* (/ pi 180) (* sjd i)) jd) rad) pt4 (polar cen (+ (* (/ pi 180) (* sjd i)) jd) rad) )
(command "zoom" "c" pt3 (* len 4) "break" pt3 pt4 "zoom" "p")
(setq i (+ 1 i))
(prompt (rtos i 2 0))
)
(setq n (+ n 1))
)
)
gbg
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)