Đến nội dung


Hình ảnh
* * * - - 1 Bình chọn

[Yêu cầu] viết lisp thống kê bản vẽ


  • Please log in to reply
177 replies to this topic

#1 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 23 January 2010 - 03:27 PM

Chao cac anh chi tren dien dan.
xin nhờ các cao thủ viết dùm tôi cái lisp sau:
Tôi có block ban vẽ sau(xem bản vẽ đính kèm), nhờ các bác viết hộ lisp để thống kê tên các bản vẽ(danh mục bản vẽ)lâu nay tôi toan làm thủ công mất thời gian quá.
Xin chân thành cảm ơn.
http://www.cadviet.c...danh_muc_bv.dwg
  • -2

#2 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 25 January 2010 - 12:00 PM

Xin moi nguoi giup do

Thực ra việc tạo danh mục bản vẽ là cái mình đã muốn làm từ lâu nhưng thứ nhất chưa có thời gian, thứ 2 là mình muốn phát triển rộng hơn là: Giống như chức năng tạo mục lục bản vẽ của Sheet set khi click vào mục mục này nó sẽ mở luôn file có chứa bản vẽ đó (vì có thể 1 công trình mình làm trên khá nhiều file, trong đó có các file để trong thư viện). Cái sheet set có cái bất tiện là phải làm trên layout, mỗi layout lại chỉ nên có 1 khung in. Như vậy việc thiết lập khá phiền nhiễu. Mình muốn làm cái mục lục bản vẽ nhận được tất cả các bản vẽ trong layout và trong model luôn, số lượng bản vẽ không giới hạn trong 1 layout. Các thông tin bản vẽ được link với mục lục, nghĩa là khi ta thay đổi tên, ký hiệu, số thứ tự ở mục lục thì bản vẽ thay đổi theo và ngược lại. Có như thế mới thấy thực sự hoàn thiện. Vấn đề là thời gian chưa có để làm cái này :undecided: . Có ai đã từng làm cái này chưa cho anh em chút kinh nghiệm.
  • 2

#3 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 25 January 2010 - 12:38 PM

Thực ra việc tạo danh mục bản vẽ là cái mình đã muốn làm từ lâu nhưng thứ nhất chưa có thời gian, thứ 2 là mình muốn phát triển rộng hơn là: Giống như chức năng tạo mục lục bản vẽ của Sheet set khi click vào mục mục này nó sẽ mở luôn file có chứa bản vẽ đó (vì có thể 1 công trình mình làm trên khá nhiều file, trong đó có các file để trong thư viện). Cái sheet set có cái bất tiện là phải làm trên layout, mỗi layout lại chỉ nên có 1 khung in. Như vậy việc thiết lập khá phiền nhiễu. Mình muốn làm cái mục lục bản vẽ nhận được tất cả các bản vẽ trong layout và trong model luôn, số lượng bản vẽ không giới hạn trong 1 layout. Các thông tin bản vẽ được link với mục lục, nghĩa là khi ta thay đổi tên, ký hiệu, số thứ tự ở mục lục thì bản vẽ thay đổi theo và ngược lại. Có như thế mới thấy thực sự hoàn thiện. Vấn đề là thời gian chưa có để làm cái này :undecided: . Có ai đã từng làm cái này chưa cho anh em chút kinh nghiệm.


Vụ này tôi đã từng đề cập
Hãy tham khảo tại đây
ACA 2009

Giải pháp với ACA trong cùng Model hoặc Layout đều toàn diện
Hoặc với Sheet Shet cũng rất tuyệt vời

Trong trường hợp dùng CAD thì việc lập Danh mục cũng không tốn thời gian mấy
Hãy sử dụng Extract Attribute có sẵn trong CAD
  • 1

#4 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 26 January 2010 - 08:28 AM

[quote name='trinhvqh' date='Jan 25 2010, 12:38' post='85997']
Vụ này tôi đã từng đề cập
Hãy tham khảo tại đây
ACA 2009

