

abiabu92
-
Số lượng nội dung
2 -
Đã tham gia
-
Lần ghé thăm cuối
Bài đăng được đăng bởi abiabu92
-
-
Vào lúc 27/1/2010 tại 22:23, Tue_NV đã nói:Để Tue_NV giúp anh gia_bach một tay nhé :
Các bạn chạy lại code thử và góp ý nhé :
(defun c:draw_name (/ att doc i kyhieu lst lstatt msp pt row ss tblobj ten) ;Bang ten ban ve ;; By : Gia Bach, Copyright- December 2009 ;; ;; Contact : gia_bach @ www.CadViet.com ;; (defun VxGetAtts (Obj) (mapcar '(lambda (Att) (cons (vla-get-TagString Att) (vla-get-TextString Att) ) ) (vlax-invoke Obj 'GetAttributes) )) (if (> (atof (substr (getvar "ACADVER") 1 4)) 16.0) (progn (if (setq ss (ssget "_A"(list (cons 0 "INSERT")(cons 66 1)(cons 2 "KHUNG CHUAN SEICO")))) (progn (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)) msp (vla-get-modelspace doc)) (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))) (setq lstAtt (VxGetAtts (vlax-ename->vla-object e)) kyhieu (cdr (assoc "DWNNO" lstAtt)) ten (cdr (assoc "DRAWING1" lstAtt))) (setq lst (cons (cons kyhieu ten) lst)) ) (setq lst (vl-sort lst '(lambda (x y) ((atoi (substr (car y) 4 (- (strlen (car y)) 3))) ) ) )) (setq i 1 row 2 pt (getpoint "\nDiem dat Bang :") TblObj (vla-addtable msp (vlax-3d-point pt) (+ (length lst) 2) 3 15 100)) (vla-put-vertcellmargin TblObj 4) (vla-SetColumnWidth TblObj 0 50) (mapcar '(lambda (x)(vla-setTextHeight TblObj x 5)) (list acTitleRow acHeaderRow acDataRow) ) (mapcar '(lambda (x)(vla-setAlignment TblObj x 2)) (list acTitleRow acHeaderRow acDataRow)) (vla-setText TblObj 0 0 "list of drawings") (vla-setText TblObj 1 0 "STT") (vla-setText TblObj 1 1 "Ten ban e") (vla-setText TblObj 1 2 "Ky hieu") (foreach pt lst (vla-setText TblObj row 0 (itoa i)) (vla-setText TblObj row 1 (cdr pt)) (vla-setText TblObj row 2 (car pt)) (setq row (1+ row) i (1+ i)) ) (vlax-release-object TblObj) (princ lst) ) ) ) (alert "\nPhien ban Cad cua ban khong ho tro tao Bang (TABLE)") ))
@anh gia_bach : Hàm vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
Ví dụ như List :
(setq L (list "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "98" "99" "100"))
khi sử dụng vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
=> Kết quả sẽ trả về như thế này thì không theo ý của User
("1" "10" "100" "11" "12" "2" "3" "4" "5" "6" "7" "8" "9" "98" "99")
-> Nó ưu tiên sắp xếp kí tự "1.." trước mà anh
Nhưng khi ta set nó về số thì sẽ đúng theo ý User
.Ví dụ :
(setq L (list 1 2 3 4 5 6 7 8 9 10 11 12 99 100))
(vl-sort L '
(1 2 3 4 5 6 7 8 9 10 11 12 99 100)
thì khi sử dụng vl-sort theo ý của mình nên em đã sử dụng hàm atoi để chuyển chuõi kí tự về dạng số rồi so sánh chúng với nhau để theo ý của mình
Anh gia_bach cho Tue_NV hỏi thêm về chổ này một chút :
(mapcar '(lambda (x)(vla-setTextHeight TblObj x 5))
(list acTitleRow acHeaderRow acDataRow) )
(mapcar '(lambda (x)(vla-setAlignment TblObj x 2))
(list acTitleRow acHeaderRow acDataRow))
4 mã code này em chưa rõ ý nghĩa của nó lắm. Anh có thể giải thích dùm em 1 chút nhé.
Cảm ơn anh
Em copy dòng lệnh của anh mà chạy trên cad 2007 ko được, ko báo lỗi gì cả, anh và mọi người còn lisp ko cho em xin lại với ạ. Em cảm ơn mọi người rất nhiều!
Lisp thông kê danh mục bản vẽ
trong AutoLisp
Đã đăng · Trả lời báo cáo
các anh ơi em tải lisp về rồi nhưng ko hiểu sao danh mục cứ ra khung trống vậy?tải khung của anh Dungnguyen685 thì được nhưng khung của mình lại không được, em ko hiểu sao nữa