![]() |
【转帖】打断
打断
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 |
| 所有的时间均为北京时间。 现在的时间是 02:17 AM. |