Giải pháp với ACA trong cùng Model hoặc Layout đều toàn diện
Hoặc với Sheet Shet cũng rất tuyệt vời
Trong trường hợp dùng CAD thì việc lập Danh mục cũng không tốn thời gian mấy


Cảm ơn bạn "trinhvqh" rất nhiều nhưng mình muốn thao tác trên cad chứ ACA mình kô rõ lắm. Nếu được xin nhờ bạn và các cao thủ bớt chút thời gian viết hộ mình lisp như trên được kô(dựa vào block khung ten đính kèm ở trên)?
Cảm ơn rất nhiều

  • 0

#5 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 175 (tàm tạm)

Đã gửi 26 January 2010 - 09:23 AM

Vụ này tôi đã từng đề cập
Hãy tham khảo tại đây
ACA 2009

Giải pháp với ACA trong cùng Model hoặc Layout đều toàn diện
Hoặc với Sheet Shet cũng rất tuyệt vời

Trong trường hợp dùng CAD thì việc lập Danh mục cũng không tốn thời gian mấy
Hãy sử dụng Extract Attribute có sẵn trong CAD

Xin Bác trinhvqh up bản vẽ demo khung tên trong cái video clip bác đã post tại ACA 2009 . Tkx
  • 0

#6 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 26 January 2010 - 02:27 PM

Xin Bác trinhvqh up bản vẽ demo khung tên trong cái video clip bác đã post tại ACA 2009 . Tkx


Tôi đã Post lên bên ACA để dễ hệ thống
Bạn chịu khó sang đó down nhé
  • 1

#7 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 26 January 2010 - 02:55 PM

Cảm ơn bạn "trinhvqh" rất nhiều nhưng mình muốn thao tác trên cad chứ ACA mình kô rõ lắm. Nếu được xin nhờ bạn và các cao thủ bớt chút thời gian viết hộ mình lisp như trên được kô(dựa vào block khung ten đính kèm ở trên)?
Cảm ơn rất nhiều


Về Lisp thì tôi không rành
Các cao thủ khác sẽ giúp bạn
Nhưng với CAD bạn dùng lệnh: eattext để xuất table sang exel cũng không mất thời gian lắm
Sau đó copy dán vào cad

Lưu ý rằng Cột nội dung bạn nên gộp 02 single Text thành Mutiline Text
Thê nhé
Bạn xài tạm trong khi chờ đợi các Lisp ra tay
http://www.cadviet.c...t_attribute.rar
  • 0

#8 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 553 (tốt)

Đã gửi 26 January 2010 - 03:34 PM

Về Lisp thì tôi không rành
Các cao thủ khác sẽ giúp bạn
Nhưng với CAD bạn dùng lệnh: eattext để xuất table sang exel cũng không mất thời gian lắm
Sau đó copy dán vào cad

Lưu ý rằng Cột nội dung bạn nên gộp 02 single Text thành Mutiline Text
Thê nhé
Bạn xài tạm trong khi chờ đợi các Lisp ra tay
http://www.cadviet.c...t_attribute.rar

Anh trinhvqh nói đúng. Em bổ sung thêm 2 lệnh nữa giúp tiện dụng hơn eattext là

1. ATTOUT: Khi đánh lệnh này bạn chọn các block khung tên. Nó sẽ cho ra 1 dãy các thuộc tính vào 1 file *.txt. Bạn có thể sửa thông tin các bản vẽ tại file này như đánh lại STT cho đúng (nó xuất theo thứ tự tạo khung tên), chỉnh lại các nội dung khác của khung tên cho hợp lý....
2. ATTIN: Sau khi bạn đã sửa file *.txt này rồi bạn muốn cập nhật lại vào trong bản vẽ bạn dùng đến lệnh này.

Cuối cùng bạn có thể copy nội dung của file *.txt này để đưa vào mục lục bản vẽ. Để liên kết mục lục với file bản vẽ ( có thể 1 công trình gồm nhiều file bản vẽ) bạn có thể dùng lệnh HYPERLINK.

