作者sjgau (sjgau)
看板Cad_Cae
标题Re: [问题] 同时offset多个图形
时间Wed Oct 20 10:27:26 2010
; 这行是 注解,; 号开头的是 注解
; FILE: MO4.LSP
; 定义一个副程式,暂停。
(defun pause( / no)
(setq no (getint "\n Input 1 [Enter] for continue, ... "))
(if (/= no 1)
(exit)); 停止 程式的执行
); end of pause()
; -------------------------------------------------------
(DEFUN C:MO4 ( / s1 no i dr pc r1 en1 e1 en et ct1)
(princ "\n 请输入 OFFSET 的距离:(Ex.: 1.5) ")
(setq dr (getreal))
; (setq dr 1.5)
; 像一般的修改指令一样,可以选择 W, C, ALL, R, A 等等
(PRINC "\n 请选择要 OFFSET 的物件: ")
(SETQ S1 (SSGET)
NO (SSLENGTH S1))
(PRINC (STRCAT "\n 你一共选择了 " (itoa no) " 物件。\n"))
; -------------------------------------------------------
; 针对每一个物件,做适当的处理
; for i=0 to (no - 1) step 1 do ...
(setq i 0 ct1 0)
(while (< i no)
(setq en1 (ssname s1 i)); en1 是图元的名称,而已
(setq e1 (entget en1))
(setq en (assoc 0 e1))
(setq et (cdr en))
; 圆比较简单,先处理所有的圆的 OFFSET
(if (eq et "CIRCLE")
(PROGN
(setq ct1 (+ ct1 1))
(setq pc (cdr (assoc 10 e1)))
(setq r1 (+ (cdr (assoc 40 e1)) dr))
; 对这个圆做 OFFSET, 就是划一个 同心圆
(command "circle" pc r1)
)); end of if
(setq i (+ i 1))
); end of while()
(princ (strcat "\n 一共有 " (itoa ct1) " 物件被 OFFSET \n"))
; -------------------------------------------------------
(PRINC)
); END OF MO4()
(PRINC "\n Load OK! run the command: MO4\n")
(PRINC)
; END OF FILE
; 上面这个程式,并没有做最佳化,缩减程式码,
; 目的,是为了 教学。
※ 引述《poorjohny ( )》之铭言:
: 请问,(AUTOCAD,不好意思)
: 若要同时对多个形状进行同样距离的偏移,
: 有无办法做到呢?
: 比如说想对多个圆进行1.5的向外offset,但因为圆有非常多个,
: 一个个按会很累,
: 那麽,有没有甚麽好方式可以一次进行偏移呢?
--
e-mail:
[email protected]
我的课程介绍网页:
http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
AutoCAD 台湾地区菁英讲师获选
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.231.77.231
1F:推 poorjohny:太感谢您了m(_ _)m 10/20 19:22