Page 111 - Kỷ yếu hội thảo quốc tế: Ứng dụng công nghệ mới trong công trình xanh - lần thứ 9 (ATiGB 2024)
P. 111

102                              TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT - ĐẠI HỌC ĐÀ NẴNG

                  (mapcar 'setvar '(CMDECHO OSMODE)  '(0 513))   (CK:EndUndo (CK:acdoc))
                  (CK:qleader dd)                                (if (not (wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
                  (if (> (car d1) (car d2))                      (princ (strcat "\n** @CaoKhanh-Error: " msg " **")))
                  (progn                                         (princ))
                  (vl-cmdf  "_insert"  "Left-Fillet.dwg"  d2(*  (getvar  "dimscale")  0.7)  (*  (getvar   (CK:StartUndo (CK:acdoc))
               "dimscale") 0.7) 0)                               (setq lst_var '(CMDECHO OSMODE CLAYER)
                  (vl-cmdf "_explode" (entlast)))                old_var (mapcar 'getvar lst_var))
                  (progn                                         (mapcar 'setvar '(CMDECHO OSMODE)  '(0 513))
                  (vl-cmdf "_insert" "Right-Fillet.dwg" d2 (* (getvar "dimscale") 0.7) (* (getvar   (setq stair (getstring "\n Han tron (T) or Han thang <R>: "))
               "dimscale") 0.7) 0)                               (CK:qleader dd)
                  (vl-cmdf "_explode" (entlast))))               (if (equal (strcase stair) "T")
                  (mapcar 'setvar lst_var old_var)               (progn
                  (CK:EndUndo (CK:acdoc))                        (if (> (car d1) (car d2))
                  (princ))                                       (progn
                  Đây  là  một  đoạn  mã,  mô  tả  cấu  trúc  chung  của   (vl-cmdf  "_insert"  "Hantronthangtrai.dwg"  d2  (*  (getvar  "dimscale")  0.7)  (*
               một mối hàn. Dưới đây là là cấu trúc và chức năng   (getvar "dimscale") 0.7) 0)
               của hàm này.                                      (vl-cmdf "_explode" (entlast)))
                  a. Khởi tạo biến và bắt lỗi                    (progn
                  Thiết lập giá trị cho biến “Modemacro” để hiển   (vl-cmdf  "_insert"  "Hantronthangphai.dwg"  d2  (* (getvar  "dimscale")  0.7)  (*
               thị thông tin về người tạo hàm, đồng thời định nghĩa   (getvar "dimscale") 0.7) 0)
               hàm “error” để xử lý các lỗi phát sinh trong quá trình
               chạy hàm.                                         (vl-cmdf "_explode" (entlast)))))
                                                                 (progn
                  b. Ghi lại các thao tác
                  Gọi hàm “CK:StartUndo” để bắt đầu ghi lại và   (if (> (car d1) (car d2))
               thao tác người dùng. Lưu trữ các biến hệ thống như   (progn
               “CMDECHO”,  “OSMODE”,  “CLAYER”  để  có           (vl-cmdf  "_insert"  "Hantronstairtrai.dwg"  d2  (*  (getvar  "dimscale")  0.7)  (*
               thể khôi phục sau khi hoàn thành.              (getvar "dimscale") 0.7) 0)
                  c. Vẽ mối hàn góc                              (vl-cmdf "_explode" (entlast)))
                  Người dùng được yêu cầu chọn hai điểm xác định   (progn
               chiều dài và vị trí của mối hàn. Kiểm tra vị trí của hai
               điểm, nếu điểm thứ nhất nằm bên trái thì vẽ mối hàn   (vl-cmdf  "_insert"  "Hantronstairphai.dwg"  d2  (*  (getvar  "dimscale")  0.7)  (*
               góc bên trái, ngược lại vẽ mối hàn góc bên phải. Sử   (getvar "dimscale") 0.7) 0)
               dụng hàm “_insert” để chèn các XREF vào bản vẽ,   (vl-cmdf "_explode" (entlast))))))
               sau đó dùng hàm “_explode” để giải phóng mối hàn   (mapcar 'setvar lst_var old_var)
               ra khỏi một khối block.
                                                                 (CK:EndUndo (CK:acdoc))
                  d. Khôi phục các thiết lập ban đầu
                                                                 (princ))
                  Khôi phục các biến hệ thống đã làm ở bước thứ
               hai, đồng thời gọi hàm “CK:EndUndo” để kết thúc   Ở đoạn code này có hai sự lựa chọn khi thực hiện
               ghi lại các thao tác.                          một mối hàn, chọn chữ “T” để thực hiện đoạn lệnh
                                                              thứ nhất, và chọn chữ “R” để thực hiện đoạn lệnh thứ
                  Trong trường hợp mối hàn có nhiều lựa chọn, thì   hai. Đây là một tuỳ biến của mối hàn, có thể mở rộng
               chúng ta có thể sử dụng cấu trúc chung như dưới đây:
                                                              cho nhiều hơn hai lựa chọn.
                  (defun c:HT (/ *error* d1 d2 dd stair)
                  (setvar "Modemacro" "Cao Thanh Kh\U+00E1nh - Steel Structure - Design
               Division.")
                  (defun *error* (msg)
                  (and lst_var (mapcar 'setvar lst_var old_var))

               ISBN: 978-604-80-9779-0
   106   107   108   109   110   111   112   113   114   115   116