看板 Cad_Cae 關於我們 聯絡資訊
; 這行是 註解,; 號開頭的是 註解 ; 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
poorjohny:太感謝您了m(_ _)m 10/20 19:22