推 poorjohny:太感謝您了m(_ _)m 10/20 19:22
; 這行是 註解,; 號開頭的是 註解
; 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: sjgau4311@gmail.com
我的課程介紹網頁:
http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
AutoCAD 台灣地區菁英講師獲選
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.77.231