Nếu làm bằng lisp tất nhiên là tiện hơn nhưng... phải chờ thôi...
  • 1

#9 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 26 January 2010 - 04:11 PM

Đã viết xong Lisp thống kê tên các bản vẽ , nhưng ngại vấn đề bảo hành và link như ý của Nataca nên chưa post lên.
Ban chạy thử và cho ý kiến.

(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) (< (car x) (car y)) ) ))
(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) ) ) )
(alert "\nPhien ban Cad cua ban khong ho tro tao Bang (TABLE)")
))



Cảm ơn bạn nhiều. nhưng bạn làm ơn chỉ rõ cách dùng được không
thanks
  • 0

#10 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 27 January 2010 - 08:00 AM

Thế là sao nhỉ ? Tui bị lạc đề à ? bạn làm tui hoang mang quá !
chỉ rõ cách dùng : chi mà to tát thế, Load and Run only.

Nếu bạn chưa biết cách sử dụng Lisp : Tham khảo Hướng dẫn sử dụng mã Lisp, từ code trên CADViet.com



Trời?? load and run only thì cũng phải có câu lệnh là gì? chứ? cứ load xong là nó tự chay ra bảng danh mục ah??? ý mình muốn hỏi là câu lệnh là gi thao tác thế nào?
Thanks.
  • 0

#11 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 27 January 2010 - 09:35 AM

Trời?? load and run only thì cũng phải có câu lệnh là gì? chứ? cứ load xong là nó tự chay ra bảng danh mục ah??? ý mình muốn hỏi là câu lệnh là gi thao tác thế nào?
Thanks.

Làm ơn đọc kỹ bài của bác Hoành : Hướng dẫn sử dụng mã Lisp, từ code trên CADViet.com

- câu lệnh là gì : Hướng dẫn sử dụng mã Lisp, từ code trên CADViet.com, cũng 1 bài là có hết.

Tự thân vận động truớc khi cầu cứu đến "TRỜI".
You will never be successful until ...

  • 1

#12 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 27 January 2010 - 10:03 AM

Làm ơn đọc kỹ bài của bác Hoành : Hướng dẫn sử dụng mã Lisp, từ code trên CADViet.com

- câu lệnh là gì : Hướng dẫn sử dụng mã Lisp, từ code trên CADViet.com, cũng 1 bài là có hết.

Tự thân vận động truớc khi cầu cứu đến "TRỜI".
You will never be successful until ...


Đọc roài nhưng vẫn kô dùng được(load xong su dung lenh nhu trong lisp cad ko hiu gi ca) thoai bạn bớt chút thời gian chỉ cụ thể đi đã thương thì thương cho trọn....hic...
  • 0

#13 buiquangnam

buiquangnam

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 16 (tàm tạm)

Đã gửi 27 January 2010 - 01:48 PM

* Để biết tên lệnh là gì?
Bạn mở file lsp ra, tìm đến các dòng mã (defun c:, phía sau c: là tên lệnh.
Ví dụ: (defun c:NOILINE thì tên lệnh là NOILINE.


(defun c:draw_name
-> tên lệnh là draw_name

bạn mở file CAD bang_danh_muc_bv.dwg
- load Lisp
- gõ lệnh : draw_name -> enter
Diem dat Bang : -> pick 1 điểm bất kỳ -> xem kết quả.

(chú ý : LISP chỉ chạy trên file CAD bang_danh_muc_bv.dwg
hay file CAD có block "KHUNG CHUAN SEICO")


Được rồi hay quá thanks bạn rất nhiều. Nhưng có 1 lỗi xảy ra là nó chỉ hiểu đến bản vẽ thứ 100, nếu quá thì no đảo lộn ngược vị trí(như trong bản vẽ) bạn có thể khắc phục giúp mình được không?
http://www.cadviet.c...nh_muc_bv_1.dwg
  • 0

#14 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 27 January 2010 - 03:50 PM

Được rồi hay quá thanks bạn rất nhiều. Nhưng có 1 lỗi xảy ra là nó chỉ hiểu đến bản vẽ thứ 100, nếu quá thì no đảo lộn ngược vị trí(như trong bản vẽ) bạn có thể khắc phục giúp mình được không?
http://www.cadviet.c...nh_muc_bv_1.dwg


Đôi lúc "sự nhầm nhây" cũng sinh ra nhiều cái hay
Hôm qua đến giờ, tôi cứ cười thầm về những thắc mắc đơn giản về cách load lệnh đến nỗi phải kêu Trời
gia_bach cũng "nén giận" để giải thích

Nhưng mọi việc thật sự phải làm người ta giật mình vì những trường hợp cụ thể xảy ra về Thứ tự bản vẽ
Cảm ơn bạn và hãy cứ tiếp tục thắc mắc nhé!
(Hy vọng gia_bach sẽ giải quyết vấn đề này cho bạn)

Về phần tôi cũng đã Fit lỗi Khung tên cho anh em ACA rồi
  • 0

#15 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 27 January 2010 - 10:23 PM

Được rồi hay quá thanks bạn rất nhiều. Nhưng có 1 lỗi xảy ra là nó chỉ hiểu đến bản vẽ thứ 100, nếu quá thì no đảo lộn ngược vị trí(như trong bản vẽ) bạn có thể khắc phục giúp mình được không?
http://www.cadviet.c...nh_muc_bv_1.dwg

Để 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 x) 4 (- (strlen (car x)) 3)))
(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

Bài viết đã được chỉnh sửa nội dung bởi Tue_NV: 28 January 2010 - 07:57 AM
Đã sửa lại lỗi sắp xếp theo thứ tự của Code. Các bạn kiểm tra dùm nhé.

  • 0

#16 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 27 January 2010 - 11:01 PM

Tue_NV đã khắc phục được rồi đấy!
Nhưng thật lạ kỳ
"Khắc phục xong cái này, thì lại phát sinh cái lố bịch khác"
...
Nhưng thôi
Bây giờ khuya rồi
Tôi mà nói ra nữa thì e các "cao thủ líp" lại "nổi quáu"
Như thế vô tình "Tội lỗi, tội lỗi"
...
Chúc ngủ ngon để sáng mai phục vụ bà con
  • 0

#17 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 28 January 2010 - 07:59 AM

Tue_NV đã khắc phục được rồi đấy!
Nhưng thật lạ kỳ
"Khắc phục xong cái này, thì lại phát sinh cái lố bịch khác"
...
Nhưng thôi
Bây giờ khuya rồi
Tôi mà nói ra nữa thì e các "cao thủ líp" lại "nổi quáu"
Như thế vô tình "Tội lỗi, tội lỗi"
...
Chúc ngủ ngon để sáng mai phục vụ bà con

Đã sửa xong lỗi ở bài viết số 19. Bác Trinhvqh, bạn BuiquangNam và các bạn kiểm tra dùm Tue_NV và cho ý kiến nhé.
  • 1

#18 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 28 January 2010 - 09:19 AM

Đã sửa xong lỗi ở bài viết số 19. Bác Trinhvqh, bạn BuiquangNam và các bạn kiểm tra dùm Tue_NV và cho ý kiến nhé.


Ly cà phê sáng bao giờ cũng cho một cảm giác sảng khoái phải k nhỉ!
Lisp sửa sang lại chạy rất tuyệt!
Đặc biệt là rất ổn trong việc nhận dạng và sắp xếp thứ tự theo số
....
Nhưng vẫn còn một chút phải băn khoăn:
- Đầu tiên, đề nghị Tue_NV sửa luôn "Ten ban e" thành "Ten ban ve". Việc này nhỏ nhưng sẽ làm người dùng dễ chịu hơn.
- Việc thứ 2, là nên thêm một dòng bản quyền: composed by gia_bach and developed by Tue_NV
- Việc thứ 3, đề nghị đổi tên lệnh "draw_name" thành "mlbv" (Cái này góp ý thôi còn tuỳ tác giả)
- Việc thứ 4 là việc chính:

Vẫn biết rằng LISP này của các bạn nhằm mục đích giải quyết vấn đề cụ thể của "buiquangnam"
Nhưng mọi người có thể xào nấu vào áp dụng được

Trong trường hợp bạn là một kỹ sư nước
Bản vẽ sẽ bao gồm các phần: CN (cấp nước); TN (thoát nước); NM (nước mặt)
Theo quan sát thì họ sẽ vẽ chung trong một bản vẽ
Lúc đó LISP này sẽ xảy ra lố bịch đó là: Sắp xếp bản vẽ theo số thứ tự ưu tiên chứ không phân loại ra từng bộ môn

Như vậy, các cao thủ hãy bổ sung:
- Sắp xếp Bộ môn ưu tiên
- Sắp xếp số bản vẽ ưu tiên

Chúc sức khoẻ!
  • 1

#19 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1436 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 28 January 2010 - 09:26 AM

................................
@anh gia_bach : Hàm vl-sort nó sắp xếp các kí tự chuỗi theo alphabet.
.................
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

Về mặt ý tuởng, bạn đã đi đúng huớng và giải quyết đuợc vấn đề cụ thể của BuiquangNam.
Tuy nhiên, lại 1 lần nữa, "vấn đề đã không đuợc giải quyết rốt ráo" (Copyright by Mr. Perfect) :undecided:
vì (atoi "01-1"), (atoi "01-10"), (atoi "01-100") ... đều cho kết quả là 1.

(mapcar '(lambda (x)(vla-setTextHeight TblObj x 5))
(list acTitleRow acHeaderRow acDataRow) )

tương đuơng với 3 dòng sau :
(vla-setTextHeight TblObj acTitleRow 5)
(vla-setTextHeight TblObj acHeaderRow 5)
(vla-setTextHeight TblObj acDataRow 5)


vì cùng set giá trị là 5 nên gộp vào dùng Mapcar cho gọn.
Mapcar hay ở chỗ gọn nhưng hơi khó đọc.

Vì thời gian này tui hơi bận, các bạn nào có khả năng vui lòng bổ sung và hoàn thiện LISP thống kê bản vẽ giùm.
Chân thành cám ơn.

..................
Trong trường hợp bạn là một kỹ sư nước
Bản vẽ sẽ bao gồm các phần: CN (cấp nước); TN (thoát nước); NM (nước mặt)
Theo quan sát thì họ sẽ vẽ chung trong một bản vẽ
Lúc đó LISP này sẽ xảy ra lố bịch đó là: Sắp xếp bản vẽ theo số thứ tự ưu tiên chứ không phân loại ra từng bộ môn

Như vậy, các cao thủ hãy bổ sung:
- Sắp xếp Bộ môn ưu tiên
- Sắp xếp số bản vẽ ưu tiên
.....................

To : trinhvqh
Tui đã thấy vấn đề này nhưng thời gian không cho phép.
Còn nhiều vấn đề nửa như :
- cho phép User chọn Block thuộc tính cần trích xuất.
- cho phép User chọn Tag cần trích xuất.
- trích xuất nhiều hơn 2 thuộc tính.
..................
Cám ơn sự góp ý của bạn.
  • 1

#20 duonghung1210

duonghung1210

    biết lệnh offset

  • Members
  • PipPipPip
  • 175 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 28 January 2010 - 09:39 AM

các bác cho em hỏi, bây giờ muốn dùng lish draw_name cho một blob khung tên khác thì làm thế nào?? lish này có dùng được cho bất cứ blob nào không hay cứ phải là att! mong các cao thủ sớm hoàn thiện lish! thank
  • 0
Nhăn răng ra cười cho đời đỡ khổ!!!